⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gujia.m

📁 条纹骨架提取
💻 M
字号:

%用3*3领域法对图像滤波
K1=imread('tiaowen1.jpg');
I=filter2(fspecial('average',3),K1)/255;

J=I;
%用5*5的模板去探测
[m,n]=size(I);
neighbor=zeros(5,5);

for i=3:1:m-2
    for j=3:1:n-2
        
        %取邻域灰度值赋给neighbor各点编号如下
        %p-22 p-12 p02 p12 p22
        %p-21 p-11 p01 p11 p21
        %p-20 p-10 p00 p10 p20
        %p-2-1 p-1-1 p0-1 p1-1 p2-1
        %p-2-2 p-1-2 p0-2 p1-2 p2-2
        neighbor(1,1)=J(i-2,j-2);neighbor(1,2)=J(i-2,j-1);neighbor(1,3)=J(i-2,j);neighbor(1,4)=J(i-2,j+1);neighbor(1,5)=J(i-2,j+2);
        neighbor(2,1)=J(i-1,j-2);neighbor(2,2)=J(i-1,j-1);neighbor(2,3)=J(i-1,j);neighbor(2,4)=J(i-1,j+1);neighbor(2,5)=J(i-1,j+2);
        neighbor(3,1)=J(i,j-2);neighbor(3,2)=J(i,j-1);neighbor(3,3)=J(i,j);neighbor(3,4)=J(i,j+1);neighbor(3,5)=J(i,j+2);
        neighbor(4,1)=J(i+1,j-2);neighbor(4,2)=J(i+1,j-1);neighbor(4,3)=J(i+1,j);neighbor(4,4)=J(i+1,j+1);neighbor(4,5)=J(i+1,j+2);
        neighbor(5,1)=J(i+2,j-2);neighbor(5,2)=J(i+2,j-1);neighbor(5,3)=J(i+2,j);neighbor(5,4)=J(i+2,j+1);neighbor(5,5)=J(i+2,j+2);

        condition1=0;
        condition2=0;
        condition3=0;
        condition4=0;
        
        % x方向上满足p00+p0-1+p01>p-20+p-2-1+p-21且p00+p0-1+p01>p20+p2-1+p21
       if(( neighbor(3,3)+neighbor(4,3)+neighbor(2,3))>(neighbor(3,1)+neighbor(4,1)+neighbor(2,1)))&&...
           ((neighbor(3,3)+neighbor(4,3)+neighbor(2,3))>(neighbor(3,5)+neighbor(4,5)+neighbor(2,5)))
        condition1=1;
       end
       
       %y方向上满足p00+p-10+p10>p0-2+p-1-2+p1-2且p0-2+p-1-2+p1-2>p02+p-12+p12
      if ((neighbor(3,3)+neighbor(3,2)+neighbor(3,4))>(neighbor(5,3)+neighbor(5,2)+neighbor(5,4)))&&...
         ((neighbor(3,3)+neighbor(3,2)+neighbor(3,4))>(neighbor(1,3)+neighbor(1,2)+neighbor(1,4)))
          condition2=1;
      end

      %xy方向上满足p00+p-1-1+p11>p-22+p-21+p-12且p00+p-1-1+p11>p-2-2+p-2-1+p-1-2
     if ((neighbor(3,3)+neighbor(4,2)+neighbor(2,4))>(neighbor(1,1)+neighbor(2,1)+neighbor(1,2)))&&...
        ((neighbor(3,3)+neighbor(4,2)+neighbor(2,4))>(neighbor(5,1)+neighbor(4,1)+neighbor(5,2)))
        condition3=1;
     end

     %-xy方向上满足p00+p-11+p1-1>p-2-2+p-2-1+p-1-2且p00+p-11+p1-1>p22+p21+p12
     if ((neighbor(3,3)+neighbor(2,2)+neighbor(4,4))>(neighbor(5,1)+neighbor(4,1)+neighbor(5,2)))&&...
         ((neighbor(3,3)+neighbor(2,2)+neighbor(4,4))>(neighbor(1,5)+neighbor(2,5)+neighbor(1,4)))
        condition4=1;
     end

     if condition1+condition2+condition3+condition4<2
         I(i,j)=255; % 删除该点
     else
         I(i,j)=J(i,j);
     
     end


end
end

imshow(I);title('细化后');
imfinfo(I);

%对图像进行二值化处理

for i=0:m-1
    for j=0:n-1;
        if J(i,j)<255
            J(i,j)=0;
        else
            J(i,j)=255;
        end
    end
end
figure;
imshow(I);title('二值化后');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -