Skip to content

Commit 1ea3532

Browse files
committed
Move pixel value transforms to general image init
1 parent 8bbf1a1 commit 1ea3532

3 files changed

Lines changed: 21 additions & 19 deletions

File tree

src/highdicom/image.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1269,6 +1269,10 @@ def _init_multiframe_image(
12691269
) = PixelRepresentationValues.UNSIGNED_INTEGER,
12701270
contains_recognizable_visual_features: bool | None = None,
12711271
burned_in_annotation: bool | None = None,
1272+
use_default_pixel_value_transformation: bool = False,
1273+
shared_voi_lut_transformations: (
1274+
Sequence[VOILUTTransformation] | None
1275+
) = None,
12721276
palette_color_lut_transformation: PaletteColorLUTTransformation | None,
12731277
icc_profile: bytes | None = None,
12741278
pixel_measures: PixelMeasuresSequence | None = None,
@@ -1549,6 +1553,17 @@ def _init_multiframe_image(
15491553
# Set to None so this is not used for per-frame items later
15501554
add_channel_callback = None
15511555

1556+
if use_default_pixel_value_transformation:
1557+
# Identity Pixel Value Transformation
1558+
transformation_item = Dataset()
1559+
transformation_item.RescaleIntercept = 0
1560+
transformation_item.RescaleSlope = 1
1561+
transformation_item.RescaleType = 'US'
1562+
sffg_item.PixelValueTransformationSequence = [transformation_item]
1563+
1564+
if shared_voi_lut_transformations is not None:
1565+
sffg_item.FrameVOILUTSequence = shared_voi_lut_transformations
1566+
15521567
self.SharedFunctionalGroupsSequence = [sffg_item]
15531568

15541569
# Find indices such that empty planes are removed

src/highdicom/pm/sop.py

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -577,9 +577,13 @@ def add_channel_callback(
577577
),
578578
bits_allocated=bits_allocated,
579579
samples_per_pixel=1,
580+
use_default_pixel_value_transformation=True,
581+
shared_voi_lut_transformations=voi_lut_transformations,
580582
palette_color_lut_transformation=palette_color_lut_transformation,
581583
icc_profile=icc_profile,
582-
contains_recognizable_visual_features=False,
584+
contains_recognizable_visual_features=(
585+
contains_recognizable_visual_features
586+
),
583587
burned_in_annotation=False,
584588
pixel_measures=pixel_measures,
585589
plane_orientation=plane_orientation,
@@ -600,24 +604,6 @@ def add_channel_callback(
600604
channel_is_indexed=False,
601605
)
602606

603-
# Identity Pixel Value Transformation
604-
transformation_item = Dataset()
605-
transformation_item.RescaleIntercept = 0
606-
transformation_item.RescaleSlope = 1
607-
transformation_item.RescaleType = 'US'
608-
(
609-
self
610-
.SharedFunctionalGroupsSequence[0]
611-
.PixelValueTransformationSequence
612-
) = [transformation_item]
613-
614-
# Frame VOI LUT With LUT
615-
(
616-
self
617-
.SharedFunctionalGroupsSequence[0]
618-
.FrameVOILUTSequence
619-
) = voi_lut_transformations
620-
621607
# Parametric Map Frame Type
622608
frame_type_item = Dataset()
623609
frame_type_item.FrameType = self.ImageType

src/highdicom/seg/sop.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,7 @@ def preprocess_channel_callback(
707707
samples_per_pixel=1,
708708
image_type=['DERIVED', 'PRIMARY'],
709709
pixel_representation=PixelRepresentationValues.UNSIGNED_INTEGER,
710+
use_default_pixel_value_transformation=False,
710711
palette_color_lut_transformation=palette_color_lut_transformation,
711712
icc_profile=icc_profile,
712713
pixel_measures=pixel_measures,

0 commit comments

Comments
 (0)