java指紋識別的精確演算法 SIFT演算法

2021-09-20 19:29:43 字數 1311 閱讀 3319

sift特徵點的提取方法,這裡簡單做個介紹。

int sift_features( iplimage* img, struct feature** feat )

這個函式就是用來提取影象中的特徵向量。引數img為乙個指向iplimage資料型別的指標,用來表示需要進行特徵提取的影象。iplimage是opencv庫定義的影象基本型別(關於opencv是乙個著名的影象處理類庫,詳細的介紹可以參見引數feat 是乙個陣列指標,用來儲存影象的特徵向量。函式呼叫成功將返回特徵向量的數目,否則返回-1.

關鍵函式二:

int _sift_features( iplimage* img, struct feature** feat, int intvls,double sigma, double contr_thr, int curv_thr, int img_dbl, int descr_width, int descr_hist_bins )

這個函式是函式一的過載,作用是一樣的,實際上函式一只不過是使用預設引數呼叫了函式二,核心的**都是在函式二中實現的。下面將詳細介紹一下其他的幾個引數。

intvls: 每個尺度空間的取樣間隔數,預設值為3.

sigma: 高斯平滑的數量,預設值1.6.

contr_thr:判定特徵點是否穩定,取值(0,1),預設為0.04,這個值越大,被剔除的特徵點就越多。

curv_thr:判定特徵點是否邊緣點,預設為6.

img_dbl:在建立尺度空間前如果影象被放大了1倍則取值為1,否則為0.

descr_width:計算特徵描述符時鄰域子塊的寬度,預設為4.

descr_hist_bins:計算特徵描述符時將特徵點鄰域進行投影的方向數,預設為8,分別是0,45,90,135,180,215,270,315共8個方向。

sift特徵匹配演算法主要包括兩個階段,乙個是sift特徵的生成,即從多幅影象中提取對尺度縮放、旋轉、亮度變化無關的特徵向量;第二階段是sift特徵向量的匹配。

sift特徵的生成一般包括以下幾個步驟:

1、構建尺度空間,檢測極值點,獲得尺度不變性;

2、特徵點過濾並進行精確定位;

3、為特徵點分配方向值;

4、生成特徵描述子。

以特徵點為中心取16*16的鄰域作為取樣視窗,將取樣點與特徵點的相對方向通過高斯加權後歸入包含8個bin的方向直方圖,最後獲得4*4*8的128維特徵描述子。示意圖如下:

當兩幅影象的sift特徵向量生成以後,下一步就可以採用關鍵點特徵向量的歐式距離來作為兩幅影象中關鍵點的相似性判定度量。取圖1的某個關鍵點,通過遍歷找到影象2中的距離最近的兩個關鍵點。在這兩個關鍵點中,如果次近距離除以最近距離小於某個闕值,則判定為一對匹配點。

指紋識別的原理和方法

指紋識別的原理和方法 一.概述 指紋識別技術主要涉及四個功能 讀取指紋圖象 提取特徵 儲存資料和比對。在一開始,通過指紋讀取裝置讀取到人體指紋的圖象,取到指紋圖象之後,要對原始圖象進行初步的處理,使之更清晰。接下來,指紋辨識軟體建立指紋的數字表示 特徵資料,一種單方向的轉換,可以從指紋轉換成特徵資料...

ZKT指紋識別演算法

zkfinger 演算法是一種快速 準確的 1 1 和 1 n 指紋識別演算法,面向軟體 開發商和系統整合商全面開放,客戶可以根據需要選擇使用 zkfinger10.0 9.0 演算法引擎 在使用 zkfinger 10.0 引擎進行指紋識別時,不需要對指紋通過姓 名 pin 等預先分類就可以達到 ...

指紋識別演算法仍有優化空間

日期 2006 01 23 指紋識別演算法是實現指紋識別的關鍵,它直接決定了識別率的高低,是指紋識別技術的核心。雖然這些演算法日臻完善,但仍有進一步降低錯誤率的空間。目前,指紋識別技術的研究無論是在前端的資料採集上還是在後端的指紋識別演算法上都已經取得了巨大的進展。於是,很多人認為現在的指紋識別技術...