指紋辨識軟體設計者的基礎規範知識
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% 更高的門檻值。