opencv 图像处理之膨胀和腐蚀
发布网友
发布时间:2024-10-12 22:27
我来回答
共1个回答
热心网友
时间:2024-11-05 17:53
在OpenCV中,图像处理的膨胀和腐蚀操作就像形象的“增肥”和“减肥”。膨胀主要用于填补图像中的缺陷,通过指定的卷积核(如3x3全为1的矩阵),检查像素点周围3x3区域,只要有白色部分存在,该点就会被标记为白色。例如,`cv2.dilate(img,kernel,1)` 的膨胀操作会重复执行一次,根据kernel大小调整膨胀范围。
腐蚀则相反,用于消除图像边缘的毛刺,取卷积核内最小值。例如,`erosion = cv2.erode(img,kernel,iterations=1)`,kernel大小变化会影响腐蚀程度。为了减少信息损失,可以结合膨胀和腐蚀,形成开运算(先腐蚀后膨胀)和闭运算(先膨胀后腐蚀)。
开运算有助于去除毛刺,而闭运算则用于填补缺陷。边缘信息可以通过计算膨胀图像与腐蚀图像的差来获取,`gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT,kernel)`。高帽和黑帽操作则用于分别突出图像中的毛刺(`tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)`)和缺陷(`black_hat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)`),这两种方法有助于更深入地分析图像特征。