吳 進(jìn)
(西安郵電學(xué)院 電子信息工程系,陜西 西安 710121)
目前,圖像和視頻數(shù)據(jù)已經(jīng)廣泛應(yīng)用于教育、娛樂(lè)以及多媒體領(lǐng)域。隨著視頻技術(shù)的發(fā)展,越來(lái)越多的影視節(jié)目被制作成VCD和DVD,從影視字幕中獲取相應(yīng)的文本,可為影視節(jié)目的內(nèi)容檢索提供一種重要的手段。在對(duì)視頻流進(jìn)行標(biāo)注和索引的研究領(lǐng)域中,基于內(nèi)容的視頻檢索技術(shù)是通過(guò)提取顏色、紋理、形狀和運(yùn)動(dòng)等視覺(jué)特征來(lái)表征視頻所蘊(yùn)含的語(yǔ)義,達(dá)到檢索目的。目前已有視頻場(chǎng)景分割、字幕提取等多個(gè)方向,相對(duì)于其他方向而言,字幕提取是這一領(lǐng)域中研究較多,發(fā)展也比較成熟的一個(gè)方向。視頻流所包含的字幕表達(dá)了豐富語(yǔ)義,可以在原始視頻流的分析理解過(guò)程中發(fā)揮重要的作用。無(wú)組織的視頻檢索所采用的特征基本上是低級(jí)視覺(jué)的特征,而且往往要人工加入關(guān)鍵詞和描述信息,以便于組織信息,這就增加了工作量,同時(shí)也引入了人為的主觀因素,不利于檢索。因此,通過(guò)對(duì)字幕信息的提取、識(shí)別和分析,再結(jié)合已有的檢索技術(shù),就有可能在一定程度上達(dá)到概念級(jí)的基于內(nèi)容的檢索。本文所研究的算法是對(duì)圖像中的字符進(jìn)行初步提取,為后續(xù)的工作如確認(rèn)、識(shí)別等作準(zhǔn)備工作。最終為達(dá)到實(shí)現(xiàn)視頻內(nèi)容檢索這一目的服務(wù)。
德國(guó)Mannheim大學(xué)提出了基于分裂/合并算法實(shí)驗(yàn),對(duì)視頻幀中的文字進(jìn)行分割[1]。該實(shí)驗(yàn)首先將原始視頻幀灰度化,然后采用分裂/合并算法對(duì)灰度圖像進(jìn)行分割處理。該算法主要是針對(duì)西歐語(yǔ)言,若用該方法對(duì)復(fù)雜背景之上的漢字進(jìn)行分割實(shí)驗(yàn),分割效果并不理想。
美國(guó)Massachusetts大學(xué)采用紋理分割算法對(duì)復(fù)雜背景之上的文字分割進(jìn)行了研究。該方法的主要原理是利用文字與背景的不同紋理表現(xiàn)將文字區(qū)域從背景中分離出來(lái)。然而,紋理分割的復(fù)雜度和計(jì)算量都比較大,文字區(qū)域劃定部分也設(shè)計(jì)得相當(dāng)復(fù)雜,因此在檢測(cè)和提取的效率上可能會(huì)存在問(wèn)題[2]。
針對(duì)上述兩種算法存在的問(wèn)題,提出了區(qū)域檢測(cè)算法對(duì)其進(jìn)行改進(jìn),從而避免了漢字筆畫(huà)丟失的現(xiàn)象,而且算法的復(fù)雜度和計(jì)算量都不大,因而大大提高了程序的運(yùn)行速度。該算法的主要依據(jù)是基于閾值的二值化算法,然后去除大塊非文字背景區(qū)域和小塊噪聲,最后確定出文字塊。在對(duì)圖像進(jìn)行二值化時(shí),采用灰度最大值自適應(yīng),從而適應(yīng)了不同圖像的特性,其流程如圖1所示。
在一般情況下,對(duì)文字圖像預(yù)處理首先是二值化,由于二值化過(guò)程會(huì)丟失許多視頻文字與文字模板的相似性信息,這種判斷對(duì)低質(zhì)量的視頻圖像來(lái)說(shuō),其閾值不穩(wěn)定,而對(duì)環(huán)境和場(chǎng)景的變化卻極為敏感。因此,首先將24位彩色視頻圖像進(jìn)行色空間的轉(zhuǎn)換,其目的是保留足夠的信息,以便進(jìn)一步預(yù)處理和識(shí)別。
RGB色彩系統(tǒng)[3]是最常用的顏色系統(tǒng),另外一些常見(jiàn)的色彩系統(tǒng)還有CMY色彩系統(tǒng)、YIQ色彩系統(tǒng)、YUV色彩系統(tǒng)、YCbCr色彩系統(tǒng)等。YIQ色彩系統(tǒng)屬于NTSC系統(tǒng),這里的Y不是指黃色,而是指色彩的明視度(Luminance),即亮度(Brightness)。其實(shí)Y就是圖像的亮度值,而I和Q則是指色調(diào)(Chrominance),即描述圖像色彩及飽和度的屬性。RGB與YIQ之間的對(duì)應(yīng)關(guān)系如下
本文中對(duì)圖像進(jìn)行轉(zhuǎn)換采用的是式(1)表示的方法,采用這種方法提取亮度信息主要是因?yàn)镽GB色空間中色度和亮度是不可分的,而本文檢測(cè)字幕的幾個(gè)算法都是基于亮度信息進(jìn)行的,所以首先灰度化或進(jìn)行色空間轉(zhuǎn)換僅提取亮度信息就可以將亮度和色度分離,從而可以?xún)H對(duì)亮度分量進(jìn)行相應(yīng)的算法研究。筆者所選用的YIQ將色度和亮度進(jìn)行了分離,Y單指亮度,以后的處理都是針對(duì)它進(jìn)行的。
將圖像由RGB空間轉(zhuǎn)換到Y(jié)IQ空間,利用式(1),有
轉(zhuǎn)換時(shí)先定義3個(gè)變量(R,G,B),分別代表原圖像的RGB值,程序段為:
上述程序段中:RGBQUAD是位圖格式中的調(diào)色板結(jié)構(gòu)體;rgbRed,rgbGreen,rgbBlue是圖像的紅色、綠色和藍(lán)色分量;prgb是指向原圖像數(shù)據(jù)的指針。
然后再定義一個(gè)指針變量pgray,按照式(3)處理后,結(jié)果送入pgray。在計(jì)算灰度值時(shí),要取255和式(3)計(jì)算所得值的較小值,因?yàn)檫x取參數(shù)時(shí)進(jìn)行了近似,可能會(huì)有大于最大值255的數(shù)據(jù)出現(xiàn)。這些都是編程時(shí)需注意的細(xì)節(jié)問(wèn)題[4]。
由MV圖像的特性可知,背景與字幕一般會(huì)有較大的亮度差別,對(duì)整幅圖進(jìn)行二值化處理可以濾掉部分背景。
在基于閾值的灰度圖像分割算法中,確定閾值T是關(guān)鍵。最常用的模型為:假設(shè)圖像由具有單峰灰度分布的目標(biāo)和背景組成,且目標(biāo)和背景像素在灰度值上有較大差異。對(duì)這類(lèi)圖像,其灰度直方圖基本可看作是由分別對(duì)應(yīng)目標(biāo)和背景的兩個(gè)單峰直方圖混合而成,可把雙峰間的谷點(diǎn)作為閾值T,對(duì)圖像作以下二值化處理:
1)對(duì)圖像的灰度進(jìn)行統(tǒng)計(jì),找出灰度的最大值GrayMax。
2)將圖像二值化。此時(shí)已經(jīng)得到了灰度的最大值,將閾值T定為GrayMax與一個(gè)固定數(shù)值thre的差值。將thre作為參數(shù)值由外部傳入函數(shù)。thre是針對(duì)進(jìn)行區(qū)域檢測(cè)的圖像的特點(diǎn)經(jīng)過(guò)多次試驗(yàn)確定的[5]。
大部分圖像的背景中可能都包含一些亮度與字幕相差不多的區(qū)域,二值化不能將它完全去除,因此需檢測(cè)大塊非文字區(qū)域并將其去掉。因?yàn)閳D像中的字幕一般都能確定大小,對(duì)大量MTV中的字幕進(jìn)行分析后得到:每個(gè)字的寬度大約是圖像整個(gè)寬度的1/16。在二值化時(shí)假定將字幕置為白色,去掉的背景置為黑色。對(duì)此作如下處理:
1)定義一個(gè)標(biāo)志量Flag;
2)開(kāi)始按行遍歷圖像的每個(gè)像素,如果為白色,標(biāo)志量加1;
3)一旦顏色變?yōu)楹谏?,立即檢測(cè)前面白色區(qū)域的寬度,如果大于確定的閾值,則認(rèn)為它不是字符,將其置為黑色,即濾掉;
4)指針再指回原來(lái)的位置,繼續(xù)檢測(cè)后面的像素;
5)小于閾值則不做任何改動(dòng),指針繼續(xù)后移檢測(cè)。
按以上步驟處理結(jié)束后,圖像每行中水平方向上大于一個(gè)字符的區(qū)域都被去掉,剩余噪聲和字符,進(jìn)行以下的去噪聲工作。
上一個(gè)算法除去了大塊非文字區(qū)域,但背景中還有一些小塊噪聲影響著處理結(jié)果。因此有必要再實(shí)現(xiàn)一個(gè)去噪聲算法。由于漢字筆劃的不連通性,一些點(diǎn)、劃也是非常小塊的區(qū)域,如“小”、“漢”等。如果按照上面的思想,肯定會(huì)丟失一些筆劃。字幕一般都集中在行里,所以字幕所處的區(qū)域每行都會(huì)有一定數(shù)量的白色像素。而噪聲的分布是隨機(jī)的,特別是在已經(jīng)進(jìn)行了區(qū)域劃定之后,所剩余噪聲的范圍更小。本文采用另一種思想:對(duì)每一行中白色像素的總數(shù)進(jìn)行統(tǒng)計(jì),如果小于某個(gè)確定閾值,就認(rèn)為這些是噪聲影響形成的,將其去除;反之保留[6]。步驟如下:
1)定義一個(gè)標(biāo)志量Flag1;
2)開(kāi)始按行遍歷圖像的每個(gè)像素,如果為白色,標(biāo)志量加1;
3)檢測(cè)完一行之后,檢測(cè)標(biāo)志量的值,如果大于給定閾值,則認(rèn)為是字符存在的行,不做改動(dòng),繼續(xù)檢測(cè);
4)如果小于閾值,則認(rèn)為這一行中的白色像素是噪聲,指針遞減,將其全部置為黑色;
5)指針復(fù)位,繼續(xù)檢測(cè)。
上述處理可以將大部分隨機(jī)小噪聲濾除。
最后顯示處理結(jié)果,通過(guò)調(diào)用函數(shù)SetDIBitsToDevice即可實(shí)現(xiàn)。
為了更好地驗(yàn)證區(qū)域檢測(cè)的結(jié)果,將中間處理的過(guò)程一一顯示出來(lái),見(jiàn)圖2~圖5。
由圖3可以看出,二值化后還留有部分非文字的區(qū)域,有較大塊的,也有小塊的。進(jìn)行區(qū)域劃定后(見(jiàn)圖4),水平方向上較長(zhǎng)的部分被劃去,但是小于一個(gè)字符跨度的被保留下來(lái)了。此時(shí)這些保留下來(lái)的小塊連同原來(lái)的小塊都可被視為噪聲,進(jìn)行去噪聲后只有文字被保留下來(lái)(見(jiàn)圖5)。統(tǒng)計(jì)表明,大部分MTV圖像字幕亮度比大部分背景要高,用這種方法取得了良好的效果。
圖4 區(qū)域劃定后的圖像
圖5 最終處理結(jié)果
區(qū)域檢測(cè)對(duì)字幕行外的噪聲濾除得非常徹底,字幕保留得也比較完整。但是對(duì)字幕造成了輕微劃傷,和字幕同行的噪聲也無(wú)法去除。這是進(jìn)行區(qū)域檢測(cè)不可避免的問(wèn)題。進(jìn)行字符檢測(cè)的最終目的是將其識(shí)別出來(lái),從這個(gè)角度上講,區(qū)域檢測(cè)法是有效的。
[1]何斌,馬天予,王運(yùn)堅(jiān),等.Visual C++數(shù)字圖像處理[M].北京:人民郵電出版社,2009.
[2]張偉男,唐倫,陳前斌.基于3G傳輸?shù)囊曨l監(jiān)控系統(tǒng)的后臺(tái)設(shè)計(jì)[J].電視技術(shù),2008,32(11):85-88.
[3]萬(wàn)罡,周洞汝,崔永毅,等.數(shù)字視頻中文字分割算法的研究[J].計(jì)算機(jī)工程與應(yīng)用,2010(2):103-105.
[4]周長(zhǎng)發(fā).精通Visual C++圖像編程[M].北京:電子工業(yè)出版社,2008.
[5]況超,楊波,石廣建.多媒體圖像后處理系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2009,33(2):72-75.
[6]李芳,吳斌,張紅英.基于快速8-連通域標(biāo)記的視頻字幕提取新算法[J].電視技術(shù),2009,33(2):69-71.