国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OpenCV的指紋提取算法與實(shí)現(xiàn)

2017-09-29 17:19岳雅茹朱嘉林
軟件導(dǎo)刊 2017年9期
關(guān)鍵詞:函數(shù)庫指紋圖直方圖

岳雅茹 朱嘉林

摘 要:目前,OpenCV函數(shù)庫的應(yīng)用越來越廣泛,將其運(yùn)用到數(shù)字圖像處理中解決一些圖像處理問題,能夠提高圖像處理的有效性。而常用的大津算法容易造成圖像細(xì)節(jié)丟失的問題,為了解決這些問題對大津算法進(jìn)行了改進(jìn),使其能夠在不均勻光照、圖像模糊的情況下很好地對圖像目標(biāo)進(jìn)行分割,結(jié)果準(zhǔn)確,實(shí)現(xiàn)簡單。使用OpenCV函數(shù)庫實(shí)現(xiàn)一個(gè)指紋提取算法,該算法利用改進(jìn)后的大津算法得到最佳閾值,用最佳閾值對圖片進(jìn)行分割處理。利用面向?qū)ο骎c++6.0編程工具進(jìn)行仿真實(shí)驗(yàn),結(jié)果表明,基于OpenCV函數(shù)庫的指紋提取算法是有效的,提高了指紋提取的準(zhǔn)確性,貼近真實(shí)圖像。

關(guān)鍵詞:OpenCV;指紋提??;最佳閾值;Vc++6.0

DOI:10.11907/rjdk.171539

中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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 引言

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

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

1 算法思想

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

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

設(shè)灰度圖像灰度級(jí)是L,則灰度范圍為[0,L-1],利用大津法計(jì)算指紋圖像最佳閾值的公式為: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函數(shù)庫,將大津法作為主體算法,指紋提取算法的實(shí)現(xiàn)大致為:首先,對彩色指紋圖像進(jìn)行RGB三通道分解,得到RGB三通道圖像;其次,將G通道作權(quán)重提高處理,得到灰度圖;再次,使用大津法獲取最佳閾值;最后,根據(jù)獲得的最佳閾值對圖像進(jìn)行二值化處理,將指紋提取出來。

2 算法過程及程序

指紋提取步驟:采集指紋圖像、圖像預(yù)處理(去噪、灰度化、增強(qiáng))、指紋提?。ǚ指睿?。指紋提取流程如圖1所示。

2.1 圖像去噪

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

2.2 圖像灰度化

將去噪后的彩色圖像轉(zhuǎn)換為灰度圖像。彩色圖像RGB模型中,如果R=G=B,則彩色表示一種灰度顏色,該值叫灰度值?;叶戎翟?~255之間,數(shù)值越大,該點(diǎn)越白,即越亮,越小則越黑。灰度變換方法有3種:最大值法、平均值法和加權(quán)平均值法。為了不浸沒圖像的細(xì)節(jié)部分,本文采用加權(quán)平均值法,給R、G、B賦予不同的權(quán)值系數(shù),并加權(quán)求和,得到灰度值Gray。

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

具體實(shí)現(xiàn)方法:首先獲得原圖數(shù)據(jù)區(qū)指針;其次循環(huán)數(shù)字圖像的每個(gè)像素,求出每個(gè)像素R、G、B 3個(gè)分量值;再次按照轉(zhuǎn)換關(guān)系求出灰度值Gray;最后將相應(yīng)像素的R、G、B 3個(gè)分量值置為相同的灰度值。

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

//灰度位圖數(shù)據(jù)處理

BYTE r, g, b;

LPBYTE lpGradeBmpData=(LPBYTE)(lpGradeBmp+

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

//進(jìn)行顏色轉(zhuǎn)換

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 圖像分割

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

閾值法是基于區(qū)域分割算法中一種最常用的分割技術(shù),其是按照某個(gè)準(zhǔn)則自動(dòng)求出最優(yōu)閾值,把像素點(diǎn)按灰度級(jí)進(jìn)行聚集分類實(shí)現(xiàn)分割的過程。可以看出,該方法能夠很好地將背景和目標(biāo)區(qū)分開。但該方法的計(jì)算量較大,運(yùn)行時(shí)間較長,因此考慮利用OpenCV進(jìn)行處理,以減少計(jì)算量。

圖像分割處理的關(guān)鍵是閾值的選擇和確定,指紋提取算法采用閾值法中的大津法,并對其進(jìn)行改進(jìn),獲得最佳閾值,根據(jù)最佳閾值進(jìn)行二值化,把圖像分成目標(biāo)物體和背景兩個(gè)領(lǐng)域,提取出指紋信息。

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

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

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

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

//灰度直方圖數(shù)組,并初始化

int nGrayHistogram[256];

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

//統(tǒng)計(jì)各個(gè)灰度級(jí)對應(yīng)的像素個(gè)數(shù),并存放到灰度直方圖數(shù)組中

int nPixel;

for (j=0; j

for (i=0; i

{

//獲取當(dāng)前像素點(diǎn)的灰度值

nPixel=p_data[nLineByte*j+i];

//對灰度值統(tǒng)計(jì)計(jì)數(shù)endprint

nGrayHistogram[nPixel]++;

}

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

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

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

int nCount0, nT, nBestT;

//統(tǒng)計(jì)直方圖中像素點(diǎn)的總數(shù),并存放到nSum中

int nSum=0;

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

nSum+=nGrayHistogram[i];

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

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

{

//當(dāng)閾值為nT時(shí),計(jì)算c0組的均值和概率,同理,可以計(jì)算整個(gè)直方圖的均值以及c1組的均值和概率

u0=0;

nCount0=0;

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

{

u0+=i*nGrayHistogram[i];

nCount0+=nGrayHistogram[i];

}

u0/=nCount0;

w0=(float) nCount0 /nSum;

//計(jì)算兩組間的方差

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 仿真結(jié)果及分析

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

4 結(jié)語

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

參考文獻(xiàn):

[1] 胡春風(fēng).指紋紋線特征提取與匹配[D].長沙:國防科學(xué)技術(shù)大學(xué),2013.

[2] 薛圣利,蔡啟仲,楊海林,等.基于OpenCV的火車票識(shí)別算法[J].廣西科技大學(xué)學(xué)報(bào),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] 李了了,鄧善熙,丁興號(hào).基于大津法的圖像分塊二值化算法[J].微計(jì)算機(jī)信息,2005(14):76-77.

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

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

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

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

(責(zé)任編輯:孫 娟)

猜你喜歡
函數(shù)庫指紋圖直方圖
符合差分隱私的流數(shù)據(jù)統(tǒng)計(jì)直方圖發(fā)布
用于優(yōu)化雷達(dá)信號(hào)處理的VSIPL函數(shù)庫
Scratch求最值和平均值
基于BB60C的IQ數(shù)據(jù)采集與存儲(chǔ)系統(tǒng)設(shè)計(jì)
用直方圖控制畫面影調(diào)
指紋圖像傳感器技術(shù)與后續(xù)發(fā)展研究
沉香GC-MS指紋圖譜分析
基于模板檢測法的指紋圖像的細(xì)節(jié)特征提取
基于空間變換和直方圖均衡的彩色圖像增強(qiáng)方法
基于直方圖平移和互補(bǔ)嵌入的可逆水印方案
乐安县| 临高县| 疏勒县| 赤壁市| 安乡县| 张家港市| 溆浦县| 平阳县| 房产| 剑阁县| 平湖市| 容城县| 兰考县| 家居| 汤阴县| 洪洞县| 岳阳市| 玛纳斯县| 易门县| 承德市| 庆安县| 登封市| 九江市| 河源市| 万盛区| 家居| 彰武县| 高唐县| 河池市| 黄石市| 霍林郭勒市| 红安县| 新兴县| 广东省| 呼和浩特市| 平凉市| 化州市| 辽中县| 丹棱县| 华亭县| 宕昌县|