ron*_*oni 5 matlab image-processing image-segmentation
我目前正在MATLAB上实现图像分割.我有两个实现.
我试图通过使用骰子系数或Jaccard指数来计算分割图像和地面实况(手动分割图像)之间的相似性度量.这适用于已分割为两个区域的分割图像.这是通过以下代码实现的.
dice = 2*nnz(segIm&grndTruth)/(nnz(segIm) + nnz(grndTruth))
Run Code Online (Sandbox Code Playgroud)
这要求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
Run Code Online (Sandbox Code Playgroud)
请注意:我也有兴趣知道在这种情况下,对于3相和4相分段图像是否可以应用Hausdorff距离测量?
编辑:我有一个新的查询.如果假设图像具有4个区域,并以这种方式被正确地分割为显示在下面的例子:如果现在不同强度值被用于表示不同的区域,然后使用骰子系数的两个分段的结果将给出不同的结果.对于Segmented Reg 1,我有骰子= 1**,对于**Segmented Region 2,我有骰子= 0.75.但结果都是准确的.如何修改我的代码,使得分段结果将反映骰子系数的答案?
您可能需要研究为细分而设计的度量,例如标准化概率兰德。
但是,我可以看到两种可能的方法可以使用现有代码快速完成某些操作。
1) 不要使用逻辑图像和 &,而是使用:
dice = 2*nnz(segIm==grndTruth)/(nnz(segIm) + nnz(grndTruth));
Run Code Online (Sandbox Code Playgroud)
这里的 segIm 和 grndTruth 都应该是数字(理想情况下是整数,前景区域的值为 1,2,3...等)。
2) 为每个前景区域从 segIm 和 grndTruth 生成一组二值图像,并为每个图像定义一个骰子系数。