Skip to main content

Open-source 2D/3D registration datasets and dataloaders for DiffDRR

Project description

DiffDRR Datasets

Open-source 2D/3D registration datasets and dataloaders for DiffDRR

CI Paper shield License: MIT Docs Code style: black

Install

pip install diffdrrdata

DiffDRR

DiffDRR is an differentiable X-ray renderer used for solving inverse problems in tomographic imaging. If you find DiffDRR useful in your work, please cite our paper:

@inproceedings{gopalakrishnan2022fast,
  title={Fast auto-differentiable digitally reconstructed radiographs for solving inverse problems in intraoperative imaging},
  author={Gopalakrishnan, Vivek and Golland, Polina},
  booktitle={Workshop on Clinical Image-Based Procedures},
  pages={1--11},
  year={2022},
  organization={Springer}
}

Datasets

We provide APIs to load the following open-source datasets into DiffDRR:

Dataset Anatomy # of Subjects # of 2D Images CTs X-rays GT Fiducials
DeepFluoro pelvis 6 366
Ljubljana neurovasculature 10 20

If you use any of these datasets, please cite the original papers.

DeepFluoro

DeepFluoro (Grupp et al., 2020) provides paired X-ray fluoroscopy images and CT volume of the pelvis. The data were collected from six cadaveric subjects at John Hopkins University. Ground truth camera poses were estimated with an offline registration process. A visualization of the X-ray / CT pairs in the DeepFluoro dataset is available here.

@article{grupp2020automatic,
  title={Automatic annotation of hip anatomy in fluoroscopy for robust and efficient 2D/3D registration},
  author={Grupp, Robert B and Unberath, Mathias and Gao, Cong and Hegeman, Rachel A and Murphy, Ryan J and Alexander, Clayton P and Otake, Yoshito and McArthur, Benjamin A and Armand, Mehran and Taylor, Russell H},
  journal={International journal of computer assisted radiology and surgery},
  volume={15},
  pages={759--769},
  year={2020},
  publisher={Springer}
}
import matplotlib.pyplot as plt
import torch
from diffdrr.drr import DRR
from diffdrr.visualization import plot_drr

from diffdrrdata.deepfluoro import DeepFluoroDataset, Transforms

# Load a subject from the DeepFluoroDataset
deepfluoro = DeepFluoroDataset(id_number=1, bone_attenuation_multiplier=2.5)

# Initialize the DRR module
subsample = 4
drr = DRR(
    deepfluoro.subject,
    deepfluoro.focal_len,
    deepfluoro.height // subsample,
    deepfluoro.delx * subsample,
    x0=deepfluoro.x0,
    y0=deepfluoro.y0,
    reverse_x_axis=False,
)
transform = Transforms(deepfluoro.height // subsample)

# Render a DRR from the ground truth camera pose
gt, pose = deepfluoro[0]
img = drr(pose)
gt, img = transform(gt), transform(img)
plot_drr(torch.concat([gt, img]), title=["Downsampled X-ray", "DRR"])
plt.show()

Ljubljana

Ljubljana (Mitrovic et al., 2013) provides paired 2D/3D digital subtraction angiography (DSA) images. The data were collected from 10 patients undergoing endovascular image-guided interventions at the University of Ljubljana. Ground truth camera poses were estimated by registering surface fiducial markers.

@article{pernus20133d,
  title={3D-2D registration of cerebral angiograms: A method and evaluation on clinical images},
  author={Mitrović, Uros˘ and S˘piclin, Z˘iga and Likar, Bos˘tjan and Pernus˘, Franjo},
  journal={IEEE transactions on medical imaging},
  volume={32},
  number={8},
  pages={1550--1563},
  year={2013},
  publisher={IEEE}
}
from diffdrrdata.ljubljana import LjubljanaDataset, Transforms

# Load a subject from the LjubljanaDataset
ljubljana = LjubljanaDataset(id_number=1)
gt, pose, focal_len, height, width, delx, dely, x0, y0 = ljubljana[0]

# Initialize the DRR module
subsample = 8
drr = DRR(
    ljubljana.subject,
    focal_len,
    height // subsample,
    delx * subsample,
    width // subsample,
    dely * subsample,
    x0=-x0,
    y0=y0,
    reverse_x_axis=False,
)
transform = Transforms(height // subsample, width // subsample)

# Render a DRR from the ground truth camera pose
img = drr(pose)
gt, img = transform(gt), transform(img)
plot_drr(torch.concat([gt, img]), title=["Downsampled X-ray", "DRR"])
plt.show()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

diffdrrdata-0.0.4.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

diffdrrdata-0.0.4-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file diffdrrdata-0.0.4.tar.gz.

File metadata

  • Download URL: diffdrrdata-0.0.4.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for diffdrrdata-0.0.4.tar.gz
Algorithm Hash digest
SHA256 1305106a33c75c50410045ef02576c23905f00c222a233292d3b940e4b5e5e8e
MD5 443e3050d8133259845cd4ab2564a73a
BLAKE2b-256 d1c5b7ae9ca6c81a3671871a1708b98884d935091b1dc832723bc80a66f7b8e7

See more details on using hashes here.

File details

Details for the file diffdrrdata-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: diffdrrdata-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for diffdrrdata-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0ab6f7e2b6613d7e17ca568d22db35f504afb0d29cf016922365c96286064d97
MD5 ca84d09ce0bedafed5c8fb75398b875b
BLAKE2b-256 8e531a158299b845593ef9b6a498c2f6a06459f7c1daad4db8a97e97af760746

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page