標籤:swt 文字檢測 text detection 情境文字
關於情境文字檢測的定義、應用、意義等科普性質的細節這裡就不提了,本文是一篇相對比較專業的文章,如果非此領域的同學請繞行。本文主要探討情境文字主流的方法,並提供了一些創新思路,以及一個基於文獻[1]的情境文字檢測系統(在csdn上分享了該代碼)。就我所知(半年前全面搜尋過),十分完善的情境文字檢測的代碼網上是沒有的,有的只是一些演算法,或者比較過時的系統,本文的出現正是希望通過本人的一點努力填補這個空白,方便廣大研究者能夠更快入門,至少一開始研究就有一個基本架構。
目前主流的方法主要有兩類:基於地區(MSER,最大穩定極值地區)和基於像素點(SWT,筆劃寬度變換)的方法。在文獻[2]中提到:截止2011年,情境文字檢測結果最好的是韓國人Chunghoon Kim基於MSER的方法,其查全率(recall)為62.47%,查准率(precision)為82.98%。遺憾的是,他的方法並沒有寫成論文,其演算法也不得而知。
當然,使用SWT是更普遍的情況,[1]即是基於SWT的。SWT方法最有代表性的有兩篇文章,都出自微軟研究院,一篇是SWT開山之作——Epshtein大神的文獻[3],一篇是巔峰之作——華科Cong Yao的文獻[4]。Epshtein大神提出SWT演算法,使得情境文字檢測向前邁出一大步,其演算法核心非常簡單,大致是(1)將原圖做Canny檢測,Canny邊緣圖作為演算法的輸入圖,對每一個Canny點進行一次SWT演算法,見圖1;(2)SWT演算法的一個前提是作者認為每個字元的筆劃寬度是大致相同的,所以從一個Canny邊緣點順著梯度方向出發,如果能夠找到梯度方向正好相反的點,且該點也是Canny邊緣點,則認為該筆劃寬度有效;(3)當檢測完所有的Canny點時,有效筆劃寬度就構成了輸出圖,即文字檢測圖,可見圖2。當然,理論上是這樣,而實際上會出現很多虛警圖,這些虛警通常是由於類文字物體得到的,如條環、窗戶、磚塊和網格等。我認為該演算法是基於像素點的,是因為起始點是Canny邊緣點,梯度方向和大小也是基於邊緣點,而筆劃寬度則是將兩個對應的Canny邊緣點間的線段串連起來。基於像素點有一個最嚴重的問題,就是容易受到雜訊點或特殊點的影響。比方說圖2,本來很好的結果,卻由於偽筆劃寬度帶了一些問題,因此做完SWT變換,必須做一些處理或改進。
(a)原圖的梯度方向 (b)局部放大圖
圖1 梯度方向圖
(a)原圖 (b)Canny邊緣圖 (c)SWT圖
圖2. SWT過程圖(具體演算法見[3])
Cong Yao的文章曾讓我大為震驚,雖然我並未做模擬,也沒有按照其思路進行研究,但是並不妨礙我推崇這篇文章。我沒有做模擬的原因是,這篇文章的工作量太大,對於只有半年時間寫論文的我來說時間不夠。通常,看到這類文章就像尋著一個珍寶一樣,時不時要拿出來鼓勵一下自己,什麼是真正的好文章?既有創新,又有工作量。可能是受Marios Anthimopoulos的啟發,Cong Yao使用的分類器是RFs(Random Forests, 隨機森林) 。在文獻[5]中,Marios例舉了RFs在文字檢測中比Boosting、SVM和NNs好的兩個優點。我在網上搜過RFs的代碼,只有一個簡化版的,本來RFs是一種判決樹,輸出的是機率,具體閾值可以人為設定,但是簡化版的只給出0或1。另外,該論文使用contour shape, edge shape 很新的描述子作為特徵向量,說明作者對映像領域最新發展是很熟悉的。作者一共給了十來個特徵向量,測試這些特徵的工作量可想而知。當然,工作量歸工作量,如果結果不行,那工作量也是白瞎,但是作者不負眾望,對ICDAR的查全率為0.66,查准率為0.68,對OSTD(傾斜情境文字資料庫,由文獻[1]作者發布)的查全率為0.73,查准率為0.77。
(a)p, e, c, o出現了偽筆劃寬度 (b)E, A, G, S包含偽筆畫寬度
圖3. SWT由於雜訊點引起的偽筆劃寬度
2012年,Weilin Huang提出了SWT的變體——SFT[6],在SWT演算法中添加了顏色資訊。2014年,將由本人提出另一種SWT變體——GSWT,目前還在進一步實驗中,但相信不久就能成文,準備發到PR上。
本人曾做過兩個有趣的小實驗,有圖供大家參考批評。
一是研究映像梯度時,發現文字的梯度大小圖有一個很明顯的特徵,就是一個文字的筆劃對應的兩個邊緣的梯度大小是大致相等的。見圖4。
二是,由於SWT受雜訊點影響較大,所以可以通過濾波,將雜訊點過濾掉再使用SWT演算法,但是一般低通濾波器會使文字的邊緣資訊造成模糊,所以保持邊緣平滑濾波器是一個完美選擇。我在這方面的研究還不深入,但是做個一個很神奇的實驗。靈感來自於Gastal寫的文獻[7],Adaptive Manifolds濾波器是一種新型的而且效能非常優越的保持邊緣平滑濾波器。見圖5。
圖4. 對比原圖和梯度大小圖。上行為原圖;下行為梯度大小圖,顏色從藍至紅表示值增大。可以發現,每個字中筆劃對應的兩個邊緣梯度大小是基本相等的。
(a)對原圖進行文字檢測 (b)對經過AM濾波後的圖進行文字檢測
圖5. 黃色框表示檢測到的豎直文字地區,紅色表示水平文字地區。可見,原圖由於雜訊的影響,結果很不準確,而後者能夠準確檢測。
最後,提一下我發布的一個情境文字檢測系統——TSDFNS(text string detection from natural scenes)——也許是很多人最想要的。但在這裡,希望大家有時間能夠讀一讀上面我提到的兩個小實驗,或許會對你在這個領域有寫協助。代碼見TSDFNS。
參考文獻
[1] Chucai Yi, etc. Text string detection from natural scenes by structure-based partition and grouping. TIP, 2011.
[2] Asif Shahab, etc. ICDAR 2011 Robust Reading Competition Challenge 2: Reading Text in Scene Images. ICDAR, 2011.
[3] Boris Epshtein, etc. Detecting Text in Natural Scenes with Stroke Width Transform. CVPR, 2010.(為了致敬,特意將Epshtein標為粗體)
[4] Cong Yao, etc. Detecting texts of arbitrary orientation in natural images. CVPR, 2012.
[5] Marios Anthimopoulos, etc. Detection of artificial and scene text in images and video frames. PAA, 2011.
[6] Weilin Huang, etc. Text Localization in Natural Images using Stroke Feature Transform and Text Covariance Descriptors. ICCV, 2012.
[7] Eduardo S. L. Gastal, etc. Adaptive Manifolds for Real-Time High-Dimensional Filtering. SIGGRAPH, 2012.