亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種靜態(tài)圖像壓縮的編碼方法

文檔序號:6521686閱讀:177來源:國知局
專利名稱:一種靜態(tài)圖像壓縮的編碼方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種靜態(tài)圖像壓縮和編碼方法。
背景技術(shù)
目前絕大部分的靜態(tài)圖像采用的是JPEG(聯(lián)合圖像專家組,一種靜態(tài)圖像的壓縮算法)壓縮技術(shù),JPEG壓縮技術(shù)總的是采用離散余弦變換+量化+游程編碼+霍夫曼編碼(或算術(shù)編碼)。對于靜態(tài)圖像來說圖像的YUV(在NTSC顏色系統(tǒng)中,一個顏色可以由灰度Y,和兩個色差U、V一起表示)數(shù)據(jù)格式有YUV444、YUV422、YUV420、YUV411。采用標(biāo)準(zhǔn)的JPEG壓縮流程,對于YUV444、YUV422和YUV411需要8linebuffer(行緩沖器),而對于YUV420來說就要16linebuffer。采用這種壓縮流程,在ASIC實(shí)現(xiàn)上,無形中增加了硬件成本。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種靜態(tài)圖像壓縮的編碼方法,其支持所有的YUV格式的圖片的JPEG壓縮,將行緩沖器的數(shù)目從16條減少到8條。
為了解決上述技術(shù)問題,本發(fā)明提供一種靜態(tài)圖像壓縮的編碼方法,其包括如下步驟圖像分塊步驟將圖像的宏塊分成上、下兩個子宏塊,并將上子宏塊的下半部用0填充,下子宏塊的上半部用0填充,整幅圖像被分成上子宏塊和下子宏塊互相間隔的條帶;編碼步驟以子宏塊為單位進(jìn)行編碼,然后根據(jù)子宏塊編碼的結(jié)果重新組合成符合靜態(tài)圖像要的碼流。
進(jìn)一步地,本發(fā)明的編碼步驟可以是分開編碼的也可是隔行編碼。所謂分開的就是對整個圖像的sub-MCU進(jìn)行編碼,然后再對sub-MCU編碼的結(jié)果進(jìn)行重組;所述的編碼方法為隔行編碼方法,即先編一行的上子宏塊,編碼結(jié)果存放在臨時壓縮數(shù)據(jù)庫中,然后再編一行的下子宏塊,編碼的結(jié)果存放在目標(biāo)壓縮數(shù)據(jù)緩存中,在對下子宏塊進(jìn)行編碼的同時,抽取出相應(yīng)的上子宏塊的碼流,重新組合成符合靜態(tài)圖像要求的碼流。
由于本發(fā)明是以子宏塊(sub-MCU)為單位進(jìn)行編碼,子宏塊的大小為16×8,所以實(shí)際上只需要8條linebuffer(行緩沖區(qū)),降低了硬件成本,且易于軟硬件的實(shí)現(xiàn)。


圖1是基本的JPEG壓縮流程圖。
圖2是圖1所示編碼的流程圖。
圖3是圖像分塊示意圖。
圖4是圖3所示的宏塊、子宏塊的示意圖。
圖5是填充上、下子宏塊的示意圖。
圖6是本發(fā)明的隔行編碼的示意圖。
圖7是本發(fā)明的分開編碼的示意圖。
具體實(shí)施例方式
如果輸入的圖像格式是YUV444、YUV422、YUV411則采用基本的JPEG壓縮流程(如圖1所示)。圖像被分成大小為16×8的MCU(宏塊),從左到右對圖像中的宏塊進(jìn)行編碼,而每個MCU又分解成若干個8×8的Y(灰度)數(shù)據(jù)塊,U、V(色差)數(shù)據(jù)塊,按照YUV的順序?qū)?×8的數(shù)據(jù)塊進(jìn)行離散余弦變換、量化、對直流分量進(jìn)行差分編碼+霍夫曼編碼,對交流分量進(jìn)行ZigZag掃描(如圖2所示)+游程編碼+霍夫曼編碼。
如果輸入的圖像格式是YUV420則采用下面所描述的步驟進(jìn)行1、圖像分塊步驟(如圖3所示)YUV420圖像的MCU(16×16,包含有4個Y數(shù)據(jù)塊(blocks),1個U數(shù)據(jù)塊(block)和1個V數(shù)據(jù)塊(block))被分成上下兩個sub-MCU(子宏塊,16×8,2個Y blocks,1/2個U block和1/2個V block),(如圖3、4所示),其中U/V block采用圖5描述的方法將其填充成8×8大小的上、下子宏塊,其中上子宏塊的下半部(四行)用0填充,下子宏塊的上半部(四行)用0填充。這樣整幅圖像被分成top sub-MCU(上子宏塊)和bottomsub-MCU(下子宏塊)互相間隔的條帶。
2、編碼步驟首先以子宏塊(sub-MCU)為單位進(jìn)行編碼,由于sub-MCU是大小是16×8,所以實(shí)際上只需要8條linebuffer。然后根據(jù)sub-MCU編碼的結(jié)果重新組合成符合JPEG要求的碼流。所述編碼步驟可以采用分開編碼也可以采用隔行編碼。所述分開編碼的就是對整個圖像的sub-MCU進(jìn)行編碼,然后再對sub-MCU編碼的結(jié)果進(jìn)行重組。所謂隔行編碼就是先編一行的top sub-MCU,然后再編一行的bottom sub-MCU,在對bottom sub-MCU編碼的同時,抽取出相應(yīng)的top sub-MCU的碼流,重新組合成符合JPEG要求的碼流。
下面結(jié)合圖6詳細(xì)描述本發(fā)明的隔行編碼的
具體實(shí)施例方式
所述的隔行編碼具體為先編一行的上子宏塊,編碼結(jié)果存放在臨時壓縮數(shù)據(jù)庫中,然后再編一行的下子宏塊,在對下子宏塊進(jìn)行編碼的同時,抽取出相應(yīng)的上子宏塊的碼流,重新組合成符合靜態(tài)圖像要求的碼流。上子宏塊條帶的編碼方法與下子宏塊條帶的編碼是不相同的。具體的描述如下。
1、子宏塊條帶的編碼從左到右順序?qū)γ總€tops sub-MCU進(jìn)行編碼。每個sub-MCU按照一定的順序(YYUV)對2個Y blocks,1個U block(填充以后的)和1個V block(填充以后的)采用以下方法分別進(jìn)行編碼,編碼的結(jié)果存放在臨時壓縮數(shù)據(jù)緩存中步驟a,離散余弦(DCT)變換;步驟b,對DCT系數(shù)進(jìn)行量化,UV量化因子使用的是預(yù)期的1/4;實(shí)際U(V)量化后的DCT系數(shù)為qdct[]=round((qdct_bottom[]+qdct_top[])/4),其中qdct[]是實(shí)際需要求得的該MCU的UV數(shù)據(jù)塊量化后的DCT系數(shù),qdct_top[]是top sub-MCU中UV數(shù)據(jù)塊量化后的DCT系數(shù),qdct_bottom[]是bottom sub_MCU中UV數(shù)據(jù)塊量化后的DCT系數(shù)。
步驟c,如果是第2個Y block的DC,則進(jìn)行差分+霍夫曼編碼,否則直接存儲量化后的DC系數(shù)。
對量化后的AC系數(shù)進(jìn)行ZigZag(之字型)掃描,并且進(jìn)行游程編碼+熵編碼。
步驟d,對游程編碼結(jié)果進(jìn)行霍夫曼編碼。(該步驟可選,其目標(biāo)是進(jìn)一步減少緩沖區(qū)大小)2、下子宏塊條帶的編碼從左到右順序?qū)γ總€bottom sub-MCU進(jìn)行編碼。每個sub-MCU按照下面給出的方法進(jìn)行編碼。在該步驟中編碼的結(jié)果存放在目標(biāo)壓縮數(shù)據(jù)緩存中。
Y blocks編碼步驟a,該步驟的目的是從臨時壓縮數(shù)據(jù)緩存中抽取bottom sub-MCU相應(yīng)的topsub-MCU中的Y數(shù)據(jù),將重新編碼后的結(jié)果存儲到目標(biāo)數(shù)據(jù)壓縮數(shù)據(jù)緩存中。做法如下步驟a-1,從緩沖區(qū)中獲取這個bottom sub-MCU相應(yīng)的top sub-MCU的第1個個Yblock的DC系數(shù)進(jìn)行,對其進(jìn)行差分編碼和霍夫曼編碼,然后對于AC部分進(jìn)行霍夫曼編碼(如果已經(jīng)熵編碼過則直接拷貝)步驟a-2,從緩沖區(qū)中獲取這個bottom sub-MCU相應(yīng)的top sub-MCU第2個Y block的編碼結(jié)果,對其進(jìn)行霍夫曼編碼(如果已經(jīng)熵編碼過則直接拷貝)步驟b,對于該bottom sub-MCU中的兩個Y blocks進(jìn)行編碼,編碼后的結(jié)果存放到目標(biāo)壓縮數(shù)據(jù)緩存中。做法采用以下步驟進(jìn)行步驟b-1,DCT變換;步驟b-2,DCT系數(shù)進(jìn)行量化;步驟b-3,對量化后的DC系數(shù)進(jìn)行差分+霍夫曼編碼;步驟b-4,對量化后的AC系數(shù)進(jìn)行ZigZag掃描+游程編碼+霍夫曼編碼U(V)block編碼步驟a,DCT變換;步驟b,對DCT系數(shù)進(jìn)行量化,UV量化因子使用的是預(yù)期的1/4,設(shè)得到的結(jié)果是qdct_bottom[];步驟c,從臨時壓縮數(shù)據(jù)緩存中得到這個bottom sub-MCU相應(yīng)的top sub-MCU的U(V)block的量化后的DCT系數(shù)qdct_top[];步驟d,實(shí)際該bottom sub-MCU對應(yīng)的MCU的量化后的DCT系數(shù)qdct[]qdct[]=round((qdct_bottom[]+qdct_top[])/4)步驟e,對量化后的DC系數(shù)進(jìn)行差分+霍夫曼編碼;步驟f,對量化后的AC系數(shù)進(jìn)行ZigZag掃描+游程編碼+霍夫曼編碼。
下面結(jié)合圖7詳細(xì)描述本發(fā)明的分開編碼方法的
具體實(shí)施例方式步驟a,對圖像中的所有子宏塊采用一定的編碼方式(例如類似隔行編碼中的上子宏塊的編碼方式)進(jìn)行編碼的結(jié)果存放到臨時壓縮數(shù)據(jù)緩沖中。
步驟b,從臨時壓縮數(shù)據(jù)緩存中抽取出每一個宏塊對應(yīng)的兩個子宏塊的壓縮數(shù)據(jù),重新組合,并將重新組合的數(shù)據(jù)存放在目標(biāo)壓縮數(shù)據(jù)緩沖中。
比較所述分開編碼方法和隔行編碼方法的實(shí)現(xiàn),可以看到,分開編碼方法需要緩存一幅圖像的所有的臨時壓縮數(shù)據(jù)。而隔行編碼方法只要緩存一子宏塊條帶的臨時壓縮數(shù)據(jù),并且實(shí)際證明了這個臨時壓縮數(shù)據(jù)緩存的大小遠(yuǎn)遠(yuǎn)小于8條linebuffer的大小,所以隔行編碼方法可以用在完全硬件解決方案。而分開編碼方法可以用在軟硬件相結(jié)合的解決方案中,硬件完成臨時壓縮數(shù)據(jù)的生成,軟件完成臨時壓縮數(shù)據(jù)的重組。
本發(fā)明的保護(hù)范圍并不局限于上述具體實(shí)施方式
,凡本領(lǐng)域內(nèi)技術(shù)人員所熟知的技術(shù)變換均落在本發(fā)明的保護(hù)范圍內(nèi),比如,上述的編碼方法除了采用霍夫曼編碼熵編碼外還可能采用其它的熵編碼。
權(quán)利要求
1.一種靜態(tài)圖像壓縮的編碼方法,其特征在于,包括如下步驟圖像分塊步驟將圖像的宏塊分成上、下兩個子宏塊,并將上子宏塊的下半部用0填充,下子宏塊的上半部用0填充,整幅圖像被分成上子宏塊和下子宏塊互相間隔的條帶;編碼步驟以子宏塊為單位進(jìn)行編碼,然后根據(jù)子宏塊編碼的結(jié)果重新組合成符合靜態(tài)圖像要的碼流。
2.根據(jù)權(quán)利要求1所述的靜態(tài)圖像壓縮的編碼方法,其特征在于,所述的編碼方法為分開編碼方法,即對上、下子宏塊進(jìn)行分別編碼,然后對上、下子宏塊的編碼結(jié)果進(jìn)行重組。
3.根據(jù)權(quán)利要求2所述的靜態(tài)圖像壓縮的編碼方法,其特征在于,所述的分開編碼方法包括如下步驟步驟a,對圖像中的所有子宏塊進(jìn)行編碼,并將結(jié)果存放到臨時壓縮數(shù)據(jù)緩沖中;步驟b,從臨時壓縮數(shù)據(jù)緩存中抽取出每一個宏塊對應(yīng)的兩個子宏塊的壓縮數(shù)據(jù),重新組合,并將重新組合的數(shù)據(jù)存放在目標(biāo)壓縮數(shù)據(jù)緩沖中。
4.根據(jù)權(quán)利要求1所述的靜態(tài)圖像壓縮的編碼方法,其特征在于,所述的編碼方法為隔行編碼方法,即先編一行的上子宏塊,編碼結(jié)果存放在臨時壓縮數(shù)據(jù)庫中,然后再編一行的下子宏塊,編碼的結(jié)果存放在目標(biāo)壓縮數(shù)據(jù)緩存中,在對下子宏塊進(jìn)行編碼的同時,抽取出相應(yīng)的上子宏塊的碼流,重新組合成符合靜態(tài)圖像要求的碼流。
5.根據(jù)權(quán)利要求4所述的靜態(tài)圖像壓縮的編碼方法,其特征在于,所述的上子宏塊的編碼方法為步驟a,離散余弦變換;步驟b,對DCT系數(shù)進(jìn)行量化,UV量化因子使用的是預(yù)期的1/4;步驟c,如果是第2個Y block的DC,則進(jìn)行差分+霍夫曼編碼,否則直接存儲量化后的DC系數(shù);對量化后的AC系數(shù)進(jìn)行ZigZag掃描,并且進(jìn)行游程編碼。
6.根據(jù)權(quán)利要求5所述的靜態(tài)圖像壓縮的編碼方法,其特征在于,還包括步驟d可以對游程編碼結(jié)果進(jìn)行霍夫曼編碼,進(jìn)一步減少臨時壓縮數(shù)據(jù)緩沖區(qū)的大小。
7.根據(jù)權(quán)利要求4所述的靜態(tài)圖像壓縮的編碼方法,其特征在于,所述的對下子宏塊的編碼包括對Y數(shù)據(jù)塊的編碼、U數(shù)據(jù)塊的編碼、V數(shù)據(jù)塊的編碼。
8.根據(jù)權(quán)利要求7所述的靜態(tài)圖像壓縮的編碼方法,其特征在于,所述的Y數(shù)據(jù)塊的編碼方法包括如下步驟步驟a、從臨時壓縮數(shù)據(jù)緩存中抽取bottom sub-MCU相應(yīng)的top sub-MCU中的Y數(shù)據(jù),將重新編碼后的結(jié)果存儲到目標(biāo)數(shù)據(jù)壓縮數(shù)據(jù)緩存中;步驟b,對于該bottom sub-MCU中的兩個Y blocks進(jìn)行編碼,編碼后的結(jié)果存放到目標(biāo)壓縮數(shù)據(jù)緩存中。
9.根據(jù)權(quán)利要求8所述的靜態(tài)圖像壓縮的編碼方法,其特征在于,所述的步驟a包括步驟a-1,從緩沖區(qū)中獲取這個bottom sub-MCU相應(yīng)的top sub-MCU的第1個個Yblock的DC系數(shù)進(jìn)行,對其進(jìn)行差分編碼和霍夫曼編碼,然后對于AC部分進(jìn)行霍夫曼編碼,如果已經(jīng)熵編碼過則直接拷貝;步驟a-2,從緩沖區(qū)中獲取這個bottom sub-MCU相應(yīng)的top sub-MCU第2個Y block的編碼結(jié)果,對其進(jìn)行霍夫曼編碼,如果已經(jīng)熵編碼過則直接拷貝。
10.根據(jù)權(quán)利要求7所述的靜態(tài)圖像壓縮的編碼方法,其特征在于,所述的U數(shù)據(jù)塊及V數(shù)據(jù)塊的編碼方法包括如下步驟步驟a,DCT變換;步驟b,對DCT系數(shù)進(jìn)行量化,UV量化因子使用的是預(yù)期的1/4,設(shè)得到的結(jié)果是qdct_bottom[];步驟c,從臨時壓縮數(shù)據(jù)緩存中得到這個bottom sub-MCU相應(yīng)的top sub-MCU的U(V)block的量化后的DCT系數(shù)qdct_top[];步驟d,實(shí)際該bottom sub-MCU對應(yīng)的MCU的量化后的DCT系數(shù)qdct[]qdct[]=round((qdct_bottom[]+qdct_top[])/4)步驟e,對量化后的DC系數(shù)進(jìn)行差分+霍夫曼編碼;步驟f,對量化后的AC系數(shù)進(jìn)行ZigZag掃描+游程編碼+霍夫曼編碼。
全文摘要
本發(fā)明提供一種靜態(tài)圖像壓縮的編碼方法,其包括如下步驟圖像分塊步驟將圖像的宏塊分成上、下兩個子宏塊,并將上子宏塊的下半部用0填充,下子宏塊的上半部用0填充,整幅圖像被分成上子宏塊和下子宏塊互相間隔的條帶;編碼步驟以子宏塊為單位進(jìn)行編碼,然后根據(jù)子宏塊編碼的結(jié)果重新組合成符合靜態(tài)圖像要的碼流。由于本發(fā)明是以子宏塊為單位進(jìn)行編碼,子宏塊的大小為16×8,所以實(shí)際上只需要8條行緩沖區(qū),降低了硬件成本,且易于軟硬件的實(shí)現(xiàn)。
文檔編號G06T9/00GK1855996SQ20051002520
公開日2006年11月1日 申請日期2005年4月19日 優(yōu)先權(quán)日2005年4月19日
發(fā)明者林哲民, 林豪, 張本好, 林福輝 申請人:展訊通信(上海)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1