Automated Fiducial Marker Localization in CT Images
This repository contains a C++ implementation of an automated 3D fiducial marker localization algorithm for CT images, based on surface processing and geometrical prior knowledge.
The software is designed to automatically localize external radio-opaque spherical markers used for patient setup and navigation in radiotherapy and computer assisted surgery workflows.
The implementation follows the methodology described in:
Giovanni Fattori, Marco Riboldi, Maxime Desplanques, Barbara Tagaste, Andrea Pella, Roberto Orecchia, Guido Baroni.
Automated Fiducial Localization in CT Images Based on Surface Processing and Geometrical Prior Knowledge for Radiotherapy Applications
IEEE Transactions on Biomedical Engineering, 2012.
https://doi.org/10.1109/TBME.2012.2198822
BibTeX
@article{Fattori2012,
author = {Giovanni Fattori and Marco Riboldi and others},
title = {Automated Fiducial Localization in CT Images Based on Surface Processing and Geometrical Prior Knowledge for Radiotherapy Applications},
journal = {IEEE Transactions on Biomedical Engineering},
year = {2012},
doi = {10.1109/TBME.2012.2198822}
}
Please cite the accompanying article when using this software in academic work.
Method Overview
The algorithm implements a 3D surface-based workflow, composed of four main stages:
-
Surface Extraction
- Marching Cubes applied to the CT volume at a HU threshold
- Extraction of all high-density candidate surfaces
- Optional skull masking for cranial CT scans
-
Surface Processing
- Mesh smoothing and regularization
- Normal computation and surface cleanup
-
Marker Recognition (Geometrical Filtering)
- Bounding box size constraints
- Hausdorff distance comparison with a template sphere
- Bounding box symmetry checks
- Rejection of non-spherical or defective markers
-
Fiducial Center Localization
- Surface centroid computation
Accuracy and Validation
Reported performance (see reference paper):
- Localization accuracy: < 0.3 mm (phantom study)
- Sensitivity: ~90% on heterogeneous clinical datasets
- False positives: none reported after filtering
- CT robustness: validated up to 3 mm slice thickness
Implementation Details
- Language: C++
- Build system: CMake
- Dependencies:
- VTK – surface extraction and processing
- ITK – DICOM handling and processing (skull masking)
- GDCM – DICOM handling
Tested Software Versions
This project has been built and tested with the following software stack:
- Qt: 6.x
- VTK: 9.5
- ITK: 5.4
- GDCM: 3.2
Other versions may work but have not been formally validated.
License
BSD 3-Clause License