博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab练习程序(最终腐蚀)
阅读量:7105 次
发布时间:2019-06-28

本文共 1384 字,大约阅读时间需要 4 分钟。

所谓的最终腐蚀并不是把图像不断腐蚀直到一片黑为止,那样还有什么意思呢。

最终腐蚀的意思是连续腐蚀过程中连通子区域消失前所有剩余部分的并。

看下图有一个连通区域:

那么最终腐蚀就是把图像不断腐蚀到只剩圆环最中间的白色区域为止。如下:

所以一般最终腐蚀之后,如果再腐蚀一下,那么图像就全没了。

最终腐蚀的通常算法会先对原图像使用,然后求区域极大值。不过这种方法怎么说呢,速度倒是快,不过我实验了很多次,求得的结果很不稳定。

所以我就自己开发了一个算法,虽然有些慢,不过很稳定。

1.首先对原图像进行连通区域标记。

2.对标记后图像不断进行腐蚀,每腐蚀一次,重新标记连通区域。

3.每腐蚀并且标记一次之后,检查腐蚀后的图像是否有哪一个标记的区域消失了,如果消失了,那么就把消失这一区域的最后一次出现的区域恢复。

4.直到下次腐蚀和这次腐蚀结果一样,程序结束。

运行效果如下:

原图:

最终腐蚀:

matlab代码如下:

clear all;close all;clc;img=imread('te.png');img=img>128;imshow(img);[m n]=size(img);imgn=zeros(m,n);preimg=imgn;se= strel('square',3);while sum(sum(preimg-img))~=0     preimg=img;    img=img>0;       [img label]=liantong(img);      %标记不同区域,label是区域个数    imgn=imerode(img,se);        %腐蚀之后是否有哪个被标记的区域消失了    Hist=zeros(1,label);                for i=1:m        for j=1:n            if imgn(i,j)~=0                Hist(imgn(i,j))=imgn(i,j);              end        end    end    %统计消失区域的标号    H=[];    for i=1:label        if Hist(i)==0            H=[H i];               end    end        %如果这个区域消失了,那么再把这个区域恢复过来    if ~isempty(H)        l=length(H);        for i=1:m            for j=1:n                for k=1:l                    if img(i,j)==H(k)                           imgn(i,j)=img(i,j);                    end                end            end        end       end               img=imgn;endfigure;imshow(imdilate(imgn>0,se));    %再膨胀一下好看

有了最终腐蚀与条件膨胀,那么分水岭算法的实现也就近在眼前了。

转载地址:http://scvhl.baihongyu.com/

你可能感兴趣的文章
acm algorithm practice Dec. 27 MST
查看>>
LINQ系列:Linq to Object投影操作符
查看>>
微信公众号的文本回复(文本回复接口)
查看>>
CentOS7.X怎样更新yum源
查看>>
color theme
查看>>
vue 监听组件被重新渲染后的事件
查看>>
[Aaronyang] 写给自己的WPF4.5 笔记9[复杂数据处理三步曲,数据展示ListView泪奔2/3]...
查看>>
第十章 集成ISIS协议--10.1
查看>>
六、C# 派生
查看>>
SSH整合错误三连
查看>>
如何把彩色网页快速变为灰色网页?
查看>>
[渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:实现基本的CRUD功能
查看>>
NO24 第三关--企业面试题
查看>>
《Java技术》预备作业02 计科1502李宇蒙
查看>>
rnn lstm
查看>>
升级Chrome后无法打开网页
查看>>
软工第三次团队作业
查看>>
asp.net页面传值
查看>>
LINQ之路 1: LINQ介绍
查看>>
Find Integer HDU - 6441(费马大定理+勾股数)
查看>>