DeepCA: Deep Learning-based 3D Coronary Artery Tree Reconstruction from Two 2D Non-simultaneous X-ray Angiography Projections
This is the official code repository for the DeepCA paper by Yiying Wang, Abhirup Banerjee, Robin P. Choudhury and Vicente Grau, which has been early accepted to the WACV 2025 (Oral) (WACV Broadening Participation Scholarship - Travel Award: Top 2%) (Early acceptance: Top 12.1%).
If you find the code are useful, please consider citing the paper.
@inproceedings{wang2025deepca,
title={DeepCA: Deep Learning-Based 3D Coronary Artery Tree Reconstruction from Two 2D Non-Simultaneous X-Ray Angiography Projections},
author={Wang, Yiying and Banerjee, Abhirup and Choudhury, Robin P and Grau, Vicente},
booktitle={2025 IEEE/CVF Winter Conference on Applications of Computer Vision (WACV)},
pages={337--346},
year={2025},
organization={IEEE}
}
Cardiovascular diseases (CVDs) are the most common cause of death worldwide. Invasive x-ray coronary angiography (ICA) is one of the most important imaging modalities for the diagnosis of CVDs. ICA typically acquires only two 2D projections, which makes the 3D geometry of coronary vessels difficult to interpret, thus requiring 3D coronary tree reconstruction from two projections. State-of-the-art approaches require significant manual interactions and cannot correct the non-rigid cardiac and respiratory motions between non-simultaneous projections. In this study, we propose a novel deep learning pipeline called DeepCA. We leverage the Wasserstein conditional generative adversarial network with gradient penalty, latent convolutional transformer layers, and a dynamic snake convolutional critic to implicitly compensate for the non-rigid motion and provide 3D coronary artery tree reconstruction. Through simulating projections from coronary computed tomography angiography (CCTA), we achieve the generalisation of 3D coronary tree reconstruction on real non-simultaneous ICA projections. We incorporate an application-specific evaluation metric to validate our proposed model on both a CCTA dataset and a real ICA dataset, together with Chamfer L1 distance. The results demonstrate promising performance of our DeepCA model in vessel topology preservation, recovery of missing features, and generalisation ability to real ICA data. To the best of our knowledge, this is the first study that leverages deep learning to achieve 3D coronary tree reconstruction from two real non-simultaneous x-ray angiographic projections.
Our proposed DeepCA method consists of two blocks: a data preprocessing block and a 3D reconstruction with motion compensation block. In the data preprocessing block, we generate two simulated ICA projections based on 3D CCTA data, with simulated motion on the second projection plane, and then apply backprojection on them to produce the input to the DeepCA model at the next block. In the 3D reconstruction with motion compensation block, we map the 3D backprojection input to the CCTA data for 3D coronary artery tree reconstruction via training a deep neural network, implicitly compensating for any motion.
Our DeepCA model architecture is based on the Wasserstein conditional generative adversarial network with gradient penalty, latent convolutional transformer layers, and a dynamic snake convolutional critic. Via mapping the input with non-aligned projections to 3D coronary tree data, most motion artifacts are corrected by our model. With the critic used, any residual uncorrected deformations are adjusted, while ensuring the connectedness of the coronary tree structures in the reconstructions and increasing the model's elastic generalisation capacity. So when generalising to real non-simultaneous ICA projections, the non-rigid motion is compensated implicitly.
This work requires following dependency packages:
python: 3.9.18
pytorch: 2.1.1
numpy: 1.23.5
nibabel: 3.2.2
tigre
Our training data are based on the segmented CCTA data (label) from ImageCAS.
We first split the segmented CCTA data into RCA and LAD and then use the RCA data to simulate cone-beam forward projections. Please run the functions CCTA_split and generate_deformed_projections_RCA in projections_simulation.py to generate your simulated deformed projections from the segmented CCTA data.
Run the model to start training:
python ./DeepCA/train_models/train_model.py
Once finished, the model trained on simulated CCTA projections can then be generalised to real clinical non-simultaneous ICA data for 3D coronary artery tree reconstruction.
Please see license.
DeepCA model architectures are revised based on Compact Transformers and Dynamic Snake Convolution.
Cone-beam forward projection simulation is based on TIGRE Toolbox.

