常見的圖像二值化算法大致可分為全局閾值方法與局部閾值方法這兩種類型。全局方法就是一個閾值,像素值大於此值的為1,小於此值的為0。局部方法就是對每一個像素求閾值,大於此值為1,小於此值為0。其中OTSU算法是全局閾值的代表,而Sauvola算法則是局部閾值方法的標桿。Otsu(大津法),相關介紹很多,這里不做介紹。重點介紹局部閾值分割算法.
1. Bersen算法原理
1) 先人為設定兩個值S與TT(Bemsen最初設S為15,TT設為128);
2)計算以圖像中任意像素屍為中心的大小為k×k窗口內的所有像素的最大值M與最小值N,兩者的均值T,
如果M-N大於S,則當前P的閾值為T;
若小於S,則表示該窗口所在區域灰度級灰度級差別較小,那么窗口在目標區或在背景區;
3)再判斷T與TT的關系,若T>TT則當前點灰度值為255,否則當前點灰度值為0。
缺點:耗時大.
2. Niblack算法

T是閾值,m是圖像鄰域窗口的均值,s是鄰域窗口的標准差,K是預先設定的修正值。
Niblack根據以像素點為中心的鄰域內的點的情況為此像素計算閾值.
Niblack法的優點:
對每一個像素點都獨立的跟據此像素點的鄰域的情況來計算門限,對於和鄰域均值m(x,y)相近的像素點判斷為背景而反之判斷為前景;而具體相近到什么程度由標准差s(X’y)和修正系數k來決定,這保證了這種的方法的靈活性。
Niblack法的不足:
由於要利用域r×r模板遍歷圖像,導致邊界區域(r-1)/2的像素范圍內無法求取閾值;同時當進行圖像遍歷時,如果域r×r范圍內都是背景,經NIBLACK計算后必有一部分被確定為目標,產生偽噪聲。
總之,用Niblack方法進行圖像分割時,選擇的處理模板窗口R*R大小的選擇很關鍵,選擇的空間太小,則噪聲抑制的效果不理想,目標主體不夠突出,選擇的空間太大,則目標的細節會被去除而丟失信息。
3. Sauvola算法
Sauvola算法的輸入是灰度圖像,它以當前像素點為中心,根據當前像素點鄰域內的灰度均值與標准方差來動態計算該像素點的閾值。
假定當前像素點的坐標為(x,y),以該點為中心的領域為r*r,g(x,y)表示(x,y)處的灰度值,Sauvola算法的步驟為:

參考:https://livezingy.com/derivations-of-sauvola-formula/
