最大類間方差法是1979年由日本學者大津提出的,是一種自適應閾值確定的方法,又叫大津法,簡稱OTSU,是一種基於全局的二值化算法,它是根據圖像的灰度特性,將圖像分爲前景和背景兩個部分。當取最佳閾值時,兩部分之間的差別應該是最大的,在OTSU算法中所採用的衡量差別的標準就是較爲常見的最大類間方差。前景和背景之間的類間方差如果越大,就說明構成圖像的兩個部分之間的差別越大,當部分目標被錯分爲背景或部分背景被錯分爲目標,都會導致兩部分差別變小,當所取閾值的分割使類間方差最大時就意味着錯分概率最小。
圖像分割成背景和目標兩部分。需要背景和目標之間的類間方差最大。
圖像f(x,y)前景和背景分割的閾值記爲T
W0:前景的像素點數佔整幅圖像的比例;V0:前景的平均灰度
W1:背景的像素點數佔整幅圖像的比例;V1:背景的平均灰度
V: 圖像的總平均灰度
g:類間方差
我們假設圖像的大小爲MxN,N0爲<T的像素個數,N1爲>T 的像素個數
W0=N0/(MxN) ;W1=N1/(MxN);N0+N1=MxN;W0+W1=1
V=W0*V0+W1*V1;g=W0(V0-V)^2+W1(V1-V)^2
=>g=W0W1(V0-V1)^2
下面給出OTSU的matlab代碼:
l=imread('rice.png')
figure
subplot(2,2,1);imshow(I);
subplot(2,2,2);imhist(I);
[M,N]=size(I);
Ivarm=0;
T=0; %前景和背景的閾值
Iav=mean(mean(I)); %圖像的平均灰度
for TT=min(min(I)):max(max(I)) %遍歷所有的像素點,尋找合適閾值
Ib=I(I>=TT); %背景
pb=length(Ib)/(M*N); %背景像素點數佔圖像的比例
Ibav=mean(Ib); %背景的平均灰度
If=I(I<TT); %前景
pf=length(If)/(M*N); %前景像素點數佔圖像的比例
Ifav=mean(If); %前景的平均灰度
Ivar=pb*pf*(Ibav-Ifav)^2; %當前類間方差
if Ivar>Ivarm
Ivarm=Ivar; %當前最大類間方差
T=TT; %當前最大類間方差下的閾值
end
end
用到的圖片如下,下載下來文件名稱改成‘rice.png’即可