数字图像处理第九章----形态学图像处理

1、概念

形态学操作:数学形态学时基于集合论的图像处理方法,最早出现在生物学的形态与结构中,图像处理中的形态学操作可作用于图像增强、图像分割等场景。形态学操作的对象一般时二值图像和灰度图像。常见的形态学操作有腐蚀、膨胀、开操作、闭操作、顶帽、黑帽等。

2、腐蚀与膨胀

在腐蚀操作中,腐蚀的是图像的高亮部分
在二值图像中,腐蚀操作是结构元素与图像作“与运算”。在灰度图像中膨胀的或运算替换为最大值。
具体的操作方法是拿一个宽m,高n的矩形作为模板,将像素x至于模板的中心,根据模版的大小,遍历所有被模板覆盖的其他像素,修改像素x的值为所有像素中最小的值。
二值图像中膨胀是结构元素与图像做“或运算”,灰度图像中膨胀的或运算替换为最大值。

import matplotlib.pyplot as plt
import cv2
img = cv2.imread('D:/imdata/logo.tif',0)
#结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3))
#闭运算
eroded = cv2.erode(img,kernel)
#开运算
dilated = cv2.dilate(img,kernel)
plt.figure()
plt.subplot(131)
plt.imshow(img)
plt.subplot(132) 
plt.imshow(eroded)
plt.subplot(133)
plt.imshow(dilated)
plt.show()

在这里插入图片描述
单从字体的变化来看,经过腐蚀后,字体变得粗了,经过膨胀后,字体变细了。

3、开闭运算

● 开运算:先腐蚀后膨胀
作用:用来消除图像中细小对象,在纤细点处分离物体和平滑较大物体的边界而不明显改变其面积和形状,所有小到不能容纳结构元素的物体都会被移除。
● 闭运算:先膨胀后腐蚀
作用:用来填充目标内部的细小孔洞或裂隙,连接断开的邻近像素块,在不明显改变物体面积和形状的情况下平滑其边界,所有小到不能完整容纳结构元素的细小空洞或裂隙,都会被闭运算填充。

import matplotlib.pyplot as plt
import cv2
img = cv2.imread('D:/imdata/logo.tif',0)
#结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5, 5))
#闭运算
closed = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
#开运算
opened = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

plt.figure()
plt.subplot(131)
plt.imshow(img)
plt.subplot(132)
plt.imshow(closed)
plt.subplot(133)
plt.imshow(opened)
plt.show()

在这里插入图片描述
可以看出,闭运算是消去某些部分,而开运算是对其进行填充。

4、顶帽与黑帽运算

● 顶帽运算
方式:从原图中减去开运算后的图像
作用:突出一些比“原图轮廓周围的区域”更明亮的区域,用来分离比邻近点亮一些的斑块。图像的背景颜色不均匀时,顶帽运算可以减少二值化的图像的边缘丧失
● 黑帽运算
方式:闭运算后的图像减原图
作用:突出比“原图轮廓周围的区域”更暗的区域,用来分离比邻近点暗一些的斑块。图像的背景颜色不均匀时,黑帽变换可以用于凸显亮背景上的暗物体。二值图效果与顶帽变换相比,就是一个方向相反的阴影。

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('d:/imdata/logo.tif', 0)
kernel = np.ones((5, 5), np.uint8)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
plt.subplot(131)
plt.imshow(img)
plt.subplot(132)
plt.imshow(tophat)
plt.subplot(133)
plt.imshow(blackhat)
plt.show()

在这里插入图片描述
可以看出,经过顶帽与黑帽后的图像差别是非常大的,在某些部分可以说是完全相反。

5、边界提取与区域填充

● 边界提取
要提取一个二值图像中的物体的边界,只需要将物体内部的点删除掉即可。那么我们可以对图像进行扫描,若在某一个点的周围像素的值都与它相同,就可将该点删去,这样我们呢就可得到图像中物体的边界了。
● 区域填充
区域填充可视为边界提取的反过程, 它是在边界已知的情况下得到边界包围的整个区域的形态学技术。

6、细化

图像细化一般作为一种图像预处理技术出现,目的是为了提取图像的骨架,以便更容易地分析图像。细化的思想是从线条边缘开始一层一层地向里剥夺,直到线条剩下一个像素为止。图像细化可大大压缩图像数据量并可以保持其形状的基本结构不变,为文字识别中的特征提取提供了基础。
细化算法应满足以下条件:
1)将条形区域变成一条薄线
2)薄线应位原条形区域的中心
3)薄线应保持原图像的拓扑特性
细化分为串行细化和并行细化,串行细化是指一般检测满足细化条件的点,一边删除细化点;并行细化是指检测细化点的时候不进行删除只进行标记,在检测完整个图像后一次性的删除所有标记点

7、总结

本章我们学习了数字图像处理中的一些形态学操作,腐蚀、膨胀、开闭运算、细化等,做了一些实验,对这些操作的效果进行了观察。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值