【OpenCV-Python】:形态学操作之腐蚀与膨胀

✨博客主页:王乐予🎈
✨年轻人要:Living for the moment(活在当下)!💪
🏆推荐专栏:【图像处理】【千锤百炼Python】【深度学习】【排序算法

😺一、引言

形态学(morphology)通常表示生物学的一个分支,该分支主要研究动植物的形态核结构。我们使用同一词语表示数学形态学的内容,将数学形态学作为工具从图像中提取表达和描绘区域形状的有用图像分量。

形态学操作有多种:腐蚀、膨胀、开运算、闭运算、顶帽黑帽等。

今天主要讲形态学操作中的最基本操作:腐蚀与膨胀。

😺二、腐蚀(erosion)

🐶2.1 什么是腐蚀

简单来说,腐蚀就是把图像中的物体变小了!

腐蚀的工作过程如下图所示,A是一个集合,B是一个结构单元,我们使用B去对集合A进行腐蚀,腐蚀过程如C所示,在腐蚀过程中,结构单元必须全部位于集合A中才能进行腐蚀操作,最终得到的结果即为D所示。
在这里插入图片描述

🐶2.2 程序编写及结果可视化

下面程序使用腐蚀来对图像中的一些毛刺进行去除。

import cv2
import numpy as np


ori = cv2.imread(r"C:\Users\Lenovo\Desktop\original.jpg")   # 读取图像

kernel1 = np.ones((3, 3), np.uint8)     # 3个不同尺度的腐蚀单元
kernel2 = np.ones((5, 5), np.uint8)
kernel3 = np.ones((7, 7), np.uint8)

erosion1 = cv2.erode(ori, kernel1)		# 腐蚀函数
erosion2 = cv2.erode(ori, kernel2)
erosion3 = cv2.erode(ori, kernel3)

cv2.imshow("original", ori)
cv2.imshow("erosion1", erosion1)
cv2.imshow("erosion2", erosion2)
cv2.imshow("erosion3", erosion3)

cv2.imwrite(r'C:\Users\Lenovo\Desktop\erosion1.jpg', erosion1)
cv2.imwrite(r'C:\Users\Lenovo\Desktop\erosion2.jpg', erosion2)
cv2.imwrite(r'C:\Users\Lenovo\Desktop\erosion3.jpg', erosion3)

cv2.waitKey()

下面展示的是程序得到的结果图,由图可知,腐蚀能对图像中的毛刺进行去除,但这也与腐蚀单元的大小有关, 3 × 3 3×3 3×3大小的核去除效果不如 5 × 5 5×5 5×5 7 × 7 7×7 7×7,此外 7 × 7 7×7 7×7的核使得图像变得更加细小。
在这里插入图片描述

😺三、膨胀(dilation)

🐶3.1 什么是膨胀

简单来说,膨胀就是把图像中的物体变大了!

膨胀的工作过程如下图所示,A是一个集合,B是一个结构单元,我们使用B去对集合A进行膨胀,膨胀过程如C所示,在膨胀过程中,结构单元只要有一个位于集合A中就能进行膨胀操作,最终得到的结果即为D所示。

在这里插入图片描述

🐶3.2 程序编写及结果可视化

下面程序使用膨胀来对图像中的一些区域进行扩张。

import cv2
import numpy as np


ori = cv2.imread(r"C:\Users\Lenovo\Desktop\original.jpg")   # 读取图像

kernel1 = np.ones((3, 3), np.uint8)     # 3个不同尺度的腐蚀单元
kernel2 = np.ones((5, 5), np.uint8)
kernel3 = np.ones((9, 9), np.uint8)

dilation1 = cv2.dilate(ori, kernel1)    # 膨胀函数
dilation2 = cv2.dilate(ori, kernel2)
dilation3 = cv2.dilate(ori, kernel3)

cv2.imshow("original", ori)
cv2.imshow("dilation1", dilation1)
cv2.imshow("dilation2", dilation2)
cv2.imshow("dilation3", dilation3)

cv2.imwrite(r'C:\Users\Lenovo\Desktop\dilation1.jpg', dilation1)
cv2.imwrite(r'C:\Users\Lenovo\Desktop\dilation2.jpg', dilation2)
cv2.imwrite(r'C:\Users\Lenovo\Desktop\dilation3.jpg', dilation3)

cv2.waitKey()

下面展示的是程序得到的结果图,由图可知,膨胀能对图像中的物体进行扩张,但这也与膨胀单元的大小有关,越大的膨胀核使得图像扩张区域更大。

在这里插入图片描述

腐蚀膨胀图像处理中常用的操作,可以通过OpenCV库的函数来实现。在Python中,可以使用cv2.erode()函数进行腐蚀操作,使用cv2.dilate()函数进行膨胀操作腐蚀操作可以通过设置结构元素的形状和大小来实现。在引用的代码中,使用了一个大小为(5,5)的正方形结构元素kernel,通过调用cv2.erode()函数进行2次、3次和4次腐蚀操作,分别得到erosion_1、erosion_2和erosion_3。最后使用np.hstack()函数将这些腐蚀结果水平拼接在一起,并通过cv2.imshow()函数展示出来。 膨胀操作腐蚀操作类似,同样可以设置结构元素的形状和大小。在引用的代码中,通过cv2.dilate()函数进行膨胀操作,得到了dst。同样使用cv2.imshow()函数展示出来。 腐蚀还原是指在腐蚀操作之后再进行膨胀操作,以还原图像形状。在引用的代码中,先进行了3次腐蚀操作,得到erosion,然后再进行3次膨胀操作,得到dilate。最后通过cv2.imshow()函数展示出来。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [python-opencv形态学操作腐蚀膨胀)原理详解](https://blog.csdn.net/qq_38505858/article/details/126782368)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [OpenCV+python膨胀腐蚀](https://blog.csdn.net/qq_43660987/article/details/91347820)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王乐予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值