本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體地,涉及一種視頻壓縮方法及裝置。
背景技術(shù):
hevc(英文:highefficiencyvideocoding,中文:高效視頻編碼)是一種新的視頻壓縮標(biāo)準(zhǔn)。
視頻壓縮的目的是去除數(shù)字視頻中的各種冗余,如空域冗余、時(shí)域冗余、熵冗余等,以節(jié)省傳輸和存儲(chǔ)開銷。通常,視頻壓縮量、視頻壓縮后的保真度等,主要受量化參數(shù)(英文:quantizationparameter,簡稱:qp)的影響,因此,在視頻編碼過程中,各編碼單元可以使用不同的qp值,即,可以通過給各個(gè)編碼單元合理分配qp值的方式來提高視頻壓縮質(zhì)量。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種視頻壓縮方法及裝置,有助于提高視頻壓縮質(zhì)量。
本發(fā)明實(shí)施例提供了一種視頻壓縮方法,所述方法包括:
在調(diào)整周期到達(dá)時(shí),利用哈達(dá)瑪變換,確定本調(diào)整周期內(nèi)的第一偏移量,所述第一偏移量用于表示i幀與p幀之間的量化參數(shù)差距;
利用所述第一偏移量,調(diào)整位于本調(diào)整周期內(nèi)的i幀或者p幀的量化參數(shù)初值,并利用調(diào)整得到的量化參數(shù)進(jìn)行視頻壓縮。
可選地,所述利用哈達(dá)瑪變換,確定本調(diào)整周期內(nèi)的第一偏移量,包括:
利用所述哈達(dá)瑪變換,計(jì)算當(dāng)前幀的幀內(nèi)能量had內(nèi)和幀間能量had間,所述幀間能量為所述當(dāng)前幀與所述當(dāng)前幀在播放序上的前一幀的差值圖 像的能量;
根據(jù)所述had內(nèi)和had間,獲得第一偏移率ipq=1.4+k1*ipmax*clip(c,d,k2(1-s));其中,k1表示調(diào)整強(qiáng)度,0<k1<1;ipmax=clip(a,b,1-d內(nèi)/40),a和b表示1-d內(nèi)/40的截取范圍,0<b-a≤3,d內(nèi)=sum內(nèi)/norm內(nèi)/分辨率,sum內(nèi)=k3*sum前+had內(nèi),norm內(nèi)=k3*norm前+1,0<k3<1;c和d表示k2(1-s)的截取范圍,0<d-c≤3,1≤k2≤3,s表示相對(duì)強(qiáng)度,由d內(nèi)和d間計(jì)算獲得,d間=sum間/norm間/分辨率,sum間=k4*sum前間+had間,norm間=k4*norm前間+1,0<k4<1;
利用所述ipq,獲得所述第一偏移量ip=(int)(6log2(ipq)+0.5)。
可選地,所述當(dāng)前幀劃分出m個(gè)n×n大小的編碼單元,所述計(jì)算所述當(dāng)前幀的幀內(nèi)能量had內(nèi),包括:
通過以下公式計(jì)算每個(gè)n×n大小的編碼單元的能量hadcu:
其中,c表示對(duì)編碼單元做哈達(dá)瑪變換得到的變換后編碼單元矩陣,i和j用于表示變換后編碼單元矩陣中的坐標(biāo);
將所述m個(gè)n×n大小的編碼單元的能量hadcu之和,確定為所述當(dāng)前幀的幀內(nèi)能量had內(nèi)。
可選地,幀的量化參數(shù)初值體現(xiàn)為該幀劃分出的各個(gè)編碼單元的量化參數(shù)初值,則調(diào)整所述量化參數(shù)初值,包括:
利用所述第一偏移量,調(diào)整每個(gè)編碼單元的量化參數(shù)初值。
可選地,所述方法還包括:
利用所述哈達(dá)瑪變換,確定本調(diào)整周期內(nèi)的第二偏移量,所述第二偏移量用于表示p幀與b幀之間的量化參數(shù)差距;
利用所述第二偏移量,調(diào)整位于本調(diào)整周期內(nèi)的p幀或者b幀的量化參 數(shù)初值,并利用調(diào)整得到的量化參數(shù)進(jìn)行視頻壓縮。
可選地,所述利用所述哈達(dá)瑪變換,確定本調(diào)整周期內(nèi)的第二偏移量,包括:
利用所述哈達(dá)瑪變換,計(jì)算當(dāng)前幀的幀內(nèi)能量had內(nèi)和幀間能量had間,所述幀間能量為所述當(dāng)前幀與所述當(dāng)前幀在播放序上的前一幀的的差值圖像能量;
根據(jù)所述had內(nèi)和had間,獲得第二偏移率pbq=1.3+clip(f,g,1-s);其中,f和g表示1-s的截取范圍,0<g-f≤2,s表示相對(duì)強(qiáng)度,由d內(nèi)和d間計(jì)算獲得,d內(nèi)=sum內(nèi)/norm內(nèi)/分辨率,sum內(nèi)=k3*sum前+had內(nèi),norm內(nèi)=k3*norm前+1,0<k3<1;d間=sum間/norm間/分辨率,sum間=k4*sum前間+had間,norm間=k4*norm前間+1,0<k4<1;
利用所述pbq,獲得所述第二偏移量pb=(int)(6log2(pbq)+0.5)。
本發(fā)明實(shí)施例提供了一種視頻壓縮裝置,所述裝置包括:
第一偏移量確定單元,用于在調(diào)整周期到達(dá)時(shí),利用哈達(dá)瑪變換,確定本調(diào)整周期內(nèi)的第一偏移量,所述第一偏移量用于表示i幀與p幀之間的量化參數(shù)差距;
量化參數(shù)調(diào)整單元,用于利用所述第一偏移量,調(diào)整位于本調(diào)整周期內(nèi)的i幀或者p幀的量化參數(shù)初值,并利用調(diào)整得到的量化參數(shù)進(jìn)行視頻壓縮。
可選地,所述第一偏移量確定單元包括:
第一能量計(jì)算單元,用于利用所述哈達(dá)瑪變換,計(jì)算當(dāng)前幀的幀內(nèi)能量had內(nèi)和幀間能量had間,所述幀間能量為所述當(dāng)前幀與所述當(dāng)前幀在播放序上的前一幀的差值圖像的能量;
第一偏移率獲得單元,用于根據(jù)所述had內(nèi)和had間,獲得第一偏移率ipq=1.4+k1*ipmax*clip(c,d,k2(1-s));其中,k1表示調(diào)整強(qiáng)度,0<k1<1;ipmax=clip(a,b,1-d內(nèi)/40),a和b表示1-d內(nèi)/40的截取范圍,0<b-a≤3,d內(nèi)=sum內(nèi)/norm內(nèi)/分辨率,sum內(nèi)=k3*sum前+had內(nèi),norm內(nèi)=k3*norm前+1,0<k3<1;c和d表示k2(1-s)的截取范圍,0<d-c≤3,1≤k2≤3,s表示相對(duì)強(qiáng)度,由d內(nèi)和d間計(jì)算獲得,d間=sum間/norm間/分辨率,sum間=k4*sum前間+had間,norm間=k4*norm前間+1,0<k4<1;
第一偏移量獲得單元,用于利用所述ipq,獲得所述第一偏移量ip=(int)(6log2(ipq)+0.5)。
可選地,所述當(dāng)前幀劃分出m個(gè)n×n大小的編碼單元,所述第一能量計(jì)算單元,具體用于通過以下公式計(jì)算每個(gè)n×n大小的編碼單元的能量hadcu,并將所述m個(gè)n×n大小的編碼單元的能量hadcu之和,確定為所述當(dāng)前幀的幀內(nèi)能量had內(nèi):
其中,c表示對(duì)編碼單元做哈達(dá)瑪變換得到的變換后編碼單元矩陣,i和j用于表示變換后編碼單元矩陣中的坐標(biāo)。
可選地,幀的量化參數(shù)初值體現(xiàn)為該幀劃分出的各個(gè)編碼單元的量化參數(shù)初值,則
所述量化參數(shù)調(diào)整單元,具體用于利用所述第一偏移量,調(diào)整每個(gè)編碼單元的量化參數(shù)初值。
可選地,所述裝置還包括:
第二偏移量確定單元,用于利用所述哈達(dá)瑪變換,確定本調(diào)整周期內(nèi)的第二偏移量,所述第二偏移量為用于表示p幀與b幀之間的量化參數(shù)差距;
所述量化參數(shù)調(diào)整單元,還用于利用所述第二偏移量,調(diào)整位于本調(diào)整周期內(nèi)的p幀或者b幀的量化參數(shù)初值,并利用調(diào)整得到的量化參數(shù)進(jìn)行視頻壓縮。
可選地,所述第二偏移量確定單元包括:
第二能量計(jì)算單元,用于利用所述哈達(dá)瑪變換,計(jì)算當(dāng)前幀的幀內(nèi)能量had內(nèi)和幀間能量had間,所述幀間能量為所述當(dāng)前幀與所述當(dāng)前幀在播放序上的前一幀的的差值圖像能量;
第二偏移率獲得單元,用于根據(jù)所述had內(nèi)和had間,獲得第二偏移率pbq=1.3+clip(f,g,1-s);其中,f和g表示1-s的截取范圍,0<g-f≤2,s表示相對(duì)強(qiáng)度,由d內(nèi)和d間計(jì)算獲得,d內(nèi)=sum內(nèi)/norm內(nèi)/分辨率,sum內(nèi)=k3*sum前+had內(nèi),norm內(nèi)=k3*norm前+1,0<k3<1;d間=sum間/norm間/分辨率,sum間=k4*sum前間+had間,norm間=k4*norm前間+1,0<k4<1;
第二偏移量獲得單元,用于利用所述pbq,獲得所述第二偏移量pb=(int)(6log2(pbq)+0.5)。
本發(fā)明技術(shù)方案中,可以利用哈達(dá)瑪變換,反映出輸入視頻的特性,即本發(fā)明方案中定義的紋理豐富度和運(yùn)動(dòng)強(qiáng)度,如此,便可在充分考慮輸入視頻特性的情況下,確定出合適的調(diào)整偏移量,進(jìn)而在qp初值的基礎(chǔ)上,獲得調(diào)整后qp值,用于在視頻壓縮時(shí)使用。具體地,可以根據(jù)實(shí)際需求,利用哈達(dá)瑪變換確定出表示i幀與p幀之間qp差距的第一偏移量,并利用第一偏移量對(duì)i幀或p幀的qp初值做適當(dāng)調(diào)整;或者,還可以根據(jù)實(shí)際需求,利用哈達(dá)瑪變換確定出表示p幀與b幀之間qp差距的第二偏移量,并利用第二偏移量對(duì)p幀或b幀的qp初值做適當(dāng)調(diào)整。
本發(fā)明的其他特征和優(yōu)點(diǎn)將在隨后的具體實(shí)施方式部分予以詳細(xì)說明。
附圖說明
附圖是用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與下面的具體實(shí)施方式一起用于解釋本發(fā)明,但并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:
圖1是本發(fā)明視頻壓縮方法的流程圖;
圖2是本發(fā)明中利用哈達(dá)瑪變換確定第一偏移量的流程圖;
圖3是本發(fā)明中利用哈達(dá)瑪變換確定第二偏移量的流程圖;
圖4是本發(fā)明視頻壓縮裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)說明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。
通常,原始的未經(jīng)壓縮的數(shù)字視頻可以通過rgb或yuv格式存儲(chǔ),即,視頻所包括的每一幀中的每個(gè)像素點(diǎn)可以用rgb三分量或者yuv中的亮度色度表示。如果不對(duì)原始的視頻進(jìn)行壓縮,數(shù)據(jù)量非常巨大。特別是在人們對(duì)數(shù)字視頻的用戶體驗(yàn)要求越來越高的情況下,視頻分辨率從480p(640×480)發(fā)展到準(zhǔn)高清720p(1280×720)、全高清1080p(1290×1080)、4k等等,更需要通過有效方式對(duì)視頻進(jìn)行壓縮處理,以節(jié)省視頻的傳輸和存儲(chǔ)開銷。
在介紹本發(fā)明方案之前,先對(duì)hevc中的幀類型做簡單介紹。通常,幀類型可以包括:i幀、p幀、b幀(可細(xì)分為可被參考的大b幀和不可被參考的小b幀)。其中,i幀(iframe)為幀內(nèi)編碼幀,又稱為獨(dú)立編碼幀,i幀不需要參考其他畫面生成,編碼時(shí)只利用當(dāng)前幀的信息去除圖像的空域冗余,i幀所占數(shù)據(jù)的信息量比較大。p幀(pframe)為前向預(yù)測(cè)編碼幀,p幀需要參考前面的i幀或p幀生成,編碼時(shí)除了去除空域冗余,還可利用前向預(yù)測(cè)去除時(shí)域冗余,p幀的壓縮比較高。b幀(bframe)為雙向預(yù)測(cè)內(nèi)插編碼幀,b幀需要參考前面的i幀或者p幀以及后面的p幀生成,除了空域冗余,編碼時(shí)還利用雙向預(yù)測(cè)去除時(shí)域冗余,b幀的壓縮比最高。
在實(shí)際應(yīng)用中,可以通過分層級(jí)設(shè)置qp值的方式,來提高視頻壓縮質(zhì)量。舉例來說,分層級(jí)設(shè)置qp值可以體現(xiàn)為,結(jié)合每種類型幀的重要程度, 設(shè)置該類型幀的qp值,通常,幀被參考的次數(shù)越多,其重要程度就越高。也就是說,在進(jìn)行視頻壓縮時(shí),可以適當(dāng)調(diào)整i幀、p幀、b幀的qp值,以達(dá)到更好的視頻壓縮效果。
下面結(jié)合具體示例,對(duì)本發(fā)明方案的視頻壓縮過程進(jìn)行解釋說明。
參見圖1,示出了本發(fā)明視頻壓縮方法的流程圖,可以包括:
s101,在調(diào)整周期到達(dá)時(shí),利用哈達(dá)瑪變換,確定本調(diào)整周期內(nèi)的第一偏移量,所述第一偏移量用于表示i幀與p幀之間的量化參數(shù)差距。
為了防止qp調(diào)整頻率過高,對(duì)視頻壓縮質(zhì)量造成影響,可以預(yù)先設(shè)置調(diào)整周期,并在調(diào)整周期到達(dá)時(shí),利用本發(fā)明方案適當(dāng)調(diào)整該調(diào)整周期內(nèi)的幀的qp值。
舉例來說,可以由用戶根據(jù)實(shí)際需求設(shè)定調(diào)整周期的大小,如用戶指定每間隔n個(gè)幀設(shè)置一個(gè)調(diào)整周期,若n=20,則對(duì)于包括100個(gè)幀的輸入視頻來說,可被劃分為5個(gè)調(diào)整周期?;蛘?,還可以根據(jù)幀組gop(groupofpictures)來設(shè)置調(diào)整周期,即一個(gè)gop包括的幀位于一個(gè)調(diào)整周期內(nèi),考慮到gop的第一幀都是i幀,因此,可以根據(jù)i幀來識(shí)別調(diào)整周期。具體地,可以判斷當(dāng)前幀是否為i幀,如果是,則判定一個(gè)調(diào)整周期已到達(dá),可觸發(fā)利用本發(fā)明方案進(jìn)行qp值調(diào)整。
現(xiàn)有的基于分層次qp分配機(jī)制實(shí)現(xiàn)的視頻壓縮方案中,大多通過統(tǒng)計(jì)最優(yōu)的方式設(shè)置qp值,未考慮每個(gè)輸入視頻的特性,在一定程度上影響了視頻壓縮質(zhì)量。對(duì)應(yīng)于此,本發(fā)明方案在需要進(jìn)行qp值調(diào)整時(shí),可以利用哈達(dá)瑪(英文:hadamard,簡稱:had)變換反映輸入視頻的特性,進(jìn)而結(jié)合該輸入視頻特性,確定出調(diào)整偏移量。舉例來說,可以根據(jù)需要,通過哈達(dá)瑪變換獲得第一偏移量,并利用第一偏移量,調(diào)整i幀的qp初值或者調(diào)整p幀的qp初值。還可以根據(jù)需要,通過哈達(dá)瑪變換獲得第二偏移量,并利用第二偏移量,調(diào)整p幀的qp初值或者調(diào)整b幀的qp初值。
具體地,本發(fā)明中的第一偏移量可以體現(xiàn)為ip,即i幀和p幀間的偏移量。參見圖2,示出了利用哈達(dá)瑪變換確定第一偏移量ip的流程圖,可以包括:
s201,利用所述哈達(dá)瑪變換,計(jì)算當(dāng)前幀的幀內(nèi)能量had內(nèi)和幀間能量had間,所述幀間能量為所述當(dāng)前幀與所述當(dāng)前幀在播放序上的前一幀的差值圖像的能量。
本發(fā)明方案中,定義了如下兩個(gè)參數(shù),用于表示輸入視頻的特性:紋理豐富度和運(yùn)動(dòng)強(qiáng)度,可具體體現(xiàn)為:幀內(nèi)had能量had內(nèi)、幀間had能量had間、幀內(nèi)had密度d內(nèi)和幀間had密度d間。本發(fā)明方案中,幀間能量可以理解為,當(dāng)前幀與當(dāng)前幀在播放序上的前一幀之間的差值圖像的能量。
可以理解地,如果視頻a拍攝了一面白色平滑的墻,視頻b拍攝了一條石子路,則視頻b與視頻a相比,紋理豐富度更高。如果視頻c拍攝了一個(gè)散步的人,視頻d拍攝了一個(gè)跑步的人,則視頻d與視頻c相比,運(yùn)動(dòng)強(qiáng)度更高。
作為一種示例,本發(fā)明還對(duì)本領(lǐng)域公知的標(biāo)準(zhǔn)hevc測(cè)試片段進(jìn)行了模擬試驗(yàn),以此來驗(yàn)證本發(fā)明通過紋理豐富度和運(yùn)動(dòng)強(qiáng)度來表示視頻特性的準(zhǔn)確性。參見下表1,對(duì)于紋理豐富度越高的視頻片段,其d內(nèi)也越高;對(duì)于運(yùn)動(dòng)強(qiáng)度越高的視頻片段,其d內(nèi)也越高。另外,對(duì)于一些運(yùn)動(dòng)強(qiáng)度很接近的視頻片段來說,如“派對(duì)場(chǎng)景”、“藍(lán)球訓(xùn)練”等,由于紋理豐富度不同導(dǎo)致這些視頻片段具有不同的d間,如此,為了更準(zhǔn)確的表示輸入視頻的特性,本發(fā)明還定義了如下參數(shù):相對(duì)強(qiáng)度s,用以表示相對(duì)于幀內(nèi)視覺信息來說,幀間運(yùn)動(dòng)的相對(duì)強(qiáng)度,可以由d內(nèi)和d間計(jì)算獲得s。舉例來說,可體現(xiàn)為s=d間/d內(nèi),或者,還可取d內(nèi)和d間的對(duì)數(shù)關(guān)系來表示s,本發(fā)明實(shí)施例對(duì)利用d內(nèi)和d間計(jì)算獲得s的方式可不做具體限定。
表1
作為一種示例,本發(fā)明中的had能量可以體現(xiàn)為had變換的交流分量的絕對(duì)值之和。具體地,如果當(dāng)前幀劃分出m個(gè)n×n大小的編碼單元,則計(jì)算當(dāng)前幀的幀內(nèi)能量had內(nèi),然后再將所述m個(gè)n×n大小的編碼單元的能量hadcu之和,確定為當(dāng)前幀的幀內(nèi)能量had內(nèi)。
可以通過以下公式,計(jì)算每個(gè)n×n大小的編碼單元的能量hadcu:
其中,c表示對(duì)編碼單元做哈達(dá)瑪變換得到的變換后編碼單元矩陣,i和j用于表示變換后編碼單元矩陣中的坐標(biāo)。舉例來說,編碼單元的大小可以是4×4、8×8、16×16、32×32、64×64等等,本發(fā)明對(duì)此可不做限定。
舉例來說,在播放序上,當(dāng)前幀為第100幀,前一幀為第99幀,則結(jié)合上述公式,可分別計(jì)算得到幀內(nèi)能量had100,幀間能量had99,100。
s202,根據(jù)所述had內(nèi)和had間,獲得第一偏移率ipq=1.4+k1*ipmax*clip(c,d,k2(1-s))。
本發(fā)明方案中,充分考慮到視覺信息與had能量隨時(shí)間的變化,在進(jìn)行qp值調(diào)整之前,可以通過加權(quán)移動(dòng)平均的方式做如下迭代計(jì)算:
sum<-k×sum+had內(nèi);
norm<-k×norm+1;
密度×分辨率=sum/norm。
上述迭代公式中,權(quán)重k為校正量,取值范圍為[0,1]。
具體地,對(duì)于幀內(nèi)had密度d內(nèi)來說,d內(nèi)=sum內(nèi)/norm內(nèi)/分辨率。
其中,sum內(nèi)=k3*sum前+had內(nèi),norm內(nèi)=k3*norm前+1,0<k3<1。作為一種優(yōu)選方案,k3=0.5。結(jié)合上文所舉示例,sum100=0.5*sum99+had100,norm100=0.5*norm99+1,其中,sum99和norm99是由視頻中的第1幀到第98幀,不斷的迭代計(jì)算獲得,此處不再舉例說明。作為一種示例,視頻的第1幀的sum1=0,norm1=0。
具體地,對(duì)于幀間had密度d間來說,d間=sum間/norm間/分辨率。
其中,sum間=k4*sum前間+had間,norm間=k4*norm前間+1,0<k4<1。作為一種優(yōu)選方案,k4=0.9。上文所舉示例中,sum99,100=0.9*sum98,99+had99,100,norm99,100=0.9*norm98,99+1,sum98,99和norm98,99是由視頻中的第1幀到第98幀,不斷的迭代計(jì)算獲得,此處不再舉例說明。
根據(jù)上述公式獲得d內(nèi)之后,便可利用d內(nèi)確定出本發(fā)明中的第一最大偏移量ipmax=clip(a,b,1-d內(nèi)/40)。其中,a和b表示1-d內(nèi)/40的截取范圍,0<b-a≤3。舉例來說,a=0.0,b=1.0,即確保i幀和p幀之間的最大偏移量不超過1,結(jié)合具體的輸入視頻,如果1-d內(nèi)/40的計(jì)算值位于[0.0,1.0]之內(nèi),則可將計(jì)算值確定為ipmax,如果計(jì)算值位于[0.0,1.0]之外,則可將計(jì)算值靠近的0.0或者1.0確定為ipmax。舉例來說,若計(jì)算值為1.3,位于[0.0,1.0]之外且靠近于1.0,則可截取獲得ipmax=1.0。
結(jié)合上文所做介紹,利用d內(nèi)和d間便可確定出相對(duì)強(qiáng)度s,另外,利用d內(nèi)確定出ipmax之后,便可計(jì)算獲得本發(fā)明中的ipq=1.4+k1*ipmax*clip(c,d,k2(1-s))。其中,k1表示調(diào)整強(qiáng)度,0<k1<1;c和d表示k2(1-s)的截取范圍,0<d-c≤3,1≤k2≤3。作為一種優(yōu)選方案k1=0.6,k2=2,即ipq=1.4+ 0.6*ipmax*clip(c,d,2-2s)。
舉例來說,c=0.0,d=1.0,結(jié)合具體的輸入視頻,如果k2(1-s)的計(jì)算值位于[0.0,1.0]之內(nèi),則可利用計(jì)算值確定ipq,如果計(jì)算值位于[0.0,1.0]之外,則可利用計(jì)算值靠近的0.0或者1.0確定ipq。舉例來說,若計(jì)算值為1.3,位于[0.0,1.0]之外且靠近于1.0,則ipq=1.4+k1*ipmax*1.0。
s203,利用所述ipq,獲得所述第一偏移量ip=(int)(6log2(ipq)+0.5)。
公式qp=12.0+6.0*log(q/0.85)可用于表示碼率與qp偏移之間的對(duì)應(yīng)關(guān)系,因此,在獲得第一偏移率ipq后,便可結(jié)合上述公式獲得第一偏移量ip。
s102,利用所述第一偏移量,調(diào)整位于本調(diào)整周期內(nèi)的i幀或者p幀的量化參數(shù)初值,并利用調(diào)整得到的量化參數(shù)進(jìn)行視頻壓縮。
本發(fā)明中的第一偏移量表示的是,在進(jìn)行視頻壓縮時(shí)i幀的qp值與p幀的qp值之間的差距。
具體地,可以控制i幀的qp初值不變,調(diào)整p幀的qp初值,也就是說,在進(jìn)行視頻壓縮時(shí),利用i幀的qp初值完成對(duì)i幀的壓縮,利用p幀的調(diào)整后qp值完成對(duì)p幀的壓縮。
或者,也可以控制p幀的qp初值不變,調(diào)整i幀的qp初值,也就是說,在進(jìn)行視頻壓縮時(shí),利用p幀的qp初值完成對(duì)p幀的壓縮,利用i幀的調(diào)整后qp值完成對(duì)i幀的壓縮。
具體的調(diào)整方案可以根據(jù)實(shí)際應(yīng)用情況確定,本發(fā)明對(duì)此可不做限定,只要確保調(diào)整得到的i幀與p幀之間的qp差距與第一偏移量相符即可。作為一種示例,可以由用戶根據(jù)實(shí)際需求,選擇控制哪種類型幀的qp初值不變。
以調(diào)整p幀的qp初值,使i幀與p幀之的qp差距與第一偏移量相符為例,若當(dāng)前幀為第100幀,確定出本調(diào)整周期的第一偏移量后,可判斷第 101幀的幀類型是否為p幀,如果第101幀是p幀,則可獲得第101幀的qp初值,并結(jié)合第一偏移量確定出第101幀的調(diào)整后qp值,用于視頻壓縮時(shí)使用。
具體地,本發(fā)明至少可以通過以下三種方式獲得量化參數(shù)初值,下面分別進(jìn)行解釋說明。
方式一,通過常數(shù)qp(簡稱:cqp)模式,獲得量化參數(shù)初值。
該方式中,用戶可以預(yù)設(shè)qp的基值,如此,便可結(jié)合基值與每種類型幀的qp值之間的關(guān)系,獲得該類型幀的qp值。
作為一種示例,hevc/h.265參考軟件hm-16.0和開源x265編碼器均支持在cqp模式下確定不同類型幀的qp值。舉例來說,在x265編碼器中,基值=qpi+3=qpp=qpb-3=qpbref-1,其中,qpi表示i幀的qp初值,qpp表示p幀的qp初值,qpb表示b幀的qp初值,qpbref表示可被參考的大b幀的qp初值。
方式二,通過速率控制(簡稱:rc)模式,獲得量化參數(shù)初值。
該方式中,用戶可以預(yù)設(shè)目標(biāo)碼率,如此,便可結(jié)合目標(biāo)碼率,設(shè)置每個(gè)幀的自身碼率,然后再利用表示碼率與量化參數(shù)之間對(duì)應(yīng)關(guān)系的模型,根據(jù)上述設(shè)置的自身碼率確定出每個(gè)幀的qp初值。舉例來說,可以根據(jù)每個(gè)幀被參考的次數(shù),確定幀的重要程度,進(jìn)而根據(jù)重要程度設(shè)置該幀的自身碼率。
方式三,在上述兩種方式的基礎(chǔ)上,使用x265編碼器中的“cutree”工具,自適應(yīng)的設(shè)置量化參數(shù)初值。
也就是說,通過方式一或方式二獲得各幀的qp初值后,可以利用cutree進(jìn)行優(yōu)化處理,并將優(yōu)化處理后的qp值作為本方式三中的自適應(yīng)設(shè)置的qp初值。
該方式中,將每幀劃分成多個(gè)編碼單元,并利用每個(gè)編碼單元的參考頻 率,獲得該編碼單元對(duì)應(yīng)的qp值。也就是說,一個(gè)幀的qp初值可以體現(xiàn)為該幀劃分出的各個(gè)編碼單元的qp初值。
具體地,編碼單元可以被直接參考,也可以被間接參考。舉例來說,編碼單元a被編碼單元b參考,編碼單元b被編碼單元c參考,可以理解為b直接參考a,c間接參考a。
現(xiàn)有技術(shù)按照上文介紹的方式獲得qp初值后,便直接利用該qp初值進(jìn)行視頻壓縮。對(duì)應(yīng)于此,本發(fā)明則會(huì)在上文所得qp初值的基礎(chǔ)上,利用根據(jù)哈達(dá)瑪變換得到的偏移量,對(duì)qp初值進(jìn)行適應(yīng)性調(diào)整,再利用調(diào)整后的量化參數(shù)進(jìn)行視頻壓縮,有助于提高視頻壓縮質(zhì)量。
以調(diào)整p幀的qp初值,使i幀與p幀之的qp差距與第一偏移量相符為例,如果采用方式一或方式二獲得p幀的qp初值,則可利用第一偏移量調(diào)整該初值,獲得p幀的調(diào)整后qp值;如果采用方式三獲得p幀的qp初值,即p幀的qp初值體現(xiàn)為p幀劃分出的各個(gè)編碼單元的qp初值,則可利用第一偏移量,調(diào)整每個(gè)編碼單元的qp初值,獲得各個(gè)編碼單元的調(diào)整后qp值。
同樣地,可以基于本發(fā)明設(shè)計(jì)思路,確定出表示p幀與b幀之間的qp差距的第二偏移量,并利用第二偏移量對(duì)本調(diào)整周期內(nèi)的p幀或b幀的qp初值做適當(dāng)調(diào)整,進(jìn)而再利用調(diào)整得到的量化參數(shù)進(jìn)行視頻壓縮,有助于提高視頻壓縮質(zhì)量。
具體地,本發(fā)明中的第二偏移量可以體現(xiàn)為pb,即p幀和b幀間的偏移量。參見圖3,示出了利用哈達(dá)瑪變換確定第二偏移量pb的流程圖,可以包括:
s301,利用所述哈達(dá)瑪變換,計(jì)算當(dāng)前幀的幀內(nèi)能量had內(nèi)和幀間能量had間,所述幀間能量為所述當(dāng)前幀與所述當(dāng)前幀在播放序上的前一幀的的 差值圖像能量。
計(jì)算視頻中每一幀的had能量的方式可參見上文圖2處所做介紹,此處不再贅述。
結(jié)合上文所舉示例,在播放序上,當(dāng)前幀為第101幀,前一幀為第100幀,則可分別計(jì)算得到幀內(nèi)能量had101和had100,幀間能量had100,101。
s302,根據(jù)所述had內(nèi)和had間,獲得第二偏移率pbq=1.3+clip(f,g,1-s)。
本發(fā)明方案中,關(guān)于相對(duì)強(qiáng)度s的計(jì)算方式可參見上文圖2處所做介紹,此處不再贅述。f和g可用于表示1-s的截取范圍,0<g-f≤2。舉例來說,g=0.0,f=0.7,結(jié)合具體的輸入視頻,如果1-s的計(jì)算值位于[0.0,0.7]之內(nèi),則可利用計(jì)算值確定pbq,如果計(jì)算值位于[0.0,0.7]之外,則可利用計(jì)算值靠近的0.0或者0.7確定pbq。舉例來說,若計(jì)算值為0.9,位于[0.0,0.7]之外且靠近于0.7,則pbq=1.3+0.7=2.0。
s303,利用所述pbq,獲得所述第二偏移量pb=(int)(6log2(pbq)+0.5)。
公式qp=12.0+6.0*log(q/0.85)可用于表示碼率與qp偏移之間的對(duì)應(yīng)關(guān)系,因此,在獲得第二偏移率pbq后,便可結(jié)合上述公式獲得第二偏移量pb。
需要說明的是,如果在rc模式下獲得qp初值,并利用第二偏移量,對(duì)p幀或b幀的qp初值進(jìn)行適當(dāng)調(diào)整,可能會(huì)導(dǎo)致速率控制的精度變低。針對(duì)于此,本發(fā)明還提供了如下優(yōu)選方案:判斷是否在rc模式下獲得qp初值,如果是,則維持p幀與b幀之間的qp差距,即,不在二者之間進(jìn)行偏移量調(diào)整;如果否,則可利用第二偏移量,調(diào)整p幀與b幀之間的qp差距,使二者在進(jìn)行視頻壓縮時(shí)使用的qp值的差距與第二偏移量相符。
可以理解地,針對(duì)在rc模式下獲得qp初值的情況,用戶可以結(jié)合實(shí)際需求,選擇利用第二偏移量,在p幀與b幀之間進(jìn)行偏移量調(diào)整;或者, 也可以選擇不在p幀與b幀之間進(jìn)行偏移量調(diào)整,本發(fā)明對(duì)此可不做具體限定,可以結(jié)合實(shí)際應(yīng)用情況確定。
為了更好的評(píng)估本發(fā)明方案的視頻壓縮性能,本發(fā)明還利用11個(gè)具有不同紋理豐富度、運(yùn)動(dòng)強(qiáng)度和分辨率的標(biāo)準(zhǔn)hevc測(cè)試片段,進(jìn)行了試驗(yàn)。
1.在cqp模式下進(jìn)行qp調(diào)整的方案的性能
利用測(cè)試片段,在x265-v1.6和hm-16.0中進(jìn)行了試驗(yàn),與現(xiàn)有技術(shù)相比較,本發(fā)明方案的編碼效率顯著提升,具體可通過bd-rate表示編碼效率。bd-rate可以理解為,針對(duì)同一個(gè)視頻片段,兩種編碼方法在相同質(zhì)量(可以體現(xiàn)為峰值信噪比psnr)下碼率的差別。本發(fā)明方案相對(duì)現(xiàn)有技術(shù)節(jié)省的碼率可以體現(xiàn)為表2中的負(fù)數(shù)。
表2
如表2所示,在沒有編碼速率損失的情況下,在x265-v1.6中,利用本發(fā)明方案可使bd-rate最高節(jié)省10%,平均節(jié)省6.44%;在hm-16.0中,利用本發(fā)明方案可使bd-rate最高節(jié)省5%,平均節(jié)省1.94%。
2.在rc模式下進(jìn)行qp調(diào)整的方案的性能
利用測(cè)試片段,在x265-v1.6中進(jìn)行了試驗(yàn),與現(xiàn)有技術(shù)相比較,本發(fā)明方案的編碼效率顯著提升。
表3
表3中,“cutree”列中表示的是,利用cutree工具調(diào)整在rc模式獲得的qp初值,可以節(jié)省的碼率;“本發(fā)明”列中表示的是,利用哈達(dá)瑪變換確 定出的偏移量調(diào)整在rc模式獲得的qp初值,可以節(jié)省的碼率;“二者集成”列中表示的是,利用cutree工具調(diào)整在rc模式獲得的qp初值后,再進(jìn)一步利用哈達(dá)瑪變換確定出的偏移量對(duì)qp值做適當(dāng)調(diào)整,可以節(jié)省的碼率。
如表3所示,與現(xiàn)有的rc模式實(shí)現(xiàn)的壓縮方案相比,本發(fā)明方案可使bd-rate平均節(jié)省2.4%。另外,當(dāng)集成cutree時(shí),能夠增益20%。
另外,為了評(píng)估本發(fā)明中利用哈達(dá)瑪變換計(jì)算偏移量的復(fù)雜度,可以從hm-16.0中提取xcalchads8x8islice功能,利用不同的標(biāo)準(zhǔn)hevc測(cè)試片段,使用e3-1230@3.30ghz線程的英特爾至強(qiáng)處理器運(yùn)行該功能1000萬次,以此來驗(yàn)證本發(fā)明偏移量的計(jì)算速度。驗(yàn)證結(jié)果為,針對(duì)1080p分辨率的測(cè)試片段,處理速度大約為300幀/秒,比最快的hevc/h.265編碼器快了幾個(gè)數(shù)量級(jí)。也就是說,從視頻壓縮的整體處理過程來說,雖然本發(fā)明相對(duì)現(xiàn)有技術(shù)增加了利用哈達(dá)瑪變換計(jì)算偏移量的過程,但該過程的計(jì)算速度很快,因此不會(huì)對(duì)視頻壓縮的整體效率產(chǎn)生過大影響,但卻可以顯著提高視頻壓縮質(zhì)量。
與圖1所示方法相對(duì)應(yīng),本發(fā)明實(shí)施例還提供一種視頻壓縮裝置400,參見圖4所示示意圖,所述裝置可包括:
第一偏移量確定單元401,用于在調(diào)整周期到達(dá)時(shí),利用哈達(dá)瑪變換,確定本調(diào)整周期內(nèi)的第一偏移量,所述第一偏移量用于表示i幀與p幀之間的量化參數(shù)差距;
量化參數(shù)調(diào)整單元402,用于利用所述第一偏移量,調(diào)整位于本調(diào)整周期內(nèi)的i幀或者p幀的量化參數(shù)初值,并利用調(diào)整得到的量化參數(shù)進(jìn)行視頻壓縮。
可選地,所述第一偏移量確定單元包括:
第一能量計(jì)算單元,用于利用所述哈達(dá)瑪變換,計(jì)算當(dāng)前幀的幀內(nèi)能量had內(nèi)和幀間能量had間,所述幀間能量為所述當(dāng)前幀與所述當(dāng)前幀在播放 序上的前一幀的差值圖像的能量;
第一偏移率獲得單元,用于根據(jù)所述had內(nèi)和had間,獲得第一偏移率ipq=1.4+k1*ipmax*clip(c,d,k2(1-s));其中,k1表示調(diào)整強(qiáng)度,0<k1<1;ipmax=clip(a,b,1-d內(nèi)/40),a和b表示1-d內(nèi)/40的截取范圍,0<b-a≤3,d內(nèi)=sum內(nèi)/norm內(nèi)/分辨率,sum內(nèi)=k3*sum前+had內(nèi),norm內(nèi)=k3*norm前+1,0<k3<1;c和d表示k2(1-s)的截取范圍,0<d-c≤3,1≤k2≤3,s表示相對(duì)強(qiáng)度,由d內(nèi)和d間計(jì)算獲得,d間=sum間/norm間/分辨率,sum間=k4*sum前間+had間,norm間=k4*norm前間+1,0<k4<1;
第一偏移量獲得單元,用于利用所述ipq,獲得所述第一偏移量ip=(int)(6log2(ipq)+0.5)。
可選地,所述當(dāng)前幀劃分出m個(gè)n×n大小的編碼單元,所述第一能量計(jì)算單元,具體用于通過以下公式計(jì)算每個(gè)n×n大小的編碼單元的能量hadcu,并將所述m個(gè)n×n大小的編碼單元的能量hadcu之和,確定為所述當(dāng)前幀的幀內(nèi)能量had內(nèi):
其中,c表示對(duì)編碼單元做哈達(dá)瑪變換得到的變換后編碼單元矩陣,i和j用于表示變換后編碼單元矩陣中的坐標(biāo)。
可選地,幀的量化參數(shù)初值體現(xiàn)為該幀劃分出的各個(gè)編碼單元的量化參數(shù)初值,則
所述量化參數(shù)調(diào)整單元,具體用于利用所述第一偏移量,調(diào)整每個(gè)編碼單元的量化參數(shù)初值。
可選地,所述裝置還包括:
第二偏移量確定單元,用于利用所述哈達(dá)瑪變換,確定本調(diào)整周期內(nèi)的第二偏移量,所述第二偏移量為用于表示p幀與b幀之間的量化參數(shù)差距;
所述量化參數(shù)調(diào)整單元,還用于利用所述第二偏移量,調(diào)整位于本調(diào)整周期內(nèi)的p幀或者b幀的量化參數(shù)初值,并利用調(diào)整得到的量化參數(shù)進(jìn)行視頻壓縮。
可選地,所述第二偏移量確定單元包括:
第二能量計(jì)算單元,用于利用所述哈達(dá)瑪變換,計(jì)算當(dāng)前幀的幀內(nèi)能量had內(nèi)和幀間能量had間,所述幀間能量為所述當(dāng)前幀與所述當(dāng)前幀在播放序上的前一幀的的差值圖像能量;
第二偏移率獲得單元,用于根據(jù)所述had內(nèi)和had間,獲得第二偏移率pbq=1.3+clip(f,g,1-s);其中,f和g表示1-s的截取范圍,0<g-f≤2,s表示相對(duì)強(qiáng)度,由d內(nèi)和d間計(jì)算獲得,d內(nèi)=sum內(nèi)/norm內(nèi)/分辨率,sum內(nèi)=k3*sum前+had內(nèi),norm內(nèi)=k3*norm前+1,0<k3<1;d間=sum間/norm間/分辨率,sum間=k4*sum前間+had間,norm間=k4*norm前間+1,0<k4<1;
第二偏移量獲得單元,用于利用所述pbq,獲得所述第二偏移量pb=(int)(6log2(pbq)+0.5)。
以上結(jié)合附圖詳細(xì)描述了本發(fā)明的優(yōu)選實(shí)施方式,但是,本發(fā)明并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行多種簡單變型,這些簡單變型均屬于本發(fā)明的保護(hù)范圍。
另外需要說明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過任何合適的方式進(jìn)行組合,為了避免不必要的重復(fù),本發(fā)明對(duì)各種可能的組合方式不再另行說明。
此外,本發(fā)明的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本發(fā)明的思想,其同樣應(yīng)當(dāng)視為本發(fā)明所公開的內(nèi)容。