前面学习了开运算,它是先腐蚀再膨胀,如果把这个顺序倒一下,改为先膨胀再腐蚀,我们就这种运算叫做闭运算,可以用数学公式表示如下:
I∙S=(I⨁S)⊖S
可以使用下面表达式来计算:
闭运算有以下特点:
(1)闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。
(2)闭运算是通过填充图像的凹角来滤波图像的。
(3)结构元素大小的不同将导致滤波效果的不同。
(4)不同结构元素的选择导致了不同的分割。
它具有填充白色物体内细小黑色空洞的区域,连接临近物体、同一个结构元、多次迭代处理,也可以在不明显改变其面积的情况下平滑其边界等作用。
下面通过例了来演示去掉小黑点:
#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import cv2
import numpy as np
#图片的路径
imgname = "szbin3.png"
#读取图片
image = cv2.imread(imgname, cv2.IMREAD_GRAYSCALE)
#图片的高度和宽度
h,w = image.shape[:2]
print('imagesize={}-{}'.format(w,h))
#显示原图
cv2.imshow("Image",image)
#结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
print(kernel)
#开运算
out = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)
cv2.imshow("out",out)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果输出如下:
输入原图
从结果里可以看到原来在深圳的字上面有很多小黑点,经过闭运算处理之后,小黑点已经没有了,从而达到去掉黑噪声的效果。
https://blog.csdn.net/caimouse/article/details/51749579
转载:https://blog.csdn.net/caimouse/article/details/101902070
查看评论