影像處理中經常有誤拒率和誤識率兩個概念,今天簡介下。
誤拒率,就是錯誤拒絕的意思,指的類內匹配。如果有10個志願者的樣本,每個志願者20幅樣本。那麼相對於類內測試,比如對1號誌願者,同一類的這20幅圖片之間,互相匹配,假設1:1的匹配,互相不重複能夠進行(20*19)/2次。如果10個志願者都進行這麼測試,就是10*(20*19)/2次。這是總的類內匹配次數。預設定閾值為TH,如果匹配值th>TH就會錯誤拒絕。
誤識率,指錯誤接受的機率,相對於類間匹配而言。不同的類之間進行的匹配,如果閾值th小於預設閾值TH,就會認為屬於同一類,這種情況就是錯誤接受。
計算公式如下:
也可以參照http://ishare.iask.sina.com.cn/f/37004900.html這個論文裡的57頁和20頁的介紹。
因為FRR和FAR互相矛盾,所以當兩者相等時的機率就是等錯誤率。當閾值為TH時,此時對應的FRR有個數值、FAR有個數值。這樣得到一組對應的FRR和FAR,以FAR為橫座標,FRR為縱座標畫曲線,就是ROC曲線。再畫y=x的曲線,兩個曲線相交時對應的橫座標或縱座標就是等錯誤率,這個時候對應的閾值就是最優的。
典型的ROC曲線:
網上至今沒有計算等錯誤率和畫ROC的Matlab源碼,我寫了一個,僅供大家參考:
核心代碼如下:
function out = YanEER(leinei, leijian)NGRA = length(leinei); %類內測試的次數 對應誤據率 FRRNIRA = length(leijian); %類間測試的次數 對應誤識率, FARFRR = [];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<th(i))/NIRA; %小於閾值的 就錯誤的接受了 FAR = [FAR far];end
這裡面的th是用來控制預設定閾值的,可以根據自己的需要設定。一般它跟你輸入的參數的最小值和最大值有關係,也可以和這兩個最值關聯起來。另外,計算frr的時候也可以乘上100,這時座標系就是(%)。大家靈活修改吧。
源碼下載:http://www.pudn.com/downloads542/sourcecode/graph/detail2238646.html
-----------------------本文系原創,轉載請註明作者:yanzi1225627