网站打不开第二天不收录啦,二级域名可以做网站吗,o2o商城网站制作,插件wordpresspython处理DICOM并计算三维模型体积来源#xff1a;中文源码网 浏览#xff1a; 次 日期#xff1a;2019年11月5日【下载文档: python处理DICOM并计算三维模型体积.txt 】(友情提示:右键点上行txt文档名-目标另存为)python处理DICOM并计算三维模型体积在已知DICO…python处理DICOM并计算三维模型体积来源中文源码网 浏览 次 日期2019年11月5日【下载文档: python处理DICOM并计算三维模型体积.txt 】(友情提示:右键点上行txt文档名-目标另存为)python处理DICOM并计算三维模型体积在已知DICOM和三维模型对应掩膜的情况下计算三维模型的体积。思路1、计算每个体素的体积。每个体素为长方体xy为PixelSpacingz为层间距使用pydicom.read_file读取DICOM文件dcm_tag.PixelSpacing获取像素间距dcm_tag.SliceLocation 获取层间距2、计算体素的个数代码如下from PIL import Imageimport numpy as npimport pydicomimport osdef get_pixels_No(bmp_data_dir):pixels_No 0bmp_files os.listdir(bmp_data_dir)for bmp in bmp_files:bmp_file os.path.join(bmp_data_dir,bmp)img Image.open(bmp_file)img_array np.array(img)# img_array.dtype为布尔类型需要转换为Int类型其累加和恰好为体素总和img_array_int img_array.astype(int)pixels_No pixels_Noimg_array_int.sum()return pixels_Nodef get_pixel_info(dcm_data_dir):pixel_infos []dcm_files os.listdir(dcm_data_dir)dcm_file_1 os.path.join(dcm_data_dir,dcm_files[0])dcm_tag_1 pydicom.read_file(dcm_file_1)# 获取像素间距.spacex, spacey dcm_tag_1.PixelSpacing# 获取层间距# 有些 dcm图像并不是按照InstanceNumber进行排序的不能直接用最后一张的slicelocation减去第一张再除以张数SliceLocations []ImagePositon_z []for dcm in dcm_files:dcm_file os.path.join(dcm_data_dir, dcm)dcm_tag pydicom.read_file(dcm_file)SliceLocations.append(dcm_tag.SliceLocation)ImagePositon_z.append(dcm_tag.ImagePositionPatient[2])SliceLocations_max max(SliceLocations)SliceLocations_min min(SliceLocations)ImagePositon_z_max max(ImagePositon_z)ImagePositon_z_min min(ImagePositon_z)print(SliceLocations_max)print(SliceLocations_min)print(ImagePositon_z_max)print(ImagePositon_z_min)if SliceLocations_max - SliceLocations_min 1e-10:spacez abs(ImagePositon_z_max - ImagePositon_z_min)/(len(dcm_files)-1)else:spacez abs(SliceLocations_max - SliceLocations_min)/(len(dcm_files)-1)pixel_infos [spacex, spacey, spacez]return pixel_infosdef get_volume(dcm_data_dir,bmp_data_dir):pixel_infos get_pixel_info(dcm_data_dir)pixels_No get_pixels_No(bmp_data_dir)volumepixel_infos[0]*pixel_infos[1]*pixel_infos[2]*pixels_No/1000return volume# dcm pydicom.read_file(rE:\20181210090945_LENG HONGYING F-44Y\Venous\0000.dcm)# print(dcm)# print(dcm.ImagePositionPatient[2])# print(dcm[0x0020, 0x0032].keyword,dcm[0x0020, 0x0032].value)volumeget_volume(rE:\20181210090945_LENG HONGYING F-44Y\Venous,rE:\20181210090945_LENG HONGYING F-44Y\Results\LungL)print(体积为%.1f%volume)以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持中文源码网。亲,试试微信扫码分享本页! *^_^*