腐蚀
腐蚀是通过卷积核沿着图像滑动,如果与卷积核对应的图像的所有像素值都是1,则该点的像素值就是1,否则为0。用于去除白噪声等。
# 卷积核
kernel = np.ones((5, 5), np.uint8)
# 腐蚀
# iterations为腐蚀次数,默认1
img_erosion = cv2.erode(img_binary, kernel,iterations=1)
膨胀
通过卷积核沿着图像滑动,如果与卷积核对应的原图像的像素值中只要有一个是1,则该点的像素值就是1。
# 膨胀
img_dilation = cv2.dilate(img_binary, kernel,iterations=1)
开运算
开运算是先进行腐蚀再进行膨胀的操作,被用来去除噪声。
# 开运算,先进行腐蚀再进行膨胀,被用来去除噪声
img_opening=cv2.morphologyEx(img_binary,cv2.MORPH_OPEN,kernel)
闭运算
闭运算是先进行膨胀再进行腐蚀的操作,被用来填充前景物体中的小洞。
# 闭运算,先进行膨胀再进行腐蚀,被用来填充前景物体中的小洞
img_closing=cv2.morphologyEx(img_binary,cv2.MORPH_CLOSE,kernel)
形态学梯度
膨胀-腐蚀,结果像是前景物体的轮廓。
# 形态学梯度,膨胀-腐蚀
img_gradient=cv2.morphologyEx(img_binary,cv2.MORPH_GRADIENT,kernel)
礼帽
原始图像-开运算后的图像。
# 礼帽,原图像-开运算后的图像
img_tophat=cv2.morphologyEx(img_binary,cv2.MORPH_TOPHAT,kernel)
黑帽
闭运算后的图像-原始图像。
# 黑帽,闭运算后的图像-原图像
img_blackhat=cv2.morphologyEx(img_binary,cv2.MORPH_BLACKHAT,kernel)