999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenCV的指紋提取算法與實現

2017-09-29 17:19:05岳雅茹朱嘉林
軟件導刊 2017年9期

岳雅茹 朱嘉林

摘 要:目前,OpenCV函數庫的應用越來越廣泛,將其運用到數字圖像處理中解決一些圖像處理問題,能夠提高圖像處理的有效性。而常用的大津算法容易造成圖像細節丟失的問題,為了解決這些問題對大津算法進行了改進,使其能夠在不均勻光照、圖像模糊的情況下很好地對圖像目標進行分割,結果準確,實現簡單。使用OpenCV函數庫實現一個指紋提取算法,該算法利用改進后的大津算法得到最佳閾值,用最佳閾值對圖片進行分割處理。利用面向對象Vc++6.0編程工具進行仿真實驗,結果表明,基于OpenCV函數庫的指紋提取算法是有效的,提高了指紋提取的準確性,貼近真實圖像。

關鍵詞:OpenCV;指紋提取;最佳閾值;Vc++6.0

DOI:10.11907/rjdk.171539

中圖分類號:TP312 文獻標識碼:A 文章編號:1672-7800(2017)009-0072-03

Abstract:At present, OpenCV function library isapplied more and more widely, and it is used in digital image processing to solve some problems of image processing, and it can improve the effectiveness of image processing. Commonly it is easy to cause the loss of image detail for the Otsu method, in order to solve these problems the Otsu method is improved. In the case of uneven illumination and blurred image, it can segment the target, and the result is accurate and simple. A fingerprint extraction algorithm is achieved using the OpenCV functions. The algorithm uses the Otsu algorithm improved to get the best threshold that it can segment image. Simulation experiment is carried out by using object-oriented Vc++6.0 programming tools, and it proves that the fingerprint extraction algorithm based on OpenCV function library is effective. It can improve the accuracy of fingerprint extraction, and image likes real image. Give some code.

Key Words:OpenCV; Otsu; fingerprint extraction; optimal threshold; Vc++6.0

0 引言

由于指紋受遺傳基因和母體內環境的影響,紋路圖案上隨機出現各種斷點和交叉點,造成所有人的指紋都有明顯差異,因而指紋可以對應一個人的真實身份。在實際中,指紋識別應用于安檢、刑偵技術及信息匹配各個方面。盡管此項技術已經應用在很多方面,也較為成熟,但受商業利益或者其它因素的影響,這項技術并未公開[1]。在學習OpenCV的過程中,利用便利的函數庫對指紋提取進行研究,具有一定理論意義和實用價值。

本文使用OpenCV開源視覺函數庫提出了一種指紋提取算法,能夠在Liunx、Windows和MacOs等操作系統上運行,具有計算快、實時性強的優點[2-4]。指紋提取算法主要是應用圖像分割中的大津法,它是一種比較經典的算法,可以獲取灰度圖像的自適應閾值,對圖像進行二值化,達到目標與背景分割的目的[5]。然而,經過閱讀相關文獻發現,在使用大津算法之前采用一般的灰度變換會影響圖像的細節,甚至丟失圖像的部分內容,從而導致圖像處理準確度不高。理想的結果是提取出的指紋線條細節分明,對細節要求較高。針對光照相對不均勻及RGB三通道分量占比不均勻的圖像,提出運用權重對指紋圖像進行灰度變換。該方法利用人眼對綠色最為敏感的特性,提高G通道的權重,符合人體生理學特點[6]。該算法能夠較好地保留圖像細節,貼近原圖的內容。本文詳細給出了算法實現過程及結果。

1 算法思想

通常,自適應閾值算法有大津法、迭代閾值法和二次定值法等[7-8]。由于大津法(OTSU算法)計算方法簡單,不受圖像亮度及對比度的影響,在數字圖像處理上被廣泛應用[9],效果良好,使本文有了實踐依據,因此,選用此方法作為指紋提取算法中的主體。

大津法的基本思想是:使用圖像直方圖中某一灰度值將圖像分割成兩組,一組灰度對應目標,即指紋線條,一組灰度對應背景,即除去指紋的部分,當兩組之間方差最大時,就取該灰度值作為最佳閾值,將圖像分成背景和前景兩部分。在直方圖中,方差的大小表示灰度分布是否均勻。目標與背景之間方差越大,說明這兩部分之間的差別越大,就更容易將兩部分區分開來,此時分割效果最好。然而當部分目標錯分為背景,或者部分背景錯分為目標時,都會導致兩部分區別不明顯,這樣會影響指紋圖像細節的丟失。因此,在使用大津法之前,通過對圖像作加權平均值法的灰度變換處理解決此缺陷。

設灰度圖像灰度級是L,則灰度范圍為[0,L-1],利用大津法計算指紋圖像最佳閾值的公式為:t=Max[w0(t)*(u0(t)-u)2+w1(t)*(u1(t)-u)2]endprint

(1) 式(1)中,t表示圖像分割的閾值,w0為背景比例,u0為背景均值,w1為前景比例,u1為前景均值,u為整幅圖像的均值。式(1)中值最大的t,即為最佳閾值。

基于OpenCV函數庫,將大津法作為主體算法,指紋提取算法的實現大致為:首先,對彩色指紋圖像進行RGB三通道分解,得到RGB三通道圖像;其次,將G通道作權重提高處理,得到灰度圖;再次,使用大津法獲取最佳閾值;最后,根據獲得的最佳閾值對圖像進行二值化處理,將指紋提取出來。

2 算法過程及程序

指紋提取步驟:采集指紋圖像、圖像預處理(去噪、灰度化、增強)、指紋提取(分割)。指紋提取流程如圖1所示。

2.1 圖像去噪

將采集到的指紋圖像進行去噪處理,本文采用二維中值濾波法抑制背景噪聲。中值濾波的基本原理是將數字圖像中某一點的值用該點的一個鄰域中各點值的中值代替,很容易將其推廣到二維。二維中值濾波方法的優勢是在某些條件下可以做到既去除噪聲又保護圖像邊緣的良好復原,是一種去除噪聲效果良好的非線性處理方法,窗口形式也多種多樣,既可以是長方形,也可以是圓形或者十字形,且相比鄰域平均法,在消除噪聲的同時還能保持圖像中的細節部分,防止邊緣模糊,很好地滿足了本文需求。本文選擇3×3的平滑濾波模板。

2.2 圖像灰度化

將去噪后的彩色圖像轉換為灰度圖像。彩色圖像RGB模型中,如果R=G=B,則彩色表示一種灰度顏色,該值叫灰度值。灰度值在0~255之間,數值越大,該點越白,即越亮,越小則越黑。灰度變換方法有3種:最大值法、平均值法和加權平均值法。為了不浸沒圖像的細節部分,本文采用加權平均值法,給R、G、B賦予不同的權值系數,并加權求和,得到灰度值Gray。

轉換關系為:Gray(i,j)=0.11R(i,j)+0.59G(i,j)+0.3B(i,j)

具體實現方法:首先獲得原圖數據區指針;其次循環數字圖像的每個像素,求出每個像素R、G、B 3個分量值;再次按照轉換關系求出灰度值Gray;最后將相應像素的R、G、B 3個分量值置為相同的灰度值。

去噪后圖像灰度化處理部分程序如下:

//灰度位圖數據處理

BYTE r, g, b;

LPBYTE lpGradeBmpData=(LPBYTE)(lpGradeBmp+

sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*256);

//進行顏色轉換

for(int i=0; i

{

for(int j=0; j

{

b=m_lpData[i*uLineByte+3*j];

g=m_lpData[i*uLineByte+3*j+1];

r=m_lpData[i*uLineByte+3*j+2];

lpGradeBmpData[i*uGradeBmpLineByte+j]=

(BYTE)(0.299*r+0.587*g+0.114*b);

}

}

2.3 圖像分割

進行完灰度化處理之后,要對圖像作增強處理,然后進行圖像分割。圖像分割就是將圖像分為多個區域,利用各種算法判斷出感興趣的目標區域,提取出這些目標區域圖像的特征。按照各種算法的分割機理進行劃分,主要包括分水嶺法、閾值法、邊緣檢測法等。

閾值法是基于區域分割算法中一種最常用的分割技術,其是按照某個準則自動求出最優閾值,把像素點按灰度級進行聚集分類實現分割的過程。可以看出,該方法能夠很好地將背景和目標區分開。但該方法的計算量較大,運行時間較長,因此考慮利用OpenCV進行處理,以減少計算量。

圖像分割處理的關鍵是閾值的選擇和確定,指紋提取算法采用閾值法中的大津法,并對其進行改進,獲得最佳閾值,根據最佳閾值進行二值化,把圖像分成目標物體和背景兩個領域,提取出指紋信息。

在OpenCV計算機視覺函數庫的環境下,使用OTSU算法提取圖像閾值的公式為:g=w0*pow((u-u0),2)+w1*pow((u-u1),2)

(2) 式(2)中,w0為背景像素點占整幅圖像的比例; u0為w0平均灰度;w1為目標像素點占整幅圖像的比例;u1為w1平均灰度;u為整幅圖像的平均灰度。

具體實現方法:求出灰度變換后的直方圖,循環直方圖中所有灰度值(0~255),將每個灰度值作為閾值;用該閾值將圖像分割成兩組,對每一組求平均值及方差;當某個灰度值分割兩組間方差最大時,此灰度值是二值化處理的最佳閾值。

算法在Vc++6.0集成開發環境平臺上編程,通過利用OpenCV提供的CVAdaptiveThreshold()函數實現。電腦CPU為Intel-CORE-i5。圖片采用BMP 格式,其信息豐富、結構簡單,便于處理。該算法主體實現程序如下:

//灰度直方圖數組,并初始化

int nGrayHistogram[256];

memset(nGrayHistogram, 0, sizeof(nGrayHistogram));

//統計各個灰度級對應的像素個數,并存放到灰度直方圖數組中

int nPixel;

for (j=0; j

for (i=0; i

{

//獲取當前像素點的灰度值

nPixel=p_data[nLineByte*j+i];

//對灰度值統計計數endprint

nGrayHistogram[nPixel]++;

}

//聲明整個直方圖的均值u,c0組和c1組的均值u0和u1,c0組和c1組的概率w0和w1,方差和最大方差fVaria和fMaxVaria為符點型變量

float u, u0, u1, w0, w1, fVaria, fMaxVaria;

//聲明c0組的像素總數nCount0,閾值和最佳閾值nT和nBestT為整型變量

int nCount0, nT, nBestT;

//統計直方圖中像素點的總數,并存放到nSum中

int nSum=0;

for(i=0; i<256; i++)

nSum+=nGrayHistogram[i];

//令閾值nT從0遍歷到255

for(nT=0; nT<256; nT++)

{

//當閾值為nT時,計算c0組的均值和概率,同理,可以計算整個直方圖的均值以及c1組的均值和概率

u0=0;

nCount0=0;

for(i=0; i<=nT; i++)

{

u0+=i*nGrayHistogram[i];

nCount0+=nGrayHistogram[i];

}

u0/=nCount0;

w0=(float) nCount0 /nSum;

//計算兩組間的方差

fVaria=w0*(u-u0)^2+w1*(u-u1)^2;

//記錄最大方差和最佳閾值

if(fVaria>fMaxVaria)

{

fMaxVaria=fVaria;

nBestT=nT;

}

}

//最后,利用最佳閾值對原圖像作分割處理

for(j=0; j

for(i=0; i

{

if(p_data[j*nLineByte+i]

p_data[j*nLineByte+i]=0;

else

p_data[j*nLineByte+i]=255;

}

3 仿真結果及分析

基于OpenCV函數庫,在Vc++軟件上運行仿真如圖2所示,其中圖2(a)、(b)是一組,圖2(c)、(d)是一組。圖2(a)是在光線較暗的環境下所采集的圖片,從圖2(b)中可以看到,能夠清晰地提取出其原指紋圖像的細節,邊緣較為清晰,背景噪聲小,貼近指紋原圖,效果很好,但存在突出小點的問題,需要改進。圖2(c)是指紋原圖,錄取得不是很清晰,采用改進后的大津法進行圖像分割,從圖2(d)可以看到,能夠很好地提取其指紋線條,保留局部細節,貼近指紋原形,效果良好。

4 結語

基于OpenCV函數庫提出指紋提取算法,仿真實驗結果表明,與普通的大津法分割圖像相比,此算法能夠很好地利用圖像自身的灰度信息選擇最佳閾值,分割后的指紋線條較為清晰,背景噪聲小,能夠很好地保存圖像細節,貼近真實圖像,實現了指紋提取,并且利用OpenCV函數庫編寫的代碼簡潔、高效。同樣,此指紋提取算法可以用在指紋識別系統中采集訓練樣本。系統尚存在一定的不足,比如線條的某些地方有突出小點。初步研究,圖像增強部分對結果有所影響,這是下一步需要解決的問題。

參考文獻:

[1] 胡春風.指紋紋線特征提取與匹配[D].長沙:國防科學技術大學,2013.

[2] 薛圣利,蔡啟仲,楊海林,等.基于OpenCV的火車票識別算法[J].廣西科技大學學報,2016,27(2):46-51.

[3] BRADSKI G, KAEHLER A. Learning OpenCV: computer vision with the OpenCV library[M].OReilly Media, Inc,2008.

[4] WEN HUANWU, YING JUNZHAO, YONG FEICHE. Research and implementation of face detection based on openCV[J]. Trans Tech,2014(12):1710-1713.

[5] 李了了,鄧善熙,丁興號.基于大津法的圖像分塊二值化算法[J].微計算機信息,2005(14):76-77.

[6] 卜文斌,游福成,李泉,等.一種基于大津法改進的圖像分割方法[J].北京印刷學院學報,2015(4):76-78.

[7] 張進猛,張進秋.基于OpenCV的圖像采集和處理[J].軟件導刊,2010,9(1):164-165.

[8] 袁欣智,江洪,陳蕓芝,等.一種應用大津法的自適應閾值水體提取方法[J].遙感信息,2016,31(5):36-42.

[9] 王蓉,侯鵬鵬,曾昭龍.基于OpenCV的人臉檢測與跟蹤方法實現[J].科學技術與工程,2014,24(14):115-118.

(責任編輯:孫 娟)

主站蜘蛛池模板: 国产精品第三页在线看| 韩日无码在线不卡| 婷婷成人综合| 超碰aⅴ人人做人人爽欧美| 波多野衣结在线精品二区| 亚洲男人的天堂视频| 国产成人永久免费视频| 亚洲床戏一区| 欧美日韩成人在线观看| 毛片大全免费观看| 国产福利小视频高清在线观看| 国产激情无码一区二区三区免费| 婷婷亚洲最大| 亚洲欧洲自拍拍偷午夜色无码| 国产午夜人做人免费视频中文| 色呦呦手机在线精品| 国产成人综合久久精品下载| 欧美中文字幕一区| 日本草草视频在线观看| 免费观看国产小粉嫩喷水| 国产高清在线丝袜精品一区| 国模私拍一区二区| 99爱在线| 亚洲成人一区二区| 亚洲人成网站色7777| 国产精品无码制服丝袜| 精品少妇人妻无码久久| 全裸无码专区| 一区二区日韩国产精久久| 青青操国产| 国产欧美视频一区二区三区| 黄色三级毛片网站| 国产精品成| 国产亚洲欧美在线人成aaaa| jizz国产在线| 在线亚洲精品自拍| 国产欧美精品一区二区| 成人年鲁鲁在线观看视频| 露脸国产精品自产在线播| 色综合久久无码网| 99999久久久久久亚洲| 成人夜夜嗨| 国产尤物视频网址导航| 思思99热精品在线| 成年人免费国产视频| 色偷偷一区二区三区| 老司机午夜精品视频你懂的| 精品国产三级在线观看| AV无码一区二区三区四区| 99热这里只有精品久久免费| 亚洲一欧洲中文字幕在线| 欧美综合在线观看| 91亚洲精选| 日韩av无码DVD| 国产精品xxx| 国产视频a| 国产91小视频| 国产欧美视频一区二区三区| 国产对白刺激真实精品91| 青青青国产视频手机| 99re这里只有国产中文精品国产精品 | 精品久久人人爽人人玩人人妻| 国产精品熟女亚洲AV麻豆| 中国国产高清免费AV片| 亚洲午夜天堂| www.国产福利| 男人天堂伊人网| av在线无码浏览| 久久特级毛片| 97在线公开视频| 久久99久久无码毛片一区二区| 日韩美女福利视频| 国产又大又粗又猛又爽的视频| 欧美日本一区二区三区免费| 国产手机在线小视频免费观看 | 亚洲AⅤ永久无码精品毛片| 欧美视频在线不卡| 国产jizz| 亚洲精品第一页不卡| 亚洲中文在线看视频一区| 精品亚洲国产成人AV| 五月天福利视频|