我目前正在MATLAB上实现图像分割。我有两个实现。
我试图通过使用骰子系数或Jaccard来计算分割图像与地面真相(人工分割图像)之间的相似性度量。对于分割成两个区域的图像,这是很好的。这是由以下代码实现的。
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
请注意:我还想知道Hausdorff距离测度在这种情况下是否适用于3相和4相分割的图像?
编辑:,我有一个新的查询。如果假设图像有4个区域,并且以这种方式正确分割,如下例所示:如果现在使用不同的强度值来表示不同的区域,那么使用Dice系数,这两个分割结果将得到不同的结果。对于分段区域1,我有骰子=1 **,对于**分段区域2,我有骰子= 0.75。但是这两个结果都是精确的。如何修改我的代码,以便分段的结果将反映骰子系数的答案?
发布于 2013-11-12 10:34:46
您可能需要查看为分段而设计的度量,例如标准化的概率兰德。
但是,我可以看到两种快速处理现有代码的方法。
1)而不是使用逻辑图像和&,使用:
dice = 2*nnz(segIm==grndTruth)/(nnz(segIm) + nnz(grndTruth));
这里的segIm和grndTruth都应该是数值的(理想的整数,前景区域的值为1,2,3.等)。
2)从segIm和grndTruth两种图像中为每个前景区域生成一组二值图像,并为每个前景区域定义一个骰子系数。
发布于 2013-11-12 10:30:58
Arbel‘aez等人的工作描述了几种比较图像分割算法结果的方法。见第3.1节及其分节。
我相信在他们的项目网页中可以找到一些Matlab代码。
伯克利分割数据集(bsds500)是图像分割界公认的基准。
https://stackoverflow.com/questions/19926142
复制相似问题