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