相位编组法实现纹理直线边缘的检测程序代码(代码以子函数形式给出)

  • 虫虫123456
    了解作者
  • matlab
    开发工具
  • 1.3KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 5 积分
    下载积分
  • 0
    下载次数
  • 2022-06-27 23:33
    上传日期
相位编组法实现纹理直线边缘的检测程序代码(代码以子函数形式给出)
kWmTBjB3UyYPfN.rar
  • www.pudn.com.txt
    218B
  • ch7_2_3.m
    3.1KB
内容介绍
%%%%%%5相位编组法实现纹理直线边缘的检测程序代码(代码以子函数形式给出) function gradephase(x) [m,n]=size(x); bw=edge(x,'sobel'); gy=x(1:m-1,1:n-1)-x(2:m,1:n-1); gx= x(1:m-1,1:n-1)-x(1:m-1,2:n); g=gy./(gx+eps); ph-atan(g)+(sign(gx)<0&sign(gy)>0)*pi+... (sign(gx)<0&sign(gy)>0)+ (sign(gx)>0&sign(gy)<0)*2*pi+(sign(gx)==0)*pi; grdgp=floor(ph/pi*4); cn=0;s=[ ]; In_spt=cell(1,1); % cell数组类似c语言的指针,可以动态改变大小。S用来存放直线编组区域内的像%素坐标。 pline=[]; for i=2:m-1 for j=2:n-1 if bw(i,j)==D&gradgp(i,j)==0 %搜索边缘点。 ph_cp=gradgp(i,j);gradgp(i,j)=0;bw(i,j)=0; cn=cn+1;p=[i,j]; s=[s,p];in_spt(cn)-[p]; while ~isempty(s) %为了在8个邻域进行搜索,采用入栈和出栈操作。 [cs,rs]=size(s); ps=s(:,rs);s=s(:,1:rs-1); col=ps(1,1);row=ps(2,1); if legal(col+1,row,m,n)&grdgp(col+1,row)=ph_cp s= [s,[col+1,row]’]; in_spt(cn)=[ in_spt(cn), [col+1,row]’]; bw(col+1,row)=0;gradgp(col+1,row)=0; end if legal(col+1,row+1,m,n)&grdgp(col+1,row+1)=ph_cp s= [s,[col+1,row+1]’]; in_spt(cn)=[ in_spt(cn), [col+1,row+1]’]; bw(col+1,row+1)=0;gradgp(col+1,row+1)=0; end if legal(col,row+1,m,n)&grdgp(col,row+1)=ph_cp s= [s,[col,row+1]’]; in_spt(cn)=[ in_spt(cn), [col,row+1]’]; bw(col,row+1)=0;gradgp(col,row+1)=0; end if legal(col-1,row+1,m,n)&grdgp(col-1,row+1)=ph_cp s= [s,[col-1,row+1]’]; in_spt(cn)=[ in_spt(cn), [col-1,row+1]’]; bw(col-1,row+1)=0;gradgp(col-1,row+1)=0; end if legal(col-1,row+1,m,n)&grdgp(col-1,row+1)=ph_cp s= [s,[col-1,row+1]’]; in_spt(cn)=[ in_spt(cn), [col-1,row+1]’]; bw(col-1,row+1)=0;gradgp(col-1,row+1)=0; end if legal(col-1,row,m,n)&grdgp(col-1,row)=ph_cp s= [s,[col-1,row]’]; in_spt(cn)=[ in_spt(cn), [col-1,row]’]; bw(col-1,row)=0;gradgp(col-1,row)=0; end if legal(col,row-1,m,n)&grdgp(col,row-1)=ph_cp s= [s,[col,row-1]’]; in_spt(cn)=[ in_spt(cn), [col,row-1]’]; bw(col,row-1)=0;gradgp(col,row-1)=0; end if legal(col-1,row-1,m,n)&grdgp(col-1,row-1)=ph_cp s= [s,[col+1,row-1]’]; in_spt(cn)=[ in_spt(cn), [col+1,row-1]’]; bw(col+1,row-1)=0;gradgp(col+1,row-1)=0; end %以上判断是在8个方向搜索相同方向的象素。 If length(in_spt{cn})<=10 In_spt{cn}=[]; cn=cn-1; %虑除短线段 else plane=draw_1(in_spt{cn}); %实现画线功能,代码与Hough变换中的代码相同。 pline=[pline,plne]; c(i)=length(in_spt{cn}); end end end end end
评论
    相关推荐