Enet4 / dicom-rs

Rust implementation of the DICOM standard
https://dicom-rs.github.io
Apache License 2.0
416 stars 81 forks source link

Inspect shared/per-frame functional groups #349

Closed Enet4 closed 6 months ago

Enet4 commented 1 year ago

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.

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.

naterichman commented 10 months ago

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.

Enet4 commented 10 months ago

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.