首页 理论教育 如何进行图像细化?

如何进行图像细化?

时间:2023-06-23 理论教育 版权反馈
【摘要】:(一)理论基础所谓细化,就是从二值图像中提取线宽为1像素的中心线(或骨架)的操作。细化的数学表达式为:上式表示用B来细化X得到集合S,S是X的全部像素除去击中击不中变换结果后的集合。下面介绍两种常用的细化算法。细化步骤如下:顺序扫描二值图像的各个像素,当完全满足以下6个条件时,把它置换成1。

如何进行图像细化?

(一)理论基础

所谓细化,就是从二值图像中提取线宽为1像素的中心线(或骨架)的操作。该操作需要从原来的二值图像中去掉一些点,但仍要保持原来的形状,即保持原图的骨架。骨架可以理解为图像的中轴,例如长方形的骨架是其长方向上的中轴线;正方形的骨架是其中心点;圆的骨架是其圆心,直线的骨架是它自身,孤立点的骨架也是其自身。

细化的数学表达式为:

上式表示用B来细化X得到集合S,S是X的全部像素除去击中击不中变换结果后的集合。

细化算法有很多,从处理方法上分为顺序处理和并行处理,从连接性上分为8邻接细化和4邻接细化。下面介绍两种常用的细化算法。

(二)方法1

以黑白文本图像(白纸黑字)为例,该细化算法的基本原理是:根据当前像素8邻域内相邻像素的情况来判断是否能去掉它,例如,图3-41中的1)和2)是内部点,不能删;3)和5)不是骨架点,可以删;4)不能删,否则原来相连的部分会断开;6)是直线的端点,不能删;7)是孤立点,其骨架就是它自身,不能删。总结判据:内部点、孤立点和直线端点不能删除;对于边界点,如果将其去掉后,连通分量不增加,则可以删除。

图3-41 根据中心像素的8个相邻像素的情况来判断是否能删除该像素

可用一张表表示上述判据,该表包括从0~255共256个元素,每个元素的值是0或1:

根据图像中某黑色点的8个相邻点的情况查表,若表中的元素是1,则表示该点可删,否则保留。查表的方法是,设白点为1,黑点为0,左上方点对应8位数的第一位(最低位),正上方点对应第二位,右上方点对应的第三位,左邻点对应第四位,右邻点对应第五位,左下方点对应第六位,正下方点对应第七位,右下方点对应第八位,按这样组成的8位数去查表即可。例如,图3-42所示的例子中1)对应表中的第0项,该项应为0;2)对应37,该项应为0;3)对应173,该项应为1;4)对应231,该项应为0;5)对应237,该项应为1;6)对应254,该项应为0;7)对应255,该项应为0。

对图像进行逐行扫描,对于每个点(不包括边界点),计算它在表中的索引,若为0,则保留,否则删除该点。如果这次扫描没有一个点被删除,则循环结束,剩下的点就是骨架点,如果有点被删除,则进行新的一轮扫描,如此反复,直到没有点被删除为止。

但是该算法存在缺陷。例如,图3-42所示的黑色矩形,预期的细化结果是位于矩形中心的一条水平直线,而采用上述细化算法的结果是位于矩形下边界的水平直线。原因如下:在从上到下、从左到右的扫描过程中,遇到的第一个黑点是矩形的左上角点,经查表,该点可以删除;下一个点是它右边的点,经查表,该点也可以删除;如此下去,整个一行被删除了。每一行都是同样的情况,所以都被删除了。到最后一行时,黑色矩形已经变成了一条直线,最左边的黑点不能删,因为它是直线的端点,它右边的点也不能删,否则直线就断了,如此下去,直到最右边的点,也不能删,因为它是直线的右端点。所以最后的结果就是矩形的下边界。

图3-42 矩形细化

a)黑色矩形 b)细化后的结果(www.xing528.com)

解决的办法是,在每一次水平扫描的过程中,先判断每一点的左右邻居,如果都是黑点,则该点不做处理。另外,如果某个黑点被删除了,那么跳过它的右邻居,处理下一个点。如图3-42b所示,这样的处理过程只实现了水平细化,处理结果是位于矩形中心的一列像素,仍然不是我们预期的结果,原因如下:在上面的算法中,遇到的第一个能删除的点是矩形的左上角点,第二个是矩形的右上角点,第三个是第二行的最左边点,第四个是第二行的最右边点。依此类推,对整幅图像处理一次后,宽度减少2。每次都是如此,直到剩下最中间的一列,就不能再删了。如果在每一次水平细化后,再进行一次竖直方向的细化(把上述过程的行列换一下),就可以得到预期的结果。

(三)方法2

对于一幅二值图像,背景和目标的灰度值分别为1和0,像素(i,j)记为p,其8邻域的像素用pk表示,k∈Ns={0,1,2,…,7},B(·)表示像素的灰度值。细化步骤如下:顺序扫描二值图像的各个像素,当完全满足以下6个条件时,把它置换成1。其中,条件2、3、5是在并行处理方式中所用的各像素的值。条件4和6是在顺序处理方式中所用的各像素的值。对已置换成1的像素,在不用当前处理结果的并行处理方式中,把该像素的值复原到1,而在用当前处理结果的顺序处理方式中,仍为1。

条件1:B(p)=1。

条件2:p是边界像素的条件,即对于像素p,假如p0、p2、p4、p6中至少有一个是0时,则p就是边界像素。数学表达式为

式中

条件3:不删除端点的条件,即对像素p来说,从p0到p7中只有一个像素为1时,则把p叫作端点。数学表达式为

这时

条件4:保存孤立点的条件,即当p0到p7全部像素都不是1时,p是孤立点,

式中

条件5:保持连接性的条件,即

条件6:对于线宽为2的线段,只有单向消除的条件。即

式中,XC(p)是B(pi)=0时像素p的连接数

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈