OTSU二值化方法的MATLAB實現

2021-09-11 16:36:53 字數 1461 閱讀 7828

影象二值化的方法有很多,但是由於matlab中的影象二值化就是採用的otsu方法,那在某種程度上證明了這種演算法的優秀,所以我也準備採用這種方法來進行影象二值化。

首先來看otsu**中的關於公式的介紹部分

限於個人英文閱讀能力有限,但是根據文獻中的

可以得出最佳閾值是當σ²b()最大的時候的k。

也可以看到σ²b的計算公式是

其中w0,w1,μ0,μ1,μt的計算公式如下

在這裡面的pi即為每個灰度值出現的概率

公式都已經解析完了,接下來就是通過**來實現原理了

matlab實現的**如下:

otsu=0;

otsu0=0;

otsu_t0=0;

gray_p=zeros(1,255);

su=sum(line);%計算出灰度的總和

for i=1:255

gray_p(i)=line(i)/su;%計算出每乙個灰度值在影象**現的概率,對應公式中的p(i)

endfor i=1:255

foward_p=sum(gray_p(1:i));

%計算前景的灰度概率和,對應公式中的w0

back_p=sum(gray_p(i+1:255));

%計算後景的灰度概率和,對應公式中的w1

omega_f=sum((1:i).*gray_p(1:i))/foward_p;

%計算出前景的平均灰度,對應公式中的μ0

omega_b=sum((i+1:255).*gray_p(i+1:255))/back_p;

%計算出後景的平均灰度,對應公式中的μ1

omega=foward_p*omega_f+back_p*omega_b;

%計算出整幅影象的平均灰度對應公式中的μt

otsu0=(omega_f-omega)^2*foward_p+(omega_b-omega)^2*back_p;

%計算出前景和背景的方差,對應公式中的μb

if otsu最後的效果如下:

OTSU常用的二值化方法

otsu演算法稱為大律法或最大類間方差法 原理 利用閾值將原影象分成前景,背景兩個圖象。前景 用w0,u0表示在當前閾值下的前景的點數佔影象的比例,前景的平均灰度值 背景 用w1,u1表示在當前閾值下的背景的點數佔影象的比例,背景的平均灰度值 當取最佳閾值時,背景應該與前景差別最大,關鍵在於如何選擇...

演算法解剖系列 Otsu二值化原理及實現

推導大致過程 對一幅大小為m n 的數字影象 令l 表示灰度級數 ni 表示灰度級為 i 的畫素數,則影象中畫素總數mn n1 n2 n 3 nl pi ni mn,p i 為相對直方圖,即灰度級為 i 出現的概率。則 l i 1p i 1 設閾值t k k,1 k以將影象 分為c1 和c2兩 類,...

OpenCV二值化方法

cvthreshold是opencv庫中的乙個函式 作用 函式 cvthreshold 對單通道陣列應用固定閾值操作。該函式的典型應用是對灰度影象進行閾值操作得到二值影象。cvcmps 也可以達到此目的 或者是去掉雜訊,例如過濾很小或很大象素值的影象點。本函式支援的對影象取閾值的方法由 thresh...