SAR变化检测的性能指标(kappa系数)——简化版

来源:互联网 发布:vb集成开发环境可以 编辑:程序博客网 时间:2024/06/07 03:13

原来博客中写过比较复杂的一种计算kappa系数的方法,具体的细节可以看:http://blog.csdn.net/wyl1813240346/article/details/56843409。在这里写一下比较简单的计算kappa系数的方法,并给出计算的代码。
对于变化检测来说是一个二分类问题(变化类和非变化类),我们假设图像的总像素为N,参考图像中未改变的像素数量为Nu,改变的像素的数量为Nc。于是我们将参考图像(ground truth)与用算法产生的变化图像进行逐像素比较。以这种方式:

  1. 若该像素在参考图像中为变化的类别,而使用自己算法得到变化图像中的类别为未变化类别,统计这样的像素个数,假设统计的数目总数为FN(有时候也用MA表示,代表漏检数目);
  2. 若该像素在参考图像中为未变化的类别,但是使用自己算法得到变化图像中的类别为变化类别,统计这样的像素个数,假设统计的数目总数为FP(有时候也用FA表示,代表虚警数目);
  3. 若该像素在参考图像中为变化的类别,同时使用自己算法得到变化图像中的类别同样为变化类别,统计这样的像素个数,假设统计的数目总数为TP;
  4. 若该像素在参考图像中为未变化的类别,同样使用自己算法得到变化图像中的类别为未变化类别,统计这样的像素个数,假设统计的数目总数为TN。

于是四者的关系为:

Nu=FP+TN

Nc=FN+TP

为了进一步评估结果,总误差(OE)用作显示总体性能的标准。 其定义如等式所示:
OE=FN+FP

但是使用总误差OE来衡量整体的性能不是很精确。实际上,在分类域中,经常使用Kappa系数作为衡量指标。Kappa的值越高,结果越好。 Kappa系数可以由下式计算:
Kappa=PRAPRE1PRE

其中,
PRA=TP+TNN

PRE=(TP+FP)Nc+(FN+TN)NuN2

KC的值通常在0到1的范围内。从式中可以看出KC取决于TP、TN、FN、FP四个相关的值,而OE仅取决于TP和TN总和的值。因此,KC更详细的涉及了分类信息,是一个更加精确的系数。

计算kappa系数的代码为:

function  [TN,TP,FN,FP,OE,KC]=Kappa(refImage,testImage)% refImage:代表参考图像(即ground truth)% testImage:代表变化图像%-------------------------------------------------------------------------if isempty(refImage)    error('!!!Not exist reference map');end%将图像转化为列向量RI=refImage(:);TI=testImage(:); [m,n]=size(testImage);%计算参考图像与测试图像不相同的像素点的个数TN = find(RI==0&TI==0);%参考图像为未变化像素,检测的结果也为未变化像素,即真反例TP = find(RI~=0&TI~=0);%参考图像为变化像素,检测的结果也为变化像素,即真正例FP = find(RI==0&TI~=0);%参考图像为未变化像素,检测的结果为变化像素,即假正例FN = find(RI~=0&TI==0);%参考图像为变化像素,检测结果为未变化像素,即假反例TN = numel(TN);TP = numel(TP);FP = numel(FP);FN = numel(FN);Nc = FN + TP;Nu = FP + TN;OE = FP + FN;PRA = (TP+TN)/(m*n);PRE = ((TP+FP)*Nc+(FN+TN)*Nu)/(m*n)^2;%计算相同的比率KCKC = (PRA-PRE)/(1-PRE);

参考文献:
Unsupervised change detection in SAR images based on locally fitting model and semi-EM algorithm.

有什么不对的地方欢迎指正,互相学习。

原创粉丝点击