赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 图像处理与人工智能

图像形态学
  1. 二值图像:
  2. 集合:
  3. 二值图像形态学运算:
  4. 二值图像的形态学应用:
  5. 灰度图像形态学处理:

形态学是针对二值图像依据数学形态学集合论方法发展起来的图像处理方法。形态学主要用于获取物体拓扑和结构信息,以得到物体的形态,是分析几何结构的数学方法。形态学运算以腐蚀和膨胀为基础,引出常用的7种数学形态运算,包括腐蚀、膨胀、开运算、闭运算、击中、细化和粗化。用这些运算及其组合进行图像形状和结构的分析及处理,包括图像分割、特征抽取、边界检测、图像滤波、图像增强和恢复等。

1. 二值图像:

二值图像是指图像上的每一个像素只有两种可能的取值或灰度等级只有两种,一般取值为0和255,或者0和1。常使用目标像素点的值为1,背景像素点的值为0。

1)二值图像中的一些特性:

⑴ 四连接与八连接:
把二值图像的当前像素标记为0,其周围的八个像素点分别标记为1~8,这8个像素称为当前像素的八近邻,而其中标记为1、3、5、7的四个像素是当前像素的四近邻。
二值图像的近邻
如果当前像素点的值为1,其四近邻像素中至少有一个像素点的值为1,即认为存在两点间的通路,称为四连接;同样,如果八近邻像素中至少有一个点的像素值为1,称为八连接。
将相互连接在一起的像素值全部为1的像素点的集合称为一个连通域,没有孔的连通域称为单连通,至少含有一个孔的连通域称为多连通。四近邻与八近邻情况的连通域是不同的。
⑵ 内部点与边界点:
在每一个连通域中,与背景相连接的点称为边界点,与背景不相连接的点称为内部点。在四连接定义下,内部点是在当前点的八近邻像素点中没有值为0的点;在八连接定义下,内部点是在当前点的四近邻像素点中没有值为0的点。
⑶ 连接数与交叉数:
连接数是指在当前点的近邻像素所构成的边界轨迹上移动时,通过的像素值为1的点的个数。连接数为0,表明像素为孤立点或内部点;连接数为1,表明像素为端点或边界点;连接数为2,表明像素为连接点;连接数为3,表明像素为分支点;连接数为4,表明像素为交叉点。
交叉数是表征当前像素点的八个近邻像素中,从像素值为1的点到像素值为0的点的变化次数。
⑷ 欧拉数:
欧拉数是用以表征连通域属性的值,定义为二值图像中连通域的个数减去孔的个数。
四连接下欧拉数的计算公式为:
四连接下欧拉数的计算公式
八连接下欧拉数的计算公式为:
八连接下欧拉数的计算公式
其中,N1为像素值为1的像素个数;N2为水平或垂直11排列关系的个数;N3为1111成矩形排列的关系个数;N4为11成对角排列关系的个数;N5为111成三角排列关系的个数。
⑸ 链码:
链码是对线宽为一个像素的细线的轨迹进行描述的编码,是对其坐标序列进行方向编码,采用链码可以对细线的走向进行清晰的描述和分析。
在计算细线的链码时,从选定的某个端点出发,按照逆时针方向搜索下一个细线上的点,并根据与前一个点的方向位置,对这一点进行编码,直到终点。方向码的定义为:
链码的方向码定义

2)二值图像的几何特征测量:

⑴ 面积:
在二值图像中,面积用来度量连通域的大小,定义为连通域像素的总数。
⑵ 周长:
周长是指包围某个连通域的边界轮廓线的长度。周长的计算公式为:
二值图像的周长
其中,Ne为边界上方向码为偶数的像素个数,No为边界上方向码为奇数的像素个数。
⑶ 质心:
二值图像中,借用质心来描述连通域的几何中心,计算公式为:
二值图像的质心
其中,S表示连通域,Ns为连通域中像素个数,(xm,ym)为质心点的坐标。
⑷ 圆形度:
圆形度是对与圆相似程度的度量,定义为:
二值图像的圆形度
其中,As为连通域S的面积,Ls为连通域的周长。
对于圆形目标,圆形度取最大值,目标形状越复杂圆形度值越小,因此圆形度可作为目标形状复杂度或者粗糙程序的一种度量。为了进行判断处理,可以用相同分辨率圆形连通域的圆形度为标准,对其他连通域的圆形度进行标准化处理,也就是除以圆形连通域的圆形度。
⑸ 矩形度:
矩形度用来描述连通域与矩形的相似程度,计算公式为:
二值图像的矩形度
其中,As为连通域S的面积,AR为包围该连通域的最小矩形面积。
对于矩形目标,矩形度取最大值1,而对细长而弯曲的目标,矩形度的值很小。
⑹ 长宽比:
长宽比是将细长目标与近似矩形或圆形目标进行区分时采用的形状度量,计算公式:
二值图像的长宽比
其中,WR为包围连通域的最小矩形的宽度,LR为包围该连通域的最小矩形的长度。

2. 集合:

在数字图像处理的数学形态学运算中,把一幅图像称为一个集合。对于二值图像,习惯上认为取值为1的点对应景物中心,而取值为0的点构成背景。
⑴两个图像集合A和B的公共点组成的集合称为两个集合的交集:交集
⑵两个集合A和B的公共元素组成的集合称为两个集合的并集:并集
⑶对一幅图像A,在图像A区域以外的所有点构成的集合称为A的补集:补集
⑷B包含于A,B中所有元素都在A的区域内:包含于
⑸B击中A,如果集合A和B的并集不为空集称为B击中A:击中
⑹B击不中A,如果集合A和B的并集为空集称为B击不中A:击不中

3. 二值图像形态学运算:

二值图像中可以对目标图形进行形态分析,形态处理中最常用的是腐蚀与膨胀。腐蚀与膨胀是两个互为对偶的运算,腐蚀的作用是将目标图形收缩,而膨胀处理的作用是将目标图形扩大。 为了进行腐蚀和膨胀,要使用结构元素。所谓结构元素,是指具有某种确定形状的基本结构元素,如一定大小的矩形、圆、菱形等。

1)图像腐蚀:

腐蚀是一种消除边界点,使边界向内部收缩的过程,可以用来消除小且无意义的目标。如果两目标物间有细小的连通,可以选取足够大的结构元素,将细小连通腐蚀掉。图像X被结构元素S腐蚀的运算表示为:
二值图像的腐蚀
其含义是,当结构元素S的原点移动到(x,y)位置,如果S完全包含在X中,则在腐蚀后的图像上该点为1,否则为0。
腐蚀的具体步骤:
  ·  扫描原图,找到第一个像素为1的点
  ·  将预先设定好形状以及原点位置的结构元素的原点移动到该点
  ·  判断结构元素所覆盖范围内的像素值是否全部为1,如果是,则腐蚀后图像的相同位置上的像素值为1;如果至少有一个像素的值为0,则腐蚀后图像的相同位置上的像素值置为0。
  ·  对原图中所有像素值为1的点重复上述操作
腐蚀可以把小于结构元素的物体去除,选取不同大小的物体就可以去除不同大小的物体。如两个物体之间有细小的连通,通过腐蚀可将两个物体分开。腐蚀实际上是图像的外围去掉,同时保留图像内部的部分,在去除小颗粒噪声以及消除目标物之间的粘连非常有效。
操作时开辟一块内存缓冲区,并初始化为255;要用到3x3结构元素,定义数组B[9]。不处理最左边、最右边、最上边、最下边四边的像素,从第2行第2列开始,检查像素点,利用结构元素数组判断该像素点的前一点、后一点、上一点和下一点中是否有背景点,有则将检查的像素点的灰度值设255,否则保持不变。可以采用不同形状的结构元素来进行腐蚀,处理的方法都是检查B中0所对应的像素点是否全部为物体(即为0),是则保留该点,否则置为255。

2)图像膨胀:

膨胀是将目标区域接触的背景点合并到目标物中,使目标边界向外扩张,可以用来填补目标区域中存在的某些空洞,以及消除包含在目标区域中的小颗粒噪声。
图像X被结构元素S膨胀的运算表示为:
二值图像的膨胀
其含义是,当结构元素S的原点移动到(x,y)位置,如果S中包含至少一个像素值为1的点,则在膨胀后的图像上该点为1,否则为0。
膨胀的具体步骤:
  ·  扫描原图,找到第一个像素为1的点
  ·  将预先设定好形状以及原点位置的结构元素的原点移动到该点
  ·  判断结构元素所覆盖范围内的像素值是否存在至少一个为1的点,如果存在,则膨胀后图像的相同位置上的像素值为1;如果覆盖范围内所有像素的值为0,则膨胀后图像的相同位置上的像素值置为0。
  ·  对原图中所有像素值为1的点重复上述操作
如果两个物体之间的距离比较近,膨胀运算可能会把两个物体连通到一起,实际上把图像的外围扩充了一圈,对填补图像分割后物体中的空洞很有用。膨胀通常用以连接间断的线,或将因二值化处理使本应连在一起的区域被间断开的区域重新连接。
操作时开辟一块内存缓冲区,并初始化为255;要用到3x3结构元素,定义数组B[9]。不处理最左边、最右边、最上边、最下边四边的像素,从第2行第2列开始,检查像素点,利用结构元素数组判断该像素点的前一点、后一点、上一点和下一点中是否有相交点,有则将检查的像素点的灰度值设为0,否则保持不变。可以采用不同形状的结构元素来进行膨胀,处理的方法都是检查B中0所对应的像素点是否与物体相交,是则保留该点,否则置为255。

3)开运算:

使用同一个结构元素对目标图像先进行腐蚀运算,再进行膨胀运算,称为开运算。开运算定义为:
二值图像的开运算
开运算通常用来消除小的物体,在纤细处分离物体,平滑较大物体的边界,同时并不明显改变其面积。可用来去除孤立小点、毛刺和小的连通区域,去除颗粒噪声。
当使用圆盘结构元素时,开运算对边界进行了平滑,去掉凸角;凸角点周围,图像的集合结构无法容纳给定圆盘,从而使凸角点被删除。当使用线段结构元素,沿线段宽度方向较大的部分才能够保存下来,而较小的凸部分将被删除。

4)闭运算:

使用同一个机构元素对目标图像先进行膨胀运算,再进行腐蚀运算,称为闭运算。闭运算定义为:
二值图像的闭运算
闭运算用来填充目标内的细小空洞,连接断开的邻近目标,平滑其边界,同时不明显改变目标图像的面积。

4. 二值图像的形态学应用:

1)击中与击不中变换:

结构元素由两个不想交的部分B1和B2组成,用结构元素B1对原图像进行腐蚀操作,对原图像求补,用结构元素B2对原图像的补进行腐蚀操作,求两个腐蚀结果的交集,即为击中与击不中变换结果。

2)细化:

对图像细化的过程实际上是求一图像骨架的过程,所以也称骨架提取。骨架是二维二值目标的重要拓扑描述,是图像中央的骨骼部分,描述图像几何及拓扑性质的重要特征。
细化的目的是在将图像的骨架提取出来的同时保持图像细小部分的连通性,在文字识别、地质识别、工业零件识别或图像理解中,先对被处理的图像进行细化有助于突出形状特点和减少冗余信息量。
二值图像的形态骨架可以通过选定合适的结构元素,对图像进行连续腐蚀和开运算来求得。先用结构元素腐蚀原图像;设置循环标志为0,如果腐蚀结果中有一个图像点为255,则将循环标志置为1;用结构元素对腐蚀后的图像进行开运算,并求腐蚀运算与开运算的差,这个差与前面得到的骨架求并集,以获得本次循环求得的骨架;重复腐蚀、设循环标志、开运算、求差、求并集的过程,直到将原图像腐蚀成空集为止。
细化的数学表达式为:
细化
其中,↑表示击中击不中变换;B表示用来进行细化运算的结构元素,结构元素内的每一个元素取值为0或1,可以组成任何一种形状的图形,图形中有一个中心点;X表示原图像经过二值化后的像素集合。公式的含义是用B来细化X得到集合S,S是X的全部像素点除去击中击不中变换结果后的集合。
判断一个像素点在细化过程中是否可以被删除,应该和该点周围8邻域内的其他8各点综合判断。设置一个5x5邻域S模板,模板中各个位置上的取值取决于模板对应图像中不同像素的位置。如果S模板某一个位置上所对应的像素值为白,模板上该位置设为0,否则设为1。
可以删除一个点的4个条件为:
2≤N(s[2][2])≤6,T(s[2][2])=1,s[1][2]*s[2][1]*s[2][3]=0同时T(s[1][2])!=1,s[1][2]*s[2][1]*s[3][2]=0同时T(s[2][1])!=1。
其中,N(s[2][2])表示以s[2][2]为中心的3x3邻域内目标像素(即黑点)的个数;T(s[2][2])表示以s[2][2]为中心点的3x3邻域组成的序列s[1][2] s[1][1] s[2][1] s[3][1] s[3][2] s[3][3] s[2][3] s[1][3] s[1][2]中0->1的变化次数;T(s[1][2])表示以s[1][2]为中心的3x3邻域组成的序列s[0][2] s[0][1] s[1][1] s[2][1] s[2][2] s[2][3] s[1][3] s[0][3] s[0][2]中0->1的变化次数;T(s[2][1])表示以s[2][1]为中心的3x3邻域组成的序列s[1][1] s[1][0] s[2][0] s[3][0] s[3][1] s[3][2] s[2][2] s[1][2] s[1][1]中0->1的变化次数。
同时满足以上4个条件,则删除该点,否则保留该点,重复判断像素点直至没有点可以删除。操作时先开辟内存缓冲区并初始化为255,如果当前像素为白就是背景则跳过。如果当前像素为黑是物体,定义一个5x5结构元素。从第3行第3列开始判断,将模板中心覆盖在欲判断的像素点上,如果模板所覆盖的位置下,像素值为白,是背景,同样的位置处置0,否则是目标置1。依次判断模板点是否同时满足4个判断条件,是则删除该点,否则判断下一个像素点,直至所有的像素点处理完一遍,循环执行直至没有点可以删除为止。

3)粗化:

粗化与细化相对应,也可以利用击中击不中变换来表示。粗化的数学表达式为:
粗化
从公式中看出,粗化实际上是击中击不中变换结果与原始图像的并集。操作时,对图像的像素点的灰度值取补,调用细化处理函数对取补后的图像进行处理。

4)边界提取与跟踪:

5)区域填充:

6)连通分量提取:

7)像素化算法:

8)凸壳:

9)贴标签:

贴标签是对二值图像的每一个不同的连通域进行不同的编号,用以区分不同的连通域。在二值图像中,不同的对象被不同的整数值来标记,以方便辨识。通常,设置一个与原图像大小相同的标签矩阵,用以描述二值图像不同连通区域的划分结果。
贴标签方法包括了两个关键步骤,首先从上到下、从左到右顺序扫描所有像素值为1的像素,并判断是否与已贴过标签的像素属于同一个连通域,如果是就贴同一个标签,否则暂时判定为不同的连通域而贴新标签;然后对已贴好的标签进行校正,对在下方连接在一起的已经贴为不同标签的像素归并为同一个标签,并对整体的标签号进行调整。

5. 灰度图像形态学处理:

灰度的形态学处理是将形态学作用于图像的灰阶信号,包括灰度腐蚀、灰度膨胀、灰度开运算、灰度闭运算。
灰度形态学处理的要点是设计一个结构元素,通过结构元素与待处理图像之间的相互作用,形成相应形态学滤波器,滤波的效果很大程度上取决于结构元素。
结构元素包括模板形状与模板参数两部分,模板形状可以按照问题的需要设计成圆形、矩形,或者任意所需要的形状,可以以N×N矩形模板示例。结构元素的模板参数即为模板上所设置的权值。
灰度形态学处理中,分别使用f(x,y)和b(x,y)表示输入图像和结构元素。

1)灰度腐蚀:

灰度腐蚀运算可以看成是二维卷积,只不过是用求最小值运算代替相关运算,用减法运算代替相关运算的乘积,结构元素可以看成卷积运算的窗口。
灰度腐蚀的计算是逐点进行的,求某点的腐蚀运算结构,就是计算该点局部范围内各点与结构元素在对应点的灰度值之差,并选取其中的最小值为该点的腐蚀结果。经腐蚀运算后,图像边缘部分具有较大灰度值的点的灰度会降低,因此边缘会向灰度值高的区域内部收缩。
设待处理图像为f,结构元素为b,灰度图像腐蚀的定义为:
灰度腐蚀

2)灰度膨胀:

灰度膨胀运算也可以看作是一种二维卷积,是用求最大值运算代替相关运算,用加法运算代替相关运算的乘积。
灰度膨胀运算是逐点进行的,求某点的膨胀运算,就是计算该点局部范围内各点与结构元素中对应点的灰度值之和,并选取其中的最大值作为该点的膨胀结果。经膨胀运算后,图像边缘部分得到延伸。
设待处理图像为f,结构元素为b,灰度图像膨胀的定义为:
灰度膨胀

3)灰度开运算:

灰度开运算是图像先经灰度腐蚀,然后进行灰度膨胀。
设待处理图像为f,结构元素为b,灰度图像开运算的定义为:
灰度开运算

4)灰度闭运算:

灰度闭运算是图像先经灰度膨胀,然后进行灰度腐蚀。
设待处理图像为f,结构元素为b,灰度图像闭运算的定义为:
灰度闭运算
对于纹理简单的平坦区,灰度闭运算的去噪效果优于SNN滤波效果。对于QR码定位图形检测中,采用结构5×5的正方形结构元素,对图像分别进行开运算和闭运算处理,之后将二者信息进行融合,可以有效去除打印着墨不均匀导致的干扰。

5)灰度形态学梯度:

对原图像进行灰度膨胀及灰度腐蚀,求灰度膨胀与灰度腐蚀的结果差,结果即为灰度图像的形态学梯度。
形态学梯度在处理过程中不会加强或放大噪声,当使用对称结构元素求图像形态学梯度可以使得边缘受方向的影响变小,因此具有实用性。

6)顶帽变换:

也称Top-Hat变换,定义为图像与其开运算之差,用于解决非均匀光照问题。
用结构元素对原图像进行灰度开运算,求原图像与开运算结果的差,结果就是灰度图像的Top-Hat变换结果。Top-Hat变换的结果是非负的,可以检测出图像中较为尖锐的波峰。实际使用中,常用来从较暗(亮)的且平缓的背景中提取较亮(暗)的细节,对灰度图像进行物体分割,检测图像中的波峰和波谷及细长图像结构等。

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659