本公開一般地涉及數(shù)據(jù)壓縮。
背景技術(shù):
在計算機網(wǎng)絡(luò)上發(fā)送大量視頻數(shù)據(jù)受視頻數(shù)據(jù)的大小和計算機網(wǎng)絡(luò)連接的吞吐量約束。在發(fā)送數(shù)據(jù)前對視頻數(shù)據(jù)進行壓縮能夠產(chǎn)生更快的傳輸。各種傳統(tǒng)的壓縮算法是可用的。然而,在視頻的一部分上工作良好的壓縮算法在被使用在視頻的另一部分上時,可能產(chǎn)生無法接受的質(zhì)量。用于在計算機網(wǎng)絡(luò)上發(fā)送視頻數(shù)據(jù)的傳統(tǒng)的系統(tǒng)可以選擇使用較少壓縮以保持質(zhì)量的低數(shù)據(jù)壓縮率算法。然而,低數(shù)據(jù)壓縮率產(chǎn)生較大尺寸的壓縮后的數(shù)據(jù)。為了補償,系統(tǒng)可以減少視頻幀率來每秒發(fā)送較少的幀。
技術(shù)實現(xiàn)要素:
視頻內(nèi)容分類系統(tǒng)對輸入視頻數(shù)據(jù)逐幀地進行分類。視頻內(nèi)容分類系統(tǒng)在每一個幀上執(zhí)行定制的離散余弦變換(dct)操作。視頻內(nèi)容分類系統(tǒng)隨后基于dct操作的結(jié)果確定該幀中多少圖像信息可能由于壓縮而損失。如果估計該損失低于閾值,則視頻內(nèi)容分類系統(tǒng)應(yīng)用高數(shù)據(jù)壓縮率算法來對該幀進行壓縮。否則,視頻內(nèi)容分類系統(tǒng)應(yīng)用低數(shù)據(jù)壓縮率算法來對該幀進行壓縮。視頻內(nèi)容分類系統(tǒng)可以生成被逐幀不同地壓縮的輸出視頻數(shù)據(jù)。
在本說明書中所述的特征可以被實現(xiàn)來達成一個或多個優(yōu)勢。例如,在一些情況下,在本說明書中所述的技術(shù)可以在不犧牲視頻質(zhì)量的情況下最大化數(shù)據(jù)壓縮率,該數(shù)據(jù)壓縮率是未壓縮的數(shù)據(jù)與壓縮后的數(shù)據(jù)之間的比率。通過對視頻采用多種壓縮算法,視頻內(nèi)容分類系統(tǒng)能夠避免必須在損失幀率、損失質(zhì)量和大的結(jié)果數(shù)據(jù)大小之間折中。這些折中在傳統(tǒng)的視頻壓縮系統(tǒng)中是常見的。
視頻內(nèi)容分類系統(tǒng)使用高效算法來對視頻內(nèi)容進行分類。分類的開銷可以最小,并且該算法足夠快以便實時應(yīng)用。
在下面的附圖和描述中闡述了本主題的一個或多個實現(xiàn)的細節(jié)。從下面的描述、附圖以及權(quán)利要求,本主題的其他特征、方面和優(yōu)勢將變得顯而易見。
附圖說明
圖1是示出示例視頻內(nèi)容分類系統(tǒng)的操作的示圖。
圖2是示出示例視頻內(nèi)容分類系統(tǒng)的示例部件以及部件的交互的框圖。
圖3示出了選擇視頻內(nèi)容以執(zhí)行分類的示例技術(shù)。
圖4是示出選擇像素塊以用于進行分類的示例技術(shù)的示圖。
圖5是示出視頻內(nèi)容分類的過程的示例的流程圖。
圖6是示出確定視頻中幀的信息損失分數(shù)的過程的示例的流程圖。
圖7是用于實現(xiàn)圖1到圖6的特征和操作的系統(tǒng)架構(gòu)的示例的框圖。
具體實施方式
如圖1中所示,視頻內(nèi)容分類系統(tǒng)102從視頻數(shù)據(jù)源106接收視頻數(shù)據(jù)104。視頻數(shù)據(jù)源106可以是顯示設(shè)備(例如計算機屏幕)的顯示緩沖器。顯示緩沖器可以以例如50hz或60hz幀率被刷新。視頻數(shù)據(jù)104可以包括具有高可壓縮性的內(nèi)容(例如電影),該內(nèi)容在使用基于dct的壓縮算法進行壓縮之后不會明顯劣化,其中基于dct的壓縮算法例如聯(lián)合圖像專家組(jpeg)壓縮算法或動態(tài)圖像專家組(mpeg)壓縮算法。
視頻數(shù)據(jù)104包括幀序列,例如幀108a、110a和112a。每一個幀可以對應(yīng)于整個屏幕的顯示內(nèi)容或者該內(nèi)容的一部分。在給定時刻,整個屏幕的顯示內(nèi)容可以由單個幀表現(xiàn),或者由多個獨立的幀表現(xiàn)。例如,正在播放的電影可以占據(jù)整個屏幕或者屏幕的電影窗口部分。屏幕可以顯示多個窗口。每一個窗口可以具有各自的不同的幀序列。每一個幀序列可以與指定該幀序列位于屏幕上的何處的位置信息相關(guān)聯(lián)。
每一個幀包括圖像,該圖像對應(yīng)于在給定時刻顯示緩沖器的內(nèi)容的至少一部分。該圖像可以由例如多個數(shù)字像素表現(xiàn)。每一個像素分別包括顏色分量的值,例如紅色、綠色和藍色的強度。
一些幀(例如幀108a和112a)可能是比其他幀(例如包含文本的幀110a)更加可壓縮的電影幀。當被相同的基于dct的壓縮算法壓縮時,從幀108a所得的圖像將比從幀110a所得的圖像損失更少的信息。視頻內(nèi)容分類系統(tǒng)102為幀108a、110a和112a中的每一者確定信息損失分數(shù),該信息損失分數(shù)衡量幀108a、110a和112a中的每一者有多么可壓縮。較低的信息損失分數(shù)指示壓縮后較低的信息損失以及較高的可壓縮性。例如,當使用基于dct的壓縮算法由給定數(shù)據(jù)壓縮率(例如2比1)壓縮時,幀108a可能不會具有顯著的信號損失。所得的壓縮后的圖像可能視覺上沒有改變。因此,幀108a具有低信息損失分數(shù)并且可以被指定為具有高可壓縮性。相比之下,當使用相同的基于dct的壓縮算法以相同的數(shù)據(jù)壓縮率壓縮時,幀110a可能具有顯著的信號損失并且可能顯著地惡化。因此,幀110a具有高信息損失分數(shù)并且可以被指定為具有低可壓縮性。在下面參考圖6描述了關(guān)于如何確定幀的信息損失分數(shù)的額外細節(jié)。
視頻內(nèi)容分類系統(tǒng)102根據(jù)幀108a、110a和112a各自的信息損失分數(shù)對幀108a、110a和112a不同地進行壓縮。對具有低信息損失分數(shù)的幀(例如幀108a或幀112a),視頻內(nèi)容分類系統(tǒng)102使用具有高數(shù)據(jù)壓縮率的壓縮算法(例如基于dct的壓縮算法)執(zhí)行壓縮或者引發(fā)外部的壓縮器來執(zhí)行壓縮。對具有高信息損失分數(shù)的幀,視頻內(nèi)容分類系統(tǒng)102使用無損的基于非dct的壓縮算法或者具有低數(shù)據(jù)壓縮率的基于dct的壓縮算法來執(zhí)行壓縮或者引發(fā)外部的壓縮器來執(zhí)行壓縮。該“高”數(shù)據(jù)壓縮率和“低”數(shù)據(jù)壓縮率是相對于幀108a、110a和112a中的內(nèi)容而言的??赡艿氖?,低數(shù)據(jù)壓縮率算法造成高于使用高數(shù)據(jù)壓縮率算法所達到的最終數(shù)據(jù)壓縮率的最終數(shù)據(jù)壓縮率。
視頻內(nèi)容分類系統(tǒng)102生成壓縮后的視頻數(shù)據(jù)114。壓縮后的視頻數(shù)據(jù)114包括壓縮后的幀108b、110b和112b的序列,幀108b、110b和112b分別對應(yīng)于原始的幀108a、110a和112a。視頻內(nèi)容分類系統(tǒng)102隨后可以通過計算機網(wǎng)絡(luò)118將壓縮后的視頻數(shù)據(jù)114發(fā)送到遠程顯示系統(tǒng)116用于顯示。
圖2是示出視頻內(nèi)容分類系統(tǒng)102的示例部件以及部件之間的交互的框圖。視頻內(nèi)容分類系統(tǒng)102的每一個部件可以包括硬件(例如處理器)、軟件(例如計算機指令)或者硬件和軟件兩者。
視頻內(nèi)容分類系統(tǒng)102包括幀處理機202。幀處理機202是視頻內(nèi)容分類系統(tǒng)102的、被配置來從視頻數(shù)據(jù)源106接收視頻數(shù)據(jù)204的部件。視頻數(shù)據(jù)204包括多個幀。幀處理機202選擇并處理視頻數(shù)據(jù)204中的每一個幀的子部分,并將處理后的子部分206提交給dct運算器208以進一步處理。下面參考圖3-圖4描述了選擇和處理幀的子部分的額外細節(jié)。
dct運算器208是視頻內(nèi)容分類系統(tǒng)102的如下部件:被配置來通過在幀的處理后的子部分206上執(zhí)行定制的dct操作來計算每一個幀的信息損失分數(shù)。為了加速計算,dct運算器208可以使用預(yù)先運算的常數(shù)表210。dct運算器208將信息損失分數(shù)標簽于每一個各自的幀,從而生成已標簽的幀212。dct運算器208將已標簽的幀212提交給幀分類器214以進行分類。下面參考圖6描述了dct運算器208的操作與常數(shù)表210的額外細節(jié)。
幀分類器214是視頻內(nèi)容分類系統(tǒng)102的如下部件:被配置來基于與每一個幀相關(guān)聯(lián)的信息損失分數(shù)對該幀進行分類。幀分類器214基于一個或多個壓縮閾值216來執(zhí)行分類。例如,在確定幀218的信息損失分數(shù)低于預(yù)定的壓縮閾值216時,幀分類器214將幀218分類為電影幀。類似地,在確定幀220的信息損失分數(shù)高于壓縮閾值216時,幀分類器214將幀220分類為圖形用戶界面幀或文本幀。幀分類器214可以將該電影幀218和該圖形用戶界面幀220提交給一個或多個壓縮器222。
(多個)壓縮器222可以是視頻內(nèi)容分類系統(tǒng)102的部件或者是耦合于視頻內(nèi)容分類系統(tǒng)102的分離的系統(tǒng)。(多個)壓縮器222通過應(yīng)用不同的壓縮算法或使用不同的數(shù)據(jù)壓縮率來與圖像用戶界面幀220不同地對電影幀218進行壓縮。(多個)壓縮器222隨后將壓縮后的幀218和220以及其他壓縮后的幀縫合成壓縮后的視頻224,該壓縮后的視頻224適合于在計算機網(wǎng)絡(luò)上傳輸。
圖3示出了選擇視頻內(nèi)容以執(zhí)行分類的示例技術(shù)。顯示屏幕300顯示幀301。幀301是視頻數(shù)據(jù)的幀序列中的幀。幀301可以包括例如電影內(nèi)容以及與該電影內(nèi)容無關(guān)的偽像(artifact)。偽像可以包括以下中的一個或多個:靜態(tài)邊框302、頂部信箱蒙版(matte)304、底部信箱蒙版306、水印308或者字幕310。
幀處理機(例如圖2的幀處理機202)選擇幀301的子部分312以用于計算幀301的信息損失分數(shù)。系統(tǒng)可以選擇位于幀301的中心處并且覆蓋幀301的預(yù)定比率(例如高度中的x%與寬度中的y%)的子部分312來避開偽像。
此外,顯示屏幕300可以獨立于顯示幀301而顯示幀314。幀314可以是電影幀、圖形用戶界面幀或者文本幀。系統(tǒng)可以從幀314選擇內(nèi)容,并且與處理幀301同時地并且分離地對幀314進行分類。系統(tǒng)可以存儲幀301和幀314的位置,用于渲染壓縮后的幀。
圖4是示出選擇像素塊以用于進行分類的示例技術(shù)的示圖。幀處理機將幀301的子部分312劃分為多個像素塊。每一個像素塊可以被指定為宏塊。每一個像素塊可以是m個像素寬和n個像素高的。在一些實現(xiàn)中,m和n每一個都具有為8的值。
幀處理機隨后確定最影響人類心理視覺系統(tǒng)的像素顏色分量。對分解為紅色分量、綠色分量和藍色分量的像素,系統(tǒng)可以為每一個宏塊中的像素選擇綠色分量值。對分解為亮度分量和色度分量的像素,幀處理機可以選擇亮度分量。(圖2的)dct運算器208隨后使用每一個宏塊的已選擇的像素顏色分量來計算幀301的信息損失分數(shù)。參考圖6描述了該運算的額外細節(jié)。
圖5是示出視頻內(nèi)容分類的過程500的示例的流程圖。過程500可以由圖2的視頻內(nèi)容分類系統(tǒng)102執(zhí)行。
系統(tǒng)從視頻數(shù)據(jù)源接收(502)視頻數(shù)據(jù)。該視頻數(shù)據(jù)包括一個或多個幀序列。每一個幀包括具有多個像素的圖像。每一個幀序列可以對應(yīng)于顯示在顯示屏幕上的內(nèi)容的至少一部分。
系統(tǒng)從每一個幀中選擇(504)多個像素塊。選擇塊包括確定每一個各自的幀的代表各自的幀中的圖像的子部分。此外,選擇塊包括選擇位于各自的幀的子部分中的像素塊。幀的子部分可以是該幀的位于該幀的中心處的一部分。
系統(tǒng)計算(506)每一個幀的各自的信息損失分數(shù)。該信息損失分數(shù)指示在使用第一壓縮算法對各自的幀進行壓縮時各自的幀中的圖像中的信息的估計的損失程度。第一壓縮算法可以是基于dct的壓縮算法,例如jpeg算法或mpeg算法。
在所示的示例中,系統(tǒng)確定(508)幀序列中的第一幀的信息損失分數(shù)滿足壓縮閾值,例如0≤g[1]≤t,其中g(shù)[1]是第一幀的信息損失分數(shù),而t是壓縮閾值。此外,系統(tǒng)確定幀序列中的第二幀的信息損失分數(shù)不滿足壓縮閾值,例如g[2]>t,其中g(shù)[2]是第二幀的信息損失分數(shù)。系統(tǒng)隨后可以確定第一幀具有高可壓縮性而第二幀具有低可壓縮性。
系統(tǒng)可以通過執(zhí)行校準操作來確定壓縮閾值t。例如,系統(tǒng)可以計算一組預(yù)先選擇的不同類型的視頻中的幀的信息損失分數(shù)。系統(tǒng)可以為每一個類型的視頻(例如電影、圖形、文本或混合體)確定代表性信息損失分數(shù)。系統(tǒng)隨后基于不同類型的視頻的不同信息損失分數(shù)確定壓縮閾值。
基于信息損失分數(shù)是否滿足壓縮閾值,系統(tǒng)使用第一壓縮算法對具有高可壓縮性的第一幀進行壓縮,并且使用不同于第一壓縮算法的第二壓縮算法來對具有低可壓縮性的第二幀進行壓縮(510)。例如,第二壓縮算法可以是無損壓縮算法或者是具有低于第一壓縮算法的數(shù)據(jù)壓縮率的數(shù)據(jù)壓縮率的基于dct的壓縮算法。
系統(tǒng)隨后提交(512)壓縮后的第一幀和壓縮后的第二幀,以渲染為輸出視頻中的連續(xù)幀序列以顯示在顯示設(shè)備上。壓縮后的第一幀和壓縮后的第二幀可以通過計算機網(wǎng)絡(luò)被提交給顯示設(shè)備。當壓縮后的第一幀和壓縮后的第二幀表現(xiàn)不同內(nèi)容(例如同一顯示屏幕上的不同窗口)時,系統(tǒng)可以根據(jù)原始的第一幀和原始的第二幀所占據(jù)的位置,將壓縮后的第一幀和壓縮后的第二幀放置在顯示屏幕上各自的位置處。
圖6是示出確定視頻中幀的信息損失分數(shù)的過程506的示例的流程圖。系統(tǒng)通過將dct操作應(yīng)用到幀的每一個已選擇的像素塊,為該像素塊確定(602)各自的頻域數(shù)據(jù)。
系統(tǒng)使用每一個像素的各自的像素值來確定(604)每一個像素塊的最高頻率dct系數(shù)。每一個塊是包括二維像素陣列的宏塊。每個像素的像素值是該像素的被確定為最大地影響人類心理視覺系統(tǒng)的顏色分量。例如,如果該像素被分解為紅色、綠色和藍色,則系統(tǒng)選擇綠色分量。如果該像素被分解為亮度和色度,則系統(tǒng)選擇亮度分量。系統(tǒng)隨后指定已選擇的綠色分量或亮度分量為該像素的像素值。
系統(tǒng)在宏塊的已選擇的像素值上計算二維dct的最高頻率dct系數(shù)。系統(tǒng)使用定制的dct操作來計算最高頻率dct系數(shù),該定制的dct操作被優(yōu)化用于實時視頻內(nèi)容分類。例如,系統(tǒng)可以被配置來僅僅計算對應(yīng)于最高水平空間頻率和最高垂直空間頻率的一個或兩個dct系數(shù),并且丟棄其他dct系數(shù)。系統(tǒng)可以從傳統(tǒng)的dct操作排除用于計算dc系數(shù)和較低頻率ac系數(shù)的那些操作。
在一些實現(xiàn)中,例如當每一個宏塊是8像素寬和8像素高時,系統(tǒng)可以通過執(zhí)行以下的ⅱ型dct運算來避免dct系數(shù)的歸一化。
在運算(1)中,n是為其運算dct系數(shù)的宏塊的索引。每一個都從0到7變化的值x和值y是對于宏塊n的像素的水平坐標和垂直坐標。值gx,y是對于宏塊n在坐標(x,y)處的像素值。值gn是宏塊n的非歸一化最高頻率dct系數(shù)。
在一些實現(xiàn)中,系統(tǒng)將運算(1)的兩個余弦項預(yù)先計算成圖2的常數(shù)表210。該常數(shù)表是二維數(shù)組c,其中在數(shù)組c中的位置x,y處的值cx,y是如下運算的。
系統(tǒng)隨后使用如下的像素值與常數(shù)表中的值的逐元素乘積的求和來計算宏塊n的非歸一化最高頻率dct系數(shù)。
系統(tǒng)基于幀中像素塊的最高頻率dct系數(shù)來確定(606)該幀的信息損失分數(shù)。系統(tǒng)可以將對每一個n都具有最大絕對值的幀中像素塊的最高頻率dct系數(shù)gn指定為該幀的信息損失分數(shù)g。幀的信息損失分數(shù)g可以如下運算。
g=max(|g0|,|g1|,...|gn|)(4)
在確定幀具有較高的g值時,系統(tǒng)可以確定在此幀中存在較強的高頻率信號。在確定幀具有較低的g值時,系統(tǒng)可以確定在此幀中存在較弱的高頻率信號。
圖7是示出用于實現(xiàn)圖1到圖6的特征和操作的系統(tǒng)架構(gòu)的示例的框圖。其他架構(gòu)是可能的,包括具有更多或更少部件的架構(gòu)。在一些實現(xiàn)中,架構(gòu)700包括一個或多個處理器702(例如雙核
術(shù)語“計算機可讀介質(zhì)”指參與向處理器702提供用于執(zhí)行的指令的任何介質(zhì),包括但不限于非易失性介質(zhì)(例如光盤或磁盤)、易失性介質(zhì)(例如內(nèi)存)和傳輸介質(zhì)。傳輸介質(zhì)的示例包括但不限于同軸電纜、銅電線以及光纖。
計算機可讀介質(zhì)712可以進一步包括操作系統(tǒng)714(例如mac
例如,架構(gòu)700可以被實現(xiàn)在并行處理的基礎(chǔ)設(shè)施或點對點的基礎(chǔ)設(shè)施中,或者被實現(xiàn)在具有一個或多個處理器的單一設(shè)備上。軟件可以包括多個軟件部件,或者可以是單一代碼體。
所述特征可以有益地實現(xiàn)在一個或多個計算機程序中,該一個或多個計算機程序可在包括至少一個可編程處理器的可編程系統(tǒng)上執(zhí)行的,該至少一個可編程處理器被耦合來從數(shù)據(jù)存儲系統(tǒng)、至少一個輸入設(shè)備和至少一個輸出設(shè)備接收數(shù)據(jù)和指令,并且被耦合來向該數(shù)據(jù)存儲系統(tǒng)、該至少一個輸入設(shè)備和該至少一個輸出設(shè)備發(fā)送數(shù)據(jù)和指令。計算機程序是指令的集合,該指令的集合在計算機中可以被直接地或者間接地使用以執(zhí)行特定活動或者造成特定結(jié)果。計算機程序可以以任意形式的編程語言(例如c、sql或者java)寫成,該編程語言包括匯編語言或者解釋性語言,并且計算機程序可以以任意形式被部署,包括作為獨立的程序或作為模塊、部件、子程序、基于瀏覽器的網(wǎng)絡(luò)應(yīng)用或者適合用在計算環(huán)境中的其他單元。
舉例而言,用于指令程序的執(zhí)行的合適的處理器包括任意種類的計算機中的通用微處理器和專用微處理器兩者、以及單一處理器或者多個處理器或核中的一個。通常而言,處理器將從只讀存儲器或隨機存取存儲器或者這兩者接收指令和數(shù)據(jù)。計算機的關(guān)鍵元件是用于執(zhí)行指令的處理器和用于存儲指令和數(shù)據(jù)的一個或多個存儲器。通常而言,計算機也將包括一個或多個用于存儲數(shù)據(jù)文件的海量存儲設(shè)備,或者在操作上耦合以與一個或多個用于存儲數(shù)據(jù)文件的海量存儲設(shè)備通信;這樣的設(shè)備包括磁盤(諸如內(nèi)部硬盤和可移除盤)、磁光盤以及光盤。適合用于可觸知地體現(xiàn)計算機程序指令和數(shù)據(jù)的存儲設(shè)備包括所有形式的非易失性存儲器(舉例而言包括諸如eprom、eeprom和閃存存儲設(shè)備的半導(dǎo)體存儲設(shè)備)、磁盤(諸如內(nèi)部硬盤和可移除盤)、磁光盤以及cd-rom盤和dvd-rom盤。處理器和存儲器可以被輔以asic(專用集成電路)或者結(jié)合在asic中。
為了提供與用戶的交互,可以在具有顯示設(shè)備與鍵盤和定點設(shè)備的計算機上實現(xiàn)各種特征,該顯示設(shè)備諸如crt(電子射線管)監(jiān)視器或者lcd(液晶顯示)監(jiān)視器以用于向用戶顯示信息;該定點設(shè)備諸如鼠標或軌跡球;通過該鍵盤和定點設(shè)備,用戶可以向計算機提供輸入。
這些特征可以被實現(xiàn)在計算機系統(tǒng)中,該計算機系統(tǒng)包括諸如數(shù)據(jù)服務(wù)器的后端部件,或者包括諸如應(yīng)用服務(wù)器或者互聯(lián)網(wǎng)服務(wù)器的中間部件,或者包括諸如具有圖形用戶界面或互聯(lián)網(wǎng)瀏覽器的客戶端計算機的前端部件,或者包括它們的任意組合。系統(tǒng)的部件可以通過任何形式或介質(zhì)的數(shù)字數(shù)據(jù)通信(諸如通信網(wǎng)絡(luò))連接。通信網(wǎng)絡(luò)的示例包括例如lan、wan、pan以及形成互聯(lián)網(wǎng)的計算機和網(wǎng)絡(luò)。
計算機系統(tǒng)可以包括客戶端和服務(wù)器??蛻舳撕头?wù)器通常彼此遠離并且一般通過網(wǎng)絡(luò)交互。客戶端和服務(wù)器的關(guān)系憑借運行在各自的計算機上并且彼此具有客戶端-服務(wù)器關(guān)系的計算機程序而成立。
盡管以上描述了具體的實現(xiàn),但也可以做出各種修改。在本說明書中,“第一”和“第二”的使用并不必然指示幀或操作的特定次序。因此,其他實現(xiàn)在權(quán)利要求的范圍之內(nèi)。