概要
本博文主要介绍如何评价中心线提取算法的指标,该类指标主要有三种:完整性、正确性以及质量。完整性是召回率(recall)的一种变体,在所提取的中心线新建一定长度的缓冲区,真值(ground truth)与之重叠部分的长度除以真值的长度,即可获取完整性的值。正确性是准确率的变体,在真值中心线新建一定长度的缓冲区,所提取的中心线与之重叠部分除以所提中心线的长度,即可获得正确性的值。质量是一个总体指标,结合了完整性和正确性,公式如下图所示。
代码实现
def compute_centerline_metrics(gtPath, predPath):
gt = read_img(gtPath)
pred = read_img(predPath)
gt = np.where(gt > 0, 1, 0)
pred = np.where(pred > 0, 1, 0)
length_gt = np.sum(gt)
length_pred = np.sum(pred)
pred_mask = dilation(pred.copy(), square(7))
pred_pos = np.where((pred_mask + gt) == 2, 1, 0)
length_pred_pos = np.sum(pred_pos)
completeness = length_pred_pos / length_gt
gt_mask = dilation(gt.copy(), square(7))
gt_pos = np.where((gt_mask + pred) == 2, 1, 0)
length_gt_pos = np.sum(gt_pos)
correctness = length_gt_pos / length_pred
quality = length_gt_pos / (length_pred + length_gt - length_gt_pos)
return completeness, correctness, quality