def WriteDCMFile(pixel_array,filename): file_meta = Dataset() file_meta.MediaStorageSOPClassUID = 'RT Image Storage' file_meta.MediaStorageSOPInstanceUID = '1.3.6.1.4.1.9590.100.1.1.111165684411017669021768385720736873780' file_meta.ImplementationClassUID = '1.3.6.1.4.1.9590.100.1.0.100.4.0' ds = FileDataset(filename, {},file_meta = file_meta,preamble="\0"*128) ds.Modality = 'RTIMAGE' ds.ContentDate = str(datetime.date.today()).replace('-','') ds.ContentTime = str(time.time()) #milliseconds since the epoch ds.StudyInstanceUID = '1.3.6.1.4.1.9590.100.1.1.124313977412360175234271287472804872093' ds.SeriesInstanceUID = '1.3.6.1.4.1.9590.100.1.1.369231118011061003403421859172643143649' ds.SOPInstanceUID = '1.3.6.1.4.1.9590.100.1.1.111165684411017669021768385720736873780' ds.SOPClassUID = 'RT Image Storage' ds.SecondaryCaptureDeviceManufacturer = 'Varian Medical Systems' ## These are the necessary imaging components of the FileDataset object. ds.SamplesPerPixel = 1 ds.ImagePlanePixelSpacing=[0.392,0.392] ds.PhotometricInterpretation = "MONOCHROME2" ds.PixelRepresentation = 0 ds.HighBit = 15 ds.BitsStored = 16 ds.BitsAllocated = 16 # ds.SmallestImagePixelValue = '\\x00\\x00' # ds.LargestImagePixelValue = '\\xff\\xff' ds.Columns =1024# pixel_array.shape[0] ds.Rows =764# pixel_array.shape[1] ds.RescaleSlope=1.0 ds.RescaleIntercept=1.0 # if type(pixel_array) != np.uint16: # pixel_array =np.uint16(pixel_array) ds.PixelData = pixel_array ds.save_as(filename,write_like_original=True) return