2013-08-29 48 views
6

我有一個從指紋設備獲取數據的應用程序。 有針對手指特徵提取3個步驟:細節提取算法Java

  1. 指紋圖像二值化
  2. 圖像細化
  3. 特徵提取

我對圖像二值化和圖像thinnig部分完成。 現在我已經實現了細節提取的代碼。代碼如下所示:

byte[][] outSkeleton = BasicOperations.copy(fingerprint.getSkeleton()); 

    int margin = 50; 
    int bif = 0; 
    int eol = 0; 
    for(int i=margin+20; i<width-margin-20; i++){ 
     for(int j=margin; j<height-margin; j++){ 
      int patterns = BasicOperations.timesPattern01(i,j,fingerprint.getSkeleton()); 
      if(fingerprint.getSkeleton()[i][j]==1){ 
       if(patterns==1){ 
        outSkeleton = drawRectangle(i,j,outSkeleton,2); 
        eol++; 
       } 
       if(patterns==3){ 
        outSkeleton = drawRectangle(i,j,outSkeleton,3); 
        bif++; 
       } 
      } 
     } 
    } 

..........

public static int timesPattern01(int i, int j, byte[][] image){ 
    int pattern01 = 0; 

    //Counting threads[0,1] 
    if(image[i-1][j]==0 && image[i-1][j+1]==1) pattern01++; 
    if(image[i-1][j+1]==0 && image[i][j+1]==1) pattern01++; 
    if(image[i][j+1]==0 && image[i+1][j+1]==1) pattern01++; 
    if(image[i+1][j+1]==0 && image[i+1][j]==1) pattern01++; 
    if(image[i+1][j]==0 && image[i+1][j-1]==1) pattern01++; 
    if(image[i+1][j-1]==0 && image[i][j-1]==1) pattern01++; 
    if(image[i][j-1]==0 && image[i-1][j-1]==1) pattern01++; 
    if(image[i-1][j-1]==0 && image[i-1][j]==1) pattern01++; 

    return pattern01; 
} 

.....

private static byte[][] drawRectangle(int x, int y, byte[][] skeleton, int color){ 
    int size = 3; 
    for(int i=-size; i<=size; i++){ 
     skeleton[x-i][y+size] = (byte)color; 
     skeleton[x+i][y-size] = (byte)color; 
     skeleton[x-size][y+i] = (byte)color; 
     skeleton[x+size][y-i] = (byte)color; 
    } 
    return skeleton; 
} 

但這個代碼計算平均周圍300 END OF LINES。它考慮到了每一個行結束點。

enter image description here

可以在任何一個可以幫助我對代碼進行優化?

回答

2

所以這樣做的原因是,同時獲取細節圖錯誤的細節也被檢測到。所以在得到細節之後,我們必須從細節圖中移除錯誤的細節。

錯誤細節類型:

  1. 斯派克
  2. 支線

除了大量的假米總是在接近感興趣區域的邊界(邊界效應)處檢測到特徵。

因此,爲了消除這些錯誤的細節,定義了各種算法。 其中之一在this link中定義。

0

如果您需要的是使用它們的方位角獲得X,Y形式的微型點,請查看Source AFIS項目here。我能夠用它從指紋圖像中提取微型數據。