-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Applying Transform Chain to Geometric Objects #4027
Copy link
Copy link
Open
Labels
Feature requestModule: datadatasets, readers/writers, synthetic datadatasets, readers/writers, synthetic dataModule: transformdata transforms for preprocessing and postprocessing.data transforms for preprocessing and postprocessing.WG: TransformsFor the transforms working groupFor the transforms working groupenhancementNew feature or requestNew feature or request
Metadata
Metadata
Labels
Feature requestModule: datadatasets, readers/writers, synthetic datadatasets, readers/writers, synthetic dataModule: transformdata transforms for preprocessing and postprocessing.data transforms for preprocessing and postprocessing.WG: TransformsFor the transforms working groupFor the transforms working groupenhancementNew feature or requestNew feature or request
Type
Projects
Status
📋 Backlog
Status
No status
Is your feature request related to a problem? Please describe.
Sometimes we need to apply transforms to geometric objects (point clouds, lines, curves, and meshes), particularly in radiotherapy planning and object detection.
Describe the solution you'd like
A good solution would be a branch core library that can handle all the geometric transforms while accounting for the image metadata like image spacing and size. A geometric transform chain should be callable in a similar way as we call the regular image transforms. Something like
In an ideal case when we have an image annotation pair. We apply the same set of transformation to both objects. But for geometric objects there should be some way of passing messages to the annotations transform chain. For example you are rotating images and annotations. You can apply the rotation to the annotation, but after rotation the size of the image changes in different axes and sometimes it is important that the geometric transform should know about these changes for accurately applying the transforms. So there should be a message passing mechanism between two transform chains. More relevance in discussion #4024
Describe alternatives you've considered
I have written my own transforms to do all these things but it is a bit hacky and not standardized. I have my geometric labels from open-source tools like labelme. My code handles labelme annotations (in a json) but going in I think we will need to have support for STL, DICOM RT annotations.
Additional context
If there are some people working on it, please let me know as I have been working on it and will like to contribute to this branch.