淺談ROC曲線的最佳閾值如何選取
阿新 • • 發佈:2020-02-29
為了獲取ROC曲線的最佳閾值,需要使用一個指標--約登指數,也稱正確指數。
藉助於matlab的roc函式可以得出計算。
% 1-specificity = fpr % Sensitivity = tpr; [tpr,fpr,thresholds] =roc(Tar',Val'); RightIndex=(tpr+(1-fpr)-1); [~,index]=max(RightIndex); % RightIndexVal=RightIndex(index(1)); tpr_val=tpr(index(1)); fpr_val=fpr(index(1)); thresholds_val=thresholds(index(1)); disp(['平均準確率: ',num2str((RightIndexVal+1)*0.5)]); disp(['最佳正確率: ',num2str(tpr_val)]) disp(['最佳錯誤率: ',num2str(fpr_val)])
至此計算結束了。
補充拓展:利用閾值分割目標影象
一.全域性閾值
方法一:OTSU方法
otsu法(最大類間方差法,有時也稱之為大津演算法)使用的是聚類的思想,把影象的灰度數按灰度級分成2個部分,使得兩個部分之間的灰度值差異最大,每個部分之間的灰度差異最小,通過方差的計算來尋找一個合適的灰度級別來劃分。 所以可以在二值化的時候採用otsu演算法來自動選取閾值進行二值化。otsu演算法被認為是影象分割中閾值選取的最佳演算法,計算簡單,不受影象亮度和對比度的影響。因此,使類間方差最大的分割意味著錯分概率最小。
選擇閾值k,把畫素分為兩類:
T=graythresh(f)即可實現用方法一計算歸一化的閾值。
二.局域閾值
當背景照度不均勻時,全域性閾值方法可能失效,此時,用局域變化的閾值函式T(x,y)分割影象f(x,y):
matlab實現程式:
clear all;close all;clc; I=imread('C:\Users\ASUS\Desktop\影象處理學習檔案\大二下\使用閾值分割目標_15\Fig0926(a)(rice).tif'); figure imshow(I) title('original image') k=graythresh(I); I1=im2bw(I,k); figure imshow(I1) se=strel('disk',10); %產生半徑為10的圓盤形結構元素 fo=imopen(I1,se); %用結構元素對灰度影象進行開運算 figure imshow(fo) title('Opened image') f2=imtophat(I,se); %用原影象減去開運算影象,即對影象進行頂帽運算 figure imshow(f2,[]) %顯示頂帽運算結果 title('Top-hat transformation') f2=im2double(f2); T=graythresh(f2); bw2=im2bw(f2,T); %對頂帽處理後的影象進行閾值處理 figure imshow(bw2,[]) title('Thresholded top-hat image') %顯示閾值處理後的頂帽影象
以上這篇淺談ROC曲線的最佳閾值如何選取就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。