一種與h264標(biāo)準(zhǔn)兼容的屏幕內(nèi)容編碼解碼方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于視頻編解碼技術(shù)領(lǐng)域,涉及一種屏幕內(nèi)容編解碼方法,具體涉及一種與H264標(biāo)準(zhǔn)兼容的屏幕內(nèi)容編碼解碼方法。
技術(shù)背景
[0002]在視頻會議、遠程教育、遠程協(xié)作辦公系統(tǒng)中,共享計算機屏幕內(nèi)容是一項重要的功能,屏幕共享為展示和分享遠端文檔資料提供了一條迅捷的途徑。屏幕內(nèi)容圖像是一種文字圖形和自然圖像混合的圖像,包含Word/PDF文檔,PPT演講文檔,Web頁面等各種類型且日益多樣化,同時由于屏幕圖像分辨率較高,對網(wǎng)絡(luò)帶寬消耗較大,因此,必須對其進行有效的壓縮。
[0003]混合圖像中的文字圖形部分包括許多人眼敏感的高頻信息,傳統(tǒng)的靜態(tài)圖像壓標(biāo)準(zhǔn)(如JPEG)和動態(tài)視頻壓縮標(biāo)準(zhǔn)(如H264)基于人眼對自然圖像中高頻信息不敏感的特點將高頻部分粗糙量化,直接用于壓縮混合圖像,往往導(dǎo)致文字圖形模糊不清。一些意在維持文本圖形邊緣高頻信息的改進技術(shù),如空域直接量化、調(diào)色板編碼、無損壓縮,需要修改標(biāo)準(zhǔn)編碼框架的內(nèi)核,無法做到與標(biāo)準(zhǔn)解碼器的兼容,影響了屏幕內(nèi)容共享的互操作性。
【發(fā)明內(nèi)容】
[0004]為了解決上述技術(shù)問題,本發(fā)明提供了一種與H264標(biāo)準(zhǔn)兼容的屏幕內(nèi)容編碼解碼方法。
[0005]本發(fā)明所采用的技術(shù)方案是:一種與H264標(biāo)準(zhǔn)兼容的屏幕內(nèi)容編碼解碼方法,其特征在于,所述的編碼方法,包括以下步驟:
[0006]步驟1:圖像塊編碼比特數(shù)預(yù)估,選取若干典型的文本屏幕內(nèi)容組成大的訓(xùn)練數(shù)據(jù)集,對訓(xùn)練集中的圖像逐幀執(zhí)行字典編碼,統(tǒng)計產(chǎn)生的總體比特數(shù),再根據(jù)圖像塊的總數(shù)目,將這些比特數(shù)折算到單個圖像塊,即得到單個圖像塊字典編碼方式下的比特數(shù)R ;
[0007]步驟2:在H264標(biāo)準(zhǔn)編碼模式和步驟I中得到的字典編碼模式中,通過碼率失真優(yōu)化代價函數(shù)為每個圖像塊選取最佳編碼模式,對于被選中為字典編碼模式的圖像塊將其模式代碼設(shè)置為I_PCM,但不立即編碼;
[0008]步驟3:圖像塊數(shù)據(jù)收集,將每個判別為I_PCM的圖像塊數(shù)據(jù)寫入一個公共緩沖區(qū);重復(fù)步驟2,直至一幀圖像處理完畢;
[0009]步驟4:對每個圖像塊的像素按列優(yōu)先順序重組后執(zhí)行字典編碼,包含亮度和兩個色度分量,然后執(zhí)行字典編碼,將字典編碼的碼流寫入H264標(biāo)準(zhǔn)編碼的碼流的前面,形成復(fù)合碼流。
[0010]作為優(yōu)選,步驟I中所述的典型的文本屏幕內(nèi)容包括Word文檔、PPT幻燈片、網(wǎng)頁、CAD圖形。
[0011]作為優(yōu)選,步驟I中所述的字典編碼采用的是Lempel-Ziv-Markovchain-Algorithm 算法。
[0012]作為優(yōu)選,步驟2中所述的,通過碼率失真優(yōu)化代價函數(shù)為每個圖像塊選取最佳編碼模式,其具體實現(xiàn)過程是計算圖像塊在兩種編碼模式下的失真D和比特數(shù)R,然后通過碼率失真優(yōu)化代價函數(shù)J = D+ λ R選取聯(lián)合失真J最小的模式作為最佳編碼模式;其中J為聯(lián)合失真,參數(shù)λ為拉格朗日參數(shù),λ用于權(quán)衡失真與碼率間的度量權(quán)重。
[0013]作為優(yōu)選,編碼后進行解碼方法,包括以下步驟:
[0014]步驟1:從復(fù)合碼流中提取字典碼流,然后執(zhí)行字典解碼,得到所有模式為I_PCM圖像塊的解碼樣點數(shù)據(jù);
[0015]步驟2:順序掃描解碼樣點數(shù)據(jù)并解析H264碼流,對解析出模式為I_PCM的圖像塊,將其對應(yīng)的像素樣點數(shù)據(jù)寫入H264碼流中;
[0016]步驟3:執(zhí)行標(biāo)準(zhǔn)的H264解碼過程。
[0017]與標(biāo)準(zhǔn)化的H264編碼技術(shù)以及目前一些針對屏幕視頻編碼的改進方案比較,本發(fā)明具有以下優(yōu)點和積極效果:
[0018](I)本發(fā)明通過新增加的字典編碼模式對前景分布稀疏的文本區(qū)域采取無損壓縮,提高了屏幕視頻的編碼質(zhì)量和壓縮效率;
[0019](2)本發(fā)明借用H264定義的、但未用到的I_PCM模式指示字典編碼模式,因此,碼流可被標(biāo)準(zhǔn)的H264解碼器識別,不需要修改解碼器,保持了標(biāo)準(zhǔn)兼容性。
[0020](3)本發(fā)明新增加的字典編碼模式不需要逐塊計算編碼失真和比特數(shù)消耗,因此,不帶來運算復(fù)雜度的額外增加。
【附圖說明】
[0021]圖1:本發(fā)明實施例的編碼流程圖。
[0022]圖2:本發(fā)明實施例的解碼流程圖。
【具體實施方式】
[0023]為了便于本領(lǐng)域普通技術(shù)人員理解和實施本發(fā)明,下面結(jié)合附圖及實施例對本發(fā)明作進一步的詳細(xì)描述,應(yīng)當(dāng)理解,此處所描述的實施示例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0024]屏幕內(nèi)容主要以文本、圖形為主,前背景色彩層次分明,圖像底色單一、前景顏色相對也不豐富,像素顏色空間的數(shù)據(jù)分布比較稀疏,一般集中在少數(shù)的幾種數(shù)值上,圖像塊中像素間的局部相關(guān)性不強,因此,去空間相關(guān)性的變換編碼的作用有限;另一方面,不同于自然場景視頻,屏幕內(nèi)容一般不含帶噪聲,而且文字邊緣銳利,量化失真會模糊文字邊緣,造成文字不清晰?;谝陨蟽牲c認(rèn)識,傳統(tǒng)的變換加量化的編碼方案不適合高質(zhì)量的屏幕內(nèi)容壓縮。相反,屏幕內(nèi)容文本區(qū)域像素稀疏分布的特點,恰好適合無損字典壓縮。
[0025]在上述技術(shù)思路下,本發(fā)明需要重點解決三個關(guān)鍵問題:
[0026](1)H264等現(xiàn)有壓縮標(biāo)準(zhǔn)中定義了多種編碼模式,本發(fā)明又新增了一種字典編碼模式。通常而言,現(xiàn)有的編碼模式對具有自然視頻屬性的區(qū)域比較有效,如嵌入的圖像、動畫等,而新增的編碼字典模式一般更適合文本塊壓縮,錯誤地選擇了編碼模式反而會降低整體壓縮性能。因此,準(zhǔn)確地為每個圖像塊分配恰當(dāng)?shù)木幋a模式很關(guān)鍵。
[0027](2)字典編碼的核心原理就是從歷史數(shù)據(jù)中尋找當(dāng)前數(shù)據(jù)的匹配,如果匹配成功,就以數(shù)據(jù)對(匹配長度、匹配距離)來替代原始數(shù)據(jù),從而實現(xiàn)對數(shù)據(jù)的無損壓縮。因此,字典編碼的效率與待編碼數(shù)據(jù)的長度密切相關(guān),一次編碼輸入的數(shù)據(jù)越多,效率越高,反之越低。用WinZip或WinRar等工具壓縮文件的大量實踐也證明了這一點。然而,16x16像素圖像塊的原始數(shù)據(jù)長度很短,逐個單獨進行壓縮必將極大地限制了字典編碼器的性能。如何通過適當(dāng)?shù)臄?shù)據(jù)重組保證字典編碼效率至關(guān)重要。
[0028](3)新增的字典編碼模式顯然不能被符合H264等標(biāo)準(zhǔn)的解碼器所接受,直接將碼流送給標(biāo)準(zhǔn)解碼器解碼,解碼器會視為錯誤;修改解碼器內(nèi)核可以做到對增加的模式的兼容性,但在很多場合下,解碼器對用戶和程序開發(fā)人員來說都是透明的,不具備修改的條件,如硬件解碼器。因此,如何將字典與現(xiàn)有標(biāo)準(zhǔn)混合編碼的碼流在送入解碼器內(nèi)核前還原為標(biāo)準(zhǔn)的碼流從而維持標(biāo)準(zhǔn)兼容性很重要。
[0029]針對上述問題,本發(fā)明在分析H264編碼標(biāo)準(zhǔn)和代表性字典壓縮技術(shù)的特點的基礎(chǔ)上,逐一提出如下解決方法。
[0030](I)視頻編碼通常根據(jù)碼率失真優(yōu)化(RDO)來選擇最優(yōu)的編碼模式,優(yōu)選的編碼模式要同時給出最小編碼失真與碼率消耗,即優(yōu)化的代價函數(shù)為J = D+AR,其中J為聯(lián)合失真,D為有損編碼帶來的圖像失真,R為按該模式編碼產(chǎn)生的比特數(shù),參數(shù)λ為拉格朗日參數(shù),權(quán)衡失真與碼率間的度量權(quán)重,一般事先通過統(tǒng)計或經(jīng)驗的方式預(yù)設(shè)置好。Η264原有的編碼模式執(zhí)行的是有損編碼,失真D和比特數(shù)R指標(biāo)都要統(tǒng)計,但在字典編碼模式下,由于是無損編碼,失真實際為零,只需要衡量比特數(shù)。通常有損編碼通過將變換、量化等環(huán)節(jié)產(chǎn)生的參數(shù)送入熵編碼器編碼、再根據(jù)實際編碼的比特數(shù)來確定參數(shù)R的值,但在字典編碼模式下,如果也采取這種思路,由于字典編碼器對于少量數(shù)據(jù)的壓縮性能不佳,壓縮效率將被低估,導(dǎo)致產(chǎn)生的比特數(shù)R要高出比實際編碼情況,從而帶來模式判斷不準(zhǔn)確,很多本該判斷為字典編碼的塊可能被誤判為其它模式。因此,本發(fā)明在衡量字典編碼一個圖像塊需要的比特數(shù)時,不是對圖像塊進行實際的編碼來獲得,而是采取訓(xùn)練的方式為圖像塊預(yù)先估計一個數(shù)值。具體做法是,選取若干典型的文本屏幕內(nèi)容組成大的訓(xùn)練數(shù)據(jù)集,然后對訓(xùn)練集中的圖像逐幀執(zhí)行字典編碼,統(tǒng)計產(chǎn)生的總體比特數(shù),再根據(jù)圖像塊的總數(shù)目,將這些比特數(shù)折算到單個圖像塊,即得到單個圖像塊字典編碼方式下的比特數(shù)預(yù)估值。這個過程事先離線訓(xùn)練好,真實的編碼過程中使用該預(yù)估值替代RDO公式中的R進行RDO優(yōu)化選擇。
[0031](2)