Create pydicom file from numpy array

后端 未结 5 1014
别跟我提以往
别跟我提以往 2020-12-16 04:42

I\'m trying to create a mew dicom image from a standard-sized (512 x 512 or 256 x 256) numpy array. It seems like this should be straightforward, and I\'ve adapted my code

5条回答
  •  自闭症患者
    2020-12-16 05:18

    The above example works but causes many tools to complain about the DICOMs and they cannot even be read at all using itk/SimpleITK as a stack. The best way I have found for making DICOMs from numpy is by using the SimpleITK tools and generating the DICOMs slice-by-slice. A basic example (https://github.com/zivy/SimpleITK/blob/8e94451e4c0e90bcc6a1ffdd7bc3d56c81f58d80/Examples/DicomSeriesReadModifyWrite/DicomSeriesReadModifySeriesWrite.py) shows how to load in a stack, perform a transformation and then resave the files, but this can easily be modified by using the

    import SimpleITK as sitk
    filtered_image = sitk.GetImageFromArray(my_numpy_array)
    

    The number of tags ultimately in output image is quite large and so manually creating all of them is tedious. Additionally SimpleITK supports 8, 16, 32-bit images as well as RGB so it is much easier than making them in pydicom.

    (0008, 0008) Image Type                          CS: ['DERIVED', 'SECONDARY']
    (0008, 0016) SOP Class UID                       UI: Secondary Capture Image Storage
    (0008, 0018) SOP Instance UID                    UI: 1.2.826.0.1.3680043.2.1125.1.35596048796922805578234000521866725
    (0008, 0020) Study Date                          DA: '20170803'
    (0008, 0021) Series Date                         DA: '20170803'
    (0008, 0023) Content Date                        DA: 0
    (0008, 0030) Study Time                          TM: '080429.171808'
    (0008, 0031) Series Time                         TM: '080429'
    (0008, 0033) Content Time                        TM: 0
    (0008, 0050) Accession Number                    SH: ''
    (0008, 0060) Modality                            CS: 'OT'
    (0008, 0064) Conversion Type                     CS: 'WSD'
    (0008, 0090) Referring Physician's Name          PN: ''
    (0010, 0010) Patient's Name                      PN: ''
    (0010, 0020) Patient ID                          LO: ''
    (0010, 0030) Patient's Birth Date                DA: ''
    (0010, 0040) Patient's Sex                       CS: ''
    (0018, 2010) Nominal Scanned Pixel Spacing       DS: ['1', '3']
    (0020, 000d) Study Instance UID                  UI: 1.2.826.0.1.3680043.2.1125.1.33389357207068897066210100430826006
    (0020, 000e) Series Instance UID                 UI: 1.2.826.0.1.3680043.2.1125.1.51488923827429438625199681257282809
    (0020, 0010) Study ID                            SH: ''
    (0020, 0011) Series Number                       IS: ''
    (0020, 0013) Instance Number                     IS: ''
    (0020, 0020) Patient Orientation                 CS: ''
    (0020, 0052) Frame of Reference UID              UI: 1.2.826.0.1.3680043.2.1125.1.35696880630664441938326682384062489
    (0028, 0002) Samples per Pixel                   US: 1
    (0028, 0004) Photometric Interpretation          CS: 'MONOCHROME2'
    (0028, 0010) Rows                                US: 40
    (0028, 0011) Columns                             US: 50
    (0028, 0100) Bits Allocated                      US: 32
    (0028, 0101) Bits Stored                         US: 32
    (0028, 0102) High Bit                            US: 31
    (0028, 0103) Pixel Representation                US: 1
    (0028, 1052) Rescale Intercept                   DS: "0"
    (0028, 1053) Rescale Slope                       DS: "1"
    (0028, 1054) Rescale Type                        LO: 'US'
    (7fe0, 0010) Pixel Data                          OW: Array of 8000 bytes
    

提交回复
热议问题