在显著性检测方面,假设现有三种方法(DSR,GMA,MCA)检测标准数据库中的部分图像(还有原图与真值图),分别得到三种结果,如何求三种方法与真值图之间的MAE(平均绝对误差),并绘制PR-curve曲线图呢?并用matlab实现
时间: 2023-06-14 08:06:33 浏览: 223
Matlab程序,用于求MAE平均绝对误差.m
首先,我们需要计算三种方法与真值图之间的MAE。假设三种方法分别得到的结果为DSR、GMA和MCA。设原图为I,真值图为GT,DSR、GMA和MCA分别得到的结果为R_DSR、R_GMA和R_MCA。则三种方法与真值图之间的MAE分别为:
MAE_DSR = 1/(M*N) * Σ|GT(i,j) - R_DSR(i,j)|
MAE_GMA = 1/(M*N) * Σ|GT(i,j) - R_GMA(i,j)|
MAE_MCA = 1/(M*N) * Σ|GT(i,j) - R_MCA(i,j)|
其中,M和N分别为图像的高度和宽度,i和j为像素点的坐标。
接下来,我们需要绘制PR-curve曲线图。假设我们已经得到了三种方法的结果,以及对应的真值图,我们可以按照以下步骤进行绘制:
1. 计算三种方法的Precision和Recall值。
Precision_DSR = TP_DSR / (TP_DSR + FP_DSR)
Recall_DSR = TP_DSR / (TP_DSR + FN_DSR)
其中,TP_DSR表示DSR方法正确检测出的显著区域数,FP_DSR表示DSR方法错误检测的显著区域数,FN_DSR表示DSR方法未能检测出的显著区域数。GMA和MCA的Precision和Recall值可以按照同样的方法计算。
2. 绘制PR-curve曲线图。
在Matlab中,我们可以使用plot函数绘制PR-curve曲线图。具体实现代码如下:
```
% 计算Precision和Recall值
Precision_DSR = TP_DSR / (TP_DSR + FP_DSR);
Recall_DSR = TP_DSR / (TP_DSR + FN_DSR);
Precision_GMA = TP_GMA / (TP_GMA + FP_GMA);
Recall_GMA = TP_GMA / (TP_GMA + FN_GMA);
Precision_MCA = TP_MCA / (TP_MCA + FP_MCA);
Recall_MCA = TP_MCA / (TP_MCA + FN_MCA);
% 绘制PR-curve曲线图
plot(Recall_DSR, Precision_DSR, 'r-', Recall_GMA, Precision_GMA, 'g-', Recall_MCA, Precision_MCA, 'b-');
xlabel('Recall');
ylabel('Precision');
title('PR-curve');
legend('DSR', 'GMA', 'MCA');
```
在以上代码中,我们使用了plot函数分别绘制了三种方法的PR-curve曲线,并使用xlabel、ylabel和title函数添加了相应的图像标签。最后,我们使用legend函数添加了曲线的图例。
阅读全文