OpenCV3编程入门读书笔记4-形态学滤波

一、腐蚀和膨胀

1、腐蚀和膨胀的主要功能

(1)消除噪声

(2)分割出独立的图像元素,在图像中连接相邻的元素

(3)寻找图像中的极大值或者极小值区域

(4)求出图像的梯度

2、膨胀(dilate)

膨胀就是求局部最大值的操作。从数学角度来说,就是将图像与核进行卷积,计算核B覆盖区域的像素点的最大值,并把这个最大值赋值给参考点指定的元素。这样就会使图像中的高亮区域逐渐增长。

3、腐蚀(erode)

腐蚀和膨胀是相反的操作,腐蚀是求局部最小值的操作。腐蚀操作会使图像中的高亮区逐渐减小。

4、膨胀和腐蚀示例

 1 Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\car1.jpg",0);
 2 
 3 Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
 4 
 5 Mat dilateImage;
 6 dilate(srcImage, dilateImage, element);
 7 
 8 Mat erodeImage;
 9 erode(srcImage, erodeImage, element);    
10 
11 imshow("srcImage", srcImage);
12 imshow("dilateImage", dilateImage);
13 imshow("erodeImage", erodeImage);
14 
15 waitKey(0);

5、效果图:

二、开运算

1、概述

开运算是先腐蚀后膨胀。主要用于消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积,同时抑制比结构元小的亮细节。

2、示例

 1 Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test1.png",0);
 2 
 3 Mat element = getStructuringElement(MORPH_RECT, Size(5,5));
 4 
 5 Mat openImage;
 6 morphologyEx(srcImage, openImage, MORPH_OPEN, element);
 7 
 8 imshow("srcImage", srcImage);
 9 imshow("openImage", openImage);
10 
11 waitKey(0);

3、效果图

三、闭运算

 1、概述

闭运算是先膨胀后腐蚀。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积,同时抑制比结构元小的暗细节。

2、示例

 1 Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test2.png",0);
 2 
 3 Mat element = getStructuringElement(MORPH_RECT, Size(5,5));
 4 
 5 Mat closeImage;
 6 morphologyEx(srcImage, closeImage, MORPH_CLOSE, element);
 7 
 8 imshow("srcImage", srcImage);
 9 imshow("closeImage", closeImage);
10 
11 waitKey(0);

3、效果图

四、形态学梯度

1、概述

就是将膨胀土和腐蚀图相减。对二值化图像进行这一操作可以将边缘突出来,可以使用形态学梯度来保留物体的边缘轮廓

2、示例

 1 Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test2.png",0);
 2 
 3 Mat element = getStructuringElement(MORPH_RECT, Size(2,2));
 4 
 5 Mat gradientImage;
 6 morphologyEx(srcImage, gradientImage, MORPH_GRADIENT, element);
 7 
 8 imshow("srcImage", srcImage);
 9 imshow("gradientImage", gradientImage);
10 
11 waitKey(0);

3、效果图

五、顶帽变换和黑帽变换

1、概述

顶帽变换就是用源图像减去开运算图像。因为开运算带来的结果是放大了裂缝或者局部低亮度的区域。因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围区域更明亮的区域。顶帽一般用于校正不均匀光照的影响(补充:均匀光照在从背景中提取目标的处理中扮演核心的角色)。

黑帽变换就是用闭运算减去源图像。黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域。黑帽运算一般用来分离比邻近点暗一些的斑块。

2、示例

 1 Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test2.png",0);
 2 
 3 Mat element = getStructuringElement(MORPH_RECT, Size(15,15));
 4 
 5 Mat tophatImage;
 6 morphologyEx(srcImage, tophatImage, MORPH_TOPHAT, element);
 7 
 8 Mat blackhatImage;
 9 morphologyEx(srcImage, blackhatImage, MORPH_BLACKHAT, element);
10 
11 imshow("srcImage", srcImage);
12 imshow("tophatImage", tophatImage);
13 imshow("blackhatImage", blackhatImage);
14 
15 waitKey(0);

3、效果图

 参考:http://blog.csdn.net/hx1298234467/article/details/49887925

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值