【opencv-python】形态学转换—腐蚀

形态学操作主要包括腐蚀、膨胀、开运算、闭运算等,在opencv-python中,有相关函数可以满足要求,如cv2.erode()cv2.dilate()cv2.morphologyEx()等。形态学操作是根据图像形状进行的简单操作,一般情况下对二值化图像进行的操作。需要输入两个参数,一个是原始图像,第二个被称为结构化元素或核,它是用来决定操作的性质的。两个基本的形态学操作是腐蚀和膨胀,它们的变体构成了开运算、闭运算、梯度等,以下图为例逐一介绍。
【opencv-python】形态学转换—腐蚀
首先对这张图进行腐蚀,代码如下:

import cv2
import numpy as np

img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)

运行效果为:
【opencv-python】形态学转换—腐蚀
可见腐蚀效果比较明显。查看函数说明,如下图所示:

【opencv-python】形态学转换—腐蚀其原理为:**找kernel尺寸中图片区域中灰度值最小值,并原图片的中心值替换。**我们对其原理进行分析,人为构造一个小维度数组,以此代表一张图像,代码如下所示:

img = np.uint8([[1,2,3,4,5], 
				[5,4,3,2,1],
				[2,4,6,8,10],
				[10,8,6,4,2], 
				[5,10,15,10,5]])
kernel = np.ones((3,3),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)
print('img:', img)
print('erosion:', erosion)

运行结果为:
【opencv-python】形态学转换—腐蚀
将原图片图示化,如下图所示:
【opencv-python】形态学转换—腐蚀可见,除了边缘以外的中部像素灰度值,均为以本体为中心3✖️3区域内的最小灰度值。而目标图像边缘的像素值,亦为kernel框大小范围内的最小像素值,只是可选择像素由于边缘效果减少了。


感谢支持,欢迎关注,丰富技术/学术内容持续更新!

opencv-python快速入门视频教程


【opencv-python】形态学转换—腐蚀

上一篇:RK 3586 移植RTL8723DU驱动流程记录


下一篇:自回归模型 - PixelCNN