【发布时间】:2015-08-12 20:23:06
【问题描述】:
我有一个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
【问题讨论】:
-
圆可以靠近图像的边界吗?在这种情况下应该怎么办?
-
不,圆圈距离边界超过半径
r
标签: matlab image-processing vectorization