Python图像处理中二值图像腐蚀该怎么处理

  介绍

这期内容当中小编将会给大家带来有关Python图像处理中二值图像腐蚀该怎么处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1引言

形态学运算是针对二值图像依据数学形态学集合论方法发展起来的图像处理的方法。其主要内容是设计一整套的变换概念和算法,用以描述图像的基本特征。

在图像处理中,形态学的应用主要有以下两点:利用形态学的基本运算,对图像进行观察和处理,从而达到改善图像质量的目的,描述和定义图像的各种几何参数和特征等。

2腐蚀概念

数学形态学的运算以腐蚀和膨胀这两种基本运算为基础,腐蚀操作在数学形态学上的作用是消除物体的边界点,使边界向内部收缩的过程,主要用于将小于物体结构元素的物体去除。例如两个物体之间有细小的连通,可以通过腐蚀操作将两个物体分开。腐蚀的数学表达式为:

 Python图像处理中二值图像腐蚀该怎么处理

上述公式中:

<李>

S表示腐蚀后的二值图像

<李>

B表示用来进行腐蚀操作的结构元素,结构元素内每一个元素取值为0或1,它可以组成任何一种形状的图形;

<李>

X表示原图经过二值化后的像素集合。

此公式的含义是用B来腐蚀X得到的集合年代,年代是由B完全包括在X中时B的当前位置的集合。

3举个栗子

只看上面公式,是不是有种云里雾里的感觉,那我们不妨来举个栗子说明一下,请看下图:

 Python图像处理中二值图像腐蚀该怎么处理

<李>

左侧一个为被处理的二值图像,白色部分表示背景,灰色部分表示目标X;

<李>

中间为结构元素B,黑色点为结构元素的中心点,灰色的方格表示邻域;

<李>

右侧c中黑色的部分表示腐蚀后的结果,灰色的部分表示目标图像被腐蚀掉的部分。

我们可以这样理解上述腐蚀过程,即用B的中心点和X上的点一个一个地对比,如果B上所有对应的点都在X的范围内,则该点保留,否则将该点去除;

通俗的讲就是将结构元素在图像中移动,如果结构元素完全包含在目标图像X中,则保留目标图像中对应于中心点的像素点,否则删除该像素点。

4水平腐蚀

4.1理论基础

图像腐蚀操作按照所采用的结构元素的类型,可以分为以下三类:水平腐蚀垂直腐蚀以及全方向腐蚀。其中水平腐蚀所采用的结构元素为(0,0,0),其具体实现步骤如下:

<李>

根据原始图像的宽和高,初始化结果图为全白图(背景为白色)

<李>

由于我们采用的是横向腐蚀操作,结构元素为1 x3,因此我们不处理最左边和最右边的两列像素,从第2行2列第开始,逐个遍历每行元素,判断该元素的前一个像素和后一个像素是否含有背景点,有则说明在结果图上该点需要被腐蚀掉,将该点像素点的灰度值赋值为255,否则保持不变

<李>

循环上述步骤,直至处理完原图所有像素点。

4.2代码实现

使用python实现按上述过程,核心代码如下:

def  horizon_erode (bin_img):   ,,,out_img =, np.zeros (=bin_img.shape,形状,dtype=np.uint8), +, 255   ,,,h =, bin_img.shape [0]   ,,,w =, bin_img.shape [1]   ,,,for 小姐:拷贝范围(h):   ,,,,,,,for  j 拷贝范围(w1):   ,,,,,,,,,,,out_img[我][j]=0   ,,,,,,,,,,,for  k 拷贝范围(3):   ,,,,,,,,,,,,,,,if  bin_img[我][j + k - 1],祝辞,127:   ,,,,,,,,,,,,,,,,,,,out_img[我][j]=255   ,,,return  out_img

运行结果如下:

 Python图像处理中二值图像腐蚀该怎么处理

上图中,从左往右依次为彩色原图,二值化后的结果图,以及采用水平腐蚀后的效果图,可以看到腐蚀后的图相比二值图外围在纵向上被腐蚀掉一圈。

5垂直腐蚀

5.1理论基础

垂直腐蚀和水平腐蚀原理类似,只是所采用的结构元素不同,垂直腐蚀所使用的结构元素为(0,0,0)T (0, 0, 0) ^ T(0, 0, 0),其详细的实现步骤如下:

Python图像处理中二值图像腐蚀该怎么处理