形态学之黑帽运算
2021-10-28 本文已影响0人
大龙10
《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05
第8章 形态学操作
8.8 黑帽运算
8.8.1 定义
黑帽运算是用闭运算图像减去原始图像的操作。黑帽运算能够获取图像内部的小孔,或前景色中的小黑点,或者得到比原始图像的边缘更暗的边缘部分。
例如,图8-25所示是一个黑帽运算,其中:
图8-25 黑帽运算示意图
从图8-25可以看到,黑帽运算使用闭运算图像减原始图像得到黑帽图像,黑帽图像是原始图像中的小孔(噪声)。
例如,在图8-26中,左图是原始图像,中间的图是闭运算图像,右图是闭运算图像减原始图像得到的黑帽图像,黑帽图像显示的是比原始图像边缘更暗的边缘部分。
图8-26 黑帽运算实例示意图
8.8.2 函数
通过将函数cv2.morphologyEx()中操作类型参数op设置为“cv2.MORPH_BLACKHAT”,可以实现黑帽运算。其语法结构如下:
result=cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)
8.8.3 程序示例
【例8.11】使用函数cv2.morphologyEx()实现黑帽运算。
import cv2
import numpy as np
o1=cv2.imread("blackhat.bmp",cv2.IMREAD_UNCHANGED)
o2=cv2.imread("lena.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r1=cv2.morphologyEx(o1,cv2.MORPH_BLACKHAT,k)
r2=cv2.morphologyEx(o2,cv2.MORPH_BLACKHAT,k)
cv2.imshow("original1",o1)
cv2.imshow("original2",o2)
cv2.imshow("result1",r1)
cv2.imshow("result2",r2)
cv2.waitKey()
cv2.destroyAllWindows()