Description
Is your feature request related to a problem? Please describe.
Series selection can be very complex and often needs to be customized for a specific application use, and for specific modality. DICOM metadata matching based selection rule is a good start, and is simple to use for many basic use cases. There are complex use cases which will require more advanced selection rules and/or pixel level evaluation, requiring the use of traditional computer vision based and/or DL based algorithms.
App SDK v0.2 provides Domain classes encapsulating the selected series of a study, and has the base Series Selection operator with metadata matching selection logic. It is feasible to develop more advanced derived classes to cater for more advanced use cases.
The following RFE's has been copied over from issue 175 so that they are properly recorded.
Describe the solution you'd like
Leaving some thoughts here on series selection capabilities that will be required or highly desirable:
- Ability to allow ranges of numerical tags as well as specific value. E.g. Slice Thickness BETWEEN 2.5mm and 5.0mm, Magnetic Field Strength GREATER THAN OR EQUAL TO 1.5T
- A special rule/operator to select axial/coronal/sagittal series based on the value of the ImageOrientationPatient tag. I can supply the logic needed here. Otherwise this task is a little fiddly for users (requiring some vector manipulation) despite being extremely common.
- Capability to rank series as well apply hard criteria. E.g. choose the image with the lowest value of Slice Thickness from the available series
- Filter out series whose geometry is inconsistent. If a series of images does not have consistent spacing between consecutive slices, it is certain to mess up any downstream volumetric analysis. This is an unfortunately common occurrence in my experience. Checking that the spacing between consecutive slices in the distance perpendicular to the imaging plane (ImageOrientationPatient) is consistent to within some small tolerance (0.05mm) can save a lot of headaches downstream. I'm happy to supply the logic here also.
- Capability to remove individual instances of series where the value of some attribute(s) do not match the rest of the series. For example, there are often series where one or two instances have a different ImageOrientationPatient to the rest of the instances in the series. Typically these are localizer images that should be discarded before analysis
Feel free to assign specific tasks from this to me once the way rules should be specified are sorted out.
Overall, the complexity of series selection is absolutely not to be underestimated. I would suggest that we have classes implementing individual series selection steps that can be composed by the user to form a series selection pipeline in the DICOMSeriesSelector, much like transforms are composed in MONAI Core. The ability to extend via subclassing would be extremely helpful for the trickier situations that may need custom logic.
Describe alternatives you've considered
Dedicated application specific operators can be developed, for examples, to further sifting through a already coarsely selected set of series in a study. The Domain class, StudySelectedSeries, supports a list of matching series for a input study, and can be used in the chain of selection operators.
Additional context
Thanks @CPBridge for providing the advanced, and real world, use cases and the RFE's.