这是一个复杂设置的更具体的问题。我已经计算所有1像素的距离,以原始图像的其最近0像素,并转化到与局部最大值如下所示的图像:如何用Matlab连接图像中的断开点?
我用下面的代码,以提取的局部最大值从这个变换后的矩阵:
loc_max = imregionalmax(loc,4);
figure;imshow(loc_max)
loc_max给出那些局部最大点的断开点。尝试了一系列连接它们的方式,但并未按照它应该做的那样工作。
这里是我的一个想法:
[yy xx]=find(loc_max ==1);
d = [];
dmin = [];
idx = [];
for i = 1: size(yy,1)
for j = 1:size(xx,1)
if i ~= j
d(j) = sqrt(sum(bsxfun(@minus,[yy(j) xx(j)],[yy(i) xx(i)]).^2,2));
%calculate the distance between current 1-pixel in loc_max and all other local maxima pixels in loc_max.
end
end
[dmin(i),idx(i)] = min(d(:));%find the minimum distance between current 1-pixel to others
end
我试图找到在loc_max最近的1个像素的loc_max目前的1像素,然后将它们连接起来。但这还不是解决方案。因为如果前一个像素是当前像素的最近像素,它将不会连接到其下一个1像素。
此外,我想保留这些0像素的像素信息沿两个断开的1像素之间的连接线。我希望能够在以后重建这个简化的框架中的整个图像。
任何帮助将不胜感激!
侵蚀和扩张的! –
谢谢,与imdilate尝试,不按我想要的那样工作。 – Orangeblue
这是一个非常有限的信息量 –