一種基于亮度編碼的幀緩存有損壓縮方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及圖形處理中幀緩存數(shù)據(jù)壓縮技術(shù)領(lǐng)域,尤其涉及一種基于亮度編碼的 幀緩存有損壓縮方法及裝置。
【背景技術(shù)】
[0002] GPU (Graphic Processing Unit,圖形處理器)是相對(duì)于 CPU (Central Processing Unit,中央處理器)的一個(gè)概念,是一個(gè)專門(mén)的圖形設(shè)備。
[0003] 圖形設(shè)備輸出圖像的基本構(gòu)成單位是像素,輸出的數(shù)據(jù)包括每個(gè)像素的RGB值。 RGB值是指通過(guò)紅(R)、綠(G)、藍(lán)(B)三個(gè)顏色通道的變化相互疊加來(lái)表示顏色的一種方 法。圖形設(shè)備輸出的圖像需要緩存在內(nèi)存中,這段內(nèi)存空間稱為幀緩存,然后由專門(mén)的顯示 模塊將顏色信息從幀緩存中讀出,再轉(zhuǎn)化為顯示器能夠接受的時(shí)序信號(hào)。
[0004] 為了保證圖形設(shè)備的繪制過(guò)程不會(huì)影響顯示器的刷新過(guò)程,一般會(huì)采用多個(gè)幀緩 存技術(shù),將圖形設(shè)備的繪制結(jié)果放入一個(gè)幀緩存A中,同時(shí)顯示模塊從另一個(gè)幀緩存B中讀 取數(shù)據(jù)并顯示;當(dāng)圖形設(shè)備完成A中的繪制任務(wù)時(shí),再將幀緩存A和幀緩存B進(jìn)行互換。
[0005] 隨著顯示設(shè)備的分辨率日益提高和刷新率的增加,緩存一幀圖像所需的內(nèi)存空間 也就變得越來(lái)越大,圖形設(shè)備和幀緩存、顯示模塊和幀緩存之間的帶寬需求也日漸增大。
[0006] 如圖1所示,在包含嵌入式圖形設(shè)備的SoC(System-〇n-a-Chip,系統(tǒng)級(jí)芯片)架構(gòu) 中,SoC芯片里集成了 CPU、圖形設(shè)備以及顯示模塊,這些模塊通過(guò)總線(BUS)連接起來(lái),由 于幀緩存需要較大的存儲(chǔ)空間,所以設(shè)置在SoC芯片外部的獨(dú)立存儲(chǔ)芯片中。
[0007] 如圖2所示,在上述架構(gòu)下,圖中箭頭所示的數(shù)據(jù)通路(圖形設(shè)備向幀緩存中寫(xiě)入 運(yùn)算結(jié)果、顯示模塊從幀緩存中讀出運(yùn)算結(jié)果)占用了大量的SoC片外訪問(wèn)存儲(chǔ)帶寬,在圖 2中虛線框的部分位于SoC芯片外,故其訪存帶寬十分寶貴,該數(shù)據(jù)通路容易成為系統(tǒng)的性 能瓶頸;而且大量的幀緩存刷新導(dǎo)致了大量的訪存操作,這也帶來(lái)了很大的功耗,嚴(yán)重影響 了 SoC芯片的功耗性能,故而對(duì)于幀緩存的數(shù)據(jù)進(jìn)行壓縮成為了必然的選擇。
[0008] 如圖3所示,在采用幀緩存壓縮技術(shù)之后讀寫(xiě)幀緩存的過(guò)程中,圖形設(shè)備將運(yùn)算 結(jié)果通過(guò)片內(nèi)互聯(lián)總線傳給壓縮模塊,壓縮模塊將數(shù)據(jù)進(jìn)行壓縮后,寫(xiě)入SoC芯片外的幀 緩存。
[0009] 然而,對(duì)幀緩存的壓縮需要在壓縮比、圖像效果和硬件開(kāi)銷之間做出權(quán)衡。
[0010] 現(xiàn)有技術(shù)一是美國(guó)申請(qǐng)公布專利US 6658146 B1,其提出一種叫做S3TC的方法, 該方法計(jì)算像素塊中的每個(gè)像素在RGB顏色空間中組成的"剛體"的轉(zhuǎn)動(dòng)主軸,再通過(guò)各像 素在主軸上的投影來(lái)對(duì)每個(gè)像素的顏色進(jìn)行量化。
[0011] 現(xiàn)有技術(shù)一的技術(shù)方案提供了使得各像素的量化結(jié)果和原像素的均方根誤差最 小。但是,此方案中需要計(jì)算各像素在RGB顏色空間內(nèi)的轉(zhuǎn)動(dòng)主軸,這一運(yùn)算開(kāi)銷很大,難 以在硬件上實(shí)時(shí)地實(shí)現(xiàn)該算法。
[0012] 現(xiàn)有技術(shù)二是美國(guó)申請(qǐng)公布專利申請(qǐng)公布號(hào)US 20130314429 A1,其提出一種幀 緩存無(wú)損壓縮方法,對(duì)原始的RGB圖像分塊處理,依據(jù)壓縮率的不同來(lái)決定分塊的大小,再 將幀緩存數(shù)據(jù)進(jìn)行壓縮。
[0013] 現(xiàn)有技術(shù)二可以得到一定的反走樣效果,但是此方案需要較復(fù)雜的流控制來(lái)實(shí)現(xiàn) 自適應(yīng)地調(diào)整壓縮率,且使得硬件實(shí)現(xiàn)該算法的開(kāi)銷很大,導(dǎo)致壓縮和解壓模塊引入較大 的功耗。
【發(fā)明內(nèi)容】
[0014] 為了解決【背景技術(shù)】中存在的技術(shù)問(wèn)題,本發(fā)明提出了一種基于亮度編碼的幀緩存 有損壓縮方法及裝置,以實(shí)現(xiàn)低功耗的高壓縮率幀緩存壓縮,以減小壓縮帶來(lái)的圖像失真。
[0015] 本發(fā)明提出的一種基于亮度編碼的幀緩存有損壓縮裝置,包括:圖形設(shè)備、編碼模 塊、解碼模塊、幀緩存、顯示模塊;其中,
[0016] 所述圖形設(shè)備,用于輸出RGB圖像;
[0017] 所述編碼模塊,通過(guò)總線與所述圖形設(shè)備通信,用于將所述圖形設(shè)備輸出的RGB 圖像進(jìn)行分塊,將每一塊RGB格式圖像轉(zhuǎn)化為YUV格式圖像,對(duì)所述YUV格式圖像進(jìn)行基于 亮度的壓縮編碼,將所述壓縮編碼后的分塊圖像合并拼接為壓縮圖像,將所述壓縮圖像存 儲(chǔ)到所述幀緩存中;
[0018] 所述解碼模塊,與所述編碼模塊連接并通過(guò)總線與所述圖形設(shè)備通信,用于從所 述幀緩存中讀取壓縮圖像,對(duì)所述壓縮圖像進(jìn)行插值并恢復(fù)成YUV格式圖像,將所述YUV格 式圖像轉(zhuǎn)換為RGB格式圖像,將RGB格式圖像合并拼接為原始RGB圖像,將所述原始RGB圖 像通過(guò)總線傳給所述顯示模塊。
[0019] 優(yōu)選地,所述編碼模塊具體包括:
[0020] 分塊子模塊,用于將所述圖形設(shè)備輸出的RGB圖像進(jìn)行分塊;
[0021] 轉(zhuǎn)換子模塊,與所述分塊子模塊連接,用于將每一塊RGB格式圖像轉(zhuǎn)化為YUV格式 圖像;
[0022] 量化子模塊,與所述轉(zhuǎn)換子模塊連接,用于對(duì)所述YUV格式圖像進(jìn)行基于亮度的 壓縮編碼;
[0023] 第一合并子模塊,與所述量化子模塊連接,用于將所述壓縮編碼后的分塊圖像合 并拼接為壓縮圖像,
[0024] 存儲(chǔ)子模塊,與所述第一合并子模塊,用于將壓縮圖像存儲(chǔ)到所述幀緩存中。
[0025] 優(yōu)選地,所述量化子模塊對(duì)YUV圖像塊進(jìn)行基于亮度的壓縮編碼時(shí),具體為:
[0026] 所述量化子模塊對(duì)一個(gè)4X4的YUV圖像塊進(jìn)行壓縮編碼后的數(shù)據(jù)大小為64bit, 前32bit保存兩個(gè)基色值,所述兩個(gè)基色值都用YUV格式表示并記作yOuOvO和ylulvl,后 32bit保存16個(gè)像素對(duì)應(yīng)的四色查找表的索引值Indexi,i = 0、1···、15 ;
[0027] 從16個(gè)像素中找出Y分量的最大值y0和最小值y I,其對(duì)應(yīng)的像素點(diǎn)連線記作LO ; 對(duì)所有16個(gè)像素點(diǎn)的YUV求平均值,將直線LO平移至過(guò)平均值點(diǎn),得到的直線記作Ll ;
[0028] 將Y軸上從y0到y(tǒng)l的區(qū)間定義為區(qū)間[yl,y0],將區(qū)間[yl,y0]通過(guò)直線Ll分 別映射到U軸和V軸上得到區(qū)間[ul,u0]和[vl, v0],其端點(diǎn)值為y0, yl, u0, ul, v0, Vl ;再 將區(qū)間[yl,y0]均分成4份分別編碼為00, 01,10, 11 ;
[0029] 根據(jù)每個(gè)像素在Y軸上的投影落在的區(qū)間來(lái)確定該像素的索引值Indexi。
[0030] 優(yōu)選地,所述根據(jù)每個(gè)像素在Y軸上的投影落在的區(qū)間來(lái)確定該像素的索引值 Indexi,具體為:
【主權(quán)項(xiàng)】
1. 一種基于亮度編碼的幀緩存有損壓縮裝置,其特征在于,包括:圖形設(shè)備、編碼模 塊、解碼模塊