2012-03-30 43 views
4

我正在嘗試爲文檔圖像找到有效的二值化技術。我目前實現了niblack和sauvola閾值算法,並嘗試基於直方圖評估的二值化。有人能請建議其他已證明有效的二值化方法嗎? 下面是一個示例退化圖像我一直使用:文檔圖像二值化

enter image description here

http://spie.org/Images/Graphics/Newsroom/Imported/0681/0681_fig1.jpg

任何建議將非常感激。

+0

開山鼻祖堆棧溢出。雖然圖像二值化是一個有趣的話題,但您的問題不適合SO。如果您在二值化時遇到特殊問題,可以在http://dsp.stackexchange.com/上提問。如果您在實現二進制化時遇到問題,請隨時就SO提出另一個問題。 – Simon 2012-03-30 12:03:05

+1

再次,尼布拉克會工作。 (http://imgur.com/pR1iN)你不需要實現數以百計的算法 - 只要理解它們是如何一起工作的以及如何調整參數就你的情況而言,你應該看看本地閾值,一些關於顏色和對比度的預處理 – 2012-03-30 13:54:50

+0

感謝您的所有幫助@BirgitP。我試圖應用幾種算法,然後在文檔圖像上使用它們來人工添加噪聲,這樣我就可以通過比較來評估哪種方法是最好的方法與原始圖像。這就是爲什麼我詢問哪些其他方法最適合的目的。請您建議一些?? – NeedHelp 2012-03-30 21:35:08

回答

10

從簡單地調整基於本地鄰域的閾值開始如何?

im = rgb2gray(im); 
im = im2double(im); 
f_makebw = @(I) im2bw(I.data, double(median(I.data(:)))/1.45); 
bw = ~blockproc(im, [128 128], f_makebw); 

結果:

enter image description here

+0

你能解釋這個說法是什麼?f_makebw = @(I)im2bw(I.data,double (median(I.data(:)))/ 1.45); – NeedHelp 2012-04-02 17:57:44

+0

@NeedHelp,它根據該區域的中值灰度值對每個區域(這裏是128x128)進行二進制化處理,此外由於除以1.45,閾值略有偏差。 – Maurits 2012-04-02 18:41:09

+0

由於〜blocproc,我得到一個錯誤,說它是一個未定義的功能。請告訴我如何糾正它, – NeedHelp 2012-04-03 20:08:55