如何计算骰子系数以测量蟒蛇图像分割的准确性

问题描述 投票:2回答:2

我有土地覆盖的图像,我使用K-means聚类对其进行分割。现在我想计算我的分割算法的准确性。我在某处读到,骰子系数是实质性的评估指标。但我不知道如何计算它。我使用Python 2.7还有其他有效的评估方法吗?请提供摘要或链接到源。谢谢!

编辑:我使用以下代码测量原始和分割图像的骰子相似度,但似乎需要几个小时来计算:

for i in xrange(0,7672320):
  for j in xrange(0,3):
    dice = np.sum([seg==gt])*2.0/(np.sum(seg)+np.sum(gt)) #seg is the segmented image and gt is the original image. Both are of same size
python-2.7 scikit-learn gis image-segmentation
2个回答
3
投票

请参阅wiki的骰子相似系数

这里有一个示例代码段供您参考。请注意,由于您使用的是k-means,因此需要将k替换为所需的群集。

import numpy as np

k=1

# segmentation
seg = np.zeros((100,100), dtype='int')
seg[30:70, 30:70] = k

# ground truth
gt = np.zeros((100,100), dtype='int')
gt[30:70, 40:80] = k

dice = np.sum(seg[gt==k])*2.0 / (np.sum(seg) + np.sum(gt))

print 'Dice similarity score is {}'.format(dice)

0
投票

如果您使用的内容超过2个类(也就是1和0的掩码),这是一个重要的说明。

如果您使用多个类,请确保指定预测和基础事实也等于您想要的值。否则,您最终可能会获得大于1的DSC值。

这是每个==k声明末尾的额外[]

import numpy as np

k=1

# segmentation
seg = np.zeros((100,100), dtype='int')
seg[30:70, 30:70] = k

# ground truth
gt = np.zeros((100,100), dtype='int')
gt[30:70, 40:80] = k

dice = np.sum(seg[gt==k]==k)*2.0 / (np.sum(seg[seg==k]==k) + np.sum(gt[gt==k]==k))

print 'Dice similarity score is {}'.format(dice)
© www.soinside.com 2019 - 2024. All rights reserved.