国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      紋理磚壓縮及解壓縮方法以及使用該方法的裝置與流程

      文檔序號(hào):12498315閱讀:214來源:國知局
      紋理磚壓縮及解壓縮方法以及使用該方法的裝置與流程
      本發(fā)明涉及一種視頻編碼技術(shù),特別是一種紋理磚壓縮及解壓縮方法以及使用該方法的裝置。
      背景技術(shù)
      :圖像壓縮使用先進(jìn)的編碼技術(shù),用以移除圖像數(shù)據(jù)中的冗余。于目前的高分辨率屏幕,例如4K屏幕,圖形處理中的紋理磚若全部使用無損壓縮,可能需要耗費(fèi)大量的內(nèi)存空間,進(jìn)而增加硬件成本。因此,需要一種紋理磚壓縮及解壓縮方法以及使用該方法的裝置,用以節(jié)省內(nèi)存空間的使用。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的實(shí)施例提出一種紋理磚壓縮方法,至少包含以下步驟。無損壓縮紋理磚的原始數(shù)據(jù)后,判斷原始數(shù)據(jù)的無損壓縮結(jié)果的長度是否大于目標(biāo)長度。如果是,執(zhí)行多層次數(shù)據(jù)縮減控制,用以縮減原始數(shù)據(jù)以產(chǎn)生縮減數(shù)據(jù),并且產(chǎn)生縮減數(shù)據(jù)的無損壓縮結(jié)果,使得縮減數(shù)據(jù)的無損壓縮結(jié)果的長度小于或等于目標(biāo)長度。本發(fā)明的實(shí)施例提出一種紋理磚壓縮裝置,至少包含內(nèi)存控制器、壓縮器、減法器以及數(shù)據(jù)縮減控制器。數(shù)據(jù)縮減控制器耦接至內(nèi)存控制器、壓縮器及減法器,指示內(nèi)存控制器輸出紋理磚的原始數(shù)據(jù)至壓縮器,使得壓縮器產(chǎn)生原始數(shù)據(jù)的無損壓縮結(jié)果,并且判斷原始數(shù)據(jù)的無損壓縮結(jié)果的長度是否大于目標(biāo)長度。當(dāng)原始數(shù)據(jù)的無損壓縮結(jié)果的長度大于目標(biāo)長度時(shí),數(shù)據(jù)縮減控制器執(zhí)行多層次數(shù)據(jù)縮減控制,用以指示減法器縮減原始數(shù)據(jù)以產(chǎn)生縮減數(shù)據(jù),并指示內(nèi)存控制器輸出縮減數(shù)據(jù)至壓縮器,使得壓縮器產(chǎn)生縮減數(shù)據(jù)的無損壓縮結(jié)果,其中,縮減數(shù)據(jù)的無損壓縮結(jié)果的長度小于或等于目標(biāo)長度。本發(fā)明的實(shí)施例提出一種紋理磚解壓縮方法,至少包含以下步驟。于接收壓縮結(jié)果及減損程度旗標(biāo)后,解壓縮壓縮結(jié)果以產(chǎn)生解壓縮數(shù)據(jù),并依據(jù)減損程度旗標(biāo)判斷壓縮結(jié)果是否經(jīng)過數(shù)據(jù)縮減。當(dāng)壓縮結(jié)果經(jīng)過數(shù)據(jù)縮減時(shí),恢復(fù)解壓縮數(shù)據(jù)至原始長度以產(chǎn)生恢復(fù)結(jié)果,以及輸出恢復(fù)結(jié)果給三維繪圖流水線中的紋理操作。附圖說明圖1是依據(jù)本發(fā)明實(shí)施例的紋理磚壓縮方法流程圖。圖2是依據(jù)本發(fā)明實(shí)施例的紋理磚壓縮裝置的方塊圖。圖3是依據(jù)本發(fā)明實(shí)施例的紋理磚解壓縮方法流程圖。圖4A及4B是依據(jù)本發(fā)明實(shí)施例的紋理磚示意圖。圖5是依據(jù)本發(fā)明實(shí)施例的紋理磚壓縮方法流程圖。圖6A及6B是依據(jù)本發(fā)明實(shí)施例的紋理磚分群示意圖。圖7是依據(jù)本發(fā)明實(shí)施例的紋理磚壓縮裝置的方塊圖。圖8是依據(jù)本發(fā)明實(shí)施例的紋理磚解壓縮方法流程圖。具體實(shí)施方式以下說明為完成發(fā)明的較佳實(shí)現(xiàn)方式,其目的在于描述本發(fā)明的基本精神,但并不用以限定本發(fā)明。實(shí)際的
      發(fā)明內(nèi)容必須參考之后的權(quán)利要求范圍。必須了解的是,使用于本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、組件以及/或組件,但并不排除可加上更多的技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、組件、組件,或以上的任意組合。在權(quán)利要求中使用如“第一”、“第二”、“第三”等詞是用來修飾權(quán)利要求中的元件,并非用來表示之間具有優(yōu)先權(quán)順序,先行關(guān)系,或者是一個(gè)元件先于另一個(gè)元件,或者是執(zhí)行方法步驟時(shí)的時(shí)間先后順序,僅用來區(qū)別具有相同名字的元件。為了不影響紋理磚的信息,本發(fā)明實(shí)施例首先無損壓縮紋理磚的原始數(shù)據(jù),并且判斷原始數(shù)據(jù)的無損壓縮結(jié)果的長度是否降低至目標(biāo)長度之內(nèi)。當(dāng)原始數(shù)據(jù)的無損壓縮結(jié)果的長度大于目標(biāo)長度時(shí),對(duì)原始數(shù)據(jù)進(jìn)行縮減。然而,數(shù)據(jù)縮減會(huì)減損紋理磚的原始數(shù)據(jù)的信息。為了讓壓縮后紋理磚的信息縮減程度越低越好,本發(fā)明實(shí)施例提出一種多層次數(shù)據(jù)縮減控制,最小程度地縮減原始數(shù)據(jù)來產(chǎn)生縮減數(shù)據(jù),并且產(chǎn)生縮減數(shù)據(jù)的無損壓縮結(jié)果,使得縮減數(shù)據(jù)的無損壓縮結(jié)果的長度小于或等于目標(biāo)長度。于多層次數(shù)據(jù)縮減控制中,先縮減原始數(shù)據(jù)至一個(gè)程度以產(chǎn)生縮減數(shù)據(jù),并且無損壓縮此縮減數(shù)據(jù)。當(dāng)縮減數(shù)據(jù)的無損壓縮結(jié)果的長度不能降低至目標(biāo)長度時(shí),對(duì)原始數(shù)據(jù)進(jìn)行更大程度的縮減(亦即是,下一層次的縮減)。此外,當(dāng)數(shù)據(jù)縮減的次數(shù)達(dá)到默認(rèn)值時(shí),直接將原始數(shù)據(jù)縮減至目標(biāo)長度之內(nèi)的長度,用以避免消耗太多時(shí)間來執(zhí)行數(shù)據(jù)縮減及無損壓縮。圖1是依據(jù)本發(fā)明實(shí)施例的紋理磚壓縮方法流程圖。此方法可執(zhí)行于紋理編碼器(textureencoder)。于接收一個(gè)紋理磚(texturetile)的原始數(shù)據(jù)后(步驟S110),對(duì)原始數(shù)據(jù)執(zhí)行無損壓縮算法(步驟S131)。舉例來說,紋理磚可包含8x8畫素,格式可為RGBA8888,其中,R、G、B及A通道各使用8比特表示,使得原始數(shù)據(jù)的長度為2048比特。目標(biāo)長度可設(shè)為1024比特。接著,計(jì)算無損壓縮結(jié)果的長度(步驟S133),并判斷是否超過目標(biāo)長度(步驟S151)。如果沒有超過目標(biāo)長度(步驟S151中“否”的路徑),代表原始數(shù)據(jù)的無損壓縮成功,輸出無損壓縮結(jié)果及減損程度旗標(biāo)(lossy-levelflag)(步驟S190)。減損程度旗標(biāo)可為“0b00”,表示紋理磚的原始數(shù)據(jù)沒有經(jīng)過縮減。如果超過目標(biāo)長度(步驟S151中“是”的路徑),代表原始數(shù)據(jù)的無損壓縮失敗,接著,進(jìn)行多層次的數(shù)據(jù)縮減(步驟S171或S173)以及對(duì)縮減后紋理磚數(shù)據(jù)進(jìn)行無損壓縮(步驟S131)。在每個(gè)層次的數(shù)據(jù)縮減及縮減后紋理磚數(shù)據(jù)的無損壓縮中,首先判斷執(zhí)行過的數(shù)據(jù)縮減次數(shù)是否超過默認(rèn)值(步驟S153)??墒褂糜?jì)數(shù)器來表示執(zhí)行過的數(shù)據(jù)縮減次數(shù)。計(jì)數(shù)器初始為0,并且于每次執(zhí)行完縮減紋理磚的原始數(shù)據(jù)后(步驟S171),將計(jì)數(shù)器加1。如果沒有超過默認(rèn)值(步驟S153中“否”的路徑),縮減紋理磚的原始數(shù)據(jù)(步驟S171)。如果超過默認(rèn)值(步驟S153中“是”的路徑),縮減紋理磚的原始數(shù)據(jù)至目標(biāo)長度之內(nèi)的長度(步驟S173)。于一些實(shí)施例中,可使用公式(1)、(2)及(3)來縮減紋理磚的原始數(shù)據(jù):Ri=Ri/mj(1)Gi=Gi/mj(2)Bi=Bi/mj(3)Ri代表原始數(shù)據(jù)的第i個(gè)畫素的R值,Gi代表原始數(shù)據(jù)的第i個(gè)畫素的G值,Bi代表原始數(shù)據(jù)的第i個(gè)畫素的B值,以及mj代表第j次數(shù)據(jù)縮減的常數(shù)且j越大則mj越大。于此須注意的是,公式(1)至(3)產(chǎn)生的余數(shù)直接舍棄。于一些實(shí)施例中,步驟S153的默認(rèn)值可設(shè)為2。此外,m1可設(shè)為2,m2可設(shè)為3,m3可設(shè)為8。于第一層數(shù)據(jù)縮減時(shí),可將紋理磚的原始數(shù)據(jù)(包含R、G及B通道,或者R、G、B及A通道)除以m1(步驟S171)。接著,對(duì)縮減數(shù)據(jù)執(zhí)行無損壓縮算法(步驟S131),并判斷無損壓縮結(jié)果的長度是否超過目標(biāo)長度(步驟S151)。如果沒有超過目標(biāo)長度(步驟S151中“否”的路徑),代表縮減數(shù)據(jù)的無損壓縮成功,輸出縮減數(shù)據(jù)的無損壓縮結(jié)果及減損程度旗標(biāo)“0b01”,用以表示紋理磚的原始數(shù)據(jù)已經(jīng)過第一層數(shù)據(jù)縮減(步驟S190)。如果超過目標(biāo)長度(步驟S151中“是”的路徑),代表原始數(shù)據(jù)壓縮失敗,接著,進(jìn)行下一層次的數(shù)據(jù)縮減處理(步驟S153、S171及S173)。于第二層數(shù)據(jù)縮減時(shí),可將紋理磚的原始數(shù)據(jù)(包含R、G及B通道,或者R、G、B及A通道)除以m2(步驟S171)。接著,對(duì)縮減數(shù)據(jù)執(zhí)行無損壓縮算法(步驟S131),并判斷無損壓縮結(jié)果的長度是否超過目標(biāo)長度(步驟S151)。如果沒有超過目標(biāo)長度(步驟S151中“否”的路徑),代表縮減數(shù)據(jù)的無損壓縮成功,輸出縮減數(shù)據(jù)的壓縮結(jié)果及減損程度旗標(biāo)“0b10”,用以表示紋理磚的原始數(shù)據(jù)已經(jīng)過第二層數(shù)據(jù)縮減(步驟S190)。于第三層數(shù)據(jù)縮減時(shí),可直接將紋理磚的原始數(shù)據(jù)(包含R、G及B通道,或者R、G、B及A通道)除以m3(步驟S173),輸出縮減數(shù)據(jù)及減損程度旗標(biāo)“0b11”,表示紋理磚的原始數(shù)據(jù)已強(qiáng)迫縮減至目標(biāo)長度內(nèi)的長度(步驟S190)。在另一些實(shí)施例中,步驟S153的默認(rèn)值可設(shè)為3。m1可設(shè)為2,m2可設(shè)為3,m3可設(shè)為8,m4可設(shè)為16。步驟S190中的減損程度旗標(biāo)可使用三個(gè)比特表示,其中,“0b000”表示紋理磚的原始數(shù)據(jù)沒有經(jīng)過縮減,“0b001”表示紋理磚的原始數(shù)據(jù)已經(jīng)過第一層數(shù)據(jù)縮減,“0b010”表示紋理磚的原始數(shù)據(jù)已經(jīng)過第二層數(shù)據(jù)縮減,“0b011”表示紋理磚的原始數(shù)據(jù)已經(jīng)過第三層數(shù)據(jù)縮減,“0b100”或“0b111”表示紋理磚的原始數(shù)據(jù)已強(qiáng)迫縮減至目標(biāo)長度內(nèi)的長度。在一些實(shí)施例中,無損壓縮算法可先降低畫素內(nèi)或/以及畫素間的關(guān)聯(lián)性,然后再進(jìn)行無損編碼。為降低畫素內(nèi)的關(guān)聯(lián)性,可對(duì)每一畫素中R、G及B通道進(jìn)行運(yùn)算。為降低畫素間的關(guān)聯(lián)性,除了紋理磚的畫素(0,0)外,每一個(gè)畫素的R值、G值及B值可分別減去畫素(0,0)的R值、G值及B值。在另一些實(shí)施例中,無損壓縮算法可先偵測(cè)紋理磚是否符合數(shù)個(gè)預(yù)測(cè)模式中之一者。如果是,則保留幾個(gè)畫素的數(shù)據(jù),產(chǎn)生預(yù)測(cè)旗標(biāo)以表示符合的預(yù)測(cè)模式,以及記錄此預(yù)測(cè)模式的必要信息,例如,角度、長度、寬度等。例如,當(dāng)紋理磚包含純色(solidcolor)時(shí),可只留下一個(gè)畫素的數(shù)據(jù)并使用預(yù)測(cè)旗標(biāo)表示此為純色磚。若找不到符合的預(yù)測(cè)模式,先降低畫素內(nèi)或/畫素間的關(guān)聯(lián)性,然后再進(jìn)行無損編碼。無損編碼可使用適應(yīng)性字典編碼(adaptivedictionaryencoding)、一元編碼(unaryencoding)、熵編碼(entropyencoding)等。圖2是依據(jù)本發(fā)明實(shí)施例的紋理磚壓縮裝置的方塊圖。數(shù)據(jù)縮減控制器250指示內(nèi)存控制器210輸出紋理磚的原始數(shù)據(jù)至壓縮器230,使得壓縮器230產(chǎn)生原始數(shù)據(jù)的無損壓縮結(jié)果。接著,數(shù)據(jù)縮減控制器250判斷原始數(shù)據(jù)的無損壓縮結(jié)果的長度是否大于目標(biāo)長度。如果是,數(shù)據(jù)縮減控制器250執(zhí)行多層次數(shù)據(jù)縮減控制,用以指示減法器241縮減原始數(shù)據(jù)以產(chǎn)生縮減數(shù)據(jù),并指示內(nèi)存控制器210輸出縮減數(shù)據(jù)至壓縮器230,使得壓縮器230產(chǎn)生縮減數(shù)據(jù)的無損壓縮結(jié)果,其中,縮減數(shù)據(jù)的無損壓縮結(jié)果小于或等于上述目標(biāo)長度。多層次數(shù)據(jù)縮減控制最小程度地縮減原始數(shù)據(jù)來產(chǎn)生縮減數(shù)據(jù)。于多層次數(shù)據(jù)縮減控制中,數(shù)據(jù)縮減控制器250指示減法器241縮減原始數(shù)據(jù)至一個(gè)程度以產(chǎn)生縮減數(shù)據(jù),并且指示內(nèi)存控制器210輸出縮減數(shù)據(jù)至壓縮器230,使得壓縮器230產(chǎn)生縮減數(shù)據(jù)的無損壓縮結(jié)果。當(dāng)縮減數(shù)據(jù)的無損壓縮結(jié)果的長度大于目標(biāo)長度且數(shù)據(jù)縮減的次數(shù)沒有達(dá)到默認(rèn)值時(shí),數(shù)據(jù)縮減控制器250指示減法器241對(duì)原始數(shù)據(jù)進(jìn)行更大程度的縮減。當(dāng)縮減數(shù)據(jù)的無損壓縮結(jié)果的長度大于目標(biāo)長度且數(shù)據(jù)縮減的次數(shù)達(dá)到默認(rèn)值時(shí),數(shù)據(jù)縮減控制器250指示減法器241直接將原始數(shù)據(jù)縮減至目標(biāo)長度內(nèi)的長度,并且輸出縮減結(jié)果而不進(jìn)行無損壓縮。詳細(xì)來說,數(shù)據(jù)縮減控制器250可于接收到一個(gè)紋理磚的原始數(shù)據(jù)后,指示內(nèi)存控制器210儲(chǔ)存原始數(shù)據(jù)至內(nèi)存220中的區(qū)域221并輸出原始數(shù)據(jù)至壓縮器230,使得壓縮器230可針對(duì)原始數(shù)據(jù)執(zhí)行無損壓縮算法。壓縮器230可對(duì)從內(nèi)存控制器210接收的原始數(shù)據(jù)執(zhí)行無損壓縮算法,并且將壓縮結(jié)果輸出至數(shù)據(jù)縮減控制器250。壓縮器230的細(xì)節(jié)可參考步驟S131的說明,不再贅述。數(shù)據(jù)縮減控制器250可包含計(jì)數(shù)器來表示執(zhí)行過的數(shù)據(jù)縮減次數(shù),初始為0。數(shù)據(jù)縮減控制器250可使用多種方式實(shí)施,例如以專用硬件電路或通用硬件(例如,單一處理器、具平行處理能力的多處理器、圖形處理器或其它具運(yùn)算能力的處理器),并且在執(zhí)行程序代碼或軟件時(shí),提供特定的功能。數(shù)據(jù)縮減控制器250計(jì)算無損壓縮結(jié)果的長度,并且判斷是否超過目標(biāo)長度。當(dāng)計(jì)數(shù)器為0且無損壓縮結(jié)果的長度不超過目標(biāo)長度時(shí),數(shù)據(jù)縮減控制器250通過輸出接口260輸出無損壓縮結(jié)果及減損程度旗標(biāo)給其它電子組件,其中的減損程度旗標(biāo)表示紋理磚的原始數(shù)據(jù)沒有經(jīng)過縮減。當(dāng)計(jì)數(shù)器小于或等于默認(rèn)值且無損壓縮結(jié)果的長度超過目標(biāo)長度時(shí),數(shù)據(jù)縮減控制器250控制除法器241用以將內(nèi)存220中原始數(shù)據(jù)的每一畫素的R、G及B值除以常數(shù)m1至mj-1中之相應(yīng)一者來產(chǎn)生縮減數(shù)據(jù),控制解復(fù)用器(de-multiplexer)243將縮減數(shù)據(jù)輸出到內(nèi)存220中的區(qū)域223,以及控制內(nèi)存控制器210從內(nèi)存220的區(qū)域223讀取縮減數(shù)據(jù)并輸出至壓縮器230,其中,j為默認(rèn)值加1。寄存器245可儲(chǔ)存常數(shù)m1至mj。常數(shù)m1至mj的設(shè)定實(shí)施例可參考以上段落的說明,不再贅述。當(dāng)計(jì)數(shù)器小于或等于默認(rèn)值且無損壓縮結(jié)果的長度沒有超過目標(biāo)長度時(shí),數(shù)據(jù)縮減控制器250輸出無損壓縮結(jié)果及減損程度旗標(biāo)給其它電子組件,其中的減損程度旗標(biāo)表示紋理磚的原始數(shù)據(jù)經(jīng)過特定層次的縮減。減損程度旗標(biāo)的設(shè)定實(shí)施例可參考以上段落的說明,不再贅述。當(dāng)計(jì)數(shù)器大于默認(rèn)值且壓縮結(jié)果的長度超過目標(biāo)長度時(shí),數(shù)據(jù)縮減控制器250控制除法器241用以將內(nèi)存220中原始數(shù)據(jù)的每一畫素的R、G及B通道除以常數(shù)mj來產(chǎn)生縮減數(shù)據(jù),控制解復(fù)用器243將縮減數(shù)據(jù)輸出到數(shù)據(jù)縮減控制器250,以及通過輸出接口260輸出縮減數(shù)據(jù)及減損程度旗標(biāo)給其它電子組件,其中的減損程度旗標(biāo)表示紋理磚的原始數(shù)據(jù)已強(qiáng)迫縮減至目標(biāo)長度內(nèi)的長度。除法器241可實(shí)施公式(1)至(3)來縮減紋理磚的原始數(shù)據(jù)。為了恢復(fù)如上所述的經(jīng)多層次數(shù)據(jù)縮減的紋理磚,圖3是依據(jù)本發(fā)明實(shí)施例的紋理磚解壓縮方法流程圖。此方法可執(zhí)行于紋理譯碼器。在接收一個(gè)壓縮結(jié)果及減損程度旗標(biāo)后(步驟S310),依據(jù)減損程度旗標(biāo)判斷紋理磚的原始數(shù)據(jù)是否強(qiáng)迫縮減至目標(biāo)長度內(nèi)的長度(步驟S320)。例如,判斷減損程度旗標(biāo)是否為“0b11(以二個(gè)比特表示)”、“0b100(以三個(gè)比特表示)”或“0b111(以三個(gè)比特表示)”。如果是(步驟S320中“是”的路徑),直接恢復(fù)壓縮結(jié)果至原始長度(步驟S351)及輸出恢復(fù)結(jié)果給三維(3D,three-dimensional)繪圖流水線中的紋理操作(步驟S360)。于一些實(shí)施例中,可使用公式(4)、(5)及(6)來直接恢復(fù)壓縮結(jié)果:Ri=Ri*mmax+cmax(4)Gi=Gi*mmax+cmax(5)Bi=Bi*mmax+cmax(6)Ri代表壓縮結(jié)果的第i個(gè)畫素的R值,Gi代表壓縮結(jié)果的第i個(gè)畫素的G值,Bi代表壓縮結(jié)果磚的第i個(gè)畫素的B值,mmax代表恢復(fù)常數(shù),cmax代表補(bǔ)償常數(shù)。假設(shè)紋理磚的原始數(shù)據(jù)長度為2048比特,而壓縮結(jié)果的目標(biāo)長度設(shè)為1024比特:mmax可依據(jù)經(jīng)驗(yàn)設(shè)為8,cmax可依據(jù)經(jīng)驗(yàn)設(shè)為3或6。當(dāng)紋理磚的原始數(shù)據(jù)并非強(qiáng)迫縮減至目標(biāo)長度內(nèi)的長度時(shí)(步驟S320中“否”的路徑),解壓縮接收到的壓縮結(jié)果以產(chǎn)生解壓縮數(shù)據(jù)(步驟S330)。在一些實(shí)施例中,步驟S330可先進(jìn)行無損譯碼,再恢復(fù)畫素內(nèi)或/以及畫素間的關(guān)聯(lián)性。無損譯碼可使用適應(yīng)性字典譯碼(adaptivedictionarydecoding)、一元譯碼(unarydecoding)、熵譯碼(entropydecoding)等。為恢復(fù)畫素內(nèi)的關(guān)聯(lián)性,可使用公式恢復(fù)每一畫素中的R、G及B通道。為恢復(fù)畫素間的關(guān)聯(lián)性,除了紋理磚的第一個(gè)畫素外,每一個(gè)畫素的R值、G值、B值及A值可分別加上第一個(gè)畫素的R值、G值、B值及A值。在另一些實(shí)施例中,步驟S330可先依據(jù)預(yù)測(cè)旗標(biāo)來偵測(cè)接收到的紋理磚數(shù)據(jù)是否符合數(shù)個(gè)預(yù)測(cè)模式中之一者。如果是,則依據(jù)偵測(cè)到的預(yù)測(cè)模式及相關(guān)的畫素?cái)?shù)據(jù)產(chǎn)生紋理磚的原始數(shù)據(jù)。例如,當(dāng)偵測(cè)到紋理磚包含純色(solidcolor)時(shí),則將其中的唯一畫素?cái)?shù)據(jù)填滿整個(gè)紋理磚(8x8畫素)。若找不到符合的預(yù)測(cè)模式,先進(jìn)行無損譯碼,再恢復(fù)畫素內(nèi)或/以及畫素間的關(guān)聯(lián)性。接著,依據(jù)減損程度旗標(biāo)判斷壓縮結(jié)果是否經(jīng)過數(shù)據(jù)縮減(步驟S340)。例如,可判斷減損程度旗標(biāo)是否為“0b00(以二個(gè)比特表示)”或“0b000(以三個(gè)比特表示)”。如果不是(步驟S340中“否”的路徑),輸出譯碼結(jié)果給3D繪圖流水線中的紋理操作(步驟S360)。如果壓縮結(jié)果經(jīng)過數(shù)據(jù)縮減(步驟S340中“是”的路徑),依據(jù)減損程度旗標(biāo)恢復(fù)解壓縮數(shù)據(jù)至原始長度以產(chǎn)生恢復(fù)結(jié)果(步驟S353)及輸出恢復(fù)結(jié)果給3D繪圖流水線中的紋理操作(步驟S360)。于一些實(shí)施例中,可使用公式(7)、(8)及(9)來恢復(fù)解壓縮數(shù)據(jù):Ri=Ri*mj+cj(7)Gi=Gi*mj+cj(8)Bi=Bi*mj+cj(9)Ri代表解壓縮數(shù)據(jù)的第i個(gè)畫素的R值,Gi代表解壓縮數(shù)據(jù)的第i個(gè)畫素的G值,Bi代表解壓縮數(shù)據(jù)的第i個(gè)畫素的B值,mj代表第j次縮減的恢復(fù)常數(shù),j越大則mj越大,mj小于mmax,cj代表第j次縮減的補(bǔ)償常數(shù),j越大則cj越大,并且cj小于cmax。mj可根據(jù)壓縮減損旗標(biāo)決定,并且Cj可根據(jù)過去經(jīng)驗(yàn)設(shè)為2、4等。紋理磚可能包含文字的信息。圖4A及4B是依據(jù)本發(fā)明實(shí)施例的紋理磚示意圖。于一些實(shí)施例中,參考圖4A,紋理磚410包含英文字母“J”,其中,英文字母中的畫素(如斜線所示,又可稱為前景畫素)通常為純色或接近純色,并且前景畫素與背景畫素間的差異較大。在另一些實(shí)施例中,參考第4B圖,除了前景畫素與背景畫素外,紋理磚430中的文字畫素與背景畫素間包含陰影(如網(wǎng)點(diǎn)所示,又可稱為中間畫素)。然而,降低畫素間關(guān)聯(lián)性的算法應(yīng)該考慮紋理磚是否包含文字信息,否則,可能妨害之后的無損編碼而無法將紋理磚的數(shù)據(jù)壓縮至目標(biāo)長度。圖5是依據(jù)本發(fā)明實(shí)施例的紋理磚壓縮方法流程圖。此方法可執(zhí)行于紋理編碼器。在接收一個(gè)紋理磚(texturetile)的原始數(shù)據(jù)后(步驟S110),對(duì)原始數(shù)據(jù)執(zhí)行無損壓縮算法(步驟S510)。于步驟S110中,將文字旗標(biāo)初始設(shè)為“0”用以指示使用第一種算法來降低畫素間的關(guān)聯(lián)性。舉例來說,紋理磚可包含8x8畫素,格式可為RGBA8888,其中,R、G、B及A通道各使用8比特表示,使得原始數(shù)據(jù)的長度為2048比特。目標(biāo)長度可設(shè)為1024比特。于步驟S510中,由于文字旗標(biāo)為“0”,無損壓縮算法可先以第一種算法來降低畫素間的關(guān)聯(lián)性,然后再進(jìn)行無損編碼。第一種算法將紋理磚的數(shù)據(jù)視為不包含文字的信息。于第一種算法的一些實(shí)施例中,除了紋理磚的畫素(0,0)外,每一個(gè)畫素的R值、G值及B值可分別減去畫素(0,0)的R值、G值及B值。熟習(xí)此技藝人士可根據(jù)不同的設(shè)計(jì)需求使用不同的第一種算法,本發(fā)明并不因此受限。無損編碼可使用適應(yīng)性字典編碼(adaptivedictionaryencoding)、一元編碼(unaryencoding)、熵編碼(entropyencoding)等。接著,計(jì)算無損壓縮結(jié)果的長度(步驟S133),并判斷是否超過目標(biāo)長度(步驟S151)。如果無損壓縮結(jié)果的長度沒有超過目標(biāo)長度(步驟S151中“否”的路徑),代表原始數(shù)據(jù)的無損壓縮成功,輸出壓縮結(jié)果、文字旗標(biāo)及減損程度旗標(biāo)(步驟S540)。文字旗標(biāo)為“0”用以指示壓縮結(jié)果使用第一種算法來降低畫素間的關(guān)聯(lián)性。減損程度旗標(biāo)可為“0b00”,表示紋理磚的原始數(shù)據(jù)沒有經(jīng)過縮減。如果無損壓縮結(jié)果的長度超過目標(biāo)長度(步驟S151中“是”的路徑),代表原始數(shù)據(jù)的無損壓縮失敗,判斷文字旗標(biāo)是否為“0”(步驟S520)。如果是(步驟S520中“是”的路徑),將文字旗標(biāo)設(shè)為“1”用以指示使用第二種算法來降低畫素間的關(guān)聯(lián)性,并且產(chǎn)生位圖用以包含紋理磚中每一畫素屬于多個(gè)群組中之一者的信息(步驟S530)。第二種算法是先將紋理磚中的畫素分至多個(gè)群組,并將降低每一群組中的畫素間的關(guān)聯(lián)性。例如,標(biāo)示紋理磚中每一畫素為前景(foreground)或背景(background),或者標(biāo)示紋理磚中每一畫素為前景、中間(intermediary)或背景。于步驟S530的一些實(shí)施例,詳細(xì)來說,產(chǎn)生紋理磚的R、G及B通道直方圖,并據(jù)以分別計(jì)算R、G及B通道邊界值(boundaryvalues)。邊界值可為直方圖的平均數(shù)或中位數(shù)。接著,判斷每一畫素中的R、G及B值是否分別大于R、G及B通道的邊界值。當(dāng)一個(gè)畫素的R、G及B值中的任意二者大于相應(yīng)邊界值,則將此畫素標(biāo)示前景畫素。否則,將此畫素標(biāo)示為背景畫素。舉例來說,可使用表1的位圖(bitmap)來表示紋理磚410,其中,每個(gè)畫素以一個(gè)比特表示為前景或背景畫素:表10111111000011000000110000001100000011000100110001111100001110000其中,“1”代表前景畫素,“0”代表背景畫素,前景畫素集合起來可形成一個(gè)字母、數(shù)字、符號(hào)等。于步驟S530的另一些實(shí)施例,詳細(xì)來說,產(chǎn)生紋理磚的R、G及B通道直方圖,并據(jù)以分別計(jì)算R、G及B通道中間范圍(middleranges),每一個(gè)中間范圍包含一個(gè)下限值(lowervalue)及一個(gè)上限值(uppervalue)。接著,分別比對(duì)每一畫素中的R、G及B值是否大于R、G及B通道的上限值,以及是否小于R、G及B通道的下限值。當(dāng)一個(gè)畫素的R、G及B值中的任意二者大于相應(yīng)上限值,則將此畫素標(biāo)示前景畫素。當(dāng)一個(gè)畫素的R、G及B值中的任意二者小于相應(yīng)下限值,則將此畫素標(biāo)示背景畫素。當(dāng)一個(gè)畫素既非前景畫素亦非背景畫素,將此畫素標(biāo)示為中間畫素。舉例來說,可使用表2的位圖來表示紋理磚430,其中,每個(gè)畫素以二個(gè)比特表示為前景、中間或背景畫素:表200111111111111100000001111101000000000111110000000000011111000000000001111100000110000111110000011111111111000000011111110000000其中,“11”代表前景畫素,“10”代表中間畫素,“00”代表背景畫素,前景畫素集合起來可形成一個(gè)字母、數(shù)字、符號(hào)等,中間畫素可形成陰影。接著,于步驟S510中,由于文字旗標(biāo)為“1”,無損壓縮算法可以第二種算法來降低畫素間的關(guān)聯(lián)性,然后再進(jìn)行無損編碼。第二種算法將紋理磚的數(shù)據(jù)視為包含文字的信息。第二種算法先依據(jù)位圖(如表1或表2所示)把畫素分為二個(gè)或三個(gè)群組。圖6A是依據(jù)本發(fā)明實(shí)施例的紋理磚分群示意圖。例如,依據(jù)表1的位圖,紋理磚410可分為前景群組611及背景群組613。圖6B是依據(jù)本發(fā)明實(shí)施例的紋理磚分群示意圖。例如,依據(jù)表2的位圖,紋理磚430可分為前景群組631、中間群組633及背景群組635。在一些實(shí)施例中,于每一個(gè)群組中,除了最左上畫素外,每一個(gè)畫素的R值、G值及B值可分別減去最左上畫素的R值、G值及B值。接著,計(jì)算壓縮結(jié)果的長度(步驟S133),并判斷是否超過目標(biāo)長度(步驟S151)。如果壓縮結(jié)果的長度沒有超過目標(biāo)長度(步驟S151中“否”的路徑),代表原始數(shù)據(jù)的無損壓縮成功,輸出壓縮結(jié)果、文字旗標(biāo)、位圖及減損程度旗標(biāo)(步驟S540)。文字旗標(biāo)為“1”用以指示壓縮結(jié)果使用第二種算法來降低畫素間的關(guān)聯(lián)性。減損程度旗標(biāo)可為“0b00”,表示紋理磚的原始數(shù)據(jù)沒有經(jīng)過縮減。如果超過目標(biāo)長度(步驟S151中“是”的路徑),代表原始數(shù)據(jù)壓縮失敗,接著,進(jìn)行多層次的數(shù)據(jù)縮減(步驟S520及步驟S171或S173)以及對(duì)縮減數(shù)據(jù)進(jìn)行無損壓縮(步驟S131)。在多層次的數(shù)據(jù)縮減中,如果文字旗標(biāo)不是“0”(步驟S520中“否”的路徑),判斷執(zhí)行過的數(shù)據(jù)縮減次數(shù)是否超過默認(rèn)值(步驟S153)。如果沒有超過默認(rèn)值(步驟S153中“否”的路徑),縮減紋理磚的原始數(shù)據(jù)(步驟S171)??s減紋理磚的原始數(shù)據(jù)后(步驟S171),對(duì)縮減數(shù)據(jù)執(zhí)行無損壓縮算法(步驟S510)。在步驟S510中,由于文字旗標(biāo)為“1”,無損壓縮算法可先以第二種算法來降低畫素間的關(guān)聯(lián)性,然后再進(jìn)行無損編碼。如果壓縮結(jié)果的長度沒有超過目標(biāo)長度(步驟S151中“否”的路徑),代表原始數(shù)據(jù)壓縮成功,輸出壓縮結(jié)果、文字旗標(biāo)、位圖及減損程度旗標(biāo)(步驟S540)。文字旗標(biāo)為“1”用以指示壓縮結(jié)果使用第二種算法來降低畫素間的關(guān)聯(lián)性。于一些實(shí)施例中,減損程度旗標(biāo)可使用二個(gè)比特表示為“0b01”或“0b10”,用以表示紋理磚的原始數(shù)據(jù)經(jīng)過特定層次的縮減。于另一些實(shí)施例中,減損程度旗標(biāo)可使用三個(gè)比特表示為“0b001”、“0b010”或“0b011”,用以表示紋理磚的原始數(shù)據(jù)經(jīng)過特定層次的縮減。減損程度旗標(biāo)的設(shè)定可參考圖1的相關(guān)說明。如果壓縮結(jié)果的長度超過目標(biāo)長度(步驟S151中“是”的路徑),代表原始數(shù)據(jù)壓縮失敗,判斷執(zhí)行過的數(shù)據(jù)縮減次數(shù)是否超過默認(rèn)值(步驟S153)。如果沒有超過默認(rèn)值(步驟S153中“否”的路徑),進(jìn)行紋理磚的原始數(shù)據(jù)的下一層次縮減(步驟S171)。步驟S153及步驟S171的技術(shù)細(xì)節(jié)可參考圖1中的相關(guān)說明。如果超過默認(rèn)值(步驟S153中“是”的路徑),縮減紋理磚的原始數(shù)據(jù)至目標(biāo)長度內(nèi)的長度(步驟S173),并且輸出壓縮結(jié)果及減損程度旗標(biāo)(步驟S540)。于一些實(shí)施例中,減損程度旗標(biāo)可使用二個(gè)比特表示為“0b11”,用以表示紋理磚的原始數(shù)據(jù)已強(qiáng)迫縮減至目標(biāo)長度內(nèi)的長度。于另一些實(shí)施例中,減損程度旗標(biāo)可使用三個(gè)比特表示為“0b100”或“0b111”,用以表示紋理磚的原始數(shù)據(jù)已強(qiáng)迫縮減至目標(biāo)長度內(nèi)的長度。于此須注意的是,熟習(xí)此技藝人士可修改圖5所示的流程圖,而不進(jìn)行數(shù)據(jù)縮減(如步驟S153、S171及S173),本發(fā)明并不因此受限。也就是說,步驟S250中“否”的路徑可連接至步驟S540,并且,步驟S540不輸出減損程度旗標(biāo)。圖7是依據(jù)本發(fā)明實(shí)施例的紋理磚壓縮裝置的方塊圖。壓縮器710可使用如步驟S510所示的二種算法中之一者來降低畫素間的關(guān)聯(lián)性,然后再進(jìn)行無損編碼。壓縮器710中實(shí)施的無損壓縮算法的細(xì)節(jié)可參考步驟S510的說明,不再贅述。數(shù)據(jù)產(chǎn)生控制器730可于接收到一個(gè)紋理磚的原始數(shù)據(jù)后,指示內(nèi)存控制器210儲(chǔ)存原始數(shù)據(jù)至內(nèi)存220中的區(qū)域221并輸出原始數(shù)據(jù)至壓縮器710,并且指示壓縮器710使用第一種算法來降低畫素間的關(guān)聯(lián)性,使得壓縮器710可針對(duì)原始數(shù)據(jù)執(zhí)行包含第一種算法的無損壓縮算法。壓縮器710將壓縮結(jié)果輸出至數(shù)據(jù)產(chǎn)生控制器730后,數(shù)據(jù)產(chǎn)生控制器730計(jì)算壓縮結(jié)果的長度,并且判斷是否超過目標(biāo)長度。當(dāng)壓縮結(jié)果的長度不超過目標(biāo)長度時(shí),數(shù)據(jù)產(chǎn)生控制器730通過輸出接口260輸出壓縮結(jié)果、文字旗標(biāo)及減損程度旗標(biāo)給其它電子組件,其中的文字旗標(biāo)表示使用第一種算法來降低畫素間的關(guān)聯(lián)性,而減損程度旗標(biāo)表示紋理磚的原始數(shù)據(jù)沒有經(jīng)過縮減。當(dāng)壓縮結(jié)果的長度超過目標(biāo)長度時(shí),數(shù)據(jù)縮減控制器730指示位圖產(chǎn)生器750,用以依據(jù)原始數(shù)據(jù)221產(chǎn)生如表1或表2所示的位圖770,并且儲(chǔ)存位圖770至內(nèi)存220。位圖產(chǎn)生器750產(chǎn)生位圖770的細(xì)節(jié)可參考步驟S530的說明,不再贅述。在位圖770產(chǎn)生后,數(shù)據(jù)產(chǎn)生控制器730指示壓縮器710參考位圖770并使用第二種算法來降低畫素間的關(guān)聯(lián)性,使得壓縮器710可針對(duì)原始數(shù)據(jù)執(zhí)行包含第二種算法的無損壓縮算法。壓縮器710執(zhí)行無損壓縮算法的細(xì)節(jié)可參考步驟S510的說明。接著,壓縮器710將壓縮結(jié)果輸出至數(shù)據(jù)產(chǎn)生控制器730。數(shù)據(jù)產(chǎn)生控制器730計(jì)算壓縮結(jié)果的長度,并且判斷是否超過目標(biāo)長度。當(dāng)壓縮結(jié)果的長度不超過目標(biāo)長度時(shí),數(shù)據(jù)產(chǎn)生控制器730通過輸出接口260輸出壓縮結(jié)果、文字旗標(biāo)、位圖及減損程度旗標(biāo)給其它電子組件,其中的文字旗標(biāo)表示使用第二種算法來降低畫素間的關(guān)聯(lián)性,而減損程度旗標(biāo)表示紋理磚的原始數(shù)據(jù)沒有經(jīng)過縮減。在一些實(shí)施例中,當(dāng)壓縮器710使用第二種算法來降低畫素間的關(guān)聯(lián)性尚無法將壓縮結(jié)果的長度縮減至目標(biāo)長度內(nèi)時(shí),數(shù)據(jù)產(chǎn)生控制器730可協(xié)調(diào)除法器241、解復(fù)用器243及內(nèi)存控制器210執(zhí)行多層次的數(shù)據(jù)縮減,使得壓縮器710可對(duì)縮減數(shù)據(jù)執(zhí)行無損壓縮算法。除法器241、解復(fù)用器243、寄存器245及內(nèi)存控制器210于多層次數(shù)據(jù)縮減的技術(shù)細(xì)節(jié)可參考圖2的說明,不再贅述。為了恢復(fù)如上所述的經(jīng)不同算法來降低畫素間的關(guān)聯(lián)性以及經(jīng)多層次數(shù)據(jù)縮減的紋理磚,圖8是依據(jù)本發(fā)明實(shí)施例的紋理磚解壓縮方法流程圖。此方法可執(zhí)行于紋理譯碼器。在接收一個(gè)壓縮結(jié)果及減損程度旗標(biāo)后(步驟S310),依據(jù)減損程度旗標(biāo)判斷紋理磚的原始數(shù)據(jù)是否強(qiáng)迫縮減至目標(biāo)長度(步驟S320)。如果是(步驟S320中“是”的路徑),直接恢復(fù)壓縮結(jié)果至原始長度(步驟S351)及輸出恢復(fù)結(jié)果給3D繪圖流水線中的紋理操作(步驟S360)。步驟S310、S320、S351及S360的技術(shù)細(xì)節(jié)可參考圖3的說明,不再贅述。接著,取得文字旗標(biāo)(S810),并且判斷編碼器是否使用第一種算法降低畫素間的關(guān)聯(lián)性(步驟S820)。若是(步驟S820中“是”的路徑),無損譯碼壓縮結(jié)果以及使用第一種算法恢復(fù)畫素間的關(guān)聯(lián)性(步驟S830)。否則(步驟S820中“否”的路徑),取得位圖(步驟S841),無損譯碼壓縮結(jié)果以及依據(jù)位圖使用第二種算法恢復(fù)畫素間的關(guān)聯(lián)性(步驟S843)。無損譯碼可使用適應(yīng)性字典譯碼、一元譯碼、熵譯碼等。在步驟S830的一些實(shí)施例中,除了紋理磚的畫素(0,0)外,第一種算法可將每一個(gè)畫素的R值、G值及B值分別加上畫素(0,0)的R值、G值及B值。熟習(xí)此技藝人士可根據(jù)不同的設(shè)計(jì)需求使用不同的第一種算法,本發(fā)明并不因此受限。在步驟S841中,取得的位圖可如表1或表2所示。于步驟S843中,詳細(xì)來說,可依據(jù)位圖將紋理磚中的畫素分成二個(gè)或三個(gè)群組。接著,在一些實(shí)施例中,針對(duì)每一個(gè)群組,除最左上畫素外的每一個(gè)畫素的R值、G值及B值,分別加上最左上畫素的R值、G值及B值。在無損解碼及恢復(fù)畫素間的關(guān)聯(lián)性后(步驟S830或S843),依據(jù)減損程度旗標(biāo)判斷接收到的壓縮結(jié)果是否經(jīng)過數(shù)據(jù)縮減(步驟S340)。如果接收到的壓縮結(jié)果沒有經(jīng)過數(shù)據(jù)縮減(步驟S340中“否”的路徑),輸出譯碼結(jié)果給3D繪圖流水線中的紋理操作(步驟S360)。如果接收到的壓縮結(jié)果經(jīng)過數(shù)據(jù)縮減(步驟S340中“是”的路徑),依據(jù)減損程度旗標(biāo)恢復(fù)解壓縮數(shù)據(jù)至原始長度(步驟S353)及輸出恢復(fù)結(jié)果給3D繪圖流水線中的紋理操作(步驟S360)。步驟S340、S353及S360的技術(shù)細(xì)節(jié)可參考圖3的說明,不再贅述。雖然圖2及圖7中包含了以上描述的組件,但不排除在不違反發(fā)明的精神下,使用更多其它的附加組件,以達(dá)成更佳的技術(shù)效果。此外,雖然圖1、3、5及8的方法流程圖采用特定的順序來執(zhí)行,但是在不違法發(fā)明精神的情況下,熟習(xí)此技藝人士可以在達(dá)到相同效果的前提下,修改這些步驟間的順序,所以,本發(fā)明并不局限于僅使用如上所述的順序。雖然本發(fā)明使用以上實(shí)施例進(jìn)行說明,但需要注意的是,這些描述并非用以限縮本發(fā)明。相反地,此發(fā)明涵蓋了熟習(xí)此技藝人士顯而易見的修改與相似設(shè)置。所以,申請(qǐng)權(quán)利要求范圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設(shè)置?!痉?hào)說明】S110~S190方法步驟;210內(nèi)存控制器;220內(nèi)存;221、223內(nèi)存中的區(qū)域;230壓縮器;241減法器;243解復(fù)用器;245寄存器;250數(shù)據(jù)縮減控制器;260輸出接口;S310~S360方法步驟;410、430紋理磚;S510~S540方法步驟;611前景群組;613背景群組;631前景群組;633中間群組;635背景群組;710壓縮器;730數(shù)據(jù)產(chǎn)生控制器;750位圖產(chǎn)生器;770內(nèi)存中的區(qū)域;S810~S843方法步驟。當(dāng)前第1頁1 2 3 
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1