hellou

opencv学习笔记(四)

梯度运算:

是图像形态学中的一种操作,用于检测图像中的边缘。它通过结合膨胀(Dilation)和腐蚀(Erosion)操作来计算图像的梯度。

import cv2
import numpy as np

# 读取图像
image = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)

# 定义结构元素(内核)
kernel = np.ones((5, 5), np.uint8)  # 这里使用5x5的矩形内核

# 计算梯度
gradient_image = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel)

# 显示原始图像和梯度图像
cv2.imshow('Original Image', image)
cv2.imshow('Gradient Image', gradient_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

梯度运算的结果是通过对原始图像进行膨胀和腐蚀操作,然后计算两幅图像之间的差异得到的。这个过程可以检测出图像中的边缘区域。

梯度运算可以用于图像边缘检测,但由于它是通过膨胀和腐蚀操作得到的,因此对噪声比较敏感。因此,在使用梯度运算时,可能需要在先对图像进行一些预处理操作,如平滑处理或阈值处理,以获得更好的结果。

礼帽和黑帽:

礼貌(Top Hat)和黑帽(Black Hat)是形态学操作中的两种特殊运算,它们结合了原始图像和开运算或闭运算的结果,用于突出图像中的亮区域或暗区域。

礼貌运算(Top Hat)可以通过将原始图像与开运算结果之间的差异来获取。它突出显示了图像中比周围更亮的区域。礼貌运算常用于增强细小或弱亮区域的可见性,如光斑、细微细节或微弱边缘。礼帽 = 原始输入 - 开运算结果

黑帽运算(Black Hat)则是通过将闭运算结果与原始图像之间的差异来获取。它突出显示了图像中比周围更暗的区域。黑帽运算常用于增强细小或弱暗区域的可见性,如噪声、小坑洞或微弱边缘。黑帽 = 闭运算 - 原始输入

import cv2
import numpy as np

# 读取图像
image = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)

# 定义结构元素(内核)
kernel = np.ones((5, 5), np.uint8)  # 这里使用5x5的矩形内核

# 礼貌运算
tophat_image = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)

# 黑帽运算
blackhat_image = cv2.morphologyEx(image, cv2.MORPH_BLACKHAT, kernel)

# 显示原始图像、礼貌运算结果和黑帽运算结果
cv2.imshow('Original Image', image)
cv2.imshow('Top Hat Image', tophat_image)
cv2.imshow('Black Hat Image', blackhat_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

posted on 2023-06-20 17:36  云上u  阅读(16)  评论(0编辑  收藏  举报

导航