圖像的二值化問題總是一個問題。雖然使用深度學習的方法取得了不小的進展,但是傳統的方法還是值得借鑒。
剛好隨機游走到這篇文章 挖個07年的墳 地址:http://people.scs.carleton.ca/~roth/iit-publications-iti/docs/gerh-50002.pdf
這是二值化后的效果。
全局閾值法在上面的情況下會失效,所以本文使用了一種自適應的閾值算法。
作者使用了積分圖 (Integral Image) 作為閾值分割工具,這也算是積分圖的應用吧。
公式(1)是坐標(x,y)處的積分值的計算方法, (2)是計算兩個對角點像素的和。
圖像2給出了積分圖的計算事例。 左:圖像灰度值 中:計算的對應的積分圖 最后一個是解釋公式(2),類似於幾何文氏圖
作者給出的閾值分割判據是:
計算目標點周圍S鄰域正方形內的均值
比較該目標點與均值的差距
如果目標點灰度值小於均值的 某一百分比(閾值) 目標點為0
如果目標點灰度值大於均值的某一百分比(閾值) 目標點為1
作者取的鄰域S,和百分比 沒有找到,公布代碼的網址也掛掉了。
檢測結果:
亂侃:
這是很早的一篇文章了,和現在Opencv里的adaptivethreshold原理差不多。
該文章里引用的另一個人的方法比較有意思:
對圖像進行按行掃描,計算前s個像素的滑動平均值,對於要判定的像素,比較其與這個滑動平均值的大小,然后判定。
總之,這篇文章比較老,作者使用了積分圖來加快計算某一像素領域內的均值,這點在當時應該比較新,對於深度學習來說就是做了個sxs的均值卷積,現在根本不是問題。
當然,現在這種局部自適應閾值的方法還是大量使用,因為他最能講的通,簡單明了。但是就像圖1里的閾值分割結果,四周的假陽性有點多啊。這個的消除才是現在的難點。
消除這些假陽性的方法有: 形態學的方法(膨脹,腐蝕) ,幾何尺寸先驗知識過濾,等 ,傳統論文大概都是這個套路。總之,難點還是如何消除分割錯誤的像素。