分叉并以边缘图像结束

时间:2014-09-15 17:33:36

标签: matlab image-processing binary edges

我试图找到从耳朵图像产生的二进制边缘图像的结束点和分叉点。 This is the image that was produced

我根据[本文](http://elcvia.cvc.uab.es/article/view/108)中定义的算法编写代码。我已经实施了引入公式以找到结局和分叉的部分。但是,我不能为不同的图片得到正确的结果,这个公式不能找到一些分叉和结尾。

这是我的代码:

stats = regionprops(BW4 , 'PixelList');
[numofcomp,x] = size(stats);

BEcell = cell(numofcomp,2);
Ne = zeros(numofcomp,1);
Nb = zeros(numofcomp,1);


for i=1:1:numofcomp

    contour = stats(i).PixelList;

    S = size(contour);
    b=0;
    ee=0;

    for j=1:1:S(1)

          J = contour(j,1);
          I = contour(j,2);

          g1 = BW4(I,J+1) - 1;
          g2 = BW4(I-1,J+1) - 1;
          g3 = BW4(I-1,J) - 1;
          g4 = BW4(I-1,J-1) - 1;
          g5 = BW4(I,J-1) - 1;
          g6 = BW4(I+1,J-1) - 1;
          g7 = BW4(I+1,J) - 1;
          g8 = BW4(I+1,J+1) - 1;


         G1=g1*g2*g3;
         G3=g3*g4*g5;
         G5=g5*g6*g7;
         G7=g7*g8*g1;
          Nc = (g1 -G1) + (g3 -G3) + (g5 -G5) + (g7 -G7 );


          if Nc < -2 
              b=b+1;
              BEcell{i , 1}(j,1) = I;
              BEcell{i , 1}(j,2) = J;
          end

          if Nc == -1 
              ee=ee+1;
              BEcell{i , 2}(j,1) = I;
              BEcell{i , 2}(j,2) = J; 
          end


    end

 Nb(i,1)=b;
 Ne(i,1)=ee;

end

我不知道它有什么问题吗?你以前见过这个公式吗? 另外,我不确定g9矩阵中没有g9,用纸编号

EDIT 我用过bwmorph:

Bifurcation = bwmorph(BW4 , 'branchpoints' ,Inf );
B=0;
for i = 1:1:Size(1)
     for j = 1:1:Size(2)
       if( Bifurcation(i,j)) % 
        B = B+1;
       end
    end
 end

%-----------------------------查找终点-------------- --------------

 Endpoint = bwmorph(can , 'endpoints' ,Inf );
 E=0;
 for i = 1:1:Size(1)
    for j = 1:1:Size(2)
        if( Endpoint(i,j))
         E = E+1;
        end
 end
 end

0 个答案:

没有答案