matlab对图像处理的内边界边缘检测和特征提取源码实战02

边界提取方法首先是内边界跟踪:
第一种方法不是跟踪方法。步骤是先对原图像腐蚀,然后用原图像减去腐蚀后的图像就得到边界了。
第二种方法是跟踪方法。步骤如下:
1.遍历图像。
2.标记第一个遇见像素块的前景像素(i,j)。
3.对这个像素周围八邻域逆时针搜索,如果搜索到周围有前景像素,那么更新坐标(i,j)为(i’,j’),并标记。
4.不断执行第3步直到再次遇见此像素块第一次标记的像素。
5.继续执行第1步。

clear all;close all;clc
%读取当前路径下的图片
img=imread('S:\360Downloads\sjjjjhxddddd\afhihfr.png');
figure;
imshow(img);
img=img>128;
[m,n]=size(img);

imgn=zeros(m,n);        %边界标记图像
ed=[-1 -1;0 -1;1 -1;1 0;1 1;0 1;-1 1;-1 0]; %从左上角像素,逆时针搜索
for i=2:m-1
    for j=2:n-1
        if img(i,j)==1 && imgn(i,j)==0      %当前是没标记的白色像素
            if sum(sum(img(i-1:i+1,j-1:j+1)))~=9    %块内部的白像素不标记
                ii=i;         %像素块内部搜寻使用的坐标
                jj=j;
                imgn(i,j)=2;    %本像素块第一个标记的边界,第一个边界像素为2
                
                while imgn(ii,jj)~=2    %是否沿着像素块搜寻一圈了。
                    for k=1:8           %逆时针八邻域搜索
                        tmpi=ii+ed(k,1);        %八邻域临时坐标
                        tmpj=jj+ed(k,2);
                        if img(tmpi,tmpj)==1 && imgn(tmpi,tmpj)~=2  %搜索到新边界,并且没有搜索一圈
                            ii=tmpi;        %更新内部搜寻坐标,继续搜索
                            jj=tmpj;
                            imgn(ii,jj)=1;  %边界标记图像该像素标记,普通边界为1
                            break;
                        end
                    end
                end
                
            end
        end
    end
end

imgn=imgn>=1;
figure;
imshow(imgn,[]);title('三通道各分布');

%不过要是真取二值图像内边界,通常是原图减去其腐蚀图就行了
se = strel('square',3); 
imgn=img-imerode(img,se);    
figure;
imshow(imgn)

对比图象如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
部分资料参考自:https://www.cnblogs.com/tiandsp/archive/2013/04/26/3045747.html
注:原文链接:http://www.cnblogs.com/tiandsp/archive/2013/04/26/3045747.html

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海宝7号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值