專利名稱:一種基于宏塊統(tǒng)計信息的參考幀篩選方法、裝置的制作方法
技術領域:
本發(fā)明涉及視頻編解碼領域,尤其涉及一種基于宏塊統(tǒng)計信息的參考幀篩選方法、裝置。
背景技術:
在視頻編碼過程中,幀間預測根據(jù)預測方向的不同分為P幀預測和B幀預測。目前主流的P幀預測方法采用前向已編碼的幀作為當前編碼幀的參考幀,利用兩者之間的相似性,壓縮當前編碼幀的信息;而B幀則采用了雙向預測技術,從而可以極大地消除幀間信息的冗余度,從而使其具有最高的壓縮率。無論是P幀還是B幀都需要在由已編碼的幀構成的參考列表內,進行運動搜索,尋找最優(yōu)匹配。編碼參數(shù)中設置的搜索參考幀越多,則編碼器率失真性能越好,但同時參考幀越多,編碼器消耗在運動搜索上時間也會急劇增長。所以,一般編碼器都會設置一個在率失真性能和計算量兩者之間達到相對較優(yōu)的數(shù)量,作為 編碼器的默認參考幀數(shù)。然而,這種常規(guī)的處理方法,使得編碼器無法根據(jù)視頻序列的特點調整參考列表內的參考幀數(shù)。這樣,一方面會產(chǎn)生編碼器計算量無謂消耗的問題,另一方面編碼器在率失真性能提升上也微乎其微。這種現(xiàn)象在,頻繁場景切換的電影預告片、廣告、全局運動等場景下,尤為明顯。因此本發(fā)明提出一種基于宏塊統(tǒng)計信息的參考幀篩選策略,通過各幀宏塊的統(tǒng)計信息的不同情況,對參考幀進行快速篩選,實現(xiàn)參考列表的自適應調整。本發(fā)明可在率失真性能基本不變的情況下,提升編碼速度,使編碼器在率失真性能和計算量兩者之間達到進一步的優(yōu)化實現(xiàn)。備注率失真性能基本不變,是指在相同碼率下,兩者的率失真性能差值的絕對值小于0. IdBo
發(fā)明內容
本發(fā)明實施例的目的在于提出一種基于宏塊統(tǒng)計信息的參考巾貞篩選方法、裝置。所述方法包括判斷第一當前編碼幀是否為I幀,若第一當前編碼幀不是I幀,則將所述的第一當前編碼幀編碼;獲取編碼后的第一當前編碼幀中,I宏塊及廣義I宏塊的第一數(shù)量;判斷所述第一數(shù)量是否小于第一參數(shù),若第一數(shù)量不小于第一參數(shù),則根據(jù)預置視頻序列的編碼結構,進行參考幀的篩選;然后判斷是否所述視頻序列中所有的幀都已經(jīng)編碼;若否,則繼續(xù)判斷第一當前編碼幀是否為I幀;若是則結束。所述裝置包括第一判斷單元、第一執(zhí)行單元、第二判斷單元、第二執(zhí)行單元;第三判斷單元;第三執(zhí)行單元;第一判斷單元,用于判斷第一當前編碼幀是否為I幀;
第一執(zhí)行單元,用于當判斷出第一當前編碼幀不是I幀,則將所述的第一當前編碼幀編碼;獲取編碼后的第一當前編碼幀中,I宏塊及廣義I宏塊的第一數(shù)量;第二判斷單元,用于判斷所述第一數(shù)量是否小于第一參數(shù);第二執(zhí)行單元,用于當判斷出第一數(shù)量不小于第一參數(shù),則根據(jù)預置視頻序列的編碼結構,進行參考幀的篩選;第三判斷單元,用于判斷是否視頻序列中所有的幀都已經(jīng)編碼;第三執(zhí)行單元,用于當判斷所述視頻序列中的幀沒有全部編碼,則第一判斷單元重新進行判斷;當判斷所述視頻序列中幀全部編碼時則結束。本發(fā)明提出一種基于宏塊統(tǒng)計信息的參考幀篩選策略,通過各幀宏塊的統(tǒng)計信息 的不同情況,對參考幀進行快速篩選,實現(xiàn)了參考列表的自適應調整。并且本發(fā)明可在率失真性能基本不變的情況下,提升編碼速度,使編碼器在率失真性能和計算量兩者之間達到進一步的優(yōu)化實現(xiàn)。
圖I是本發(fā)明實施例I基于宏塊統(tǒng)計信息的參考幀篩選方法的流程圖;圖2是本發(fā)明實施例I步驟140中情況I的方法流程圖;圖3是本發(fā)明實施例I步驟140中情況2的方法流程圖;圖4是本發(fā)明實施例I步驟140中情況3的方法流程圖;圖5是本發(fā)明實施例2基于宏塊統(tǒng)計信息的參考幀篩選裝置結構圖;圖6是本發(fā)明實施例2中第一執(zhí)行單元的結構圖;圖7是本發(fā)明實施例2中第二執(zhí)行單元的結構圖。
具體實施例方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖和實施例,對本發(fā)明進行進一步詳細說明,為了便于說明,僅示出了與本發(fā)明實施例相關的部分。應當理解,此處所描寫的具體實施例,僅僅用于解釋本發(fā)明,并不用以限制本發(fā)明。實施例一參見圖1,本發(fā)明提供了一種基于宏塊統(tǒng)計信息的參考幀篩選方法,該方法可以為步驟100 :初始化,令t = 1,即令第一當前編碼幀為第一個編碼幀。本發(fā)明中,t表示第一當前編碼幀frame,在所有編碼幀中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;framet為第一當前編碼中貞。步驟110 :判斷第一當前編碼幀是否為I巾貞,即判斷frame,是否I幀;若否,則執(zhí)行步驟120 ;若是則執(zhí)行步驟160。步驟120 :首先,將所述第一當前編碼幀編碼;然后,獲取編碼后的第一當前編碼幀中的I宏塊及廣義I宏塊的第一數(shù)量。該步驟獲取第一數(shù)量的方法可以為設置""/"/ "/= O^n=I ;判斷是否(Mbt,n G framet)且(Mbt,n為I宏塊或者Mbt,n至少包含一個為幀內預測模式的子塊),若是則/〃/〃 &’// = mmhe/{ -h I、n=n+l ;若否,則 n=n+l。判斷是否n>mbwidth*mbheight,若是,則執(zhí)行步驟130 ;若否,則重新進行上述兩個判斷,即重新進行“判斷(Mbt,n e framet)且(Mbt,n為I宏塊或者Mbt,n至少包含一個為幀內預測模式的子塊)”及“判斷是否n>mbwidth*mbheight”。本發(fā)明中,Jmmberj表不framet巾貞中I宏塊及廣義I宏塊的第一數(shù)量;Mbt,n表不第t幀編碼幀的第n個宏塊;11表示宏塊肺0在打&11^中的位置序號;當塊的大小為16x16,則稱為宏塊;當宏塊進一步劃分為大小為Ii1Xn2的塊U1 ( 16或者n2 ( 16,但兩者不能同時等于16)則這些尺寸小一些的塊稱為子塊;1宏塊指采用幀內預測模式且塊的大小為16x16的塊;mbwidth, mbheight分別表示一巾貞圖像劃分成宏塊以后,圖像以宏塊為單位的列數(shù)和行數(shù);步驟130 :判斷所述第一數(shù)量是否小于第一參數(shù),BP 判斷是否 mimtiLT' ( N*、mhivkHll產(chǎn) mhhaighl,第一參數(shù)即
N^mbwidth^mbheight,若否則執(zhí)行步驟140,若是則執(zhí)行步驟150 ;其中,Humbcrjt表示framet巾貞中I宏塊及廣義I宏塊的第一數(shù)量,mbwidth,mbheight分別表示一幀圖像劃分成宏塊以后,圖像以宏塊為單位的列數(shù)和行數(shù);其中N的取值范圍為0至1,優(yōu)選的N可取值0.9。步驟140 :首先根據(jù)視頻序列的編碼結構,進行參考幀的篩選,然后執(zhí)行步驟170。步驟150 :首先獲取第二當前編碼幀,然后設置第二當前編碼幀為第一當前編碼幀,然后執(zhí)行步驟170?!矮@取第二當前編碼幀”具體為判斷min (FameNum (framej |framem未編碼)是否存在,若不存在則結束(完成所有的處理步驟);若存在,則將 min (FrameNum (framej | framem 未編碼)用 FrameNum (framem—J表示,即FrameNum (framem j) =min (FrameNum (framej | framem 未編碼)。此時,framem j 就表示所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼幀?!霸O置第二當前編碼幀為第一當前編碼幀”具體為framet = framem^其中,framem表示第m巾貞編碼巾貞,即可以是所述任一編碼巾貞;framem 4表示第m_i幀編碼幀Jrame111」為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m表示編碼巾貞所有編碼巾貞中的時間序號,簡稱m為編碼巾貞framem的時間序號;m_i表示編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem^的時間序號;FameNum(framej 表示 framem 的編碼序號;FrameNum(J^ramemj)表示 J^ramenu 的編碼序號;min(變量I條件)表示對滿足條件的所有變量求最小值。本發(fā)明中設置第一當前編碼巾貞framet、第二當前編碼巾貞framem^是為了后續(xù)步驟中表述方便。其中第一當前編碼幀就是本領域技術人員公知的當前編碼幀。因第一當前編碼幀framet編碼后,就不屬于視頻序列中的未編碼幀,因此該方法中最后設置framet =^ameni i,其目的也是為了找到所有編碼幀中未編碼且編碼序號最小的第二當前編碼幀,并將這個第二當前編碼幀作為第一當前編碼幀、即實際就是當前編碼幀。步驟160:首先,將所述的第一當前編碼幀編碼。然后,獲取第二當前編碼幀。接著,設置第二當前編碼幀為第一當前編碼幀,然后執(zhí)行步驟170。步驟170 :判斷是否視頻序列中所有的幀都已經(jīng)編碼。若否,則執(zhí)行步驟110 ;;若是,則執(zhí)行步驟180 ;步驟180 :結束(完成所有的處理步驟)。下面主要描述步驟140 :根據(jù)所述的視頻序列的編碼結構篩選參考幀的詳細處理過程,該步驟主要分3種情況來處理情況I :參見圖2,當視頻序列編碼結構為IP…P (即無B幀)并且framet為P幀時;則首先,獲取第二當前編碼巾貞。然后,清空listO。接著,將第一當前編碼巾貞framet編碼后的重構巾貞作為IistO中的第一個參考巾貞。最后,設置第二當前編碼巾貞為第一當前編碼幀。詳細步驟如下 步驟1411獲取第二當前編碼巾貞framem—i。步驟1412 :清空 listO。步驟1413 :將第一當前編碼幀framet編碼后的重構幀作為IistO中的第一個參考幀。步驟1414 :設置所述第二當前編碼幀為第一當前編碼幀。步驟1415 :完成在情況I時步驟140的處理,即完成步驟140的執(zhí)行。步驟1416 :執(zhí)行步驟170?!矮@取第二當前編碼幀”具體為判斷min (FrameNum(framej I framem未編碼)是否存在,若不存在則結束(完成所有的處理步驟);若存在,則將min (FrameNum(framej | framem未編碼)用FrameNum (framem j)表不,即FrameNum (framem j) =min (FrameNum (framej | framem 未編碼)。此時,framem j 就表示所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼幀?!霸O置第二當前編碼幀為第一當前編碼幀”具體為framet = framem^其中,本發(fā)明中IistO表示前向參考列表Jrameni表示第m幀編碼幀,即可以是所述任一編碼巾貞;framemJ表示第m i巾貞編碼巾貞Jramenu為所有未編碼巾貞中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m表示編碼幀所有編碼幀中的時間序號,簡稱m為編碼巾貞framem的時間序號;m_i表示編碼巾貞framem^在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framemJ的時間序號;FrameNum(framej表示framem的編碼序號;FrameNum(framem i)表示Iframenu的編碼序號;min(變量條件)表示對滿足條件的所有變量求最小值。情況2 :參見圖3 ;當所述的視頻序列的編碼結構為含有B幀且當前編碼幀為P幀時步驟1421 :獲取第二當前編碼巾貞framemJ0步驟1422 :k= I。步驟1423 :判斷是否若是執(zhí)行步驟1424 :若否、且framem」為P幀時執(zhí)行步驟1430 ;若否、且framem」為I幀時執(zhí)行步驟1431。步驟1424 :判斷是否(poc (refk) <t 并且 refk G listO)或者(poc (refk) <t 并且refk G listl),若是,執(zhí)行步驟1425 ;若否,執(zhí)行步驟1426。步驟1425 :設置refk為framem—i的參考巾貞后,執(zhí)行步驟1427。步驟1426 :設置refk不再作為framej的參考巾貞后,執(zhí)行步驟1427 ;所謂不再作為參考幀,意思就是在后續(xù)的運動估計中,不會在這個“不是參考幀”的圖像上進行。步驟1427 :設置 k=k+l。步驟1428 :判斷是否k>numberlist(l+numberlistl,若是則執(zhí)行步驟1429 ;若否則執(zhí)行步驟1423。步驟1429 :首先利用已篩選完畢的listO、listl,對framej進行編碼;然后設置設置第二當前編碼幀為第一當前編碼幀;接著執(zhí)行步驟1432。步驟1430 :首先,清空listO。然后,將framet編碼后的重構幀作為IistO中的第 一個參考幀。最后,利用已篩選完畢的listO,對frame^」進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;接著執(zhí)行步驟1432。步驟1431首先對frame^」進行編碼;然后設置設置第二當前編碼幀為第一當前編碼幀;接著執(zhí)行步驟1432。步驟1432 :完成在情況2時步驟140的處理,即完成步驟140的執(zhí)行。步驟1433 :執(zhí)行步驟170。本發(fā)明中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考巾貞,k表不refk在IistO和Iistl所有參考巾貞中的序號(該序號的排序方式不唯一,只要讓所有的參考幀獲取一個區(qū)分彼此的序號即可。例如可以先排前向參考列表的參考幀再排后向參考列表的參考巾貞,此時所有前向參考列表中參考巾貞的序號均小于后向參考列表中參考幀的序號;而每個單獨的參考列表中參考幀可以按其原始編碼幀對應的編碼序號排序);設置k = I此時表示從第一個參考巾貞開始處理;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramenu表示第m_i巾貞編碼巾貞Jramemj為所有未編碼巾貞中具有最小編碼序號的編碼巾貞,稱為第二當如編碼巾貞;m_i表不編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framemJ的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表不前向參考列表中參考巾貞的巾貞數(shù);numberlistl表不后向參考列表中參考中貞的幀數(shù)。情況3,參見圖4 :當視頻序列的編碼結構為含有B幀、且framet第一當前編碼幀為B幀時步驟1441 :獲取第二當前編碼巾貞framemJ0步驟1442 :設置 k = I。步驟1443 :判斷是否m_i〈t,若是執(zhí)行步驟1444 ;若否、且Iframenu為B巾貞執(zhí)行步驟1450 ;若否、且framemJ為P幀執(zhí)行步驟1456 ;若否、且framem」為I幀執(zhí)行步驟1462。步驟1444 :判斷是否(poc (refk) <t 并且 refk G listO)或者(poc (refk) <t 并且refk G listl),若是,則執(zhí)行步驟1445 ;若否,則執(zhí)行步驟1446。步驟1445 :設置refk為frame^」的參考幀;執(zhí)行步驟1447。步驟1446 :設置refk不再作為frame^」的參考幀;執(zhí)行步驟1447。步驟1447 :設置 k=k+l。
步驟1448 :判斷k > numberlist0+numberlistl,若是執(zhí)行步驟1449 ;若否執(zhí)行步驟1443。步驟1449 :首先直接利用已篩選完畢的listO、listl,對framej進行編碼;然后設置第二當前編碼幀為第一當前編碼幀;接著執(zhí)行步驟1463。步驟1450 :判斷是否(poc (refk)彡 t 并且 refk G listO)或者(poc (refk)彡 t 并且refk G listl),若是,則執(zhí)行步驟1451 ;若否,則執(zhí)行步驟1452。步驟1451 :設置refk為frame^」的參考幀;執(zhí)行步驟1453。步驟1452 refk不再作為frame^」的參考幀;執(zhí)行步驟1453。步驟1453 :設置 k=k+l。 步驟1454 :判斷是否k > numberlist(l+numberlistl,若是,則執(zhí)行步驟1455 ;若否,貝丨J執(zhí)行步驟。1443步驟1455 :首先直接利用已篩選完畢的listO、listl,對framem i進行編碼;然后設置第二當前編碼幀為第一當前編碼幀;接著執(zhí)行步驟1463。步驟1456 :首先,判斷是否poc (refk)彡t并且refk G listO,若是,則執(zhí)行步驟1457 ;若否,則執(zhí)行步驟1458。步驟1457 :設置refk為frame^」的參考幀;執(zhí)行步驟1459。步驟1458 :設置refk不再作為frame^」的參考幀;執(zhí)行步驟1459。步驟1459 :設置 k=k+l。步驟1460 :判斷是否k > numberlist(l,若是,則執(zhí)行步驟1461 ;若否,則執(zhí)行步驟1443。步驟1461 :利用已篩選完畢的listO,對frame^」進行編碼,然后設置第二當前編碼幀為第一當前編碼幀;執(zhí)行步驟1463。步驟1462 :先對frame^」進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;執(zhí)行步驟1463。步驟1463 :完成在情況3時步驟140的處理,即完成步驟140的執(zhí)行。步驟1464 :執(zhí)行步驟170。實施例2,本發(fā)明還提供一種基于宏塊統(tǒng)計信息的參考幀篩選裝置,參見圖5,所述的裝置包括第一判斷單元、第一執(zhí)行單元、第二判斷單元、第二執(zhí)行單元;第三判斷單元;第三執(zhí)行單元;第一判斷單元,用于判斷第一當前編碼幀是否為I幀;第一執(zhí)行單元,用于當判斷出第一當前編碼幀不是I幀,則將所述的第一當前編碼幀編碼;獲取編碼后的第一當前編碼幀中,I宏塊及廣義I宏塊的第一數(shù)量;第二判斷單元,用于判斷所述第一數(shù)量是否小于第一參數(shù);第二執(zhí)行單元,用于當判斷出第一數(shù)量不小于第一參數(shù),則根據(jù)預置視頻序列的編碼結構,進行參考幀的篩選;第三判斷單元,用于判斷是否視頻序列中所有的幀都已經(jīng)編碼;第三執(zhí)行單元,用于當判斷所述視頻序列中的幀沒有全部編碼,則第一判斷單元重新進行判斷;當判斷所述視頻序列中幀全部編碼時則結束。其中,所述裝置進一步包括第四執(zhí)行單元;
第四執(zhí)行單元,用于當?shù)诙袛鄦卧袛喑龅谝粩?shù)量小于第一參數(shù),則獲取第二當前編碼幀,設置第二當前編碼幀為第一當前編碼幀,接著通知第三判斷單元判斷是否所有的幀都已經(jīng)編碼。其中,所述裝置進一步包括第五執(zhí)行單元;第五執(zhí)行單元,用于當?shù)谝慌袛鄦卧袛喑龅谝划斍熬幋a幀是I幀,將所述的第一當前編碼幀編碼;獲取第二當前編碼幀;設置第二當前編碼幀為第一當前編碼幀;然后繼續(xù)通知第三判斷單元判斷是否所有視頻序列里的幀都已經(jīng)編碼。參見圖6,所述第一執(zhí)行單元包括設置單元、第六執(zhí)行單元、第七執(zhí)行單元;設置單元,用于進行初始設置,即令〃= 0,n=l ;第六執(zhí)行單元,用于判斷是否(Mbt, n G framet)且(Mbt,nS I宏塊或者Mbt, n至少 包含一個為巾貞內預測模式的子塊),若是,通知則"細1M/ mmberj + 1、n=n+l ;若否,則n=n+l ;第七執(zhí)行單元,用于根據(jù)第六執(zhí)行單元的結果判斷是否n>mbwidth*mbheight,若是,則通知第二判斷單元繼續(xù)執(zhí)行“判斷所述第一數(shù)量是否小于第一參數(shù)”;若否,則通知第六執(zhí)行單元繼續(xù)判斷;其中,想《^<表示frame,幀中I宏塊及廣義I宏塊的第一數(shù)量;Mbt,n表示第t幀編碼巾貞的第n個宏塊;11表示宏塊她^在framet中的位置序號;mbwidth, mbheight分別表示一幀圖像劃分成宏塊以后,圖像以宏塊為單位的列數(shù)和行數(shù),frame,為第一當前編碼幀;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。以上單元中,所述第二判斷單元所述的第一參數(shù)為N*mbwidth*mbheight,其中N取值范圍為0至I的小數(shù);其中,Uiimher1t表示framet巾貞中I宏塊及廣義I宏塊的第一數(shù)量,mbwidth,mbheight分別表示一幀圖像劃分成宏塊以后,圖像以宏塊為單位的列數(shù)和行數(shù)。參見圖7,第二執(zhí)行單元包括第一情況單元;所述第一情況單元包括第八執(zhí)行單元、第九執(zhí)行單元;第八執(zhí)行單元,用于獲取第二當前編碼幀;然后,清空IistO ;第九執(zhí)行單元,用于將第一當前編碼幀framet編碼后的重構幀作為IistO中的第一個參考幀;最后,設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元繼續(xù)判斷;其中,IistO表示前向參考列表;framet為第一當前編碼幀;t表示第一當前編碼中貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。其中,第二執(zhí)行單元進一步包括第二情況單元,第二情況單元包括第十執(zhí)行單元、第十一執(zhí)行單元、第十二執(zhí)行單元;第十執(zhí)行單元,用于獲取第二當前編碼幀;設置k = I ;第十一執(zhí)行單元,包括第四判斷單元、第十三執(zhí)行單元;第四判斷單元,用于判斷是否第十三執(zhí)行單元,用于當?shù)谒呐袛鄦卧袛酁槭菚r,則進一步判斷是否(poc(refk)〈t 并且 refk G listO)或者(poc (refk) <t 并且 refk G listl),如果進一步判斷為是,則refk為framem—i的參考巾貞;如果進一步判斷為否,則refk不再作為Tramenu的參考幀;第十二執(zhí)行單元,用于設置k=k+l ;判斷是否k符合下列條件k > numberlist0+numberlistl,若是,則首先利用已篩選完畢的 listO、listl,對frameffl i進行編碼;然后設置設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元繼續(xù)判斷;其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考中貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;設置k = I此時表示從第一個參考中貞開始處理;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramenu表示第m_i幀編碼幀Jrame111」為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼巾貞;m_i表示編碼巾貞framem i在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem
i的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表不前向參考列表中參考中貞 的幀數(shù);numberlistl表示后向參考列表中參考幀的幀數(shù)。其中,第十一執(zhí)行單元,進一步包括第十四執(zhí)行單元;第十四執(zhí)行單元,用于當?shù)谒呐袛鄦卧袛酁榉?、且frame^」為P幀,則,首先,清空IistO;然后,將framet編碼后的重構幀作為IistO中的第一個參考幀;最后,利用已篩選完畢的listO,對frame^」進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元繼續(xù)判斷;其中,IistO表示前向參考列表;framem—i表示第m_i巾貞編碼巾貞Jramemj為所有未編碼巾貞中具有最小編碼序號的編碼巾貞,稱為第二當如編碼巾貞;m_i表不編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framemJ的時間序號;framet為第一當前編碼中貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。其中,第十一執(zhí)行單元,進一步包括第十五執(zhí)行單元,第十六執(zhí)行單元,用于當?shù)谒呐袛鄦卧袛酁榉?、且frame。為I幀,則,則先對frameffl i進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元繼續(xù)判斷;其中,Iframenu表示第m_i巾貞編碼巾貞Jramenu為所有未編碼巾貞中具有最小編碼序號的編碼幀,稱為第二當前編碼幀表示編碼幀frame^」在所有編碼幀中的時間序號,簡稱m_i為編碼巾貞framemJ的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼中貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。其中,所述第二執(zhí)行單元進一步包括第三情況單元;所述第三情況單元包括 第十六執(zhí)行單元、第五判斷單元、第十七執(zhí)行單元、第十八執(zhí)行單元、第六判斷單元、第十九執(zhí)行單元;第十六執(zhí)行單元,用于獲取第二當前編碼幀;設置k=l ;第五判斷單元,用于判斷是否m_i〈t ;第十七執(zhí)行單元,用于當?shù)谖迮袛鄦卧袛酁槭菚r,則,進一步判斷是否(poc (refk) <t 并且 refk G listO)或者(poc (refk) <t 并且 refk G listl),若進一步判斷為是,則refk為Iframemj的參考巾貞,若進一步判斷為否,則refk不再作為framem—i的參考巾貞;第十八執(zhí)行單元,用于設置k=k+l ;第六判斷單元,用于根據(jù)第十八執(zhí)行單元的結果,判斷是否k>numberlist0+numberlistl ;第十九執(zhí)行單元,用于當?shù)诹袛鄦卧袛喑鍪菚r,直接利用已篩選完畢的listO、listl,對framej進行編碼;然后設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元進行判斷;若第六判斷單元判斷為否時,則通知第五判斷單元繼續(xù)判斷;其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考中貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;設置k = I此時表示從第一個參 考中貞開始處理;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramenu表示第m_i幀編碼幀Jrame111」為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼巾貞;m_i表示編碼巾貞framem i在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem
i的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表不前向參考列表中參考中貞的幀數(shù);numberlistl表示后向參考列表中參考幀的幀數(shù)。其中,所述第三情況單元進一步包括第二十執(zhí)行單元、第二十執(zhí)行單元,用于當?shù)谖迮袛鄦卧袛酁榉?,且frame^ i為B幀,則,判斷是否(poc(refk)彡 t 并且 refkG listO)或者(poc (refk)彡 t 并且 refkG listl),若是則refk為frame^」的參考幀;否則,refk不再作為frame^」的參考幀;通知第十八執(zhí)行單元設置 k=k+l ;其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考中貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;poc (refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramemj表示第m_i巾貞編碼巾貞Jramenu為所有未編碼巾貞中具有最小編碼序號的編碼巾貞,稱為第二當如編碼巾貞;m_i表不編碼巾貞framemJ在所有編碼中貞中的時間序號,簡稱m_i為編碼巾貞framem i的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表不前向參考列表中參考巾貞的巾貞數(shù);numberlistl表不后向參考列表中參考中貞的幀數(shù)。其中,所述第三情況單元進一步包括第二i^一執(zhí)行單元、第二十二執(zhí)行單元、第七判斷單元、第二十三執(zhí)行單元;第二^^一執(zhí)行單元,用于當?shù)谖迮袛鄦卧袛酁榉?,且framey為P幀,則判斷是否poc(refk)彡t并且refk G listO,若是,則refk為的參考巾貞;若否,則refk不再作為frame^」的參考幀;通知第二十二執(zhí)行單元設置k=k+l ;第二十二執(zhí)行單元,用于設置k=k+l ;第七判斷單元,用于判斷是否k > numberlist0 ;第二十三執(zhí)行單元,用于當?shù)谄吲袛鄦卧袛嘟Y果為是時,進一步判斷是否IistO為空,若進一步判斷為是,則變換frames」類別為I幀,進行編碼;若進一步判斷為否,則直接利用已篩選完畢的listO,對frame^」進行編碼;最后設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元進行判斷;當?shù)谄吲袛鄦卧袛嘟Y果為否時,則通知第五判斷單元繼續(xù)判斷;其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考中貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;poc (refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramemj表示第m_i巾貞編碼巾貞Jramenu為所有未編碼巾貞中具有最小編碼序號的編碼巾貞,稱為第二當如編碼巾貞;m_i表不編碼巾貞framemJ在所有編碼中貞中的時間序號,簡稱m_i為編碼巾貞framem i的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表不前向參考列表中參考巾貞的巾貞數(shù);numberlistl表不后向參考列表中參考中貞的幀數(shù)。其中,所述第三情況單元進一步包括第二十四執(zhí)行單元;第二十四執(zhí)行單元,用于當?shù)谖迮袛鄦卧袛酁榉瘢襢rame^ i為I幀,則先對frameffl i進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元繼續(xù)判斷; 其中,Iframenu表示第m_i巾貞編碼巾貞Jramenu為所有未編碼巾貞中具有最小編碼序號的編碼幀,稱為第二當前編碼幀表示編碼幀frame^」在所有編碼幀中的時間序號,簡稱m_i為編碼巾貞framemJ的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼中貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。并且,以上所述的第四執(zhí)行單元、第五執(zhí)行單元、第八執(zhí)行單元、第十執(zhí)行單元、第十六執(zhí)行單元所述的“獲取第二當前編碼幀”具體為判斷min (FrameNum (framej | framem未編碼)是否存在,若不存在則結束;若存在,則將min (FrameNum (framej |framem 未編碼)用 FrameNum (J^ramemj)表示,即FrameNum(framemj) =min (FrameNum(framej |famem 未編碼);framem—i 就表示所有未編碼中貞中具有最小編碼序號的編碼巾貞,稱為第二當如編碼巾貞;所述的“設置第二當前編碼幀為第一當前編碼幀”具體為framet=framem j其中,framem表示第m巾貞編碼巾貞,即可以是所述任一編碼巾貞;framem 4表示第m_i幀編碼幀Jrame111」為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m表示編碼巾貞所有編碼巾貞中的時間序號,簡稱m為編碼巾貞framem的時間序號;m_i表示編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem^的時間序號;FrameNum (framej 表示 framem 的編碼序號;FrameNum (J^ramenu)表示 J^ramenu 的編碼序號;min(變量I條件)表示對滿足條件的所有變量求最小值。綜上所述,本發(fā)明提出一種基于宏塊統(tǒng)計信息的參考幀篩選策略,通過各幀宏塊的統(tǒng)計信息的不同情況,對參考幀進行快速篩選,實現(xiàn)了參考列表的自適應調整。并且本發(fā)明可在率失真性能基本不變的情況下,提升編碼速度,使編碼器在率失真性能和計算量兩者之間達到進一步的優(yōu)化實現(xiàn)。本領域的普通技術人員可以理解,實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序指令相關硬件來完成的,所述的程序可以存儲于一計算機可讀取存儲介質中,所述的存儲介質可以為ROM、RAM、磁盤、光盤等。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含 在本發(fā)明的保護范圍之內。
權利要求
1.一種基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的方法包括 判斷第一當前編碼幀是否為I幀, 若第一當前編碼幀不是I幀,則將所述的第一當前編碼幀編碼; 獲取編碼后的第一當前編碼幀中,I宏塊及廣義I宏塊的第一數(shù)量; 判斷所述第一數(shù)量是否小于第一參數(shù),若第一數(shù)量不小于第一參數(shù),則根據(jù)預置視頻序列的編碼結構,進行參考幀的篩選; 然后判斷是否所述視頻序列中所有的幀都已經(jīng)編碼;若否,則繼續(xù)判斷第一當前編碼幀是否為I幀;若是則結束。
2.根據(jù)權利要求I所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于“判斷所述第一數(shù)量是否小于第一參數(shù)”還包括 若第一數(shù)量小于第一參數(shù),則獲取第二當前編碼幀,設置第二當前編碼幀為第一當前編碼幀,接著繼續(xù)判斷是否所有的幀都已經(jīng)編碼。
3.根據(jù)權利要I所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于所述的“判斷第一當前編碼幀是否為I幀” 若第一當前編碼幀是I幀,將所述的第一當前編碼幀編碼; 獲取第二當前編碼幀; 設置第二當前編碼幀為第一當前編碼幀;然后繼續(xù)判斷是否所有視頻序列里的幀都已經(jīng)編碼。
4.根據(jù)權利要求I所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的“獲取編碼后的第一當前編碼幀中I宏塊及廣義I宏塊的第一數(shù)量”具體為 首先,進行初始設置,即令//// % // = O n=l ; 然后,判斷是否(Mbt,n G framet)且(Mbt,nS I宏塊或者Mbt,n至少包含一個為幀內預測模式的子塊),若是,物nimbcr' = number^ + I、n=n+l ;若否,則n=n+l ; 接著,判斷是否n>mbwidth*mbheight,若是,則繼續(xù)執(zhí)行“判斷所述第一數(shù)量是否小于第一參數(shù)”;若否,則繼續(xù)“判斷(Mbt,n G framet)且(Mbt,nS I宏塊或者Mbt,n至少包含一個為幀內預測模式的子塊)”; 哀中,mimber丨表不framet巾貞中I宏塊及廣義I宏塊的第一數(shù)量;Mbt,n表不第t巾貞編碼中貞的第n個宏塊;11表示宏塊她“在framet中的位置序號;mbwidth,mbheight分別表示一幀圖像劃分成宏塊以后,圖像以宏塊為單位的列數(shù)和行數(shù),frame,為第一當前編碼幀;t表示第一當前編碼幀frame,在所有編碼幀中的時間序號,簡稱t為第一編碼幀frame,的時間序號。
5.根據(jù)權利要求I至4其中之一所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的“第一參數(shù)”具體為N*mbwidth*mbheight ; 其中N取值范圍為0至I的小數(shù)'.InimherH1Tf' framet巾貞中I宏塊及廣義I宏塊的第一數(shù)量,mbwidth, mbheight分別表示一巾貞圖像劃分成宏塊以后,圖像以宏塊為單位的列數(shù)和行數(shù)。
6.根據(jù)權利要求I所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的“根據(jù)視頻序列的編碼結構,進行參考幀的篩選”具體為當所述編碼結構為無B幀、且第一當前編碼幀為P幀時; 首先,獲取第二當前編碼幀;然后,清空IistO ; 再將第一當前編碼幀framet編碼后的重構幀作為IistO中的第一個參考幀;最后,設置第二當前編碼幀為第一當前編碼幀;繼續(xù)判斷是否所屬視頻序列中所有的幀都已經(jīng)編碼; 其中,IistO表示前向參考列表;framet為第一當前編碼幀;t表示第一當前編碼幀framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。
7.根據(jù)權利要求I所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的“根據(jù)所述編碼結構,進行參考幀的篩選處理步驟”具體為當所述的視頻序列的編碼結構為含有B幀且當前編碼幀為P幀時,則 首先,獲取第二當前編碼幀; 然后,設置k=l ; 接著,判斷是否m_i〈t,若是,則進一步判斷是否(poc(refk)〈t并且refk G IistO)或者(poc(refk)〈t并且refk G Iistl),如果進一步判斷為是,則refk為framem—i的參考巾貞;如果進一步判斷為否,則refk不再作為Tramenu的參考巾貞; 再接著,設置k=k+l ; 最后,判斷是否k符合下列條件 k > numberlist(l+numberlistl,若是,則首先利用已篩選完畢的 listO、IistU^ framem—i進行編碼;然后設置設置第二當前編碼幀為第一當前編碼幀;繼續(xù)判斷是否所屬視頻序列中所有的幀都已經(jīng)編碼; 其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考巾貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;設置k = I此時表示從第一個參考巾貞開始處理;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramenu表示第m_i幀編碼幀^rame111」為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼中貞;m_i表示編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem 4的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表不前向參考列表中參考巾貞的中貞數(shù);numberlistl表示后向參考列表中參考巾貞的巾貞數(shù)。
8.根據(jù)權利要求7所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的“判斷是否若否、且frame^」為P幀,則, 首先,清空IistO ; 然后,將framet編碼后的重構幀作為IistO中的第一個參考幀; 最后,利用已篩選完畢的IIstOjtframeni i進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;繼續(xù)判斷是否所屬視頻序列中所有的幀都已經(jīng)編碼; 其中,IistO表示前向參考列表Jramemj表示第m_i巾貞編碼巾貞Jramemj為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m_i表示編碼幀frame^」在所有編碼中貞中的時間序號,簡稱m_i為編碼巾貞framem—i的時間序號;framet為第一當前編碼巾貞;1:表示第一當前編碼幀frame,在所有編碼幀中的時間序號,簡稱t為第一編碼幀frame,的時間序號。
9.根據(jù)權利要求7所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的“判斷是否若否、且frame^j為I幀,則先對^ameni i進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;繼續(xù)判斷是否所屬視頻序列中所有的幀都已經(jīng)編碼; 其中,framem—i表示第m_i巾貞編碼巾貞Jramenu為所有未編碼巾貞中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m_i表示編碼幀frame^」在所有編碼幀中的時間序號,簡稱m_i為編碼巾貞framemJ的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼中貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。
10.根據(jù)權利要求I所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的“根據(jù)所述編碼結構,進行參考幀的篩選處理步驟”具體為當前編碼結構為含有B幀、且當前編碼幀為B幀時,則, 首先,獲取第二當前編碼幀; 然后,設置k=l ; 接著,判斷是否m_i〈t,若是則,進一步判斷是否(poc(refk)〈t并且refk G IistO)或者(poc(refk)〈t并且refk G Iistl),若進一步判斷為是,則refk為framem—i的參考巾貞,若進一步判斷為否,則refk不再作為framem—i的參考巾貞; 再接著,設置k=k+l ; 最后,判斷是否 k > numberlist0+numberlistl,若是則,首先直接利用已篩選完畢的listO、list I,對frameffl i進行編碼;然后設置第二當前編碼幀為第一當前編碼幀;繼續(xù)判斷是否所屬視頻序列中所有的幀都已經(jīng)編碼; 其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考巾貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;設置k = I此時表示從第一個參考巾貞開始處理;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramenu表示第m_i幀編碼幀^rame111」為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼中貞;m_i表示編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem 4的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表不前向參考列表中參考巾貞的中貞數(shù);numberlistl表示后向參考列表中參考巾貞的巾貞數(shù)。
11.根據(jù)權利要求10所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的“判斷是否若否、且frame^」為B巾貞,則, 首先,判斷是否(poc(refk)彡t并且refk G IistO)或者(poc(refk)彡t并且refk G listl),若是則refk為framem—i的參考巾貞;否則,refk不再作為framem—i的參考中貞;然后,設置k=k+l ; 接著,判斷是否 k > numberlist0+numberlistl,若是則,首先直接利用已篩選完畢的listO、listl,對frameffl i進行編碼;然后設置第二當前編碼幀為第一當前編碼幀;繼續(xù)判斷是否所屬視頻序列中所有的幀都已經(jīng)編碼; 其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考巾貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramemj表不第m_i巾貞編碼巾貞;framem^為所有未編碼巾貞中具有最小編碼序號的編碼巾貞,稱為第二當如編碼巾貞;m_i表不編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem i的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表示前向參考列表中參考巾貞的巾貞數(shù);numberlistl表示后向參考列表中參考巾貞的幀數(shù)。
12.根據(jù)權利要求10所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的“判斷是否若否、且frames為P幀,則, 首先,判斷是否poc(refk)彡t并且refkG listO,若是,則refk為framem—i的參考中貞;若否,則refk不再作為Iframenu的參考巾貞; 然后,設置k=k+l ; 接著,判斷是否 k > numberlist(l,若是則首先利用已篩選完畢的IistO,對Iframenu進行編碼;然后設置第二當前編碼幀為第一當前編碼幀;繼續(xù)判斷是否所屬視頻序列中所有的幀都已經(jīng)編碼; 其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考巾貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramemj表不第m_i巾貞編碼巾貞;framem^為所有未編碼巾貞中具有最小編碼序號的編碼巾貞,稱為第二當如編碼巾貞;m_i表不編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem i的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表示前向參考列表中參考巾貞的巾貞數(shù);numberlistl表示后向參考列表中參考巾貞的幀數(shù)。
13.根據(jù)權利要求10所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的“判斷是否若否、且frame^」為I巾貞,則先對^ameni i進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;繼續(xù)判斷是否所屬視頻序列中所有的幀都已經(jīng)編碼; 其中,framem—i表示第m_i巾貞編碼巾貞Jramenu為所有未編碼巾貞中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m_i表示編碼幀frame^」在所有編碼幀中的時間序號,簡稱m_i為編碼巾貞framemJ的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼中貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。
14.根據(jù)權利要求7、10或11其中之一所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的 “判斷是否k > numberlist(l+numberlistl”,若否則繼續(xù)“判斷是否m_i〈t” ; 其中,IistO表示前向參考列表、Iistl表示后向參考列表;numberlist(l表示前向參考列表中參考巾貞的巾貞數(shù);numberlistl表不后向參考列表中參考巾貞的巾貞數(shù)。
15.根據(jù)權利要求12其中所述的基于宏塊統(tǒng)計信息的參考幀篩選方法,其特征在于,所述的 “判斷是否k > Mimberiisttl”,若否則繼續(xù)“判斷是否; 其中,IistO表示前向參考列表、Iistl表示后向參考列表;numberlist(l表示前向參考列表中參考巾貞的巾貞數(shù);numberlistl表不后向參考列表中參考巾貞的巾貞數(shù)。
16.根據(jù)權利要求2、3、6至13其中之一所述的基于宏塊統(tǒng)計信息的參考巾貞篩選方法,其特征在于,所述的“獲取第二當前編碼幀”具體為 判斷min (FrameNum (framej | framem未編碼)是否存在,若不存在則結束; 若存在,則將 min (FrameNum (framej | framem 未編碼)用 FrameNum (J^ramenu)表示,即FrameNum(framem=min (FrameNum(framej |framem 未編碼)Jramemj 就表示所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼幀; 所述的“設置第二當前編碼幀為第一當前編碼幀”具體為 framet=framem ± 其中,framem表示第m巾貞編碼巾貞,即可以是所述任一編碼巾貞Jramemj表示第m_i巾貞編碼幀Jrame111」為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m表示編碼巾貞所有編碼巾貞中的時間序號,簡稱m為編碼巾貞framem的時間序號;m_i表示編碼巾貞framem i在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem 4的時間序號;FrameNum (framej 表示 framem 的編碼序號;FrameNum (J^ramenu)表示 J^ramenu 的編碼序號;min(變量I條件)表示對滿足條件的所有變量求最小值。
17.一種基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,所述的裝置包括第一判斷單元、第一執(zhí)行單元、第二判斷單元、第二執(zhí)行單元;第三判斷單元;第三執(zhí)行單元; 第一判斷單元,用于判斷第一當前編碼幀是否為I幀; 第一執(zhí)行單元,用于當判斷出第一當前編碼幀不是I幀,則將所述的第一當前編碼幀編碼;獲取編碼后的第一當前編碼幀中,I宏塊及廣義I宏塊的第一數(shù)量; 第二判斷單元,用于判斷所述第一數(shù)量是否小于第一參數(shù); 第二執(zhí)行單元,用于當判斷出第一數(shù)量不小于第一參數(shù),則根據(jù)預置視頻序列的編碼結構,進行參考巾貞的篩選; 第三判斷單元,用于判斷是否視頻序列中所有的幀都已經(jīng)編碼; 第三執(zhí)行單元,用于當判斷所述視頻序列中的幀沒有全部編碼,則第一判斷單元重新進行判斷;當判斷所述視頻序列中幀全部編碼時則結束。
18.根據(jù)權利要求17所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,所述裝置進一步包括第四執(zhí)行單元; 第四執(zhí)行單元,用于當?shù)诙袛鄦卧袛喑龅谝粩?shù)量小于第一參數(shù),則獲取第二當前編碼幀,設置第二當前編碼幀為第一當前編碼幀,接著通知第三判斷單元判斷是否所有的幀都已經(jīng)編碼。
19.根據(jù)權利要求18所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,所述裝置進一步包括第五執(zhí)行單元; 第五執(zhí)行單元,用于當?shù)谝慌袛鄦卧袛喑龅谝划斍熬幋a幀是I幀,將所述的第一當前編碼幀編碼;獲取第二當前編碼幀;設置第二當前編碼幀為第一當前編碼幀;然后繼續(xù)通知第三判斷單元判斷是否所有視頻序列里的幀都已經(jīng)編碼。
20.根據(jù)權利要求19所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,所述第一執(zhí)行單元包括設置單元、第六執(zhí)行單元、第七執(zhí)行單元; 設置單元,用于進行初始設置,即令=0, n = I ; 第六執(zhí)行單元,用于判斷是否(Mbt,n G framet)且(Mbt,nS I宏塊或者Mbt, n至少包含一個為巾貞內預測模式的子塊),若是,則〃〃= numberj + 1、n=n+l ;若否,則n=n+l ; 第七執(zhí)行單元,用于根據(jù)第六執(zhí)行單元的結果判斷是否n>mbwidth*mbheight,若是,貝U通知第二判斷單元繼續(xù)執(zhí)行“判斷所述第一數(shù)量是否小于第一參數(shù)”;若否,則通知第六執(zhí)行單元繼續(xù)判斷; 其中表不framet巾貞中I宏塊及廣義I宏塊的第一數(shù)量;Mbt,n表不第t巾貞編碼中貞的第n個宏塊;11表示宏塊她“在framet中的位置序號;mbwidth, mbheight分別表示一幀圖像劃分成宏塊以后,圖像以宏塊為單位的列數(shù)和行數(shù),frame,為第一當前編碼幀;t表示第一當前編碼幀frame,在所有編碼幀中的時間序號,簡稱t為第一編碼幀frame,的時間序號。
21.根據(jù)權利要求17至20其中之一所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,所述第二判斷單元所述的第一參數(shù)為N*mbwidth*mbheight,其中N取值范圍為0至I的小數(shù);其中,/"http:////,知v/表示framet巾貞中I宏塊及廣義I宏塊的第一數(shù)量,mbwidth,mbheight分別表示一幀圖像劃分成宏塊以后,圖像以宏塊為單位的列數(shù)和行數(shù)。
22.根據(jù)權利要求17所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,第二執(zhí)行單元包括第一情況單元;所述第一情況單元包括第八執(zhí)行單元、第九執(zhí)行單元; 第八執(zhí)行單元,用于獲取第二當前編碼幀;然后,清空IistO ; 第九執(zhí)行單元,用于將第一當前編碼幀frame,編碼后的重構幀作為IistO中的第一個參考幀;最后,設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元繼續(xù)判斷; 其中,IistO表示前向參考列表;framet為第一當前編碼幀;t表示第一當前編碼幀framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。
23.根據(jù)權利要求22所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,第二執(zhí)行單元進一步包括第二情況單元,第二情況單元包括第十執(zhí)行單元、第i^一執(zhí)行單元、第十二執(zhí)行單元; 第十執(zhí)行單元,用于獲取第二當前編碼幀;設置k = I ; 第十一執(zhí)行單元,包括第四判斷單元、第十三執(zhí)行單元; 第四判斷單元,用于判斷是否 第十三執(zhí)行單元,用于當?shù)谒呐袛鄦卧袛酁槭菚r,則進一步判斷是否(poc(refk)〈t并且refk G listO)或者(poc(refk)〈t并且refk G listl),如果進一步判斷為是,則refk為framem—i的參考巾貞;如果進一步判斷為否,則refk不再作為Tramemj的參考巾貞; 第十二執(zhí)行單元,用于設置k=k+l ;判斷是否k符合下列條件 k>numberlist(l+numberlistl,若是,貝U首先利用已篩選完畢的 listO、listl,對 J^ramemj 進行編碼;然后設置設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元繼續(xù)判斷; 其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考巾貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;設置k = I此時表示從第一個參考巾貞開始處理;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramenu表示第m_i幀編碼幀^rame111」為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼中貞;m_i表示編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem 4的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表不前向參考列表中參考巾貞的中貞數(shù);numberlistl表示后向參考列表中參考巾貞的巾貞數(shù)。
24.根據(jù)權利要求23所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,第十一執(zhí)行單元,進一步包括第十四執(zhí)行單元; 第十四執(zhí)行單元,用于當?shù)谒呐袛鄦卧袛酁榉?、且framem i為P巾貞,則, 首先,清空IistO ; 然后,將framet編碼后的重構幀作為IistO中的第一個參考幀; 最后,利用已篩選完畢的IIstOjtframeni i進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元繼續(xù)判斷; 其中,IistO表示前向參考列表Jramemj表示第m_i巾貞編碼巾貞Jramemj為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m_i表示編碼幀frame^」在所有編碼中貞中的時間序號,簡稱m_i為編碼巾貞framem—i的時間序號;framet為第一當前編碼巾貞;1:表示第一當前編碼幀frame,在所有編碼幀中的時間序號,簡稱t為第一編碼幀frame,的時間序號。
25.根據(jù)權利要求24所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,第十一執(zhí)行單元,進一步包括第十五執(zhí)行單元, 第十五執(zhí)行單元,用于當?shù)谒呐袛鄦卧袛酁榉?、且framem i為I幀,則,則先對frame^i進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元繼續(xù)判斷;其中,framem—i表示第m_i巾貞編碼巾貞Jramenu為所有未編碼巾貞中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m_i表示編碼幀frame^」在所有編碼幀中的時間序號,簡稱m_i為編碼巾貞framemJ的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼中貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。
26.根據(jù)權利要求25所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,所述第二執(zhí)行單元進一步包括第三情況單元;所述第三情況單元包括第十六執(zhí)行單元、第五判斷單元、第十七執(zhí)行單元、第十八執(zhí)行單元、第六判斷單元、第十九執(zhí)行單元; 第十六執(zhí)行單元,用于獲取第二當前編碼幀;設置k=l ; 第五判斷單元,用于判斷是否m_i〈t ; 第十七執(zhí)行單元,用于當?shù)谖迮袛鄦卧袛酁槭菚r,則,進一步判斷是否(poc (refk) <t并且refkG listO)或者(poc(refk)〈t并且refk G listl),若進一步判斷為是,則refk為framem i的參考巾貞,若進一步判斷為否,則refk不再作為Iframenu的參考巾貞; 第十八執(zhí)行單元,用于設置k=k+l ; 第六判斷單元,用于根據(jù)第十八執(zhí)行單元的結果,判斷是否k>numberlist(l+numbe;rlistl ;第十九執(zhí)行單元,用于當?shù)诹袛鄦卧袛喑鍪菚r,直接利用已篩選完畢的listO、listl,對frame^」進行編碼;然后設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元進行判斷;若第六判斷單元判斷為否時,則通知第五判斷單元繼續(xù)判斷; 其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考巾貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;設置k = I此時表示從第一個參考巾貞開始處理;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramenu表示第m_i幀編碼幀^rame111」為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼中貞;m_i表示編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem 4的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表不前向參考列表中參考巾貞的中貞數(shù);numberlistl表示后向參考列表中參考巾貞的巾貞數(shù)。
27.根據(jù)權利要求26所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,所述第三情況單元進一步包括第二十執(zhí)行單元、 第二十執(zhí)行單元,用于當?shù)谖迮袛鄦卧袛酁榉瘢襎rameni i為B幀,則,判斷是否(poc (refk)≥ t 并且 refkG listO)或者(poc (refk)≥ t 并且 refk G listl ),若是則 refk為framem—i的參考巾貞;否則,refk不再作為framej的參考巾貞;通知第十八執(zhí)行單元設置k=k+l ; 其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考巾貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramemj表不第m_i巾貞編碼巾貞;framem^為所有未編碼巾貞中具有最小編碼序號的編碼巾貞,稱為第二當如編碼巾貞;m_i表不編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem i的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表示前向參考列表中參考巾貞的巾貞數(shù);numberlistl表示后向參考列表中參考巾貞的幀數(shù)。
28.根據(jù)權利要求27所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,所述第三情況單元進一步包括第二十一執(zhí)行單元、第二十二執(zhí)行單元、第七判斷單元、第二十三執(zhí)行單元; 第二十一執(zhí)行單元,用于當?shù)谖迮袛鄦卧袛酁榉?,且frames」為P幀,則判斷是否poc(refk)彡t并且refk G listO,若是,則refk為framem—i的參考巾貞;若否,則refk不再作為frame^」的參考幀;通知第二十二執(zhí)行單元設置k=k+l ; 第二十二執(zhí)行單元,用于設置k=k+l ; 第七判斷單元,用于判斷是否k>numberlist(l ; 第二十三執(zhí)行單元,用于當?shù)谄吲袛鄦卧袛嘟Y果為是時,進一步判斷是否IistO為空,若進一步判斷為是,則變換frames」類別為I幀,進行編碼;若進一步判斷為否,則直接利用已篩選完畢的IIstOjtframeni i進行編碼;最后設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元進行判斷;當?shù)谄吲袛鄦卧袛嘟Y果為否時,則通知第五判斷單元繼續(xù)判斷; 其中,IistO表示前向參考列表、Iistl表示后向參考列表;refk表示第k個參考巾貞,k表示refk在IistO和Iistl所有參考巾貞中的序號;poc(refk)表示refk對應的原始圖像在所有編碼巾貞中的時間序號Jramemj表不第m_i巾貞編碼巾貞;framem^為所有未編碼巾貞中具有最小編碼序號的編碼巾貞,稱為第二當如編碼巾貞;m_i表不編碼巾貞framemJ在所有編碼巾貞中的時間序號,簡稱mi為編碼巾貞framem i的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼巾貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號;numberlist(l表示前向參考列表中參考巾貞的巾貞數(shù);numberlistl表示后向參考列表中參考巾貞的幀數(shù)。
29.根據(jù)權利要求28所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于,所述第三情況單元進一步包括第二十四執(zhí)行單元; 第二十四執(zhí)行單元,用于當?shù)谖迮袛鄦卧袛酁榉?,且^ameni i為I幀,則先對frame^i進行編碼;然后,設置第二當前編碼幀為第一當前編碼幀;通知第三判斷單元繼續(xù)判斷;其中,framem—i表示第m_i巾貞編碼巾貞Jramenu為所有未編碼巾貞中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m_i表示編碼幀frame^」在所有編碼幀中的時間序號,簡稱m_i為編碼巾貞framemJ的時間序號;framet為第一當前編碼巾貞;t表示第一當前編碼中貞framet在所有編碼巾貞中的時間序號,簡稱t為第一編碼巾貞framet的時間序號。
30.根據(jù)權利要求18至20、22至29其中之一所述的基于宏塊統(tǒng)計信息的參考幀篩選裝置,其特征在于所述的第四執(zhí)行單元、第五執(zhí)行單元、第八執(zhí)行單元、第十執(zhí)行單元、第十六執(zhí)行單元所述的“獲取第二當前編碼幀”具體為 判斷min (FrameNum (framej | framem未編碼)是否存在,若不存在則結束; 若存在,則將 min (FrameNum (framej | framem 未編碼)用 FrameNum (J^ramenu)表示,即FrameNum(framem=min (FrameNum(framej |framem 未編碼)Jramemj 就表示所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼幀; 所述的“設置第二當前編碼幀為第一當前編碼幀”具體為 framet=framem ± 其中,framem表示第m巾貞編碼巾貞,即可以是所述任一編碼巾貞Jramemj表示第m_i巾貞編碼幀Jrame111」為所有未編碼幀中具有最小編碼序號的編碼幀,稱為第二當前編碼幀;m表示編碼巾貞所有編碼巾貞中的時間序號,簡稱m為編碼巾貞framem的時間序號;m_i表示編碼巾貞framem i在所有編碼巾貞中的時間序號,簡稱m_i為編碼巾貞framem 4的時間序號;FrameNum (framej 表示 framem 的編碼序號;FrameNum (J^ramenu)表示 J^ramenu 的編碼序號;min(變量I條件)表示對滿足條件的所有變量求最小值。
全文摘要
本發(fā)明公布了一種基于宏塊統(tǒng)計信息的參考幀篩選方法,該方法包括判斷第一當前編碼幀是否為I幀,若第一當前編碼幀不是I幀,則將所述的第一當前編碼幀編碼;獲取編碼后的第一當前編碼幀中,I宏塊及廣義I宏塊的第一數(shù)量;判斷所述第一數(shù)量是否小于第一參數(shù),若第一數(shù)量不小于第一參數(shù),則根據(jù)預置視頻序列的編碼結構,進行參考幀的篩選;然后判斷是否所述視頻序列中所有的幀都已經(jīng)編碼;若否,則繼續(xù)判斷第一當前編碼幀是否為I幀;若是則結束。本發(fā)明還公布了一種基于宏塊統(tǒng)計信息的參考幀篩選裝置。通過本發(fā)明提出的方法和裝置,可以利用各幀宏塊的統(tǒng)計信息的不同情況,對參考幀進行快速篩選,實現(xiàn)參考列表的自適應調整。
文檔編號H04N7/26GK102833535SQ201210226130
公開日2012年12月19日 申請日期2012年7月3日 優(yōu)先權日2012年7月3日
發(fā)明者舒倩 申請人:深圳市融創(chuàng)天下科技股份有限公司