16 GDCM 1.x would write out MR Image Storage as Secondary Capture Object while still setting Rescale Slope/Intercept
17 and saving the Pixel Spacing in (0028,0030)
23 def CheckSecondaryCaptureObjectIsMRImageStorage(r):
24 ds = r.GetFile().GetDataSet()
26 if ds.FindDataElement(
gdcm.Tag(0x0008,0x2112) ):
27 sis = ds.GetDataElement(
gdcm.Tag(0x0008,0x2112) )
28 sqsis = sis.GetSequenceOfItems()
29 if sqsis.GetNumberOfItems():
30 item1 = sqsis.GetItem(1)
31 nestedds = item1.GetNestedDataSet()
32 if nestedds.FindDataElement(
gdcm.Tag(0x0008,0x1150) ):
33 ReferencedSOPClassUID = nestedds.GetDataElement(
gdcm.Tag(0x0008,0x1150) )
34 raw = ReferencedSOPClassUID.GetByteValue().GetPointer()
39 msuid = ms.GetString()
40 uids.SetFromUID( msuid )
41 msuidname = uids.GetName()
42 uids.SetFromUID( raw )
43 sqmsuidname = uids.GetName()
45 if( sqmsuidname ==
'MR Image Storage' and msuidname ==
'Secondary Capture Image Storage' ):
50 if __name__ ==
"__main__":
52 filename = sys.argv[1]
53 r.SetFileName( filename )
58 if( CheckSecondaryCaptureObjectIsMRImageStorage(r) ):
66 image.SetSpacing(0, mrspacing[0] )
67 image.SetSpacing(1, mrspacing[1] )
68 image.SetSpacing(2, mrspacing[2] )
71 image.SetIntercept( ris[0] )
72 image.SetSlope( ris[1] )
74 outfilename = sys.argv[2]
76 w.SetFileName( outfilename )
77 w.SetFile( r.GetFile() )