值得一看的文本檢測方法

   作者:晟  沚        

        

前  言

   

    目前深度學習方法做文本檢測比較普遍,但是也存在一些時候GPU資源不夠,這時候就需要一些其他的方法來檢測文本信息,本文主要介紹不使用深度學習進行文本檢測的方法。文本檢測的瓶頸主要是處理那些對比度不同或嵌入複雜背景的文本。爲了解決這些困難,本文主要介紹的方法可以基於不變的特徵,例如邊緣強度,邊緣密度和水平分佈。首先,它應用邊緣檢測,並使用較低的閾值來過濾掉非文本邊緣。然後,選擇局部閾值以保留低對比度文本並簡化高對比度文本的複雜背景。接下來,用兩個文本區域增強operator,以突出顯示具有高邊緣強度或高邊緣密度的那些區域。最後,從粗到細的檢測可以有效地定位文本區域。實驗結果表明,本文提出的方法在對比度,字體大小,字體顏色,語言和背景複雜性方面均十分可靠。

01

分析

    當文本嵌入複雜的背景中時,文本的對比度,即文本的顏色(或亮度)與其局部背景之間的差異,會在圖像的不同區域發生變化。因此,使用全局閾值分隔文本和背景的方法將丟失低對比度文本。例如,(圖a)顯示了具有不同對比度文本的圖像。應用Sobel運算符後,如果閾值是40(圖b),則所有文本都會保留,閾值爲65,則低對比度文本消失(圖c)。

    另外,不同語言的字符具有各種筆畫結構。使用筆劃密度約束的方法可以成功檢測英語等。但是無法正確檢測亞洲語言文字,例如中文。例如,區域增長方法使用小尺寸的窗口掃描圖像並將每個窗口分類爲文本或非文本,然後合併相鄰的文本塊形成文本區域。由於每個漢字佔用相同的空間,而筆劃數從1到大於20不等,因此筆劃少的字符將不會被筆劃密度約束分類爲文本。

  1.     針對文本的特殊,總結如下規律:
    儘管文本字符串的像素顏色不均勻,但是視頻中可識別的文本字符串確實具有密集或鮮明的顏色或亮度過渡,即相對於其背景的邊緣。因此,邊緣是比字體顏色更可靠的功能。邊緣具有兩個屬性:邊緣強度和邊緣密度。當嵌入在簡單且高對比度的背景中時,文本字符串在邊緣強度和邊緣密度上都很明顯。當嵌入在簡單且低對比度的背景中時,主要是邊緣密度很明顯。當嵌入到充滿非文本對象邊緣的複雜背景中時,主要是邊緣強度就很明顯。由於不可能用很少的筆劃由所有字符組成文本字符串,因此其平均邊緣密度明顯高於背景。

  2. 字符大多是直立的,並在與水平線對齊的有限距離內成簇出現,並且它們顯示出空間凝聚力–同一文本字符串的字符具有相似的高度,方向和間距。
    所以,基於邊緣強度,邊緣密度和水平分佈,可以設計一種有效的方法來檢測複雜背景下的多語言文本。

02

具體方法

    本文的方法的目標是在不受到語言和字體大小影響的情況下,檢測低對比度文本和高對比度文本。首先,使用彩色邊緣檢測器將視頻圖像轉換爲邊緣圖,並使用較低的全局閾值來過濾掉絕對非邊緣點。然後,執行選擇性局部閾值處理以簡化複雜背景。接下來,用一個邊緣強度平滑算子和一個邊緣聚類功率算子,以突出顯示那些邊緣強度高或邊緣密度高的區域,即文本候選者。最後,考慮到特徵隨語言和字體大小不變,採用一種面向字符串的從粗到細的檢測方法來快速定位文本字符串。

邊緣檢測

    彩色邊緣檢測器使用Sobel運算符檢測YUV顏色空間中的邊緣。最終的顏色邊緣圖是Y,U和V通道的三個邊緣圖的並集。但是,由於閾值太高而無法保留低對比度文本,因此不使用快速熵閾值化。取而代之的是,應用由邊緣強度直方圖確定的低閾值,以僅消除絕對的非文本點。首先,在直方圖中找到排名0-20的峯,並獲得其周圍的平均高度;然後,低閾值是峯後高度低於平均高度10%的第一個位置。在全局閾值化之後,非邊緣點的值爲零,而邊緣點的值爲其各自的邊緣強度。

局部閾值

    如果背景是簡單的,則可以通過低閾值輕鬆檢測甚至低對比度的文本字符串,而嵌入複雜背景中的文本字符串需要更高的閾值才能進一步簡化背景。因此,有必要根據每個局部區域的背景複雜度確定適當的閾值。定義一個大小爲H×W的窗口(H和W分別與圖像的高度和寬度成比例)。窗口首先在水平方向上然後在垂直方向上逐步掃描邊緣特徵圖,如下圖所示。

    在每個步驟中,窗口的原點僅在水平方向上移動W / 2(或在垂直方向上移動H / 2),因此可以補償因使用窗口邊框分割字符而導致的不準確性。窗口覆蓋的邊緣圖部分是要分析的局部區域。

背景複雜度定義如下。

    如果像素是非邊緣點,將其稱爲空白點。如果該局部區域中全部空白行的數量不少於10%×H,則背景複雜度很簡單。簡單區域不再需要閾值,而複雜區域則需要更高的閾值。從該區域的局部直方圖中可以找到新的閾值。令MAX和MIN分別爲最高邊緣強度和最低邊緣強度。在[MIN,MAX]的下半部分找到低峯,在[MIN,MAX]的上半部分找到高峯,然後將新閾值確定爲低峯和高峯之間的最低位置。在該區域中強度低於Tlocal的邊緣點標記。掃描完整個邊緣圖後,將刪除所有帶有標誌的邊緣點。應用選擇性局部閾值,可以保持簡單背景下的低對比度文本,同時簡化了高對比度文本的背景。

文本區域的增強

    通過選擇性局部閾值選取出在局部背景中明顯的邊緣點。然而,僅利用了邊緣強度特徵。爲了通過邊緣密度功能進一步突出顯示文本區域,通過邊緣強度平滑(ESS)算子和邊緣聚類功率(ECP)算子,其卷積內核如下圖所示。

    兩個核中的權重均來自歐幾里得距離。最後是使用整數來加快卷積速度,因此將卷積結果除以權重之和(ESS的權重爲220,ECP的權重爲100)。ESS權重與從中心向外的距離的平方成反比。它反映了中心邊緣點周圍的平均邊緣強度。由於局部閾值處理可能會降低文本區域中的邊緣密度,因此首先使用如下等式對邊緣圖中每個表示爲EM(x,y)的點執行ESS算子,以增加邊緣密度。


    ESS特徵圖是平滑的邊緣強度特徵圖。然後,通過僅對ESS算子中的非零點執行ECP算子來增強高邊緣密度區域,如下公式所示。

    ECP權重與從中心向外的距離的平方成正比,卷積結果除以其自身的ESS值。如果ECP有許多相鄰的邊緣點具有更高或相似的邊緣強度,則無論邊緣點的ESS值是什麼,ECP都僅會突出顯示中心點周圍的邊緣密度。最後,通過如下公式對ESS值和ECP值進行積分,並更新邊緣圖。

通常,ESS和ECP,α爲0.5。


粗到細的檢測方法

    顯然,具有高密度的水平矩形區域表示文本字符串。投影是查找此類高密度區域的一種比其他方法(例如區域生長方法)更有效的方法,因爲文本字符串在水平投影中始終會產生急劇的跳躍。但是,在視頻圖像中,文本字符串不會逐行顯示。它們通常在水平或垂直維度上重疊。由於簡單的投影僅反映一維的分佈,因此無法很好地處理這種情況。因此,通過一種從粗到精的檢測方案來解決此問題。粗到細檢測的想法是通過兩階段投影來逐步定位文本區域,如下圖。



    

    在第一階段,它使用粗水平投影和粗垂直投影將邊緣圖粗略地分割爲文本塊。然後,在第二階段,它通過精細的水平投影和精細的垂直投影來精確地定位文本區域。請注意,只有粗略的水平投影是整體投影,其他都是矩形區域中的局部投影。最後,根據平均密度,精細的垂直投影中的峯分佈和密度分佈的規則檢查文本狀區域非文本區域。由於預處理顯着突出了類似文本的區域,因此可以輕鬆快速地找到文本字符串。下面給出一些結果:


 

END

機器學習算法工程師


                                            一個用心的公衆號