唐思源, 苗 玥,王曉琴
包頭醫(yī)學院計算機科學與技術系,內(nèi)蒙古 包頭 014060
圖像中的文本包含豐富﹑明確的信息。如果這些文本能被自動地提取出來,則對圖像高層語義的自動理解﹑索引和檢索是非常有價值的。圖像中的文本提取可概括為兩個步驟:1)文本定位[1]。即找出圖像中文本所在的位置或剛好包圍文本的矩形區(qū)域;2)文本識別[2]。對定位出的文本區(qū)域進行二值化﹑增強處理,再送入光學字符識別系統(tǒng)(OCR)中進行字符識別。文本定位是文本識別的前提,是文本提取的關鍵,本文主要提出了一種文本定位技術的改進方法。
圖像中文字可以分為人工文本和場景文本[1]。人工文本是指通過圖像處理工具對圖像進行編輯,人工加在圖像上的文本。場景文本是指拍攝場景中所包含的文字。它是場景的一部分,隨場景一同被拍攝到圖像中,如廣告牌﹑車牌等。場景文字的方向﹑大小沒有限制,顏色千變?nèi)f化,圖像的光照情況與場景所在的環(huán)境有很大關系;而且由于攝影機的投影變換關系,圖像中的文字有可能會發(fā)生移動﹑旋轉﹑縮放等變形,定位難度較大,所以本文主要是針對人工文本進行定位。
字幕要被正確識別就必須和背景有區(qū)分,也就是需要呈現(xiàn)一定的邊緣特征和強度帶,所以通過對視頻幀邊緣強度進行分析來檢測字幕是一個有效的辦法。本文的方法如下:我們處理的都是灰度圖像,如果是彩色圖像,先轉換成灰度圖像。然后對灰度圖像進行邊緣檢測,考慮到中文字幕自身的一些特點,傳統(tǒng)的方法都是采用Sobel[3]算子進行字幕邊緣的提取,采用這樣的算子將保證其對垂直和水平邊緣都具有較大的影響。但可以對Sobel算子進行改進,本文應用改進的Sobel算子把視頻幀圖像轉換成邊緣強度圖;再用一種自適應閾值的方法將文字行檢測出來,然后過濾背景噪聲;在文字區(qū)域的定位方面,本文用的是投影分析方法,因為文字區(qū)域的象素密度在一定范圍之內(nèi)并形成一定紋理,再依據(jù)紋理測量濾去非文字區(qū)域,分割出可能的文字區(qū)域;最后將字幕區(qū)域進行二值化,以備后期輸入OCR識別軟件進行字幕識別的處理。
由于彩色圖像處理的復雜性,圖像預處理部分首先將輸入的圖像去掉彩色信息,進行灰度化。本文根據(jù)NTSC[4]視頻標準公式:Gray=0.3red+0.59green+0.11blue
將彩色圖像轉化為灰度圖像。
本文采集到一段視頻片段的幀序列,提取某一幀圖像進行處理,接下來用改進的Sobel算子計算每個像素點的邊緣強度值。Sobel 算子由兩個卷積核組成,一個核對水平邊緣的響應最大,另一個核對垂直邊緣響應最大。由于漢字中橫和豎的筆劃都比較多,因此本文用Sobel算子分別檢測出視頻幀的水平和垂直邊緣,并把水平和垂直方向的邊緣疊加在一起,加強了檢測到的文字的邊緣;同時中文中有很多傾斜的筆畫,所以用改進的Sobel算子效果更好,改進的Sobel算子又增加了兩個卷積核,即對左對角線,右對角線兩個方向的邊緣也產(chǎn)生響應,邊緣檢測結果如圖2所示。
由于利用改進的Sobel算子提取出的文字邊緣比較粗略,不能完全與背景邊緣區(qū)分出來,并且有些并不閉合,所以利用數(shù)學形態(tài)學算法對圖像進行形態(tài)學膨脹,目的是將文字邊緣連接成塊。膨脹[5]是將與某物體接觸的所有的背景點合并到該物體中的過程。腐蝕[5]是消除物體所有邊節(jié)點的過程。然后再通過閉運算,平滑其邊緣。閉運算:先膨脹后腐蝕它具有填充物體內(nèi)部的小的空洞。連接相連臨近的物體,在不明顯改變物體面積的情況下平滑其邊緣的作用,文字邊緣連接成塊結果如圖3所示。
通常的方法是按著經(jīng)驗設定一個閾值,但這種方法的閾值設定不能滿足視頻圖像復雜背景的變化,檢測錯誤率高。本文應用一種新的自適應迭代檢測[6]算法。迭代步長選為邊緣密度的均值,非文子行的排除條件是文字行的高度都應該大于10個象素,而循環(huán)迭代停止的條件是本次循環(huán)中所剩余的候選文字行的邊緣密度填充率大于50%,或前后兩次循環(huán)得到的文字候選行個數(shù)不再發(fā)生變化。
這個時候,還有很多背景噪聲塊,而這些噪聲塊都是從邊緣往里延伸的。這里我們采取一種周邊融合的方法去除背景噪聲。把圖片周邊一定象素寬的所有象素都變成黑色,這樣就把和邊緣相通的背景噪聲塊以及和邊緣相隔一定象素寬的背景噪聲塊連成一個連通區(qū),直接把這個連通區(qū)去掉就達到去除噪聲的目的,背景噪聲去除結果如圖4所示。
首先根據(jù)字幕區(qū)域本身的特點,本文將探測到的文本區(qū)域用一個矩形框來表示,設定一些規(guī)則,目的是將文本區(qū)域矩形框的上下左右邊界提取出來,大體定位出文字區(qū)域。規(guī)則如下:
Step1:自下而上﹑自左至右對圖像進行水平掃描。計算每行灰度值>40的像素數(shù)目,若像素數(shù)目 > 0.1*Wide(其中,Wide為圖像的寬度), 則認為該行可能是字幕行,將該行是否為字幕行的標志I置為真;
Step2:自下而上﹑自左至右對圖像進行水平掃描,若連續(xù)字幕行的數(shù)目>5,則記錄連續(xù)字幕行的上下位置,分別標記為top和bottom,作為候選字幕區(qū)域的上下邊界,進入Step3。否則,從top的下一行開始繼續(xù)進行水平掃描,重復Step2,直至掃描結束;
Step3:自左而右﹑自下而上對bottom和top之間的區(qū)域進行垂直掃描,采用類似Step1的步驟,判斷bottom與top之間的區(qū)域是否為字幕列。即計算每列灰度值>40的像素數(shù),若像素數(shù)>0.2*(top-bottom),則認為該列為字幕列,并將該列是否為字幕列的標志I置為真;
Step4:自左而右﹑自下而上對bottom和top之間的區(qū)域進行垂直掃描,若連續(xù)字幕列的個數(shù)>10,則記錄連續(xù)字幕列的左右位置,分別標記為left和right,作為候選字幕區(qū)域的左右邊界。返回Step2,從top的下一行開始重新進行水平掃描。
接著依據(jù)紋理測量[7]濾去非文字區(qū)域。通過對圖像有關屬性的統(tǒng)計分析,可以把圖像中不同的區(qū)域區(qū)分為不同紋理,對圖像屬性的統(tǒng)計分析,有一階統(tǒng)計[7]方法﹑二階統(tǒng)計方法[7]等。一階統(tǒng)計方法計算簡單,一些實驗表明,其正確率優(yōu)于二階統(tǒng)計方法,我們可以使用一階統(tǒng)計方法計算出像素及其鄰域的灰度分布。實驗結果如圖5右所示。
經(jīng)過去處背景噪聲和濾去非字幕區(qū)域的之后,最終得到的字幕區(qū)域?qū)⑹欠蠗l件的字幕區(qū)域,該階段主要負責將字幕區(qū)域進行二值化,以備后期輸入OCR識別軟件進行字幕識別的處理。所謂的圖像二值化[8]是將圖像分成對象與背景兩部分的一種操作,這時圖像里只有黑白兩色了。最簡單的圖像二值化方法是,可以通過設定閾值實現(xiàn)。如果圖像中某像素的灰度值小于該閾值,則將該像素的值設為0,否則設為255。
本文采用了一個窗口來掃描灰度圖,通過對局部背景進行分析以找到一個恰當?shù)拈撝?,能夠既保留文字筆畫的清晰和完整又使文字和背景盡量分開。我們先用最大類間方差法[9]得到一個局部閾值T,然后再對局部閾值T進行一系列的調(diào)整,得到調(diào)整后的閾值T new,最后把灰度低于T new的象素點轉成黑色點,高于T new的轉換成白色點。這樣就可以把灰度圖轉換成二值圖了。
為了測試本實驗的工作的情況,本文使用了《探索發(fā)現(xiàn)-機器人時代》的視頻,試驗結果如下圖所示:
圖1
圖 2
圖3
圖4
圖5
圖 6
[1]胡宏斌,徐駿,周銅汝.基于COM 技術的視頻流文字檢測[J].計算機工程,2001.
[2]圖像處理和分析[M].清華大學出版社,1999.
[3]MATLAB圖形圖像處理應用教程[M].中國水利水電出版社,2003.
[4]章毓晉. 圖像工程(上冊)-圖像處理與分析[M].清華大學出版社,2000.
[5]王曉丹.基于MATLAB的系統(tǒng)分析與設計[M].西安電子科技大學出版社,2000.
[6]楊淑瑩.圖像模式識別[M].清華大學出版社,2005,7.
[7]陸宗其.c/c++圖像處理編程[M].清華大學出版社,2005,1.
[8]岡薩雷斯.數(shù)字圖像處理(MATLAB版)[M].電子工業(yè)出版社,2007,10.
[9]周明全.基于內(nèi)容圖像檢索技術[M].清華大學出版社,2007,7.