最近更新: 2016-12-28

指紋辨識軟體設計者的基礎規範知識

0. 基本流程

取得指紋影像 -> 解析指紋細節 -> 辨別不同記錄。

指紋影像與特徵示意圖

附圖來源: Identity One

1. 指紋影像資料 FID

使用指紋掃描設備,掃描手指指紋,取得指紋影像資料。術語稱之為 FID (Fingerprint Image Data)。

FID 的標準規範為:

  • ISO/IEC 19794-4
  • ANSI 381-2004

一般指紋掃描機讀出的指紋影像資料的原始格式是 8-bpp 灰階影像,可視為無檔頭的 PGM (P5)。故加上 PGM 檔頭即可儲存為 PGM 檔案。然而 NIST (美國國家標準局) 建議 FID 的檔案儲存格式為 WSQ (Wavelet Scalar Quantization) 或 JPEG2000 lossless 。

PGM 檔頭,分三行:

  • 第一行: PGM 二進位資料檔一律用 “P5” 。
  • 第二行,影像寬與高,以空白字元分隔。
  • 第三行,最大顏色數。 8-bpp 可用的色彩數為 0 到 255 。通常填 255 。

下列為儲存為 PGM 之範例:

// make header
char pgm_header[256];
sprintf(pgm_header, "P5\n%d %d\n%d\n", width, height, max_colors);
int pgm_header_size = strlen(pgm_header);

// contact header and image data
file_content_size = pgm_header_size + raw_image_size;
uint8_t *file_content = malloc(file_content_size);
memcpy(file_content, pgm_header, pgm_header_size);
memcpy(file_content + pgm_header_size, raw_image, raw_image_size);

// store
FILE *fh = fopen("fingerprint.pgm", "w");
fwrite(file_content, file_content_size, 1, fh);
fclose(fh);

2. 指紋細節記錄 FMD

取得指紋影像資料後,必須再從影像資料中解析出指紋細節記錄 (Minutiae record)。術語稱之為 FMD (Fingerprint Minutiae Data)。一般稱為指紋特徵 (features) 或樣板 (template)。這些解析過後的結構性指紋細節記錄,才是指紋辨識引擎真正的處理對象。

FMD 可組成資料結構中的圖,但不可能從 FMD (節點) 重建原本的 FID (指紋影像)。故基於個人隱私與安全性,絕大多數指紋辨識系統不儲存用戶的 FID ,僅儲存解析過的 FMD 。

FMD 的標準規範為:

  • ISO/IEC 19794-2
  • ANSI 378-2004

ISO 規定的 FMD 儲存格式為:

  • Fingerprint Minutiae Format (FMR)
  • Fingerprint Card Format (FMCard)
  • Compact Fingerprint Card Format (FMCard Compact).

FMD 的檔案儲存格式可從檔頭的前 3 個字元看出,例如 FMR 格式的開頭必為 “FMR” 。

3. 識別與驗證

指紋辨識引擎的辨識工作分為兩種情境:

  • Identification - 識別。專指一對多 (1:Many) 的使用情境。
  • Verification - 驗證。專指一對一 (1:1) 的使用情境。

大多數辨識引擎的辨識結果採用機率概念,術語稱為 False Accept Rate (FAR) 或 False Match Rate (FMR) 。它的意義是可接受的判斷錯誤機率。在一對多情境中,分數愈高的指紋表示判斷錯誤的機率愈低;而判斷錯誤的機率高於門檻值 (Threshold) 的指紋,則判定不相符。

一般的測試門檻是 0.001% (1 in 100,000);預期十萬筆中,會有一筆判斷錯誤。

注意,測試門檻愈高,辨識工作愈耗時。通常只在一對一情境中,才會採用比 0.001% 更高的門檻值。