我的代码读取一个DICOM文件,将像素信息带到numpy数组中,然后修改numpy数组。它使用列表,因为im试图同时操作多个DICOM文件。 我还没有找到任何关于如何将修改后的numpy数组再次变成DICOM文件以便在Python之外使用它的信息。在
#IMPORT
import cv2
import numpy as np
from matplotlib import pyplot as plt
import matplotlib.pyplot as plt
import SimpleITK as sitk
from glob import glob
import pydicom as dicom
data_path = "C:\\Users\\oliva\\Desktop\\Py tesis\\dicom\\"
output_path = working_path = "C:\\Users\\oliva\\Desktop\\Py tesis\\dicom1\\"
path = glob(data_path + '/*.dcm')
#Checks if we are in the correct path
print ("Total of %d DICOM images.\nFirst 5 filenames:" % len(path))
print ('\n'.join(path[:14]))
data_set = []
for element in path:
imagen=sitk.ReadImage(element)
#imagen = cv2.imread(element)
array_imagen = sitk.GetArrayViewFromImage(imagen)
array2_imagen=array_imagen[0]
imagen_array_norm = np.uint8(cv2.normalize(array2_imagen, None, 0, 255, cv2.NORM_MINMAX))
data_set.append(imagen_array_norm)
#Check
print(len(data_set))
print(type(data_set[1]))
plt.imshow(data_set[4], cmap=plt.cm.gray)
#Equalization
data_set_eq = equal(data_set)
print(len(data_set_eq))
print(type(data_set_eq[6]))
plt.imshow(data_set_eq[7], cmap=plt.cm.gray)
#Filtering
data_set_m = median(data_set)
print(len(data_set_m))
print(type(data_set_m[6]))
plt.imshow(data_set_m[8], cmap=plt.cm.gray)
#Functions
def equal(data):
data_set_eq = []
for element in data_set:
imagen_array_eq = cv2.equalizeHist(element)
data_set_eq.append(imagen_array_eq)
return data_set_eq
def median(data):
data_set_m = []
for element in data_set:
imagen_array_m =cv2.medianBlur(element,5)
data_set_m.append(imagen_array_m)
return data_set_m
我想要一些关于如何从修改过的numpy数组生成DICOM文件的启示。在
您可以将numpy数组转换回SimpleITK映像,然后将其写成Dicom。代码如下所示:
从文件名后缀来看,SimpleITK知道写Dicom。在
请注意,您正在进行的过滤可以在SimpleITK中完成。你不需要使用OpenCV。在SimpleITK中查看以下过滤器:IntensityWindowingImageFilter、adaptivehistoragequalizationfilter和MedianImageFilter。在
https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1IntensityWindowingImageFilter.htmlhttps://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1AdaptiveHistogramEqualizationImageFilter.htmlhttps://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1MedianImageFilter.html
相关问题 更多 >
编程相关推荐