吳留生
摘 ? 要:針對(duì)燃火細(xì)化算法在細(xì)化手掌靜脈圖像時(shí),容易產(chǎn)生冗余像素點(diǎn),不能得到完整的單像素寬的手掌靜脈紋理骨架現(xiàn)象。文章通過(guò)添加模板去除兩種類型的非單像素點(diǎn),彌補(bǔ)了算法的不足,并通過(guò)VC++編程實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果表明,改進(jìn)的算法能夠提取手掌靜脈圖像的骨架,更好地保持原始靜脈架構(gòu),滿足后續(xù)工作的需要。
關(guān)鍵詞:手掌靜脈;圖像;細(xì)化;燃火算法
中圖分類號(hào):TP391.41 ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼: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 引言
手掌靜脈圖像細(xì)化是手掌靜脈識(shí)別系統(tǒng)[1]中的一個(gè)重要環(huán)節(jié)。手掌靜脈提取后,進(jìn)行去噪和細(xì)化。細(xì)化的手掌靜脈圖像只能由下一個(gè)特征提取和匹配算法[2]使用。在手掌靜脈識(shí)別技術(shù)中,細(xì)化后的圖像必須具有單一的像素寬度,細(xì)化后的骨架必須盡可能與原始靜脈線一致,否則無(wú)法進(jìn)行特征提取和匹配。
因此,在細(xì)化手掌靜脈圖像時(shí),本文選擇了一種基于數(shù)學(xué)形態(tài)學(xué)的快速燃火細(xì)化算法[3]。結(jié)果表明,細(xì)化結(jié)果不是單像素寬,不能滿足后續(xù)需求。本文提出并改進(jìn)了一種優(yōu)化模板,實(shí)現(xiàn)了全單像素寬度的骨架圖像,得到的手掌靜脈骨架圖像更加完整。
2 手掌靜脈圖像細(xì)化綜述
通常,圖像細(xì)化是指去除原始圖像邊緣部分的一些像素點(diǎn),結(jié)果仍然需要保持目標(biāo)特征[4]的固有形狀。細(xì)化是指逐層剝離二值化圖像的邊緣,直到留下寬度為一個(gè)像素的中心像素。骨架需要保持原始圖像的拓?fù)浜瓦B通性。自細(xì)化的思想提出以來(lái),學(xué)者們對(duì)相關(guān)細(xì)化技術(shù)進(jìn)行了深入的研究,提出了一個(gè)好的細(xì)化算法應(yīng)該具有六個(gè)特點(diǎn):
(1)細(xì)化后的骨架應(yīng)靠近原始目標(biāo)的中軸線位置;
(2)細(xì)化結(jié)果應(yīng)與原始圖像的基本結(jié)構(gòu)特征保持一致;
(3)細(xì)化結(jié)果圖像優(yōu)選為單向像素寬;
(4)細(xì)化結(jié)果應(yīng)保持目標(biāo)和背景之間以及彼此之間的連通性;
(5)移除像素點(diǎn)的最佳方法是對(duì)稱地刪除它們,以避免圖像變處理出現(xiàn)失真現(xiàn)象;
(6)對(duì)圖像邊緣的小毛刺或鋸齒噪聲不要太敏感。
一般情況下,細(xì)化算法根據(jù)當(dāng)前點(diǎn)的八個(gè)相鄰點(diǎn)的情況來(lái)判斷當(dāng)前點(diǎn)是否可以被去除。圖1為在細(xì)化處理時(shí)是否需要移除當(dāng)前點(diǎn)的情形。
如圖1所示,對(duì)于中心點(diǎn)通常稱為當(dāng)前點(diǎn)來(lái)說(shuō),(a)它不能被刪除,因?yàn)樗枪羌懿⑶乙驗(yàn)樗莾?nèi)部點(diǎn),如果即使內(nèi)部點(diǎn)被刪除,骨架也將被挖空;(b)不能刪除,如(a)的情況。(c)能刪除。該點(diǎn)不是內(nèi)部點(diǎn),不屬于骨架;(d)不能刪除,如果刪除這一點(diǎn),將導(dǎo)致紋路斷開;(e)不能刪除,因?yàn)樗鼘儆谥本€的端點(diǎn)。如果該點(diǎn)被刪除,整個(gè)直線將最終被刪除。(f)能刪除,這一點(diǎn)不是骨架。
從以上情況,細(xì)化算法的判斷依據(jù)為:
(1)不能刪除直線的端點(diǎn);
(2)不能刪除內(nèi)部點(diǎn);
(3)不能刪除孤立點(diǎn);
(4)如果當(dāng)前點(diǎn)是邊界點(diǎn),并且在移除該點(diǎn)后不增加連通分量,則刪除該點(diǎn)。
此外,現(xiàn)有細(xì)化算法根據(jù)其不同的迭代過(guò)程可分為并行算法和串行算法[5]。兩種算法都以逐層刪除邊緣點(diǎn)為主要方法和手段。對(duì)于整個(gè)細(xì)化過(guò)程,應(yīng)進(jìn)行兩個(gè)操作,即目標(biāo)點(diǎn)可刪除性判定和可刪除點(diǎn)刪除。其中,并行算法是刪除前判斷。根據(jù)上一次迭代中當(dāng)前像素點(diǎn)及其相鄰像素的細(xì)化結(jié)果,使用相同的細(xì)化標(biāo)準(zhǔn)來(lái)處理像素,直到整個(gè)圖像被處理。由于當(dāng)前迭代僅根據(jù)前一次迭代的結(jié)果來(lái)確定,因此細(xì)化結(jié)果的對(duì)稱性非常好,但是算法的處理速度不如串行算法的處理速度快。而串行算法是在判斷時(shí)刪除的,并且細(xì)化其鄰域的結(jié)果。在細(xì)化過(guò)程中,處理判斷標(biāo)準(zhǔn)根據(jù)不同情況采用不同的處理方法。該算法高效快速。當(dāng)前的處理情況和先前的迭代結(jié)果共同決定了當(dāng)前的迭代結(jié)果。因此,不同掃描順序細(xì)化的結(jié)果不同,骨架的對(duì)稱性較差。因?yàn)椋樞蚣?xì)化算法受到像素掃描順序的極大影響,所以像素點(diǎn)的移除或保留是不可預(yù)測(cè)的。并行細(xì)化算法根據(jù)相同的標(biāo)準(zhǔn)判斷所有像素點(diǎn),結(jié)果是各向同性的。從理論上看,并行方法優(yōu)于串行方法。
事實(shí)上,細(xì)化圖像一般為二值圖像。針對(duì)不同的細(xì)化要求,提出了不同的細(xì)化算法。主要采用模板匹配、查找表等方法,如神經(jīng)網(wǎng)絡(luò)和邊緣搜索編碼。然而,它們主要有兩點(diǎn)不足:
(1)由于算法沒(méi)有充分考慮中心軸,細(xì)化結(jié)果失真很大;
(2) 該算法的應(yīng)用范圍不廣,只適用于結(jié)構(gòu)相對(duì)簡(jiǎn)單的圖形。很少有理想的算法來(lái)細(xì)化手掌靜脈圖像。
對(duì)于經(jīng)典細(xì)化中的串行或并行算法,判斷當(dāng)前像素點(diǎn)是否可以刪除的標(biāo)準(zhǔn)很多,細(xì)化過(guò)程中對(duì)圖像的掃描也很多,非常耗時(shí)。因此,減少迭代次數(shù)以提高細(xì)化速度已成為研究熱點(diǎn)。
3 燃火細(xì)化算法
手掌靜脈識(shí)別中提取的特征,如端點(diǎn)和交叉點(diǎn)的特征值,都是基于細(xì)化后的圖像,因此細(xì)化算法和實(shí)現(xiàn)方法的質(zhì)量將直接影響識(shí)別率和識(shí)別速度。因此,必須選擇有效地細(xì)化算法來(lái)實(shí)現(xiàn)手掌靜脈二值化圖像的快速骨架提取。
3.1算法原理
燃火細(xì)化算法是一種基于數(shù)學(xué)形態(tài)學(xué)的算法。通過(guò)數(shù)理邏輯計(jì)算,設(shè)置了一個(gè)5×5鄰域S模板。如圖2所示,S模板中每個(gè)位置的值取決于對(duì)應(yīng)于模板的手掌靜脈圖像中的不同像素位置。如果S模板某個(gè)位置的對(duì)應(yīng)像素為白色,則模板上該位置的值為0,反之為1。
通過(guò)判斷當(dāng)前像素是否滿足以下四個(gè)條件來(lái)決定是否刪除像素點(diǎn),即:
(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鄰域內(nèi)目標(biāo)像素(既靜脈黑點(diǎn))的個(gè)數(shù)。
取其中的3×3鄰域以s[2][2]為中心點(diǎn),則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的變化次數(shù)。同理,T(s[1][2])表示取其中的3×3鄰域以s[1][2]為中心點(diǎn),序列: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的變化次數(shù)。T(s[2][1])表示取其中的3×3鄰域以s[2][1]為中心點(diǎn),序列: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的變化次數(shù)。
如果同時(shí)滿足上述四個(gè)條件,則刪除該點(diǎn);否則,將保留該點(diǎn),并重復(fù)檢測(cè),直到?jīng)]有可以刪除的像素點(diǎn)。
3.2 算法實(shí)現(xiàn)
該算法的具體實(shí)現(xiàn)過(guò)程為:
(1)取得原圖像的首地址及圖像的的高度和寬度;
(2)打開一個(gè)內(nèi)存緩沖區(qū),并將其初始化為255;
(3)如果當(dāng)前像素是白色并且是背景,則跳過(guò)像素點(diǎn);
(4)如果當(dāng)前像素是黑色的,并且是靜脈,則定義一個(gè)5×5的結(jié)構(gòu)模板,并找到每個(gè)位置的值。為了避免跨越邊界,不要處理外圍邊界的兩行像素。從第三行第三列的像素判斷,覆蓋S模板中心的待處理像素。如果S模板下像素值為白色,并且是模板覆蓋位置的背景,則在S同一位置分配0,否則分配1;
(5)檢測(cè)S模板點(diǎn)是否依次滿足四個(gè)條件。如果是,則將該點(diǎn)刪除,反之,檢測(cè)下一個(gè)像素點(diǎn),直到所有像素都處理完畢;
(6)循環(huán)(5),直到?jīng)]有可以刪除的像素;
(7)將結(jié)果保存到打開的內(nèi)存緩沖區(qū);
(8)將結(jié)果從存儲(chǔ)器復(fù)制到原始圖像的數(shù)據(jù)區(qū);
(9)處理完畢。
3.3 算法的不足
燃火細(xì)化算法的優(yōu)點(diǎn)是直線的連接點(diǎn)、T形分支點(diǎn)和虛線的轉(zhuǎn)折點(diǎn)可以與原靜脈精確一致。由于過(guò)分強(qiáng)調(diào)靜脈的連通性,細(xì)化過(guò)程中會(huì)產(chǎn)生冗余像素點(diǎn),無(wú)法獲得完整的單像素寬的手掌靜脈骨架。如圖3所示,方框和圓圈標(biāo)記冗余像素點(diǎn)。由此得到,方框標(biāo)記的像素點(diǎn)是雙像素,而圓圈標(biāo)記的像素是交叉細(xì)化不完全的像素。這給后續(xù)工作中基于端點(diǎn)相交的毛刺去除和特征提取帶來(lái)很大不便,需要進(jìn)一步改進(jìn)。
4 新改進(jìn)的算法
4.1 優(yōu)化模板
由于燃火細(xì)化算法的細(xì)化圖像不具有單個(gè)像素寬度,在分析圖3中由方框和圓圈標(biāo)記的冗余像素點(diǎn)之后,可以得出結(jié)論,它們屬于兩種類型的非單個(gè)像素點(diǎn)。方框標(biāo)記對(duì)角線和直線的雙像素寬度,而圓圈標(biāo)記交叉點(diǎn)處理不完全導(dǎo)致的冗余像素點(diǎn)。因此,有必要進(jìn)一步改進(jìn)燃火細(xì)化算法。鑒于上述兩種情況,可以添加用于移除兩種類型的非單像素點(diǎn)的模板來(lái)實(shí)現(xiàn)優(yōu)化算法。如圖4所示,示出了兩種類型的非單像素點(diǎn)及其優(yōu)化模板。新改進(jìn)的算法的實(shí)現(xiàn)過(guò)程為:
對(duì)于圖4,參考中心點(diǎn)為3×3模版的中心?!?”表示前景點(diǎn),既手掌靜脈像素點(diǎn),“0”表示背景點(diǎn),“x”表示兩者均可。如圖4所示,靜脈線的單個(gè)像素寬度可以通過(guò)移除滿足(a)中(1)位置的像素點(diǎn)或者移除(a)中(1)以上的像素點(diǎn)來(lái)實(shí)現(xiàn)。此時(shí),可以通過(guò)圖4 (b)中的優(yōu)化模板移除滿足模板的像素點(diǎn)。在同一過(guò)程中,通過(guò)分別將(a)和(b)順時(shí)針旋轉(zhuǎn)90°、180°和270°,可以獲得另外三種不同的情況及其相應(yīng)的優(yōu)化模板,并且可以去除滿足條件的冗余像素點(diǎn)。第一類模板的優(yōu)化模板如圖(e)所示。
另外,還有第二種類型的非單個(gè)像素點(diǎn)可以被刪除,如圖4(c)所示。像第一種類型的非單個(gè)像素點(diǎn)一樣,通過(guò)旋轉(zhuǎn)優(yōu)化模板(d)來(lái)移除滿足條件的冗余像素點(diǎn)。由第二類模板優(yōu)化的模板如圖4(f)所示。優(yōu)化算法在燃火細(xì)化算法的基礎(chǔ)上處理,直到?jīng)]有兩種類型的非單個(gè)像素點(diǎn)。
4.2 改進(jìn)算法設(shè)計(jì)
如圖5所示,為改進(jìn)的燃燒細(xì)化算法的流程圖。經(jīng)過(guò)改進(jìn)的燃火細(xì)化算法處理后,掌紋圖像和紋理骨架完全保持單像素寬。
5 實(shí)驗(yàn)結(jié)果與分析
在手掌靜脈細(xì)化算法實(shí)驗(yàn)中,選擇二值化和去噪的手掌靜脈圖像,如圖6(a)所示。在圖6中,(b)為查找表算法的細(xì)化圖;(c)為OPTA算法的細(xì)化圖;(d)為Rosenfeld算法的細(xì)化圖;(e)為燃火細(xì)化算法的細(xì)化圖;(f)為本文優(yōu)化算法的細(xì)化圖。
從實(shí)驗(yàn)細(xì)化效果圖可以看出,查找表算法的細(xì)化結(jié)果產(chǎn)生大量毛刺,效果不理想;OPTA算法失真大,骨架雙像素嚴(yán)重;Rosenfeld算法刪除了太多端點(diǎn),尤其是水平線;燃火算法能保持靜脈圖像骨架的完整性,毛刺少,速度快,但缺點(diǎn)是偶爾會(huì)產(chǎn)生雙像素。本文的改進(jìn)算法克服了燃火算法的不足,對(duì)其進(jìn)行了更徹底的細(xì)化,確保了細(xì)化圖像的單像素寬度,為后續(xù)工作順利進(jìn)行提供了保證。
6 結(jié)束語(yǔ)
手掌靜脈圖像細(xì)化是整個(gè)靜脈識(shí)別系統(tǒng)的重要組成部分,是后續(xù)手掌靜脈特征提取和匹配識(shí)別的基礎(chǔ)。本文首先簡(jiǎn)要介紹了細(xì)化的定義和分類。實(shí)驗(yàn)實(shí)現(xiàn)了常用的細(xì)化算法,發(fā)現(xiàn)細(xì)化效果不好。然后,對(duì)細(xì)化算法進(jìn)行了詳細(xì)分析,發(fā)現(xiàn)細(xì)化結(jié)果不完整。通過(guò)提出優(yōu)化模板,實(shí)現(xiàn)了全單像素寬度的手掌紋理骨架。手掌靜脈的骨架更加完整和真實(shí),更好地滿足了后續(xù)特征提取和匹配的需要。
參考文獻(xiàn)
[1] 林喜榮,莊波,蘇曉生,等.人體手背血管圖像的特征提取及匹配[J].清華大學(xué)學(xué)報(bào).2003,43(2):146-167.
[2] 王科俊,丁宇航,莊大燕,等.手背靜脈圖像閾值分割[J].控制理論與應(yīng)用.2005,24(8):19-22.
[3] 張晉陽(yáng),孫懋珩.手背靜脈圖像骨架特征提取的算法[J].計(jì)算機(jī)應(yīng)用.2007,1(27):152-154.
[4] 呂俊白.一種有效的二值圖像細(xì)化算法[J].計(jì)算機(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.