二值化方法

一、全局閾值法

1.固定閾值方法

該方法是對於輸入圖像中的所有像素點統一使用同一個固定閾值。其基本思想如下:

其中,T爲全局閾值。

 

缺點:很難爲不同的輸入圖像確定最佳閾值。

 

2.Otsu算法

Otsu算法又稱最大類間方差法

先明確兩個概念:

(1)均值

 

(2)方差

 

圖像的閾值化處理,就是將圖像分爲兩個部分,高於閾值的部分,和小於閾值的部分。(暫不考慮多閾值的情況)。那麼,如果將圖像的每一個像素點的強度作爲一個數據集合中的單元,那麼,閾值化就相當於是一個二分類的問題。

 

我們假設,大於閾值的類爲S1,維度爲n1(不考慮秩的問題,實際上就是像素個數),均值爲m1;小於閾值的類記爲S2,維度爲n2,均值爲m2。根據前面概率的知識,理想的情況下,對於每一個類,其類內方差應該是很小的。

 

當然了,考慮每一個類是可行的。但是,我們又可以換個思路,全局上來考慮呢?

 

假設整個圖像的均值爲m,我們假設就只有兩個數據,m1,m2,考慮着兩個數據的離散程度,同樣可以用上面的方差公式。這裏看起來有點怪怪的,暫且這樣來理解吧。也就是說,方差越大,這兩個類也就越離散,分的越開。就像吵架一樣,吵得聲音越大,說明分歧越大,越嚴重。

 

所以,我們求這個閾值時,就希望,在內部是很團結的,就是在閾值分割後,兩個類中,每一個類都是很和諧的。但是,相互之間又非常的受不了對方,離的越遠越好。那麼,找到這樣的閾值,就十分開心了。

 

缺點:當目標物體與背景大小比例懸殊或灰度級接近,導致直方圖呈現三峯或雙峯峯值差距極大時,Otsu算法往往得不到滿意的結果

 

 

二、局部閾值法

 

1.自適應閾值算法

自適應閾值算法[2]用到了積分圖(Integral Image)的概念,它是一個快速且有效地對網格的矩形子區域計算和的算法。積分圖中任意一點 (x, y) 的值是從圖左上角到該點形成的矩形區域內所有值之和。圖2-5b中的灰色部分爲圖2-5a中灰色矩陣內值的加和:

 

自適應閾值算法的主要思想是以一個像素點爲中心設置大小爲 s×s 的滑窗,滑窗掃過整張圖像,每次掃描均對窗口內的像素求均值並將均值作爲局部閾值。若窗口中的某一像素值低於局部閾值t/100,賦值爲0;高於局部閾值t/100,賦值爲255。因爲涉及多次對有重疊的窗口進行加和計算,因此積分圖的使用可以有效地降低複雜度和操作次數。爲了計算積分圖,我們在每個位置存儲其左邊和上方所有 f(x, y) 值的總和,這一步驟會在線性時間內完成:

                                                                   I(x, y)= f(x, y)+I(x-1, y)+I(x, y-1)-I(x-1, y-1)

一旦得到積分圖,對於任意從左上角 (x1y1, ) 到右下角(x2y2, ) 的矩形內(如圖2-6所示)的數值總和均可以使用式(2.2)計算:

 

流程共掃描全圖兩次,第一次掃描獲得積分圖intImg,第二次掃描根據式(2.2)計算每次掃描窗口內像素值的平均值的(100-t)/100,並將計算結果作爲局部閾值。若窗口內某一像素點的值乘以窗口大小大於該閾值,則對應輸出255,反之則輸出0。

 

2. Niblack算法

Niblack算法同樣是根據窗口內的像素值來計算局部閾值的,不同之處在於它不僅考慮到區域內像素點的均值和方差,還考慮到用一個事先設定的修正係數 k 來決定影響程度。

                                                                                  T(x, y)=m(x, y)+ks(x, y)

其中,T(x, y) 爲閾值,m(x, y)、s(x, y) 分別代表均值與方差。與 m(x, y) 相近的像素點被判定爲背景,反之則判定爲前景,而相近的程度則由標準差和修正係數來決定,這樣做可以保證算法的靈活性。

 

缺點:Niblack算法的缺陷一方面在於 r × r 的滑窗會導致在邊界區域(r-1)/2的像素範圍內無法求取閾值;另一方面在於如果 r×r 滑窗內全部是背景,那麼該算法必然會使一部分像素點成爲前景,形成僞噪聲。因此,r的選擇非常關鍵,若窗口太小,則不能有效地抑制噪聲;若窗口太大,則會導致細節丟失。

 

3. Sauvola算法

Sauvola算法是針對文檔二值化處理,在Niblack算法基礎上的改進:

 

 

其中,R是標準方差的動態範圍,若當前輸入圖像是8位灰度圖像,則 R=128。Sauvola算法在處理光線不均勻或染色圖像時,比Niblack算法擁有更好的表現,因爲式(2.3)以自適應的方式放大了標準差s的作用。假設我們要處理一份淺色但有污漬的文檔,那麼乘以m係數會降低背景區域閾值的範圍,這可以有效地減少染色、污漬等帶來的影響。表2-1展示了Sauvola與Niblack算法在處理染色文檔時的效果差異。

三、其他方法

對於灰度圖而言,腐蝕和膨脹運算都類似於卷積操作——將結構元素在原圖上平移,而結構元素上的原點就相當於卷積核的核中心。首先我們約定,將結構元素覆蓋住的原圖區域記爲P。

1.腐蝕

如圖2-10所示,腐蝕運算即在平移過程中依次計算 P 和 結構元素的差矩陣,並將該矩陣中的最小值賦給原點對應的原圖位置.

 

2.膨脹

如圖2-11所示,膨脹運算則是計算 P 和結構元素的和矩陣,並將該矩陣中的最大值賦給原點對應的原圖位置。

 

3.開運算

開運算是先腐蝕後膨脹,開運算可以使圖像的輪廓變得光滑,斷開狹窄的連接並消除細毛刺

 

4.閉運算

閉運算是先膨脹後腐蝕.閉運算同樣可以平滑輪廓,但其具體作用是排除小型空洞,彌合狹窄的間斷點、溝壑以及填補斷裂的輪廓線。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章