import SimpleITK as sitk
import os
import pandas as pd
import csv
import numpy as np
def volume_static(image):
stats = sitk.StatisticsImageFilter()
img = sitk.ReadImage(image)
stats.Execute(img)
spacing = img.GetSpacing()
voxel = np.prod(spacing)
img_np = sitk.GetArrayFromImage(img)
left_np = img_np.copy()
right_np = img_np.copy()
left_np[left_np == 2] = 0
right_np[right_np == 1] = 0
right_np[right_np == 2] = 1
vol_left = voxel*np.sum(left_np)
vol_right = voxel*np.sum(right_np)
return vol_left, vol_right
if __name__ == '__main__':
# image path
root_path = r'/home/xx'
case_list = os.listdir(root_path)
case_list.sort()
header = ['case_name', 'left', 'right']
with open ('/home/xx/stage2_3.csv','w',encoding='utf-8') as fp:
for case in case_list:
case_path = os.path.join(root_path, case)
volume_left, volume_right = volume_static(case_path)
writer =csv.writer(fp)
writer.writerows([[case, volume_left, volume_right]])
Python SimpleITK 统计医学图像mask的体积
最新推荐文章于 2023-09-06 17:39:51 发布