專利名稱:一種用于行緩沖器的壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種圖像傳輸?shù)姆椒?,更具體地,涉及一種用于行緩沖器的
JPEG (Joint Photographic Experts Group)壓縮的方法。
背景技術(shù):
JPEG時一種針對相片影像而廣泛使用的一種失真壓縮的標(biāo)準(zhǔn)。由于JPEG 是基于8X8宏塊的壓縮算法,該8X8宏塊具體如圖l所示。通常,行緩沖器的大小 為64X2X8=1024字節(jié),把該行緩沖器分為8行,每行為128字節(jié),每行中8個字 節(jié)為一個子塊,共分為16個子塊。我們把16個子塊分為8個區(qū),每個區(qū)共2個子 塊。以行和區(qū)為基本單位,這樣行緩沖器就形成了8行和8列的宏塊陣列,整個的 行緩沖器可以分為64個區(qū)域,每個區(qū)分為2個1X8大小的子塊,艮卩,分別為第一 子塊和第二子塊。為易于說明每個區(qū)域的位置,每個區(qū)域中可以引用一對坐標(biāo)來表 示。
在現(xiàn)有技術(shù)的方法中,圖像傳感器是按照行的方式依次輸出各行的圖像,即,同 時輸出各個行的同一列上的圖像數(shù)據(jù),所以必須把各行的數(shù)據(jù)暫時存儲在RAM中, 直到RAM中存儲了連續(xù)8行的圖像,才開始進(jìn)行JPEG壓縮。在圖像壓縮的同時, 圖像傳感器還繼續(xù)輸出圖像,所以需要另外的RAM用于存儲后繼的圖像數(shù)據(jù)。一 般的方法是用兩個8行的行緩沖器r存儲圖像,用乒乓的方式交替工作。
因此,現(xiàn)有技術(shù)的用于行緩沖器的JPEG壓縮方法占用了較多的資源,不 利于降低成本。
發(fā)明內(nèi)容
本發(fā)明的所解決的技術(shù)問題在于提出一種用于行緩沖器的壓縮方法,通過 合理地利用行緩沖器中的空閑區(qū)域,使得行緩沖器在輸出圖像數(shù)據(jù)的同時,又 可以有效地存儲新的圖像數(shù)據(jù),而無需額外再利用一個行緩沖器。
根據(jù)本發(fā)朋的一種用于行緩沖器的壓縮方法,該方法包括將一行緩沖器劃
分為多個區(qū)域,該多個區(qū)域分別以橫向和縱向的形式進(jìn)行排列后形成陣列;
逐行寫入圖像數(shù)據(jù),直至最后一行;在將圖像數(shù)據(jù)逐列寫入到該最后一行 的區(qū)域時,依次輸出寫滿在位于同一列的區(qū)域上的圖像數(shù)據(jù)直至位于該同一列 上的各該區(qū)域全部為空;將以處于該陣列其中一個對角線上的多個區(qū)域為軸, 將相對應(yīng)的區(qū)域上的圖像數(shù)據(jù)搬移到各該為空的區(qū)域。該每一區(qū)域進(jìn)一步地被 劃分成第一和第二子塊。故此,在各行的同一列相同位置上的子塊被寫滿圖像 數(shù)據(jù)時,輸出存儲在該相同位置上的子塊中的圖像數(shù)據(jù)。
具體地,本發(fā)明的方法還包括將圖像數(shù)據(jù)寫入到最后一行的一預(yù)定列的第 一子塊中的步驟;輸出該預(yù)定列的第一子塊中的圖像數(shù)據(jù)直至該預(yù)定列的第一 子塊全部為空的步驟;和將與該預(yù)定列的第一子塊以該軸相對應(yīng)的行中的各個 列的第一子塊中的圖像數(shù)據(jù)搬移到該預(yù)定列的第一子塊中的步驟。
進(jìn)一步地,本發(fā)明的方法還包括繼續(xù)將圖像數(shù)據(jù)寫入到該預(yù)定列的第二子 塊中的步驟;輸出該預(yù)定列的第二子塊中的圖像數(shù)據(jù)直至該預(yù)定列的第二子塊 全部為空的步驟;和將與該預(yù)定列的第二子塊以該軸相對應(yīng)的行中的各個第二 子塊中的圖像數(shù)據(jù)搬移到該預(yù)定列的第二子塊中的步驟。
特別的,其中輸出該預(yù)定列的第一子塊或第二子塊中的圖像數(shù)據(jù)的步驟, 還包括輸出在該預(yù)定列中被搬移的圖像數(shù)據(jù)。
根據(jù)本發(fā)明的方法還包括將新的圖像數(shù)據(jù)繼續(xù)逐行寫入經(jīng)搬移后為空的 區(qū)域。
下面結(jié)合附圖,通過對本發(fā)明的較佳實施例的描述,使得本發(fā)明的上述技 術(shù)方案以及其它有點顯而易見。
圖1顯示了現(xiàn)有技術(shù)的行緩沖器的分區(qū)圖2A-圖2Z顯示了利用本發(fā)明的壓縮方法對圖像數(shù)據(jù)輸出和寫入的的流 程示意圖3顯示了第七區(qū)被輸出后的存儲結(jié)構(gòu)示意圖4顯示了在行緩沖器的最后一個區(qū)被讀取后的存儲結(jié)構(gòu)示意圖,其中第 一至第七行已經(jīng)寫入了新的圖像數(shù)據(jù)。
具體實施例方式
下文,將詳細(xì)描述本發(fā)明。
本發(fā)明具體利用8行的行緩沖器進(jìn)行JPEG壓縮的方法,并以圖像的寬度為64, 圖像格式為YUV422為例來描述該方法。
如圖1所示,本發(fā)明的方法需要首先將處于宏塊陣列其中一個對角線上的區(qū)域確 定為軸線,例如該處于對角線區(qū)域應(yīng)是區(qū)域(0,0),區(qū)域(l,l)...區(qū)域(7,7)。 然后,在JPEG模塊依次讀出該軸線一側(cè)的各個宏塊以后,把軸線另一側(cè)的圖像數(shù) 據(jù)搬移到該側(cè)的相應(yīng)區(qū)域中。
具體地,如圖2A所示的是在本發(fā)明的一個行緩沖器的分區(qū)圖,為更好地說明本 發(fā)明的技術(shù)方案,以標(biāo)號M來表式正在寫入的一組圖像數(shù)據(jù),以坐標(biāo)法來表示這些 圖像數(shù)據(jù)所在的位置,其中行坐標(biāo)0-7分別表示第一至第八行,縱坐標(biāo)0-7表示第一 至第八列(或區(qū)域),以標(biāo)號a和b分別表示每一列下的第一子塊和第二子塊。這 樣,存儲在第四行第三個區(qū)域的第一子塊的圖像數(shù)據(jù)就可以M32a來表示。
首先,第一行到第七行的所有數(shù)據(jù)已經(jīng)存儲在行緩沖器中時,圖像傳感器(未示 出)開始寫入最后一行的數(shù)據(jù)了。當(dāng)其把M70a寫入到了行緩沖器中時,此時第一 宏塊(第一區(qū)域O的第一子塊a),即M00a,M10a,M20a,…M70a都已經(jīng)準(zhǔn)備好了, JPEG模塊(未示出)讀出該第一宏塊。
在輸出數(shù)據(jù)后,該行緩沖器的存儲如圖2B所示,該第一宏塊的存儲位置全部為 空。當(dāng)然,此時,圖像數(shù)據(jù)仍然在不斷地寫入到該最后一行。
然后,如圖2C所示,把第一行,第二至第八區(qū)中各個第一子塊a的數(shù)據(jù),即 M01a, M02a, ...M70a,分別移到該第一宏塊中的相應(yīng)的位置,此時行0的部分空 間已經(jīng)空了,而圖像傳感器的數(shù)據(jù)可以繼續(xù)寫入到行7中。
接下來,JPEG模塊(未示出)讀出第二宏塊(即第一區(qū)域O第二子塊b),這 樣該第二宏塊的存儲位置為空,如圖2D所示。
把第一行O,第二至八區(qū)1-7中各個第二子塊b的數(shù)據(jù),即M01b,M02b,…M07b, 分別移到第二宏塊中相應(yīng)的位置,此時第一行O的空間已經(jīng)完全空了,而圖像傳感 器也把最后一行7寫滿了,如圖2E。
JPEG繼續(xù)讀出第三宏塊(第二區(qū)域l第一子塊a)。 一方面,可以將新的一組 數(shù)據(jù)開始寫入到第一行O,例如數(shù)據(jù)N00a, N00b…;另一方面,由于第一行0中 的數(shù)據(jù)M01a已經(jīng)移到了第一區(qū)0中,在讀取第三宏塊的數(shù)據(jù)時,需要將該被搬移
的數(shù)據(jù)M01a—并輸出,如圖2F所示。
相似地,把第二行l(wèi),第三至第八區(qū)l-7中各個第一子塊a的數(shù)據(jù),即M12a, M13a,…M17a,分別移到第四宏塊中相應(yīng)的位置,此時第二行1的部分空間已經(jīng)空 了,而圖像傳感器的新數(shù)據(jù)可以繼續(xù)寫入到第一行O中,如圖2G所示。
JPEG繼續(xù)讀出第四宏塊(第二區(qū)域1第二子塊b)。由于第一行0中的數(shù)據(jù)M01b 已經(jīng)移到了第一區(qū)O中,在讀取第三宏塊的數(shù)據(jù)時,需要將該被搬移的數(shù)據(jù)M01b 一并輸出,如圖2H所示。
相似地,把第二行l(wèi),第三至第八區(qū)l-7中各個第二子塊b的數(shù)據(jù),即M12b, M13b,…M17b,分別移到第三宏塊中相應(yīng)的位置,此時第二行1的全部空間已經(jīng) 空了,而圖像傳感器的新數(shù)據(jù)可以繼續(xù)寫入到第一行O中,如圖2I所示。
依此類推,參照圖2J 圖2Z, JPEG模塊可以繼續(xù)讀取剩余的宏塊,通過搬移相 應(yīng)的圖形數(shù)據(jù),可以實現(xiàn)在空閑行寫入新的數(shù)據(jù)。在JPEG模塊讀完第七區(qū)6后的 存儲結(jié)構(gòu),如圖3所示。
最后,JPEG模塊讀取第八區(qū)7的全部數(shù)據(jù)后,其存儲結(jié)構(gòu)如圖4所示。此時, 另外七行新的數(shù)據(jù)已經(jīng)完全存儲到了行存儲器中,這樣本發(fā)明的行存儲器又可以開 始了下一個循環(huán)。
當(dāng)然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情 況下,熟悉本領(lǐng)域的普通技術(shù)人員當(dāng)可根據(jù)本發(fā)明做出各種相應(yīng)的改變和變 形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種用于行緩沖器的壓縮方法,其特征在于,該方法包括將一行緩沖器劃分為多個區(qū)域,該多個區(qū)域分別以橫向和縱向的形式進(jìn)行排列后形成陣列;逐行寫入圖像數(shù)據(jù),直至最后一行;在將圖像數(shù)據(jù)逐列寫入到該最后一行的區(qū)域時,依次輸出寫滿在位于同一列的區(qū)域上的圖像數(shù)據(jù)直至位于該同一列上的各該區(qū)域全部為空;將以處于該陣列其中一個對角線上的多個區(qū)域為軸,將相對應(yīng)的區(qū)域上的圖像數(shù)據(jù)搬移到各該為空的區(qū)域。
2. 根據(jù)權(quán)利要求1所述的壓縮方法,其特征在于,該方法包括 將該每一區(qū)域進(jìn)一步劃分成第一和第二子塊。
3. 根據(jù)權(quán)利要求2所述的壓縮方法,其特征在于,在各行的同一列相同 位置上的子塊被寫滿圖像數(shù)據(jù)時,輸出存儲在該相同位置上的子塊中的圖像數(shù) 據(jù)。
4. 根據(jù)權(quán)利要求3所述的壓縮方法,其特征在于,該方法還包括 將圖像數(shù)據(jù)寫入到最后一行的一預(yù)定列的第一子塊中; 輸出該預(yù)定列的第一子塊中的圖像數(shù)據(jù)直至該預(yù)定列的第一子塊全部為空;將與該預(yù)定列的第一子塊以該軸相對應(yīng)的行中的各個列的第一子塊中的 圖像數(shù)據(jù)搬移到該預(yù)定列的第一子塊中。
5. 根據(jù)權(quán)利要求4所述的壓縮方法,其特征在于,該方法還包括 繼續(xù)將圖像數(shù)據(jù)寫入到該預(yù)定列的第二子塊中;輸出該預(yù)定列的第二子塊中的圖像數(shù)據(jù)直至該預(yù)定列的第二子塊全部為空;將與該預(yù)定列的第二子塊以該軸相對應(yīng)的行中的各個第二子塊中的圖像 數(shù)據(jù)搬移到該預(yù)定列的第二子塊中。
6. 根據(jù)權(quán)利要求4或5所述的壓縮方法,其特征在于,輸出該預(yù)定列的 第一子塊或第二子塊中的圖像數(shù)據(jù)的步驟,還包括輸出在該預(yù)定列中被搬移的 圖像數(shù)據(jù)。
7. 根據(jù)權(quán)利要求6所述的壓縮方法,其特征在于,該方法還包括將新的 圖像數(shù)據(jù)繼續(xù)逐行寫入經(jīng)搬移后為空的區(qū)域。
8. 根據(jù)權(quán)利要求1所述的壓縮方法,其特征在于,該行緩沖器的大小為 1024字節(jié)。
9. 根據(jù)權(quán)利要求8所述的壓縮方法,其特征在于,該行緩沖器被分成64 個區(qū)域。
10. 根據(jù)權(quán)利要求8所述的壓縮方法,其特征在于,該行緩沖器被劃分成 8行和8列。
全文摘要
本發(fā)明披露了一種用于行緩沖器的壓縮方法,以有效地利用行存儲器的空閑空間,節(jié)省了資源。該方法包括將一行緩沖器劃分為多個區(qū)域,該多個區(qū)域分別以橫向和縱向的形式進(jìn)行排列后形成陣列;逐行寫入圖像數(shù)據(jù),直至最后一行;在將圖像數(shù)據(jù)逐列寫入到該最后一行的區(qū)域時,依次輸出寫滿在位于同一列的區(qū)域上的圖像數(shù)據(jù)直至位于該同一列上的各該區(qū)域全部為空;將以處于該陣列其中一個對角線上的多個區(qū)域為軸,將相對應(yīng)的區(qū)域上的圖像數(shù)據(jù)搬移到各該為空的區(qū)域。
文檔編號H04N1/41GK101202809SQ20071017948
公開日2008年6月18日 申請日期2007年12月13日 優(yōu)先權(quán)日2007年12月13日
發(fā)明者霍曉方 申請人:北京中星微電子有限公司