目录
一、什么是顶帽和黑帽运算
顶帽和黑帽运算都是形态学运算,分别用于图像处理中的特定应用。
顶帽运算被定义为原始图像与进行开运算之后得到的图像的差。它常用于分离比邻近点亮的斑块,可以突显出比原图轮廓周围的区域更明亮的区域。在进行背景提取时,顶帽运算也常被用于分离图像中的微小细节。
黑帽运算则是图像闭运算结果与原始图像之差。它通常用于分离比邻近点暗一些的斑块,可以突出比原始图轮廓周围区域更暗的区域。
即
顶帽 = 原始图像 - 开运算结果(先腐蚀后膨胀)
黑帽 = 闭运算(先膨胀后腐蚀) - 原始图像
开运算并运算详细点击图像处理基础:图像膨胀、腐蚀、开闭运算及梯度运算的Python实现
二、顶帽和黑帽运算的作用
顶帽和黑帽运算在图像处理中具有以下作用:
- 边缘检测和轮廓提取:形态学梯度运算可以用来提取图像中的边缘和轮廓,顶帽和黑帽运算都是形态学梯度运算的一种,它们可以通过突出图像中物体的边缘和轮廓来提高图像的清晰度和对比度。
- 噪声消除:顶帽和黑帽运算可以用来进行噪声消除,尤其是对于那些亮度和暗度不均匀的图像,这两种运算都可以有效地消除噪声。
- 斑块提取和分离:对于一些特定的应用,比如在医学图像处理中,顶帽和黑帽运算可以用来提取和分离某些特定的斑块,如肺结节等。
- 图像增强:通过改变图像的亮度和对比度,顶帽和黑帽运算可以增强图像的视觉效果,使图像更清晰、更易于观察和理解。
总的来说,顶帽和黑帽运算在图像处理中都有着广泛的应用,可以有效地改善图像的质量和提高图像处理的精度。
三、代码举例
图片sun.png
1.进行顶帽运算
顶帽 = 原始图像 - 开运算结果(先腐蚀后膨胀)
代码:
sun = cv2.imread('sun.png')
kernel = np.ones((2, 2), np.uint8) # 设置kenenel大小
tophat = cv2.morphologyEx(sun, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('TOPHAT', tophat)
cv2.waitKey(100000)
tophat = cv2.morphologyEx(sun, cv2.MORPH_TOPHAT, kernel):这行代码对图像sun
执行顶帽运算。顶帽运算被定义为原始图像与进行开运算之后得到的图像的差。这会强化图像中与周围区域相比更亮的区域。
结果:
2.进行黑帽运算
黑帽 = 闭运算(先膨胀后腐蚀) - 原始图像
代码:
blackhat = cv2.morphologyEx(sun, cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('BLACKHAT', blackhat)
cv2.waitKey(100000)
blackhat = cv2.morphologyEx(sun, cv2.MORPH_BLACKHAT, kernel):这行代码对图像sun
执行黑帽运算。黑帽运算被定义为闭运算结果与原始图像之差。这会强化图像中与周围区域相比更暗的区域。
结果:
四、总结
这两种运算可以有效地提取图像中的边缘和轮廓,同时也可以去除一些小的噪声。在实际应用中是非常有价值的,尤其是对于那些亮度和暗度不均匀的图像