馬超玉,趙夢(mèng)潔,韋欽磊,任國(guó)仲
(長(zhǎng)春師范大學(xué)物理學(xué)院,吉林 長(zhǎng)春 130032)
隨著生物識(shí)別的廣泛應(yīng)用,虹膜識(shí)別因其多方面的優(yōu)勢(shì)而具有廣泛的應(yīng)用前景。虹膜識(shí)別系統(tǒng)通常是由圖像采集、定位、特征提取以及識(shí)別等環(huán)節(jié)組成。由于目前特征提取及識(shí)別算法已相當(dāng)成熟,因此虹膜區(qū)域定位分割成為該項(xiàng)技術(shù)的瓶頸。目前國(guó)內(nèi)外常用的算法主要是Daugman提出的微積分算法和Wildes提出的霍夫變換算法以及這兩類算法的改進(jìn)算法[1-3]。這兩類方法定位精度較高,但是都面臨著計(jì)算量大、耗時(shí)較多以及易受噪聲影響的問(wèn)題,限制了虹膜識(shí)別技術(shù)的廣泛應(yīng)用。為提高計(jì)算速度并且保證定位的有效性,本文提出了基于機(jī)器視覺(jué)技術(shù)的虹膜分割方法。首先概括介紹機(jī)器視覺(jué)技術(shù)及視覺(jué)軟件Halcon;其次介紹了虹膜區(qū)域粗定位Bolb分析方法;然后介紹了虹膜區(qū)域精定位;最后給出實(shí)驗(yàn)方法以及虹膜定位分割繼續(xù)提升的方向。
機(jī)器視覺(jué)是利用計(jì)算機(jī)模擬人的視覺(jué)功能,它是一門綜合的技術(shù),一般涉及計(jì)算科學(xué)、模式識(shí)別、神經(jīng)生物學(xué)、圖像處理、人工智能等諸多領(lǐng)域的交叉學(xué)科[4]。因該技術(shù)具有速度快、信息量大、功能較全面等特點(diǎn),在工業(yè)領(lǐng)域得到了長(zhǎng)足的發(fā)展。而機(jī)器視覺(jué)技術(shù)在虹膜識(shí)別領(lǐng)域的應(yīng)用鮮有報(bào)道,因此,本文運(yùn)用機(jī)器視覺(jué)技術(shù)在虹膜識(shí)別領(lǐng)域進(jìn)行創(chuàng)新研究。
Halcon是德國(guó)MVtec公司開發(fā)的機(jī)器視覺(jué)算法包。Halcon具有精確、全面、快速和魯棒的特點(diǎn),被廣泛應(yīng)用于工業(yè)上。日本以及歐洲的工業(yè)界公認(rèn)為Halcon是最具效能的機(jī)器視覺(jué)軟件[5]。Halcon中的Hdevelop開發(fā)環(huán)境包括圖像窗口、變量窗口、算子窗口和程序編輯器窗口,集中了程序、分析、設(shè)計(jì)和編程,并且能夠與用戶交互。Hdevelop可以導(dǎo)出C、C++、C#、VB等類型的程序,因而有助于在VisualStudio軟件整合程序[6]。
粗定位采用Bolb分析的方法,該分析方法是將圖像中紋理相似、顏色近似相同等特征組成的一塊連通區(qū)域分析出來(lái)。其過(guò)程是將圖像進(jìn)行二值化處理,閾值分割后得到圖像的前景和背景,進(jìn)而進(jìn)行連通區(qū)域檢測(cè)得到Blob塊的過(guò)程[7]。簡(jiǎn)單來(lái)說(shuō),Blob分析就是在一塊“光滑”區(qū)域內(nèi),將出現(xiàn)“灰度變化”的小區(qū)域找尋出來(lái)。Blob分析主要包括獲取圖像、圖像預(yù)處理、圖像分割、特征提取。
機(jī)器視覺(jué)軟件Halcon提供了獲取圖像的兩種方式,分別是從圖像采集設(shè)備獲取圖像和從本地磁盤讀取已采集的圖像[5]。方式一,通過(guò)軟件提供的圖像采集助手從圖像采集設(shè)備獲取圖像,可用ImageAcquisition自動(dòng)檢測(cè)相機(jī),采用算子grab_image采集圖像;方式二,獲取本地圖像要通過(guò)算子read_image來(lái)實(shí)現(xiàn)。Halcon支持多種圖像格式,本研究采用的圖像庫(kù)是中科院CASIA庫(kù),因此本研究采用方式二讀取已經(jīng)采集好的本地磁盤圖像,如圖1(a)所示。讀取圖像代碼為read_image(Image,RootDir),其中,Image表示輸出的圖像變量,RootDir表示圖像路徑。
(a)原圖像
(b)增強(qiáng)圖像圖1 CASIA虹膜圖像
一般情況下,圖像采集環(huán)境較為復(fù)雜,所形成的圖像效果相對(duì)較差,因而需要對(duì)圖像進(jìn)行預(yù)處理操作,以削弱圖像中的無(wú)關(guān)信息,增強(qiáng)有關(guān)信息,從而有利于后續(xù)處理的可靠性。算子emphasize可以增強(qiáng)圖像中的高頻信息,使圖像中亮的位置更亮,暗的位置更暗,因此調(diào)用算子emphasize可以對(duì)圖像進(jìn)行增強(qiáng)處理,Halcon代碼為emphasize(Image,ImageEmphasize,5,5,1),增強(qiáng)效果如圖1(b)所示。
另外,在數(shù)字圖像處理過(guò)程中,以圓、方框等方式從被處理的圖像中勾勒出需要處理的區(qū)域,稱為感興趣區(qū)域。因圖像中有眉毛等其它信息,會(huì)對(duì)虹膜定位產(chǎn)生干擾,因此,需要選擇出含有虹膜的區(qū)域作為感興趣區(qū)域??梢赃x擇矩形區(qū)域,也可以選擇圓形區(qū)域,如果選擇了矩形區(qū)域,對(duì)應(yīng)的算子應(yīng)當(dāng)為gen_rectangle1,具體代碼是gen_rectangle1 (ROI,x1,y1,x2,y2),ROI為選中的感興趣區(qū)域,x1和y1分別表示左上角的行坐標(biāo)和列坐標(biāo),x2和y2分別表示右下角的行坐標(biāo)和列坐標(biāo),坐標(biāo)的單位統(tǒng)一為像素。感興趣區(qū)域如圖2中矩形框所示。
圖2 感興趣區(qū)域
圖像分割常常采用閾值分割的方式來(lái)實(shí)現(xiàn)。閾值分割特別適用于目標(biāo)和背景灰度級(jí)不同的圖像,對(duì)于虹膜圖像來(lái)說(shuō),虹膜區(qū)域、鞏膜區(qū)域以及瞳孔區(qū)域分別占據(jù)不同的灰度級(jí)。在Halcon中閾值分割用算子threshold來(lái)實(shí)現(xiàn)。具體代碼為threshold (Image,Region,a,b);其中,Image為輸入圖像變量,Region 是分割后的區(qū)域變量,參數(shù)a和b分別為閾值下限和上限,本文閾值在a與b之間。
虹膜圖像如圖1所示,瞳孔區(qū)域、虹膜區(qū)域以及除二者之外的區(qū)域在灰度上具有明顯的階梯性。其灰度直方圖如圖3所示。經(jīng)threshold算子處理后的效果如圖4(a)所示。為了后續(xù)處理,調(diào)用算子fill_up進(jìn)行瞳孔區(qū)域填充。另外,需要調(diào)用connection算子來(lái)驗(yàn)證目標(biāo)和背景之間是分離的。如圖4(b)所示,用不同顏色來(lái)區(qū)分不同連通域塊。
圖3 直方圖界面
(a)閾值分割
(b)填充瞳孔圖4 分割圖像
根據(jù)特征對(duì)瞳孔及虹膜區(qū)域進(jìn)行提取。由于瞳孔區(qū)域和虹膜區(qū)域有明顯的圓形,在圖像中的位置具有一定的規(guī)律特征,因此,本文采用區(qū)域的面積、橢圓形度及區(qū)域的重心行列坐標(biāo)選取出虹膜及瞳孔區(qū)域。選取特征用到的算子為select_shape。選取瞳孔區(qū)域的具體代碼為select_shape(Regions:SelectedRegions:Features,Operation,Min,Max:)。其中,Regions為待選區(qū)域,SelectedRegions為選出的特征區(qū)域,F(xiàn)eatures為輸入特征,此特征可為一個(gè),也可為多個(gè),Min和Max表示輸入特征的范圍的最小值和最大值。提取效果如圖5所示。
(a)瞳孔區(qū)域
(b)虹膜區(qū)域圖5 特征提取
選出的瞳孔區(qū)域及虹膜區(qū)域只是粗略地定位出虹膜所在區(qū)域,為了更精確地定位出虹膜內(nèi)外邊界,還要對(duì)需去除的區(qū)域進(jìn)行處理。通常,將區(qū)域轉(zhuǎn)化為輪廓,計(jì)算輪廓上點(diǎn)的坐標(biāo)與區(qū)域重心的距離,將不滿足距離閾值的點(diǎn)去掉,將剩下的點(diǎn)進(jìn)行圓擬合,擬合出的圓即為虹膜的內(nèi)外邊界。所用到的算子有:區(qū)域轉(zhuǎn)化為輪廓算子gen_contour_region_xld,得到輪廓點(diǎn)坐標(biāo)算子get_contour_xld,計(jì)算兩點(diǎn)間距離算子distance_pp,擬合圓算子gen_circle。瞳孔精定位VC程序如下:
{
//**區(qū)域轉(zhuǎn)輪廓
GenContourRegionXld(ho_ConnectedRegions, &ho_Contours, "center");
//輪廓點(diǎn)坐標(biāo)
GetContourXld(ho_Contours, &hv_Row, &hv_Col);
TupleLength(hv_Row, &hv_Length);
hv_count = 0;
hv_pupilradius = 0;
{
HTuple end_val102 = hv_Length-1;
HTuple step_val102 = 1;
for (hv_Index=0; hv_Index.Continue(end_val102, step_val102); hv_Index += step_val102)
{
DistancePp(hv_Row2,hv_Column2,HTuple(hv_Row[hv_Index]),HTuple(hv_Col[hv_Index]), &hv_Distance);
if (0 !=
(HTuple(hv_Distance>hv_lpupilradius).TupleAnd(hv_Distance { hv_pupilradius = hv_Distance+hv_pupilradius; hv_count += 1; } } } //***圓心及半徑 hv_pupilradius = hv_pupilradius/hv_count; hv_pupil_Row = hv_Row2; hv_pupil_Col = hv_Column2; //***瞳孔擬合 GenCircle(&ho_Circle, hv_pupil_Row, hv_pupil_Col, hv_pupilradius); } 虹膜內(nèi)外邊界定位效果如圖6所示,其中,內(nèi)圓為虹膜的內(nèi)邊緣,外圓為虹膜的外邊界。 一般情況下,上下眼瞼對(duì)虹膜區(qū)域有遮擋,特別是虹膜的正上方區(qū)域。首先選出上眼瞼所在的區(qū)域圖像,然后對(duì)圖像進(jìn)行亞像素canny邊緣檢測(cè),根據(jù)上眼瞼輪廓的特征選出真實(shí)的眼瞼輪廓,根據(jù)輪廓上點(diǎn)的坐標(biāo)擬合出眼瞼所在的二次曲線[8]。具體用到的Halcon算子有:圖像邊緣檢測(cè)算子edges_sub_pix,選擇輪廓特征算子select_shape_xld,得到輪廓的點(diǎn)坐標(biāo)算子get_contour_xld。 根據(jù)眼瞼輪廓的點(diǎn)坐標(biāo)擬合二次曲線的過(guò)程,即求解矩陣中a、b、c值的過(guò)程。假設(shè)所求解的二次曲線的方程式為 f(x)=ax2+bx+c, 將此二次曲線轉(zhuǎn)化為矩陣的形式為 Ax=B, 其中,A=(X2,X,1),X=(a,b,c),B=f(x),A和B為選出的眼瞼輪廓點(diǎn)的坐標(biāo)矩陣。 求解矩陣方程,可得到二次曲線的系數(shù),進(jìn)而擬合出上眼瞼,具體用到的算子為求解矩陣方程算子solve_matrix。 生成二次曲線系數(shù)部分VC程序如下: { CreateMatrix(hv_Y1.TupleLength(), 3, 1.0, &hv_MatrixA1); CreateMatrix(hv_Y1.TupleLength(), 1, hv_Y1, &hv_MatrixACol11); CreateMatrix(hv_Y1.TupleLength(), 1, hv_Y1*hv_Y1, &hv_MatrixACol01); SetSubMatrix(hv_MatrixA1, hv_MatrixACol11, 0, 1); SetSubMatrix(hv_MatrixA1, hv_MatrixACol01, 0, 0); CreateMatrix(hv_Y1.TupleLength(), 1, hv_X1, &hv_MatrixB1); //解方程即可得到a,b,c的系數(shù),記為矩陣hv_MatrixX1 SolveMatrix(hv_MatrixA1, "general", 0, hv_MatrixB1, &hv_MatrixX1); } 擬合下眼瞼采用與上眼瞼同樣的方法,效果如圖6所示。其中,拋物線即為擬合出的上下眼瞼。 (a) (b) (c) (d) (e) (f)圖6 擬合結(jié)果 實(shí)驗(yàn)數(shù)據(jù)采自中國(guó)科學(xué)院自動(dòng)化研究所的CASIA-IrisV4中的CASIA-Iris-Syn數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)包括1 000只眼睛的虹膜圖像,每只眼睛采集10個(gè)樣本,共10 000幅虹膜圖像,圖像的分辨率為640×480。實(shí)驗(yàn)開發(fā)工具為Halcon17.12.0.0,系統(tǒng)平臺(tái)為Windows7,實(shí)驗(yàn)算法流程如圖7所示,部分定位結(jié)果如圖6所示。從定位結(jié)果可以看出,虹膜區(qū)域定位較為準(zhǔn)確,定位速度較快。 圖7 算法流程圖 基于視覺(jué)技術(shù)的虹膜定位方法不僅定位效率高,而且定位準(zhǔn)確率也高。但是,不同的虹膜采集設(shè)備采集出的虹膜圖像質(zhì)量不同,本文的處理方法并不能通用于所有的虹膜圖像分割。因此應(yīng)根據(jù)不同的虹膜應(yīng)用場(chǎng)景,采用不同的圖像處理方法。如何采用同一方案,處理不同場(chǎng)景下的虹膜圖像,是本研究的改進(jìn)方向。3.2 眼瞼定位
4 實(shí)驗(yàn)
5 結(jié)語(yǔ)
長(zhǎng)春師范大學(xué)學(xué)報(bào)2022年6期