NeCA: 3D Coronary Artery Tree Reconstruction from Two 2D Projections by Neural Implicit Representation
This is the code repository for the NeCA paper by Yiying Wang, Abhirup Banerjee and Vicente Grau.
If you find the code are useful, please consider citing the paper.
@misc{wang2024neca3dcoronaryartery,
title={NeCA: 3D Coronary Artery Tree Reconstruction from Two 2D Projections by Neural Implicit Representation},
author={Yiying Wang and Abhirup Banerjee and Vicente Grau},
year={2024},
eprint={2409.04596},
archivePrefix={arXiv},
primaryClass={eess.IV},
url={https://arxiv.org/abs/2409.04596},
}
Cardiovascular diseases (CVDs) are the most common health threats worldwide. 2D x-ray invasive coronary angiography (ICA) remains as the most widely adopted imaging modality for CVDs diagnosis. However, in current clinical practice, it is often difficult for the cardiologists to interpret the 3D geometry of coronary vessels based on 2D planes. Moreover, due to the radiation limit, in general only two angiographic projections are acquired, providing limited information of the vessel geometry and necessitating 3D coronary tree reconstruction based only on two ICA projections. In this paper, we propose a self-supervised deep learning method called NeCA, which is based on implicit neural representation using the multiresolution hash encoder and differentiable cone-beam forward projector layer in order to achieve 3D coronary artery tree reconstruction from two projections. We validate our method using six different metrics on coronary computed tomography angiography data in terms of right coronary artery and left anterior descending respectively. The evaluation results demonstrate that our NeCA method, without 3D ground truth for supervision and large datasets for training, achieves promising performance in both vessel topology preservation and branch-connectivity maintaining compared to the supervised deep learning model.
This work requires following dependency packages:
python: 3.8.17
pytorch: 1.9.0
numpy: 1.24.4
ninja: 1.11.1
PyYAML: 6.0
odl: 1.0.0.dev0
astra-toolbox: 2.1.0
tqdm: 4.65.0
argparse
Please prepare your projection data in shape (Batch, Number of projections, Height, Weight)
and put the data under the ./data/CCTA_test/
folder. We recommend to use ODL to generate your simulated projections from 3D coronary tree, which is tested and incorporated in this work.
Then please update the corresponding projection geometry in the file ./data/config.yml
.
Configure your model hyper-parameters in the file ./config/CCTA.yaml
.
Then run the model to start 3D reconstruction optimisation:
python train.py --config ./config/CCTA.yaml
The 3D reconstruction results during iterations are saved under the folder ./logs/
.
Please see license.
NeCA model architectures are revised based on NAF and NeRP.
Multi-resolution hash encoder is based on torch-ngp.
Differentiable cone-beam forward projection layer is based on ODL and we also use it to generate our simulated projections to model for optimisation.