DICOM (Digital Imaging and Communications in Medicine) est une norme internationale pour les images médicales et les informations associées (ISO 12052). L'article suivant vous présente principalement les informations pertinentes sur la lecture d'images DICOM par python. Les amis dans le besoin peuvent s'y référer.
Introduction à DICOM
Les images DICOM3.0 sont des images d'imagerie médicale standard produites par des équipements d'imagerie médicale. DICOM est largement utilisé en médecine radiologique, cardiologie L'imagerie vasculaire et les équipements de diagnostic et de traitement radiologiques (rayons X, tomodensitométrie, IRM, échographie, etc.) sont de plus en plus utilisés dans d'autres domaines médicaux tels que l'ophtalmologie et la dentisterie. Avec des dizaines de milliers d’appareils d’imagerie médicale utilisés, DICOM est l’une des normes d’information médicale les plus largement déployées. Actuellement, il existe environ des dizaines de milliards d’images médicales conformes aux normes DICOM à usage clinique. Comment lire des fichiers image apparemment mystérieux ? Une recherche informelle sur Internet révélera de nombreuses méthodes, mais il manque une méthode d'utilisation plus systématique. L'article suivant combinera les informations Baidu et python2.7 pour expliquer comment lire et utiliser les images DICOM.
La lecture d'images DICOM nécessite les bibliothèques suivantes : pydicom, CV2, numpy, matplotlib. pydicom est un package spécifique à Python spécialisé dans le traitement des images Dicom, numpy est un package qui gère efficacement les calculs scientifiques et est une bibliothèque pour dessiner
basé sur des données.pip install matplotlib
pip install opencv-python #opencv的安装,小度上基本都是要下载包,安装包后把包复制到某个文件夹下, #后来我在https://pypi.python.org/pypi/opencv-python找到这种pip的安装方法,亲测可用
pip install pydicom
pip install numpy
Dans l'image DICOM, il y a un dictionnaire contenant des informations relatives au patient. Nous pouvons passer dir Vérifiez les informations dans le fichier DICOM et renvoyez les valeurs pertinentes via le dictionnaire.
#-*-coding:utf-8-*- import cv2 import numpy import dicom from matplotlib import pyplot as plt dcm = dicom.read_file("AT0001_100225002.DCM") dcm.image = dcm.pixel_array * dcm.RescaleSlope + dcm.RescaleIntercept slices = [] slices.append(dcm) img = slices[ int(len(slices)/2) ].image.copy() ret,img = cv2.threshold(img, 90,3071, cv2.THRESH_BINARY) img = numpy.uint8(img) im2, contours, _ = cv2.findContours(img,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE) mask = numpy.zeros(img.shape, numpy.uint8) for contour in contours: cv2.fillPoly(mask, [contour], 255) img[(mask > 0)] = 255 kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(2,2)) img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) img2 = slices[ int(len(slices)/2) ].image.copy() img2[(img == 0)] = -2000 plt.figure(figsize=(12, 12)) plt.subplot(131) plt.imshow(slices[int(len(slices) / 2)].image, 'gray') plt.title('Original') plt.subplot(132) plt.imshow(img, 'gray') plt.title('Mask') plt.subplot(133) plt.imshow(img2, 'gray') plt.title('Result') plt.show()
import dicom import json def loadFileInformation(filename): information = {} ds = dicom.read_file(filename) information['PatientID'] = ds.PatientID information['PatientName'] = ds.PatientName information['PatientBirthDate'] = ds.PatientBirthDate information['PatientSex'] = ds.PatientSex information['StudyID'] = ds.StudyID information['StudyDate'] = ds.StudyDate information['StudyTime'] = ds.StudyTime information['InstitutionName'] = ds.InstitutionName information['Manufacturer'] = ds.Manufacturer print dir(ds) print type(information) return information a=loadFileInformation('AT0001_100225002.DCM') print a
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!