SimpleITK计算dice系数及Hausdorff距离(python代码)

做医学图像分割,需要对分割结果进行评价,常用的有dice系数和Hausdorff距离等,如何在python中用SimpleITK自带函数实现这一功能呢,代码如下:

# -*- coding: utf-8 -*-

import numpy as np
import os
import SimpleITK as sitk

def file_name(file_dir):   
   L=[]   
   path_list = os.listdir(file_dir)
   path_list.sort() #对读取的路径进行排序
   for filename in path_list:
       if 'nii' in filename:
        	L.append(os.path.join(filename))   
   return L 

def computeQualityMeasures(lP,lT):
    quality=dict()
    labelPred=sitk.GetImageFromArray(lP, isVector=False)
    labelTrue=sitk.GetImageFromArray(lT, isVector=False)
    hausdorffcomputer=sitk.HausdorffDistanceImageFilter()
    hausdorffcomputer.Execute(labelTrue>0.5,labelPred>0.5)
    quality["avgHausdorff"]=hausdorffcomputer.GetAverageHausdorffDistance()
    quality["Hausdorff"]=hausdorffcomputer.GetHausdorffDistance()

    dicecomputer=sitk.LabelOverlapMeasuresImageFilter()
    dicecomputer.Execute(labelTrue>0.5,labelPred>0.5)
    quality["dice"]=dicecomputer.GetDiceCoefficient()

    return quality

gtpath = ''
predpath = ''

gtnames = file_name(gtpath)
prednames = file_name(predpath)

labels_num = np.zeros(len(prednames))
NUM=[]
P=[]



for i in range(len(gtnames)):

    gt = sitk.ReadImage(gtpath + gtnames[i])
    pred = sitk.ReadImage(predpath + gtnames[i])    
    quality = computeQualityMeasures(pred,gt)
    

 

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值