[劉曉玲 張萍]
?
反交錯(cuò)濾鏡YADIF及PP li的技術(shù)實(shí)現(xiàn)分析
[劉曉玲張萍]
摘要反交錯(cuò)濾鏡是一種視頻圖像編碼處理技術(shù),用于解決從隔行掃描到逐行掃描的轉(zhuǎn)換后圖像出現(xiàn)的拖尾及鋸齒等畫面質(zhì)量問題。本文分析了兩種采用不同技術(shù)原理實(shí)現(xiàn)的反交錯(cuò)濾鏡YADIF和PP li的具體實(shí)現(xiàn)方式,并提出了一種綜合使用兩種濾鏡獲得更好的反交錯(cuò)處理畫面效果的方法。
關(guān)鍵詞:反交錯(cuò) YADIF 逐行掃描 隔行掃描
劉曉玲
2007年碩士畢業(yè)于中山大學(xué),現(xiàn)就職于中國(guó)電信股份有限公司廣州研究院,研究方向:視頻編解碼算法、視頻云轉(zhuǎn)碼,云計(jì)算。
張萍
碩士,中國(guó)電信股份有限公司廣州研究院,工程師,研究方向:視頻編解碼算法、互聯(lián)網(wǎng)應(yīng)用、云計(jì)算。
1.1隔行掃描與逐行掃描的原理及轉(zhuǎn)換問題
隔行掃描[1],是每一幀被分割為兩場(chǎng),每一場(chǎng)包含了一幀中所有的奇數(shù)掃描行或者偶數(shù)掃描行,通常是先掃描奇數(shù)行得到第一場(chǎng),然后掃描偶數(shù)行得到第二場(chǎng)。在處理設(shè)備和帶寬受限的情況下,隔行掃描可以獲得比逐行掃描更好的視頻播放質(zhì)量。例如廣播電視系統(tǒng)的NTSC及 PAL制式,都是采用隔行掃描的方式[2]。另外,在安防領(lǐng)域眾多的模擬信號(hào)設(shè)備也是采用隔行掃描的方式。然而,隨著電子技術(shù)的發(fā)展,越來越多的視頻設(shè)備采用逐行掃描的方式。特別是互聯(lián)網(wǎng)上的視頻流格式,只支持逐行掃描方式。因此,需要反交錯(cuò)技術(shù),將視頻影像從隔行掃描的方式轉(zhuǎn)換為逐行掃描的方式。
在轉(zhuǎn)換過程,如果直接將兩幅隔行掃描的圖像合成一幀,則往往會(huì)出現(xiàn)橫向的“鋸齒”現(xiàn)象。這是由于隔行掃描方式下奇場(chǎng)和偶場(chǎng)的拍攝時(shí)間存在時(shí)差。在目標(biāo)運(yùn)動(dòng)的情況下,兩次拍攝的目標(biāo)會(huì)存在一個(gè)相對(duì)于攝像機(jī)的橫向位移,這個(gè)位移反映在圖像上就是圖像奇、偶行之間會(huì)存在錯(cuò)位。直觀的感覺就是圖像上原本應(yīng)該很平滑的邊緣會(huì)變成參差不齊的鋸齒狀邊緣。反交錯(cuò)Deinterlace技術(shù)正是為了解決這一問題而產(chǎn)生。
1.2反交錯(cuò)的技術(shù)原理與目標(biāo)
在反交錯(cuò)的實(shí)現(xiàn)過程,主要的技術(shù)方法可以分為兩類[3],場(chǎng)內(nèi)插值和場(chǎng)間插值。場(chǎng)內(nèi)插值,是根據(jù)隔行掃描獲得的一半圖像數(shù)據(jù),通過插值計(jì)算,填補(bǔ)上另一半的數(shù)據(jù),例如下文介紹的PP li濾鏡。場(chǎng)內(nèi)插值的實(shí)現(xiàn)簡(jiǎn)單,但無法提高畫面的垂直分辨率,且會(huì)使得圖像邊緣模糊。場(chǎng)間插值,則是根據(jù)奇偶場(chǎng)合并后的數(shù)據(jù)進(jìn)行插值計(jì)算。直接進(jìn)行奇數(shù)場(chǎng)和偶數(shù)場(chǎng)合并的鋸齒現(xiàn)象,主要是由于拍攝目標(biāo)的橫向運(yùn)動(dòng)分量產(chǎn)生,因此,一些反交錯(cuò)算法提出給予基于運(yùn)動(dòng)搜索和補(bǔ)償?shù)姆椒?。不過雖然基于運(yùn)動(dòng)搜索和補(bǔ)償?shù)姆椒ǐ@得的圖像質(zhì)量效果很優(yōu)秀,但是由于往往需要耗費(fèi)大量資源以及時(shí)間,以至于無法直接應(yīng)用于實(shí)時(shí)視頻流的場(chǎng)景。在實(shí)時(shí)視頻流的反交錯(cuò)處理中,往往需要在性能和畫面質(zhì)量之間選擇一個(gè)最優(yōu)方案。下文介紹的YADIF濾鏡則是一種具備運(yùn)動(dòng)補(bǔ)償思想的方法。在計(jì)算過程中會(huì)通過考量目標(biāo)點(diǎn)及垂直方向上的周圍點(diǎn)在時(shí)間軸上的變化,以此對(duì)目標(biāo)點(diǎn)值進(jìn)行矯正,是一種具備運(yùn)動(dòng)搜索與運(yùn)動(dòng)補(bǔ)償能力的高效簡(jiǎn)單的處理方法。
YADIF是一種反交錯(cuò)過濾器算法[4]。基本原理是在每一幀圖像中,通過設(shè)定頂部?jī)?yōu)先或底部?jī)?yōu)先,相應(yīng)選擇奇數(shù)行或偶數(shù)行為正確數(shù)據(jù),另外一半數(shù)據(jù)則通過計(jì)算矯正獲得。以頂部?jī)?yōu)先為例,YADIF計(jì)算基于以下原則:
(1)對(duì)于待糾正的點(diǎn),當(dāng)前幀的上一行和下一行的相同位置的點(diǎn)是正確的;
(2)對(duì)于待糾正的點(diǎn),當(dāng)前幀的的上兩行和下兩行的相同位置的點(diǎn)是可供參考的;
(3)對(duì)于待糾正的點(diǎn),前一幀的相同位置的點(diǎn)是可供參考的;
(4)對(duì)于待糾正的點(diǎn),前一幀的上一行、下一行、上兩行和下兩行的相同位置的點(diǎn)是可供參考的。
基于上述假設(shè),YADIF在計(jì)算一個(gè)點(diǎn)的值時(shí),會(huì)根據(jù)它的周圍信息(垂直方向上的點(diǎn))以及運(yùn)動(dòng)方向(時(shí)間軸上的信息,上一幀的相同位置及垂直方向的點(diǎn))進(jìn)行計(jì)算。計(jì)算的基本方法包括均值、差值、以及比較計(jì)算。具體的計(jì)算流程如下:
(1)取當(dāng)前幀上一行和下一行相同點(diǎn)的值的均值,以此為基數(shù),記為spatial_pred。
(2)以當(dāng)前點(diǎn)的值,與上一幀的當(dāng)前位置點(diǎn),取二者均值,記為d。
(3)當(dāng)前點(diǎn)的值與上一幀當(dāng)前點(diǎn)的差值,取其的1/2,記為diff0。
再考慮上下一行的點(diǎn)的前一幀與當(dāng)前幀的差值:取前一幀下一行的點(diǎn)與當(dāng)前幀下一行的點(diǎn)c的差值,前一幀上一行的點(diǎn)與當(dāng)前幀上一行e的點(diǎn)差值,取二者均值,記為diff1。
diff =MAX{diff0,diff1};
(4)進(jìn)一步計(jì)算上下兩行的前一幀與當(dāng)前幀的情況:
①取上一幀的下兩行的點(diǎn)的值,當(dāng)前幀的下兩行點(diǎn)的值,取均值b
②取上一幀的上兩行的點(diǎn)的值,當(dāng)前幀的上兩行點(diǎn)的值,取均值f
int max = FFMAX3(d - e, d - c, FFMIN(b - c, f - e));
int min = FFMIN3(d - e, d - c, FFMAX(b - c, f - e));
diff = FFMAX3(diff, min, -max);
(5)最后將spatial_pred的值限定在區(qū)間(d-diff,d+diff)之內(nèi)。取前點(diǎn)值= spatial_pred
if (spatial_pred > d + diff)
spatial_pred = d + diff;
else if (spatial_pred < d - diff)
spatial_pred = d - diff;
下面是對(duì)圖像采用yadif濾鏡進(jìn)行處理的效果。圖1是原始圖像,圖2是經(jīng)過yadif濾鏡處理過后的圖像。圖像1的可見橫向的鋸齒,特別是下方滾動(dòng)字幕。圖像2畫面質(zhì)量基本接近原圖,鋸齒現(xiàn)象也有所減輕,但是下方的字幕仍然還是可見有鋸齒。
圖1 原始圖片
圖2 經(jīng)過yadif處理后的圖片
PP濾鏡組提供了一組使用不同插值方法實(shí)現(xiàn)的子濾鏡,包括LINEAR_IPOL_DEINT_FILTER,LINEAR_ IPOL_DEINT_FILTER、CUBIC_IPOL_DEINT_FILTER、MEDIAN_DEINT_FILTER等等。本文以子濾鏡li (LINEAR_IPOL_DEINT_FILTER)為例,其計(jì)算原理如下:
(1)對(duì)每一幀的數(shù)據(jù)按順序等分成不同的block,每個(gè)block的大小是8*8Byte;
(2)在block內(nèi)部,對(duì)待修正的點(diǎn),取上一行相同位置的點(diǎn)和下一行相同位置點(diǎn)的值,通過以下位運(yùn)算獲得:
src[stride*k]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1);
其中,a=src[stride*(k-1)],=src[stride*(k+1)],stride=d ata->linesize。
圖3 是原始圖像圖1經(jīng)過濾鏡pp=li的處理之后的效果。字幕的基本沒有鋸齒現(xiàn)象,然而整體畫面明顯模糊了。
圖3 經(jīng)過濾鏡pp=li的處理之后的效果
通過的實(shí)驗(yàn)對(duì)比效果中發(fā)現(xiàn),使用YADIF濾鏡,獲得的視頻的運(yùn)動(dòng)畫面質(zhì)量較好,但是滾動(dòng)字幕的鋸齒現(xiàn)象還是比較明顯;采用PP LI濾鏡則對(duì)滾動(dòng)字幕的鋸齒現(xiàn)象處理較好,但是運(yùn)動(dòng)畫面質(zhì)量有相對(duì)比較明顯的下降,出現(xiàn)輪廓模糊,畫面感不夠銳利,特別是左側(cè)的臺(tái)徽?qǐng)D案圖標(biāo)。因此本文提出一種通過區(qū)域劃分的方式,對(duì)視頻圖像的不同區(qū)域采用不同濾鏡的,可達(dá)到同時(shí)獲得較優(yōu)的運(yùn)動(dòng)畫面質(zhì)量與滾動(dòng)字幕質(zhì)量的效果。
具體的實(shí)現(xiàn)方式是,對(duì)整個(gè)視頻畫面進(jìn)行區(qū)域劃分,將滾動(dòng)字幕的所處區(qū)域劃為字幕區(qū)域,其它部分為運(yùn)動(dòng)畫面區(qū)域。對(duì)滾動(dòng)字幕區(qū)域采用PP li濾鏡,而對(duì)運(yùn)動(dòng)畫面區(qū)域采用YADIF區(qū)域。
圖4 通過區(qū)域劃分整合兩種濾鏡的處理效果
對(duì)視頻編碼圖像的反交錯(cuò)處理是傳統(tǒng)電視視頻信號(hào)到互聯(lián)網(wǎng)視頻流格式轉(zhuǎn)換中必須使用的關(guān)鍵技術(shù),由于電視視頻信號(hào)上疊加的滾動(dòng)字幕與主體畫面的圖像呈現(xiàn)不同的運(yùn)動(dòng)特性,因此本文提出的分區(qū)域聯(lián)合使用兩種濾鏡的技術(shù)方案能較好的提升整體的畫面質(zhì)量,從而改善用戶的觀看體驗(yàn),提高視頻畫面處理質(zhì)量。
參考文獻(xiàn)
1隔行掃描.百度百科。2016.3
http://baike.baidu.com/link?url=2afm7hDpzUNBeeuU3H8ntZta0OR5oekLdYHgYyza8f_ICPXWJm99zHTn1KB svJ6LC4uTF6GEOmoRkYDgEvZyq
2高平.詳解視頻格式種類與轉(zhuǎn)換方法.現(xiàn)代電視技術(shù)。2012.7
3彭勇.一種運(yùn)動(dòng)分級(jí)反交錯(cuò)算法在視頻監(jiān)控中的應(yīng)用.儀器儀表用戶。Vol.16, ,No.3.2009
4YADIF. https://trac.handbrake.fr/wiki/yadif 2016.3
DOI:10.3969/j.issn.1006-6403.2016.04.011
收稿日期:(2016-03-09)