本文共 1397 字,大约阅读时间需要 4 分钟。
在图像处理领域,OpenCV提供了丰富的形态学操作(Morphology),这些操作可以用来修改图像的形状和结构。本文将详细介绍几种常见的形态学操作,并提供实际代码示例。
腐蚀是形态学操作中最基本的操作之一。其原理是:图像中的每一个像素(通常为1或0)只有在内核下的所有像素都是1时,才会被认为是1,否则就会变为0。内核是一个小的方阵(如3x3或5x5),用来定义哪些像素会被保留或丢弃。
import cv2 as cvimport numpy as npimg = cv.imread('j.png', 0) # 读取图像,灰度模式kernel = np.ones((5, 5), np.uint8) # 定义5x5的单位化内核erosion = cv.erode(img, kernel, iterations=1) # 应用腐蚀操作,迭代次数为1 在图片中,所有位于边界的像素都会因为内核无法覆盖而被置为0,边缘区域会被消耗掉,形成类似“洞”的效果。
扩张与腐蚀的作用相反。扩张会增加图像的边缘,类似于膨胀边缘。
dilation = cv.dilate(img, kernel, iterations=1)
边缘区域的像素会被扩展,形成类似“脊带”的效果。
开放是腐蚀的一个变种,通常被称为另一种形式的腐蚀。开放操作会去除图像中较小的凹陷,但保留较大的凹陷。
opening = cv.morphologyEx(img, cv.MORPH_OPEN, kernel)
图像中的小孔洞会被扩大,边缘的凸起部分被保留。
闭合与开放的作用相反。闭合会填补图像中的小孔洞,但会保留较大的凹陷。
closing = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)
图像中的小孔洞会被填补,边缘的凹陷会被保留。
形态学梯度运算会计算图像的边界变化率,通常用于检测边界的细节。
gradient = cv.morphologyEx(img, cv.MORPH_GRADIENT, kernel)
图像的边缘会被强调,显示出图像的细节边缘。
高帽是一种特殊的形态学操作,用于提取图像中的“帽子”部分,即图像中较高的区域。
tophat = cv.morphologyEx(img, cv.MORPH_TOPHAT, kernel)
图像中的高区域会被保留,低区域会被消除。
黑帽是高帽的一个变种,用于提取图像中的“帽子”部分,但保留的是图像中较低的区域。
blackhat = cv.morphologyEx(img, cv.MORPH_BLACKHAT, kernel)
图像中的低区域会被保留,高区域会被消除。
通过以上形态学操作,可以对图像进行丰富的风格变换和结构修改。这些操作在图像处理、模式识别和特效生成等领域都有广泛应用。
转载地址:http://ggefk.baihongyu.com/