📜  使用 Python-OpenCV 进行 Top Hat 和 Black Hat 变换

📅  最后修改于: 2022-05-13 01:55:15.330000             🧑  作者: Mango

使用 Python-OpenCV 进行 Top Hat 和 Black Hat 变换

在形态学和数字图像处理中,顶帽和黑帽变换是用于从给定图像中提取小元素和细节的操作。这两种类型的变换,其中,顶帽变换定义为输入图像与其通过某些结构元素的打开之间的差异,而黑帽变换定义为关闭和输入图像之间的差异。这些变换用于各种图像处理任务,例如特征提取、背景均衡、图像增强等。

在这里,我们将使用打开和关闭形态学操作。

礼帽和黑帽之间的区别

顶帽过滤器用于在黑暗背景中增强感兴趣的明亮对象。黑帽操作用于做相反的事情,在明亮的背景中增强感兴趣的黑暗对象。
示例 1:顶帽变换

使用的图像:

# Importing OpenCV 
import cv2
  
  
# Getting the kernel to be used in Top-Hat
filterSize =(3, 3)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, 
                                   filterSize)
  
# Reading the image named 'input.jpg'
input_image = cv2.imread("testing.jpg")
input_image = cv2.cvtColor(input_image, cv2.COLOR_BGR2GRAY)
  
# Applying the Top-Hat operation
tophat_img = cv2.morphologyEx(input_image, 
                              cv2.MORPH_TOPHAT,
                              kernel)
  
cv2.imshow("original", input_image)
cv2.imshow("tophat", tophat_img)
cv2.waitKey(5000)

输出:

正如您在上图中所看到的,使用 Top-Hat 操作增强并去除了非常小的细节。因此,当在深色背景上作为亮像素存在时,它有助于观察输入的次要细节。

示例 2:黑帽变换

输入图像:

# Importing OpenCV and numpy
import cv2
  
# Defining the kernel to be used in Top-Hat
filterSize =(3, 3)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,
                                   filterSize)
  
# Reading the image named 'input.jpg'
input_image = cv2.imread("testing.jpg")
input_image = cv2.cvtColor(input_image, cv2.COLOR_BGR2GRAY)
  
# Applying the Black-Hat operation
tophat_img = cv2.morphologyEx(input_image, 
                              cv2.MORPH_BLACKHAT,
                              kernel)
  
cv2.imshow("original", input_image)
cv2.imshow("tophat", tophat_img)
cv2.waitKey(5000)

输出:

在此图像中,由于对输入图像应用了黑帽变换,所有在深色背景上为白色的对象都被突出显示。