一、什么是图像腐蚀?

比如左边的图像,白色是前景,黑色是背景。如果对当前的图像进行腐蚀,就会得到右边的图像。

简单点就是边被腐蚀掉了。

 

 

8.1 图像腐蚀

 

 

下面是官网上给的例子:

8.1 图像腐蚀

 

 

二、腐蚀的原理

腐蚀一般针对的是二值图像,也就是只有0和1两个。0就是黑色,1就是白色。我们所谓的腐蚀是指针对他的前景色,就是像素点的值为1的那些像素点。

 

我们进行腐蚀操作,有两个数据对象,一个是原始图像,另一个是卷积核。

在腐蚀的时候,我们使用卷积核(实际上也是一个二值的图像(就是一个数组))。将卷积核在原始图像里面逐个像素地进行遍历。(卷积核有一个中心点,以这个点进行遍历。)

 

8.1 图像腐蚀

 

当遍历到某一个点时,如果这个点以核为单位的周围的像素点都是白色,那么这个点的颜色就保持不变(仍然为1,白色)

如果这个点在核的范围之内存在黑色点,那就将这个点设为黑色。

 

8.1 图像腐蚀

 

所以,经过这样操作很明显。中间的点周围都是白色,所以还是白色。而边缘的点周围有黑又白,会变成黑色。

这样就把边缘腐蚀掉了。

 

 

三、操作

dst = cv2.erode(src, kernel, iterations)        //src:源图像

                                                                    //kernel:核。

                                                                    //iterations:迭代次数。指进行多少次腐蚀。默认是1.

 

核需要使用ones函数生成。

kernel= np.ones((5,5),np.uint8)

 

 

例1:

'''
图像腐蚀
'''

import cv2
import numpy as np

 

image = cv2.imread("image\\erode.bmp",cv2.IMREAD_UNCHANGED)           #有毛躁的图像

 

kernel = np.ones((5,5), np.uint8)      #定义核
result = cv2.erode(image,kernel)       #腐蚀

 

cv2.imshow("image", image)
cv2.imshow("result", result)

cv2.waitKey()
cv2.destroyAllWindows()

 

结果:

8.1 图像腐蚀

 

还是能看出一点来。

 

如果改成:

result = cv2.erode(image,kernel,iterations=5)

结果如下:

 

8.1 图像腐蚀

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章: