OTSU閾值分割

2021-10-08 19:26:58 字數 946 閱讀 1911

otsu演算法

(1)原理:

對於影象i(x,y),前景(即目標)和背景的分割閾值記作t,屬於前景的畫素點數占整幅影象的比例記為ω0,其平均灰度μ0;背景畫素點數占整幅影象的比例為ω1,其平均灰度為μ1。影象的總平均灰度記為μ,類間方差記為g。

假設影象的背景較暗,並且影象的大小為m×n,影象中畫素的灰度值小於閾值t的畫素個數記作n0,畫素灰度大於閾值t的畫素個數記作n1,則有:

ω0=n0/ m×n (1)

ω1=n1/ m×n (2)

n0+n1=m×n (3)

ω0+ω1=1    (4)

μ=ω0*μ0+ω1*μ1 (5)

g=ω0(μ0-μ)^2+ω1(μ1-μ)^2 (6)

將式(5)代入式(6),得到等價公式:

g=ω0ω1(μ0-μ1)^2    (7) 這就是類間方差

採用遍歷的方法得到使類間方差g最大的閾值t,即為所求。

ps:有公式(6)到公式(7):將公式(5)帶入(6)即可。

(2)matlab函式:

matlab中函式graythresh既是使用大津法求得分割閾值t。用法如下:

t = graythresh(img);

bw = im2bw(img,t);

(3)實際**實現為下列公式,其中,i 為畫素的灰度值,p(i)為該灰度值在整幅圖所佔的比例,t為閾值

u = i * p(i)

u0 = ∑ p(i) = p(i0) i=0~t

u1 = ∑ p(i) = p(i1) i=t~255

w0 = i0 * p(i0)

w0 = i1 * p(i1)

g =ω0ω1(w0/u0 - w1/u1)^2(這裡主要解釋這個公式)

otsu閾值分割演算法原理 閾值分割 Otsu法

演算法實現 不呼叫函式 include include using namespace std using namespace cv 實現灰度直方圖的繪製 void drawpicture mat inpicture,mat outpicture ma hist const int bins 256...

OTSU閾值分割

在計算機視覺中我們常常關注的目標特徵是顏色和灰度,刻畫影象中的兩個區域視覺相似性有許多方法,如形狀描繪子,顏色特徵,距特徵等。對於某種場景下的應用,具有獨特的紋理物件可以使用乙個很好的紋理特徵符。針對顏色不同的區域中的單體物件相同的擴充套件,我們可以使用顏色特徵來測量物件的不用部分的相似性。如果物體...

OTSU演算法 三通道閾值分割

依據畫素值的權重,分離影象前景和背景。關鍵之處是處理畫素值的權重佔比 otsu algorithm int otsu const mat src pixel gray value count for int i 0 i height i sum0 前景的灰度總和 sum1 背景灰度總和 cnt0 前...