www.pudn.com > ridge_extract.rar > r_extract.m, change:2007-05-08,size:1239b
function [picture,e_left,e_right,le_left,le_right]=r_extract(centerx,centery,I,D)
bw=im2bw(I);
% startx=zeros(1,5);%起始点横坐标
% starty=zeros(1,5);%起始点纵坐标
end_left=zeros(5,2);%左终点坐标
end_right=zeros(5,2);%右终点坐标
ridge=zeros(size(I));%脊线轨迹矩阵
length_left=ones(1,5);%左边脊线长度
length_right=ones(1,5);%右边脊线长度
in=0;
i=0;
x=centerx;%当前起始点纵坐标
%从中心点往上搜寻到第六条脊线开始跟踪
while i<7
if (x-1>=1)&(bw(x,centery)==1)&(bw(x-1,centery)==0)%当前点为白,下一点为黑即认为跨过一条脊线
i=i+1;
elseif x-1<1
break;
end
x=x-1;
end
i=1;
while i=5 %跟五条脊线
% startx(i)=x;
% starty(i)=centery;
%正向跟踪
[ridge,length_right(i),end_right(i,:),in]=forth_follow(x,centery,ridge,bw,D,i);
% ridge=ridge+r;
i=in;
%反向跟踪
[ridge,length_left(i),end_left(i,:),in]=back_follow(x,centery,ridge,bw,D,i);
% ridge=ridge+r;
i=in;
% ridge(x,centery)=i;
while (x-1>=1)&((bw(x,centery)==0)|(bw(x-1,centery)==1))
x=x-1;
end
x=x-1;
if x<1
break;
end
i=i+1;
end
picture=ridge;
e_left=end_left;
e_right=end_right;
le_left=length_left;
le_right=length_right;