文字影像在影像處理中也是佔用了一個比較大的空間,市面上也有著不少這方面的專業軟體,其中有一個比較重要的過程就是對文字影像背景的純化,因為背景複雜了後,對於後續的識別,包括二值化都會帶來不利的影響。 本文介紹三種不同的背景純化方式。
第一種方式: 借用Photoshop的一個演算法,名字叫影印,英文名是PhotoCopy,這個演算法的效果如下:
這裡借用了一個網路上的圖片,細節和暗度的引數分別為5和10,執行完成後進行了反色操作。
這個演算法的核心還是高斯模糊,細節引數就是高斯模糊的半徑。
第二個演算法:使用了一個網友的提供的演算法,就叫他背景移除演算法吧。
具體的可以在https://www.cnblogs.com/jsxyhelu這個大俠的部落格中查詢。
這個演算法的基礎其實也是高斯模糊,一個簡答的程式碼如下所示:
for (int Y = 0; Y < Height * Width; Y++) { if (Blur[Y] != 0) Dest[Y] = IM_ClampToByte(Src[Y] * 255 / Blur[Y]); }
第三個演算法: 我們姑且叫他背景純化吧。
這個演算法呢和Sauvola二值化有一定的聯絡,我們知道Sauvola二值化一直是區域性閾值方法的標杆,他的核心是計算某個區域性區域的的均值和方差,這裡也是把影像先分塊,然後按照某種原則,計算每個塊內的均值和方差,接著呢對每個畫素位置使用均布均值和方差按照一定的原則確定其最後的顯示值,當然,由於只計算了塊內的方差和均值,因此,每個畫素處的均值和方差可以用類似CLAHE演算法裡的方式進行插值獲取,或者已經有的資料進行曲線擬合後在計算得到,前者速度快,後者更精確。
關於這個的原理我沒有弄清楚,但是確實效果可以,注意他其實並沒有二值化的,實測這個演算法效果還是不錯的。
原 圖 PhotoCopy的效果
背景去除演算法的效果 背景純化演算法的效果
上面這個結果,應該說後面兩個效果都還不錯的。
我們在看一個圖,區別就更為明顯了。
原 圖 PhotoCopy的效果
背景去除演算法的效果 背景純化演算法的效果
可以看出,背景去除那個演算法那原生的可以保留彩色的部分,其他的就不行,但是也可以適當的修改使得演算法部分能得以保留。
但是,PhotoCopy演算法還可以用在很多其他的場合,而後面的兩個演算法如果用於普通的影像,效果就有點過了。
我現在一直在改進最後一個演算法,覺得他很有前景。
在我的SSE Demo裡也整合了上述三個演算法,分別位於Styleize --> PhotoCopy、Detection->Auxliary->RemoveBackGround以及Detection->Auxliary->PureGround選單下。
PureGround還有一些其他的選項,如下圖所示:
可在此處下載Demo: https://files.cnblogs.com/files/Imageshop/SSE_Optimization_Demo.rar