map1=imread('p.jpg');[row,col,dep]=size(map1); %行,列,深度值map=zeros(row,col);pixsum=row*col; %像素总数%灰度化for i=1:row for j=1:col map(i,j)=0.11*map1(i,j,1)+0.59*map1(i,j,2)+0.3*map1(i,j,3); endend%灰度化完成,输出灰度图figure(1)imshow(map,[])title('原始灰度图像')Y=zeros(row,col); %存储输出图像%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5根据通道二值化 for i=1:row for j=1:col if map1(i,j,2)>map1(i,j,1)&&map1(i,j,2)>map1(i,j,3) Y(i,j)=1; else Y(i,j)=0; end end endfigure(2)imshow(Y,[])title('二值化后图像')%以下为骨架提取程序temp=ones(row,col);N=0; %统计邻域内非零像素个数。T=0; %统计0-1变换次数for k=1:80 %大循环次数 for i=2:row-1 for j=2:col-1 a=[Y(i,j),Y(i,j-1),Y(i+1,j-1),Y(i+1,j),Y(i+1,j+1),Y(i,j+1),Y(i-1,j+1),Y(i-1,j),Y(i-1,j-1)];%邻域元素排序。中间为1,左边为2,逆时针分别为2---9 if a(1)==1 for m=1:8 if a(m)==1 N=N+1; end end for n=1:7 if a(n)==0&&a(n+1)==1 T=T+1; end end if a(8)==0&&a(1)==1 T=T+1; end end if (N>=2)&&(N<=6)&&(T==1)&&(a(2)*a(4)*a(6)==0)&&(a(4)*a(6)*a(8)==0) temp(i,j)=0; %标记要删除的点,标志为1 end N=0; T=0; end end %删除点 for i=1:row for j=1:col if temp(i,j)==0 Y(i,j)=0; end end end %第一步完成 for i=2:row-1 for j=2:col-1 a=[Y(i,j),Y(i,j-1),Y(i+1,j-1),Y(i+1,j),Y(i+1,j+1),Y(i,j+1),Y(i-1,j+1),Y(i-1,j),Y(i-1,j-1)];%邻域元素排序。中间为1,左边为2,逆时针分别为2---9 if a(1)==1 for m=2:9 if a(m)==1 N=N+1; end end for n=1:7 if a(n)==0&&a(n+1)==1 T=T+1; end end if a(8)==0 T=T+1; end end if (N>=2)&&(N<=6)&&(T==1)&&(a(2)*a(4)*a(8)==0)&&(a(2)*a(6)*a(8)==0) temp(i,j)==0; %标记要删除的点,标志为1 end N=0; T=0; end end %删除点 for i=1:row for j=1:col if temp(i,j)==0 Y(i,j)=0; end end end %第二步完成end%完成,输出figure(3)imshow(Y,[])title('提取的骨架')%以下为交叉点检测及标志,交叉点标注在灰度图中temp1=zeros(row,col);for i=2:row-1 for j=2:col-1 c=sum(sum(Y(i-1:i+1,j-1:j+1))); if c>=4 temp1(i,j)=1; end endendfor i=1:row for j=1:col if temp1(i,j)==1 map(i,j)=255; end endend%标注完成,显示灰度图figure(4)imshow(map,[])title('标注的交叉点')
导读:目前正在解读《骨架提取和交叉点检测的matlab实现》的相关信息,《骨架提取和交叉点检测的matlab实现》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《骨架提取和交叉点检测的matlab实现》的详细说明。
简介:本文介绍了骨架提取和交叉点检测的matlab实现,用的是中轴法,细化法检测出来的是边缘。
提醒:《骨架提取和交叉点检测的matlab实现》最后刷新时间 2024-03-14 01:02:34,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《骨架提取和交叉点检测的matlab实现》该内容的真实性请自行鉴别。