注释:原文参考https://www.cnblogs.com/tiandsp/archive/2013/04/26/3045747.html
外边界跟踪:
第一种方法和求内边界第一种方法类似。先对原图像进行膨胀,然后用膨胀后的图像减去原图像即可。
第二种可以说是跟踪方法,不过只是标记算法而已。就是将图像中前景像素周围的非前景像素标记一下,进行基本的操作就行了。
最终展示效果如图:
clear all;close all;clc
img0=imread('W:\PY\PY\temmm\mnsdf (13).jpg'); %读取当前路径下的图片
imshow(img0);
img=img0>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 %如果当前像素是前景像素
for k=1:8
ii=i+ed(k,1);
jj=j+ed(k,2);
if img(ii,jj)==0 %当前像素周围如果是背景,边界标记图像相应像素标记
imgn(ii,jj)=1;
end
end
end
end
end
figure;
imshow(imgn,[]);
se = strel('square',3);
imgn=imdilate(img,se)-img;
figure;
imshow(imgn)
figure;
subplot(121);
imshow(img0);
subplot(122);
imshow(imgn)