コード例 #1
0
    def generateCustomDicomFiles(self, studySeriesSopUIDsTuple,
                                 customFieldsDictionary, sourceDcmFile,
                                 destFolder):
        dcmReader = DicomReader(sourceDcmFile)
        patientName = customFieldsDictionary['PATIENT_NAME']
        patientID = customFieldsDictionary['PATIENT_ID']
        accessionNumber = customFieldsDictionary['ACCESSION_NUMBER']

        for uids in studySeriesSopUIDsTuple:
            studyUID = uids[0]
            seriesUID = uids[1]
            sopUID = uids[2]
            destFile = destFolder + '/' + sopUID + '.' + patientID + '.dcm'

            substitutionList = []
            substitutionList.append(['PatientsName', patientName])
            substitutionList.append(['PatientID', patientID])
            substitutionList.append(['AccessionNumber', accessionNumber])
            substitutionList.append(['StudyInstanceUID', studyUID])
            substitutionList.append(['SeriesInstanceUID', seriesUID])
            substitutionList.append(['SOPInstanceUID', sopUID])
            substitutionList.append(['MediaStorageSOPInstanceUID', sopUID])
            # file meta
            success = dcmReader.saveAs(destFile, substitutionList)
        return success
 def _findKosFile(self, retreivedFilesDirectory):
     for file in os.listdir(retreivedFilesDirectory):
         filePath = retreivedFilesDirectory + '/' + file;
         if(DicomReader().isValidDcmFile(filePath)):
             kosDcm = DicomReader(filePath);
             if kosDcm.containsKosSequence():
                 return kosDcm;
     return None;
コード例 #3
0
 def _findKosFile(self, retreivedFilesDirectory):
     for file in os.listdir(retreivedFilesDirectory):
         filePath = retreivedFilesDirectory + '/' + file;
         if(DicomReader().isValidDcmFile(filePath)):
             kosDcm = DicomReader(filePath);
             if kosDcm.containsKosSequence():
                 return kosDcm;
     return None;
 def _findNonKosDicomFiles(self, retreivedFilesDirectory):
     dcms = [];
     for file in os.listdir(retreivedFilesDirectory):
         filePath = retreivedFilesDirectory + '/' + file;
         if(DicomReader().isValidDcmFile(filePath)):
             dcm = DicomReader(filePath);
             if not dcm.containsKosSequence():
                 dcms.append(dcm);
     return dcms;
コード例 #5
0
 def _findNonKosDicomFiles(self, retreivedFilesDirectory):
     dcms = [];
     for file in os.listdir(retreivedFilesDirectory):
         filePath = retreivedFilesDirectory + '/' + file;
         if(DicomReader().isValidDcmFile(filePath)):
             dcm = DicomReader(filePath);
             if not dcm.containsKosSequence():
                 dcms.append(dcm);
     return dcms;
 def generateCustomDicomFiles(self, studySeriesSopUIDsTuple, customFieldsDictionary, sourceDcmFile, destFolder):
     dcmReader = DicomReader(sourceDcmFile);
     patientName = customFieldsDictionary['PATIENT_NAME'];
     patientID = customFieldsDictionary['PATIENT_ID'];
     accessionNumber = customFieldsDictionary['ACCESSION_NUMBER'];
     
     for uids in studySeriesSopUIDsTuple:
         studyUID = uids[0];
         seriesUID = uids[1];
         sopUID = uids[2];
         destFile = destFolder + '/' + sopUID + '.' + patientID + '.dcm';
         
         substitutionList = [];
         substitutionList.append(['PatientsName', patientName]);
         substitutionList.append(['PatientID', patientID]);
         substitutionList.append(['AccessionNumber', accessionNumber]);
         substitutionList.append(['StudyInstanceUID', studyUID]);
         substitutionList.append(['SeriesInstanceUID', seriesUID]);
         substitutionList.append(['SOPInstanceUID', sopUID]);
         substitutionList.append(['MediaStorageSOPInstanceUID', sopUID]); # file meta
         success = dcmReader.saveAs(destFile, substitutionList);
     return success;
コード例 #7
0
print('Getting Patient Diagnosis From %s' % (patients_csv))
for index, row in data.iterrows():
    if row['cancer'] == 0:
        patient_diagnosis[row['id']] = np.array([1,0])
    else:
        patient_diagnosis[row['id']] = np.array([0,1])


# Resample the images not found in the resampled directory.
# This will take some time.
for i in range(len(processPatientArray)):
    patient_name = processPatientArray[i].split(file_split)[-1]
    print('[%d/%d]\tPatient %s' % (i+1, len(processPatientArray), patient_name)) 

    print('\tReading Slices...')
    slices = DicomReader.readFromDir(processPatientArray[i])

    print('\tConverting to hu...')
    image = DicomReader.convertHounsfield(slices)

    print('\tDownsizing...')
    resampled_image = ImageMath.downsize(image, downsize_shape)

    print('\tReshaping Slices...')
    resampled_image = ImageMath.chunkify(resampled_image, slice_target=slice_count)

    print('\tExtracting Lung Data...')
    lungs = DicomReader.segmentLungMask(resampled_image, False)

    print('\tNormalizing...')
    lungs = ImageMath.normalize(lungs)
 def _extractSopInstanceUID(self, dcmFileName):
     if DicomReader().isValidDcmFile(dcmFileName):
         dcm = DicomReader(dcmFileName);
         return dcm.getSopInstanceUID();
コード例 #9
0
 def _extractSopInstanceUID(self, dcmFileName):
     if DicomReader().isValidDcmFile(dcmFileName):
         dcm = DicomReader(dcmFileName);
         return dcm.getSopInstanceUID();
コード例 #10
0
 def __init__(self, path):
     DicomReader(path).read()
コード例 #11
0
class DicomWorker:

    def __init__(self, path):
        DicomReader(path).read()

if __name__ == "__main__":
    ap = argparse.ArgumentParser(
        description="",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter
    )

    #apg = ap.add_argument_group(title="Input Output")
    #apg.add_argument("-i", "--input", help="Input 7 Segment Image", type=str, default="7SegInput.png")
    #apg.add_argument("-o", "--output", help="Output 7 Segment Font", type=str, default="7SegOutput.bmp")
    #apg.add_argument("-b", "--background", help="Background color", type=int, nargs=3, default=[3, 17, 34])
    #apg.add_argument("-c", "--color", help="Segment color", type=int, nargs=3, default=[255, 255, 0])
    #apg.add_argument("-r", "--rainbow", help="Segment color", action='store_true')
    #apg.add_argument("-s", "--skewness", help="Italic factor", type=float, default=0)

    #args = ap.parse_args(sys.argv[1:])

    dw = DicomReader("/data/image/tcia/110/")

    imageVtk = VtkImageHelper()
    print(dw.getImageInformation())
    test = imageVtk.createVtkMarchingCube(dw.getArrayDicom(), dw.getImageInformation())
    writer = vtk.vtkXMLPolyDataWriter()
    writer.SetFileName("/home/christoph/test.vtp")
    writer.SetInputData(test)
    writer.Write()