SWT(Detecting Text in Natural Scenes with Stroke Width Transform)算法詳解

《Detecting Text in Natural Scenes with Stroke Width Transform》煞额,這是微軟公司的一篇發(fā)表于CVPR2010的文章饲趋,使用傳統(tǒng)方法來檢測自然場景中的文本洲愤。代碼地址:https://github.com/aperrau/DetectText

因?yàn)樗闶且粋€比較經(jīng)典的文章颅痊,所以看完記錄一下。當(dāng)然github還有其他版本的實(shí)現(xiàn)代碼彻犁,上面的代碼幾乎和原文的原理一樣叫胁,方便和文章一起閱讀,因此放在這汞幢。

下面根據(jù)原文的結(jié)構(gòu)和上述提供的代碼詳細(xì)的解讀一下該算法

總的來說該算法分為四步:

  1. 利用canny算子檢測圖片的邊界
  2. 筆畫寬度變換-Stroke Width Transform(這一步輸出的圖像我們稱為SWT圖像)
  3. 通過SWT圖像得到多個連通域
  4. 通過自定義的規(guī)則過濾一些連通域驼鹅,得到候選連通域
  5. 將連通域合并得到文本行

一、利用canny算子檢測圖片的邊界

這步不用多說森篷,基礎(chǔ)的圖像處理知識输钩,利用OpenCV 的Canny函數(shù)可以得到圖片邊緣檢測的結(jié)果。

二疾宏、筆畫寬度變換(Stroke Width Transform)

先要劇透一點(diǎn)张足,也是需要明確的一點(diǎn),這一步輸出圖像和輸入圖像大小一樣坎藐,只是輸出圖像像素為筆畫的寬度,具體如下。


圖1.png

如上圖所示岩馍,通過邊緣檢測得到上圖a碉咆,假設(shè)現(xiàn)在從邊緣上的點(diǎn)p開始,根據(jù)p點(diǎn)梯度的反方向找到邊緣另一邊的點(diǎn)q蛀恩,如果p點(diǎn)的梯度與q點(diǎn)梯度的反方向夾角在\pm\pi/6之間疫铜,那么這兩點(diǎn)間的距離為一個筆畫寬度,那么p點(diǎn)和q點(diǎn)以及它們之間的像素在SWT輸出圖像中對應(yīng)位置的值為p和q點(diǎn)的距離大小双谆。

按照上述的計(jì)算方法會有兩種情況需要考慮壳咕。如下圖所示,
下圖a表示一個筆畫中的像素可能得到兩個筆畫寬度顽馋,這種情況下將紅點(diǎn)出的筆畫寬度設(shè)置為最小的那個值谓厘,下圖b表示當(dāng)一個筆畫出現(xiàn)更為復(fù)雜情況,b圖中的紅點(diǎn)計(jì)算出的兩個筆畫寬度用兩個紅線表示寸谜,這兩紅線都無法真正表示筆畫的寬度竟稳,這時候筆畫寬度取這里面所有像素計(jì)算得到的筆畫寬度的中值作為紅點(diǎn)出的筆畫寬度。


圖2.png

因?yàn)橛形淖直缺尘案梁捅尘氨任淖指羶煞N情況熊痴,這樣會導(dǎo)致邊緣的梯度方向相反他爸,所以這一個步驟要執(zhí)行兩遍。這個步驟結(jié)束后得到一張SWT圖像果善。

三诊笤、通過SWT圖像得到多個連通域

在通過上述步驟得到SWT輸出圖像后,該圖像大小與原圖像大小一致巾陕,圖像中的像素值為對應(yīng)像素所在筆畫的寬度(下面稱為SWT值)√指現(xiàn)將相鄰像素SWT值比不超過3.0的歸為一個連通域。這樣就能得到多個連通域惜论。

四许赃、過濾連通域

上述步驟輸出的多個連通域中,并不是所有的連通域都被認(rèn)為是筆畫候選區(qū)域馆类,需要過濾一些噪聲的影響混聊,過濾的規(guī)則有:

  1. 如果某連通域的方差過大(方差大于連通域的一半為方差過大為過大),則認(rèn)為該連通域不是有效的
  2. 如果某連通域過大(寬大于300)或者過星伞(寬小于10)句喜,則認(rèn)為該連通域不是有效的(代碼中只過濾了過大的連通域,連通域的長寬為連通域外接矩形的長寬)
  3. 如果某連通域的長寬比不在0.1-10的范圍內(nèi)沟于,則認(rèn)為該連通域不是有效的(連通域的長寬為連通域外接矩形的長寬)
  4. 如果某連通域的外接矩形包含其他兩個連通域咳胃,則認(rèn)為該連通域不是有效的(代碼中判定,如果某個連通域的外接矩形包含兩個或兩個以上連通域外接矩形的中心時旷太,認(rèn)為其包含了兩個連通域)

上述條件都滿足的連通域展懈,認(rèn)為是筆畫候選區(qū)域销睁,用于輸入給下一步操作。

五存崖、將連通域合并得到文本行

文中認(rèn)為冻记,在自然場景中,一般不會只有單個字母出現(xiàn)来惧,所有將連通域合并為文本有利于進(jìn)一步將噪聲排除冗栗。

當(dāng)兩個連通域滿足下面條件時,認(rèn)為這兩個連通域是一對:

  1. 兩個連通域中值的比小于2.0(連通域中值供搀,指的是連通域中所有像素值的中值)
  2. 兩個連通域高的比小于2.0(連通域的高隅居,指其外界矩形的高)
  3. 兩個連通域之間的距離小于較寬的連通域?qū)挾鹊?倍(連通域之間的距離為連通域外界矩形中心點(diǎn)之間的距離)
  4. 兩個連通域的顏色相似(代碼用兩個連通域?qū)?yīng)于原圖區(qū)域的像素均值代表該連通域的顏色)

得到兩兩連通域組成的多對連通域后,如果有兩連通域有共享的連通域葛虐,共享的連通域都在連通域?qū)Φ囊欢耍催B通域的首端或者尾端)胎源,且方向相同(方向用一個連通域中心到另一個連通域中心的方向),就將這兩對連通域合并為一個新的連通域組挡闰,依次進(jìn)行乒融,知道沒有連通域?qū)π枰喜t合并結(jié)束。

最后將合并完的結(jié)果中濾除小于3的連通域的連通域組得到的最終結(jié)果摄悯,認(rèn)為是一行文字赞季。

到這里SWT的文字檢測算法就介紹完了。

中文本定位與識別的評測方法

歡迎加入OCR交流群:785515057(此群已滿)
歡迎加入OCR交流群2:826714963

參考
1.《Detecting Text in Natural Scenes with Stroke Width Transform》
2.https://sites.google.com/site/roboticssaurav/strokewidthnokia
3.https://github.com/aperrau/DetectText
4.https://www.cnblogs.com/dawnminghuang/p/3807678.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奢驯,一起剝皮案震驚了整個濱河市申钩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘪阁,老刑警劉巖撒遣,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異管跺,居然都是意外死亡义黎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門豁跑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來廉涕,“玉大人,你說我怎么就攤上這事艇拍『桑” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵卸夕,是天一觀的道長层释。 經(jīng)常有香客問我,道長快集,這世上最難降的妖魔是什么贡羔? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任廉白,我火速辦了婚禮,結(jié)果婚禮上治力,老公的妹妹穿的比我還像新娘蒙秒。我一直安慰自己勃黍,他們只是感情好宵统,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著覆获,像睡著了一般马澈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弄息,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天痊班,我揣著相機(jī)與錄音,去河邊找鬼摹量。 笑死涤伐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缨称。 我是一名探鬼主播凝果,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼睦尽!你這毒婦竟也來了器净?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤当凡,失蹤者是張志新(化名)和其女友劉穎山害,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沿量,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浪慌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了朴则。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片权纤。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖佛掖,靈堂內(nèi)的尸體忽然破棺而出妖碉,到底是詐尸還是另有隱情,我是刑警寧澤芥被,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布欧宜,位于F島的核電站,受9級特大地震影響拴魄,放射性物質(zhì)發(fā)生泄漏冗茸。R本人自食惡果不足惜席镀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夏漱。 院中可真熱鬧豪诲,春花似錦、人聲如沸挂绰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葵蒂。三九已至交播,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間践付,已是汗流浹背秦士。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留永高,地道東北人隧土。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像命爬,于是被迫代替她去往敵國和親曹傀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容