應用背景:是盲人輔助系統,城市環境中的機器導航等計算機視覺系統應用的重要一步。獲取文本可以爲許多視覺任務提供上下文的線索,而且,圖像檢索算法的性能很大部分都依賴於對應的文本檢測模塊。c++
意義:傳統的OCR應用於掃描文本,因此其依賴於把文本從背景像素中正確分離。這對於掃描文原本說是很簡單的,可是天然圖像因爲存在色彩噪聲,模糊,遮擋,很難將文本從背景中分離。算法
文章提出的方法:文本有着固定的筆畫寬度,利用這一特性就夠從背景中將其恢復。首先求圖像的筆畫寬度變換即每一個像素都分配了一個筆畫寬度,而後利用靈活的幾何推理,把有着類似比劃寬度的位置都被聚合成詞。這類似並非很嚴格,在必定範圍內變化都是能夠的。性能
優勢:1.沒有提取分離每一個像素特徵如:顏色,梯度等,而是提出像素組的特徵。2.沒有使用在多尺度金字塔上滑動的窗口,而是基於自底向上的方式,把有着類似筆畫寬度的像素歸併成連通域。3.沒有利用特定的語言信息濾除機制,全部可以用於多語言的文本檢測。spa
在多個尺度上掃描圖像,而後利用一些文本的特性如:高密度的邊緣,文本上下的低梯度,灰度變化明顯,波形的分佈,離散餘弦變換系數等來分類像素。其缺點是大計算量,缺少精度。blog
利用像素存在着類似的特性如同樣的顏色來組織像素成連通域。而後利用幾何或者紋理信息來排除那些不多是文本的連通域。優勢是:同時在各個尺度檢測文本,而且不限制於水平方向的文本。get
流程首先計算圖像的canny 邊緣,而後根據邊緣的方向信息計算圖像的SWT ,根據筆畫寬度信息將像素彙集成連通域,利用幾何推理如連通域的高寬比,連通域筆畫的方差,均值,中值等來過濾連通域,將連通域彙集成文本行,最後將文本行分割成一個個詞。流程的核心爲SWT和濾除連通域。下面給出這些步驟的詳細闡述,並給出matlab和C++代碼。it
輸入的是原始彩色圖像,輸出的是對每一個像素都分配了筆畫寬度的圖像。io
First pass:pdf
這個流程圖有兩個問題1.若是一個點被多個路徑掃描到,那麼就賦值爲最小路徑距離即筆畫寬度。2.在筆畫的轉彎處會出現問題,如上圖右邊,從上到下和從左到右的兩條路徑通過這點,假設從上到下的筆畫寬度爲50,從左到右爲40,那麼這點的筆畫寬度爲40.這顯然不符合實際狀況。這就須要第二次掃描。方法
Second pass:
第二次掃描流程是,對於全部第一次掃描到的路徑,求出路徑上的中值,將全部這條路徑上大於中值的點所有賦值爲中值。
從第一步咱們獲得的是筆畫寬度圖像,這時也仍是一個個像素,因此咱們要根據一些規則把像素合併成區域(即自底向上的一個過程)這個主要經過改變傳統連通域分析的鏈接條件獲得,傳統連通是像素周圍4鏈接或者8鏈接的像素都是同一值則是同一連通域,而這裏改變了這一條件,中心像素和周圍像素SW(筆畫寬度)比不能超過3.0.
第二步獲得的連通域中存在着許多明顯不是字符的區域,咱們須要根據一些先驗的知識濾除這些區域。主要是根據以上幾個規則
varianceSW:連通域筆畫的方差。meanSW:連通域筆畫的均值。aspectRatio:連通域高寬比。diameter:連通域直徑。width:連通域寬。height:連通域高
1). 10<height<300;
2).varianceSW/meanSW > .5
3).diameter/medianSW >= 10
4).aspectRatio < 0.1 && aspectRatio > 10
5).連通域的boudingbox不能包含超過兩個的連通部件
同第三步同樣,從上面獲得的是一個個候選的字符(連通域),咱們須要把字符合併成文本行。依據如下的規則
1).兩個候選字符的中值筆畫寬度比不超過2.0.
2).字符的寬度不超過3倍於最寬的字符寬度。
3).字符的顏色一致
經過文本行的水平距離直方圖來分割(??)
論文地址:http://www.math.tau.ac.il/~turkel/imagepapers/text_detection.pdf
核心部分的c++和matlab見下篇。