文章目录
1理论基础
使用DCM格式文件,进行三维重建。要了解DCM格式,可参考医疗CT断层图像DICOM标准和工业CT断层图像DICONDE标准。
在使用DCM格式文件进行三维重建时,实际上是要从若干DCM文件中,获得到三维结构信息。然后再使用面绘制或体绘制的方面,重建出三维图像。
2 代码(python)
prepro.py
import matplotlib.pyplot as plt
import pydicom.uid
import sys
from PyQt5 import QtGui
import os
import pydicom
import glob
from PIL import *
import matplotlib.pyplot as plt
from pylab import *
from tkinter.filedialog import *
import numpy
import SimpleITK as sitk
def window(img):
win_min = 350
win_max = 50
for i in range(img.shape[0]):
img[i] = 255.0 * (img[i] - win_min) / (win_max - win_min)
min_index = img[i] < 0
img[i][min_index] = 0
max_index = img[i] > 255
img[i][max_index] = 255
img[i] = img[i] - img[i].min()
c = float(255) / img[i].max()
img[i] = img[i] * c
return img.astype(np.uint8)
def get_pixels_hu(ct_array,slope,intercept):
if slope != 1:
ct_array = slope*ct_array
ct_array += intercept
return ct_array
PathDicom = "D:/xiangmu/CT/data/CQ500_CT/CQ500CT181 CQ500CT181/Unknown Study/CT 0.625mm"
# PathDicom = r'D:\xiangmu\CT\data\CQ500_CT\CQ500CT0 CQ500CT0\Unknown Study\CT 4cc sec 150cc D3D on'
lstFilesDCM = []
SaveRawDicom = "SaveRaw/"
reader=sitk.ImageSeriesReader()
series_IDs=sitk.ImageSeriesReader.GetGDCMSeriesIDs(PathDicom)
nb_series=len(series_IDs)
# print(nb_series)
series_file_names=sitk.ImageSeriesReader.GetGDCMSeriesFileNames(PathDicom,series_IDs[0])
reader.SetFileNames(series_file_names)
image=reader.Execute()
# median 滤波
sitk_median = sitk.MedianImageFilter()
sitk_median.SetRadius(2)
image = sitk_median.Execute(image)
# sitk.WriteImage(sitk_median, 'sitk_median.mha')
#增强
print('before:',image)
# for root,dirs,files in os.walk(PathDicom):
# for file in files:
# print(os.path.join(root,file))
# image=sitk.ReadImage(os.path.join(root,file))
resample=sitk.ResampleImageFilter()
resample.SetInterpolator(sitk.sitkLinear)<