【图像处理】-形态学调整(膨胀、腐蚀、开/闭运算)

形态学调整

膨胀操作

主要针对卷积计算区域内的该像素点的NxM区域的最大值进行膨胀操作;
例如:前景是白色背景经过膨胀后区域会增大

原图片(背景为黑色,前景为白色)如下:

注:
图中我们可以看到,这张图片是一个二值图片(只有黑白),而且还增加了一些毛刺。而且还包含字体中还包含一些小的间隙(缺陷)。

下面我们对这张图片进行膨
胀处理。膨胀是如何处理的呢?对于一个像素点,我们需要先指定对每个像素点膨胀的范围。

这里我们指定范围为33的矩阵,kernel(卷积核核)指定为全为1的33矩阵,卷积计算后,该像素点的值等于以该像素点为中心的3*3范围内的最大值。由于我们是二值图像,所以只要包含周围白的部分,就变为白的。

总结: 只要原图片3 * 3范围内有白的,该像素点就是白的。

腐蚀操作

腐蚀操作和膨胀操作相反,也就是将毛刺消除,判断方法为:在卷积核大小中对图片进行卷积。取图像中(3 * 3)区域内的最小值。由于我们是二值图像,也就是取0(黑色)。

分析: 卷积核变大后,我们发现他已经腐蚀的部分有点多了,字体原来的部分也被清除。

分析: 增加迭代次数后,腐蚀变得更加厉害,所以应该选择合适的迭代次数。

开运算

先腐蚀,后膨胀
我们在上面的膨胀和腐蚀的图片中可以看到,图片大小程度上都受到了损失,字体信息缺失或者变粗等等。如果我们不想更改原有信息,即字体粗细。那么我们可以使用上面的两种运算。

例如:开运算,先对字体进行变细(腐蚀),在对字体进行变粗(膨胀),整体上字体粗细不会发生变化。毛刺信息在腐蚀的时候就已经消除了,膨胀也不会膨胀出多余信息。

分析: 我们发现大部分毛刺已经消除,而且字体信息也没有发生变化,这也就是我们想要的效果。虽然仍然有一部信息没有被清除,我们只需要调整卷积核的大小就可以实现。

闭运算

先膨胀,后腐蚀

例如闭运算,先对字体进行变粗(膨胀),在对字体进行变细(腐蚀),整体上字体粗细不会发生变化。凹陷信息在膨胀的时候就已经连接了,腐蚀也不会腐蚀出多余信息。

posted @ 2023-02-20 16:43  VisionCode  阅读(186)  评论(0编辑  收藏  举报