图像处理中经常有误拒率和误识率两个概念,今天简介下。
误拒率,就是错误拒绝的意思,指的类内匹配。如果有10个志愿者的样本,每个志愿者20幅样本。那么相对于类内测试,比如对1号志愿者,同一类的这20幅图片之间,互相匹配,假设1:1的匹配,互相不重复能够进行(20*19)/2次。如果10个志愿者都进行这么测试,就是10*(20*19)/2次。这是总的类内匹配次数。预设定阈值为TH,如果匹配值th>TH就会错误拒绝。
误识率,指错误接受的概率,相对于类间匹配而言。不同的类之间进行的匹配,如果阈值th小于预设阈值TH,就会认为属于同一类,这种情况就是错误接受。
计算公式如下:
因为FRR和FAR互相矛盾,所以当两者相等时的概率就是等错误率。当阈值为TH时,此时对应的FRR有个数值、FAR有个数值。这样得到一组对应的FRR和FAR,以FAR为横坐标,FRR为纵坐标画曲线,就是ROC曲线。再画y=x的曲线,两个曲线相交时对应的横坐标或纵坐标就是等错误率,这个时候对应的阈值就是最优的。
典型的ROC曲线示意图:
网上至今没有计算等错误率和画ROC的Matlab源码,我写了一个,仅供大家参考:
核心代码如下:
function out = YanEER(leinei, leijian)
NGRA = length(leinei); %类内测试的次数 对应误据率 FRR
NIRA = length(leijian); %类间测试的次数 对应误识率, FAR
FRR = [];
FAR = [];
th = 0.1:0.02:0.55; %阈值,一共xxx个
for i=1:length(th)
frr = sum(leinei>th(i))/NGRA; %大于预设阈值的 就错误的拒绝了
FRR=[FRR frr];
far = sum(leijian
FAR = [FAR far];
end
这里面的th是用来控制预设定阈值的,可以根据自己的需要设置。一般它跟你输入的参数的最小值和最大值有关系,也可以和这两个最值关联起来。另外,计算frr的时候也可以乘上100,这时坐标系就是(%)。大家灵活修改吧。
-----------------------本文系原创,转载请注明作者:yanzi1225627