本篇文章主要讲解python调用opencv实现图像腐蚀和图像膨胀的算法,基础性知识希望对您有所帮助。
1.基础理论
2.图像腐蚀代码实现
3.图像膨胀代码实现
一. 基础知识
(注:该部分参考作者论文《一种改进的sobel算子及区域择优的身份证智能识别方法》)
图像的膨胀(dilation)和腐蚀(erosion)是两种基本的形态学运算,主要用来寻找图像中的极大区域和极小区域。其中膨胀类似于“领域扩张”,将图像中的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大;腐蚀类似于“领域被蚕食”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。
1.图像膨胀
膨胀的运算符是“⊕”,其定义如下:
该公式表示用b来对图像a进行膨胀处理,其中b是一个卷积模板或卷积核,其形状可以为正方形或圆形,通过模板b与图像a进行卷积计算,扫描图像中的每一个像素点,用模板元素与二值图像元素做“与”运算,如果都为0,那么目标像素点为0,否则为1。从而计算b覆盖区域的像素点最大值,并用该值替换参考点的像素值实现膨胀。下图是将左边的原始图像a膨胀处理为右边的效果图a⊕b。
2.图像腐蚀
腐蚀的运算符是“-”,其定义如下:
该公式表示图像a用卷积模板b来进行腐蚀处理,通过模板b与图像a进行卷积计算,得出b覆盖区域的像素点最小值,并用这个最小值来替代参考点的像素值。如图所示,将左边的原始图像a腐蚀处理为右边的效果图a-b。
处理结果如下图所示:
二. 图像腐蚀代码实现
1.基础理论
形态学转换主要针对的是二值图像(0或1)。图像腐蚀类似于“领域被蚕食”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。其主要包括两个输入对象:
(1)二值图像
(2)卷积核
卷积核是腐蚀中的关键数组,采用numpy库可以生成。卷积核的中心点逐个像素扫描原始图像,如下图所示:
被扫描到的原始图像中的像素点,只有当卷积核对应的元素值均为1时,其值才为1,否则其值修改为0。换句话说,遍历到的黄色点位置,其周围全部是白色,保留白色,否则变为黑色,图像腐蚀变小。
2.函数原型
图像腐蚀主要使用的函数为erode,其原型如下:
dst = cv2.erode(src, kernel, iterations)
参数dst表示处理的结果,src表示原图像,kernel表示卷积核,iterations表示迭代次数。下图表示5*5的卷积核,可以采用函数 np.ones((5,5), np.uint8) 构建。
注意:迭代次数默认是1,表示进行一次腐蚀,也可以根据需要进行多次迭代,进行多次腐蚀。
3.代码实现
完整代码如下所示:
输出结果如下图所示:
由图可见,干扰的细线被进行了清洗,但仍然有些轮廓,此时可设置迭代次数进行腐蚀。
erosion = cv2.erode(src, kernel,iterations=9)
输出结果如下图所示:
三. 图像膨胀代码实现
1.基础理论
图像膨胀是腐蚀操作的逆操作,类似于“领域扩张”,将图像中的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大,线条变粗了,主要用于去噪。
(1) 图像被腐蚀后,去除了噪声,但是会压缩图像。
(2) 对腐蚀过的图像,进行膨胀处理,可以去除噪声,并且保持原有形状。
它也包括两个输入对象:
(1)二值图像或原始图像
(2)卷积核
卷积核是腐蚀中的关键数组,采用numpy库可以生成。卷积核的中心点逐个像素扫描原始图像,如下图所示:
被扫描到的原始图像中的像素点,当卷积核对应的元素值只要有一个为1时,其值就为1,否则为0。
2.函数原型
图像膨胀主要使用的函数为dilate,其原型如下:
dst = cv2.dilate(src, kernel, iterations)
参数dst表示处理的结果,src表示原图像,kernel表示卷积核,iterations表示迭代次数。下图表示5*5的卷积核,可以采用函数 np.ones((5,5), np.uint8) 构建。
注意:迭代次数默认是1,表示进行一次膨胀,也可以根据需要进行多次迭代,进行多次膨胀。通常进行1次膨胀即可。
3.代码实现
完整代码如下所示:
输出结果如下所示:
图像去噪通常需要先腐蚀后膨胀,这又称为开运算,下篇文章将详细介绍。如下图所示:
erosion = cv2.erode(src, kernel)
result = cv2.dilate(erosion, kernel)
作者:eastmount
全国产化核心板!金其利将“自主可控”进行到底
2023数博会“数据要素流通与价值化”论坛在贵阳成功召开
SanDisk发布新款SSD及其报价
魅蓝S6拆解评测:吃鸡趁热 拆机更要趁热
组成数字系统的基础逻辑器件
Python调用OpenCV实现图像腐蚀案例
韩科学家研发智能皮肤:可感知温度
骁龙本是怎样解决工作的难题的
5G给云计算和边缘计算协同发展带来广阔空间
什么是IMU传感器 IMU传感器在自动驾驶汽车的关键应用
和硕也签署专利协议 微软横扫4大NB ODM厂
AM5SE-IS防孤岛保护装置在福建鑫旭日电力集团光伏发电项目中的应用
SpaceX载人飞船3月2日无人首飞成功
共享汽车被偷走,那无人驾驶汽车如何防盗?
纸是如何进行分类的,如何测量它的尺寸以及厚度
浅谈运放和功放的区别
比特币采矿最佳的国家有哪些
我们在 2023 WTM 女性开发者大会等你!
4年后大多数电脑都会用上SSD硬盘 平均容量达到700GB
在UVM中更轻松地进行内存管理