Skip to content

HyunKyungHan/fingerprint-authentication

Repository files navigation

fingerprint-authentication

minutiae-based fingerprint matching algorithm

Data

  • data/database: 미리 등록된 지문 데이터베이스
  • data/query: 인증하고자 하는 지문
  • 코드는 데이터베이스에 등록된 지문과 가장 유사한 지문을 반환하도록 한다.

Preprocessing

(1) Binarization

  • 주어진 threshold 이상의 픽셀 값들은 1, 이하의 값들은 0으로 치환한다.
  • 이 프로젝트에서는 threshold를 128로 설정했다.

(2) Skeletonization

  • 융선의 굵기를 가늘게 처리하여, minutiae를 잘 추출할 수 있도록 한다.

(3) Morph and Dilate

  • cv2.MORPH_RECT() , cv2.dilate()를 적용해 끊어진 지문이나 fingerprint 이미지의 noise를 제거한다.

각 이미지에 대한 전처리 결과가 완료되면, results/preprocessed 경로에 다음과 같은 전처리 결과가 저장된다.
왼쪽부터 순서대로 Original Image, Binarized, Skeletionized, Morphed and Dilated 결과이다.

Alt text

Minutiae Detection

  • feat_extraction.py 파일에서 입력 이미지의 minutiae들을 detect한 후, [(x1, y1, angle1), (x2, y2, angle2), ...] 형식으로 리스트에 담아 반환한다.
  • querydatabase에 대해 각각 위 과정을 수행하고, 둘의 minutiae 정보(TerminationBifurcation의 x, y, angle)를 비교하여 둘의 distance가 threshold 이하일 때만 matched pair라고 간주한다.
  • (Matched minutiae 수) / (Detect된 전체 minutiae 수)로 Similarity를 계산한다.
  • Detection 결과는 다음과 같다:
    Termination은 파란색, Bifurcation은 빨간색으로 표시된다.

Alt text

Matching

  • query set에 있는 모든 이미지에 대해, database 중 어떤 이미지와 가장 높은 Similarity를 가지는 지 계산해 best similarity를 가지는 데이터를 matching set으로 선정한다.
  • 각 iteration마다 Similarity Score를 출력하고, 하나의 query에 대해 모든 database와의 비교가 종료되면, Best Similarity를 출력한다.

console output for assessment

Evaluation Metrics

  • database의 label을 answer[] 리스트에, best matching set의 label을 matches[] 리스트에 저장한다.
  • 가장 마지막에 이들의 recall, precision, accuracy를 콘솔에 출력하도록 한다.

About

minutiae-based fingerprint matching algorithm

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages