by Lilu Liu, Yanmei Jiao, Zhou An, Honghai Ma, Chunlin Zhou, Haojian Lu, Jian Hu, Rong Xiong, Yue Wang.
X-ray to CT registration is an essential technique to provide on-site guidance for clinicians and medical robots by aligning preoperative information with intraoperative images. Current methods focus on local registration with small capture ranges and necessitate a manual initial alignment before precise registration. Some existing global methods are likely to fail in thoracic surgeries because of the respiratory motion and the nearly colinear nature of vertebrae landmarks. In this study, we propose an vertebrae-based global X-ray to CT registration method with the assist of clinical setups for thoracic surgeries. Firstly, vertebrae centroids are automatically localized by CNN-based networks in CT and X-ray for establishing 2-D/3-D correspondences. Then, inspired by clinical setup, we address the degradation of colinear landmarks of 6-DoF pose estimation by introducing a 4-DoF solver. Considering the inaccurate priori and landmark mislocalization, the solver is embedded into the Adaptive Error-Aware Estimator (AE2) to simultaneously estimate weights and aggregate candidate poses. Finally, the whole method is trained in an end-to-end manner for better performance. Evaluations on both the public LIDC-IDRI dataset and clinical dataset demonstrate that our method outperforms existing optimization-based and learning-based approaches in terms of registration accuracy and success rate.
This repository includes:
- Training and testing scripts using Python and PyTorch;
- Pretrained models of the proposed 2P-AE2 and 2P-AE2-e2e; and
- Processed training, validation and testing datasets derived from thorax CT scans and X-ray images.
- Ubuntu
$\geq$ 16.04 - Python
$\geq$ 3.7 - CUDA
$\geq$ 10.1
Necessary Python packages can be installed by
pip install -r requirements.txt
The test dataset can be found in Google Drive
The reuslts of proposed method on simulated dataset can be tested by
python test_sim.py --solver 2pe2e
To train your own model, you can type the following code:
python train.py
The end-to-end training can be implemented by the following script which loads the pretrained model and refines the weights through the pose loss
python train_2p.py