0

我有一个标签,我想申请 4 个共同注册的图像,以获得每个标签的平均值。目前,我必须编写 4 次代码。

我目前的代码是

import SimpleITK as sitk
import numpy as np

label = sitk.ReadImage('segmentation.nii.gz')
image1 = sitk.ReadImage('image1.nii')
image2 = sitk.ReadImage('image2.nii')
image3 = sitk.ReadImage('image3.nii')
image4 = sitk.ReadImage('image4.nii')

labelstatsFilter = sitk.LabelStatisticsImageFilter()
labelstatsFilter.SetUseHistograms(True)

labelstatsFilter.Execute(image1, label)
labelstatsFilter.GetMean(1)

labelstatsFilter.Execute(image2, label)
labelstatsFilter.GetMean(1)

labelstatsFilter.Execute(image3, label)
labelstatsFilter.GetMean(1)

labelstatsFilter.Execute(image4, label)
labelstatsFilter.GetMean(1)
4

1 回答 1

1

您可以使用循环,但仍会使用 LabelStatisticsImageFilter 4 次。没有办法让 1 个 Execute 调用计算 4 个不同图像的统计信息。

这是代码的循环版本的样子:

import SimpleITK as sitk
label = sitk.ReadImage('segmentation.nii.gz')

images = []
means  = []
labelstatsFilter = sitk.LabelStatisticsImageFilter()
labelstatsFilter.SetUseHistograms(True)

for i in range(4):
     images.append( sitk.ReadImage('image'+str(i)+'.nii') )
     labelstatsFilter.Execute( images[i], label )
     means.append( labelstatsFilter.GetMean(1) )
于 2019-12-10T14:04:23.940 回答