一種細粒度高壓縮率的紋理壓縮和合成方法
2023-05-28 10:07:51
專利名稱:一種細粒度高壓縮率的紋理壓縮和合成方法
技術領域:
本發明涉及一種計算機圖形學中的紋理壓縮和合成的方法,特別涉及一種細粒度
高壓縮率的紋理壓縮和合成方法。
背景技術:
計算機圖形學(Computer Gr即hics,簡稱CG)是一種使用數學算法將二維或三維 圖形轉化為計算機顯示器的柵格形式的科學。簡單地說,計算機圖形學的主要研究內容就 是研究如何在計算機中表示圖形、以及利用計算機進行圖形的計算、處理和顯示的相關原
理與算法。 紋理是在計算因計算機圖形畫面的光柵化所產生的片段的色彩或外觀時使用的 一維、二級或多維數據項陣列。紋理可以是圖像數據、顏色或透明度數據、粗糙度/光滑度 數據、反射率數據等。提供逼真的計算機圖形一般要求很多高質量的細節紋理。提供這樣 的紋理會加重計算機內存的負擔,因此,紋理壓縮可降低內存的要求。 目前,公開的紋理壓縮算法主要有基於矢量量化(vectorquantization,簡稱 VQ)、調色板查詢(Palletizing)、數據塊分解(Data Block Decomposition,簡稱BD)、基於 DCT壓縮、或利用更低解析度的低通濾波圖像等方法。但它們都有一些不足
1、基於矢量量化VQ和調色板查詢方法在紋理重構的過程中,需要頻繁地訪問內 存以取得顏色索引,然後查詢表、調色板等,對內存的要求較高; 2、數據塊分解BD方法受限於顏色表中顏色種類的限制,不能很好地處理"銳利紋 理邊界"或"多種紋理顏色"問題,重構的質量較差; 3、基於DCT壓縮方法和低解析度的低通濾波圖像方法都對紋理解壓縮過程要求 過於複雜,難以實現或實現成本高昂。
發明內容
本發明所要解決的技術問題是要提供一種在同等壓縮比率下能夠對紋理作更精 確調製的細粒度高壓縮率的紋理壓縮和合成方法。 本發明還要解決的另一技術問題是要提供一種壓縮率達2. 5bpp的細粒度高壓縮 率的紋理壓縮和合成方法。 為了解決以上的技術問題,本發明提供了一種細粒度高壓縮率的紋理壓縮和合成 方法,其中 步驟1 :該紋理壓縮方法的步驟如下 l-l、對於尺寸大小為WXH的目標壓縮紋理,利用MIPMAP貼圖技術,生成尺寸大小 為W/2XH/2的低解析度的MIPMAP貼圖; l-2、將生成的低解析度的MIPMAP貼圖按照2nX2n大小的原則分成若干個均等的 基本壓縮單元,最後生成的基本壓縮單元的數量為(W/2XH/2)/4n2 ;其中n為自然數;
l-3、對每一個2nX2n大小的基本壓縮單元,生成基本顏色數據和調製數據,構造紋理壓縮塊; l-4、將所有的紋理壓縮塊組成紋理壓縮數據;
步驟2 :該紋理合成方法的步驟如下
2-l、取出待解壓縮的紋理壓縮數據; 2-2、對於每一個壓縮塊中的基本顏色,同時取出鄰近的其它基本顏色數據;然後 對這些基本顏色數據進行線性插值,生成臨時的"中間基本顏色"數據;
2-3、取出壓縮塊中的調製數據,對"中間基本顏色"數據進行調製,構造2nX2n大 小的基本單元; 2-4、重複上面的第2-1步驟 2-3步驟,生成所有的基本單元;
2-5、將生成的所有的基本單元進行合併,構造出低解析度的MIPMAP貼圖;
2-6、對生成的MIPMAP貼圖進行雙線性插值,構造出高解析度的目標紋理貼圖。
所述的紋理壓縮塊包括基本顏色數據和調製數據。 對於2X2大小(2nX2n,其中n等於1)的紋理壓縮塊,所述的基本顏色數據是32 位。所述的基本顏色數據中RGB每個顏色各佔8位數據,透明數據佔8位數據。所述的調 制數據是8位 32位,在對紋理壓縮質量要求不是很高,或者對系統資源較敏感的情況下, 採用8位調製數據的模式,能達到2. 5bpp的紋理壓縮比率;在對紋理壓縮質量要求高的系 統中,採用32位調製數據模式。能達到4b卯的紋理壓縮比率。 對於2nX 2n大小(其中n為大於1的自然數)的紋理壓縮塊,所述的基本顏色數 據是nX32位;所述的調製數據為8n2位 32n2位;基本顏色數據和調製數據都可以根據 不同的系統資源或質量要求,採用不同的位數。
本發明的優越功效在於 1)同目前主流的紋理壓縮算法相比,在同等壓縮比率(4bpp)的情況下,本發明採 用了一種更小、更精細"粒度"的紋理壓縮數據塊(2X2大小);每一個數據塊能夠有64位 的壓縮數據塊(32位的基本顏色數據和32位的調製數據)。平均每一個紋素有高達256 種不同的調製數據,而在其它紋理壓縮算法中,每一個紋素平均有4種不同的調製數據,因 此,在同等壓縮比率下,本發明能夠對紋理基本顏色做更精確的調製,能夠取得更好的壓縮 質量; 2)如果每一個紋素配置2位的調製數據(4種不同的調製模式),本發明中每一個 數據塊能夠有40位的壓縮數據塊(32位的基本顏色數據和8位的調製數據),本發明能夠 取得2. 5b卯(12. 8倍)的壓縮率,同目前主流的紋理壓縮方法所能夠達到的4b卯壓縮率相 比較,有很大的提升; 3)本發明將調製數據直接保存在壓縮數據塊中,不需要頻繁地訪問內存中的顏色 查詢表、調色板等以讀取調製數據,與其它的壓縮算法相比,本發明能夠極大地節省系統內 存資源,降低系統電量等資源的消耗。
圖1為本發明的壓縮方法的流程圖;
圖2為本發明的合成方法的流程圖;
圖3為本發明壓縮塊格式示意 圖4為壓縮塊中的基本顏色數據格式的示意圖; 圖5(圖5A和圖5B)為壓縮塊中的調製數據格式的示意圖。
具體實施例方式
請參閱附圖所示,對本發明作進一步的描述。 本發明描述了一種使用更小粒度的紋理壓縮單元和MIPMAP貼圖技術的紋理壓縮 方法,使用2 X 2紋素塊的作為基本壓縮塊,在每個紋素有8位調製數據的情況下,可以達到 4b卯的紋理壓縮率,在每個紋素2位調製數據的情況下,能夠達到2. 5b卯的紋理壓縮率。
如圖3所示,基本壓縮塊包括基本顏色數據和調製數據。 如圖4所示,基本顏色數據是32位。所述的基本顏色數據中RGB每個顏色各佔8 位數據,透明數據佔8位數據。 如圖5A和圖5B所示,所述的調製數據是8位 32位,在對紋理壓縮質量要求不 是很高,或者對系統資源較敏感的情況下,採用8位調製數據的模式,能達到2. 5bpp的紋理 壓縮比率;在對紋理壓縮質量要求高的系統中,採用32位調製數據模式。能達到4bpp的紋 理壓縮比率。 本發明提供了一種細粒度高壓縮率的紋理壓縮和合成方法,其中
步驟1 :該紋理壓縮方法的步驟如圖1所示 第一步驟調用0penGL或Direct3D的API函數,生成下一級的MIPMAP貼圖;
第二步驟將生成的MIPMAP貼圖按照2X2大小的原則分成若干基本壓縮單元;
第三步驟從生成的2X2大小的基本壓縮單元中讀出32位基本顏色數據。
有多種方法用來構造基本顏色值,比如對四個像素的顏色值求平均,或只取某一 個特定像素(如左上角)的顏色值,對於所有的像素塊都用這個方法,本發明對具體的實現 方法不限定。 第四步驟對2X2大小的基本壓縮單元構造調製數據。 構造調製數據的算法與第三步中讀取基本顏色值的算法要配合一致。若在第三步 中採用讀取最左上角像素的顏色值作為基本顏色數據,那麼調製數據也應該能夠達到最好 的效果。 第五步驟重複上面的第三步驟和第四步驟,將所有生成的紋理數據塊進行合併, 便生成了壓縮後的紋理壓縮數據。
步驟2 :該紋理合成方法的步驟如圖2所示
第一步驟取出待解壓縮的紋理壓縮塊;
第二步驟讀出紋理壓縮塊中的基本顏色數據。 具體方法與壓縮過程中的基本顏色值的構造方法相對應,只取出一個紋理壓縮塊 的基本顏色數據,或取出連續四個或多個紋理壓縮塊中的基本顏色數據;
第三步驟對取出的一個或多個基本顏色數據做線性插值。
若是一個顏色塊,直接做線性插值; 或是多個基本顏色塊,對每一個基本顏色塊做線性插值,然後取平均。
第四步驟將線性插值後的數據與調製數據進行調製操作。 調製操作就是對插值後的數據乘以調製數據中的係數,以對插值後的數據做進一步調整,調製後的數據便是解壓縮後的紋理數據塊。 第五步驟重複前面四個步驟,然後將所有解壓縮後的紋理數據塊進行合併,形成 低解析度的MIPMAP貼圖。 第六步驟將第五步驟中生成的低解析度的MIPMAP貼圖做雙線性插值,生成了解 壓縮後的目標紋理貼圖。 本發明從壓縮數據塊中讀取調製數據,不需要頻繁地訪問內存中的顏色查詢表、 調色板等以讀取調製數據,極大地節省系統內存資源,降低系統電量等資源的消耗;並利用 相鄰的壓縮塊通過線性插值的方法來重構目標圖像的基本顏色,能夠很好地解決"銳利的 紋理邊界"問題和"圖像接縫"問題。 本發明壓縮塊的數據格式定義是新穎的。壓縮塊包括32位基本顏色數據和8位 32位調製數據。在對紋理壓縮質量要求不是很高,或者對系統資源較敏感的情況下,採用 8位調製數據的模式,能達到2. 5bpp的紋理壓縮比率;在對紋理壓縮質量要求高的系統中, 採用32位調製數據模式能達到4b卯的紋理壓縮比率。
權利要求
一種細粒度高壓縮率的紋理壓縮和合成方法,其特徵在於步驟1該紋理壓縮方法的步驟1-1、對於尺寸大小為W×H的目標壓縮紋理,利用MIPMAP貼圖技術,生成尺寸大小為W/2×H/2的低解析度的MIPMAP貼圖;1-2、將生成的低解析度的MIPMAP貼圖按照2n×2n大小的原則分成若干個均等的基本壓縮單元,最後生成的基本壓縮單元的數量為(W/2×H/2)/4n2;其中n為自然數;1-3、對每一個2n×2n大小的基本壓縮單元,生成基本顏色數據和調製數據,構造紋理壓縮塊;1-4、將所有的紋理壓縮塊組成了紋理壓縮數據;步驟2該紋理合成方法的步驟2-1、取出待解壓縮的紋理壓縮數據;2-2、對於每一個壓縮塊中的基本顏色,同時取出鄰近的其它基本顏色數據;然後對這些基本顏色數據進行線性插值,生成臨時的「中間基本顏色」數據;2-3、取出壓縮塊中的調製數據,對「中間基本顏色」數據進行調製,構造2n×2n大小的基本單元;2-4、重複上面的第2-1步驟~2-3步驟,生成所有的基本單元;2-5、將生成的所有的基本單元進行合併,構造出低解析度的MIPMAP貼圖;2-6、對生成的MIPMAP貼圖進行雙線性插值,構造出高解析度的目標紋理貼圖。
2. 按權利要求1所述的細粒度高壓縮率的紋理壓縮和合成方法,其特徵在於 所述的紋理壓縮塊包括基本顏色數據和調製數據。
3. 按權利要求2所述的細粒度高壓縮率的紋理壓縮和合成方法,其特徵在於 所述的基本顏色數據是nX32位,其中n為自然數。
4. 按權利要求2所述的細粒度高壓縮率的紋理壓縮和合成方法,其特徵在於 所述的調製數據是8n2 32n2位,其中n為自然數。
全文摘要
本發明提供一種細粒度高壓縮率的紋理壓縮和合成方法,其中壓縮方法步驟是生成低解析度的MIPMAP貼圖;將低解析度的MIPMAP貼圖分成若干基本壓縮單元;對每一個基本壓縮單元生成基本顏色數據和調製數據;將所有的紋理壓縮塊組成了紋理壓縮數據;合成方法步驟是對每一個壓縮塊中的基本顏色及鄰近的基本顏色數據進行線性插值,生成臨時「中間基本顏色」數據;取出調製數據,對「中間基本顏色」數據調製,構造基本單元;將生成的所有基本單元進行合併,構造出低解析度的MIPMAP貼圖;對生成的MIPMAP貼圖進行雙線性插值,構造出高解析度的目標紋理貼圖。本發明的優點是不同調製模式適應不同場合,壓縮質量佳,調製數據直接保存在壓縮塊中。
文檔編號G06T9/00GK101795410SQ20101011764
公開日2010年8月4日 申請日期2010年3月4日 優先權日2010年3月4日
發明者朱德棟 申請人:上海亞圖軟體有限公司