Zhiyu Pan
Yongjie Duan
Xiongjun Guan
Jianjiang Feng*
Jie Zhou
This repository contains the official implementation of our IJCB 2024 paper, "Latent Fingerprint Matching via Dense Minutia Descriptor". The proposed method improves the accuracy and efficiency of latent fingerprint matching through a robust dense descriptor learned from fingerprint minutiae. The extended journal version named "Minutiae-Anchored Local Dense Representation for Fingerprint Matching" has been made available on arXiv and is currently under review.
- [July 3, 2024] Initial release of inference code.
- Includes basic inference pipeline for DMD.
- [May 21, 2025] Codebase updated.
- Added GPU-based score computation for significantly improved speed.
- [July 21, 2025] Jounel version realeased and weights updated.
We recommend running the code on a Linux system with an NVIDIA GPU. Other configurations have not been fully tested.
Dependencies:
Python == 3.8torch == 1.10.1scikit-learn == 1.3.0scipy == 1.10.1numpy == 1.24.4
Install the torch_linear_assignment library by compiling it from source as described in the official repository.
Download the './fptools' folder to the root directory of this project:
git clone https://github.com/youngjetduan/fptools.gitDownload the pretrained DMD weights or DMD++ weights trained on NIST SD14 (if the weights cannot be downloaded directly, you may use the DMD backup link or DMD++ backup link instead), and place them under:
./logs/$DMDVersion/
Organize your evaluation dataset in the following format:
TEST_DATA/
├── NIST27/ # Replace with your custom dataset name
│ ├── image/ # Folder for fingerprint images
│ │ ├── query/ # Query images (e.g., latent)
│ │ │ ├── xxxx.bmp
│ │ ├── gallery/ # Gallery images (e.g., reference prints)
│ │ ├── yyyy.bmp
│ │
│ ├── mnt/ # Folder for minutiae files
│ │ ├── query/ # Minutiae files for query images
│ │ │ ├── xxxx.mnt # Extracted by VeriFinger or similar tools
│ │ ├── gallery/ # Minutiae files for gallery images
│ │ ├── yyyy.mnt
│ │
│ ├── genuine_pair.txt # (Optional) File listing genuine query-gallery pairs📌 Note: In this implementation, the minutiae coordinates and orientation are defined as:
- x: horizontal axis, increases to the right
- y: vertical axis, increases downward (image coordinate system)
- θ: minutia orientation angle, measured from the x-axis with
clockwise rotation taken as the positive direction
Each line in genuine_pair.txt defines a genuine matching pair between a query and a gallery image. The file format is as follows:
query_filename, gallery_filename
xxxx, yyyy
zzzz, wwww
...
An example file about N2N Latent is placed in datasets/N2NLatent_genuine_pairs.txt. This file is used in evaluations where explicit genuine pairs are required (e.g., CMC or TAR@FAR metrics). All remaining combinations are considered impostor pairs by default.
You can preprocess the dataset by running:
python dump_dataset_mnteval.py --prefix /path/to/datasetRun the evaluation script:
python evaluate_mnt.py -d $DatasetName -m $DMDVersion -snThe -sn flag enables score normalization based on the overlapping area between fingerprints. This option can be flexibly enabled or disabled depending on the evaluation setting. In our original paper, this strategy was applied when evaluating minutiae extracted using VeriFinger, but was not required for minutiae extracted using FDD.
This project is released under the Apache 2.0 license.
If you find this repository helpful, please consider starring it and citing our paper:
@article{pan2024latent,
title={Latent Fingerprint Matching via Dense Minutia Descriptor},
author={Pan, Zhiyu and Duan, Yongjie and Guan, Xiongjun and Feng, Jianjiang and Zhou, Jie},
journal={arXiv preprint arXiv:2405.01199},
year={2024}
}
@article{pan2025Minutiae,
title={Minutiae-Anchored Local Dense Representation for Fingerprint Matching},
author={Pan, Zhiyu and Guan, Xiongjun and Duan, Yongjie and Feng, Jianjiang and Zhou, Jie},
journal={arXiv preprint arXiv:2507.15297},
year={2025}
}