段淑玉 陳艷
摘 要:提出一種應(yīng)用于幀率提升系統(tǒng)的,根據(jù)內(nèi)插幀各匹配塊的均值SAD為檢測(cè)依據(jù)的場(chǎng)景切換檢測(cè)算法,解決場(chǎng)景切換時(shí)ME/MC算法因匹配失誤產(chǎn)生嚴(yán)重塊效應(yīng)的問(wèn)題.將當(dāng)前內(nèi)插幀的均值SADcurr與前面已生成的內(nèi)插幀的均值SADpre相除,所得商與經(jīng)驗(yàn)閾值進(jìn)行比較,若大于經(jīng)驗(yàn)閾值則判定發(fā)生場(chǎng)景切換;否則,沒(méi)有場(chǎng)景切換.幀率提升系統(tǒng)根據(jù)判定結(jié)果選擇不同的算法產(chǎn)生內(nèi)插幀.實(shí)驗(yàn)結(jié)果表明;與傳統(tǒng)的檢測(cè)算法相比,本文算法在場(chǎng)景切換檢測(cè)的準(zhǔn)確率上有明顯的提升.
關(guān)鍵詞:場(chǎng)景切換檢測(cè);塊匹配;運(yùn)動(dòng)估計(jì);幀率提升
中圖分類號(hào):TP317.4 DOI:10.16375/j.cnki.cn45-1395/t.2018.04.015
0 引言
場(chǎng)景切換是視頻中較為常見(jiàn)的特征,場(chǎng)景切換檢測(cè)是數(shù)字視頻后處理中的關(guān)鍵技術(shù)之一.在時(shí)域降噪、視頻編碼、基于運(yùn)動(dòng)估計(jì)運(yùn)動(dòng)補(bǔ)償?shù)膸侍嵘葢?yīng)用中,準(zhǔn)確檢測(cè)場(chǎng)景切換對(duì)降噪效果、編碼效率、內(nèi)插幀質(zhì)量等具有明顯的改善作用.目前較為流行的場(chǎng)景切換檢測(cè)算法主要有灰度分割法[1]、直方圖分割法[2]、邊緣分割法[3]、基于DCT系數(shù)的檢測(cè)法[4]、基于運(yùn)動(dòng)矢量的檢測(cè)法和基于宏塊編碼類型的檢測(cè)法[5]等,其中應(yīng)用最為廣泛的屬灰度分割法和直方圖分割法.方宏俊等[6]在直方圖和平均亮度檢測(cè)法的基礎(chǔ)上提出一種適配分辨率動(dòng)態(tài)變化的低復(fù)雜度場(chǎng)景切換算法,在視頻源分辨率發(fā)生變化時(shí)保持較低的錯(cuò)判率;劉輝等[7]將場(chǎng)景切換檢測(cè)應(yīng)用于HEVC碼率控制中來(lái)提高視頻編碼質(zhì)量.
基于ME/MC(Motion Estimation/Motion Compensation)的幀率提升算法利用相鄰幀之間的運(yùn)動(dòng)相關(guān)性進(jìn)行運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償[8],產(chǎn)生的內(nèi)插幀質(zhì)量完全取決于運(yùn)動(dòng)估計(jì)的準(zhǔn)確性.當(dāng)發(fā)生場(chǎng)景切換時(shí),相鄰幀之間的相關(guān)性下降,運(yùn)動(dòng)估計(jì)算法失效,因此產(chǎn)生的內(nèi)插幀會(huì)出現(xiàn)嚴(yán)重的塊效應(yīng),嚴(yán)重影響幀率提升效果.如圖1所示,圖1(c)為發(fā)生場(chǎng)景切換時(shí)生成的內(nèi)插幀,該內(nèi)插幀具有嚴(yán)重的塊效應(yīng),將造成視頻的抖動(dòng),嚴(yán)重影響觀看效果.文獻(xiàn)[9]將場(chǎng)景切換應(yīng)用于自適應(yīng)電影源模式檢測(cè)算法中,并提出多級(jí)分塊χ2直方圖檢測(cè)算法,但復(fù)雜度過(guò)高.文獻(xiàn)[10]采用改進(jìn)的直方圖檢測(cè)法用于無(wú)縫自適應(yīng)數(shù)字視頻后處理中,并且先進(jìn)行場(chǎng)景切換檢測(cè),再做運(yùn)動(dòng)估計(jì)運(yùn)動(dòng)補(bǔ)償?shù)膸兽D(zhuǎn)換.本文利用幀率提升系統(tǒng)中運(yùn)動(dòng)估計(jì)階段(即ME)產(chǎn)生的匹配塊SAD值,提出以內(nèi)插幀最佳匹配塊SAD值的均值為判決依據(jù)的場(chǎng)景切換檢測(cè)算法,實(shí)驗(yàn)表明,該算法對(duì)各種場(chǎng)景切換具有較好的檢測(cè)效果.
1 基于塊匹配運(yùn)動(dòng)估計(jì)的視頻場(chǎng)景切換檢測(cè)算法描述
1.1 塊匹配雙向運(yùn)動(dòng)估計(jì)算法
運(yùn)動(dòng)估計(jì)算法是幀率提升系統(tǒng)的核心部分,其目的是根據(jù)幀間的運(yùn)動(dòng)信息得到幀內(nèi)每一個(gè)像素點(diǎn)的運(yùn)動(dòng)位移(運(yùn)動(dòng)矢量),運(yùn)動(dòng)補(bǔ)償產(chǎn)生的內(nèi)插幀質(zhì)量依賴于運(yùn)動(dòng)矢量的準(zhǔn)確性.基于塊的運(yùn)動(dòng)估計(jì)是最常用的搜索算法,雙向運(yùn)動(dòng)估計(jì)方法能克服單向運(yùn)動(dòng)估計(jì)方法固有的重疊、空洞問(wèn)題而被廣泛使用,其示意圖如圖2所示.其中f(n-1)和f(n+1)為前后原始參考幀,fn為內(nèi)插幀,Bn為內(nèi)插幀中的待插塊,B(n-1)和B(n+1)為搜索到的最佳匹配塊,兩者位移的一半即為Bn的運(yùn)動(dòng)矢量.搜索最佳匹配塊時(shí)用的最多的匹配準(zhǔn)則是SAD(Sum of Absolute Difference)準(zhǔn)則.該準(zhǔn)則只需做減法和加法運(yùn)算,硬件實(shí)現(xiàn)簡(jiǎn)單,運(yùn)算量小,計(jì)算公式如式(1)所示.其中,M和N為匹配塊大小,fc(m,n)和fr(m,n)分別為前后參考幀.
[SAD(i,j)=m=1Mn=1Nfc(m,n)-fr(m+i,n+j)] (1)
如果前后參考幀之間發(fā)生了場(chǎng)景切換,則使用SAD匹配準(zhǔn)則尋找最佳匹配塊的算法失效,在搜索范圍內(nèi)找到的SAD值最小的匹配塊,并不是真正的匹配塊,此時(shí)SAD值將是一個(gè)較大的值.對(duì)于整個(gè)內(nèi)插幀來(lái)說(shuō),所有待插塊的運(yùn)動(dòng)估計(jì)都是失效的,每一個(gè)待插塊的最佳匹配塊的SAD值都很大,所有這些SAD值求和取平均,得到的均值SAD也很大.若未發(fā)生場(chǎng)景切換,最佳匹配塊對(duì)應(yīng)的SAD值將是一個(gè)較小值,在整個(gè)內(nèi)插幀中,即使存在個(gè)別待插塊匹配失誤(即個(gè)別SAD值較大),但對(duì)所有SAD值求和取平均后,得到的均值SAD也較小.因此內(nèi)插幀的均值SAD可作為衡量是否發(fā)生場(chǎng)景切換的參量.
1.2 視頻場(chǎng)景切換檢測(cè)算法及步驟
對(duì)相鄰兩幀圖像做運(yùn)動(dòng)估計(jì)時(shí),如果發(fā)生場(chǎng)景切換,則SAD匹配準(zhǔn)則失效,在搜索范圍內(nèi)找到的最佳匹配塊對(duì)應(yīng)的最小SAD值也將是一個(gè)較大的值.因此,本文使用當(dāng)前內(nèi)插幀均值SAD作為場(chǎng)景切換檢測(cè)的基礎(chǔ),均值SAD計(jì)算如下:
CurrSADavg (n)=[1M×N][i=1M][j=1N]SAD(i,j) (2)
其中,[M×N]為內(nèi)插幀中待插塊的個(gè)數(shù),SAD(i,j)是第(i,j)個(gè)待插塊的最佳匹配塊SAD值.CurrSADavg (n)不能單獨(dú)作為場(chǎng)景切換的判斷依據(jù),但沒(méi)有發(fā)生切換的場(chǎng)景中匹配塊搜索策略、搜索范圍的大小、運(yùn)動(dòng)物體運(yùn)動(dòng)的快慢都會(huì)對(duì)CurrSADavg (n)的值產(chǎn)生影響.為消除這種影響,應(yīng)將當(dāng)前內(nèi)插幀的均值SAD與前面已生成的內(nèi)插幀均值SAD進(jìn)行比較,若與已生成內(nèi)插幀的均值SAD相比,當(dāng)前內(nèi)插幀的均值SAD發(fā)生突變,則可判定當(dāng)前內(nèi)插幀處于場(chǎng)景切換的兩幀之間.
PreSADavg(n)= α×CurrSADavg(n)+(1-α)×PreSADavg (n-1) (3)
式(3)是一個(gè)計(jì)算所有內(nèi)插幀的均值SAD的加權(quán)和的過(guò)程,PreSADavg(n)與前面各內(nèi)插幀的均值SAD都有關(guān),并且離當(dāng)前內(nèi)插幀越近,其均值SAD對(duì)PreSADavg(n)的影響也就越大.α是權(quán)重因子,表明的是與當(dāng)前內(nèi)插幀的距離對(duì)PreSADavg(n)的影響,α越大則表示距離近的內(nèi)插幀的均值SAD影響越大.本文實(shí)驗(yàn)中設(shè)置α為0.5.視頻序列第一幀內(nèi)插幀以及場(chǎng)景切換后第一幀內(nèi)插幀的PreSADavg(n)就等于CurrSADavg(n).判斷當(dāng)前是否發(fā)生場(chǎng)景切換的依據(jù)K(n)為:
K(n)=[CurrSADavg (n)PreSADavg (n-1)] (4)
視頻序列的第一幀內(nèi)插幀對(duì)應(yīng)的K(n)為1,場(chǎng)景切換發(fā)生后的第一幀內(nèi)插幀的K(n)也為1.將K(n)與經(jīng)驗(yàn)閾值Th進(jìn)行比較,大于Th則表示當(dāng)前發(fā)生場(chǎng)景切換.算法具體實(shí)現(xiàn)步驟如下:
Step 1 從視頻流中獲取用于產(chǎn)生內(nèi)插幀的前后參考幀F(xiàn)(n)和F(n+1);
Step 2 采用基于SAD塊匹配的雙向運(yùn)動(dòng)估計(jì)算法計(jì)算內(nèi)插幀中每一待插塊的運(yùn)動(dòng)矢量,記錄下每一最佳匹配塊的SAD值;
Step 3 當(dāng)前內(nèi)插幀的運(yùn)動(dòng)矢量搜索完畢,計(jì)算各匹配塊的SAD的平均值CurrSADavg (n);
Step 4 如果是第一幀內(nèi)插幀,則K(1)=1,PreSADavg(1)=CurrSADavg(1),場(chǎng)景切換標(biāo)記SceneChangeFlag=0,轉(zhuǎn)Step 6;否則,轉(zhuǎn)Step 5;
Step 5 判斷SceneChangeFlag是否為1,如果為1,說(shuō)明F(n-1)與F(n)之間發(fā)生了場(chǎng)景切換,F(xiàn)(n)與F(n-1)之間不可能再發(fā)生場(chǎng)景切換,所以置K(n)=1,PreSADavg重新被賦值,即PreSADavg(n)=CurrSADavg (n),并將切換標(biāo)記SceneChangeFlag置回0;如果SceneChangeFlag為0,說(shuō)明F(n-1)與F(n)之間沒(méi)有發(fā)生場(chǎng)景切換,則K(n)=CurrSADavg (n)/ PreSADavg(n-1),并且更新PreSADavg(n)= α×CurrSADavg(n)+(1-α)×PreSADavg (n-1);
Step 6 將K(n)與閾值Th比較,大于Th,則SceneChangeFlag=1,表示F(n)和F(n+1)之間發(fā)生了場(chǎng)景切換;
Step 7 如果SceneChangeFlag為1,無(wú)需進(jìn)行運(yùn)動(dòng)補(bǔ)償,內(nèi)插幀直接復(fù)制F(n)即可;否則,采用運(yùn)動(dòng)補(bǔ)償方法產(chǎn)生內(nèi)插幀.
2 算法仿真結(jié)果及對(duì)比分析
2.1 仿真平臺(tái)及實(shí)驗(yàn)步驟
在MATLAB R2016a上進(jìn)行仿真實(shí)驗(yàn),實(shí)驗(yàn)對(duì)象選擇8段mp4格式的電視電影片段,幀速率為25幀/秒,分辨率為640 × 480.這8段電視電影片段特征不同,如表1所示.
實(shí)驗(yàn)步驟如下:
Step 1 將視頻序列轉(zhuǎn)換成幀圖像,并將彩色的幀圖像轉(zhuǎn)換成灰度圖像;
Step 2 為了提高切換的頻率,在原始圖像序列基礎(chǔ)上剪輯掉一些未發(fā)生場(chǎng)景切換的中間幀,以減少實(shí)驗(yàn)時(shí)間;
Step 3 依次讀取圖像序列,采用雙向運(yùn)動(dòng)估計(jì)方法及SAD值匹配準(zhǔn)則進(jìn)行內(nèi)插幀的運(yùn)動(dòng)估計(jì),再根據(jù)本文提出的場(chǎng)景切換檢測(cè)算法判斷前后幀之間是否發(fā)生場(chǎng)景切換;
Step 4 用像素絕對(duì)差值法和平均亮度統(tǒng)計(jì)法去檢測(cè)相同的視頻序列;
Step 5 將3種算法的檢測(cè)結(jié)果進(jìn)行對(duì)比分析,驗(yàn)證本文算法的優(yōu)越性.
2.2 分場(chǎng)景的仿真實(shí)驗(yàn)
根據(jù)視頻片段的特征,將視頻序列分成2種場(chǎng)景進(jìn)行實(shí)驗(yàn),分別為普通場(chǎng)景和切換前后圖像亮度變化較小場(chǎng)景.
1)普通場(chǎng)景
所謂普通場(chǎng)景即是場(chǎng)景發(fā)生切換時(shí),前后兩幀圖像的內(nèi)容、紋理結(jié)構(gòu)和亮度發(fā)生明顯改變.如圖3所示.
設(shè)置閾值Th為3,權(quán)重因子[α]為0.5,3個(gè)測(cè)試序列的實(shí)驗(yàn)結(jié)果如圖4所示.其中,橫坐標(biāo)為圖像幀序號(hào),縱坐標(biāo)為式(4)中的K值,判斷是否發(fā)生場(chǎng)景切換取決于K值與閾值的比較.
(a)《新聞》視頻序列的K值
從圖4中可以看出,在發(fā)生場(chǎng)景切換時(shí),K發(fā)生突變,其值遠(yuǎn)遠(yuǎn)大于未發(fā)生場(chǎng)景切換時(shí)的值,故根據(jù)K值判斷是否發(fā)生場(chǎng)景切換是可行的.
2)切換前后圖像亮度變化較小場(chǎng)景
在一些球賽或是整體過(guò)暗或過(guò)亮的視頻序列中,發(fā)生場(chǎng)景切換時(shí),切換前后圖像亮度沒(méi)有明顯變化,如圖5所示.
實(shí)驗(yàn)中,設(shè)置閾值Th為2,[α]為0.5.其中,橫坐標(biāo)為圖像幀序號(hào),縱坐標(biāo)為式(4)中的K值.
從圖6、圖7中可以看出,在過(guò)暗或亮度變化不大的視頻序列中,發(fā)生場(chǎng)景切換時(shí)部分幀圖像的K值并沒(méi)有突變,因此誤判率和漏檢率會(huì)比普通場(chǎng)景的高,K的閾值Th選取更復(fù)雜.
2.3 仿真結(jié)果對(duì)比分析
選取錯(cuò)判率[Rf]和漏檢率[Rm]作為場(chǎng)景切換算法的評(píng)價(jià)標(biāo)準(zhǔn),漏檢表示真實(shí)發(fā)生了場(chǎng)景切換但是沒(méi)有被算法檢測(cè)到的情況,誤判是指實(shí)際沒(méi)有發(fā)生場(chǎng)景切換卻被算法判斷為發(fā)生了切換的情況.其公式分別如下:
[Rm=NmNc+Nm] (5)
[Rf=NfNc+Nf] (6)
其中,[Nc]——正確檢測(cè)出場(chǎng)景切換的次數(shù),[Nm]——遺漏檢測(cè)出場(chǎng)景切換的次數(shù),[Nf]——錯(cuò)誤判斷了場(chǎng)景切換的次數(shù).將本文算法與傳統(tǒng)的用于數(shù)字圖像視頻后處理芯片中的場(chǎng)景切換檢測(cè)算法如像素絕對(duì)差值法[11]、平均亮度統(tǒng)計(jì)法[12]和參考文獻(xiàn)[6]提出的算法進(jìn)行比較.比較結(jié)果如表2所示.
從表2中可以看出,像素絕對(duì)差值法的平均錯(cuò)判率達(dá)到0.238,漏檢率是0.169;平均亮度統(tǒng)計(jì)法比前者略有優(yōu)勢(shì),錯(cuò)判率和漏檢率分別為0.232和0.116;參考文獻(xiàn)[6]的錯(cuò)判率和漏檢率較前兩者都有較大改善,分別為0.160和0.043.本文算法的錯(cuò)判率和漏檢率分別為0.047和0.098,較前兩種算法,錯(cuò)判率提升幅度分別為80%和79%,漏檢率提升幅度為42%和16%,尤其在過(guò)暗或亮度變化不大的場(chǎng)景下,本文算法優(yōu)勢(shì)明顯.這是因?yàn)橄袼亟^對(duì)插值法和平均亮度統(tǒng)計(jì)法是基于像素或每一幀圖像內(nèi)容的亮度變化來(lái)判斷場(chǎng)景是否發(fā)生了切換,因此對(duì)一些場(chǎng)景切換但圖像平均亮度并未發(fā)生變化,或者沒(méi)有場(chǎng)景切換而有部分圖像內(nèi)容發(fā)生較大亮度變化的情況,存在較高的“漏檢”和“錯(cuò)判”可能.文獻(xiàn)[6]是對(duì)基于直方圖分布統(tǒng)計(jì)法的優(yōu)化算法,能有效解決場(chǎng)景切換前后亮度變化不大而可能漏檢的問(wèn)題,因此本文算法與之相比,漏檢率略高,但錯(cuò)判率更低.
3 結(jié)論
本文提出的場(chǎng)景切換檢測(cè)算法是應(yīng)用于幀率提升系統(tǒng)的,根據(jù)運(yùn)動(dòng)估計(jì)階段內(nèi)插幀的最佳匹配塊對(duì)應(yīng)SAD值的均值作為檢測(cè)依據(jù)的一種算法,該算法與兩種傳統(tǒng)的用于視頻后處理芯片中的檢測(cè)算法即像素絕對(duì)差值法、平均亮度統(tǒng)計(jì)法以及參考文獻(xiàn)[6]的算法相比,在以錯(cuò)判率和漏檢率表征的檢測(cè)準(zhǔn)確率上有了明顯的提升.
參考文獻(xiàn)
[1]LUO L J,ZOU C R,HE Z Y. A new algorithm on MPEG-2 target bit-number allocation at scene changes[J]. IEEE Transactions on Circuits and Systems for Video Technology,1997,7(5):815-819.
[2]FERNANDO W A C,CANAGARARAJAH C N,BULL D R. Fade-in and fade-out detection in video sequences using histograms[C]// IEEE International Symposium on Circuits and Systems,2000.
[3]RAINER L. Reliable transition detection in videos:a survey and practitioner's guide[J]. International Journal of Image and Graphics,2001,1(3):469-486.
[4]戴寧赟,朱光喜. 一種場(chǎng)景切換的碼率控制方法[J].計(jì)算機(jī)應(yīng)用,2007,27(S1):369-371.
[5]PEI S C,CHOU Y Z. Efficient MPEG compressed video analysis using macroblock type information[J]. IEEE Transactions on Multimedia,1999,1(4):321-333.
[6]方宏俊,宋利,楊小康. 適配分辨率動(dòng)態(tài)變化的低復(fù)雜度視頻場(chǎng)景切換檢測(cè)方法[J].計(jì)算機(jī)科學(xué),2017,44(2):290-295.
[7]劉輝,劉立程,郝祿國(guó),等. 一種場(chǎng)景切換下的HEVC碼率控制算法[J].電視技術(shù),2017,41(6):1-5.
[8]段淑玉,徐奕奕,李春貴,等. 一種基于運(yùn)動(dòng)矢量時(shí)域遞歸的運(yùn)動(dòng)估計(jì)算法[J].廣西科技大學(xué)學(xué)報(bào),2015,26(2):36-40.
[9]袁高陽(yáng). 自適應(yīng)逐行電影源模式檢測(cè)算法研究[D].西安:西安電子科技大學(xué),2015.
[10]方宏俊. 適配智能電視分辨率動(dòng)態(tài)變化的視頻后處理技術(shù)研究[D].上海:上海交通大學(xué),2015.
[11]史久根,許林,張超. 一種場(chǎng)景自適應(yīng)的H.264幀層碼率控制算法[J].計(jì)算機(jī)應(yīng)用研究,2010,27(5):1968-1969.
[12]王悅,薛永林. 基于場(chǎng)景切換的碼率控制方法[J].電視技術(shù),2009,33(12):17-20.
Scene change detection algorithm based on block matching motion estimation
DUAN Shuyu, CHEN Yan
(School of Computer Science and Communication Engineering, Guangxi University of Science and Technology, Liuzhou 545006, China)
Abstract: This paper proposes a scene change detection algorithm based on the mean SAD of the interpolated frames matching blocks, which is used in frame rate up system. This algorithm is used to solve the serious block effect problems due to mismatch in ME/MC algorithm when the scene is changed. We divide the average of the current interpolated frame SADcurr by the average of the previously generated interpolated frames SADpre and compare the resulting quotient with the empirical threshold, if we find the quotient is greater than the threshold, it is determined that a scene change occurs; otherwise, there has no scene change. The frame rate up system uses different interpolating algorithms based on the comparison results. Compared with the traditional detection algorithms, the experimental results show that the proposed algorithm has a significant improvement in the accuracy of scene change detection.
Key words: scene change detection; block match; motion estimation; frame rate up
(學(xué)科編輯:黎 婭)