Localizing deformable anatomy in 3D from sparse 2D X-ray images using polyrigid transforms.
PolyPose is a fully deformable 2D/3D registration framework.
- 🔭 PolyPose is effective in both sparse-view and limited-angle registration.
- 🦾 PolyPose accurately solves this highly ill-constrained problem with polyrigid transforms.
- 🫀 PolyPose has been tested on multiple anatomical structures from different clinical specialties.
After setting up the environment, check out the tutorial notebook in notebooks/pelvis.ipynb
for a demonstration of PolyPose.
Note:
- This tutorial requires ≥24 GB of VRAM.
- We are working on a tutorial with a smaller memory footprint that can be run on Google Colab (coming soon!).
PolyPose depends on the following packages:
torch
diffdrr # Differentiable X-ray rendering
xvr # Rigid 2D/3D registration
monai # Evaluation metrics
cupy # GPU-accelerated distance field computations
jaxtyping # Extensive type hints!
Download the package:
git clone https://github.com/eigenvivek/polypose
cd polypose
You can install the required packages using virtualenv
:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Or you can set up the packages using uv
:
# Install uv, if necessary
curl -LsSf https://astral.sh/uv/install.sh | sh
# Set up the virtual environment
uv venv
uv sync --all-groups
If you find PolyPose
useful for your work, please cite our paper:
@article{gopalakrishnan2025polypose,
title={PolyPose: Localizing Deformable Anatomy in 3D from Sparse 2D X-ray Images using Polyrigid Transforms},
author={Gopalakrishnan, Vivek and Dey, Neel and Golland, Polina},
journal={arXiv preprint arXiv:2505.19256},
year={2025}
}