日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python计算长方体体积最简单代码_python处理DICOM并计算三维模型体积

發布時間:2024/9/27 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python计算长方体体积最简单代码_python处理DICOM并计算三维模型体积 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python處理DICOM并計算三維模型體積

來源:中文源碼網????瀏覽: 次????日期:2019年11月5日

【下載文檔:??python處理DICOM并計算三維模型體積.txt?】

(友情提示:右鍵點上行txt文檔名->目標另存為)

python處理DICOM并計算三維模型體積在已知DICOM和三維模型對應掩膜的情況下,計算三維模型的體積。

思路:

1、計算每個體素的體積。每個體素為長方體,x,y為PixelSpacing,z為層間距

使用pydicom.read_file讀取DICOM文件,dcm_tag.PixelSpacing獲取像素間距,dcm_tag.SliceLocation 獲取層間距

2、計算體素的個數

代碼如下:

from PIL import Image

import numpy as np

import pydicom

import os

def get_pixels_No(bmp_data_dir):

pixels_No = 0

bmp_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_No+img_array_int.sum()

return pixels_No

def 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_infos

def get_volume(dcm_data_dir,bmp_data_dir):

pixel_infos = get_pixel_info(dcm_data_dir)

pixels_No = get_pixels_No(bmp_data_dir)

volume=pixel_infos[0]*pixel_infos[1]*pixel_infos[2]*pixels_No/1000

return volume

# dcm = pydicom.read_file(r"E:\20181210090945_LENG HONGYING F-44Y\Venous\0000.dcm")

# print(dcm)

# print(dcm.ImagePositionPatient[2])

# print(dcm[0x0020, 0x0032].keyword,dcm[0x0020, 0x0032].value)

volume=get_volume(r"E:\20181210090945_LENG HONGYING F-44Y\Venous",r"E:\20181210090945_LENG HONGYING F-44Y\Results\LungL")

print("體積為%.1f"%volume)以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持中文源碼網。

親,試試微信掃碼分享本頁!?*^_^*

總結

以上是生活随笔為你收集整理的python计算长方体体积最简单代码_python处理DICOM并计算三维模型体积的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。