2011-01-10 2 views
8

Мне нужно обрезать круг в MATLAB.MATLAB: как вырезать круг из изображения

Мне нужно выполнить сегментирование диафрагмы, и я определил центральную точку и радиус радужной оболочки, и мне нужно отрезать ее от изображения.

У меня есть вектор ci, что ci (1) является X-координатой ci (2) является Y-координатой, а ci (3) является радиусом круга.

ответ

10

Один из способов сделать это - создать бинарную маску с элементами внутри круга и нулями снаружи. Затем вы можете использовать этот массив для маскировки всего за пределами круга с помощью NaN или для чтения значений пикселей изображения внутри маски.

Чтобы создать круг маску, легкий способ заключается в создании координат массивы сосредоточены на радужной оболочке глаза, и порог расстояния, как это:

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

Там идет мой ответ ... =) Очень приятно. +1. Чтобы сегментировать изображение, просто умножьте его на маску. Пусть на улице есть нули. – Marnix

+0

@Marnix: Извините :). В любом случае, я предлагаю вводить NaN снаружи, например 'image (~ mask) = NaN;', так что автомасштабирование в 'imshow (image, [])' не отбрасывается всеми нулями на изображении. – Jonas

+0

У меня есть эта ошибка: ??? Неопределенная функция или метод «sqrt» для входных аргументов типа «логический». в этой строке mask = sqrt ((xx.^2 + yy.^2)

Смежные вопросы