本公開(kāi)涉及通信技術(shù)領(lǐng)域,尤其涉及一種圖形處理方法、裝置和系統(tǒng)。
背景技術(shù):
隨著高清圖像和高分辨率的普及,對(duì)圖像和視頻進(jìn)行編解碼變得尤為重要,編解碼技術(shù)也贏來(lái)挑戰(zhàn)和機(jī)遇并存的好時(shí)代。目前最流行的編碼技術(shù)是基于h.264/avc(或簡(jiǎn)稱為h.264)的視頻編碼標(biāo)準(zhǔn),其中,幀內(nèi)預(yù)測(cè)是h.264所采用的編碼技術(shù)之一。
在幀內(nèi)預(yù)測(cè)技術(shù)中,h.264提供了三種幀內(nèi)預(yù)測(cè)方式:基于4×4的亮度塊幀內(nèi)預(yù)測(cè)、基于16×16的亮度塊幀內(nèi)預(yù)測(cè)和基于8×8的色度塊幀內(nèi)預(yù)測(cè),并且為每一種預(yù)測(cè)方式提供多種預(yù)測(cè)模式,其中,4×4亮度塊的幀內(nèi)預(yù)測(cè)有9種預(yù)測(cè)模式,16×16亮度塊幀內(nèi)預(yù)測(cè)和8×8色度塊幀內(nèi)預(yù)測(cè)各有4種。對(duì)于選擇何種預(yù)測(cè)模式,編碼器通常使用預(yù)測(cè)塊和編碼塊之間差異最小的預(yù)測(cè)模式。為了在編碼質(zhì)量和碼率之間獲得平衡,h.264采用率失真優(yōu)化(ratedistortionoptimization,rdo)策略進(jìn)行最優(yōu)化編碼模式選擇,通過(guò)遍歷所有可能的編碼模式,最后選擇最小率失真代價(jià)模式作為最佳幀內(nèi)預(yù)測(cè)模式。
當(dāng)對(duì)亮度宏塊預(yù)測(cè)時(shí),按照rdo策略需要先后計(jì)算出9種4×4預(yù)測(cè)模式的最小代價(jià)和4種16×16預(yù)測(cè)模式的最小代價(jià),然后從中選擇較小的預(yù)測(cè)模式。采用這種幀內(nèi)預(yù)測(cè)技術(shù),需要對(duì)每個(gè)宏塊進(jìn)行592次rdo計(jì)算,才能確定每個(gè)宏塊的幀內(nèi)預(yù)測(cè)模式,計(jì)算復(fù)雜度太高。另外,該方式?jīng)]有充分考慮圖像內(nèi)容,導(dǎo)致壓縮效率低。
技術(shù)實(shí)現(xiàn)要素:
本公開(kāi)實(shí)施例提供一種圖像處理方法、裝置和系統(tǒng),該方法結(jié)合圖像內(nèi)容進(jìn)行幀內(nèi)預(yù)測(cè)模式確定,降低了計(jì)算復(fù)雜度,提高壓縮效率。所述技術(shù)方案如下:
根據(jù)本公開(kāi)實(shí)施例的第一方面,提供一種圖像處理方法,該方法包括:
獲取當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值,第一宏塊與當(dāng)前宏塊相鄰且位于當(dāng)前宏塊的第一側(cè);
獲取當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值,第二宏塊與當(dāng)前宏塊相鄰且位于當(dāng)前宏塊的第二側(cè);
根據(jù)第一統(tǒng)計(jì)值、第二統(tǒng)計(jì)值和第一閾值,確定當(dāng)前宏塊的宏塊類型和預(yù)測(cè)模式,宏塊類型包括幀內(nèi)預(yù)測(cè)宏塊和非幀內(nèi)預(yù)測(cè)宏塊。
通過(guò)結(jié)合圖像內(nèi)容進(jìn)行幀內(nèi)預(yù)測(cè)模式確定,降低了計(jì)算復(fù)雜度,提高壓縮效率。
在一個(gè)實(shí)施例中,獲取當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值包括:比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第一宏塊中對(duì)應(yīng)像素的像素值是否相同;統(tǒng)計(jì)當(dāng)前宏塊與第一宏塊中像素值相同的個(gè)數(shù),得到第一統(tǒng)計(jì)值。
在一個(gè)實(shí)施例中,獲取當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值包括:比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第二宏塊中對(duì)應(yīng)像素的像素值是否相同;統(tǒng)計(jì)當(dāng)前宏塊與第二宏塊中像素值相同的個(gè)數(shù),得到第二統(tǒng)計(jì)值。
在一個(gè)實(shí)施例中,根據(jù)第一統(tǒng)計(jì)值、第二統(tǒng)計(jì)值和第一閾值,確定當(dāng)前宏塊的類型和預(yù)測(cè)模式包括:
比較第一統(tǒng)計(jì)值和第二統(tǒng)計(jì)值,以及比較第一統(tǒng)計(jì)值和第二統(tǒng)計(jì)值是否均大于或等于第一閾值;
當(dāng)?shù)谝唤y(tǒng)計(jì)值大于或等于第二統(tǒng)計(jì)值,且第一統(tǒng)計(jì)值大于或等于第一閾值時(shí),當(dāng)前宏塊為幀內(nèi)預(yù)測(cè)宏塊,且當(dāng)前宏塊的預(yù)測(cè)模式為第一預(yù)測(cè)模式;
當(dāng)?shù)诙y(tǒng)計(jì)值大于第一統(tǒng)計(jì)值,且第二統(tǒng)計(jì)值大于或等于第一閾值時(shí),當(dāng)前宏塊為幀內(nèi)預(yù)測(cè)宏塊,且當(dāng)前宏塊的預(yù)測(cè)模式為第二預(yù)測(cè)模式;
當(dāng)?shù)谝唤y(tǒng)計(jì)值大于或等于第二統(tǒng)計(jì)值,且第一統(tǒng)計(jì)值小于第一閾值時(shí),或者,當(dāng)?shù)诙y(tǒng)計(jì)值大于第一統(tǒng)計(jì)值,且第二統(tǒng)計(jì)值小于第一閾值時(shí),當(dāng)前宏塊為非幀內(nèi)預(yù)測(cè)宏塊。
在一個(gè)實(shí)施例中,第一閾值大于或等于第二閾值,第二閾值等于當(dāng)前宏塊的大小與預(yù)設(shè)系數(shù)的乘積。
根據(jù)本公開(kāi)實(shí)施例的第二方面,提供一種圖像處理方法,包括:
獲取一幀圖像,一幀圖像中包含多個(gè)宏塊;
按照第一方面及第一方面的任意一個(gè)實(shí)施例所提供的方法,確定一幀圖像中每個(gè)宏塊的宏塊類型和預(yù)測(cè)模式,宏塊類型包括幀內(nèi)預(yù)測(cè)宏塊和非幀內(nèi)預(yù)測(cè)宏塊;
對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式進(jìn)行編碼得到第一編碼數(shù)據(jù);
對(duì)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值進(jìn)行編碼,得到第二編碼數(shù)據(jù);
將第一編碼數(shù)據(jù)和第二編碼數(shù)據(jù)打包成碼流發(fā)送給終端設(shè)備。
采用這種幀內(nèi)預(yù)測(cè)技術(shù),通過(guò)考慮圖像內(nèi)容,對(duì)一幀畫面中每個(gè)宏塊的宏塊類型進(jìn)行區(qū)分和預(yù)測(cè)模式的確定,無(wú)需對(duì)每個(gè)宏塊進(jìn)行多次計(jì)算,大大降低了計(jì)算復(fù)雜度,在達(dá)到無(wú)損壓縮的同時(shí)提高壓縮效率。
在一個(gè)實(shí)施例中,當(dāng)每個(gè)幀內(nèi)預(yù)測(cè)宏塊有像素殘差時(shí),對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式進(jìn)行編碼,得到第一編碼數(shù)據(jù)包括:
對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式和每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差進(jìn)行編碼,得到第一編碼數(shù)據(jù);像素殘差為根據(jù)幀內(nèi)預(yù)測(cè)宏塊與第一宏塊或第二宏塊的像素差值得到的。
根據(jù)本公開(kāi)實(shí)施例的第三方面,提供一種圖像處理的方法,包括:
接收服務(wù)器發(fā)送的碼流;
對(duì)碼流中的每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值;
對(duì)碼流中的每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值;
根據(jù)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值和每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值進(jìn)行畫面顯示。
該碼流中編碼數(shù)據(jù)在編碼時(shí)考慮圖像內(nèi)容,達(dá)到無(wú)損壓縮,在解碼過(guò)程中能夠快速解碼,提高解碼效率。
在一個(gè)實(shí)施例中,對(duì)碼流中的每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值包括:
對(duì)碼流中每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式;
當(dāng)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式為第一預(yù)測(cè)模式時(shí),幀內(nèi)預(yù)測(cè)宏塊的像素值為第一宏塊的像素值;
當(dāng)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式為第二預(yù)測(cè)模式時(shí),幀內(nèi)預(yù)測(cè)宏塊的像素值為第二宏塊的像素值;
第一宏塊與幀內(nèi)預(yù)測(cè)宏塊相鄰且位于幀內(nèi)預(yù)測(cè)宏塊的第一側(cè),第二宏塊與幀內(nèi)預(yù)測(cè)宏塊相鄰且位于幀內(nèi)預(yù)測(cè)宏塊的第二側(cè)。
在一個(gè)實(shí)施例中,該方法還包括:
對(duì)碼流中每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差編碼數(shù)據(jù)進(jìn)行解碼;
將解碼后的像素殘差疊加到對(duì)應(yīng)的幀內(nèi)預(yù)測(cè)宏塊的像素值上。
根據(jù)本公開(kāi)實(shí)施例的第四方面,提供一種服務(wù)器,包括:
獲取模塊,用于獲取當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值,第一宏塊與當(dāng)前宏塊相鄰且位于當(dāng)前宏塊的第一側(cè);
獲取模塊,用于獲取當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值,第二宏塊與當(dāng)前宏塊相鄰且位于當(dāng)前宏塊的第二側(cè);
確定模塊,用于根據(jù)第一統(tǒng)計(jì)值、第二統(tǒng)計(jì)值和第一閾值,確定當(dāng)前宏塊的宏塊類型和預(yù)測(cè)模式,宏塊類型包括幀內(nèi)預(yù)測(cè)宏塊和非幀內(nèi)預(yù)測(cè)宏塊。
在一個(gè)實(shí)施例中,獲取模塊包括:
比較子模塊,用于比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第一宏塊中對(duì)應(yīng)像素的像素值是否相同;
統(tǒng)計(jì)子模塊,用于統(tǒng)計(jì)當(dāng)前宏塊與第一宏塊中像素值相同的個(gè)數(shù),得到第一統(tǒng)計(jì)值。
在一個(gè)實(shí)施例中,比較子模塊,用于比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第二宏塊中對(duì)應(yīng)像素的像素值是否相同;
統(tǒng)計(jì)子模塊,用于統(tǒng)計(jì)當(dāng)前宏塊與第二宏塊中像素值相同的個(gè)數(shù),得到第二統(tǒng)計(jì)值。
在一個(gè)實(shí)施例中,確定模塊包括:
第一確定子模塊,用于比較第一統(tǒng)計(jì)值和第二統(tǒng)計(jì)值,以及比較第一統(tǒng)計(jì)值和第二統(tǒng)計(jì)值是否均大于或等于第一閾值;
第二確定子模塊,用于當(dāng)?shù)谝唤y(tǒng)計(jì)值大于或等于第二統(tǒng)計(jì)值,且第一統(tǒng)計(jì)值大于或等于第一閾值時(shí),當(dāng)前宏塊為幀內(nèi)預(yù)測(cè)宏塊,且當(dāng)前宏塊的預(yù)測(cè)模式為第一預(yù)測(cè)模式;
第二確定子模塊,用于當(dāng)?shù)诙y(tǒng)計(jì)值大于第一統(tǒng)計(jì)值,且第二統(tǒng)計(jì)值大于或等于第一閾值時(shí),當(dāng)前宏塊為幀內(nèi)預(yù)測(cè)宏塊,且當(dāng)前宏塊的預(yù)測(cè)模式為第二預(yù)測(cè)模式;
第二確定子模塊,用于當(dāng)?shù)谝唤y(tǒng)計(jì)值大于或等于第二統(tǒng)計(jì)值,且第一統(tǒng)計(jì)值小于第一閾值時(shí),或者,當(dāng)?shù)诙y(tǒng)計(jì)值大于第一統(tǒng)計(jì)值,且第二統(tǒng)計(jì)值小于第一閾值時(shí),當(dāng)前宏塊為非幀內(nèi)預(yù)測(cè)宏塊。
在一個(gè)實(shí)施例中,第一閾值大于或等于第二閾值,第二閾值等于當(dāng)前宏塊的大小與預(yù)設(shè)系數(shù)的乘積。
根據(jù)本公開(kāi)實(shí)施例的第五方面,提供一種服務(wù)器,包括:
獲取模塊,用于獲取一幀圖像,一幀圖像中包含多個(gè)宏塊;
確定模塊,用于按照第一方面或第一方面中任一實(shí)施例所對(duì)應(yīng)的方法,確定一幀圖像中每個(gè)宏塊的宏塊類型和預(yù)測(cè)模式,宏塊類型包括幀內(nèi)預(yù)測(cè)宏塊和非幀內(nèi)預(yù)測(cè)宏塊;
編碼模塊,用于對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式進(jìn)行編碼得到第一編碼數(shù)據(jù);
編碼模塊,用于對(duì)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值進(jìn)行編碼,得到第二編碼數(shù)據(jù);
發(fā)送模塊,用于將第一編碼數(shù)據(jù)和第二編碼數(shù)據(jù)打包成碼流發(fā)送給終端設(shè)備。
在一個(gè)實(shí)施例中,編碼模塊還用于對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式和每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差進(jìn)行編碼,得到第一編碼數(shù)據(jù);像素殘差為根據(jù)幀內(nèi)預(yù)測(cè)宏塊與第一宏塊或第二宏塊的像素差值得到的。
根據(jù)本公開(kāi)實(shí)施例的第六方面,提供一種終端設(shè)備,包括:
接收模塊,用于接收服務(wù)器發(fā)送的碼流;
解碼模塊,用于對(duì)碼流中的每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值;
解碼模塊,用于對(duì)碼流中的每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值;
處理模塊,用于根據(jù)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值和每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值進(jìn)行畫面顯示。
在一個(gè)實(shí)施例中,解碼模塊包括:
解碼子模塊,用于對(duì)碼流中每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式;
處理子模塊,用于當(dāng)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式為第一預(yù)測(cè)模式時(shí),幀內(nèi)預(yù)測(cè)宏塊的像素值為第一宏塊的像素值;
處理子模塊,用于當(dāng)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式為第二預(yù)測(cè)模式時(shí),幀內(nèi)預(yù)測(cè)宏塊的像素值為第二宏塊的像素值;
第一宏塊與幀內(nèi)預(yù)測(cè)宏塊相鄰且位于幀內(nèi)預(yù)測(cè)宏塊的第一側(cè),第二宏塊與幀內(nèi)預(yù)測(cè)宏塊相鄰且位于幀內(nèi)預(yù)測(cè)宏塊的第二側(cè)。
在一個(gè)實(shí)施例中,解碼子模塊,還用于對(duì)碼流中每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差編碼數(shù)據(jù)進(jìn)行解碼;
處理子模塊,還用于將解碼后的像素殘差疊加到對(duì)應(yīng)的幀內(nèi)預(yù)測(cè)宏塊的像素值上。
根據(jù)本公開(kāi)實(shí)施例的第七方面,提供一種幀內(nèi)預(yù)測(cè)系統(tǒng),包括第五方面及第五方面的任意一個(gè)實(shí)施例所提供的服務(wù)器和第六方面及第六方面的任意一個(gè)實(shí)施例所提供的終端設(shè)備。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開(kāi)。
附圖說(shuō)明
此處的附圖被并入說(shuō)明書中并構(gòu)成本說(shuō)明書的一部分,示出了符合本公開(kāi)的實(shí)施例,并與說(shuō)明書一起用于解釋本公開(kāi)的原理。
圖1是本公開(kāi)實(shí)施例提供的一種圖像處理的方法流程圖;
圖2是本公開(kāi)實(shí)施例提供的一種圖像處理的方法流程圖;
圖3是本公開(kāi)實(shí)施例提供的一種圖像處理的方法流程圖;
圖4是本公開(kāi)實(shí)施例提供的一種移動(dòng)零終端畫面顯示過(guò)程流程圖;
圖5是本公開(kāi)實(shí)施例提供的一種移動(dòng)零終端預(yù)測(cè)模式示意圖;
圖6是本公開(kāi)實(shí)施例提供的一種服務(wù)器的結(jié)構(gòu)圖;
圖7是本公開(kāi)實(shí)施例提供的一種服務(wù)器的結(jié)構(gòu)圖;
圖8是本公開(kāi)實(shí)施例提供的一種服務(wù)器的結(jié)構(gòu)圖;
圖9是本公開(kāi)實(shí)施例提供的一種終端設(shè)備的結(jié)構(gòu)圖;
圖10是本公開(kāi)實(shí)施例提供的一種終端設(shè)備的結(jié)構(gòu)圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開(kāi)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開(kāi)的一些方面相一致的裝置和方法的例子。
本公開(kāi)實(shí)施例提供一種圖像處理的方法,如圖1所示,該方法包括以下步驟:
101、獲取當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值。
其中,第一宏塊與當(dāng)前宏塊相鄰且位于當(dāng)前宏塊的第一側(cè)。宏塊是h.264標(biāo)準(zhǔn)中的基本編碼單元,每個(gè)宏塊的大小為m×n像素,一般情況下,宏塊的大小為16×16個(gè)像素。可以理解的是,當(dāng)前宏塊和第一宏塊的大小是相同的。
對(duì)于獲取當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值包括:
比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第一宏塊中對(duì)應(yīng)像素的像素值是否相同;
統(tǒng)計(jì)當(dāng)前宏塊和第一宏塊中像素值相同的個(gè)數(shù),得到第一統(tǒng)計(jì)值。
在本發(fā)明的一個(gè)實(shí)施例中,比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第一宏塊中對(duì)應(yīng)像素的像素值是否相同,可以是比較當(dāng)前宏塊中每個(gè)像素的像素值與第一宏塊中對(duì)應(yīng)像素的像素值大小,如果對(duì)應(yīng)兩個(gè)像素的像素值相等,意味著這兩個(gè)像素為相同像素,則當(dāng)前宏塊與第一宏塊中相同像素點(diǎn)的數(shù)量加1,進(jìn)而統(tǒng)計(jì)得到當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值。
在本發(fā)明的另一個(gè)實(shí)施例中,比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第一宏塊中對(duì)應(yīng)像素的像素值是否相同,可以是對(duì)當(dāng)前宏塊中每個(gè)像素的像素值與第一宏塊中對(duì)應(yīng)像素的像素值求差,如果對(duì)應(yīng)兩個(gè)像素的像素值的差為0,意味著為這兩個(gè)像素為相同像素,則當(dāng)前宏塊與第一宏塊中相同像素點(diǎn)的數(shù)量加1,進(jìn)而統(tǒng)計(jì)得到當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值。
在本發(fā)明的一個(gè)實(shí)施例中,比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第一宏塊中對(duì)應(yīng)像素的像素值是否相同,可以是獲取當(dāng)前宏塊中每個(gè)像素的像素值與第一宏塊中對(duì)應(yīng)像素的像素值的差的絕對(duì)值,如果對(duì)應(yīng)兩個(gè)像素的像素值的差的絕對(duì)值為0,意味著這兩個(gè)像素為相同像素,則當(dāng)前宏塊與第一宏塊中相同像素點(diǎn)的數(shù)量加1,進(jìn)而統(tǒng)計(jì)得到當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值。
可以理解的是,若當(dāng)前宏塊與第一宏塊中所有對(duì)應(yīng)的像素的像素值均相同時(shí),第一統(tǒng)計(jì)值的大小為當(dāng)前宏塊的大??;若當(dāng)前宏塊與第一宏塊中所有對(duì)應(yīng)的像素的像素值均不相同時(shí),第一統(tǒng)計(jì)值的大小為0;因此,第一統(tǒng)計(jì)值的范圍為[0,當(dāng)前宏塊的大小]。
102、獲取當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值。
其中,第二宏塊與當(dāng)前宏塊相鄰且位于當(dāng)前宏塊的上方。根據(jù)步驟101中所描述的,當(dāng)前宏塊和第二宏塊的大小相同,而第一宏塊與第二宏塊的區(qū)別僅在于,第一宏塊和第二宏塊所處的位置不同。
對(duì)于獲取當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值包括:
比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第二宏塊中對(duì)應(yīng)像素的像素值是否相同;
統(tǒng)計(jì)當(dāng)前宏塊與第二宏塊中像素值相同的個(gè)數(shù),得到第二統(tǒng)計(jì)值。
在本發(fā)明的一個(gè)實(shí)施例中,比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第二宏塊中對(duì)應(yīng)像素的像素值是否相同,可以是比較當(dāng)前宏塊中每個(gè)像素的像素值與第二宏塊中對(duì)應(yīng)像素的像素值大小,如果對(duì)應(yīng)兩個(gè)像素的像素值相等,意味著這兩個(gè)像素為相同像素,則當(dāng)前宏塊與第二宏塊中相同像素點(diǎn)的數(shù)量加1,進(jìn)而統(tǒng)計(jì)得到當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值。
在本發(fā)明的另一個(gè)實(shí)施例中,比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第二宏塊中對(duì)應(yīng)像素的像素值是否相同,可以是對(duì)當(dāng)前宏塊中每個(gè)像素的像素值與第二宏塊中對(duì)應(yīng)像素的像素值求差,如果對(duì)應(yīng)兩個(gè)像素的像素值的差為0,意味著為這兩個(gè)像素為相同像素,則當(dāng)前宏塊與第二宏塊中相同像素點(diǎn)的數(shù)量加1,進(jìn)而統(tǒng)計(jì)得到當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值。
在本發(fā)明的另一個(gè)實(shí)施例中,比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第二宏塊中對(duì)應(yīng)像素的像素值是否相同,可以是獲取當(dāng)前宏塊中每個(gè)像素的像素值與第二宏塊中對(duì)應(yīng)像素的像素值的差的絕對(duì)值,如果對(duì)應(yīng)兩個(gè)像素的像素值的差的絕對(duì)值為0,意味著這兩個(gè)像素為相同像素,則當(dāng)前宏塊與第二宏塊中相同像素點(diǎn)的數(shù)量加1,進(jìn)而統(tǒng)計(jì)得到當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值。
可以理解的是,若當(dāng)前宏塊與第二宏塊中所有對(duì)應(yīng)的像素的像素值均相同時(shí),第二統(tǒng)計(jì)值的大小為當(dāng)前宏塊的大??;若當(dāng)前宏塊與第二宏塊中所有對(duì)應(yīng)的像素的像素值均不相同時(shí),第二統(tǒng)計(jì)值的大小為0;因此,第二統(tǒng)計(jì)值的范圍為[0,當(dāng)前宏塊的大小]。
103、根據(jù)第一統(tǒng)計(jì)值、第二統(tǒng)計(jì)值和第一閾值,確定當(dāng)前宏塊的宏塊類型和預(yù)測(cè)模式。
其中,宏塊類型包括幀內(nèi)預(yù)測(cè)宏塊和非幀內(nèi)預(yù)測(cè)宏塊。幀內(nèi)預(yù)測(cè)宏塊意味著當(dāng)前宏塊與第一宏塊或第二宏塊相同或相似,當(dāng)前宏塊的像素值可以通過(guò)第一宏塊或第二宏塊的像素值得到;非幀內(nèi)預(yù)測(cè)宏塊意味著當(dāng)前宏塊與第一宏塊或第二宏塊不相同或不相似。只要在當(dāng)前宏塊的宏塊類型為幀內(nèi)預(yù)測(cè)宏塊時(shí),當(dāng)前宏塊才有預(yù)測(cè)模式可言。
另外,第一閾值大于或等于第二閾值,第二閾值等于當(dāng)前宏塊的大小與預(yù)設(shè)系數(shù)的乘積。第一閾值和預(yù)設(shè)系數(shù)可以根據(jù)實(shí)際需求進(jìn)行調(diào)整,本公開(kāi)實(shí)施例僅以此為例進(jìn)行說(shuō)明。
在本發(fā)明實(shí)施例中,根據(jù)第一統(tǒng)計(jì)值、第二統(tǒng)計(jì)值、第一閾值,確定當(dāng)前宏塊的宏塊類型和預(yù)測(cè)模式包括:
比較第一統(tǒng)計(jì)值和第二統(tǒng)計(jì)值,以及比較第一統(tǒng)計(jì)值和第二統(tǒng)計(jì)值是否均大于或等于第一閾值;
當(dāng)?shù)谝唤y(tǒng)計(jì)值大于或等于第二統(tǒng)計(jì)值,且第一統(tǒng)計(jì)值大于或等于第一閾值時(shí),當(dāng)前宏塊為幀內(nèi)預(yù)測(cè)宏塊,且當(dāng)前宏塊的預(yù)測(cè)模式為第一預(yù)測(cè)模式;
當(dāng)?shù)诙y(tǒng)計(jì)值大于第一統(tǒng)計(jì)值,且第二統(tǒng)計(jì)值大于或等于第一閾值時(shí),當(dāng)前宏塊為幀內(nèi)預(yù)測(cè)宏塊,且當(dāng)前宏塊的預(yù)測(cè)模式為第二預(yù)測(cè)模式;
當(dāng)?shù)谝唤y(tǒng)計(jì)值大于或等于第二統(tǒng)計(jì)值,且第一統(tǒng)計(jì)值小于第一閾值時(shí),或者,當(dāng)?shù)诙y(tǒng)計(jì)值大于第一統(tǒng)計(jì)值,且第二統(tǒng)計(jì)值小于第一閾值時(shí),當(dāng)前宏塊為非幀內(nèi)預(yù)測(cè)宏塊。
其中,第一預(yù)測(cè)模式和第二預(yù)測(cè)模式可以用不同的標(biāo)識(shí)進(jìn)行標(biāo)記,可以用0和1進(jìn)行標(biāo)記,也可以用a和b進(jìn)行標(biāo)記。本發(fā)明實(shí)施例對(duì)此不作具體限定。
為了更加清楚理解上述步驟,此處以宏塊大小為16×16個(gè)像素,第二閾值為256×90%,則第一閾值大于或等于256×90%,第一預(yù)測(cè)模式和第二預(yù)測(cè)模式分別用0和1標(biāo)記為例進(jìn)行說(shuō)明。
當(dāng)?shù)谝唤y(tǒng)計(jì)值大于或等于第二統(tǒng)計(jì)值,且第一統(tǒng)計(jì)值大于或等于256×90%時(shí),當(dāng)前宏塊為幀內(nèi)預(yù)測(cè)宏塊,且當(dāng)前宏塊的預(yù)測(cè)模式為0;
當(dāng)?shù)诙y(tǒng)計(jì)值大于第一統(tǒng)計(jì)值,且第二統(tǒng)計(jì)值大于或等于256×90%時(shí),當(dāng)前宏塊為幀內(nèi)預(yù)測(cè)宏塊,且當(dāng)前宏塊的預(yù)測(cè)模式為1;
當(dāng)?shù)谝唤y(tǒng)計(jì)值大于或等于第二統(tǒng)計(jì)值,且第一統(tǒng)計(jì)值小于256×90%時(shí),或者,當(dāng)?shù)诙y(tǒng)計(jì)值大于第一統(tǒng)計(jì)值,且第二統(tǒng)計(jì)值小于256×90%時(shí),當(dāng)前宏塊為非幀內(nèi)預(yù)測(cè)宏塊。
本公開(kāi)實(shí)施例提供的幀內(nèi)預(yù)測(cè)方法,通過(guò)獲取當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值、以及獲取所述當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值,根據(jù)第一統(tǒng)計(jì)值、第二統(tǒng)計(jì)值和第一閾值,確定當(dāng)前宏塊的宏塊類型和預(yù)測(cè)模式。采用這種幀內(nèi)預(yù)測(cè)技術(shù),結(jié)合圖像內(nèi)容對(duì)當(dāng)前宏塊的宏塊類型的區(qū)分來(lái)確定幀內(nèi)預(yù)測(cè)模式,無(wú)需對(duì)每個(gè)宏塊進(jìn)行多次計(jì)算,大大降低了計(jì)算復(fù)雜度,提高壓縮效率。
基于上述圖1對(duì)應(yīng)的實(shí)施例中所描述的當(dāng)前宏塊的幀內(nèi)預(yù)測(cè)方法,下面結(jié)合圖2對(duì)一幀圖像的幀內(nèi)預(yù)測(cè)方法進(jìn)行說(shuō)明。
201、獲取一幀圖像。
其中,一幀圖像中包含多個(gè)宏塊。幀是影像動(dòng)畫中最小單元的單幅影像畫面,一幀就是一副靜止的畫面。在本發(fā)明實(shí)施例中,可以根據(jù)屏幕分辨率的大小,自適應(yīng)的將畫面分解成若干高m寬n大小的宏塊,每個(gè)宏塊中有m×n個(gè)像素點(diǎn)。
202、按照步驟101~103所述的方法,確定一幀圖像中每個(gè)宏塊的宏塊類型和預(yù)測(cè)模式。
基于步驟101~103所描述的,宏塊的類型包括幀內(nèi)預(yù)測(cè)宏塊和非幀內(nèi)預(yù)測(cè)宏,幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式包括第一預(yù)測(cè)模式和第二預(yù)測(cè)模式。因此,根據(jù)步驟101~103所述的方法,步驟202對(duì)一幀圖像中的每個(gè)宏塊進(jìn)行宏塊類型的區(qū)分,以及在宏塊類型為幀內(nèi)預(yù)測(cè)宏塊時(shí),確定該宏塊的預(yù)測(cè)模式。
203、對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式進(jìn)行編碼,得到第一編碼數(shù)據(jù)。
當(dāng)每個(gè)幀內(nèi)預(yù)測(cè)宏塊無(wú)像素殘差時(shí),僅需要對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式進(jìn)行編碼,得到第一編碼數(shù)據(jù)。在本發(fā)明的一個(gè)實(shí)施例中,可以對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式用游程進(jìn)行編碼、以及對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差進(jìn)行熵編碼,得到第一編碼數(shù)據(jù)。其中,游程(runlengthcoding,rlc)編碼,又稱“運(yùn)動(dòng)長(zhǎng)度編碼”或“行程編碼”,是一種統(tǒng)計(jì)編碼,該編碼屬于無(wú)損壓縮編碼,常見(jiàn)的游程編碼格式包括tga、packbitd、pcx以及ilbm等。
當(dāng)每個(gè)幀內(nèi)預(yù)測(cè)宏塊有像素殘差時(shí),需要對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式和每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差進(jìn)行編碼,得到第一編碼數(shù)據(jù);對(duì)于每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式可以采用游程編碼,對(duì)于每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差進(jìn)行熵編碼。熵編碼即編碼過(guò)程中按照熵原理不丟失任何信息的編碼,常見(jiàn)的熵編碼包括:香農(nóng)(shannon)編碼、哈弗曼(huffman)編碼和算術(shù)編碼(arithmeticcoding);熵編碼把一系列用來(lái)表示視頻序列的元素符號(hào)轉(zhuǎn)變?yōu)橐粋€(gè)用來(lái)傳輸或者存儲(chǔ)的壓縮碼流。
在本發(fā)明實(shí)施例中,每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差為根據(jù)幀內(nèi)預(yù)測(cè)宏塊與第一宏塊或第二宏塊的像素差值得到的。
以宏塊的大小為16×16為例示例說(shuō)明。當(dāng)該宏塊為幀內(nèi)預(yù)測(cè)宏塊,且預(yù)測(cè)模式為第一模式時(shí),意味著該宏塊與第一宏塊相同或相似;當(dāng)該宏塊與第一宏塊相同時(shí),該宏塊與第二宏塊對(duì)應(yīng)像素的像素值均相同,則該宏塊與第一宏塊的像素殘差為0,當(dāng)該宏塊與第一宏塊相似時(shí),該宏塊與第一宏塊中對(duì)應(yīng)像素的像素值有部分是不相同的,而這部分不相同的像素的像素值的差值即為該宏塊與第一宏塊的像素殘差。
當(dāng)該宏塊為幀內(nèi)預(yù)測(cè)宏塊,且預(yù)測(cè)模式為第二預(yù)測(cè)模式時(shí),意味著該宏塊與第二宏塊相同或相似;當(dāng)該宏塊與第二宏塊相同時(shí),該宏塊與第二宏塊對(duì)應(yīng)像素的像素值均相同,則該幀內(nèi)預(yù)測(cè)宏塊與第二宏塊的像素殘差為0;當(dāng)該宏塊與第二宏塊相似時(shí),該宏塊與第二宏塊中對(duì)應(yīng)像素的像素值有部分是不相同的,而這部分不相同的像素的像素值的差值即為該宏塊與第二宏塊的像素殘差。
204、對(duì)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值進(jìn)行編碼,得到第二編碼數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,可以對(duì)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值采用jpeg進(jìn)行壓縮編碼,得到第二編碼數(shù)據(jù)。其中,jpeg是jointphotographicexportsgroup的英文縮寫,中文稱之為聯(lián)合圖像專家小組,該小組隸屬于iso國(guó)際標(biāo)準(zhǔn)化組織,主要負(fù)責(zé)定制靜態(tài)數(shù)字圖像的編碼方法,即jpeg算法。
205、將第一編碼數(shù)據(jù)和第二編碼數(shù)據(jù)打包成碼流發(fā)送給終端設(shè)備。
本公開(kāi)實(shí)施例提供的幀內(nèi)預(yù)測(cè)方法,通過(guò)獲取一幀圖像,確定一幀圖像中每個(gè)宏塊的宏塊類型和預(yù)測(cè)模式,當(dāng)宏塊類型為幀內(nèi)預(yù)測(cè)模式時(shí),根據(jù)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式,獲取每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差,對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式和像素殘差進(jìn)行編碼,得到第一編碼數(shù)據(jù),對(duì)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值進(jìn)行編碼,得到第二編碼數(shù)據(jù),將第一編碼數(shù)據(jù)和第二編碼數(shù)據(jù)打包成碼流發(fā)送給終端設(shè)備。采用這種幀內(nèi)預(yù)測(cè)技術(shù),通過(guò)考慮圖像內(nèi)容,對(duì)一幀畫面中每個(gè)宏塊的宏塊類型進(jìn)行區(qū)分和預(yù)測(cè)模式的確定,無(wú)需對(duì)每個(gè)宏塊進(jìn)行多次計(jì)算,大大降低了計(jì)算復(fù)雜度,在達(dá)到無(wú)損壓縮的同時(shí)提高壓縮效率。
當(dāng)終端設(shè)備接收到服務(wù)器發(fā)送的碼流時(shí),結(jié)合圖3所示,對(duì)終端設(shè)備的操作進(jìn)行說(shuō)明。
301、接收服務(wù)器發(fā)送的碼流。
其中,該碼流中包含幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)和非幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)。在本發(fā)明實(shí)施例中,幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)可通過(guò)jpeg編碼得到,非幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)可通過(guò)游程和熵編碼得到。
302、對(duì)碼流中的每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值。
在本發(fā)明實(shí)施例中,當(dāng)碼流中的每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)為通過(guò)jpeg編碼時(shí),可對(duì)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊進(jìn)行jpeg解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值??梢岳斫獾氖?,當(dāng)碼流中的每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)采用其他編碼方式時(shí),可適應(yīng)性對(duì)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊進(jìn)行對(duì)應(yīng)的解碼。
303、對(duì)碼流中的每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值。
在本發(fā)明實(shí)施例中,對(duì)所述碼流中的每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值包括:
對(duì)碼流中每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式;
當(dāng)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式為第一預(yù)測(cè)模式時(shí),該幀內(nèi)預(yù)測(cè)宏塊的像素值為第一宏塊的像素值;
當(dāng)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式為第二預(yù)測(cè)模式時(shí),該幀內(nèi)預(yù)測(cè)宏塊的像素值為第二宏塊的像素值;
其中,第一宏塊與該幀內(nèi)預(yù)測(cè)宏塊相鄰且位于該幀內(nèi)預(yù)測(cè)宏塊的第一側(cè),第二宏塊與該幀內(nèi)預(yù)測(cè)宏塊相鄰且位于該幀內(nèi)預(yù)測(cè)宏塊的第二側(cè)。
當(dāng)碼流中包含每個(gè)幀內(nèi)預(yù)測(cè)預(yù)測(cè)宏塊的像素殘差時(shí),該方法還包括:對(duì)碼流中每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差編碼數(shù)據(jù)進(jìn)行解碼;將解碼后的像素殘差疊加到對(duì)應(yīng)的幀內(nèi)預(yù)測(cè)宏塊的像素值上。
基于圖1和圖2所描述的幀內(nèi)預(yù)測(cè)方法,幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式包括第一預(yù)測(cè)模式和第二預(yù)測(cè)模式。若服務(wù)器在編碼時(shí)對(duì)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式用游程進(jìn)行編碼,此時(shí)終端設(shè)備對(duì)碼流中的游程進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式;若服務(wù)器在編碼時(shí)對(duì)幀內(nèi)預(yù)測(cè)宏塊的像素殘差用熵編碼進(jìn)行編碼時(shí),此時(shí)終端設(shè)備對(duì)熵編碼進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的殘差。進(jìn)而,當(dāng)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式為第一預(yù)測(cè)模式時(shí),將第一宏塊的像素值復(fù)制到該幀內(nèi)預(yù)測(cè)宏塊,當(dāng)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式為第二預(yù)測(cè)模式時(shí),將第二宏塊的像素值復(fù)制到該幀內(nèi)預(yù)測(cè)宏塊,然后將解碼得到的像素殘差疊加到相應(yīng)的像素值上,得到該幀內(nèi)預(yù)測(cè)宏塊的像素值。
304、根據(jù)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值和每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值進(jìn)行畫面顯示。
本公開(kāi)實(shí)施例提供的幀內(nèi)預(yù)測(cè)方法,終端設(shè)備接收服務(wù)器發(fā)送的碼流,對(duì)碼流中的每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值;對(duì)碼流中的每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值;根據(jù)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值和每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值進(jìn)行畫面顯示。該碼流中編碼數(shù)據(jù)在編碼時(shí)考慮圖像內(nèi)容,達(dá)到無(wú)損壓縮,在解碼過(guò)程中能夠快速解碼,提高解碼效率。
基于上述圖1~圖3對(duì)應(yīng)的實(shí)施例所描述的幀內(nèi)預(yù)測(cè)方法,下面結(jié)合圖4所示的移動(dòng)零終端系統(tǒng),對(duì)幀內(nèi)預(yù)測(cè)方法進(jìn)行具體說(shuō)明。
在移動(dòng)零終端系統(tǒng)中,由于實(shí)時(shí)性的要求,編碼一幀的速率和壓縮率同樣重要,因此低復(fù)雜度的編碼方案能很大程度上提高效率。移動(dòng)零終端畫面具有穩(wěn)定且分塊明顯的特定,穩(wěn)定是因?yàn)橐苿?dòng)零終端畫面很少快速切換,分塊明顯是因?yàn)橐苿?dòng)零終端合成畫面重點(diǎn)內(nèi)容都在屏幕中央,而四周往往是簡(jiǎn)單背景,這些背景部分大體相似,只存在個(gè)別像素點(diǎn)的差異,因此不需要對(duì)整個(gè)畫面進(jìn)行編碼。而且移動(dòng)端應(yīng)用的圖像布局往往是自左向右或自上而下,存在很多相似的部分。在編碼過(guò)程中,左邊和上面的內(nèi)容會(huì)先編碼,所以只需要和左邊和上面的內(nèi)容進(jìn)行比較,如果完全一致,則直接拷貝,如果90%相似,則先拷貝,然后對(duì)殘差進(jìn)行熵編碼。對(duì)于不滿足這種相似性的部分,使用jpeg編碼器進(jìn)行編碼。
參照?qǐng)D4所示,服務(wù)器端的具體操作過(guò)程如下:
a、顯卡生成一幀畫面。
b、根據(jù)屏幕分辨率大下,自適應(yīng)地將畫面分解成若干寬m高n像素大小的宏塊,每個(gè)宏塊m×n個(gè)像素點(diǎn)。不失一般性的,宏塊的大小默認(rèn)為16×16像素。
c、對(duì)每個(gè)宏塊與左邊宏塊逐個(gè)像素點(diǎn)求差的絕對(duì)值,如果差為0,則相同像素點(diǎn)加1,統(tǒng)計(jì)兩個(gè)宏塊的相同像素?cái)?shù)nl;
d、將每個(gè)宏塊與上面宏塊逐個(gè)像素點(diǎn)求差的絕對(duì)值,如果差為0,則相同像素點(diǎn)加1,統(tǒng)計(jì)兩個(gè)宏塊的相同像素?cái)?shù)nu;
e、如果nl>nu且nl=256,那么該宏塊預(yù)測(cè)模式記為0,標(biāo)記該宏塊為幀內(nèi)預(yù)測(cè)宏塊;如果nu>nl且nu=256,那么該宏塊預(yù)測(cè)模式記為1,標(biāo)記該宏塊為幀內(nèi)預(yù)測(cè)宏塊。
f、如果nl>nu且nl≥256×90%,那么該宏塊預(yù)測(cè)模式記為0,標(biāo)記該宏塊為幀內(nèi)預(yù)測(cè)宏塊;如果nu>nl且nu≥256×90%,那么該宏塊預(yù)測(cè)模式記為1,標(biāo)記該宏塊為幀內(nèi)預(yù)測(cè)宏塊。
如圖5所示為對(duì)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式的標(biāo)記示意圖。
g、將所有幀內(nèi)預(yù)測(cè)宏塊標(biāo)記結(jié)束之后,對(duì)所有幀內(nèi)預(yù)測(cè)宏塊逐個(gè)進(jìn)行編碼,首先將0和1預(yù)測(cè)模式用游程進(jìn)行編碼,然后對(duì)殘差進(jìn)行熵編碼。
h、對(duì)非幀內(nèi)預(yù)測(cè)宏塊使用jpeg進(jìn)行壓縮編碼。
結(jié)合圖4所示,服務(wù)器端相對(duì)于移動(dòng)零終端為發(fā)送端,服務(wù)器端中的編碼模塊,即圖4中所示的s端解碼模塊對(duì)接收的碼流幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式和殘差進(jìn)行編碼、以及對(duì)非幀內(nèi)預(yù)測(cè)宏塊進(jìn)行jpeg編碼。
i、整個(gè)畫面編碼結(jié)束,打包碼流,進(jìn)入網(wǎng)絡(luò)發(fā)送給移動(dòng)零客戶端。
在本發(fā)明實(shí)施例中,該網(wǎng)絡(luò)可以移動(dòng)通信網(wǎng)絡(luò),如3g、4g、wifi等網(wǎng)絡(luò),也可以是其他有線網(wǎng)絡(luò),本發(fā)明對(duì)此不加限定。
參照?qǐng)D4所示,移動(dòng)零客戶端的具體操作過(guò)程如下:
a、從網(wǎng)絡(luò)中接收服務(wù)器發(fā)送的碼流。
b、對(duì)非幀內(nèi)預(yù)測(cè)宏塊進(jìn)行jpeg解碼。
c、從上至下,從左到右,對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式0和1的游程進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式。
d、如果預(yù)測(cè)模式為0,將左側(cè)宏塊像素值復(fù)制到當(dāng)前宏塊;如果預(yù)測(cè)模式為1,將上邊宏塊像素值復(fù)制到當(dāng)前宏塊。
e、如果有殘差,則對(duì)殘差進(jìn)行解碼,并把殘差值疊加到相應(yīng)的像素值上。
結(jié)合圖4所示,移動(dòng)零終端相對(duì)于服務(wù)器端為接收端,移動(dòng)零終端中的解碼模塊,即圖4中所示的r端解碼模塊對(duì)接收的碼流進(jìn)行解碼。
f、解碼完成,顯示畫面。
本公開(kāi)實(shí)施例提供的幀內(nèi)預(yù)測(cè)方法,通過(guò)獲取當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值、以及獲取所述當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值,根據(jù)第一統(tǒng)計(jì)值、第二統(tǒng)計(jì)值和第一閾值,確定當(dāng)前宏塊的宏塊類型和預(yù)測(cè)模式。采用這種幀內(nèi)預(yù)測(cè)技術(shù),結(jié)合圖像內(nèi)容對(duì)當(dāng)前宏塊的宏塊類型的區(qū)分來(lái)確定幀內(nèi)預(yù)測(cè)模式,無(wú)需對(duì)每個(gè)宏塊進(jìn)行多次計(jì)算,大大降低了計(jì)算復(fù)雜度,提高壓縮效率。
基于上述圖1~圖4對(duì)應(yīng)的實(shí)施例中所描述的遠(yuǎn)程控制方法,下述為本公開(kāi)裝置實(shí)施例,可以用于執(zhí)行本公開(kāi)方法實(shí)施例。
本公開(kāi)實(shí)施例提供一種服務(wù)器,如圖6所示,該服務(wù)器60包括:
獲取模塊601,用于獲取當(dāng)前宏塊與第一宏塊中具有相同像素的第一統(tǒng)計(jì)值,第一宏塊與當(dāng)前宏塊相鄰且位于當(dāng)前宏塊的第一側(cè);
獲取模塊601,用于獲取當(dāng)前宏塊與第二宏塊中具有相同像素的第二統(tǒng)計(jì)值,第二宏塊與當(dāng)前宏塊相鄰且位于當(dāng)前宏塊的第二側(cè);
確定模塊602,用于根據(jù)第一統(tǒng)計(jì)值、第二統(tǒng)計(jì)值和第一閾值,確定當(dāng)前宏塊的宏塊類型和預(yù)測(cè)模式,宏塊類型包括幀內(nèi)預(yù)測(cè)宏塊和非幀內(nèi)預(yù)測(cè)宏塊。
如圖7所示,在一個(gè)實(shí)施例中,獲取模塊601包括:
比較子模塊6011,用于比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第一宏塊中對(duì)應(yīng)像素的像素值是否相同;
統(tǒng)計(jì)子模塊6012,用于統(tǒng)計(jì)當(dāng)前宏塊與第一宏塊中像素值相同的個(gè)數(shù),得到第一統(tǒng)計(jì)值。
在一個(gè)實(shí)施例中,比較子模塊6011,用于比較當(dāng)前宏塊中每個(gè)像素的像素值是否與第二宏塊中對(duì)應(yīng)像素的像素值是否相同;
統(tǒng)計(jì)子模塊6012,用于統(tǒng)計(jì)當(dāng)前宏塊與第二宏塊中像素值相同的個(gè)數(shù),得到第二統(tǒng)計(jì)值。
如圖7所示,在一個(gè)實(shí)施例中,確定模塊602包括:
第一確定子模塊6021,用于比較第一統(tǒng)計(jì)值和第二統(tǒng)計(jì)值,以及比較第一統(tǒng)計(jì)值和第二統(tǒng)計(jì)值是否均大于或等于第一閾值;
第二確定子模塊6022,用于當(dāng)?shù)谝唤y(tǒng)計(jì)值大于或等于第二統(tǒng)計(jì)值,且第一統(tǒng)計(jì)值大于或等于第一閾值時(shí),當(dāng)前宏塊為幀內(nèi)預(yù)測(cè)宏塊,且當(dāng)前宏塊的預(yù)測(cè)模式為第一預(yù)測(cè)模式;
第二確定子模塊6022,用于當(dāng)?shù)诙y(tǒng)計(jì)值大于第一統(tǒng)計(jì)值,且第二統(tǒng)計(jì)值大于或等于第一閾值時(shí),當(dāng)前宏塊為幀內(nèi)預(yù)測(cè)宏塊,且當(dāng)前宏塊的預(yù)測(cè)模式為第二預(yù)測(cè)模式;
第二確定子模塊6022,用于當(dāng)?shù)谝唤y(tǒng)計(jì)值大于或等于第二統(tǒng)計(jì)值,且第一統(tǒng)計(jì)值小于第一閾值時(shí),或者,當(dāng)?shù)诙y(tǒng)計(jì)值大于第一統(tǒng)計(jì)值,且第二統(tǒng)計(jì)值小于第一閾值時(shí),當(dāng)前宏塊為非幀內(nèi)預(yù)測(cè)宏塊。
在一個(gè)實(shí)施例中,第一閾值大于或等于第二閾值,第二閾值等于當(dāng)前宏塊的大小與預(yù)設(shè)系數(shù)的乘積。
本公開(kāi)實(shí)施例提供的幀內(nèi)預(yù)測(cè)方法,通過(guò)結(jié)合圖像內(nèi)容對(duì)當(dāng)前宏塊的宏塊類型的區(qū)分來(lái)確定幀內(nèi)預(yù)測(cè)模式,無(wú)需對(duì)每個(gè)宏塊進(jìn)行多次計(jì)算,大大降低了計(jì)算復(fù)雜度,提高壓縮效率。
本公開(kāi)實(shí)施例提供一種服務(wù)器,如圖8所示,該服務(wù)器80包括:
獲取模塊801,用于獲取一幀圖像,一幀圖像中包含多個(gè)宏塊;
確定模塊802,用于按照?qǐng)D1實(shí)施例對(duì)應(yīng)的方法,確定一幀圖像中每個(gè)宏塊的宏塊類型和預(yù)測(cè)模式,宏塊類型包括幀內(nèi)預(yù)測(cè)宏塊和非幀內(nèi)預(yù)測(cè)宏塊;
編碼模塊803,用于對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式進(jìn)行編碼得到第一編碼數(shù)據(jù);
編碼模塊803,用于對(duì)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值進(jìn)行編碼,得到第二編碼數(shù)據(jù);
發(fā)送模塊804,用于將第一編碼數(shù)據(jù)和第二編碼數(shù)據(jù)打包成碼流發(fā)送給終端設(shè)備。
在一個(gè)實(shí)施例中,編碼模塊803還用于對(duì)每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式和每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差進(jìn)行編碼,得到第一編碼數(shù)據(jù);像素殘差為根據(jù)幀內(nèi)預(yù)測(cè)宏塊與第一宏塊或第二宏塊的像素差值得到的。
本公開(kāi)實(shí)施例提供的幀內(nèi)預(yù)測(cè)方法,通過(guò)考慮圖像內(nèi)容,對(duì)一幀畫面中每個(gè)宏塊的宏塊類型進(jìn)行區(qū)分和預(yù)測(cè)模式的確定,無(wú)需對(duì)每個(gè)宏塊進(jìn)行多次計(jì)算,大大降低了計(jì)算復(fù)雜度,在達(dá)到無(wú)損壓縮的同時(shí)提高壓縮效率。
本公開(kāi)實(shí)施例提供一種終端設(shè)備,如圖9所示,該終端設(shè)備90包括:
接收模塊901,用于接收服務(wù)器發(fā)送的碼流;
解碼模塊902,用于對(duì)碼流中的每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值;
解碼模塊902,用于對(duì)碼流中的每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值;
處理模塊903,用于根據(jù)每個(gè)非幀內(nèi)預(yù)測(cè)宏塊的像素值和每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素值進(jìn)行畫面顯示。
在一個(gè)實(shí)施例中,如圖10所示,解碼模塊902包括:
解碼子模塊9021,用于對(duì)碼流中每個(gè)幀內(nèi)預(yù)測(cè)宏塊的編碼數(shù)據(jù)進(jìn)行解碼,得到每個(gè)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式;
處理子模塊9022,用于當(dāng)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式為第一預(yù)測(cè)模式時(shí),幀內(nèi)預(yù)測(cè)宏塊的像素值為第一宏塊的像素值;
處理子模塊9022,用于當(dāng)幀內(nèi)預(yù)測(cè)宏塊的預(yù)測(cè)模式為第二預(yù)測(cè)模式時(shí),幀內(nèi)預(yù)測(cè)宏塊的像素值為第二宏塊的像素值;
第一宏塊與幀內(nèi)預(yù)測(cè)宏塊相鄰且位于幀內(nèi)預(yù)測(cè)宏塊的第一側(cè),第二宏塊與幀內(nèi)預(yù)測(cè)宏塊相鄰且位于幀內(nèi)預(yù)測(cè)宏塊的第二側(cè)。
在一個(gè)實(shí)施例中,解碼子模塊9021,還用于對(duì)碼流中每個(gè)幀內(nèi)預(yù)測(cè)宏塊的像素殘差編碼數(shù)據(jù)進(jìn)行解碼;
處理子模塊9022,還用于將解碼后的像素殘差疊加到對(duì)應(yīng)的幀內(nèi)預(yù)測(cè)宏塊的像素值上。
本公開(kāi)實(shí)施例提供的幀內(nèi)預(yù)測(cè)方法,終端設(shè)備接收服務(wù)器發(fā)送的碼流,該碼流中編碼數(shù)據(jù)在編碼時(shí)考慮圖像內(nèi)容,達(dá)到無(wú)損壓縮,在解碼過(guò)程中能夠快速解碼,提高解碼效率。
本發(fā)明公開(kāi)實(shí)施例還提供了一種幀內(nèi)預(yù)測(cè)系統(tǒng),包括圖8所示的服務(wù)器和圖9~圖10所示的任意一個(gè)終端設(shè)備。
本領(lǐng)域技術(shù)人員在考慮說(shuō)明書及實(shí)踐這里公開(kāi)的公開(kāi)后,將容易想到本公開(kāi)的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本公開(kāi)的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開(kāi)的一般性原理并包括本公開(kāi)未公開(kāi)的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說(shuō)明書和實(shí)施例僅被視為示例性的,本公開(kāi)的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本公開(kāi)并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開(kāi)的范圍僅由所附的權(quán)利要求來(lái)限制。