您好, 访客   登录/注册

基于燃火的手掌静脉图像细化技术研究

来源:用户上传      作者:

  摘   要:针对燃火细化算法在细化手掌静脉图像时,容易产生冗余像素点,不能得到完整的单像素宽的手掌静脉纹理骨架现象。文章通过添加模板去除两种类型的非单像素点,弥补了算法的不足,并通过VC++编程实现。实验结果表明,改进的算法能够提取手掌静脉图像的骨架,更好地保持原始静脉架构,满足后续工作的需要。
  关键词:手掌静脉;图像;细化;燃火算法
  中图分类号:TP391.41          文献标识码:A
  Abstract: when the fire thinning algorithm is used to refine the palm vein image, it is easy to produce redundant pixels, and can not get a complete single pixel wide palm vein texture skeleton. In this paper, two types of non single pixel points are removed by adding template, which makes up for the shortcomings of the algorithm, and is realized by VC + + programming. The experimental results show that the improved algorithm can extract the skeleton of palm vein image, better maintain the original vein architecture, and meet the needs of subsequent work.
  Key words: palmar vein; image; thinning; fire algorithm
  1 引言
  手掌静脉图像细化是手掌静脉识别系统[1]中的一个重要环节。手掌静脉提取后,进行去噪和细化。细化的手掌静脉图像只能由下一个特征提取和匹配算法[2]使用。在手掌静脉识别技术中,细化后的图像必须具有单一的像素宽度,细化后的骨架必须尽可能与原始静脉线一致,否则无法进行特征提取和匹配。
  因此,在细化手掌静脉图像时,本文选择了一种基于数学形态学的快速燃火细化算法[3]。结果表明,细化结果不是单像素宽,不能满足后续需求。本文提出并改进了一种优化模板,实现了全单像素宽度的骨架图像,得到的手掌静脉骨架图像更加完整。
  2 手掌静脉图像细化综述
  通常,图像细化是指去除原始图像边缘部分的一些像素点,结果仍然需要保持目标特征[4]的固有形状。细化是指逐层剥离二值化图像的边缘,直到留下宽度为一个像素的中心像素。骨架需要保持原始图像的拓扑和连通性。自细化的思想提出以来,学者们对相关细化技术进行了深入的研究,提出了一个好的细化算法应该具有六个特点:
  (1)细化后的骨架应靠近原始目标的中轴线位置;
  (2)细化结果应与原始图像的基本结构特征保持一致;
  (3)细化结果图像优选为单向像素宽;
  (4)细化结果应保持目标和背景之间以及彼此之间的连通性;
  (5)移除像素点的最佳方法是对称地删除它们,以避免图像变处理出现失真现象;
  (6)对图像边缘的小毛刺或锯齿噪声不要太敏感。
  一般情况下,细化算法根据当前点的八个相邻点的情况来判断当前点是否可以被去除。图1为在细化处理时是否需要移除当前点的情形。
  如图1所示,对于中心点通常称为当前点来说,(a)它不能被删除,因为它是骨架并且因为它是内部点,如果即使内部点被删除,骨架也将被挖空;(b)不能删除,如(a)的情况。(c)能删除。该点不是内部点,不属于骨架;(d)不能删除,如果删除这一点,将导致纹路断开;(e)不能删除,因为它属于直线的端点。如果该点被删除,整个直线将最终被删除。(f)能删除,这一点不是骨架。
  从以上情况,细化算法的判断依据为:
  (1)不能删除直线的端点;
  (2)不能删除内部点;
  (3)不能删除孤立點;
  (4)如果当前点是边界点,并且在移除该点后不增加连通分量,则删除该点。
  此外,现有细化算法根据其不同的迭代过程可分为并行算法和串行算法[5]。两种算法都以逐层删除边缘点为主要方法和手段。对于整个细化过程,应进行两个操作,即目标点可删除性判定和可删除点删除。其中,并行算法是删除前判断。根据上一次迭代中当前像素点及其相邻像素的细化结果,使用相同的细化标准来处理像素,直到整个图像被处理。由于当前迭代仅根据前一次迭代的结果来确定,因此细化结果的对称性非常好,但是算法的处理速度不如串行算法的处理速度快。而串行算法是在判断时删除的,并且细化其邻域的结果。在细化过程中,处理判断标准根据不同情况采用不同的处理方法。该算法高效快速。当前的处理情况和先前的迭代结果共同决定了当前的迭代结果。因此,不同扫描顺序细化的结果不同,骨架的对称性较差。因为,顺序细化算法受到像素扫描顺序的极大影响,所以像素点的移除或保留是不可预测的。并行细化算法根据相同的标准判断所有像素点,结果是各向同性的。从理论上看,并行方法优于串行方法。
  事实上,细化图像一般为二值图像。针对不同的细化要求,提出了不同的细化算法。主要采用模板匹配、查找表等方法,如神经网络和边缘搜索编码。然而,它们主要有两点不足:
  (1)由于算法没有充分考虑中心轴,细化结果失真很大;
  (2) 该算法的应用范围不广,只适用于结构相对简单的图形。很少有理想的算法来细化手掌静脉图像。   对于经典细化中的串行或并行算法,判断当前像素点是否可以删除的标准很多,细化过程中对图像的扫描也很多,非常耗时。因此,减少迭代次数以提高细化速度已成为研究热点。
  3 燃火细化算法
  手掌静脉识别中提取的特征,如端点和交叉点的特征值,都是基于细化后的图像,因此细化算法和实现方法的质量将直接影响识别率和识别速度。因此,必须选择有效地细化算法来实现手掌静脉二值化图像的快速骨架提取。
  3.1算法原理
  燃火细化算法是一种基于数学形态学的算法。通过数理逻辑计算,设置了一个5×5邻域S模板。如图2所示,S模板中每个位置的值取决于对应于模板的手掌静脉图像中的不同像素位置。如果S模板某个位置的对应像素为白色,则模板上该位置的值为0,反之为1。
  通过判断当前像素是否满足以下四个条件来决定是否删除像素点,即:
  (1)2≤N(s[2][2])≤6;
  (2)T(s[2][2])=1;
  (3)s[1][2]×s[2][1]×s[2][3]=0或T(s[1][2])≠1;
  (4)s[1][2]×s[2][1]×s[3][2]=0或T(s[2][1])≠1。
  其中,N(s[2][2])是以s[2][2]为中心的3 3邻域内目标像素(既静脉黑点)的个数。
  取其中的3×3邻域以s[2][2]为中心点,则T(s[2][2])表示序列: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])表示取其中的3×3邻域以s[1][2]为中心点,序列: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])表示取其中的3×3邻域以s[2][1]为中心点,序列: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的变化次数。
  如果同时满足上述四个条件,则删除该点;否则,将保留该点,并重复检测,直到没有可以删除的像素点。
  3.2 算法实现
  该算法的具体实现过程为:
  (1)取得原图像的首地址及图像的的高度和宽度;
  (2)打开一个内存缓冲区,并将其初始化为255;
  (3)如果当前像素是白色并且是背景,则跳过像素点;
  (4)如果当前像素是黑色的,并且是静脉,则定义一个5×5的结构模板,并找到每个位置的值。为了避免跨越边界,不要处理外围边界的两行像素。从第三行第三列的像素判断,覆盖S模板中心的待处理像素。如果S模板下像素值为白色,并且是模板覆盖位置的背景,则在S同一位置分配0,否则分配1;
  (5)检测S模板点是否依次满足四个条件。如果是,则将该点删除,反之,检测下一个像素点,直到所有像素都处理完毕;
  (6)循环(5),直到没有可以删除的像素;
  (7)将结果保存到打开的内存缓冲区;
  (8)将结果从存储器复制到原始图像的数据区;
  (9)处理完毕。
  3.3 算法的不足
  燃火细化算法的优点是直线的连接点、T形分支点和虚线的转折点可以与原静脉精确一致。由于过分强调静脉的连通性,细化过程中会产生冗余像素点,无法获得完整的单像素宽的手掌静脉骨架。如图3所示,方框和圆圈标记冗余像素点。由此得到,方框标记的像素点是双像素,而圆圈标记的像素是交叉细化不完全的像素。这给后续工作中基于端点相交的毛刺去除和特征提取带来很大不便,需要进一步改进。
  4 新改进的算法
  4.1 优化模板
  由于燃火细化算法的细化图像不具有单个像素宽度,在分析图3中由方框和圆圈标记的冗余像素点之后,可以得出结论,它们属于两种类型的非单个像素点。方框标记对角线和直线的双像素宽度,而圆圈标记交叉点处理不完全导致的冗余像素点。因此,有必要进一步改进燃火细化算法。鉴于上述两种情况,可以添加用于移除两种类型的非单像素点的模板来实现优化算法。如图4所示,示出了两种类型的非单像素点及其优化模板。新改进的算法的实现过程为:
  对于图4,参考中心点为3×3模版的中心。“1”表示前景点,既手掌静脉像素点,“0”表示背景点,“x”表示两者均可。如图4所示,静脉线的单个像素宽度可以通过移除满足(a)中(1)位置的像素点或者移除(a)中(1)以上的像素点来实现。此时,可以通过图4 (b)中的优化模板移除满足模板的像素点。在同一过程中,通过分别将(a)和(b)顺时针旋转90°、180°和270°,可以获得另外三种不同的情况及其相应的优化模板,并且可以去除满足条件的冗余像素点。第一类模板的优化模板如图(e)所示。
  另外,还有第二种类型的非单个像素点可以被删除,如图4(c)所示。像第一种类型的非单个像素点一样,通过旋转优化模板(d)来移除满足条件的冗余像素点。由第二类模板优化的模板如图4(f)所示。优化算法在燃火细化算法的基础上处理,直到没有两种类型的非单个像素点。
  4.2 改进算法设计
  如图5所示,为改进的燃烧细化算法的流程图。经过改进的燃火细化算法处理后,掌纹图像和纹理骨架完全保持单像素宽。
  5 实验结果与分析
  在手掌静脉细化算法实验中,选择二值化和去噪的手掌静脉图像,如图6(a)所示。在图6中,(b)为查找表算法的细化图;(c)为OPTA算法的細化图;(d)为Rosenfeld算法的细化图;(e)为燃火细化算法的细化图;(f)为本文优化算法的细化图。
  从实验细化效果图可以看出,查找表算法的细化结果产生大量毛刺,效果不理想;OPTA算法失真大,骨架双像素严重;Rosenfeld算法删除了太多端点,尤其是水平线;燃火算法能保持静脉图像骨架的完整性,毛刺少,速度快,但缺点是偶尔会产生双像素。本文的改进算法克服了燃火算法的不足,对其进行了更彻底的细化,确保了细化图像的单像素宽度,为后续工作顺利进行提供了保证。
  6 结束语
  手掌静脉图像细化是整个静脉识别系统的重要组成部分,是后续手掌静脉特征提取和匹配识别的基础。本文首先简要介绍了细化的定义和分类。实验实现了常用的细化算法,发现细化效果不好。然后,对细化算法进行了详细分析,发现细化结果不完整。通过提出优化模板,实现了全单像素宽度的手掌纹理骨架。手掌静脉的骨架更加完整和真实,更好地满足了后续特征提取和匹配的需要。
  参考文献
  [1] 林喜荣,庄波,苏晓生,等.人体手背血管图像的特征提取及匹配[J].清华大学学报.2003,43(2):146-167.
  [2] 王科俊,丁宇航,庄大燕,等.手背静脉图像阈值分割[J].控制理论与应用.2005,24(8):19-22.
  [3] 张晋阳,孙懋珩.手背静脉图像骨架特征提取的算法[J].计算机应用.2007,1(27):152-154.
  [4] 吕俊白.一种有效的二值图像细化算法[J].计算机工程. 2003,10(18):147-148.
  [5] B.M.Mehtre. Fingerprint image analysis for automatic identification[J]. Machine Vision and Application.1993,6(2):124-139.
转载注明来源:https://www.xzbu.com/1/view-15129455.htm