2011-01-10 68 views

Trả lời

10

Một cách để thực hiện việc này là tạo mặt nạ nhị phân với mặt nạ bên trong vòng tròn và số không bên ngoài. Sau đó bạn có thể sử dụng mảng này để che dấu mọi thứ bên ngoài vòng tròn với NaN, hoặc để đọc các giá trị pixel của hình ảnh bên trong mặt nạ.

Để tạo một mặt nạ hình tròn, một cách dễ dàng là để tạo phối hợp các mảng tập trung vào mống mắt, và ngưỡng khoảng cách, như thế này:

[xx,yy] = ndgrid((1:imageSize(1))-ci(1),(1:imageSize(2))-ci(2)); 
mask = (xx.^2 + yy.^2)<ci(3)^2; 
+0

Có đi câu trả lời của tôi ... =) Rất đẹp. +1. Để phân đoạn hình ảnh, chỉ cần nhân nó với mặt nạ. Hãy để có số không ở bên ngoài. – Marnix

+0

@Marnix: Xin lỗi :). Dù sao, tôi đề nghị đặt NaN bên ngoài, chẳng hạn như 'hình ảnh (~ mặt nạ) = NaN;', do đó, các autoscale trong 'imshow (hình ảnh, [])' không được ném ra bởi tất cả các số không trong hình ảnh. – Jonas

+0

Tôi gặp lỗi này: ??? Hàm không xác định hoặc phương thức 'sqrt' cho đối số đầu vào của loại 'logic'. trong dòng này mask = sqrt ((xx.^2 + yy.^2)

Các vấn đề liên quan