dicom-rs
dicom-rs copied to clipboard
Inspect shared/per-frame functional groups
The decoding of pixel data via the trait PixelDecoder is currently implemented for the default DICOM object type to retrieve basic Modality LUT function properties and VOI LUT properties at the root of the main data set, such as Rescale Slope, Rescale Intercept, Window Width, and Window Center. However, some classes of DICOM multi-frame data may encode this information in functional groups.
- The Modality LUT function (e.g. Rescale Type) may instead be specified in the Pixel Value Transformation Sequence item of a functional group.
- And the VOI LUT function specification and properties (e.g. VOI LUT Function) may be present in a Frame VOI LUT Sequence item.
In turn, these sequences may be either in the Shared Functional Groups Sequence, when the properties are to be shared among multiple frames, or in a Per-frame Functional Groups Sequence item when these properties differ between frames.
While there may be many other scenarios than this, supporting the retrieval of Modality and VOI LUT function attributes in these functional groups would already serve as a great baseline. This in turn may require changing the specification of DecodedPixelData so that it may hold per-frame attributes, or retrieve them at a later date from the original object.
Hi @Enet4 thank you for maintaining this wonderful package! I have familiarity with dicom (particularly multi-frame), but am fairly new to rust. Could you elaborate on what you'd like this ability to look like? I'd like to take a crack at it if you are willing.
Thank you for your interest @naterichman! I have expanded the issue with more information. I am also available for answering any questions and/or providing some guidance, if you are interested in going through with this feature.