Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ DMD Public

The code of the paper "Latent Fingerprint Matching via Dense Minutia Descriptor"

License

Notifications You must be signed in to change notification settings

Yu-Yy/DMD

Repository files navigation

Latent Fingerprint Matching via Dense Minutia Descriptor

Zhiyu Pan    Yongjie Duan    Xiongjun Guan
Jianjiang Feng*    Jie Zhou


arXiv


🔍 Overview

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.

🗞️ News and Updates

  • [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.
    • The extended journal paper has been made available on arXiv and is currently under review. New model weights (DMD++) have been released. FDD pipeline will be avaible at here.

⚙️ Requirements

We recommend running the code on a Linux system with an NVIDIA GPU. Other configurations have not been fully tested.

Dependencies:

  • Python == 3.8
  • torch == 1.10.1
  • scikit-learn == 1.3.0
  • scipy == 1.10.1
  • numpy == 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.git

📥 Download Pretrained Weights

Download 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/   

📁 Prepare the Dataset

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

📄 Format of genuine_pair.txt

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/dataset

📈 Evaluation

Run the evaluation script:

python evaluate_mnt.py -d $DatasetName -m $DMDVersion -sn

The -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.

📄 License & Usage

This project is released under the Apache 2.0 license. ⚠️ Note: This code is intended for academic research only and must not be used for commercial purposes.

📚 Citation

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}
}

About

The code of the paper "Latent Fingerprint Matching via Dense Minutia Descriptor"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages