Сравните функцию Drawcircle с изображением в Matlab - PullRequest
0 голосов
/ 14 мая 2011

Я использую

rectangle ('position', [0, 0, 50, 50], 'curvature', [1, 1])

чтобы нарисовать круг на изображении. Круг меньше, чем изображение, и мне нужно умножить значения циркеля (значения пикселей должны быть равны 1 по краю и нулю везде, двоичный круг) на каждое возможное местоположение изображения. Это своего рода сопоставление с шаблоном, но вместо использования шаблона для вычисления корреляции я хочу использовать функцию круга, потому что это быстрее, чем загрузка тысяч шаблонов.

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

Надеюсь, моя формулировка достаточно хороша

1 Ответ

0 голосов
/ 16 мая 2011

Если вы используете круг в качестве фильтра, то вы не хотите рисовать это, не так ли?То, что вы хотите, это матрица из 1 и 0, и умножить это на каждую прямоугольную часть изображения размером 50x50.Чтобы получить матрицу,

d = 50;
F = false(d,d);
[X Y] = meshgrid( size(F) ) - d/2;
F( round(hypot(X,Y)) == d/2 ) = true;

На самом деле этот код не запускался, но что-то вроде этого должно работать.imagesc (F) покажет вам, как это выглядит.Затем вам нужно поместить свое изображение в матрицу и пройтись по плиткам.

...