MATLAB:在二进制图像中找到弯曲的非连续线

时间:2016-01-18 04:44:08

标签: matlab vector binary curve continuous

我有附加的二进制图像,我想找到弯曲的半连续线的顶部/忽略穿过线的部分的垂直分量。 (即我希望输出找到类似于binary2图像中的洋红色线)。有一个简单的方法吗?任何方向将不胜感激。谢谢!

    iterNum=20;
formvec=[];
valvec=[];
for q = 1:iterNum
    % 1. fit using 2 random points
    CC=[];
    [zXBJ xXBJ]=size(binary);
    b=1;
    for i=1:zXBJ
        for j=1:xXBJ
            if XBJ(i,j)==1
                CC(b,1)=j;
                CC(b,2)=i;
                b=b+1;
            end
        end
    end
    cornerL=length(CC(:,1));
    rS=randi([1 cornerL],(floor(cornerL*0.05)),1);
    rS2=[];
    j=1;
    for i=1:length(rS)
        rS2(i,:)=CC(rS(j),:);
        j=j+1;
    end
    p=polyfit(rS2(:,1),rS2(:,2),2); %CC(:,1)=z, 2=x
    x1=1:xXBJ;
    y1=polyval(p,x1);
    valvec(end+1)=sum(improfile(XBJ,x1,y1));
    formvec(q,:)=p;
end

[num loc]=max(valvec);
p=formvec(loc,:);
x1=1:xXBJ;
y1=polyval(p,x1);
figure 
imshow(binary);
hold on
plot(rS2(:,1), rS2(:,2), '*', 'Color', 'c') 
hold on
plot(x1,y1,'o','Color','r');
hold off

enter image description here

enter image description here

0 个答案:

没有答案