Esempio n. 1
0
def create_data_element(dicom_dataset):
    """Return a ``gdcm.DataElement`` for the *Pixel Data*.

    Parameters
    ----------
    dicom_dataset : dataset.Dataset
        The :class:`~pydicom.dataset.Dataset` containing the *Pixel
        Data*.

    Returns
    -------
    gdcm.DataElement
        The converted *Pixel Data* element.
    """
    data_element = gdcm.DataElement(gdcm.Tag(0x7fe0, 0x0010))
    if dicom_dataset.file_meta.TransferSyntaxUID.is_compressed:
        if getattr(dicom_dataset, 'NumberOfFrames', 1) > 1:
            pixel_data_sequence = pydicom.encaps.decode_data_sequence(
                dicom_dataset.PixelData)
        else:
            pixel_data_sequence = [
                pydicom.encaps.defragment_data(dicom_dataset.PixelData)
            ]

        fragments = gdcm.SequenceOfFragments.New()
        for pixel_data in pixel_data_sequence:
            fragment = gdcm.Fragment()
            fragment.SetByteStringValue(pixel_data)
            fragments.AddFragment(fragment)
        data_element.SetValue(fragments.__ref__())
    else:
        data_element.SetByteStringValue(dicom_dataset.PixelData)

    return data_element
Esempio n. 2
0
def create_data_element(dicom_dataset):
    """Create a gdcm.DataElement containing PixelData from a FileDataset

    Parameters
    ----------
    dicom_dataset : FileDataset


    Returns
    -------
    gdcm.DataElement
        Converted PixelData element
    """
    data_element = gdcm.DataElement(gdcm.Tag(0x7fe0, 0x0010))
    if dicom_dataset.file_meta.TransferSyntaxUID.is_compressed:
        if getattr(dicom_dataset, 'NumberOfFrames', 1) > 1:
            pixel_data_sequence = pydicom.encaps.decode_data_sequence(
                dicom_dataset.PixelData)
        else:
            pixel_data_sequence = [
                pydicom.encaps.defragment_data(dicom_dataset.PixelData)
            ]

        fragments = gdcm.SequenceOfFragments.New()
        for pixel_data in pixel_data_sequence:
            fragment = gdcm.Fragment()
            fragment.SetByteStringValue(pixel_data)
            fragments.AddFragment(fragment)
        data_element.SetValue(fragments.__ref__())
    else:
        data_element.SetByteStringValue(dicom_dataset.PixelData)

    return data_element
Esempio n. 3
0
def create_data_element(ds: "Dataset") -> "DataElement":
    """Return a ``gdcm.DataElement`` for the *Pixel Data*.

    Parameters
    ----------
    ds : dataset.Dataset
        The :class:`~pydicom.dataset.Dataset` containing the *Pixel
        Data*.

    Returns
    -------
    gdcm.DataElement
        The converted *Pixel Data* element.
    """
    file_meta: "FileMetaDataset" = ds.file_meta  # type: ignore[has-type]
    tsyntax = cast(UID, file_meta.TransferSyntaxUID)
    data_element = gdcm.DataElement(gdcm.Tag(0x7fe0, 0x0010))
    if tsyntax.is_compressed:
        if getattr(ds, 'NumberOfFrames', 1) > 1:
            pixel_data_sequence = (
                pydicom.encaps.decode_data_sequence(ds.PixelData)
            )
        else:
            pixel_data_sequence = [
                pydicom.encaps.defragment_data(ds.PixelData)
            ]

        fragments = gdcm.SequenceOfFragments.New()
        for pixel_data in pixel_data_sequence:
            fragment = gdcm.Fragment()
            fragment.SetByteStringValue(pixel_data)
            fragments.AddFragment(fragment)
        data_element.SetValue(fragments.__ref__())
    else:
        data_element.SetByteStringValue(ds.PixelData)

    return data_element