闭运算(Closing)是图像形态学中的一种操作,它结合了膨胀(Dilation)和腐蚀(Erosion)操作。闭运算的原理是先对图像执行腐蚀操作,然后再进行膨胀操作。这个过程能够消除图像中的小孔洞,填充小的断裂,平滑物体的边界,以及连接窄的间隙。
作用:
适用场景:
数学公式:
闭运算可以用数学形式表示为: Closing ( A , B ) = ( A ⊖ B ) ⊕ B \text{Closing}(A, B) = (A \ominus B) \oplus B Closing(A,B)=(A⊖B)⊕B
其中, A A A 是输入图像, B B B 是结构元素, ⊖ \ominus ⊖表示腐蚀操作, ⊕ \oplus ⊕ 表示膨胀操作。
代码示例:
import cv2
import numpy as np
def show_images(image):
cv2.namedWindow('image',cv2.WINDOW_KEEPRATIO)
cv2.imshow('image',image)
cv2.waitKey()
cv2.destroyAllWindows()
def Close(image):
# 定义结构元素(这里使用一个5x5的正方形结构元素)
kernel = np.ones((5, 5), np.uint8)
# 执行闭运算
closing = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)
return closing
if __name__ == '__main__':
# 读取图像
img = cv2.imread('cat-dog.png', flags=0)
re_img=Close(img)
# # 将四张图像连接成一个大图像
# top_row = np.hstack((img, re_img[0]))
# bottom_row = np.hstack((re_img[1], re_img[2]))
# combined_img = np.vstack((img, re_img))
combined_img=np.hstack((img,re_img))
show_images(combined_img)