我试图找到从耳朵图像产生的二进制边缘图像的结束点和分叉点。
我根据[本文](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