У меня начальное изображение в оттенках серого img
в формате double
с рядом кругов тех же радиусов и векторов столбцов с координатами центров окружности x
и y
. Мне нужно скопировать все пиксели, принадлежащие окружностям, к массиву cpix
. До сих пор я пришел только с самым тупым решением, используя петли for
. Есть ли способ векторизовать этот код или просто заставить его работать быстрее?Быстрый способ копирования пикселей, принадлежащих кругам
% x(:) - vector with a few circles center X coordinates
% y(:) - vector with a few circles center Y coordinates
d = 27; %diameter
r = floor(d/2); %radius
cpix = double(zeros(d,d,size(x,1)));
for iCent = 1:size(x,1) %for each circle
for ix = 1:d
for iy = 1:d
if ((ix-r)^2 + (iy-r)^2) < r^2
cpix(iy,ix,iCent) = img(iy+y(iCent)-r,ix+x(iCent)-r);
end
end
end
end
Может ли круг быть рядом с границей изображений? и что должно произойти в этом случае? – Hoki
Нет, круги больше, чем радиус 'r' вдали от границ – Cons