梯度运算:
是图像形态学中的一种操作,用于检测图像中的边缘。它通过结合膨胀(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()
标签:运算,黑帽,image,cv2,笔记,学习,opencv,图像,Hat From: https://www.cnblogs.com/hellou/p/17494284.html