图像预处理方法

图像预处理

膨胀腐蚀概述

⚫ 膨胀、腐蚀属于形态学的操作, 简单来说就是基于形状的一系列图像处理操作

⚫ 膨胀腐蚀是基于高亮部分(白色)操作的, 膨胀是対高亮部分进行膨胀, 类似“领域扩张”, 腐蚀是高亮部分被腐蚀, 类似“领域被蚕食”
⚫ 膨胀腐蚀的应用和功能:

消除噪声

分割独立元素或连接相邻元素

寻找图像中的明显极大值、极小值区域

求图像的梯度

⚫ 其他相关:

开运算、闭运算

顶帽、黒帽形态学梯度

1)膨胀—cv2.dilate()

膨胀就是求局部最大值的操作, 从数学角度上来讲, 膨胀或腐蚀就是将图像(或区域)A与核B进行卷积。

核可以是任意大小和形状, 它有一个独立定义的参考点(锚点), 多数情况下, 核是一个小的中间带参考点和实心正方形或者圆盘, 可以看做是一个模板或掩码。

膨胀是求局部最大值的操做, 核B与图形卷积, 即核B覆盖的区域的像素点的最大值, 并把这个最大值复制给参考点指定的像素, 这样就会使图像中的高亮区域逐渐增长, 如下图所示:
图像预处理方法_第1张图片
函数原型:
在这里插入图片描述

⚫src: 输入原图像(建议为二值图)
⚫dst: 输出图像要求和src一样的尺寸和类型
⚫kernel: 膨胀操作的核, 当为NULL时, 表示使用参考点位于中心的3x3的核
一般使用cv2.getStructuringElement获得指定形状和尺寸的结构元素(核)
在这里插入图片描述
可选以下三种形状: 矩形、交叉形、椭圆形
ksize和anchor分别表示内核尺寸和锚点位置
⚫anchor: 锚的位置, 默认值Point(-1,-1), 表示位于中心
⚫interations: 膨胀的次数
⚫borderType: 边界模式, 一般采用默认值
⚫borderValue: 边界值, 一般采用默认值

exl:
k1=np.ones ( (5,5), np .uint8)
dilation = cv2.dilate (img, k1, iterations=1)

图像预处理方法_第2张图片

2)腐蚀—cv2.erode()

腐蚀和膨胀相反, 是取局部最小值, 高亮区域逐渐减小, 如下图所示:
图像预处理方法_第3张图片
函数原型:

在这里插入图片描述

exl:
k1=np.ones ((5,5), np .uint8)
erosion = cv2.erode(img, k1, iterations=1)

图像预处理方法_第4张图片

形态学其他操作:

开运算、闭运算、顶帽、黒帽、形态学梯度

基于膨胀腐蚀基础, 利用cv2.morphologyEx()函数进行操作
核心函数:
在这里插入图片描述
⚫src: 输入原图像
⚫dst: 输出图像要求和src一样的尺寸和类型
⚫op: 表示形态学运算的类型, 可以取如下值:
图像预处理方法_第5张图片
CV2 .MORPH DILATE
CV2 .MORPH
OPEN
CV2 .MORPH_ TOPHAT
CV2 .MORPH_ ERODE
CV2.MORPH CLOSE
CV2 .MORPH
BLACKHAT
CV2.MORPH_ GRADIENT
⚫kernel: 形态学运算内核, 若为NULL, 表示使用参考点位于中心的3x3内核, 一般使用getStruecuringElement函数获得
⚫anchor: 锚的位置, 默认值Point(-1,-1), 表示位于中心
⚫interations: 迭代使用函数的次数, 默认为1
⚫borderType: 边界模式, 一般采用默认值
⚫borderValue: 边界值, 一般采用默认值

1)开运算(open)

开运算是先腐蚀后膨胀的过程, 开运算可以用来消除小物体, 在纤细点处分离物体, 并在平滑较大物体边界的同时不明显的改变其面积。
在这里插入图片描述
图像预处理方法_第6张图片

2)闭运算(close)

闭运算是先膨胀后腐蚀的过程, 闭运算可以用来消除小型黑洞(黑色区域)。
在这里插入图片描述
图像预处理方法_第7张图片

3)形态学梯度(Gradient)

形态学梯度是膨胀图与腐蚀图之差, 对二值图可以将团块(blob)边缘凸显出来, 可以用其来保留边缘轮廓。

在这里插入图片描述
图像预处理方法_第8张图片

4)顶帽(Top Hat)

顶帽运算也被称为”礼帽”, 是开运算结果和原图像做差的结果, 可以用来分离比邻近点亮一些的斑块。
在这里插入图片描述
图像预处理方法_第9张图片

5)黒帽(Black Hat)

黑帽运算是原图像和开运算做差的结果, 可以用来分离比邻近点暗一些的斑块。
在这里插入图片描述
图像预处理方法_第10张图片

你可能感兴趣的:(Python基础,计算机视觉,深度学习,人工智能)