Maison  >  Article  >  développement back-end  >  Partage d'exemples de code pour lire des images DICOM en python

Partage d'exemples de code pour lire des images DICOM en python

黄舟
黄舟original
2017-07-17 14:40:483240parcourir

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.

Installation :

pip install matplotlib
pip install opencv-python #opencv的安装,小度上基本都是要下载包,安装包后把包复制到某个文件夹下,
#后来我在https://pypi.python.org/pypi/opencv-python找到这种pip的安装方法,亲测可用
Si vous vous en souvenez bien, installez Lors de l'utilisation de pydicom, numpy sera également automatiquement installé.
pip install pydicom
pip install numpy
Après avoir installé ces bibliothèques, vous pouvez exploiter les fichiers Dicom.

Regardez le code suivant pour plus de détails :

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
Résumé

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn