pydicom.pixels.utils.set_pixel_data

pydicom.pixels.utils.set_pixel_data(ds: Dataset, arr: np.ndarray, photometric_interpretation: str, bits_stored: int, *, generate_instance_uid: bool = True) None[source]

Use an ndarray to set a dataset’s Pixel Data and related Image Pixel module elements.

Added in version 3.0.

The following Image Pixel module elements values will be added, updated or removed as necessary:

  • (0028,0002) Samples per Pixel using a value corresponding to photometric_interpretation.

  • (0028,0004) Photometric Interpretation from photometric_interpretation.

  • (0028,0006) Planar Configuration will be added and set to 0 if Samples per Pixel is > 1, otherwise it will be removed.

  • (0028,0008) Number of Frames from the array shape, however it will be removed if arr only contains a single frame.

  • (0028,0010) Rows and (0028,0011) Columns from the array shape.

  • (0028,0100) Bits Allocated from the array dtype.

  • (0028,0101) Bits Stored and (0028,0102) High Bit from bits_stored.

  • (0028,0103) Pixel Representation from the array dtype.

In addition:

  • The Transfer Syntax UID will be set to Explicit VR Little Endian if it doesn’t already exist or uses a compressed (encapsulated) transfer syntax.

  • If generate_instance_uid is True (default) then the SOP Instance UID will be added or updated.

  • If a bool array is used then the pixel data will be bit-packed using pack_bits().

Changed in version 3.1: Added the ability to use a bool ndarray for Bits Allocated 1 with bit-packing.

Parameters:
  • ds (pydicom.dataset.Dataset) – The little endian encoded dataset to be modified.

  • arr (np.ndarray) –

    An array with dtype bool, uint8, uint16, int8 or int16. The array must be shaped as one of the following:

    • (rows, columns) for a single frame of grayscale data.

    • (frames, rows, columns) for multi-frame grayscale data.

    • (rows, columns, samples) for a single frame of multi-sample data such as RGB.

    • (frames, rows, columns, samples) for multi-frame, multi-sample data.

    Additionally, the length of the encoded array must be no larger than the maximum allowed for uncompressed Pixel Data (4294967294 bytes).

  • photometric_interpretation (str) – The value to use for (0028,0004) Photometric Interpretation. Valid values are "MONOCHROME1", "MONOCHROME2", "PALETTE COLOR", "RGB", "YBR_FULL", "YBR_FULL_422".

  • bits_stored (int) – The value to use for (0028,0101) Bits Stored. Must be no greater than the number of bits used by the itemsize of arr, or 1 in the case of an array of dtype bool.

  • generate_instance_uid (bool, optional) – If True (default) then add or update the (0008,0018) SOP Instance UID element with a value generated using generate_uid().