DICOM
DICOM Homepage: dicom.nema.org
Python interface pydicom.org
DICOM Beispiel Dateien
DICOM Library: Anonymize, Share, View
University of Iowa: Visible Human
OsiriX® Imagin Software: sample image sets
MATLAB® Central: Example Files
aycan®: samples
stackoverflow: download “.dcm” files for free?

DICOM 2D Plots

Eine DICOM Datei enthält in der Regel ein Bild. Dieses Bild kann mit Matplotlib als 2D Plot visualisiert werden.
import numpy as np
import matplotlib.pyplot as plt
import dicom

data = dicom.read_file("IMG00129")
pixel_array = data.PixelArray
dx, dy = data.PixelSpacing
dx, dy = float(dx), float(dy)
x_1d = dx * np.arange(pixel_array.shape[0])
y_1d = dy * np.arange(pixel_array.shape[1])[::-1]
x_2d, y_2d = np.meshgrid(x_1d, y_1d)

plt.figure(figsize=(7,7))
plt.pcolormesh(x_2d, y_2d, pixel_array)
plt.gca().set_aspect("equal")
plt.savefig("dicom_2d_1.jpg", bbox_inches="tight") 
plt.show()
DICOM 2D Plot
Für weitere Auswertungen ist es hilfreich, sich zunächst ein Histogramm der DICOM-Daten zu plotten.
import numpy as np
import matplotlib.pyplot as plt
import dicom

data = dicom.read_file("IMG00129")
pixel_array = data.PixelArray

plt.figure()
bins=np.linspace(pixel_array.min(),pixel_array.max(),101)
plt.hist(pixel_array.flatten(), bins, normed=1, histtype='bar')
plt.xlim(0,180)
plt.savefig("dicom_histogram.jpg", bbox_inches="tight")
plt.show()
DICOM Histogram
Damit kann der Plot auf den interessanten Wertebereich eingeschränkt werden.
import numpy as np
import matplotlib.pyplot as plt
import dicom

data = dicom.read_file("IMG00129")
pixel_array = data.PixelArray
dx, dy = data.PixelSpacing
dx, dy = float(dx), float(dy)
x_1d = dx * np.arange(pixel_array.shape[0])
y_1d = dy * np.arange(pixel_array.shape[1])[::-1]
x_2d, y_2d = np.meshgrid(x_1d, y_1d)

plt.figure(figsize=(7,7))
pcolormesh = plt.pcolormesh(x_2d, y_2d, pixel_array, cmap=plt.get_cmap("coolwarm"))
pcolormesh.set_clim(vmin=5, vmax=140)
plt.gca().set_aspect("equal")
plt.savefig("dicom_2d_2.jpg", bbox_inches="tight") 

plt.show()
DICOM 2D Plot