图像处理中二值图像边界提取

今天下午要完成一部分实验,中间涉及到二值边界的提取,去百度了一下。根据自己实验的结果表明,方法确实是好用,关键自己之前写过,但是效果不如网上的好!

需要在别人的基础上结合自己的需要或者自己已有的结果具体问题具体分析。本来想直接copy一下,结果人家的是.png,而自己是已知图像中的一些数据,所以直接将我得类别标签图转化为二值图,然后按照网上的思路写就可以了,我参考的是:https://www.cnblogs.com/tiandsp/archive/2013/04/26/3045747.html

%%%一下是matlab代码

%%%TureFlag是我的类别标签图,本来有7类地物,二值化一下就可以。所以如果你的也不是二值图,你可以将图像二值化再做


function [TrueFlag]=BoundaryJudge(Image,TrueFlag)

[m,n]=size(TrueFlag);
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 TrueFlag(i,j)==1%如果当前像素是前景像素
            for k=1:8
                ii=i+ed(k,1);
                jj=j+ed(k,2);
                if TrueFlag(ii,jj)==0%当前像素周围如果是背景,边界标记图像相应像素标记
                    imgn(ii,jj)=1;
                end
            end
        end
    end

end

   figure;                       %由于只有0,1,所以colormap(gray)也没关系,显示出来就是黑白图
   imagesc(imgn);
   colormap(gray);     

end


结果图:

图像处理中二值图像边界提取