我目前正在MATLAB上实现图像分割。我有两个实现。
我试图通过使用骰子系数或Jaccard Index来计算分割图像和地面实况(手动分割图像)之间的相似性度量。这适用于已分割为两个区域的分割图像。这是通过以下代码实现的。
dice = 2*nnz(segIm&grndTruth)/(nnz(segIm) + nnz(grndTruth))
这要求segIm和grndTruth具有相同的大小。它们也必须是数字或逻辑的。
然而,我还没有找到一种方法来应用这种方法来比较多区域分割图像的相似性。谁能告诉我如何在我的应用程序中使用骰子系数?
编辑: 关于nkjt的建议我已完成基本实施,并在下面给出了结果。请随时升级代码,以提高准确性。
我正在考虑两个矩阵形式的两个图像。 A是分段图像,B是手动基础事实。下面给出了上述建议实现的matlab代码。请检查并确实给出您的想法。
A=[1 2 3 4;1 2 3 4;1 2 3 4;1 2 3 4]
B=[1 3 4 4;1 1 3 4;1 2 3 4;1 2 3 1]
%//First Suggestion
dice = 2*nnz(A==B)/(nnz(A) + nnz(B))
%//2nd Suggestion
A1=(A==1);B1=(B==1);
A2=(A==2);B2=(B==2);
A3=(A==3);B3=(B==3);
A4=(A==4);B4=(B==4);
dice = (2*nnz(A1&B1)/(nnz(A1) + nnz(B1))...
+2*nnz(A2&B2)/(nnz(A2) + nnz(B2))...
+2*nnz(A3&B3)/(nnz(A3) + nnz(B3))...
+2*nnz(A4&B4)/(nnz(A4) + nnz(B4)))/4
请注意:我也有兴趣知道在这种情况下是否可以对3相和4相分段图像应用 Hausdorff距离测量 ??
编辑:我确实有新的查询。如果假设图像具有4个区域并且已经以这种方式正确分割,如下例所示:如果现在使用不同的强度值来表示不同的区域,则使用Dice系数,两个分割的结果将给出不同的结果。对于分段注册1,我有骰子= 1 **,对于**分段区域2,我有骰子= 0.75 。但结果都是准确。如何修改我的代码,使得分段结果将反映骰子系数的答案?
答案 0 :(得分:3)
Arbel´aez et al.的工作描述了几种比较图像分割算法结果的方法。见3.1节及其小节。
我相信一些Matlab代码可以在project's webpage中找到。
伯克利分割数据集(bsds500)是图像分割社区中一个完善的基准。
答案 1 :(得分:1)
您可能希望查看为细分设计的度量,例如Normalized Probabilistic Rand。
但是,我可以看到两种可能的方法来快速使用现有代码。
1)不使用逻辑图像和&,而是使用:
dice = 2*nnz(segIm==grndTruth)/(nnz(segIm) + nnz(grndTruth));
这里的segIm和grndTruth都应该是数字的(理想情况下是整数,前景区域的值为1,2,3 ......等)。
2)从segIm和amp;中生成一组二进制图像。每个前景区域的grndTruth,并为每个前景区域定义一个骰子系数。