吳 進
(西安郵電學院 電子信息工程系,陜西 西安 710121)
目前,圖像和視頻數據已經廣泛應用于教育、娛樂以及多媒體領域。隨著視頻技術的發展,越來越多的影視節目被制作成VCD和DVD,從影視字幕中獲取相應的文本,可為影視節目的內容檢索提供一種重要的手段。在對視頻流進行標注和索引的研究領域中,基于內容的視頻檢索技術是通過提取顏色、紋理、形狀和運動等視覺特征來表征視頻所蘊含的語義,達到檢索目的。目前已有視頻場景分割、字幕提取等多個方向,相對于其他方向而言,字幕提取是這一領域中研究較多,發展也比較成熟的一個方向。視頻流所包含的字幕表達了豐富語義,可以在原始視頻流的分析理解過程中發揮重要的作用。無組織的視頻檢索所采用的特征基本上是低級視覺的特征,而且往往要人工加入關鍵詞和描述信息,以便于組織信息,這就增加了工作量,同時也引入了人為的主觀因素,不利于檢索。因此,通過對字幕信息的提取、識別和分析,再結合已有的檢索技術,就有可能在一定程度上達到概念級的基于內容的檢索。本文所研究的算法是對圖像中的字符進行初步提取,為后續的工作如確認、識別等作準備工作。最終為達到實現視頻內容檢索這一目的服務。
德國Mannheim大學提出了基于分裂/合并算法實驗,對視頻幀中的文字進行分割[1]。該實驗首先將原始視頻幀灰度化,然后采用分裂/合并算法對灰度圖像進行分割處理。該算法主要是針對西歐語言,若用該方法對復雜背景之上的漢字進行分割實驗,分割效果并不理想。
美國Massachusetts大學采用紋理分割算法對復雜背景之上的文字分割進行了研究。該方法的主要原理是利用文字與背景的不同紋理表現將文字區域從背景中分離出來。然而,紋理分割的復雜度和計算量都比較大,文字區域劃定部分也設計得相當復雜,因此在檢測和提取的效率上可能會存在問題[2]。
針對上述兩種算法存在的問題,提出了區域檢測算法對其進行改進,從而避免了漢字筆畫丟失的現象,而且算法的復雜度和計算量都不大,因而大大提高了程序的運行速度。該算法的主要依據是基于閾值的二值化算法,然后去除大塊非文字背景區域和小塊噪聲,最后確定出文字塊。在對圖像進行二值化時,采用灰度最大值自適應,從而適應了不同圖像的特性,其流程如圖1所示。

在一般情況下,對文字圖像預處理首先是二值化,由于二值化過程會丟失許多視頻文字與文字模板的相似性信息,這種判斷對低質量的視頻圖像來說,其閾值不穩定,而對環境和場景的變化卻極為敏感。因此,首先將24位彩色視頻圖像進行色空間的轉換,其目的是保留足夠的信息,以便進一步預處理和識別。
RGB色彩系統[3]是最常用的顏色系統,另外一些常見的色彩系統還有CMY色彩系統、YIQ色彩系統、YUV色彩系統、YCbCr色彩系統等。YIQ色彩系統屬于NTSC系統,這里的Y不是指黃色,而是指色彩的明視度(Luminance),即亮度(Brightness)。其實Y就是圖像的亮度值,而I和Q則是指色調(Chrominance),即描述圖像色彩及飽和度的屬性。RGB與YIQ之間的對應關系如下

本文中對圖像進行轉換采用的是式(1)表示的方法,采用這種方法提取亮度信息主要是因為RGB色空間中色度和亮度是不可分的,而本文檢測字幕的幾個算法都是基于亮度信息進行的,所以首先灰度化或進行色空間轉換僅提取亮度信息就可以將亮度和色度分離,從而可以僅對亮度分量進行相應的算法研究。筆者所選用的YIQ將色度和亮度進行了分離,Y單指亮度,以后的處理都是針對它進行的。
將圖像由RGB空間轉換到YIQ空間,利用式(1),有

轉換時先定義3個變量(R,G,B),分別代表原圖像的RGB值,程序段為:

上述程序段中:RGBQUAD是位圖格式中的調色板結構體;rgbRed,rgbGreen,rgbBlue是圖像的紅色、綠色和藍色分量;prgb是指向原圖像數據的指針。
然后再定義一個指針變量pgray,按照式(3)處理后,結果送入pgray。在計算灰度值時,要取255和式(3)計算所得值的較小值,因為選取參數時進行了近似,可能會有大于最大值255的數據出現。這些都是編程時需注意的細節問題[4]。
由MV圖像的特性可知,背景與字幕一般會有較大的亮度差別,對整幅圖進行二值化處理可以濾掉部分背景。
在基于閾值的灰度圖像分割算法中,確定閾值T是關鍵。最常用的模型為:假設圖像由具有單峰灰度分布的目標和背景組成,且目標和背景像素在灰度值上有較大差異。對這類圖像,其灰度直方圖基本可看作是由分別對應目標和背景的兩個單峰直方圖混合而成,可把雙峰間的谷點作為閾值T,對圖像作以下二值化處理:
1)對圖像的灰度進行統計,找出灰度的最大值GrayMax。
2)將圖像二值化。此時已經得到了灰度的最大值,將閾值T定為GrayMax與一個固定數值thre的差值。將thre作為參數值由外部傳入函數。thre是針對進行區域檢測的圖像的特點經過多次試驗確定的[5]。
大部分圖像的背景中可能都包含一些亮度與字幕相差不多的區域,二值化不能將它完全去除,因此需檢測大塊非文字區域并將其去掉。因為圖像中的字幕一般都能確定大小,對大量MTV中的字幕進行分析后得到:每個字的寬度大約是圖像整個寬度的1/16。在二值化時假定將字幕置為白色,去掉的背景置為黑色。對此作如下處理:
1)定義一個標志量Flag;
2)開始按行遍歷圖像的每個像素,如果為白色,標志量加1;
3)一旦顏色變為黑色,立即檢測前面白色區域的寬度,如果大于確定的閾值,則認為它不是字符,將其置為黑色,即濾掉;
4)指針再指回原來的位置,繼續檢測后面的像素;
5)小于閾值則不做任何改動,指針繼續后移檢測。
按以上步驟處理結束后,圖像每行中水平方向上大于一個字符的區域都被去掉,剩余噪聲和字符,進行以下的去噪聲工作。
上一個算法除去了大塊非文字區域,但背景中還有一些小塊噪聲影響著處理結果。因此有必要再實現一個去噪聲算法。由于漢字筆劃的不連通性,一些點、劃也是非常小塊的區域,如“小”、“漢”等。如果按照上面的思想,肯定會丟失一些筆劃。字幕一般都集中在行里,所以字幕所處的區域每行都會有一定數量的白色像素。而噪聲的分布是隨機的,特別是在已經進行了區域劃定之后,所剩余噪聲的范圍更小。本文采用另一種思想:對每一行中白色像素的總數進行統計,如果小于某個確定閾值,就認為這些是噪聲影響形成的,將其去除;反之保留[6]。步驟如下:
1)定義一個標志量Flag1;
2)開始按行遍歷圖像的每個像素,如果為白色,標志量加1;
3)檢測完一行之后,檢測標志量的值,如果大于給定閾值,則認為是字符存在的行,不做改動,繼續檢測;
4)如果小于閾值,則認為這一行中的白色像素是噪聲,指針遞減,將其全部置為黑色;
5)指針復位,繼續檢測。
上述處理可以將大部分隨機小噪聲濾除。
最后顯示處理結果,通過調用函數SetDIBitsToDevice即可實現。
為了更好地驗證區域檢測的結果,將中間處理的過程一一顯示出來,見圖2~圖5。


由圖3可以看出,二值化后還留有部分非文字的區域,有較大塊的,也有小塊的。進行區域劃定后(見圖4),水平方向上較長的部分被劃去,但是小于一個字符跨度的被保留下來了。此時這些保留下來的小塊連同原來的小塊都可被視為噪聲,進行去噪聲后只有文字被保留下來(見圖5)。統計表明,大部分MTV圖像字幕亮度比大部分背景要高,用這種方法取得了良好的效果。

圖4 區域劃定后的圖像

圖5 最終處理結果
區域檢測對字幕行外的噪聲濾除得非常徹底,字幕保留得也比較完整。但是對字幕造成了輕微劃傷,和字幕同行的噪聲也無法去除。這是進行區域檢測不可避免的問題。進行字符檢測的最終目的是將其識別出來,從這個角度上講,區域檢測法是有效的。
[1]何斌,馬天予,王運堅,等.Visual C++數字圖像處理[M].北京:人民郵電出版社,2009.
[2]張偉男,唐倫,陳前斌.基于3G傳輸的視頻監控系統的后臺設計[J].電視技術,2008,32(11):85-88.
[3]萬罡,周洞汝,崔永毅,等.數字視頻中文字分割算法的研究[J].計算機工程與應用,2010(2):103-105.
[4]周長發.精通Visual C++圖像編程[M].北京:電子工業出版社,2008.
[5]況超,楊波,石廣建.多媒體圖像后處理系統設計[J].電視技術,2009,33(2):72-75.
[6]李芳,吳斌,張紅英.基于快速8-連通域標記的視頻字幕提取新算法[J].電視技術,2009,33(2):69-71.