喻 欣,周 亮,楊曉秋,劉 蓓
(重慶有線電視網(wǎng)絡(luò)有限公司 規(guī)劃設(shè)計院,重慶 400051)
H.264是ISO與ITU-T于2003年聯(lián)合頒布的新一代低比特率視頻壓縮標(biāo)準(zhǔn),其主要目的是提高壓縮效率和增加網(wǎng)絡(luò)友好性[1]。該標(biāo)準(zhǔn)雖獲得了很好的編碼效率,但也使得其抗誤碼能力更加脆弱,誤碼擴(kuò)散會引起重構(gòu)圖像質(zhì)量的急劇下降。因此在H.264中,引入了一些新的抗誤碼差錯控制技術(shù),如靈活宏塊重排(Flexible Macroblock Ordering,F(xiàn)MO)技術(shù)。目前國內(nèi)外對FMO技術(shù)進(jìn)行了一定的研究,文獻(xiàn)[2]研究了一種FMO模式下的優(yōu)化技術(shù);文獻(xiàn)[3]測試了FMO技術(shù)對幾個編碼參數(shù)的影響,并提出了一種FMO模式下提高錯誤隱藏效果方法;文獻(xiàn)[4]和文獻(xiàn)[5]針對FMO提出了非等差錯保護(hù)思想;文獻(xiàn)[6]提出了一種通過模式切換的方法提高容錯能力。這些文獻(xiàn)尚未對各種FMO模式的編解碼參數(shù)作出比較完整的分析,也沒有對采用各種FMO模式編碼后的碼流進(jìn)行抗誤碼能力的測試。
筆者在分析FMO原理的基礎(chǔ)上,總結(jié)出FMO差錯控制思想及各種模式宏塊重排的特點。通過研究H.264官方測試代碼JM86基線檔次中FMO設(shè)置參數(shù)的含義,實現(xiàn)了一種合理的宏塊分配映射方式用于后續(xù)測試。最后,選取4種標(biāo)準(zhǔn)視頻測試序列和不同的模擬信道丟包模式,對各種FMO模式下的編解碼效率及抗誤碼能力進(jìn)行了測試,并總結(jié)出了各種模式的應(yīng)用場所。
FMO是通過宏塊分配映射技術(shù),按照一定的方式將一類宏塊映射到1個片組中。如果只有2個片組,則對片組分開進(jìn)行傳送,如果片組中還分為不同的片,則相同片組中的片分開傳送。由于整幅圖像中一些相鄰宏塊分布在不同的片中,丟失塊可充分利用周圍相鄰塊的相關(guān)信息進(jìn)行錯誤隱藏,因此可以較好地恢復(fù)出錯誤圖像,提高抗誤碼能力[7-8]。H.264中定義了7種宏塊到片組的映射方式:
1)交織(Interleaved)模式(FMO0),不同片組交替出現(xiàn),圖1a是三片組的交織模式。
2)分散(Dispersed)模式(FMO1),相鄰宏塊分散出現(xiàn)在不同的片組中,該模式下某個宏塊與其周圍的上下左右4個相鄰塊都不在同一片組中。兩片組分散模式如圖1b所示。
3)前后景(Fore-ground with left-over)模式(FMO2),將圖像按照不同特點分為1個或幾個矩形區(qū)域,把各區(qū)域的宏塊分配到不同的片組,兩片組前后景模式如圖1c所示。
4)環(huán)形掃描(Box-out)模式(FMO3),將圖像中心區(qū)域的宏塊定義為片組中較小的宏塊,以順時針或逆時針方向旋轉(zhuǎn)確定片組大小,中心區(qū)域以外的宏塊則定義為第2個片組。旋轉(zhuǎn)方向、宏塊數(shù)目由參數(shù)設(shè)定。圖1d是兩片組順時針方向掃描時的環(huán)形掃描模式。
5)光柵(Raster-scan)模式(FMO4),將圖像分為上下2個片組,可從左到右、從上到下,也可從右到左、從下到上進(jìn)行掃描。片組宏塊數(shù)目由參數(shù)設(shè)置確定。圖1e是兩片組從左到右、從上到下掃描時的光柵模式。
6)擦拭掃描(Wipe)模式(FMO5),將圖像分為左右2個片組。從上到下、從左到右掃描的擦拭模式如圖1f所示。
7)顯示控制(Explicit)模式(FMO6),由用戶指明每個宏塊屬于哪個片組,可在配置文件為每個宏塊設(shè)置其所屬的片組,設(shè)置順序為光柵掃描順序。
FMO0,F(xiàn)MO2與 FMO6需要使用 sg0/2/6cong.cfg配置文件,把一幅圖像中的宏塊在其模式下按照一定的方式分配到片組中。其他模式有固定的片組分配方式,不需要進(jìn)行配置。片組分配完成后,再做片設(shè)置,完成片組到片的分配過程。
在JM86基線檔次的配置文件enconder_baseline.cfg中,F(xiàn)MO配置參數(shù)含義如下:
SliceMode(參數(shù)1):對是否分片及分片方式進(jìn)行設(shè)置。0為不分片;1為以固定宏塊數(shù)分片;2為以固定比特數(shù)分片。
SliceArgument(參數(shù)2):對不同的分片方式下片的大小進(jìn)行設(shè)置。0表示SliceArgument無效;1表示以宏塊為單位進(jìn)行分片,每個片有SliceArgument個宏塊;2表示以字節(jié)為單位進(jìn)行分片,每個片有SliceArgument個字節(jié)。
num_slice_groups_minus1(參數(shù) 3):是否使用 FMO 及片組數(shù)目設(shè)置。0表示不使用FMO;1表示設(shè)置兩個片組,2表示設(shè)置3個片組。
slice_group_map_type (參數(shù) 4):0~6 分別表示設(shè)置FMO0~FMO6模式。
slice_group_change_direction_flag(參數(shù) 5):設(shè)置值為0或1,對環(huán)形掃描,光柵掃描,擦式掃描模式中的掃描方向進(jìn)行設(shè)置。
slice_group_change_rate_minus1(參數(shù) 6):對環(huán)形掃描,光柵掃描,擦式掃描模式每個片組的宏塊個數(shù)進(jìn)行設(shè)置。
SliceGroupConfigFileName(參數(shù) 7):設(shè)置值為“sg0conf.cfg”/“sg2conf.cfg”/“sg6conf.cfg”, 對 FMO0,F(xiàn)MO2,F(xiàn)MO6模式下片組區(qū)域進(jìn)行設(shè)置。
第7種模式為自定義模式,筆者對H.264的前6種FMO模式及無FMO模式進(jìn)行測試,對基線檔次的FMO參數(shù)設(shè)置如表1所示,表中的“/”表示在該模式下此參數(shù)無效。
這里對前6種FMO模式和無FMO模式進(jìn)行測試和比較。由于前6種FMO模式中有的模式只能分為2個片組,所以本文將所有模式都分為2個片組。此外為使得各模式下片分配方式有較大差異,片大小設(shè)置為30。圖2a~2g為各種設(shè)置參數(shù)下的片組及片分配示例。
表1 不同F(xiàn)MO模式參數(shù)設(shè)置
測試所用的計算機(jī)配置為:AMD Turion 64×2 Mobile Technology TL-602.00 GHz,1.87 Gbyte;采用 H.264官方測試平臺JM86;基本參數(shù)設(shè)置為基線檔次,編碼100幀,IPPPP 格式,幀率為 30 f/s(幀/秒),CAVLC 熵編碼方式,RTP輸出格式,量化步長為28,率失真(rd-optimized mode)設(shè)置為 1。
采用 news,foreman,silent和 carphone 4 種不同特點的QCIF格式的標(biāo)準(zhǔn)視頻測試序列。
圖3a~3e分別為對100幀4種不同特點、IPPPP格式的視頻序列進(jìn)行測試后,得到P幀的運(yùn)動估計時間、編碼時間、編碼輸出比特率、解碼圖像的亮度峰值信噪比(PSNRY)、解碼時間的測試結(jié)果。
通過對測試結(jié)果的分析,可得到如下結(jié)論:
1)運(yùn)動估計時間:運(yùn)動估計時間不會因為FMO模式的不同而有較大的變化。因為對P幀的每個宏塊做運(yùn)動估計是通過重構(gòu)幀來進(jìn)行的,與P幀中宏塊本身的排列順序無關(guān)。
2)編碼時間:FMO1模式的編碼時間最少,F(xiàn)MO0模式次之,其他模式編碼時間相差不大。這是因為在I幀中,對某一個片中的宏塊作幀內(nèi)預(yù)測時,F(xiàn)MO1沒有可用預(yù)測的相鄰塊,因此不作幀內(nèi)預(yù)測。FMO0模式只使用上側(cè)的宏塊進(jìn)行預(yù)測,而其他模式下可用于預(yù)測的相鄰塊較多,預(yù)測的范圍越大,預(yù)測時間越多。
3)編碼輸出比特率:FMO1模式的輸出比特率最高,原因是該模式不作幀內(nèi)預(yù)測,直接進(jìn)行幀內(nèi)編碼。FMO0模式只使用上側(cè)相鄰塊進(jìn)行預(yù)測,預(yù)測精度不高,殘差值較大,輸出碼流較大。其他模式下片內(nèi)相鄰宏塊較多,預(yù)測較準(zhǔn)確,殘差值較小,輸出比特率也相對較小。
4)PSNRY:不同F(xiàn)MO模式下解碼圖像的PSNRY變化不大。圖像的重構(gòu)質(zhì)量主要取決于量化精度,量化精度一樣,則重構(gòu)質(zhì)量幾乎相同。
目前,我國大部分中小型企業(yè)都以成本精細(xì)化管理來提高自身的綜合發(fā)展實力。醫(yī)院實行成本精細(xì)化管理不僅可以提高醫(yī)院的綜合實力,還能更好地處理與患者之間微妙的關(guān)系。
5)解碼時間:在不同F(xiàn)MO模式下解碼時間變化不大。FMO只是對宏塊順序進(jìn)行重排,解碼端只需對順序進(jìn)行恢復(fù),因此沒有增加解碼端的復(fù)雜度。
模擬信道丟包程序Mobile IP有3類錯誤模式,即18681.3、18681.4和wcdma。經(jīng)過18681.3丟包后的碼流丟失率約為30%~40%,18681.4約為10%~20%,而wcdma有多個文件分別模擬不同信道的特點,這里選取的是wcdma_64kb_3kph_5e-04.bin文件,這種錯誤模式下I幀不作丟失,碼流的丟失率大約在5%以下。對不同F(xiàn)MO模式編碼后的碼流在不同錯誤模式下進(jìn)行丟包后解碼,得到其解碼幀數(shù)如圖4a~4c所示。
由圖4a~4c可看出,丟失率越小,解碼成功的機(jī)會越大。但在wcdma文件下,即使I幀不丟失,碼流仍然可能不解碼。這是因為碼流中的一些頭信息丟失,導(dǎo)致不能正常解碼。
筆者將同一模式下的解碼成功次數(shù)進(jìn)行了統(tǒng)計,數(shù)據(jù)比較如圖5所示。FMO0與FMO1具有較好的抗誤碼能力,即使在丟包率較高的情況下也可能正確解碼。無FMO與FMO4模式的抗誤碼性能也不錯,在保證I幀正確接收的情況下也能正確解碼。FMO5模式比剩余其他模式的抗誤碼性能要好,最差的是FMO3。
宏塊分配映射方式不同,片與片之間的相關(guān)性不同,丟失塊與其相鄰塊所屬的片組不同,這些都會導(dǎo)致解碼時對差錯處理的能力不同。例如在解碼當(dāng)前宏塊時找不到運(yùn)動矢量時,可選擇相鄰宏塊中的運(yùn)動矢量,如果相鄰塊全部丟失,則不做解碼。在FMO0與FMO1模式下,丟失塊的相鄰塊更可能正確接收,因而可以很好地處理誤碼的情況。無FMO與FMO4的宏塊映射方式類似,因此抗誤碼性能相同。其他模式下相鄰塊丟失的可能性更大,處理差錯的性能下降,因此抗誤碼能力較弱。
通過對不同F(xiàn)MO模式下的編解碼效率及抗誤碼性能進(jìn)行分析,可確定各種FMO模式的適用范圍及應(yīng)用場合。
FMO0與FMO1模式下編碼后碼流總比特率較高,需更大帶寬,但其編碼時間短,抗誤碼能力相對較強(qiáng)。因此,在帶寬允許的情況下可選擇這兩種模式用于實時視頻通信。此外,兩種模式片與片之間的宏塊具有更好的相關(guān)性,可提高錯誤隱藏性能,恢復(fù)出更好的視頻質(zhì)量。因此,這兩種模式可應(yīng)用于視頻通信和高清廣播電視中。
FMO2與FMO3兩種模式下編碼后碼流的抗誤碼能力下降,比特率略低于無FMO模式。但是從這兩種模式下片組的映射過程可知,可以通過對圖像內(nèi)容劃分后進(jìn)行片組映射,進(jìn)一步提高圖像壓縮效率,從而降低總比特率。此外,通過對重要內(nèi)容進(jìn)行保護(hù)后,也可提高其碼流的容錯能力。因此這兩種模式可以應(yīng)用于帶寬較低,實時性要求較低的流媒體服務(wù)中。
FMO4與FMO5兩種模式下編碼后的碼流無論是在抗誤碼能力還是編碼時間與比特率上均劣于無FMO模式下的碼流,并且片組分配映射方式不夠靈活,因此,筆者認(rèn)為,F(xiàn)MO4與FMO5并沒有更多的實際應(yīng)用價值。
合理利用H.264中的FMO抗誤碼技術(shù)可以有效提高其碼流的容錯能力。筆者對其編解碼效率、抗誤碼能力進(jìn)行了測試,通過對測試結(jié)果的比較可見,片內(nèi)宏塊的相關(guān)性導(dǎo)致了不同F(xiàn)MO模式預(yù)測范圍的變化、預(yù)測殘差值的變化,因此編碼時間和輸出比特率也不同。片與片之間的相關(guān)性不同也導(dǎo)致了抗誤碼能力的不同。通過分析,總結(jié)了各FMO模式下的性能特點及適用范圍。
[1]WIEGAND T,SULIVAN G J,BJONTEGAARD G,et al.Overview of the H.264/AVC video coding standard[J].IEEE Trans.Circuits Systems for Video Technology,2003,13(7):560-576.
[2]謝治平,鄭更生,賀貴明.一種基于FMO的H.264容錯編碼[J].計算機(jī)工程與應(yīng)用,2006,42(31):200-202.
[3]萬里晴,李學(xué)明.H.264的差錯控制與錯誤隱藏技術(shù)研究[J].計算機(jī)工程與應(yīng)用,2007,43(16):53-57.
[4]HANNUKSELA M M,WANG Y K,GABBOUJ M.Isolated regions in video coding[J].IEEE Trans.Multimedia, 2004,6(2):259-267.
[5]IM S K,PEARMAIN A J.Unequal error protection with the H.264 flexible macroblock ordering[C]//Proc.SPIE VCIP 2005.Beijing:[s.n.],2005:1033-1040.
[6]毛樸澄,何小海,滕奇志.基于H.264的一種新型自適應(yīng)FMO選擇策略[J].電視技術(shù),2009,33(12):14-17.
[7]王俊生.視頻編碼新標(biāo)準(zhǔn)H.264中抗誤碼技術(shù)的研究[J].中國有線電視,2004,19(20):15-18.
[8]楊華,楊松岸,余松煌.H.264的幾種抗誤碼方法的分析與比較[J].通信技術(shù),2003(10):1-3.