计算机视觉(一)——形态学操作:腐蚀、膨胀、开闭运算、形态学梯度、顶帽与黑帽

形态学:即数学形态学,图像处理过程中一个非常重要的研究方法。

形态学主要从图像内部提取分量信息,该分量信息通常对于表达和描绘图像的特征具有重要意义,通常是图像理解时所使用的最本质的形状特征

形态学处理在视觉检测、文字识别、医学图形处理、图像压缩编码领域都有非常重要的作用。

形态学操作主要包含: 腐蚀、膨胀、开运算、闭运算、形态学梯度运算、顶帽运算、黑帽运算。本文将对这些算法展开详细介绍。
(其中,膨胀和腐蚀是图像处理中最基本的形态学操作手段,常常被组合起来实现一些复杂的图像形态学操作)



一、腐蚀和膨胀

1.腐蚀

顾名思义,腐蚀操作是将物体的边缘加以腐蚀。具体的操作方法是拿一个宽m,高n的矩形作为模板,对图像中的每一个像素x做如下处理:像素x至于模板的中心,根据模版的大小,遍历所有被模板覆盖的其他像素,修改像素x的值为所有像素中最小的值。这样操作的结果是会将图像外围的突出点加以腐蚀。如下图的操作过程:
腐蚀原理
腐蚀的原理简单说就是,在背景为黑(0),前景为白(1)的图像中,核(1)与其覆盖的图像部分做“与”操作,如果全为1,则该像素点为1,否则为0;也就是1不容易得到,白色部分更少了,白色部分被腐蚀了。

2.膨胀

膨胀操作与腐蚀操作相反,是将图像的轮廓加以膨胀。操作方法与腐蚀操作类似,也是拿一个矩形模板,对图像的每个像素做遍历处理。不同之处在于修改像素的值不是所有像素中最小的值,而是最大的值。这样操作的结果会将图像外围的突出点连接并向外延伸。如下图的操作过程:
膨胀的原理
膨胀的原理简单说就是,在背景为黑(0),前景为白(1)的图像中,核(1)与其覆盖的图像部分做“与”操作,如果全为0,则该像素点为0,否则为1;也就是1容易得到,图像更多的地方变白了,白色部分膨胀了。

3.代码实现(python)

引入库

import cv2
import numpy as np
import matplotlib
import matplotlib.pyplot as plt #最后两个库为了画子图使用

腐蚀操作由cv2自带的函数erode实现,其输入参数为原始矩阵以及核。膨胀操作由cv2自带函数dilate实现,输入参数同理于erode。

对于新手,强烈建议自己写代码实现erode和dilate这两个函数,因为函数本身原理简单,并不难实现,而且效果明显,成就感强,能进一步激发计算机视觉的学习兴趣。

img = cv2.imread('psma.PNG') #读取图片

kernel = np.ones((25, 25), np.uint8)    # 矩形结构

erosion = cv2.erode(img, kernel)   # 腐蚀
dilation = cv2.dilate(img, kernel) # 膨胀

titles = ['Original', 'Erosion', 'Dilation']
images = [img, erosion, dilation]
plt.figure(dpi=200) #指定输出像素大小
for i in range(3):
    plt.subplot(1,3, i + 1)
    plt.imshow(images[i])
    plt.title
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

平什么阿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值