Opencv第七课--形态学滤波

形态学滤波

形态学滤波包括腐蚀、膨胀、开运算、闭运算、形态学梯度、礼帽、黑帽
下面针对这四种形态学操作,说明一下其原理。

腐蚀操作

顾名思义,腐蚀操作会一定程度上对图像前景物体的边界进行腐蚀,减少图像的高亮部分。腐蚀也是一种与图像之间的卷积操作,与卷积核对应的源图像像素为1时保留,否则置零。

import cv2
import numpy as np
img = cv2.imread("erode.jpg",0)
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations=1)
image.png

image.png

可以看出腐蚀操作令图像的边界缩小,高亮部分减少,有助于消除噪声。因此,在对图像进行预处理时,通常会先进行腐蚀操作,消除噪声干扰。

膨胀

与腐蚀操作相反的是膨胀操作,膨胀操作会使得图像的高亮部分增大,突出前景目标,也可以用于连接两个分开的物体。

import cv2
import numpy as np
img = cv2.imread("erode.jpg",0)
kernel = np.ones((5,5),np.uint8)
dilate = cv2.dilate(img,kernel,iterations=1)
image.png

开运算

开运算就是对图像先进行腐蚀,再进行膨胀

import cv2
import numpy as np
img = cv2.imread("erode.jpg",0)
kernel = np.ones((5,5),np.uint8)
#开运算接口函数
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
image.png

闭运算

闭运算就是与开运算相反的操作,先膨胀后腐蚀,用来填充前景物体的小洞,或者前景物体的小黑点。

#闭运算接口函数
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

形态学梯度

一副图像膨胀和腐蚀的差

gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
image.png

礼帽

原图像和开运算之后图像的差

tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

黑帽

源图像和闭运算之后图像的差

blackhat = cv2.morphologyEx(img, cv2.MORPHBLACKHAT, kernel)

你可能感兴趣的:(Opencv第七课--形态学滤波)