Releases: eigenvivek/DiffDRR
v0.4.0
What's Changed
- DiffDRR v0.4 by @eigenvivek in #207
- Segmentation by @eigenvivek in #212
- Render labelmaps with PyVista by @eigenvivek in #214
- Implement efficient rendering of segmentation masks by @eigenvivek in #216
- Plot masks by @eigenvivek in #218
- Implement geodesics on SE(3) by @eigenvivek in #221
- Make new Registration submodule by @eigenvivek in #222
- Make
mask_to_channels
compatible with trilinear renderer by @eigenvivek in #230 - Implement SVDO+ from Levinson et al., 2020 by @eigenvivek in #232
- Fix perspective projection when
reverse_x_axis
is True by @eigenvivek in #238 - Provide simpler access to camera intrinsics for optimization by @eigenvivek in #240
- Hotfix docs by @eigenvivek in #242
- Update camera conventions by @eigenvivek in #245
- Create greetings.yml by @eigenvivek in #247
- Reorient fiducials using affine matrix by @eigenvivek in #246
- Add geometry tutorial by @eigenvivek in #248
- Update files for v0.4.0 release by @eigenvivek in #249
Full Changelog: v0.3.12...v0.4.0
v0.3.12
What's Changed
- Add notebook for trilinear by @eigenvivek in #196
- Add perspective projection and inverse by @eigenvivek in #195
Full Changelog: v0.3.11...v0.3.12
v0.3.11
v0.3.10
What's Changed
- Move dims to device for torch.compile by @eigenvivek in #182
- Switch SE(3) backend to
diffdrr.pose.RigidTransform
by @eigenvivek in #185 - Add trilinear interpolation for rendering by @eigenvivek in #187
Full Changelog: v0.3.9...v0.3.10
v0.3.9
What's Changed
- Interactive pyvista plots by @eigenvivek in #174
- Add pytorchse3 by @eigenvivek in #176
- Support autodifferentiability for intrinsic parameters by @eigenvivek in #178
- Remove dependency on
pytorch3d
by @eigenvivek in #180
Full Changelog: v0.3.8...v0.3.9
Parsing intrinsic matrices and docs
What's Changed
- Add principal point from intrinsic matrix by @eigenvivek in #168
- Add 3D visualization example by @eigenvivek in #169
- Misc fixes by @eigenvivek in #170
Full Changelog: v0.3.7...v0.3.8
v0.3.7
What's Changed
- Add patch-based variants of image similarity metrics by @eigenvivek in #154
- Implement bone attenuation multiplier by @eigenvivek in #155
- Allow bone_attenuation_multiplier to be set once by @eigenvivek in #156
- Expose InstanceNorm eps argument by @eigenvivek in #160
Full Changelog: v0.3.6...v0.3.7
SE(3) and 3D plotting
What's Changed
- Support every SO(3) parameterization under the sun by @eigenvivek in #149
- Use conda for testing and docs deployment by @eigenvivek in #150
- Implement 3D visualization functions with pyvista by @eigenvivek in #151
Full Changelog: v0.3.5...v0.3.6
v0.3.5
Small tweaks to the detector (ensured rays only cast from source to target) and add a new image similarity metric.
What's Changed
- Cleanup experiment folder by @eigenvivek in #140
- Detector tweaks by @eigenvivek in #143
- Implement Gradient NCC by @eigenvivek in #146
Full Changelog: https://github.com/eigenvivek/DiffDRR/commits/v0.3.5
v0.3.3
Prioritize differentiable rendering
Final API change for DiffDRR
DRR
objects now act purely as a differentiable renderer. That means DRR
objects take in rotations
and translations
parameters to specify (batched) camera poses, and render X-rays from those poses.
The pose parameters are not stored as nn.Parameters
of the module. This introduced too many annoyances with the DRR
module, such as gradients not flowing backwards past the pose parameters, or only being able to render a specific batch size.
2D-to-3D registration is still possible with DiffDRR
. This is done by creating a lightweight wrapper module that stores rotations
and translations
as nn.Parameters
, and calls a DRR
object in its forward call. An example is available in the updated documentation.
Small changes:
- DRR generation can now be performed patch-wise (i.e., generate a 600^2 DRR as four 300^2 in series). This means
DiffDRR
can generate insanely large DRRs since computation memory is no longer a constraint. See an example in the updated timing notebook.
What's Changed
- Differentiable rendering and large DRRs by @eigenvivek in #139
Full Changelog: v0.3.2...v0.3.3