matlab中形态学修补算法,Matlab 形态学常用算法

膨胀:是将A与核B卷积,求局部最大值,可以使得图像中的亮区域逐渐增长;

腐蚀:是膨胀的反操作,一般来说膨胀会扩张区域和腐蚀缩小区域

膨胀可以填补细小的坑洞而腐蚀可以消除细的突起,maltab中使用imdalite(A,B)表示使用核B膨胀A区域,核B可以通过strel函数获得,如strel('disk',3)表示半径为3的圆。maltab中使用imerode(A,B),核B可以通过strel函数获得,如strel('disk',3)表示半径为3的圆。

A = imread('target.png');

B = strel('disk',10);

A1 = imdilate(A,B);

A2 = imerode(A,B);

A3 = imdilate(A,1B);

subplot(221),imshow(A1;

title('imdilate膨胀原始图像');

subplot(222),imshow(A1);

title('使用B后1次膨胀后的图像');

subplot(223),imshow(A2);

title('使用B后2次膨胀后的图像');

subplot(224),imshow(A3);

title('使用B后3次膨胀后的图像');

0818b9ca8b590ca3270a3433284dd417.png

如上图可见膨胀可以把白色区域放大,把细小的黑色区域填满(填满的大小取决于B核),腐蚀则是黑色区域填充白色区域,白色细小区域被填满(原图来源冈萨雷斯书)。

.开运算和闭运算都包含膨胀与腐蚀操作,开运算是先腐蚀在膨胀,其作用是消除小的亮孤立点,剩余两区域基本不变;

闭运算是先膨胀再腐蚀,起作用是将亮区域连接在一起,迭代开运算或者是闭运算不是膨胀--腐蚀--膨胀--腐蚀而是膨胀--膨胀--腐蚀--腐蚀(这个是在opencv中会用到)。

a = imread('target.png');

B=strel('disk',10);

A1=imopen(a,B);

A2=imclose(a,B);

A3 = imclose(A1,B);

A4 = imopen(A2,B);

subplot(221),imshow(A1);

title('开运算图像');

subplot(222),imshow(A2);

title('闭运算图像');

subplot(223),imshow(A3);

title('先开后闭图像');

subplot(224),imshow(A4);

title('先闭后开图像');

0818b9ca8b590ca3270a3433284dd417.png

通过上图可以看出开运算把孤立的白色区域覆盖了,而闭运算把黑色区域覆盖了,将两者结合,可以消除孤立点可用于除噪。

当图像相减与开运算和闭运算结合的时候会产生顶帽变换和底帽变换,顶帽是图像减去开运算操作,而底帽是图像减去闭运算操作; 顶帽运算常用于暗背景上的亮物体,而底帽变换则用于相反的情况,在opencv中底帽变换被称为黑帽就是这个原因

(我猜的因为黑底帽变换,省去了底字,但是maltab省去了黑字)。

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

对于这两个运算针对不同的图片会有不同的想象,可以多试下,我随便找个图像试的,相比之前多了一些文理,也算是增加了对比度吧,这两个在分割这一块用的比较多。

mark(2015 12 13)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值