【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度( 二 )


【入门教程之十】 形态学图像处理(一):膨胀与腐蚀
对膨胀和腐蚀心中有数了 , 接下来的高级形态学操作 , 应该就不难理解 。
另外 , 为了下面对比和演示以及理解的方便 , 浅墨自己制作了一张毛笔字图 , 这里先上原图:

【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
OK , 我们开始讲解 。
1.1 开运算( )
开运算( ) , 其实就是先腐蚀后膨胀的过程 。其数学表达式如下:
开运算可以用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积 。效果图是这样的:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
实际效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
1.2 闭运算( )
先膨胀后腐蚀的过程称为闭运算( ) , 其数学表达式如下:
闭运算能够排除小型黑洞(黑色区域) 。效果图如下所示:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
实际效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
1.3 形态学梯度(t)
形态学梯度( )为膨胀图与腐蚀图之差 , 数学表达式如下:
对二值图像进行这一操作可以将团块(blob)的边缘突出出来 。我们可以用形态学梯度来保留物体的边缘轮廓 , 如下所示:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
实际素材效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图

【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
1.4 顶帽(Top Hat)
顶帽运算(Top Hat)又常常被译为”礼帽“运算 。为原图像与上文刚刚介绍的“开运算“的结果图之差 , 数学表达式如下:
因为开运算带来的结果是放大了裂缝或者局部低亮度的区域 , 因此 , 从原图中减去开运算后的图 , 得到的效果图突出了比原图轮廓周围的区域更明亮的区域 , 且这一操作和选择的核的大小相关 。
顶帽运算往往用来分离比邻近点亮一些的斑块 。当一幅图像具有大幅的背景的时候 , 而微小物品比较有规律的情况下 , 可以使用顶帽运算进行背景提取 。
如下所示:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
素材效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
1.5黑帽(Black Hat)
黑帽(Black Hat)运算为”闭运算“的结果图与原图像之差 。数学表达式为:
黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域 , 且这一操作和选择的核的大小相关 。
所以 , 黑帽运算用来分离比邻近点暗一些的斑块 。非常完美的轮廓效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
实际素材效果图:
【OpenCV入门教程之十一】 形态学图像处理 二开运算 闭运算 形态学梯度

文章插图
二、深入——源码分析溯源
本文的主角是中的函数 , 它利用基本的膨胀和腐蚀技术 , 来执行更加高级的形态学变换 , 如开闭运算 , 形态学梯度 , “顶帽”、“黑帽”等等 。这一节我们来一起看一下函数的源代码 。