直接调库还是YYDS
import SimpleITK as sitk
import numpy as np
image1_path = './data/100408_seg/mask_100408_arssr.nii.gz'
image2_path = './data/origin_seg/mask_100408.nii.gz'
image1_itk = sitk.ReadImage(image1_path, sitk.sitkUInt8)
image2_itk = sitk.ReadImage(image2_path, sitk.sitkUInt8)
image1 = sitk.GetArrayFromImage(image1_itk)
image2 = sitk.GetArrayFromImage(image2_itk)
# 二值化区域,原值为2的设为1,其它为0
image1 = np.where(image1 == 2, 1, 0)
image2 = np.where(image2 == 2, 1, 0)
image1 = sitk.GetImageFromArray(image1)
image2 = sitk.GetImageFromArray(image2)
overlap_measures_filter = sitk.LabelOverlapMeasuresImageFilter()
overlap_measures_filter.Execute(image1, image2)
# Dice
dice_similarity = overlap_measures_filter.GetDiceCoefficient()
print(dice_similarity)
再给一种方案
import numpy as np
import nibabel as nib
def cal_subject_level_dice(prediction, target, class_num=7):# class_num是你分割的目标的类别个数
'''