python图像腐蚀处理_Python图像处理:图像腐蚀与图像膨胀

本文介绍了Python中图像处理的两种基本形态学运算——图像腐蚀和膨胀。腐蚀用于减小图像高亮区域,膨胀则扩张这些区域。文章详细解释了运算符和原理,并提供了使用OpenCV库进行图像腐蚀和膨胀的代码示例,展示了如何通过多次迭代优化处理效果。
摘要由CSDN通过智能技术生成

图像的膨胀(

Dilation

)和腐蚀(

Erosion

)是两种基本的形态学运算,主要用来寻找图像中的极大区域和极小区域。其中膨胀类似于

领域扩张

,将图像中的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大;腐蚀类似于

领域被蚕食

,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。

1.

图像膨胀

膨胀的运算符是

“⊕”,其定义如下:

该公式表示用

B

来对图像

A

进行膨胀处理,其中

B

是一个卷积模板或卷积核,其形状可以为正方形或圆形,通过模板

B

与图像

A

进行卷积计算,扫描图像中的每一个像素点,用模板元素与二值图像元素做

运算,如果都为

,那么目标像素点为

,否则为

1

。从而计算

B

覆盖区域的像素点最大值,并用该值替换参考点的像素值实现膨胀。下图是将左边的原始图像

A

膨胀处理为右边的效果图

A⊕B

2.图像腐蚀

腐蚀的运算符是

“-”,其定义如下:

该公式表示图像

A

用卷积模板

B

来进行腐蚀处理,通过模板

B

与图像

A

进行卷积计算,得出

B

覆盖区域的像素点最小值,并用这个最小值来替代参考点的像素值。如图所示,将左边的原始图像

A

腐蚀处理为右边的效果图

A-B

处理结果如下图所示:

二.

图像腐蚀代码实现

1.

基础理论

形态学转换主要针对的是二值图像(

1

)。图像腐蚀类似于“领域被蚕食”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。其主要包括两个输入对象:

(1)

二值图像

(2)

卷积核

卷积核是腐蚀中的关键数组,采用

numpy

库可以生成。卷积核的中心点逐个像素扫描原始图像,如下图所示:

被扫描到的原始图像中的像素点,只有当卷积核对应的元素值均为

1

时,其值才为

1

,否则其值修改为

。换句话说,遍历到的黄色点位置,其周围全部是白色,保留白色,否则变为黑色,图像腐蚀变小。

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

,否则为

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值