18 python --public /path/to/directory/
20 python --private /path/to/directory/
22 python --public --extension bak /path/to/directory/
24 rename -f 's/\.bak$//' *.bak
27 http://docs.python.org/library/optparse.html#module-optparse
35 def ProcessOneFilePublic(filename, outfilename, tmpfile):
37 vtkreader = vtkgdcm.vtkGDCMImageReader()
38 vtkreader.SetFileName( filename )
41 cast = vtk.vtkImageCast()
42 cast.SetInput( vtkreader.GetOutput() )
43 cast.SetOutputScalarTypeToUnsignedShort()
47 vtkwriter = vtkgdcm.vtkGDCMImageWriter()
48 vtkwriter.SetFileName( tmpfile )
49 vtkwriter.SetMedicalImageProperties( vtkreader.GetMedicalImageProperties() )
50 vtkwriter.SetDirectionCosines( vtkreader.GetDirectionCosines() )
51 print "Format:",vtkreader.GetImageFormat()
52 vtkwriter.SetImageFormat( vtkreader.GetImageFormat() )
53 vtkwriter.SetInput( cast.GetOutput() )
60 tmpreader.SetFileName( tmpfile )
61 if not tmpreader.Read():
65 reader.SetFileName( filename )
70 ds = reader.GetFile().GetDataSet()
80 writer.SetFileName( outfilename )
82 writer.SetImage( tmpreader.GetImage() )
84 writer.SetFile( reader.GetFile() )
85 if not writer.Write():
88 def ProcessOneFilePrivate(filename, outfilename, tmpfile):
89 vtkreader = vtkgdcm.vtkGDCMImageReader()
90 vtkreader.SetFileName( filename )
105 reader.SetFileName( filename )
106 if not reader.Read():
109 ds = reader.GetFile().GetDataSet()
111 el1 = ds.GetDataElement( tag1 )
112 el2 = ds.GetDataElement( tag2 )
119 print el1.GetByteValue()
120 v1 = eval(el1.GetByteValue().GetBuffer())
121 print el2.GetByteValue()
122 v2 = eval(el2.GetByteValue().GetBuffer())
129 ss = vtk.vtkImageShiftScale()
130 ss.SetInput( vtkreader.GetOutput() )
135 ss.SetOutputScalarTypeToUnsignedShort ()
140 vtkwriter = vtkgdcm.vtkGDCMImageWriter()
141 vtkwriter.SetFileName( tmpfile )
142 vtkwriter.SetMedicalImageProperties( vtkreader.GetMedicalImageProperties() )
143 vtkwriter.SetDirectionCosines( vtkreader.GetDirectionCosines() )
144 vtkwriter.SetImageFormat( reader.GetImageFormat() )
146 vtkwriter.SetInput( ss.GetOutput() )
153 tmpreader.SetFileName( tmpfile )
154 if not tmpreader.Read():
158 writer.SetFileName( outfilename )
160 writer.SetImage( tmpreader.GetImage() )
162 writer.SetFile( reader.GetFile() )
163 if not writer.Write():
166 if __name__ ==
"__main__":
172 tmpfile =
"/tmp/philips_rescaled.dcm"
174 rescaletype = sys.argv[1]
175 assert rescaletype ==
"--public" or rescaletype ==
"--private"
176 dirname = sys.argv[2]
180 for f
in d.GetFilenames():
182 ProcessOneFilePublic( f, f +
".bak", tmpfile )