質(zhì)量感知視頻優(yōu)化中的宏塊級自適應量化的制作方法
【專利摘要】一種優(yōu)化包括一個或多個視頻幀的編碼視頻流的方法,每個視頻幀包括多個宏塊,每個宏塊包括多個像素。所述方法包括接收編碼宏塊、對所述編碼宏塊解碼以及提取第一量化參數(shù)。所述第一量化參數(shù)對應于原始用于壓縮所述編碼宏塊的量化設定。該方法還包括至少部分基于所述第一量化參數(shù)計算第二量化參數(shù)、基于所述第二量化參數(shù)對解碼的宏塊重編碼以及提供重編碼的宏塊。
【專利說明】質(zhì)量感知視頻優(yōu)化中的宏塊級自適應量化
[0001]相關(guān)發(fā)明的交叉引用
本申請要求于2011年6月10日遞交的、名稱為“Application of AdaptiveQuantization in Quality-Aware Video Optimization” 的美國臨時專利申請 N0.61/495,951的優(yōu)先權(quán)及權(quán)益,通過引用將該申請的全部內(nèi)容結(jié)合于此。
【背景技術(shù)】
[0002]暈化對照知覺質(zhì)暈
在視頻處理中,量化是有損的壓縮技術(shù),其通過將一個范圍內(nèi)的值壓縮至單個量子值而實現(xiàn)。當視頻幀在任何系統(tǒng)中被量化時,信息被丟失。例如,典型的視頻編碼器(例如MPEG-2、MPEG-4、H.264,VC-1等)可通過丟棄信息來壓縮視頻流,該信息被預期是在知覺上最不重要的-即在沒有其的情況下解碼(解壓縮)的視頻仍可接近地相似于原始視頻的信息。由量化產(chǎn)生的在原始視頻與解壓縮視頻之間的差別有時被稱為“量化噪聲”。在編碼期間所丟棄的信息的量取決于視頻流是如何被量化的。每個視頻壓縮格式定義了量化設定的離散集合,并且每種量化設定具有抽象的標識符,其被表示為量化參數(shù)(QP)。QP可任意地被定義,例如被定義為索引量化設定陣列的整數(shù),使得由更小的QP值X引入的量化噪聲小于由更大的QP值X+1引入的量化噪聲。對于每個視頻編碼解碼器,由給定QP值索引的量化設定可不同。
[0003]如果在量化期間丟棄了過多信息,則當視頻流在重放期間被解壓縮時其可能出現(xiàn)失真。這捕捉了量化與知覺質(zhì)量之間的關(guān)系。因此,由于QP指示在對視頻流編碼時多少信息被丟棄,QP可被用作知覺質(zhì)量的指示器。特別地,當QP值較小時,更多信息被保留。然而,隨QP值增加,由于信息中的一些被集合起來使得比特率下降,所以更多信息被丟棄,這導致了 一些質(zhì)量損失以及一些失真增加。
[0004]暈化對照比特率
在視頻處理中,比特率指每單位重放時間被用于在編碼(數(shù)據(jù)壓縮)之后重現(xiàn)連續(xù)視頻的比特的數(shù)量。視頻流的不同分段可能自然地需要不同數(shù)量的比特以被重現(xiàn),即使它們由相同數(shù)量的像素組成并且以相同的QP被編碼。然而,假定所有其他編碼參數(shù)維持不變并且假定更高的QP值表示更粗糙的量化(更多信息丟失),以更高的QP值X+1進行量化的視頻流的給定分段將永遠不會比以更小的QP值X進行量化的同一分段需要更多的比特。在實踐中,這意味著在QP增加時平均比特率需求減小。圖4示出編碼視頻流的比特率如何隨QP增加而減小。圖4中的比特率數(shù)字和QP值僅為示例。在實踐中,所述數(shù)字和所述值可以是不同的并且對于不同的視頻序列,QP值與比特率之間的關(guān)聯(lián)可以變化。
[0005]QP的值可貫穿整個視頻流被視頻編碼器動態(tài)地改變。例如,可為視頻流內(nèi)的每個幀分配其自己的QP值,并且該值將被用于量化該幀內(nèi)的所有像素。相比于以更低的QP值量化的類似的幀,被分配更高QP值的幀將因此經(jīng)歷更粗糙的量化并且產(chǎn)生更少的編碼比特。在幀一級改變QP值被一些視頻編碼器使用,例如用于將編碼流的平均比特率維持在相對恒定的水平-在比特率開始超出預定義水平時,后續(xù)的(一個或多個)幀的(一個或多個)QP值可被增加,并且反之亦然,當比特率下降到該預定義水平以下時,后續(xù)的(一個或多個)幀的(一個或多個)QP值可被減小。
[0006]然而,幀一級的QP修正并沒有將這一事實考慮在內(nèi):即包括在給定幀中的視覺信息很少跨這個幀相等地分布。更典型地,視頻幀將有一些具有相對恒定的顏色和亮度的“平坦”區(qū)域(例如天空、草地、水、墻),而其他區(qū)域可能具有更多的細節(jié)(例如人臉、文本或以突變的顏色和/或亮度變化表征的任何其他對象)。由不同水平的細節(jié)或像素方差表征的區(qū)域在可壓縮性方面也可能明顯不同,可壓縮性也就是它們可被壓縮到何種程度而不會有知覺質(zhì)量的明顯降低。
【專利附圖】
【附圖說明】
[0007]圖1示意了示例性系統(tǒng)的框圖。
[0008]圖2是示意了圖1的示例性系統(tǒng)中的示例性宏塊級質(zhì)量感知視頻優(yōu)化器的實施例的框圖。
[0009]圖3是示意了圖2的實施例中的示例性過程流的功能圖。
[0010]圖4示意了對于各種視頻流而言比特率與QP之間的示例性關(guān)聯(lián)。
[0011]圖5是表示宏塊級質(zhì)量感知視頻優(yōu)化的示例性方法的流程圖。
【具體實施方式】
[0012]現(xiàn)將對示例性實施例進行詳細參考,示例性實施例的示例在附圖中被示意。在任何可能的地方,將貫穿附圖使用相同的參考標號來表示相同或相似的部分。
[0013]本文所公開的示例性實施例針對用于宏塊級質(zhì)量感知視頻優(yōu)化的方法和系統(tǒng)。宏塊級質(zhì)量感知視頻優(yōu)化是在宏塊級修正編碼視頻流使得編碼視頻流的字節(jié)大小(比特率)被盡可能多地縮減而同時將知覺質(zhì)量降低限定到可控水平的技術(shù)。
[0014]宏塊級質(zhì)量感知視頻優(yōu)化的構(gòu)架可調(diào)節(jié)圖像量化,通過經(jīng)驗測試,其允許對字節(jié)縮減內(nèi)容中的質(zhì)量降低進行精細的控制。通過進一步的經(jīng)驗測試,也可能將量化調(diào)節(jié)優(yōu)化應用到代碼轉(zhuǎn)換場景中,在所述場景中輸入和輸出壓縮格式是不同的。
[0015]如今,高級的視頻壓縮標準有利地允許視頻編碼器不僅為每個幀分配不同的QP值,還為幀中的每個宏塊分配不同的QP值。宏塊是幀內(nèi)的像素塊,例如16*16像素的塊。視頻編碼器和解碼器可將一個幀劃分成多個相鄰的、非重疊的宏塊,并且進而一次一個塊地處理(編碼或解碼)該幀。對塊編碼例如包括基于在同一幀內(nèi)(在內(nèi)部預測模式下)或在(一個或多個)先前/未來的幀內(nèi)(在交互預測模式下)的相似的像素數(shù)據(jù)“預測”該宏塊、獲得預測像素數(shù)據(jù)與實際像素數(shù)據(jù)之間的差別、例如使用離散余弦變換(DCT)將該差別轉(zhuǎn)換到頻域中、使用固定的量化矩陣和可調(diào)節(jié)的QP值量化所轉(zhuǎn)換的數(shù)據(jù)、對所量化的數(shù)據(jù)進行熵編碼等。編碼數(shù)據(jù)進而與被用于對其編碼的編碼參數(shù)一起被存儲或傳輸。
[0016]編碼參數(shù)例如包括被用于量化宏塊的QP值、指示交互預測中的(一個或多個)預測塊的位置的一個或多個運動矢量以及視頻編碼器可能隨后為可靠地對該宏塊的編碼數(shù)據(jù)解碼所需要的任何附加信息。
[0017]視頻解碼器可使用編碼參數(shù)對包含在宏塊中的編碼數(shù)據(jù)解碼。對宏塊解碼例如包括執(zhí)行熵解碼、使用相同的固定量化矩陣和相同的可調(diào)節(jié)QP值去量化熵解碼的數(shù)據(jù)、例如使用逆離散余弦變換(IDCT)將去量化的數(shù)據(jù)轉(zhuǎn)換回空間域中、獲得預測數(shù)據(jù)并且將其加回以及在給定壓縮標準下所需要的或可選的任何附加步驟。
[0018]圖1示意了示例性系統(tǒng)100的框圖。示例性系統(tǒng)100可以是通過本地連接或諸如無線網(wǎng)絡、因特網(wǎng)、廣播網(wǎng)絡等的網(wǎng)絡提供視頻內(nèi)容的任何類型的系統(tǒng)。除其他以外,示例性系統(tǒng)100可包括用戶裝置102、網(wǎng)關(guān)104、一個或多個網(wǎng)絡106和110、視頻優(yōu)化器108以及一個或多個媒體服務器112-114。
[0019]用戶裝置102可以是硬件裝置,諸如計算機、PDA、手機、膝上型電腦、桌上型電腦、VCR、激光影碟機、DVD播放器、藍光碟播放器、包括廣播調(diào)諧器的電視機或能夠訪問數(shù)據(jù)網(wǎng)絡和/或能夠播放視頻的任何電子裝置。用戶裝置102可包括允許用戶裝置102與例如網(wǎng)絡106的數(shù)據(jù)網(wǎng)絡通信并且從其接收視頻內(nèi)容的軟件應用。例如,用戶裝置102可向媒體服務器發(fā)送請求數(shù)據(jù)以下載特定的視頻流送文件,而媒體服務器可將該視頻流送文件傳輸至用戶裝置102。在一些實施例中,視頻流送文件可經(jīng)由視頻優(yōu)化器108被發(fā)送。用戶裝置102可提供顯示器以及一個或多個軟件應用,諸如媒體播放器,用于向用戶裝置的用戶顯示視頻流。
[0020]在一些實施例中,用戶裝置102也可以是或包括用于存儲或歸檔視頻內(nèi)容的存儲裝置。例如,存儲裝置可以被提供為視頻CD、DVD、藍光碟、硬盤、磁帶、閃存存儲卡/驅(qū)動器、易失性或非易失性存儲器、全息數(shù)據(jù)存儲器或任何其他存儲介質(zhì)。
[0021]網(wǎng)關(guān)104是充當訪問的入口或途徑并且可以或可以不將在一種類型的網(wǎng)絡中提供的格式化數(shù)據(jù)轉(zhuǎn)換至對于另一類型的網(wǎng)絡所需要的特定格式的一個或多個裝置。網(wǎng)關(guān)104例如可以是服務器、路由器、防火墻服務器、主機或視頻優(yōu)化器。例如,網(wǎng)關(guān)104可具有將從用戶裝置102接收的信號轉(zhuǎn)換成網(wǎng)絡106或100可理解的信號的能力,并且反之亦然。然而,這種轉(zhuǎn)換能力在一些數(shù)據(jù)網(wǎng)絡中并不需要,例如第四代移動通信技術(shù)(4G)或全球微波互聯(lián)接入(WiMax)。網(wǎng)關(guān)104可能能夠獨立地或以任何組合地處理音頻、視頻和T.120傳輸,并且能夠進行全雙工媒體翻譯。而且,網(wǎng)關(guān)104可包括視頻優(yōu)化器108以進行質(zhì)量感知視頻優(yōu)化。
[0022]網(wǎng)絡106和110可包括廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)、或適合于諸如因特網(wǎng)通信的分組型通信的無線網(wǎng)絡、或適合于分發(fā)視頻內(nèi)容的廣播網(wǎng)絡的任何組合。
[0023]視頻優(yōu)化器108可以被實現(xiàn)為提供質(zhì)量感知視頻優(yōu)化的軟件程序和/或硬件裝置。視頻優(yōu)化器108是提供用戶裝置102與媒體服務器112-114之間的通信的服務器。視頻優(yōu)化器108可對先前編碼的視頻幀序列執(zhí)行單程的、動態(tài)及時的質(zhì)量感知優(yōu)化,如在下面所描述的那樣。由于所述視頻優(yōu)化方法僅需要在視頻幀序列上的一次通過,視頻優(yōu)化器108很好地適合于在各種各樣的環(huán)境中操作。例如,視頻優(yōu)化器108可以是媒體服務器112-114中的任何一個的部分,或是在用戶裝置102與媒體服務器112-114之間的任何網(wǎng)絡裝置。以這種方式,視頻優(yōu)化器108在實時視頻輸送通過低容量的網(wǎng)絡段之前對它們進行優(yōu)化。視頻優(yōu)化器108也可被安裝在存儲陣列的前面以在監(jiān)視視頻被歸檔之前對它們進行優(yōu)化,從而節(jié)省存儲空間。
[0024]視頻優(yōu)化器108可具有一個或多個處理器以及用于存儲程序指令的至少一個存儲器。所述(一個或多個)處理器可以是能夠執(zhí)行特定指令集合的單個或多個微處理器、現(xiàn)場可編程門陣列(FPGA)或數(shù)字信號處理器(DSP)。計算機可讀的指令可被存儲在有形的非易失性計算機可讀介質(zhì)上,諸如軟盤、硬盤、⑶-ROM(光盤只讀存儲器)以及MO (磁光盤)、DVD-R0M (數(shù)字多功能盤只讀存儲器)、DVD-RAM (數(shù)字多功能盤隨機存取存儲器)或半導體存儲器。備選地,所述方法可用硬件組件或硬件與軟件的組合來實現(xiàn),舉例來說諸如為ASIC、專用計算機或通用計算機。
[0025]媒體服務器112-114可以是計算機服務器,其從用戶裝置102接收針對視頻內(nèi)容的請求、處理該請求并且在一些實施例中通過視頻優(yōu)化器108提供視頻內(nèi)容給用戶裝置102。例如,媒體服務器112-114可以是網(wǎng)頁服務器、企業(yè)服務器或任何其他類型的計算機服務器。媒體服務器112-114可以是被編程用于從用戶裝置102接收請求(例如HTTP、RSTP或可發(fā)起視頻會話的其他協(xié)議)以及向用戶裝置102提供視頻流的計算機。同樣地,媒體服務器可以是PDA、手機、膝上型電腦、桌上型電腦或被配置為在一些實施例中通過一個或多個網(wǎng)絡106和110向用戶裝置102傳遞視頻內(nèi)容的任何裝置。另外,媒體服務器112-114可以是用于在一些實施例中通過視頻優(yōu)化器108向用戶裝置102分發(fā)視頻內(nèi)容的廣播設施,例如免費接收、電纜、衛(wèi)星及其他廣播設施。而且,媒體服務器112-114可以是視頻源,諸如被配置為捕獲視頻并且在一些實施例中通過視頻優(yōu)化器108向用戶裝置102傳遞所捕獲的視頻的監(jiān)視裝置。同樣地,作為圖1所示的系統(tǒng)100的配置的備選,媒體服務器112-114中的任何一個可包括視頻優(yōu)化器108以進行質(zhì)量感知視頻優(yōu)化。
[0026]圖2是示意了圖1的示例性系統(tǒng)中的示例性宏塊級質(zhì)量感知視頻優(yōu)化器108的實施例的框圖。為簡化起見,圖2僅示意了視頻優(yōu)化器108、作為輸入的編碼視頻流202以及作為輸出的重編碼視頻流204。除其他以外,視頻優(yōu)化器108可包括解碼器210、QP調(diào)節(jié)模塊220和編碼器230。所示意的視頻優(yōu)化器108的配置僅為示例性的,并且可被修改以提供離散的元件或?qū)⒍鄠€元件組合成單--個,以及可以被提供為硬件與軟件組件的任何組
口 ο
[0027]解碼器210可以是被配置為對輸入的編碼`視頻流210解碼的軟件程序和/或硬件裝置。編碼視頻流202包含一個或多個幀,其中每個幀由一個或多個宏塊組成。例如,具有1920*1080像素的分辨率的高清晰度幀可被劃分為120*68=8160個宏塊,每個具有16*16像素,其中最后一行宏塊部分地“越界”。一秒的視頻流可例如包含30個這樣的幀,即244,800個宏塊。
[0028]在一實施例中,解碼器210對輸入的編碼視頻流202 —次一個宏塊地進行解碼。在提取嵌入在編碼宏塊內(nèi)的輸入信息(這個輸入信息將在下面進一步描述)的情況下,解碼器210逐個宏塊地對編碼視頻流202解碼并且將解碼的宏塊轉(zhuǎn)送到編碼器230。在一些實施例中,一些解碼的宏塊可臨時地被存儲在數(shù)據(jù)存儲器(未示出)中,諸如數(shù)據(jù)庫或高速緩沖存儲器。該數(shù)據(jù)存儲器可存儲可能對于解碼未來的編碼宏塊所需要的、解碼的宏塊,例如用于獲得內(nèi)部預測或交互預測信息。解碼器210也可向QP調(diào)節(jié)模塊220提供輸入信息(包括從其獲得的任何信息)。
[0029]QP調(diào)節(jié)模塊220可以是具有調(diào)節(jié)由視頻優(yōu)化器接收的輸入QP值以及輸出經(jīng)調(diào)節(jié)的QP值的能力的軟件程序和/或硬件裝置??筛鶕?jù)從解碼器210接收的輸入信息、從編碼器230接收的輸出信息(將在下面進一步描述)以及在視頻優(yōu)化過程期間生成的測量信息(將在下面進一步描述)來調(diào)節(jié)輸入QP值。在調(diào)節(jié)QP值之后,QP調(diào)節(jié)模塊220向編碼器230提供輸出QP值(即經(jīng)調(diào)節(jié)的QP值)。[0030]編碼器230可以是被配置為在從解碼器210接收解碼的視頻流以及從QP調(diào)節(jié)模塊220接收輸出QP值之后逐個宏塊地對視頻流重編碼的軟件程序和/或硬件裝置。在對視頻流的宏塊重編碼之后,編碼器230輸出重編碼的宏塊作為重編碼視頻流204的部分。編碼器230還向QP調(diào)節(jié)模塊220提供輸出信息。
[0031]圖3是示意了圖2的實施例中的示例性過程流的功能圖。可改變該示例性過程流以刪除步驟、改變步驟的順序或包括附加的步驟,而不背離示例性實施例。
[0032]在從數(shù)據(jù)網(wǎng)絡接收編碼視頻流202后之后,視頻優(yōu)化器108可將編碼視頻流202導向解碼器210。解碼器210 —次一個宏塊地對編碼視頻流解碼并且提取嵌入在每個編碼宏塊內(nèi)的輸入信息。輸入信息可包括輸入編碼參數(shù)302和視覺特征304。一被提取,該輸入信息就被傳遞至QP調(diào)節(jié)模塊220。
[0033]輸入編碼參數(shù)302可包括在編碼宏塊中所包含的任何壓縮相關(guān)的信息,諸如在宏塊首次被編碼時被用于對其進行量化的原始QP值("QPlnput")或在使用交互預測對宏塊編碼的情況下指示一個或多個預測塊的相對位置的一個或多個運動矢量。輸入編碼參數(shù)302也可包括壓縮相關(guān)的統(tǒng)計信息,諸如被用于對編碼宏塊編碼的比特的數(shù)量。
[0034]在一些實施例中,解碼器210在對編碼宏塊解碼的同時還提取視覺特征304,所述視覺特征304進而被傳遞至QP調(diào)節(jié)模塊220。視覺特征304包括關(guān)于宏塊的實際(解碼)的像素數(shù)據(jù)的任何信息,諸如宏塊的像素的方差或平均亮度。
[0035]除了接收輸入信息之外,QP調(diào)節(jié)模塊220還可接收輸出信息。輸出信息可包括從重編碼視頻流204中提取的輸出編碼參數(shù)310。在一些實施例中,編碼器230向QP調(diào)節(jié)模塊220傳遞從組成重編碼視頻流204的重編碼宏塊中提取的輸出編碼參數(shù)310。輸出編碼參數(shù)310包括由編碼器230并入重編碼宏塊中的任何壓縮相關(guān)的信息,諸如QPtxitput值、運動矢量、預測模式等等。(代替從編碼器230接收先前計算的QPtxitput值,在一些實施例中,QP調(diào)節(jié)模塊220可例如在內(nèi)部緩沖器中臨時存儲這些值。)輸出編碼參數(shù)310也可包括與重編碼宏塊的壓縮相關(guān)的統(tǒng)計信息,諸如重編碼宏塊所占據(jù)的比特的數(shù)量。
[0036]包括在輸入編碼參數(shù)302中的參數(shù)的類型可與或可不與包括在輸出編碼參數(shù)310中的參數(shù)的類型匹配,這取決于在編碼視頻流202中使用哪些類型的參數(shù)以及在重編碼視頻流204中使用哪些類型的參數(shù),以及取決于QP調(diào)節(jié)模塊220要求哪種信息。例如,可能已使用不支持宏塊級QP調(diào)節(jié)的壓縮標準對編碼視頻流202編碼,而同時正被編碼器230用于重編碼視頻流的標準支持宏塊級QP調(diào)節(jié)。在這個示例中,輸入編碼參數(shù)302可僅包括幀級的QP值(對于每個解碼的宏塊被重復,如在下面所描述的那樣),而如果為QP調(diào)節(jié)模塊220所要求,則輸出編碼參數(shù)310可包括所有單個的宏塊級QP值。
[0037]在一些實施例中,編碼視頻流202不包括用于其宏塊的單個QP值,而僅包括幀級QP值,其中每個幀被分配單個QP值,并且該值被用于量化該幀內(nèi)的所有宏塊。在這種情況下,為促進視頻優(yōu)化器108的逐個宏塊的操作,解碼器210仍可通過為屬于該幀的每個宏塊傳遞相同的幀級QP值而為每個解碼的宏塊提供QPlnput值作為輸入編碼參數(shù)302的部分。
[0038]在一些實施例中,QP調(diào)節(jié)模塊220也可對從解碼器210接收的輸入編碼參數(shù)302進行預處理。例如,QP調(diào)節(jié)模塊220可跨屬于某個幀的所有先前解碼的宏塊執(zhí)行統(tǒng)計分析并且獲得QPlnput的平均值或平均運動矢量長度。類似地,QP調(diào)節(jié)模塊220可例如跨屬于某個幀的所有先前解碼的宏塊計算每一編碼宏塊的比特的平均數(shù)量。[0039]在一些實施例中,QP調(diào)節(jié)模塊220也能對從編碼器230接收的輸出編碼參數(shù)310進行預處理。例如,QP調(diào)節(jié)模塊220可跨屬于某個幀的所有先前重編碼的宏塊執(zhí)行統(tǒng)計分析并且獲得每一宏塊的比特的平均數(shù)量。類似地,QP調(diào)節(jié)模塊220可跨屬于某個幀的所有先前重編碼的宏塊計算QPtxitput值(或者從內(nèi)部緩沖器獲得或者從編碼器230獲得)的平均值。
[0040]在一些實施例中,QP調(diào)節(jié)模塊220也可對從解碼器210接收的視覺特征進行預處理。例如,QP調(diào)節(jié)模塊可執(zhí)行統(tǒng)計分析并且獲得屬于某個幀的所有先前解碼的宏塊的像素方差和/或亮度的平均值。
[0041]獲得統(tǒng)計信息可能需要訪問先前接收(“歷史”)的信息。為能夠訪問歷史信息,QP調(diào)節(jié)模塊220可包括數(shù)據(jù)庫(未示出)以臨時存儲預定義數(shù)量的最近接收的參數(shù)。
[0042]在一些實施例中,輸入編碼參數(shù)302、輸出編碼參數(shù)310和/或視覺特征304的預處理可在QP調(diào)節(jié)模塊220外部發(fā)生。例如,輸入編碼參數(shù)302和/或視覺特征304的一些或全部預處理可由解碼器210執(zhí)行并且被傳遞到QP調(diào)節(jié)模塊220。作為另一實例,輸出編碼參數(shù)302的一些或全部預處理可由編碼器230執(zhí)行并且被傳遞到QP調(diào)節(jié)模塊220。
[0043]質(zhì)暈感知視頻優(yōu)化:QP調(diào)節(jié)
QP調(diào)節(jié)模塊220可計算待被編碼器230用于量化解碼的視頻流206的宏塊的宏塊級?Vtput值。如在上面所討論的那樣,QPtotput值可基于下列數(shù)據(jù)的任何組合來計算:輸入編碼參數(shù)302、視覺特征304和輸出編碼參數(shù)310。
[0044]在一些實施例中,QP調(diào)節(jié)模塊220基于給定宏塊的QPlnput得出該宏塊的QP0utput,該宏塊的QPlnput可在輸入編碼`參數(shù)302中被接收。由于可在用于量化宏塊的QP值與該宏塊的知覺質(zhì)量之間以及還可在QP值與比特率(用來對該宏塊進行編碼的字節(jié)數(shù))之間建立關(guān)系,QP調(diào)節(jié)模塊220可使用QPlnput與QP0utput之間的差別來同時控制重編碼視頻流204中的宏塊的比特率縮減和知覺質(zhì)量降低。
[0045]參數(shù)Λ QP可例如被定義為:
A QP-QPoutpUt_QPinput
QP調(diào)節(jié)模塊220可選擇△ QP值以得出可滿足字節(jié)大小縮減的要求并且保持原始知覺質(zhì)量至盡可能程度的9Ρ__。AQP值越小,QPaitput值越小,并且因此在編碼期間將丟棄更少的信息-知覺質(zhì)量更少地降低。相反,Λ QP值越大,QPtxitput值越大,并且因此在編碼期間將丟棄更多的信息-知覺質(zhì)量更多地降低。
[0046]可采用圖4所示的QP對照比特率的曲線的兩個特性來實現(xiàn)輸入視頻流的優(yōu)化。將采用的第一特性是這一事實:即小的AQP在QPlnput高時對比特率有很小的影響。這在最右邊示出,圖3中的曲線的平坦部分??紤]到這種特性,當給定宏塊的QPlnput高時,QP調(diào)節(jié)模塊220可決定將Λ QP維持在O處(也就是說,保持QPtxitput=QPlnput),這是因為增大的Λ QP將會對比特率有很小的影響,但可能會對宏塊的感知質(zhì)量有不利的影響。
[0047]有時,為O的AQP仍可導致降低的知覺質(zhì)量。在一些實施例中,編碼器230可使用與編碼視頻流202采用其原始被編碼的壓縮標準完全不同的壓縮標準對解碼的視頻流206重編碼。在其他實施例中,編碼器230可使用原始使用的相同的壓縮標準,但它可能使用完全不同的編碼特征或編碼決策集合。例如,編碼視頻流202可能已經(jīng)以半像素的精度被編碼以進行運動補償,而編碼器230可選擇使用1/4像素("Qpel")的精度對該流重編碼。在一些實施例中,編碼器230也可改變流的幀速率。原始編碼與重編碼技術(shù)之間的任何這樣的差異的結(jié)果可能是,對于給定宏塊而言,與原始編碼器所量化的像素數(shù)據(jù)不同的像素數(shù)據(jù)正被編碼器230量化。因此,以相同的QP值量化宏塊將不一定導致相同的比特率和知覺質(zhì)量降低。因而,為減小不想要的知覺質(zhì)量降低的可能性,QP調(diào)節(jié)模塊有時可選擇負值Δ QP,即選擇低于QPlnput的值的QPtxitput值。
[0048]將采用的第二特性是:小的Λ QP在QPlnput低時對比特率有大的影響。這在最左邊示出,圖4中曲線的陡峭部分。當QPlnput低時,即使小的正值Λ QP也將導致大的字節(jié)縮減。因而,在一些實施例中,QP調(diào)節(jié)模塊220將為較低值的QPlnput選擇較高的AQP(即輸出較高的QPcxltput值)。為了確定特定宏塊的QPlnput是低還是高,QP調(diào)節(jié)模塊220可將QPlnput與一個或多個預定義的閾值比較。備選地,QP調(diào)節(jié)模塊220可將QPlnput與例如跨屬于某個幀的所有宏塊的、QPlnput的平均值比較。
[0049]在一些實施例中,在計算宏塊的QPtxitput時,QP調(diào)節(jié)模塊220考慮多少比特被用于對編碼視頻流(202)中的宏塊編碼。例如,對于已經(jīng)以非常少的比特被編碼的宏塊,可選擇AQP ^ O以避免知覺質(zhì)量的進一步降低。
[0050]在一些實施例中,編碼比特的數(shù)量結(jié)合宏塊的QPlnput值一起被考慮。例如,當QP調(diào)節(jié)模塊確定宏塊以低QPlnput (其可能引起高QPtxitput)被量化,但盡管如此宏塊仍然導致小數(shù)量的編碼比特時,QP調(diào)節(jié)模塊220可“不顧”基于QPlnput的選擇并且選擇AQPS0。相反地,當QP調(diào)節(jié)模塊220確定高的QPlnput值導致不同尋常地大的數(shù)量的編碼比特時,可選擇正值的AQP。為了確定特定宏塊的比特的數(shù)量是大還是小,QP調(diào)節(jié)模塊220可例如將其與一個或多個預定義的閾值比較或與被用于對屬于先前編碼的幀中的一個或多個的宏塊編碼的比特的平均數(shù)量比較。
[0051]在一些實施例中,QP調(diào)節(jié)模塊220可將宏塊的像素方差(即宏塊的像素值間的方差)考慮在內(nèi),其可作為視覺特征304中的一個從解碼器210被接收。高的像素方差可指示該宏塊可以知覺質(zhì)量的最小降低進一步被壓縮并且反之亦然,以低像素方差壓縮宏塊更有可能降低知覺質(zhì)量。例如,當兩個宏塊的量化都被增加時,具有低像素方差的兩個宏塊之間的邊緣更有可能變得可見,這可導致以“分塊”假象形式的圖像退化。這樣,其像素方差例如低于預定義閾值或顯著低于先前編碼的宏塊的平均像素方差的宏塊能夠以低于具有高方差的宏塊的QPtxitput被量化。
[0052]在一些實施例中,QP調(diào)節(jié)模塊220將宏塊的像素的平均亮度考慮在內(nèi),其可作為視覺特征304中的一個從解碼器210被接收??稍趫D像的明亮區(qū)域更容易地感知質(zhì)量缺陷。因此,在宏塊的像素的平均亮度低時,QP調(diào)節(jié)模塊220可更激進地(aggressively)對宏塊重新量化(采用更高的QPtxitput),并且反之亦然。
[0053]在一些實施例中,QP調(diào)節(jié)模塊220將宏塊的運動矢量考慮在內(nèi),其可作為輸入編碼參數(shù)302的部分從解碼器210被接收。例如,非常短的運動矢量指示視頻流內(nèi)的低運動區(qū)域,QP調(diào)節(jié)模塊220可選擇通過例如選定Λ QP < O而小心地對其進行處理。
[0054]在計算QPtxitput時,輸出編碼參數(shù)310也可被QP調(diào)節(jié)模塊220考慮。例如,QP調(diào)節(jié)模塊220可監(jiān)控重編碼視頻流204的結(jié)果得到的比特率并且相應地調(diào)節(jié)后續(xù)的QPtxitput計算。例如,如果重編碼視頻流204的平均比特率過高(例如高于第一預定義目標比特率),則QP調(diào)節(jié)模塊220可通過選擇更高的QPtxitput值開始對后續(xù)的宏塊更激進地進行壓縮,并且反之亦然,如果重編碼視頻流204的平均比特率過低(例如低于第二預定義目標比特率),則QP調(diào)節(jié)模塊220可通過選擇更低的QPtxitput值開始對后續(xù)的宏塊不那么激進地進行壓縮。
[0055]在一些實施例中,通過分析從輸出編碼參數(shù)310獲得的信息,QP調(diào)節(jié)模塊220可提高其后續(xù)的QPftltput計算的精確性。例如,它可計算將某個QPftltput應用于具有特定數(shù)量的原始編碼比特的宏塊平均會產(chǎn)生多少比特。QP調(diào)節(jié)模塊220進而可例如針對相似的后續(xù)宏塊使用該信息來調(diào)節(jié)其QPtxitput計算。通常說來,QP調(diào)節(jié)模塊220可使用從輸出編碼參數(shù)310獲得的信息來分析過去的量化決策并且基于該分析來修正其未來的量化決策。修正未來決策的一種方式是通過調(diào)節(jié)上面提及的各個閾值。
[0056]圖5是表示宏塊級質(zhì)量感知視頻優(yōu)化的示例性方法的流程圖??筛淖兪纠缘倪^程流以刪除步驟、改變步驟的順序或包括附加的步驟而不背離示例性的實施例。
[0057]在接收502編碼宏塊之后,視頻優(yōu)化器(例如視頻優(yōu)化器108)對該編碼宏塊解碼504并且在該過程中提取輸入編碼參數(shù)(例如輸入編碼參數(shù)302)。此外,如果在步驟510處計算時考慮視覺特征,則視頻優(yōu)化器可從解碼的宏塊中提取506視覺特征(例如視覺特征304)。此外,如果在步驟510處計算QPaitput時考慮輸出編碼參數(shù),則視頻優(yōu)化器可從由視頻優(yōu)化器先前重編碼的宏塊中提取508輸出編碼參數(shù)(例如輸出編碼參數(shù)310)。
[0058]在步驟510處,視頻優(yōu)化器基于在步驟504處提取的輸入編碼參數(shù)來計算QPftjtpi^輸入編碼參數(shù)可包括QPlnput-在宏塊原始被編碼時所使用的量化參數(shù)。在一些實施例中,QPlnput對應于幀的QP,該QP已被應用于該幀的所有宏塊。視頻優(yōu)化器可例如在QPlnput低(例如低于預定義的低閾值)時增加QP0utput,而在QPlnput高(例如高于預定義的高閾值)時減小在一些情況下,例如當QP一非常高時,視頻優(yōu)化器可將QPftltput設置為等于或低于QPlnput的值。
`[0059]在一些實施例中,輸入編碼參數(shù)可包括由編碼宏塊所消耗的比特的數(shù)量。視頻優(yōu)化器可在比特的數(shù)量低(例如低于預定義的低閾值)時減小QPtxitput,而在比特的數(shù)量高(例如高于預定義的高閾值)時增加QPaltpuP在一些情況下,當比特的數(shù)量非常低時,視頻優(yōu)化器可將QPftltput設置為等于或低于QP一的值。此外,視頻優(yōu)化器可結(jié)合QP一值一起考慮比特的數(shù)量,例如在QPlnput和比特的數(shù)量兩者都低時減小QPtxitput以及在QPlnput和比特的數(shù)量兩者都高時增加QPtxitpi^
[0060]在一些實施例中,輸入編碼參數(shù)可包括編碼宏塊的像素間的方差。視頻優(yōu)化器可在該方差低(例如低于預定義的低閾值)時減小QPftltput而在該方差高(例如高于預定義的高閾值)時增加QP<_ut。在一些情況下,當該方差非常低時,視頻優(yōu)化器可將QPtxitput設置為等于或低于QPlnput的值。
[0061]在一些實施例中,輸入編碼參數(shù)可包括用于對編碼宏塊原始編碼的運動矢量。視頻優(yōu)化器可在運動矢量短(例如短于預定義的低閾值)時減小QPftltput而在運動矢量長(例如長于預定義的高閾值)時增加QPaltpuP在一些情況下,當運動矢量非常短時,視頻優(yōu)化器可將QPautput設置為等于或低于QP一的值。
[0062]在一些實施例中,在計算QPtxitput時,視頻優(yōu)化器可將在步驟508處提取的視覺特征考慮在內(nèi)。視覺特征可例如包括編碼宏塊的像素的平均亮度。視頻優(yōu)化器可在平均亮度高(例如高于預定義的低閾值)時減小QPftltput而在平均亮度低(例如低于預定義的高閾值)時增加QPtxitput。[0063]在一些實施例中,在計算QPtxitput時,視頻優(yōu)化器可將在步驟508處提取的輸出編碼參數(shù)考慮在內(nèi)。輸出編碼參數(shù)可例如包括先前重編碼的宏塊的平均比特率。視頻優(yōu)化器可在平均比特率高于預定義目標比特率時增加QPaitput而在平均比特率低于預定義目標比特率時減小QPftltputt5視頻優(yōu)化器也可使用先前重編碼的宏塊的輸出編碼參數(shù)來基于實際結(jié)果分析輸入編碼參數(shù)、視覺特征、所選擇的QPftltput以及結(jié)果得到的輸出編碼參數(shù)之間的關(guān)系。例如,視頻優(yōu)化器可分析當使用某個QPtxitput值對具有某個數(shù)量的原始編碼比特的宏塊重編碼時平均會獲得多少比特。作為該分析的結(jié)果,視頻優(yōu)化器可調(diào)節(jié)其后續(xù)的QPtxitput計算以實現(xiàn)更高的精確性。所述調(diào)節(jié)可例如通過修改上面提及的各個閾值來完成。
[0064]在計算QPtxitput之后,視頻優(yōu)化器可通過基于對應于所計算的QPtxitput的量化設定對解碼的宏塊編碼而對解碼的宏塊重編碼512。所述重編碼可優(yōu)化解壓縮的宏塊使得所壓縮的宏塊的字節(jié)大小被盡可能多地縮減,而同時將知覺質(zhì)量降低限定到可控水平。視頻優(yōu)化器可將重編碼的宏塊傳輸514至目的地。該方法進而可結(jié)束516。
[0065]本文所公開的方法可被實現(xiàn)為計算機程序產(chǎn)品,即在信息載體中有形地具體化的計算機程序,例如在機器可讀的存儲裝置中,供數(shù)據(jù)處理設備執(zhí)行或控制數(shù)據(jù)處理設備的操作,數(shù)據(jù)處理設備例如為可編程處理器、計算機或多個計算機。計算機程序能夠以任何形式的編程語言編寫,包括編譯或解釋語言,并且它能夠以任何形式被部署,包括作為獨立的程序或作為適合于供在計算環(huán)境中使用的模塊、組件、子例程或其他單元。計算機程序能夠被部署以在一個計算機上或在處于一個地點或跨多個地點分布并通過通信網(wǎng)絡互連的多個計算機上被執(zhí)行。
[0066]本文所公開的方法的部分或全部也可由專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、復雜可編程邏輯器件(CPLD)、印刷電路板(PCB)、數(shù)字信號處理器(DSP)、可編程邏輯組件與可編程互連的組合、單個中央處理單元(CPU)芯片、結(jié)合在母板上的CPU芯片、通用計算機或能夠執(zhí)行本文所公開的質(zhì)量感知視頻優(yōu)化的裝置或模塊的任何其他組合來實現(xiàn)。
[0067]在前述的說明書中,已參考具體的示例性實施例描述了本發(fā)明。然而,將顯而易見的是可做出各種修正和變化而不背離在隨后的權(quán)利要求中闡述的本發(fā)明的更寬的精神和范圍。說明書及附圖相應地應被認為是示意性的而非限定性的。根據(jù)對本說明書的考慮以及對本文所公開的本發(fā)明的實踐,其他實施例對于本領(lǐng)域的技術(shù)人員而言可能是明顯的。
【權(quán)利要求】
1.一種優(yōu)化包括一個或多個視頻幀的編碼視頻流的方法,每個視頻幀包括多個宏塊,每個宏塊包括多個像素,所述方法包括: 接收編碼宏塊; 對所述編碼宏塊解碼; 提取第一量化參數(shù),其中所述第一量化參數(shù)對應于原始用于壓縮所述編碼宏塊的量化設定; 至少部分基于所述第一量化參數(shù)計算第二量化參數(shù); 基于所述第二量化參數(shù)對解碼的宏塊重編碼;以及, 提供重編碼的宏塊。
2.根據(jù)權(quán)利要求1所述的方法,其中計算所述第二量化參數(shù)包括在所述第一量化參數(shù)高于第一閾值時將所述第二量化參數(shù)設定為等于或低于所述第一量化參數(shù),以及在所述第一量化參數(shù)低于第二閾值時將所述第二量化參數(shù)設定為高于所述第一量化參數(shù)。
3.根據(jù)權(quán)利要求2所述的方法,所述方法還包括將所述第一閾值和所述第二閾值定義為過去的輸入量化參數(shù)的函數(shù),其中所述過去的輸入量化參數(shù)對應于原始用于壓縮多個先前接收的編碼宏塊的量化設定。
4.根據(jù)權(quán)利要求 1所述的方法,其中計算所述第二量化參數(shù)部分基于由所述編碼宏塊占據(jù)的比特的數(shù)量。
5.根據(jù)權(quán)利要求1所述的方法,其中計算所述第二量化參數(shù)部分基于所述宏塊的視覺特征。
6.根據(jù)權(quán)利要求5所述的方法,其中所述宏塊的視覺特征包括或者所述編碼宏塊或者所述解碼的宏塊的多個像素的方差。
7.根據(jù)權(quán)利要求5所述的方法,其中所述宏塊的視覺特征包括或者所述編碼宏塊或者所述解碼的宏塊的多個像素的平均亮度。
8.根據(jù)權(quán)利要求1所述的方法,其中計算所述第二量化參數(shù)部分基于從編碼器接收的輸出編碼參數(shù)。
9.根據(jù)權(quán)利要求8所述的方法,其中所述輸出編碼參數(shù)包括對應于用于對先前接收的編碼宏塊重編碼的量化設定的、一個或多個過去的輸出量化參數(shù)。
10.根據(jù)權(quán)利要求8所述的方法,其中所述輸出編碼參數(shù)包括輸出比特率,其中所述輸出比特率對應于由多個先前重編碼的宏塊占據(jù)的比特的平均數(shù)量。
11.根據(jù)權(quán)利要求10所述的方法,其中計算所述第二量化參數(shù)包括如果所述輸出比特率高于第一預定義目標比特率,則增加所述第二量化參數(shù),以及如果所述輸出比特率低于第二預定義目標比特率,則減小所述第二量化參數(shù)。
12.—種非暫時性計算機可讀介質(zhì),其存儲指令,當由計算機執(zhí)行所述指令時,所述指令使所述計算機執(zhí)行一種優(yōu)化包括一個或多個視頻幀的編碼視頻流的方法,每個幀包括多個宏塊,并且每個宏塊包括多個像素,所述方法包括: 接收編碼宏塊; 對所述編碼宏塊解碼; 提取第一量化參數(shù),其中所述第一量化參數(shù)對應于原始用于壓縮所述編碼宏塊的量化設定;至少部分基于所述第一量化參數(shù)計算第二量化參數(shù); 基于所述第二量化參數(shù)對解碼的宏塊重編碼;以及, 提供重編碼的宏塊。
13.根據(jù)權(quán)利要求12所述的非暫時性計算機可讀介質(zhì),其中計算所述第二量化參數(shù)包括在所述第一量化參數(shù)高于第一閾值時將所述第二量化參數(shù)設定為等于或低于所述第一量化參數(shù),以及在所述第一量化參數(shù)低于第二閾值時將所述第二量化參數(shù)設定為高于所述第一量化參數(shù)。
14.根據(jù)權(quán)利要求13所述的非暫時性計算機可讀介質(zhì),其中所述方法還包括將所述第一閾值和所述第二閾值定義為過去的輸入量化參數(shù)的函數(shù),其中所述過去的輸入量化參數(shù)對應于原始用于壓縮多個先前接收的編碼宏塊的量化設定。
15.根據(jù)權(quán)利要求12所述的非暫時性計算機可讀介質(zhì),其中計算所述第二量化參數(shù)部分基于由所述編碼宏塊占據(jù)的比特的數(shù)量。
16.根據(jù)權(quán)利要求12所述的非暫時性計算機可讀介質(zhì),其中計算所述第二量化參數(shù)部分基于所述宏塊的視覺特征。
17.根據(jù)權(quán)利要求16所述的非暫時性計算機可讀介質(zhì),其中所述宏塊的視覺特征包括或者所述編碼宏塊或者所述解碼的宏塊的多個像素的方差。
18.根據(jù)權(quán)利要求16所述的非暫時性計算機可讀介質(zhì),其中所述宏塊的視覺特征包括或者所述編碼宏塊或者所述解碼的宏塊的多個像素的平均亮度。
19.根據(jù)權(quán)利要求12所述的非暫時性計算機可讀介質(zhì),其中計算所述第二量化參數(shù)部分基于從編碼器接收的輸出編碼參數(shù)。
20.根據(jù)權(quán)利要求19所述的非暫時性計算機可讀介質(zhì),其中所述輸出編碼參數(shù)包括對應于用于對先前接收的編碼宏塊重編碼的量化設定的、一個或多個過去的輸出量化參數(shù)。
21.根據(jù)權(quán)利要求19所述的非暫時性計算機可讀介質(zhì),其中所述輸出編碼參數(shù)包括輸出比特率,其中所述輸出比特率對應于由多個先前重編碼的宏塊占據(jù)的比特的平均數(shù)量。
22.根據(jù)權(quán)利要求21所述的非暫時性計算機可讀介質(zhì),其中計算所述第二量化參數(shù)包括如果所述輸出比特率高于第一預定義目標比特率,則增加所述第二量化參數(shù),以及如果所述輸出比特率低于第二預定義目標比特率,則減小所述第二量化參數(shù)。
23.一種用于優(yōu)化包括一個或多個視頻幀的編碼視頻流的視頻優(yōu)化器,每個視頻幀包括多個宏塊,并且每個宏塊包括多個像素,所述視頻優(yōu)化器包括: 解碼器,其被配置為接收編碼宏塊、對所述編碼宏塊解碼以及提取第一量化參數(shù),其中所述第一量化參數(shù)對應于原始用于壓縮所述編碼宏塊的量化設定; 量化參數(shù)調(diào)節(jié)模塊,其被配置為至少部分基于所述第一量化參數(shù)計算第二量化參數(shù);以及 編碼器,其被配置為基于所述第二量化參數(shù)對解碼的宏塊重編碼以及提供重編碼的宏塊。
24.根據(jù)權(quán)利要求23所述的視頻優(yōu)化器,其中計算所述第二量化參數(shù)包括在所述第一量化參數(shù)高于第一閾值時將所述第二量化參數(shù)設定為等于或低于所述第一量化參數(shù),以及在所述第一量化參數(shù)低于第二閾值時將所述第二量化參數(shù)設定為高于所述第一量化參數(shù)。
25.根據(jù)權(quán)利要求24所述的視頻優(yōu)化器,其中所述量化參數(shù)調(diào)節(jié)模塊還被配置為將所述第一閾值和所述第二閾值定義為過去的輸入量化參數(shù)的函數(shù),其中所述過去的輸入量化參數(shù)對應于原始用于壓縮多個先前接收的編碼宏塊的量化設定。
26.根據(jù)權(quán)利要求23所述的視頻優(yōu)化器,其中計算所述第二量化參數(shù)部分基于由所述編碼宏塊占據(jù)的比特的數(shù)量。
27.根據(jù)權(quán)利要求23所述的視頻優(yōu)化器,其中計算所述第二量化參數(shù)部分基于所述宏塊的視覺特征。
28.根據(jù)權(quán)利要求27所述的視頻優(yōu)化器,其中所述宏塊的視覺特征包括或者所述編碼宏塊或者所述解碼的宏塊的多個像素的方差。
29.根據(jù)權(quán)利要求27所述的視頻優(yōu)化器,其中所述宏塊的視覺特征包括或者所述編碼宏塊或者所述解碼的宏塊的多個像素的平均亮度。
30.根據(jù)權(quán)利要求23所述的視頻優(yōu)化器,其中計算所述第二量化參數(shù)部分基于從編碼器接收的輸出編碼參數(shù)。
31.根據(jù)權(quán)利要求30所述的視頻優(yōu)化器,其中所述輸出編碼參數(shù)包括對應于用于對先前接收的編碼宏塊重編碼的量化設定的、一個或多個過去的輸出量化參數(shù)。
32.根據(jù)權(quán)利要求30所述的視頻優(yōu)化器,其中所述輸出編碼參數(shù)包括輸出比特率,其中所述輸出比特率對應于由多個先前重編碼的宏塊占據(jù)的比特的平均數(shù)量。
33.根據(jù)權(quán)利要求32所述的視頻優(yōu)化器,其中計算所述第二量化參數(shù)包括如果所述輸出比特率高于第一預定義目標比特率,則增加所述第二量化參數(shù),以及如果所述輸出比特率低于第二預定義目標比特率,`則減小所述第二量化參數(shù)。
【文檔編號】H04N19/40GK103828369SQ201280039090
【公開日】2014年5月28日 申請日期:2012年6月8日 優(yōu)先權(quán)日:2011年6月10日
【發(fā)明者】J.泰德曼, A.彭納 申請人:茨特里克斯系統(tǒng)公司