進行數據編碼和解碼的方法和設備的制作方法
【專利摘要】進行數據編碼和解碼的方法和設備。在對用于圖形處理系統的紋理數據元素集合30進行編碼時,利用顏色空間中的分割紋理數據元素的一個或更多個無限平面41估計顏色空間中的所關注的紋理數據元素集合的數據值呈現最大方差的方向。對于各個這樣的平面,將平面各側的紋理數據元素值相加以得到相應的和點48、49,確定這兩個和點之間的向量50。然后,使用所確定的向量50中的一個在數據空間中的方向來推導將在對紋理數據元素集合進行編碼時使用的端點顏色值。
【專利說明】進行數據編碼和解碼的方法和設備
【技術領域】
[0001]本發明涉及進行數據編碼和解碼的方法和設備,具體地講,涉及在對用于計算機圖形系統的紋理數據進行壓縮和解壓縮時使用的方法和設備。
【背景技術】
[0002]在計算機圖形系統中常見的是通過將所謂的紋理或紋理數據應用于待繪制的表面來產生顏色以對要顯示的圖像中的位置進行采樣。例如,對象的表面細節可這樣產生:將預定義的“紋理”應用于表示對象的圖元(graphics primitive)集合(例如,多邊形),以賦予對象的渲染圖像以“紋理”外觀。通常,通過將紋理元素或“紋元”(各自表示給定紋理數據(例如,顏色、亮度和/或光照/陰影等值))的陣列存儲在給定位置,然后將紋元映射到要顯示的圖像的對應元素上(例如(且通常為)采樣位置集合),來應用這些紋理。所存儲的紋理元素(數據)的陣列通常稱為“紋理映射”。
[0003]這些布置方式可提供相對高的圖像質量,但也具有許多缺點。具體地講,存儲紋理數據并在使用中訪問這些紋理數據會給圖形處理裝置帶來(例如)高的存儲和處理要求(或者相反,在這些要求沒有滿足的情況下導致性能的降低)。這對于執行圖形處理的低功率、移動和手持式裝置而言尤其明顯,因為這些裝置在其(例如)存儲、帶寬和功率資源以及能力方面存在固有局限。
[0004]因此,已知的是,嘗試以“壓縮”方式對這種紋理數據進行編碼,以嘗試減小(例如)在使用紋理時可能強加于圖形處理裝置的存儲和帶寬負擔。
[0005]對于紋理壓縮技術而言常見的是使用基于塊的編碼,即,將待編碼的紋理元素的總陣列(紋理映射)分割成較小的紋元塊(例如,4X4紋元塊)的陣列,然后分別對各個這種塊進行編碼(壓縮)和解碼的布置方式。這可以(例如)有助于使解碼處理更高效,因為例如,解碼器可能僅需要對一個或幾個編碼的塊進行解碼以確定感興趣的紋元的值,而非對整個編碼的紋理進行解碼。
[0006]基于塊的紋理壓縮技術通常確定將用于給定紋元塊的顏色(或其它數據)的縮減集或調色板,然后針對塊中的各個紋理元素(紋元)將索引存儲在所述顏色集或調色板中,以指示將用于所關注的紋理元素(紋元)的顏色。這具有如下優點:針對各個紋元僅需存儲索引值,而非整個(例如)顏色值。
[0007]—種已知的基于塊的紋理壓縮技術是所謂的塊截斷編碼(BTC)。在該技術中,總紋理陣列(紋理映射)被再分割成(例如)4 X 4紋元的較小塊,針對各個這種塊確定一定數量(通常為兩個)的基色或原色值,并且將塊中的各個紋元設定為所述基色值之一。這節省了必須存儲和訪問的數據,但代價是圖像質量下降。
[0008]美國專利N0.5047853描述了一種改進的塊截斷編碼技術。在該技術中,針對各個紋元塊同樣存儲兩種基色,但還從這兩種基色(如,通這些顏色的線性混合)推導將用于該塊的兩種附加顏色。這樣,提供四種顏色作為紋元塊的“調色板”,但針對塊僅需存儲兩種顏色值。然后,利用兩個索引比特來對塊中的各個紋元編碼,以指示四種塊“顏色”中的哪一種應該用于該紋元。這種系統所提供的圖像質量優于基本塊截斷編碼,但每一塊需要更多數據。
[0009]還有其它基于塊的紋理壓縮方案,例如S3TC、BC6和BC7,其類似地將紋理分割成塊,然后針對各個塊定義兩種“端點(endpoint)”基色,通過這兩種端點顏色之間的插值來形成附加顏色,然后使用用于各個紋元的索引來從所得的顏色集為紋元選擇顏色。
[0010]例如,在S3TC紋理壓縮格式中,紋理被表示為4X4紋元塊。對于各個塊,確定兩種端點顏色,通過這兩個端點之間的插值來形成兩種附加顏色。這樣針對塊得到四種顏色的調色板,這四種顏色在顏色空間中全部落在直線上。然后針對各個紋元使用紋元索引,以將紋元映射到這四種顏色中的一種。各個編碼的塊存儲該塊的兩種端點顏色以及該塊的4X4紋元索引的網格。
[0011]這些類型的紋理壓縮處理中的最復雜的步驟通常是選擇將使用的兩種端點顏色。這通常通過確定可投影紋元值的顏色空間中的線來進行。該線通常通過針對所關注的紋元塊計算平均顏色和方向向量來推導。然后,確定投影了塊中的紋元的顏色空間中的線是穿過該平均顏色點并具有所確定的方向向量的方向的線。
[0012]在這些布置方式中,將使用的最佳方向向量是沿著顏色空間中紋元的值呈現最大方差的方向(即,紋元值在顏色空間中的主方向)的向量,因此傳統上利用離散卡亨南-洛維(Karhunen-Loewe )變換(KLT)(也稱為主分量分析)來計算。
[0013]因此,計算要在對紋元塊進行編碼時使用的兩種端點顏色的標準方法(給定未壓縮的紋理作為輸入,其中每一紋元(例如)用(R,G,B)顏色元組來表示)如下:
[0014]1.計算待編碼的紋元塊上的平均顏色C
[0015]2.針對各個紋元,用紋元的顏色值減去平均顏色C:r =T-C
[0016]3.從步驟2的減法所得的紋元值,計算協方差矩陣M
[0017]4.計算M的特征值和特征向量,然后保留表示最大能量的特征向量V。這可通過計算與最大特征值對應的特征向量,或者利用“冪迭代”方法尋找主特征向量來進行。
[0018]5.定義顏色空間中穿過平均顏色值C并具有所確定的特征向量V的方向的參數線,L=C+t*V
[0019]6.將所有紋元投影到該線上(即,針對各個紋元,確定該線上最靠近該紋元的點)。這基本上等同于針對線L上最靠近紋元的點尋找參數值t:給定減法所得的紋元T’ =T-C,參數可被計算為t=dot(V,T')/dot (V, V),其中dot O表示通常的向量點積。
[0020]7.尋找投影了紋元的線上的最高點和最低點(值)。這基本上等同于尋找得自紋元的最低(t_low)和最高(t_high)參數值。
[0021]8.然后將端點顏色定義為投影了紋元的線上的最高和最低點(值)。這基本上等同于定義:El=C+t_low*V 和 E2=C+t_high*V
[0022]在計算出這兩個端點值之后,通過從這些端點顏色的插值計算將用于編碼的塊的(例如)兩個其它的顏色值(如,分別為1/3E1+2/3E2和2/3E1+1/3E2)。然后,向各個紋元分配與塊的(例如)四個顏色當中的顏色值最接近的那一個對應的索引(對于快速編碼,這可通過僅對上述步驟6中所計算出的參數值“ t ”重新縮放和量化來進行)。
[0023]在該處理中,步驟1-4構成卡亨南-洛維變換,剩余步驟利用KLT結果來執行實際紋理壓縮。[0024]利用卡亨南-洛維變換(具體地講,上述步驟3和4)來確定將使用的向量方向,同時為待編碼的紋元塊提供對期望的主方向的精確估計在計算上花費高,并且易于數值不穩定且需要處理特殊情況。
[0025]例如,當計算特征值時,必須求解3次多項式。這樣做在分析上需要多次花費高的超越運算(立方根、正弦、余弦、反正切),并且這樣做在數值上需要相對復雜的方法(如,詹金斯-特勞布(Jenkins-Traub))以確保在合理的時間內收斂。
[0026]使用冪迭代方法來尋找主特征向量較簡單。然而,這仍然需要挑選隨機向量,然后反復地將其乘以協方差矩陣,直到所得向量最終收斂于主特征向量為止。還需要注意確保這樣的重復不會導致上溢或下溢。
[0027]還需要特別注意處理類似均勻顏色塊(其導致全零協方差矩陣;這種矩陣沒有特征向量)以及存在兩個優勢相等的方向的塊(2重特征值)的情況。
[0028]這均表明,盡管推導在對紋元塊編碼時將使用的端點顏色,尤其是確定這樣做時將使用的顏色空間中的線的方向的現有技術可精確地識別將用于此的好的方向(即,紋元值在顏色空間中的主方向(主軸)),那些現有技術在計算上花費高并且慢。
【發明內容】
[0029]因此, 申請人:認為仍有余地改進尤其是當確定(例如)要在對用于圖形處理系統的紋理數據進行編碼時使用的端點顏色時,估計待編碼的紋元值集合(如,塊)的主方向(即,紋元值被認為呈現最大方差的方向)的技術。
[0030]根據本發明的第一方面,提供了一種針對將用于圖形處理系統的待編碼的紋理數據元素集合,確定所述紋理數據元素在數據空間中的方向的方法,所述方向將在確定基礎數據值時使用,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合,該方法包括以下步驟:
[0031]針對所述數據空間中將待編碼的所述紋理數據元素集合分割成兩組的至少一個平面,確定所述數據空間中從所述數據空間中基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面一側的紋理數據元素的值的點到所述數據空間中基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面另一側的紋理數據元素的值的點的向量方向;以及
[0032]利用針對所述數據空間中將所述紋理數據元素集合分割成兩組的所述至少一個平面中的至少一個、所述紋理數據元素的在所述數據空間中確定的所述方向,來確定所述數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合。
[0033]根據本發明的第二方面,提供了一種針對將用于圖形處理系統的待編碼的紋理數據元素集合,確定所述紋理數據元素在數據空間中的方向的設備,所述方向將在確定基礎數據值時使用,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合,該設備包括:
[0034]處理電路,其被配置為:
[0035]針對所述數據空間中將待編碼的所述紋理數據元素集合分割成兩組的至少一個平面,確定所述數據空間中從所述數據空間中基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面一側的紋理數據元素的值的點到所述數據空間中基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面另一側的紋理數據元素的值的點的向量方向;以及
[0036]利用針對所述數據空間中將所述紋理數據元素集合分割成兩組的所述至少一個平面中的至少一個、所述紋理數據元素的在所述數據空間中確定的所述方向,來確定所述數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合。
[0037]本發明涉及一種確定待編碼的紋理數據元素集合在數據空間(如,顏色空間)中的方向的技術和系統,所述方向將在確定基礎(例如,端點)值時使用,所述基礎值將在對紋理數據元素進行編碼時使用。然而,為此并非使用(例如)基于特征向量的方法,本發明實際上通過在其數據空間中利用平面將紋理數據元素的值分割成兩組,然后將使用的方向確定為從數據空間中基于值落在數據空間中的所述平面一側的紋理數據元素的值的點到數據空間中基于值落在數據空間中的所述平面另一側的紋理數據元素的值的點的方向,來確定使用的方向。
[0038]如下面將進一步討論的, 申請人:發現這種布置方式可得到待編碼的紋理數據元素集合在數據空間中的主方向(即,數據空間中紋理數據元素的值呈現最大方差的方向)的足夠精確和可靠的估計,其將適用于紋理壓縮方案。另外,這無需使用現有技術中所用的基于特征向量的方法。本發明無需使用諸如乘法、除法、求根的復雜計算技術,也不允許特殊情況處理,因此可比標準的基于特征向量的方法更快地估計待編碼的紋理數據元素值集合在其數據空間中的主方向。因此,與傳統基于KLT的方法不同,其還適用于直接硬件實現,并且由于本發明的相對低的計算負荷,其還適用于例如“超快”軟件編碼器。
[0039]因此,本發明提供了一種確定待編碼的紋理數據元素值集合在數據空間中的主方向的方法和系統,其比KLT方法簡單許多,因此,與KLT方法不同,其適合于“超快”紋理壓縮和硬件紋理壓縮,但其仍可保持紋理壓縮質量。
[0040]本發明可用于需要數據(例如,顏色)空間中的紋元值的I維分區的任何紋理壓縮方案,例如用于S3TC、BTC家族、ASTC等的壓縮器。其尤其適用于基于塊的編碼方案,即,待編碼的紋理為了編碼目的而分割成較小的紋元塊(陣列)。
[0041]估計了主方向的紋理數據元素集合可包括待編碼的紋理的任何合適的紋理數據元素集合。在尤其優選的實施方式中,其包括待編碼的紋理為了編碼目的(如,在基于塊的編碼方案中)而分割成的單個紋理數據元素塊的紋理數據元素集合。在這種情況下,紋理數據元素集合可包括該塊的所有紋理數據元素(在一個優選實施方式中就是如此)。另選地,紋理數據元素集合可包括紋理為了編碼目的而分割成的給定紋理數據元素塊的紋理數據元素的子集。在(例如)待編碼的紋理數據元素塊為了編碼目的而分割為多個紋理數據元素子集的情況下這可能是適當的。在這后一種情況下,優選地,針對塊的紋理數據元素總集為了編碼目的而分割成的各個子集(分區)分別以本發明的方式確定將使用的(主)方向。
[0042]因此,在一個優選實施方式中,編碼的紋理數據元素集合包括紋理為了編碼目的而分割成的紋理數據元素塊的所有紋理數據元素。在另一優選實施方式中,紋理數據元素集合包括紋理為了編碼目的而分割成的紋理數據元素塊的紋理數據元素的子集。
[0043]如本領域已知的,確定方向時所考慮的紋理數據元素集合(如,塊)的數據空間將是與紋理數據元素所表示的數據值對應的數據空間。因此,在紋理數據元素表示顏色值(如,RGB或RGBA值)的情況下,數據空間將是(紋理數據元素的)顏色空間。在一個優選實施方式中,數據空間是顏色空間。然而,如下面將進一步討論的,紋理數據元素無需必須表示顏色值,因此在其它實施方式中數據空間不是顏色空間,而是一些其它數據空間。
[0044]在數據空間中用于將紋理數據元素分割成兩組的平面可根據需要來選擇。各個平面優選為穿過數據空間并將其分割成兩部分的(優選無限的)平面。所述平面可基于紋理數據元素集合中的已知和/或預期的值(例如,紋理數據元素集合的平均值)來選擇,在優選實施方式中,所述平面就是這樣選擇的。
[0045]在尤其優選的實施方式中,所述平面是預定義的(即,預定的),即,所述處理使用至少一個(使用一個或更多個)預定平面來分割數據空間中的紋理數據元素,并在數據空間中關于至少一個預定平面確定方向(針對一個或更多個預定平面確定方向)。
[0046]所述平面的形式將取決于數據空間(B卩,紋理數據元素的值)的維數。對于二維紋元值(數據空間),所述平面將是數據空間中的線,對于三維紋元值(數據空間),例如RGB值,所述平面將是數據空間中的二維表面,對于四維紋元值(數據空間),例如RGBA值,所述平面將是數據空間中的三維形狀,以此類推。
[0047]無論紋理數據元素的值(因此,數據空間)所具有的維數如何均可使用本發明,但最適合于相對低維的數據空間(數據值),例如(優選地)2至4維的數據空間(數據值)。
[0048]如上所述,針對所考慮的相應平面確定的數據空間中的方向是從數據空間中基于落在數據空間中的所述平面一側的紋理數據元素的值的點到數據空間中基于落在數據空間中的所述平面另一側的紋理數據元素的值的點的方向。如下面將進一步討論的, 申請人:已認識到,這可用于得到待編碼的紋理數據元素值集合在數據空間中的主方向的合理且足夠精確的估計。
[0049]為此可根據需要通過(例如,且優選地)將紋理數據元素的值與由所述平面限定的值(落在所述平面中的值)進行比較,以確定在數據空間中紋理數據元素落在該平面的哪一偵牝來確定值落在數據空間中的所述平面各側的紋理數據元素。
[0050]用于確定所述方向的數據空間中的兩點可基于所關注的平面一側的紋理數據元素值中的一些(但非所有)。在優選實施方式中,其基于所關注的平面一側的所有紋理數據元素值。
[0051]用于確定所述方向的數據空間中的兩點可以按照任何合適和期望的方式基于所關注的平面一側的紋理數據元素值。然而,在尤其優選的實施方式中,它們是表示或對應于落在所關注的平面一側的紋理數據元素的平均值的點。
[0052]因此,在優選實施方式中,針對所考慮的相應平面確定的數據空間中的方向是從落在數據空間中的所述平面一側的紋理數據元素的平均值在數據空間中的點到落在數據空間中的所述平面另一側的紋理數據元素的平均值在數據空間中的點的方向。如下面將進一步討論的, 申請人:已認識到,這可得到待編碼的紋理數據元素值集合在數據空間中的主方向的足夠精確的估計。
[0053]因此,在優選實施方式中,本發明包括下面的步驟,或者處理電路被配置為:針對數據空間中將待編碼的紋理數據元素集合分割成兩組的至少一個平面,確定數據空間中從待編碼的紋理數據元素集合中的值落在數據空間中的所述平面一側的紋理數據元素的平均值在數據空間中的點到待編碼的紋理數據元素集合中的值落在數據空間中的所述平面另一側的紋理數據元素的平均值在數據空間中的點的向量方向。
[0054]在這些布置方式中用于確定方向的數據空間中的兩個平均值點可根據需要(基于所關注的平面的各側的紋理數據元素值)確定。例如,可確定并使用紋理數據元素組的實際真正的平均值點,或者可根據需要使用真正平均值點的近似值,例如,所關注的平面一側的紋理數據元素組的最小和最大紋理數據元素值之間的中間點,或者基于所關注的平面一側的紋理數據元素值中的一些(但非所有)的平均值。使用實際平均值點將得到主方向的更好的估計。
[0055]因此,在尤其優選的實施方式中,確定了實際平均值點(而非平均值點的近似值)之間的方向。因此,在尤其優選的實施方式中,本發明包括下面的步驟,或者處理電路被配置為:針對數據空間中將待編碼的紋理數據元素集合分割成兩組的至少一個平面,確定數據空間中從待編碼的紋理數據元素集合中的值落在數據空間中的所述平面一側的紋理數據元素的平均值在數據空間中的點到待編碼的紋理數據元素集合中的值落在數據空間中的所述平面另一側的紋理數據元素的平均值在數據空間中的點的向量方向。
[0056]在這種情況下,數據空間中的平均值點可根據需要確定。例如(如,當使用穿過數據空間的任意平面時),平面各側的數據元素的平均值可以按照正常方式通過求紋理數據元素的值之和并除以所關注的紋理數據元素數量來確定。
[0057]另選地,可確定平面的相應側的所有值之和以得到總和值,然后,用平面一側的總和值減去分割平面上的點的值(例如,在分割平面穿過平均值的情況下,紋理數據元素集合的平均值)乘以所關注的平面一側的數據元素數量,以得到平面一側的平均值點,其將用于確定所關注的平面的所述方向。(因此,如果在所考慮的平面一側對η個紋理數據元素值求和,則應該用η個紋理數據元素值之和減去分割平面中的值的η倍,以得到將用于所關注的平面一側的數據空間中的平均值點以用于方向確定處理。)
[0058]在需要(例如)平面給定側的紋理數據元素的值之和的情況下,可根據需要通過(例如,且優選地)將相應紋理數據元素值簡單地加在一起來確定該和。
[0059] 申請人:已認識到,如果紋理數據元素的值以及分割它們的平面在數據空間中偏移,使得分割平面穿過(偏移時)數據空間中的原點,則平面一側的所有偏移紋理數據元素值之和在數據空間中的點與平面另一側的所有偏移紋理數據元素值之和在數據空間中的點之間的方向將對應于所關注的紋理數據元素集合在平面各側的平均值點之間的方向。(由于所有的數據值利用相同的值偏移,所以兩個偏移值和點之間的方向將與平面各側的平均數據值位置之間的方向相同。)
[0060]那么這意味著可通過首先使紋理數據元素的值偏移,使得穿過數據空間中的原點的平面將紋理數據元素分割成兩組,然后對平面的各相應側的偏移數據值求和以得到數據空間中的平面各側的將用于確定方向的點,來確定平面各側的平均數據值位置之間的方向。
[0061]那么這可使得能夠僅通過將偏移數據值加在一起來確定數據空間中的方向,由此無需(潛在地)例如花費高的除法。
[0062](確實,在這種情況下確定的偏移和點之間的方向向量的大小可能不與考慮“未偏移”紋理數據元素值的情況下的大小相同。然而,這沒有關系,因為感興趣的是向量的方向,所確定的向量的大小不影響方向確定。)
[0063]在這些布置方式中,紋理數據元素值優選地基于所關注的紋理數據元素集合的平均值偏移,因為這意味著穿過原點的平面將有效地穿過紋理數據元素集合的平均值。
[0064]因此,在尤其優選的實施方式中,首先確定所考慮的紋理數據元素集合的平均紋理數據元素值(如,平均顏色值),然后,(例如,且優選地,通過用紋理數據元素的實際值減去該平均值)使各個紋理數據元素的值按照該平均值偏移。
[0065]然后,優選地利用偏移紋理數據元素值,而非原始(實際)紋理數據元素值,來確定紋理數據元素值和以及在數據空間中的方向。更優選地,這通過針對數據空間中將待編碼的紋理數據元素集合的偏移值分割成兩組的各個平面,確定數據空間中待編碼的紋理數據元素集合中的偏移值落在數據空間中的所述平面一側的一個或更多個(優選為多個,并且優選為所有)紋理數據元素的偏移值之和在數據空間中的點與待編碼的紋理數據元素集合中的偏移值落在數據空間中的所述平面另一側的一個或更多個(優選為多個,并且優選為所有)紋理數據元素的偏移值之和在數據空間中的點之間的向量的方向,來實現。
[0066]優選地,確定數據空間中的平面各側的所有紋理數據元素的偏移值之和在數據空間中的點,因為這將得到主方向的更好的估計。然而,如果需要,也可對平面給定側的并非所有(即,一些但非所有)值求和。
[0067]如下面將進一步討論的,這有利于方向確定處理的許多優化。
[0068]在這些布置方式中,用于待編碼的紋理數據元素集合的平均值可同樣是(在優選實施方式中是)紋理數據元素的實際真正的平均值,或者如果需要,其可以是真正平均值的近似值,例如最小和最大紋理數據元素值之間的中間值。(用于確定實際平均值的任何除法可能相對花費低,尤其是如果除以2的冪,然后使用該值來使數據值偏移,僅需要一次除法,而非多次除法。)
[0069]可根據需要確定數據空間中的點(如,平均數據值點)之間的方向(向量)。例如,可用數據空間中的多個點之一的向量值減去另一點的向量值。
[0070]在使用平均值使數據值偏移的情況下,可優化方向確定處理。具體地講,如果紋理數據元素值基于其平均值偏移,則兩個偏移值和(平面的每一側一個和)之差將等于穿過數據空間中的原點的平面的情況下的和值之一的兩倍。那么這意味著,至少在穿過數據空間中的原點的平面的情況下,可僅從平面一側的所有紋理數據元素的偏移值之和確定所述方向(而無需將該和加倍(盡管如果需要可以這樣做))。
[0071]在這種情況下,使用的方向可被確定為(優選被確定為)紋理數據元素值的數據空間(如,顏色空間)中的原點與(偏移)值落在數據空間中的所述平面一側的一個或更多個(優選為多個,并且優選為所有)紋理數據元素的偏移值之和在數據空間中的點之間的方向。優選地,使用(偏移)值落在數據空間中的所述平面一側的所有紋理數據元素的偏移值之和在數據空間中的點。由于考慮原點,所以可僅將數據空間中的有關方向確定為落在所考慮的平面一側的紋理數據元素值的(向量)和。
[0072]因此,在尤其優選的實施方式中,本發明的方法和設備包括下面的步驟,或者處理電路被配置為:首先確定待編碼的紋理數據元素集合的平均數據值,然后按照該平均值使各個紋理數據元素的值偏移,然后通過針對數據空間中將偏移紋理數據元素分割成兩組的至少一個平面,確定在數據空間中數據空間中的原點與待編碼的紋理數據元素集合中的值落在數據空間中的所述平面一側的一個或更多個(優選為多個,并且優選為所有)紋理數據元素的偏移值之和在所述數據空間中的點之間的向量的方向,來確定使用的方向。
[0073]類似地,根據本發明的另一方面,提供了一種針對將用于圖形處理系統的待編碼的紋理數據元素集合,確定所述紋理數據元素在數據空間中的方向的方法,所述方向將在確定基礎數據值時使用,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合,該方法包括以下步驟:
[0074]確定待編碼的紋理數據元素集合的平均數據值,然后按照該平均值使各個紋理數據元素的值偏移;
[0075]針對數據空間中將待編碼的所述紋理數據元素集合的偏移值分割成兩組的至少一個平面,確定在數據空間中數據空間中的原點與待編碼的紋理數據元素集合中的值落在數據空間中的所述平面一側的一個或更多個(優選為多個,并且優選為所有)紋理數據元素的偏移值之和在所述數據空間中的點之間的向量的方向;以及
[0076]利用針對將紋理數據元素集合的偏移值分割成兩組的所述至少一個平面中的至少一個在紋理數據元素的數據空間中確定的所述方向,確定數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對紋理數據元素集合進行編碼時用于紋理數據元素
隹A
口 O
[0077]根據本發明的另一方面,提供了一種針對將用于圖形處理系統的待編碼的紋理數據元素集合,確定所述紋理數據元素在數據空間中的方向的設備,所述方向將在確定基礎數據值時使用,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合,所述設備包括:
[0078]處理電路,其被配置為:
[0079]確定待編碼的紋理數據元素集合的平均數據值,然后按照該平均值使各個紋理數據元素的值偏移;
[0080]針對數據空間中將待編碼的所述紋理數據元素集合的偏移值分割成兩組的至少一個平面,確定在數據空間中數據空間中的原點與待編碼的紋理數據元素集合中的值落在數據空間中的所述平面一側的一個或更多個(優選為多個,并且優選為所有)紋理數據元素的偏移值之和在所述數據空間中的點之間的向量的方向;以及
[0081]利用針對將紋理數據元素集合的偏移值分割成兩組的所述至少一個平面中的至少一個在紋理數據元素的數據空間中確定的所述方向,確定數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對紋理數據元素集合進行編碼時用于紋理數據元素
口 O
[0082]本領域技術人員將理解,適當地,本發明的這些方面和實施方式可包括(優選地,包括)本文描述的本發明的優選和可選的特征中的任何一個或更多個或者所有。
[0083]在這些布置方式中,根據需要,方向向量可被確定為從原點到和點,或從和點到原點。同樣,根據需要,和點可以是所有正紋元值(相對于所述平面)的和點,或者所有負紋元值的和點。在優選實施方式中,使用正值的和點。如上所述,由于考慮原點,可僅將方向計算為所有正(或所有負)紋元值(相對于所述平面)的向量和。
[0084]從以上內容將理解,因此,本發明可(優選地就是)主要僅利用紋理數據元素數據值的比較和加法來實現。那么這意味著與已知基于KLT的方法不同,本發明適合于直接硬件實現,并且適用于例如“超快”軟件編碼器。
[0085]針對確定了方向的平面優選全部穿過所考慮的紋理數據元素集合的平均位置(值)(該平均值可為真正的平均值,或者真正平均值的近似值,如上所述)。這有助于簡化方向尋找處理。
[0086]因此,如果紋理數據元素的實際(B卩,未偏移)數據值將用于方向尋找處理,則針對確定了方向的平面或各個平面優選穿過在數據空間中確定的紋理數據元素集合的平均值(該平均值可為真正的平均值,或者真正平均值的近似值,如上所述)。
[0087]對應地,如果已基于所考慮的集合的紋理數據元素的平均值偏移的紋理數據元素的數據值將用于方向尋找處理,則針對確定了方向的平面或各個平面優選穿過數據空間的原點(因為在這種情況下,原點將對應于原始紋理數據元素值的考慮偏移的平均)。
[0088]盡管也可對待編碼的給定紋理數據元素集合僅針對一個平面確定將使用的方向(如下面將進一步討論的,在一個優選實施方式中,就是如此), 申請人:已認識到,如果以本發明的方式針對數據空間中分割紋理數據元素的多個不同的平面確定數據空間中的方向,則將趨于確定待編碼的給定紋理數據元素集合的主方向的更好的估計。
[0089]因此,在尤其優選的實施方式中,本發明的方法包括下面的步驟,并且本發明的設備包括處理電路,該處理電路被配置為:
[0090]針對數據空間中將待編碼的紋理數據元素集合分割成兩組的多個不同的平面中的每一個,確定數據空間中從數據空間中基于待編碼的紋理數據元素集合中的值落在數據空間中的所述平面一側的紋理數據元素的值的點到數據空間中基于待編碼的紋理數據元素集合中的值落在數據空間中的所述平面另一側的紋理數據元素的值的點的向量的方向;以及
[0091]利用針對將紋理數據元素集合分割成兩組的所述多個不同的平面中的至少一個在紋理數據元素的數據空間中確定的所述方向,確定數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對紋理數據元素集合進行編碼時用于紋理數據元素集合。
[0092]如果考慮多個不同的平面,則使用的多個平面優選地在紋理數據元素的數據(如,顏色)空間中不相關,最優選地彼此正交(或者至少與所考慮的一個或更多個其它平面正交)。優選地,考慮多個相互正交的平面的集合。利用不相關且正交的平面增加了基于所述平面確定的方向之一將是所考慮的紋理數據元素值集合的主方向的好的估計的可能。
[0093]如果確定關于多個不同平面的方向,則優選針對至少與數據空間的維數一樣多的平面(在優選實施方式中,針對與數據空間中的維數一樣多的平面,即,對于N維數據空間(數據值),針對N個平面)來進行。這有助于進一步確保測試的至少一個平面將得到作為數據空間中的紋理數據元素值的主方向的好的估計的方向。
[0094]在這種情況下,各個平面優選與其它平面正交。最優選地,各個平面垂直于數據空間的多個軸之一(垂直于數據空間的各個不同的軸)(即,對于N維數據空間,所述處理優選地使用N軸對齊的平面)。
[0095]因此,在三維數據空間(如,RGB顏色空間)的情況下,優選考慮三個正交平面,最優選地,考慮垂直于X軸(R軸)的平面、垂直于I軸(G軸)的平面以及垂直于z軸(B軸)的平面中的每一個)。
[0096]如果在數據空間中執行方向確定之前數據值按照它們的平均值偏移,則優選考慮由x=0 (R=O)限定的平面、由y=0 (G=O)限定的平面以及由z=0 (B=O)限定的平面中的每一個。在這種情況下,方向向量計算將對于由紅色=0限定的平面,等同于具有正紅色分量的所有紋元的偏移值的(向量)和(即,在按照所關注的紋元集合的平均值偏移之后值具有正紅色分量的所有紋元的偏移值的(向量)和),對于由綠色=0限定的平面,等同于具有正綠色分量的所有紋元的偏移值的(向量)和,對于由藍色=0限定的平面,等同于具有正藍色分量的所有紋元的偏移值的(向量)和(或者對應地,對于各個平面,分別等同于具有負紅色、綠色或藍色分量的所有紋元的偏移值的(向量)和)。
[0097]對于第四維,例如RGBA顏色空間,相應地,也應該優選使用垂直于第四軸(如,α軸)的第四平面(例如,由α=0限定的平面)。在這種情況下,由α=0限定的平面的第四估計向量將是具有正α分量的所有紋元的偏移值的(向量)和(或者對應地,具有負α分量的所有紋元的偏移值的(向量)和)。
[0098]如果考慮多個不同的平面,則針對各個平面確定數據空間中的方向。然后,應該使用所確定的方向來確定將在確定所考慮的紋理數據元素集合的基礎數據值時使用的數據空間中的方向。
[0099]在一個優選實施方式中,這通過如下步驟來實現:對所考慮的一些或所有(優選為所有)平面的方向向量求和,從而得到所關注的平面集合的“總”方向向量,然后其將被用作將在確定所考慮的紋理數據元素集合的基礎數據值時使用的數據空間中的方向。
[0100]在另一尤其優選的實施方式中,選擇所確定的多個方向之一作為將在對紋理數據元素集合進行編碼時使用的方向,即,選擇所確定的多個方向之一作為將使用的方向。
[0101]因此,在優選實施方式中,如果考慮多個不同的平面,則選擇針對多個平面之一確定的方向作為將在確定所考慮的紋理數據元素集合的基礎數據值時使用的數據空間中的方向。
[0102]因此,在尤其優選的實施方式中,本發明包括下面的步驟,或者處理電路被配置為:使用和/或選擇針對數據空間中將紋理數據元素分割成兩組的所述至少一個平面之一在紋理數據元素的數據空間中確定的方向,作為數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對紋理數據元素集合進行編碼時用于紋理數據元素集合。
[0103]類似地,在尤其優選的實施方式中,本發明的方法包括下面的步驟,并且本發明的設備包括處理電路,該處理電路被配置為:
[0104]針對數據空間中將待編碼的紋理數據元素集合分割成兩組的多個不同的平面中的每一個,確定數據空間中從數據空間中基于待編碼的紋理數據元素集合中的值落在數據空間中的所述平面一側的紋理數據元素的值的點到數據空間中基于待編碼的紋理數據元素集合中的值落在數據空間中的所述平面另一側的紋理數據元素的值的點的向量的方向;以及
[0105]選擇針對將紋理數據元素集合分割成兩組的所述多個不同的平面中的一個在紋理數據元素的數據空間中確定的方向,作為數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對紋理數據元素集合進行編碼時用于紋理數據元素集合。
[0106]如果所考慮的多個平面之一的方向將被選擇作為將使用的方向,則可根據需要選擇將使用的方向。在尤其優選的實施方式中,數據空間中具有較長(優選地,具有最長)向量的方向(即,兩個平均數據值點之間的距離,或者(偏移)數據值和點與原點之間的距離(如果數據值基于平均值而偏移的話)較大的方向(優選地,兩個平均數據值點之間的距離,或者(偏移)數據值和點與原點之間的距離(如果數據值基于平均值而偏移的話)最大的方向))被選擇作為將在確定紋理數據元素集合的基礎數據值時使用的方向。 申請人:已認識到,所確定的方向向量越長,其落在數據空間中的紋理數據元素值的主方向上的可能性越高,因此選擇較長或最長的方向向量作為將使用的方向應該得到比選擇較短方向向量更好的主方向的估計。
[0107]因此,在優選實施方式中本發明包括以下步驟:基于方向向量的長度選擇將在確定基礎數據值時使用的方向(向量),所述基礎數據值將在對所關注的紋理數據元素集合進行編碼時使用(并且對應地,基于方向向量的長度,確定是否將針對已用于分割紋理數據元素值的平面確定的方向向量用作將在確定基礎數據值時使用的方向(向量),所述基礎數據值將在對所關注的紋理數據元素集合進行編碼時使用)。
[0108]類似地,本發明優選包括以下步驟:以上述方式針對數據空間中將紋理數據元素值分割成兩組的多個平面中的一個或更多個(在優選實施方式中,針對每一個)確定向量方向,然后基于方向向量的長度選擇那些向量之一(的方向)作為將在確定基礎數據值時使用的方向,所述基礎數據值將在對所關注的紋理數據元素集合進行編碼時使用。優選地,選擇方向向量中足夠長的一個(優選地,最長的一個)。
[0109]在這些布置方式中,可針對各個平面確定方向向量,然后例如通過比較各個向量的長度(在一個優選實施方式中,就是如此)來識別并使用所確定的所有方向向量中的最長向量。
[0110]另選地,例如,可設定優選預定的閾值向量長度,如果發現向量超過該長度,則使用該向量,盡管仍將確定和/或測試其它向量。在這種情況下,依次確定和/或測試各個平面的方向向量,將各個向量與閾值長度進行比較,如果該向量超過閾值長度,則使用該向量,而不再針對任何其它平面確定和/或測試向量(如果沒有發現向量超過閾值長度,則優選地使用最長向量)。
[0111]在這種迭代處理中,優選地,按照最可能確定主方向的平面首先測試的順序來測試平面(如,基于典型紋理(如游戲內容)的統計分析)。
[0112]可根據需要確定各個方向向量的長度。例如,可使用通常的利用點積的歐幾里得方法。另選地,如果需要,可使用各個向量的曼哈頓長度,以避免不得不執行乘法。
[0113]盡管如上所述,使用多個平面可得到所關注的紋理數據元素集合在數據空間中的主方向的更精確的估計(因此,出于該原因而為優選的), 申請人:已發現,僅使用單個平面可能就足夠了,尤其是在特定情況下(如,對于特定紋理內容形式)。僅考慮單個平面將降低方向估計的可能質量,但將更快地執行方向估計,因此可能適合于(例如)需要增加的速度并且可接受任何質量損失的“超快”編碼實現。因此,在另一優選實施方式中,僅針對數據空間中的單個平面確定方向,然后將在對紋理數據元素進行編碼時使用該方向。
[0114]因此,在優選實施方式中,本發明的方法包括下面的步驟,并且本發明的設備包括處理電路,該處理電路被配置為:
[0115]針對數據空間中將待編碼的紋理數據元素集合分割成兩組的一個且僅一個平面,確定數據空間中從數據空間中基于待編碼的紋理數據元素集合中的值落在數據空間中的所述平面一側的紋理數據元素的值的點到數據空間中基于待編碼的紋理數據元素集合中的值落在數據空間中的所述平面另一側的紋理數據元素的值的點的向量的方向;以及
[0116]利用針對數據空間中將待編碼的紋理數據元素集合的值分割成兩組的所述平面在紋理數據元素的數據空間中確定的所述方向,作為數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對紋理數據元素集合進行編碼時用于紋理數據元素集合。
[0117]如果僅考慮數據空間中的單個平面,則優選地,選擇將使用的平面以避免通常情況最佳方向(即,給定的典型和/或已知紋理內容的可能的主方向)落在數據空間中將用于分割紋理數據元素值的平面中。可通過(例如)預先測試典型紋理內容(如,游戲紋理)來確定這些通常情況最佳方向(以因此避免)。
[0118]例如, 申請人:已確定,對于RGB顏色內容,尤其是當數據值接近灰色時,紋理數據元素集合的主方向通常非常接近于(1,1,I)。因此,僅使用單個平面時RGB內容將使用的優選平面是由R+G+B=0限定的平面。在這種情況下,如果紋理數據元素值按照它們的平均值偏移,則將通過R+G+B和為正的集合中的各個紋理數據元素的R+G+B和之和(或者通過R+G+B和為負的集合中的各個紋理數據元素的R+G+B和之和)來給出和點(用于確定與RGB顏色空間中的原點之間的方向向量)。
[0119]一旦待編碼的紋理數據元素集合在數據空間中的方向已確定,則該方向可用于(優選用于)產生將在對所關注的紋理數據元素集合(如,塊)進行編碼時使用的基礎數據值(如,顏色)。
[0120]本發明因此還擴展至(優選包括):使用所確定和/或選擇的紋理數據元素集合在數據空間中的方向來推導將在對紋理數據元素集合進行編碼時使用的基礎數據值。
[0121]例如取決于并根據所使用的編碼方案,基礎數據值可包括任何合適的數據值。在優選實施方式中,推導多個基礎數據值,(如,顏色值)的集合。
[0122]在尤其優選的實施方式中,確定待編碼的紋理數據元素集合的包括一對數據值的基礎數據值集合。最優選地,針對所關注的紋理數據元素集合確定一對端點數據值(例如,一對端點顏色值),優選地從所述一對端點數據值(最優選地,通過確定端點值的加權和)來插值該集合的紋理數據元素的數據(如,顏色)值。如果需要,基礎數據值對可相反包括(例如)基礎值和差值,然后所述值可組合以得到紋理數據元素的值。
[0123]可利用所確定的數據空間中的方向以任何期望且合適的方式確定基礎數據值,例如,取決于且根據所使用的紋理壓縮方案。
[0124]在尤其優選的實施方式中,利用待編碼的紋理數據元素集合的平均值(其根據需要可以是紋理數據元素集合的值的真正的平均值,或者是該平均值的近似值)以及所確定的(選擇的)向量方向來確定將用于紋理數據元素集合的基礎數據值。
[0125]優選使用這些值推導數據空間中可投影紋理數據元素值的線。優選地,利用待編碼的紋理數據元素集合的平均值以及所確定的(選擇的)向量方向來限定數據空間中的參數線。
[0126]L=C+t*V
[0127]其中:
[0128]L是數據空間中的參數線;
[0129]C是紋理數據元素集合的平均值;并且
[0130]V是所確定的向量方向。[0131]然后,優選使用如此推導的線來確定將使用的基礎數據值。優選地,落在該線上的值被用作或用于推導將使用的基礎數據值。
[0132]在一個優選實施方式中,數據空間中將投影紋理數據元素集合的紋理數據元素(在將紋理數據元素的值投影到該線上時)的確定的線上的最低和最高值點被用作或用于推導將使用的基礎數據值(端點值)。例如,最高和最低值可直接用作端點值(例如),或者可調節那些值以得到將使用的端點值,以(例如)用端點處的準確度換取編碼的數據值范圍的中間處的更大的精度。
[0133]如果需要,另外或者作為替代,還可使用從數據空間中的線確定的值(如,最高和最低值)作為(例如)更復雜的基礎數據值確定處理的起始值(作為其輸入)。
[0134]如果在“偏移”數據值空間中推導所述線,則在確定將使用的實際基礎(如,端點)數據值時,應該將平均數據值與從數據空間中推導出的線確定的數據值相加。
[0135]在優選實施方式中,首先將集合中的所有紋理數據元素投影到數據空間中的推導出的線上。這優選通過針對數據空間中的線L上最接近所關注的紋理數據元素的值的點求參數值t來完成。如果紋理數據值已利用編碼的紋理數據元素集合的平均值偏移,則參數值t可以是(并且優選被計算為)t=dot(V,T')/dot (V, V)(其中dot O表示通常的向量點積,T’是偏移紋理數據元素值,V是所確定的向量方向)。
[0136]一旦這完成,優選確定針對紋理數據元素集合求出的最低和最高參數值t_low和t_high (即,投影了紋理數據元素集合的紋理數據元素的數據空間中的確定的線上的最低和最高值點的參數值)。然后,優選使用這些最低和最高參數值來定義將用于所關注的紋理數據元素集合的相應的基礎(端點)數據值,優選如下:
[0137]端點顏色l=C+t_low*V
[0138]端點顏色2=C+t_high*V
[0139]其中C是紋理數據元素集合的平均值,V是所確定的向量方向,t_low是得自紋理數據元素的最低參數值,t_high是得自紋理數據元素的最高參數值。
[0140]一旦利用數據空間中的確定的方向確定了相應的基礎(如,端點)數據值,則那些數據值可用于(優選用于)對所關注的紋理數據元素集合進行編碼。
[0141]因此,盡管上面具體參照推導將在對紋理數據塊進行編碼時使用的基礎數據值(如,端點顏色)的處理描述了本發明,本發明還擴展至(優選包括):利用所確定的基礎數據值將紋理數據元素集合編碼為表示紋理數據元素的紋理數據塊。
[0142]因此,在尤其優選的實施方式中,本發明還包括下面的步驟,或者處理電路被配置為:利用所確定的基礎數據值將紋理數據元素集合編碼為表示紋理數據元素的紋理數據塊。
[0143]類似地,本發明還擴展至(優選包括):利用所確定的基礎數據值產生表示紋理數據元素塊(其包括所關注的紋理數據元素集合)的編碼的紋理數據塊。
[0144]編碼方式將取決于所使用的總紋理編碼方案。
[0145]在一個優選實施方式中,首先使用所確定的基礎數據值來通過所確定的基礎(如,端點)值的插值確定將用于紋理數據元素集合的另外的(優選兩個另外的)數據值。優選地,然后向集合中的各個紋理數據元素分配索引值,所述索引值將紋理數據元素映射至紋理數據元素集合的如此確定的顏色中的一個(即,最接近的一個)(即,端點顏色和插值的顏色中的最接近的一個)。例如,在使用的編碼方案為S3TC、BC6或BC7的情況下將這樣做。在優選實施方式中,通過在將紋理數據元素投影到數據空間中的確定的線上時重新縮放并量化針對紋理數據元素推導出的參數值“t”來完成紋理數據元素值到顏色的映射。
[0146]在另一優選實施方式中,向各個紋理數據元素分配索引值,所述索引值將用作(或者可用于推導)權重以用于使用針對紋理數據元素集合確定的基礎數據值(如,端點顏色)對紋理數據元素的數據值插值。例如,在使用的編碼方案為ASTC的情況下將這樣做。
[0147]如果所關注的紋理數據元素集合對應于待編碼的紋理數據元素塊的所有紋理數據元素,則一旦確定紋理數據元素集合的基礎數據值,可對紋理數據元素塊編碼以產生表示紋理數據元素集合的編碼的紋理數據塊。
[0148]另一方面,如果所關注的紋理數據元素集合僅對應于待編碼的紋理數據元素塊的紋理數據元素的子集或分區,則優選針對紋理數據元素塊所分割成的各個相應的子集(分區)重復(主)方向和基礎數據值確定處理,以針對紋理數據元素塊所分割成的各個子集(分區)得到單獨的基礎數據值集合。這樣做的優點在于,塊內的不同分區可實際上使用不同的編碼方案(在一個優選實施方式中,就是如此)。
[0149]如果給定紋理數據塊中的待編碼的紋理數據元素塊被分割成多個紋理數據元素“子集”或“分區”,優選使用2、3或4個分區。
[0150]一旦確定了待編碼的紋理數據元素塊所需的所有的(主)方向和基礎數據(如,端點)值,則優選產生表示所關注的紋理數據元素塊的編碼的紋理數據塊。
[0151]所述編碼處理可使用任何合適和需要的編碼方案。其優選使用(優選已知的)基于塊的編碼方案,例如S3TC、BC6、BC7或ASTC。(本發明的優點在于其可與現有傳統的基于塊的編碼方案一起使用)。
[0152]因此,本發明的方法和設備優選還包括下面的步驟,或者處理電路被配置為:優選使用基于塊的編碼方案對待編碼的紋理所分割成的紋理數據元素塊進行編碼,以得到表示紋理數據元素塊的編碼的紋理數據塊。
[0153]各個編碼的紋理數據塊應該包括解碼器所需(和/或期望)的所有信息,以使得解碼器能夠對編碼的紋理數據塊進行解碼,以(至少近似地)再現塊所表示的紋理數據元素的原始陣列。為此編碼的紋理數據塊中應該包括的數據將取決于所關注的紋理數據編碼(壓縮)方案的確切性質。此數據可以按照任何合適和期望的方式(即,實踐中,以解碼器可識別并正確解釋的方式)布置在編碼的紋理數據塊中。
[0154]通常,優選的是(在一個優選實施方式中就是如此)編碼的紋理數據塊至少包括指示(或使得能夠推導)編碼的紋理數據塊的基礎數據(如,顏色)值(例如,顏色端點值)的數據、以及使得解碼器能夠從塊的基礎數據值(如,端點顏色)確定給定紋理數據元素的值(至少其近似值)的信息。
[0155]在一個優選實施方式中,各個編碼的紋理數據塊包括(除了別的以外)指示(或者指示如何產生)將用于產生塊所表示的紋理數據元素集合的數據值的基礎數據值(如,顏色端點值)集合的數據、以及指示如何使用基礎數據值(如,顏色端點值)集合來產生將使用基礎數據值集合的紋理數據元素集合的紋理數據元素的數據值的數據。
[0156]在尤其優選的實施方式中,編碼的紋理數據塊包括指示如何利用編碼在塊中的整數值集合產生塊的基礎數據值集合的數據。在這種情況下,可執行使用所述整數值來產生基礎數據值,和/或可從所述整數值推導將使用的一些或所有基礎數據值。
[0157]在尤其優選的實施方式中,指示如何產生將使用的基礎數據值集合的數據指示將使用多個選擇的(優選預定的)基礎數據值集合產生技術或方法中的哪一個。
[0158]如果使用分割,在一個實施方式中,紋理數據塊的各個紋理數據元素分區共享相同的基礎值(如,顏色端點值)、和/或指示如何產生基礎數據值集合的數據集合,所述基礎數據值集合將用于產生塊的數據值。
[0159]在使用分割的另一實施方式中,紋理數據塊的各個紋理數據元素分區具有其自己的基礎值(如,顏色端點值)、和/或指示如何產生基礎數據值集合的數據集合,所述基礎數據值集合將用于產生分區所對應的特定紋理數據元素子集(即,分區所對應的子集)的數據值。如上所述,這樣做的優點在于塊內的不同分區實際上可使用不同的編碼方案(在一個優選實施方式中,就是如此)。
[0160]如果編碼的紋理數據塊可包括(或者包括)多個分區,則編碼的紋理數據塊優選還包括指示該塊所使用的分割圖案的信息。此信息可采取任何合適和期望的形式,例如向解碼器指示使用了存儲的預定義的分割圖案中的哪一個的索引。
[0161]在一個優選實施方式中,利用分割圖案生成函數產生分割圖案,那么編碼的紋理數據塊優選地包括將由解碼器使用以配置分割圖案生成函數的信息,以使得解碼器能夠產生所使用的特定分割圖案。此信息優選包括分割圖案生成函數索引或種子以及分區數量,其在編碼階段用作分割圖案生成函數的輸入以用于產生將使用的分割圖案。(然后,解碼器優選使用此信息以及待解碼(即,待確認其值)的紋理數據元素的位置,作為分割圖案生成函數的輸入,以確定所關注的紋理數據元素屬于編碼的紋理數據塊的哪一分區。一旦這完成,則解碼器可(例如,且優選地)確定將用于紋理數據元素被確定所屬于的分區的基礎數據值(如,端點顏色),然后使用那些數據值來確定將用于紋理數據元素本身的數據值(如,顏色值)。)
[0162]如上所述,編碼的紋理數據塊優選包括指示如何使用塊的相應的基礎數據值(如,端點顏色)集合或產生的基礎數據值集合來產生塊的紋理數據元素的數據值的數據。
[0163]編碼的紋理數據塊中所包括的指示如何使用基礎數據值(如,顏色端點值)集合來產生塊的各個紋理數據元素的數據值的數據可以是這樣的任何合適的數據。在優選實施方式中,其包括索引數據,其將索引賦予所關注的一些或所有紋理數據元素,并可用于從基礎數據值推導紋理數據元素的數據值。
[0164]在一個優選實施方式中,所述索引將用于將所關注的紋理數據元素映射到塊的顏色集合中的數據值(如,顏色)(例如,就像S3TC紋理編碼方案中一樣)。
[0165]在另一優選實施方式中,所述索引將用于從基礎(如,端點)數據值對給定紋理數據元素的數據值進行插值。優選地,各個索引將用作(或用于推導)權重以計算基礎數據值(如,端點值)的加權和(然后,該加權和被用作索引所涉及的紋理數據元素的數據值)。
[0166]因此,例如,如果產生兩個端點數據值,則優選使用這兩個端點數據值將用于的給定紋理數據元素的索引來從這兩個端點值推導紋理數據元素的數據值(優選通過基于索引值在兩個端點數據值之間插值)。
[0167]編碼的紋理數據塊優選包括(和/或使得能夠推導)編碼的紋理數據塊所表示的各個單獨的紋理數據元素的索引。在一些優選的布置方式中,這通過在編碼的紋理數據塊中為編碼的紋理數據塊所表示的每一紋理數據元素(明確地)提供索引值來完成。在其它優選布置方式中,編碼的紋理數據塊僅編碼(明確包括)有限數量的索引值,在使用時(在解碼時)從這些索引值推導將用于編碼的塊所表示的紋理數據元素的索引(優選通過從所提供的索引值適當插值)。
[0168]在優選實施方式中,可使用不同的“索引”編碼方式,各個編碼的紋理數據塊包括指示塊所使用的編碼方式的信息(優選通過在編碼的紋理數據塊中包括指示塊將使用(所使用)的預定“索引模式”的信息)。優選地,存在可使用的多個預定義的索引模式。
[0169]編碼的紋理數據塊中將包括的信息可按照任何期望的順序和布置方式包括在編碼的紋理數據塊中。在優選實施方式中,各個編碼的紋理數據塊使用特定(優選常用的)格式和組織方式。
[0170]本發明可用于對任何合適形式的紋理數據進行編碼。如上所述,這種數據在其初始、原始或未編碼的形式下通常以紋理元素或紋元陣列的形式排列,因此在尤其優選的實施方式中,本發明用于對紋理數據元素(紋元)陣列進行編碼。如本領域已知的,這些陣列通常為2維的,但也可使用本發明來對3維陣列編碼(實際上,本發明的一個優點在于其可用于以高效的方式對3維紋理編碼)。
[0171]待編碼的紋理和紋理數據元素可表示任何合適的紋理數據。在一個優選實施方式中,所述紋理是(例如,且優選地)在渲染圖像和/或幀以便于顯示時將用于圖形處理的紋理,例如,如本領域已知的,將應用于待渲染圖元的圖像、顏色(包括灰度)、亮度、凹凸映射、陰影映射(光照映射)等。
[0172]然而,(例如)如果期望使用圖形紋理(以及圖形紋理處理)來表示和處理其它形式的數據,則本發明還可用于處理和編碼(解碼)將用于處理(表示)其它形式的數據的紋理。如本領域已知的,除了“傳統”圖形目的之外,紋理還可用于(用于)圖形處理以表示和處理許多不同類型的數據,例如,3D霧、流場等。本發明可同樣適用于(擴展至)圖形處理系統中的這些紋理類型和用途。因此,如果需要,本發明的紋理可表示在圖形處理系統中將被處理為紋理的其它形式的數據。
[0173]在尤其優選的實施方式中,紋理數據元素各自表示紋理元素的顏色值,但這不是必要的。優選地,紋理數據元素表示:每紋元具有1、2、3或4個分量(分別為亮度、亮度α、RGB和RGB α )的低動態范圍(LDR)紋理數據或者每紋元具有1、3或4個分量的高動態范圍(HDR)紋理數據。
[0174]本領域技術人員將理解,與紋理元素一致的實際數據值(均在其初始未編碼的原始形式及其編碼的形式下(或者至少在編碼的數據已解碼以再現原始數據表示時))將取決于紋理元素旨在定義或表示的“紋理”的形式。
[0175]因此,例如,如果紋理元素定義將使用的顏色,則處于其初始未編碼形式的紋理數據元素可各自包括顏色值集合(紅色、綠色、藍色(RGB)、顏色和透明度值集合(紅色、綠色、藍色、a (RGBA))或者亮度和色度值的集合,并且編碼的數據在被解碼(再現)時將產生對應的顏色值集合。
[0176]在陰影(光照)映射的情況下,例如,紋理數據元素將各自包括或表示指示(例如)紋理元素處于光照中還是陰影中以及該紋理元素的光照或陰影的量(和/或顏色)的數據值集合。類似地,對于法向映射(凹凸映射),各個紋理元素的數據將是指示該紋理元素處光的反射方向的值集合。
[0177]紋理數據元素還可(例如)包括z值(深度值)、模板值、亮度值(亮度紋理)、亮度α紋理和/或光澤度映射(即,紋理元素位置處表面是否有光澤)等。
[0178]在適當的情況下,各個紋理數據塊可僅用剩余數據值對產生再現原始數據所需的一些(但非所有)數據值所需的數據編碼,所述剩余數據值將作為數據再現處理的一部分推導(如,從其推導)。因此,在一個優選實施方式中,編碼的紋理數據塊用代表其它部分的原始數據的數據對代表一些原始紋理數據的數據進行編碼,所述其它部分的原始數據將在解碼處理期間從編碼的數據推導出。
[0179]例如,在法向映射中,編碼的紋理數據可(例如)僅用第三分量(dz)對兩個法向分量(如,dx和dy)編碼,所述第三分量將在對數據解碼時從這兩個值推導(因為已知的是分量的平方和必須為I (因為其定義長度I的法向向量):l=dx2+dy2+dz2)。
[0180]這里應該注意的是,如本領域技術人員將理解的,本文中提及“顏色”或“亮度”等相應地是指使得所關注的顏色或亮度等能夠被再現于(例如)顯示器上的數據值集合。這些數據值可包括任何合適的顏色或亮度等數據集合,例如如上所述的RGBA值集合。同樣,提及產生編碼的紋理數據塊的數據值集合以及各個紋理元素的數據值適當地涵蓋了各自包括值的組合(例如顏色值集合(RGB或RGBA))的數據值。
[0181]從上述內容將理解,本發明尤其適合于基于塊的編碼方式,其中各個編碼的紋理數據塊編碼(表示)所關注的紋理映射的較小部分(塊)(使得多個這樣的單獨的紋理數據元素塊將被編碼,以對待編碼的整個紋理(紋理數據元素陣列)(如紋理映射)編碼。因此,在尤其優選的實施方式中,本發明還包括:首先將待編碼的紋理(如,紋理映射)再分割為多個紋理數據元素塊,然后根據本發明確定各個紋理數據元素塊的主方向并將各個紋理數據元素塊編碼為紋理數據塊。
[0182]優選的是將編碼的紋理分割成相等尺寸的塊,S卩,使得各個編碼的紋理數據塊表示相同數量的紋理數據元素。這可(例如)簡化尋找給定紋理數據元素位于哪一編碼塊的任務。在優選實施方式中,各個編碼的紋理數據塊對4X4、5X5、6X6、8X8、10X10、12X12、3X3X3、4X4X4、5X5X5或6X6X6紋元陣列(或其等同物)編碼。(本發明可支持許多不同的塊尺寸。)
[0183]還優選的是各個編碼的紋理數據塊具有相同的大小,S卩,對于所關注的紋理使用固定速率編碼方案。如本領域已知的,這有利于編碼和解碼處理。
[0184]可根據需要選擇將紋理實際再分割為較小的塊以及編碼為編碼紋理數據塊的順序。在優選實施方式中,按照光柵順序對塊編碼,盡管當然,其它布置方式也是可能的,例如使用莫頓(Morton)順序。
[0185]將待編碼的各個紋理數據元素塊編碼為編碼數據塊的編碼處理可以按照任何合適的方式在待編碼的初始(原始)紋理數據上進行或利用待編碼的初始(原始)紋理數據來進行。例如,如已知的現有技術處理中一樣,待編碼的紋理數據元素塊可(優選就是)首先利用可用的(即,編碼的紋理數據塊實際上可表示的)各種不同的編碼可能中的一些或全部來編碼。這將得到可能的編碼塊的集合,然后可將該集合與原始數據進行比較,以確定(例如)塊的哪一編碼版本與原始數據比較時誤差(再現時)最小(然后,可選擇該編碼方式作為將在編碼時用于該原始紋理數據塊(紋元陣列)的編碼方式)。[0186]然后,這將針對原始數據(如,紋理映射)所分割成的各個不同的紋理數據元素塊重復,以生成表示(且對應于)原始數據集合(如,紋理映射)的編碼紋理數據塊流或集合。然后,可將此編碼紋理數據塊集合存儲(例如)在諸如DVD的便攜式存儲裝置上,以便于未來使用,例如,當期望將該紋理應用于待渲染的圖像時。優選地,紋理被編碼為Mip映射集合,各個Mip映射利用本發明來產生。
[0187]原始數據(如,紋理映射)為了編碼目的而分割成的各個紋理數據元素塊優選具有相同的尺寸。優選將使用的塊尺寸提供給解碼器。塊尺寸優選不被包括在編碼的紋理數據塊本身中,而是優選單獨地提供給解碼器。例如,塊尺寸可由提供給解碼器的另一參數來隱含地指示(例如且優選地,圖像類型),或者被包括在(指示在)與編碼紋理數據塊集合相關(附著)的(全局)數據頭中。
[0188](本領域技術人員將理解,反轉的解碼處理,S卩,使用編碼紋理數據塊來生成一個或更多個紋理數據元素或者紋理數據元素陣列以便于使用,將基本上是編碼處理的逆處理,因此包括(例如)確定表示所關注的紋理數據元素的編碼紋理數據塊,從識別出的編碼紋理數據塊確定將用于紋理數據元素的基礎數據值(如,端點顏色)集合,然后相應地產生紋理數據元素的數據值(如,顏色)。)
[0189]盡管上面具體參照了用于圖形處理系統的紋理數據的編碼描述了本發明,但是本領域技術人員將理解,其同樣適用于其它形式的數據的編碼,尤其適用于(相似的)數據元素(如,值遵循共同或相似的格式和/或將是(或可用于)相似或相同的目的或者表示相似的信息的數據元素)陣列或塊形式的(或能夠以該形式表達的)數據。通常,只要期望估計給定點集合在(例如)低維空間(2至4維)中的主方向(即,點呈現最大方差的方向)就可使用本發明(如,用于對任何低維數據集合進行分割)。
[0190]例如,這樣的“非圖形”數據可包括用于醫療試驗、生物分類性狀測量等的多元統計數據集合、用于模擬的向量場、表示流體的流動方向或沖擊的彈回方向等的數據(例如,該數據將類似于上面聯系圖形數據所討論的法向映射(凹凸映射))、熱圖或聲音數據等。
[0191]在這些布置方式中,可以按照類似于本文所述的紋理數據的方式對數據編碼(解碼)。
[0192]因此,根據本發明的一個方面,提供了一種針對待編碼的數據元素集合,確定所述數據元素在數據空間中的方向的方法,所述方向將在確定基礎數據值時使用,所述基礎數據值將在對所述數據元素集合進行編碼時用于所述數據元素集合,該方法包括以下步驟:
[0193]針對數據空間中將待編碼的紋理數據元素集合分割成兩組的至少一個平面,確定數據空間中從數據空間中基于待編碼的數據元素集合中的值落在數據空間中的所述平面一側的數據元素的值的點到數據空間中基于待編碼的數據元素集合中的值落在數據空間中的所述平面另一側的數據元素的值的點的向量的方向;以及
[0194]利用針對數據空間中將紋理數據元素集合分割成兩組的所述至少一個平面中的至少一個在數據元素的數據空間中確定的所述方向,來確定數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述數據元素集合進行編碼時用于所述數據元素
隹A
口 O
[0195]根據本發明的另一方面,提供了一種針對待編碼的數據元素集合,確定所述數據元素在數據空間中的方向的設備,所述方向將在確定基礎數據值時使用,所述基礎數據值將在對所述數據元素集合進行編碼時用于所述數據元素集合,該設備包括:
[0196]處理電路,其被配置為:
[0197]針對數據空間中將待編碼的紋理數據元素集合分割成兩組的至少一個平面,確定數據空間中從數據空間中基于待編碼的數據元素集合中的值落在數據空間中的所述平面一側的數據元素的值的點到數據空間中基于待編碼的數據元素集合中的值落在數據空間中的所述平面另一側的數據元素的值的點的向量的方向;以及
[0198]利用針對數據空間中將紋理數據元素集合分割成兩組的所述至少一個平面中的至少一個在數據元素的數據空間中確定的所述方向,來確定數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對數據元素集合進行編碼時用于數據元素集合。
[0199]根據本發明的另一方面,提供了一種針對待編碼的數據元素集合,確定所述數據元素在數據空間中的方向的方法,所述方向將在確定基礎數據值時使用,所述基礎數據值將在對所述數據元素集合進行編碼時用于所述數據元素集合,該方法包括以下步驟:
[0200]確定待編碼的數據元素集合的平均數據值,然后按照該平均值使各個數據元素的值偏移;
[0201]針對數據空間中將待編碼的所述紋理數據元素集合的偏移值分割成兩組的至少一個平面,確定在數據空間中數據空間中的原點與待編碼的紋理數據元素集合中的值落在數據空間中的所述平面一側的一個或更多個(優選為多個,并且優選為所有)紋理數據元素的偏移值之和在數據空間中的點之間的向量的方向;以及
[0202]利用針對將紋理數據元素集合的偏移值分割成兩組的所述至少一個平面中的至少一個在紋理數據元素的數據空間中確定的所述方向,來確定數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對紋理數據元素集合進行編碼時用于紋理數據元素集合。
[0203]根據本發明的另一方面,提供了一種針對待編碼的數據元素集合,確定所述數據元素在數據空間中的方向的設備,所述方向將在確定基礎數據值時使用,所述基礎數據值將在對所述數據元素集合進行編碼時用于所述數據元素集合,該設備包括:
[0204]處理電路,其被配置為:
[0205]確定待編碼的數據元素集合的平均數據值,然后按照該平均值使各個數據元素的值偏移;
[0206]針對數據空間中將待編碼的所述紋理數據元素集合的偏移值分割成兩組的至少一個平面,確定在數據空間中數據空間中的原點與待編碼的紋理數據元素集合中的值落在數據空間中的所述平面一側的一個或更多個(優選為多個,并且優選為所有)紋理數據元素的偏移值之和在數據空間中的點之間的向量的方向;以及
[0207]利用針對將紋理數據元素集合的偏移值分割成兩組的所述至少一個平面中的至少一個在紋理數據元素的數據空間中確定的所述方向,來確定數據空間中將在確定基礎數據值時使用的方向,所述基礎數據值將在對紋理數據元素集合進行編碼時用于紋理數據元素集合。
[0208]本領域技術人員將理解,適當地,本發明的這些方面可包括(優選包括)本文所述的發明的優選和可選特征中的任一個或更多個或全部。
[0209]本發明的方法和設備可以按照任何適當的方式(如,以硬件或軟件)實現在(包括在)任何適當的裝置或部件中。在優選實施方式中,它們可實現在處理器中,因此,本發明還擴展至被配置為使用本發明的方法或包括本發明的設備的處理器。在優選實施方式中,本發明的方法和設備實現在硬件中,優選實現在單個半導體平臺上。
[0210]本發明可實現于任何合適的系統中,例如適當配置的基于微處理器的系統。在優選實施方式中,本發明實現于基于計算機和/或微處理器的系統中。
[0211]例如,本發明可實現于圖形處理器或圖形處理裝置上,因此擴展至包括本文所述的發明的任一個或更多個方面的設備或根據這種方法來操作的圖形處理器和圖形處理平臺。在執行上述特定功能所需的任何硬件的前提下,這種圖形處理器可另外包括圖形處理器所包括的一般功能單元中的任一個或更多個或全部。
[0212]本發明的各種功能可以按照任何期望和合適的方式實現。例如,本發明的功能可根據需要以硬件或軟件來實現。因此,例如,本發明的各種功能元件和“裝置”可包括能夠操作以執行各種功能等的合適的處理器、控制器、功能單元、電路、處理邏輯、微處理器等,例如適當專用的硬件元件或處理電路和/或可被編程以按照期望的方式操作的可編程硬件元件或處理電路。
[0213]在一個優選實施方式中,本發明的設備包括被配置為以所述方式操作的專用(非可編程)處理電路。在另一優選實施方式中,其包括被編程為以所述方式操作的可編程處理電路。
[0214]這里還應該注意的是,本領域技術人員將理解,本發明的各種功能等可被復制和/或在給定處理器上并行執行。
[0215]本領域技術人員還將理解,適當地,描述的本發明的所有方面和實施方式可包括本文所述的優選和可選特征中的任一個或更多個或全部。
[0216]根據本發明的方法可至少部分地利用軟件(如,計算機程序)來實現。因此,可以看出從未來方面考慮,本發明提供在安裝在數據處理裝置上時具體適于執行本文所述的方法的計算機軟件、包括在程序元件在數據處理裝置上運行時執行本文所述的方法的計算機軟件代碼部分的計算機程序元件、以及包括適于在程序在數據處理系統上運行時執行本文所述的方法的所有步驟的代碼裝置的計算機程序。數據處理系統可以是微處理器、可編程FPGA (現場可編程門陣列)等。
[0217]本發明還擴展至包括這樣的軟件的計算機軟件載體,其在用于操作圖形處理器、渲染器或包括數據處理裝置的其它系統時,與所述數據處理裝置結合使所述處理器、渲染器或系統執行本發明的方法的步驟。這種計算機軟件載體可以是物理存儲介質,例如ROM芯片、CD ROM或盤等,或者可以是信號,例如電線上的電信號、光學信號或衛星的無線電信
V寸ο
[0218]還將理解,并非本發明的方法的所有步驟均需要通過計算機軟件來執行,因此從更廣泛的方面講,本發明提供計算機軟件,這種軟件安裝在計算機軟件載體上以用于執行本文所闡述的方法的至少一個步驟。
[0219]本發明因此可適當地實施為用于計算機系統的計算機程序產品。這種實現方式可包括一系列計算機可讀指令,所述計算機可讀指令固定于諸如計算機可讀介質(例如,磁盤、⑶ROM、ROM或硬盤)的有形的永久介質上,或者可通過有形介質(包括但不限于光學或模擬通信線路)或無形地利用無線技術(包括但不限于微波、紅外或其它傳輸技術)經由調制解調器或其它接口裝置傳輸至計算機系統。這一系列計算機可讀指令實施本文先前所述的所有或部分功能。
[0220]本領域技術人員將理解,這些計算機可讀指令可以用許多計算機架構或操作系統所使用的許多編程語言來編寫。另外,這些指令可利用任何存儲器技術(目前或未來的)來存儲,包括但不限于半導體、磁或光學,或者利用任何通信技術(目前或未來的)來傳輸,包括但不限于光學、紅外或微波。可以想到,這種計算機程序產品可作為可移除介質隨所附的印刷或電子文檔一起分發(例如,緊縮套裝軟件),用計算機系統預先加載到(例如)系統ROM或固定盤上,或經由網絡(例如,互聯網或萬維網)從服務器或電子公告牌分發。
【專利附圖】
【附圖說明】
[0221]現在將僅作為示例參照附圖描述本發明的許多優選實施方式,附圖中:
[0222]圖1示意性地示出作為多個編碼的數據塊的圖像數據陣列的編碼;
[0223]圖2示意性地示出在描述的本發明的優選實施方式中的分割數據塊的編碼;
[0224]圖3至圖11示出描述的本發明的優選實施方式的編碼塊布局;
[0225]圖12示意性地示出可使用按照描述的本發明的優選實施方式的方式編碼的紋理數據的圖形處理系統;
[0226]圖13至圖18示出描述的本發明的優選實施方式的主方向估計處理。
[0227]附圖中,類似的特征使用類似的標號(只要適當)。
【具體實施方式】
[0228]現在將參照用于顏色映射(B卩,顏色數據)形式的圖形處理的紋理數據的編碼描述本發明的優選實施方式。然而,如上所述,本領域技術人員將理解,本發明可普遍適用于數據編碼,因此不應被認為限于這里所給出的紋理顏色數據編碼的示例。
[0229]圖1示出此實施方式的基本編碼處理。如圖1所示,原始圖像或紋理數據元素(紋元)陣列I (紋理“映射”)被再分割成多個4X4紋理元素塊2。(也可使用其它塊尺寸,如下面將進一步討論的。)
[0230]在本實施方式中,如圖1所示,原始圖像(紋理映射)1被分割成相等尺寸的塊。這簡化了尋找給定紋理數據元素所在的塊的任務,并提供恒定的數據率。
[0231]在此實施方式中,原始紋理映射數據陣列(圖像)中的各個紋理元素(紋元)表示相應紋理元素的位置處將使用的顏色,因此其分配有包括顏色值集合(如,紅色、綠色、藍色(RGB),以及可選地,α (透明度)值)的數據值。換言之,在此實施方式中,將要編碼、產生等的數據值各自對應于并表示顏色(顏色值集合)。因此,為了方便,下面的描述將主要引用“顏色”,但是應該理解,這樣的引用指示包括表示所關注的顏色的顏色值集合的數據值。
[0232]在本實施方式中,并非將顏色數據陣列I以完整的原始形式存儲,而是將各個4X4紋理元素塊2編碼為紋理數據塊5,紋理數據塊5與原始未編碼形式的紋理數據相比尺寸減小。這實際上對原始紋理數據進行了壓縮,從而使其存儲和處理更容易且更高效。在本實施方式中,各個編碼的紋理數據塊5使用128比特。(其它布置方式當然也是可能的。)
[0233]如下面將進一步討論的,各個編碼的尺寸減小的紋理數據塊5包含足夠且適當的數據以使得能夠再現對應于或表示所關注的4X4紋理元素塊的原始未編碼的數據的數據。
[0234]對于原始圖像(紋理映射)1的各個塊2,產生對應的編碼的紋理數據塊5。在本實施方式中按照光柵順序對構成紋理映射的各個紋理數據塊進行編碼。當然,其它布置方式也是可能的,例如使用莫頓順序。
[0235]因此,在本實施方式中,各個編碼的紋理數據文件包括對紋理數據元素陣列(圖像數據)編碼的各個紋理數據塊的序列。
[0236]文件中的紋理數據塊的數量將取決于被編碼的紋理映射(紋理數據陣列)的大小以及(例如)數據是否以Mip映射形式存儲。如果使用Mip映射,則如果利用“η”個紋理數據塊對第一層次的紋理映射分辨率進行編碼,則將有“η/4”個紋理數據塊用于下面的Mip映射層次,“η/16”個塊用于下一 Mip映射層次,“η/64”用于下一 Mip映射層次,“η/256”用于再下一 Mip映射層次,等等(但各個層次不小于一個塊),直到達到尺寸為1X1的Mip映射層次為止。
[0237](在本實施方式中,編碼的紋理數據可以是Mip映射(B卩,存儲有原始紋理數據陣列的多個版本以便于使用,各個版本具有不同的細節層次(分辨率))的形式并優選以該形式存儲。Mip映射優選逐個地存儲在存儲器中,如本領域所知的,各個Mip映射層次是原始陣列(圖像)的按比例縮小(按照因子2)的表示(圖像)。Mip映射按照分辨率的降序存儲,即,ηΧη、...、16Χ16、8Χ8、4Χ4、2Χ2、1Χ1。較小的Mip映射(〈8X8)各自分別存儲在單獨的編碼數據塊中。)
[0238]如下面將進一步討論的,本實施方式支持將待編碼的給定紋元塊中的紋理數據元素(紋元)分割成塊內的不同的子集或分區的布置方式。這示出于圖2中,圖2示出4X4紋元塊2,該紋元塊2已分割成三個分區10、11和12。因此,圖2中標記有“a”的紋元屬于第一分區10,標記有“b”的紋元屬于第二分區11,標記有“c”的紋元屬于第三分區12。然后,以壓縮形式將該塊編碼為編碼的紋理數據塊13,但如將在下面更詳細說明的,該紋理數據塊具有與原始4X4紋元塊的分割有關的附加信息。
[0239]從上述內容將理解,在本實施方式中待編碼的各個紋元塊或者紋元塊內的各個分區將對應于紋元的集合,各個紋元具有相應的顏色值。如下面將進一步討論的,本發明的紋元塊編碼處理進行操作(除了別的以外)以確定一對端點顏色,所述端點顏色將用于對紋元塊(或紋元塊內的分區)所表示的紋元集合進行編碼(以及解碼)。因此,本實施方式的編碼處理中的重要操作是確定將在對所關注的紋元集合進行編碼(和解碼)時使用的一對端點顏色。
[0240]本實施方式的紋理編碼方案在確定將用于對紋理數據集合編碼(和解碼)的一對端點顏色時使用待編碼的紋理數據元素集合在顏色空間中的選定方向。
[0241]本質上,本實施方式進行操作以估計顏色空間中所關注的紋理數據元素集合的數據值呈現最大方差的方向(即,進行操作以估計紋理數據元素的值在顏色空間中的主方向)。然后,使用所估計的主方向來推導將用于對所關注的紋理數據元素集合進行編碼的端點顏色值。
[0242]這示出于圖13和圖14中。圖13示意性地示出在二維顏色空間中的二十個紋理數據元素的集合30的值。圖14示出圖13的紋理數據值的集合30以及在顏色空間中通過那些顏色值示例性估計的主方向(最佳擬合)向量V31。本實施方式使用特定處理來針對顏色空間中的給定紋理數據元素值的集合估計主方向向量V。
[0243]圖15至圖18示意性地示出在本發明的優選實施方式中(并根據本發明)估計待編碼的紋理數據元素集合在顏色空間中的主方向的方法(因此,在本發明的優選實施方式中(并根據本發明)確定將用于待編碼的紋理數據元素集合的顏色空間中的方向的方法)。
[0244]圖15至圖17示出本實施方式的主方向估計處理,圖18是示出在本實施方式中如何執行該處理的流程圖。
[0245]圖13至圖17為了清晰起見示出二維顏色空間(如,RG),但是如本領域所知的,顏色空間通常將是3維或4維(RGB或RGBA)。無論所考慮的顏色空間的維數如何,均可使用本實施方式的技術。
[0246]這里還應該注意的是,如圖13至圖17所示,在顏色空間中對紋元值進行評估。因為在顏色空間中進行評估,所以待編碼的紋元集合中的紋元的“空間”位置不影響主方向估計處理。
[0247]本實施方式的主方向估計處理的輸入是期望在顏色空間中估計主方向的紋理數據元素(紋元)集合。因此對于RGB紋理,處理的輸入將是各自用(R,G,B)顏色元組表示的紋元的集合。將相應地輸入其它形式的紋理數據。
[0248]如上所述,輸入的紋理數據元素集合可包括(例如)待編碼的紋元塊(如,4X4紋元塊)的所有紋理數據元素。另選地,如果針對待編碼的給定紋元塊所分割成的各個不同的分區需要單獨的一對端點顏色,則輸入至主方向尋找處理的紋理數據元素集合應該是所關注的分區的紋理數據元素的集合,而非該塊的所有紋理數據元素的集合。
[0249]本實施方式的估計主方向的處理的第一步驟是針對所考慮的紋理數據元素集合確定平均顏色值C。這可以是真正的平均值,或者該平均值的近似值。
[0250]然后,對于該集合中的各個紋理數據元素,用紋元的顏色值T減去平均顏色C,以得到紋元的偏移顏色值T’,T’ =T-C。
[0251]圖15針對圖13和圖14中所示的紋理數據元素的集合30示意性地示出這一處理,其示出在將各個紋元值按照紋元集合的平均值偏移之后,將圖13和圖14所示的紋理數據元素值的集合重新映射到軸X’、Y’上。因此,圖15中的原點對應于紋元集合的平均紋元值C0
[0252]然后,在顏色空間中使用一個或更多個無限平面將紋理數據元素分割成兩組(SP,將顏色空間分割成兩部分),并且針對各個這樣的平面,(按照下述方式)確定方向向量V’,所述方向向量V’將是所關注的紋理數據元素值集合的主方向的估計。
[0253]在本實施方式中,使用穿過偏移顏色空間X’、Y’的原點的軸對齊無限平面(即,垂直于顏色空間的一個軸的無限平面)來將偏移顏色空間分割成兩部分。(各個這樣的平面可由其法向向量唯一地定義。)考慮與紋理數據元素的顏色空間中的維數一樣多的平面。
[0254]因此,對于圖15所示的二維顏色空間,定義并考慮穿過偏移顏色空間的原點的兩個不同的軸對齊無限平面。
[0255] 申請人:已認識到,如果通過分割數據空間的給定平面生成的方向估計V’限定了幾乎垂直于該平面的方向,則該平面所估計的方向V’將是所關注的紋理數據元素值集合的真正主方向的非常好的估計。另一方面,如果估計的方向V’限定了非常接近平行于該平面的方向,則其可能是所關注的紋理數據元素值集合的真正主方向的任意差的估計。[0256]因此,使用N維的至少N個平面以及不相關(例如,軸對齊)的平面,有助于確保至少一個“好”的方向估計(因為如果使用N-1或更少的平面,則顏色空間中將存在同時與每一平面平行的至少一個軸;該軸將導致差的估計)。
[0257]因此,例如對于3D空間,優選測試全部彼此垂直的三個平面(例如,三個軸對齊平面),因為這將確保對于這三個平面中的至少一個,真正主方向與平面之間的角度將超過54度。
[0258]這示出于圖16和圖17中。圖16示出通過垂直于X軸并與Y軸對齊的平面40(即,平面X’ =0)分割的偏移顏色空間(因此,偏移紋元值),圖17示出通過垂直于Y軸并與X軸對齊的平面41 (即,平面Y’ =0)分割的偏移顏色空間。
[0259]如果需要,也可使用將顏色空間中的紋元值分割成兩組的其它平面布置方式。 [0260]對于各個這樣的平面,將平面一側的所有紋理數據元素值相加(得到和VI),同樣將平面另一側的所有紋理數據元素值相加(得到和V2)。然后,確定在顏色空間中的這兩個和點之間的向量V’:V’=V1-V2 0^V2-V1)。這針對所考慮的分割顏色空間的各個平面得到候選方向向量V’。
[0261]這示出于圖16和圖17中。
[0262]圖16示出對于與Y軸對齊的平面40,所得的正和點45和負和點46 (盡管和值被除以10以使其擬合到相同的軸上)以及所得的方向向量47。
[0263]圖17示出對于與X軸對齊的平面41,所得的正和點48和負和點49 (盡管和值同樣被除以10以使其擬合到相同的軸上)以及所得的方向向量50。
[0264]盡管如圖16和圖17所示,方向向量V’47、50被確定為顏色空間中的正和點與負和點之間的方向,但是因為紋理數據元素值已基于其平均值偏移,所以正和值的大小必須等于負和值的大小(即,和Vl+V2=0)。因此,給定平面的向量方向V’(B卩,差V1-V2)將等于正(或負)(向量)和值的兩倍(即,2*V1或2*V2)。這意味著可將所關注的平面的方向向量V’確定為從原點到正和值的點(或者從原點到負和值的點)(或者反之亦然)。因此,本實施方式僅計算正(或負)(向量)和值以推導所考慮的各個平面的方向向量V’。
[0265]可從圖16和圖17看出,這一處理將針對所考慮的二維顏色空間得到兩個可能的候選方向向量。然后,將這些候選方向向量中的一個選為所考慮的紋理數據元素集合在顏色空間中的估計的主方向。
[0266]在本實施方式中,基于所確定的候選方向向量的相應的長度來選擇哪一候選方向向量將用作所考慮的紋理數據元素集合在顏色空間中的估計的主方向。 申請人:已認識到,基于正與負和位置(或者等同地,正和或負和位置與原點)的最長方向向量將是所考慮的紋理數據元素值集合的主方向的最精確的估計。這可從圖16和圖17看出,其中可以看出,圖17中使用與X軸對齊的平面確定的更長的方向向量50更接近地匹配圖14中所示的所考慮的紋理數據元素值集合的主方向向量V的“理想”估計31。
[0267](總體上, 申請人:已認識到,對于生成真正主方向的差估計的平面,應該在相同方向上起促進作用的紋元值相反將彼此抵消(這可從圖16和圖17看出)。因此,如果利用分割顏色空間的多個不同的平面計算出多個估計,則作為主方向的差估計的方向向量將表現為比主方向的好估計的和向量短的和向量。)
[0268]例如,可根據需要利用點積以通常的歐幾里得方法,或者通過計算各個向量的曼哈頓長度,來確定所確定的估計向量中的最長的一個(以避免乘法)。[0269]因此,本實施方式的方法通過以下處理估計紋理數據元素值集合的主方向:對于N維空間,挑選N個軸對齊的平面,各個平面垂直于空間的一個軸,對于各個平面P1、P2、P3..,計算估計的方向向量VI’、V2’、V3’。然后,取估計的方向向量中的最長的一個作為用于表示所關注的紋理數據元素集合在顏色空間中的主方向的方向。
[0270]因此,例如,對于3維RGB (紅色-綠色-藍色)顏色空間,將執行下面的計算:
[0271]-對于由紅色=0限定的平面Pl;推導方向估計VI’是具有正紅色分量的所有偏移紋元值T’之和。
[0272]-對于由綠色=0限定的平面P2;推導方向估計V2’是具有正綠色分量的所有偏移紋元值T’之和。
[0273]-對于由藍色=0限定的平面P3;推導方向估計V3’是具有正藍色分量的所有偏移紋元值T’之和。
[0274]對于所有這三個方向估計,為了計算所述估計所需的僅有計算是比較和相加。
[0275]對于4維空間(如使用RGBA顏色而非RGB顏色時所遇到的;例如,這發生于BC7和ASTC紋理壓縮格式),則應該如下推導第四估計向量V4’:
[0276]-對于由α=0限定的平面Ρ4 ;推導方向估計V4’是具有正α分量的所有偏移紋元值Τ’之和。
[0277]然后,應該將估計的向量中(B卩,VI’、V2’或V3’中,或者VI’、V2’、V3’或V4’中)最長的一個選擇作為用于表示所關注的紋理數據元素集合的主方向的方向向量。
[0278]圖18是示出本實施方式的主方向估計處理的流程圖。這一處理的輸入是期望確定主方向的估計的紋理數據元素集合。如上所述,這一紋理數據元素集合可包括待編碼的紋理數據元素塊的所有紋理數據元素,或者待編碼的紋理數據元素塊的分區或子集的紋理數據元素。
[0279]如圖18所示,該處理以這一步驟開始:計算待估計主方向的紋元集合中的紋元的所有紋元顏色Ti的平均顏色C (步驟60)。
[0280]下一步驟是用所有紋元顏色Ti減去平均顏色值C,以生成各個紋元的偏移紋元值T' i (步驟 61)。
[0281]然后,針對紋理數據元素集合,通過將平面索引j和找到的最佳主方向估計V’(步驟62)以及紋元索引i和當前方向估計V (步驟63)設定為O來開始方向尋找處理。
[0282]然后,存在針對所考慮的將顏色空間中的紋元分割成兩組(將紋元的顏色空間分割成兩部分)的第一平面計算(向量)和值的循環。因此,在步驟64,估算所考慮的紋元相對于所考慮的平面Pj的位置T’ i;并且如果紋元的偏移值T’,為正(即,其在平面Pj的正側)(步驟65),則將紋元的偏移值T’ i與當前方向估計V相加(步驟66)。如果在步驟65,發現紋元T’,在平面Pj的負側,則跳過加法步驟66。
[0283]然后,在步驟67使紋元索引遞增,以移到所考慮的集合中的下一紋元。如果還未到達最后的紋元(步驟68),則處理循環回到位置估算步驟64,并對集合中的下一紋元執行相同的處理,以此類推,直到到達所考慮的紋元集合中的最后的紋元為止(步驟68)。
[0284]一旦已考慮集合中的最后的紋元,計算當前所考慮的平面的所確定的估計向量V的長度以及現有最佳方向向量估計V’的長度(步驟69 )并進行比較(步驟70 )。
[0285]如果當前主方向估計向量V的長度比先前最長的方向向量估計V’的長度長,則將當前主方向估計向量V設定為目前為止找到的最佳主方向向量V’(步驟71)。如果并非如此,則將先前最長的主方向向量估計V’保留為最佳主方向估計V’。
[0286]然后,處理進行至待考慮的下一平面并針對該平面重復(步驟72和73),以此類推,直到已考慮最后的平面為止,此時將找到的最長主方向向量估計V’選為將用于所考慮的紋理數據元素集合的主方向的估計(步驟74)。
[0287]一旦將用于紋理數據元素集合的主方向(B卩,將在確定待編碼的紋理數據元素集合的端點顏色時使用的顏色空間中的方向)的估計已確定,則利用所確定的方向來確定將用于所關注的紋理數據元素集合的端點顏色值。這在本實施方式中通過使用所關注的紋理數據元素集合的平均顏色C以及所確定(選擇)的估計主方向向量V’以形成將投影所述集合的紋理數據元素的顏色空間中的線來進行,如下:
[0288]1.定義顏色空間中的參數線,L=C+t*V’
[0289]2.將所有紋理數據元素投影到該線上;這基本上等同于針對線L上最靠近紋元的點尋找參數值t ;給定偏移紋元值T’ =T-C,參數t可被計算為t=dot (V’,T’) /dot (V’,V’),其中dotO表示通常的向量點積。
[0290]然后,使用通過將紋理數據元素的值投影到所確定的顏色空間中的線上而獲得的最低和最高參數值t_low和t_high來推導將用于所關注的紋理數據元素集合的兩個端點顏色El、E2,如下:
[0291]El =C+t_low*V
[0292]E2=C+t_high*V。
[0293]當然,如果需要,可使用利用所估計的主方向確定將用于紋理數據元素集合的端點顏色(或其它基礎數據值)的其它布置方式。
[0294]這些主方向和端點值估計和確定處理可根據需要(例如)利用適當配置的專用硬件元件(處理電路),或者通過對可編程通用處理器(處理電路)編程使其按照所描述的方式操作,來實現。
[0295]本領域技術人員將理解,除了確定將使用哪些端點顏色之外,紋理數據元素的集合和塊將需要以合適的方式編碼,以使得解碼器能夠對編碼的紋元塊進行解碼,以再現(至少近似于)原始紋元值。
[0296]因此,現在將描述本實施方式中所使用的對紋理數據元素(紋元)塊進行編碼(和解碼)的格式。
[0297]概述
[0298]本實施方式使用紋理壓縮格式,該格式被設計為提供適用于各種各樣不同類型的內容以及各種各樣的質量/比特率權衡的有損紋理壓縮。該格式具有以下主要特征:
[0299].128比特的塊大小
[0300].編碼的塊自包含(任何給定紋元完全由單個塊的內容來限定)
[0301].設計為用于以下類型的紋理數據的壓縮:
[0302]-每紋元具有1、2、3或4個分量(分別為亮度、亮度-a、RGB和RGB-α)的LDR (低動態范圍)紋理數據
[0303]-每紋元具有1、3或4個分量的HDR(高動態范圍)紋理數據
[0304].索引比特與顏色端點比特之間細粒級每塊可調節的比特分配。[0305].2D 和 3D 變型。
[0306].各個塊表示紋元的矩形或立方形覆蓋面積(footprint)。覆蓋面積尺寸確定此紋理格式的比特率,并且對于紋理整體而言是全局的。
[0307]2D變型所支持的覆蓋面積尺寸為:
[0308]-4X4 (8bpp)
[0309]-5X4 (6.40bpp)
[0310]-5X5 (5.12bpp)
[0311]-6X5 (4.27bpp)
[0312]-6X6 (3.56bpp)
[0313]-8X5 (3.20bpp)
[0314]-8X6 (2.67bpp)
[0315]-10 X 5 (2.56bpp)
[0316]-10X6 (2.13bpp)
[0317]-8X8 (2bpp)
[0318]-10X8 (1.60bpp)
[0319]-10X10 (1.28bpp)
[0320]-12X10 (1.07bpp)
[0321]-12X12 (0.88bpp)
[0322]3D變型所支持的覆蓋面積尺寸為:
[0323]-3X3X3 (4.74bpp)
[0324]-4X3X3 (3.56bpp)
[0325]-4X4X3 (2.67bpp)
[0326]-4X4X4 (2bpp)
[0327]-5X4X4 (1.60bpp)
[0328]-5X5X4 (1.28bpp)
[0329]-5X5X5 (1.02bpp)
[0330]-6X5X5 (0.85bpp)
[0331]-6X6X5 (0.71bpp)
[0332]-6X6X6 (0.59bpp)
[0333]所支持的紋理數據的類型(分量計數,LDR對HDR)不取決于覆蓋面積尺寸;所有類型在所有尺寸下均可用。
[0334].利用分割圖案生成函數的塊分割;各個分區具有單獨的一對端點顏色。該格式使得單個塊內的不同分區能夠具有不同的端點類型。該格式支持每塊I至4個分區。
[0335].索引抽取:該格式使得能夠僅針對一些紋元指定索引,而剩余紋元使用填充程序;這在較低比特率下尤其有用。
[0336].空范圍(Void Extent):該格式提供編碼以指示紋理內的大的空區域。
[0337].能夠針對不同的Mip映射層次使用不同的數據率。
[0338]塊的布局
[0339]如果塊禁用分割,則編碼的塊具有下面的格式:
【權利要求】
1.一種針對將用于圖形處理系統的待編碼的紋理數據元素集合,確定所述紋理數據元素在數據空間中的方向的方法,所述方向將在確定基礎數據值時使用,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合,該方法包括以下步驟: 針對所述數據空間中的將待編碼的所述紋理數據元素集合分割成兩組的至少一個平面,確定所述數據空間中的從所述數據空間中的基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面一側的紋理數據元素的值的點到所述數據空間中的基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面另一側的紋理數據元素的值的點的向量的方向;以及 利用針對所述數據空間中的將所述紋理數據元素集合分割成兩組的所述至少一個平面中的至少一個、所述紋理數據元素的在所述數據空間中確定的所述方向,來確定所述數據空間中的將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合。
2.根據權利要求1所述的方法,其中,被編碼的所述紋理數據元素集合包括紋理為了編碼目的而被分割成的紋理數據元素塊的所有紋理數據元素,或者紋理為了編碼目的而被分割成的紋理數據元素塊的紋理數據元素的子集。
3.根據權利要求1或2所述的方法,其中,針對所述數據空間中的將待編碼的所述紋理數據元素集合分割成兩組的至少一個平面,確定所述數據空間中的從所述數據空間中的基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面一側的紋理數據元素的值的點到所述數據空間中的基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面另一側的紋理數據元素的值的點的向量的方向的步驟包括以下步驟: 針對所述數據空間中的將待編碼的所述紋理數據元素集合分割成兩組的至少一個平面,確定所述數據空間中的從`待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面一側的紋理數據元素的平均值在所述數據空間中的點到待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面另一側的紋理數據元素的平均值在所述數據空間中的點的向量的方向。
4.根據權利要求1、2或3所述的方法,該方法還包括以下步驟:首先確定所考慮的紋理數據元素集合的平均紋理數據元素值,然后按照所確定的平均值使各個紋理數據元素的值偏移。
5.根據權利要求4所述的方法,其中,以下步驟: 針對所述數據空間中的將待編碼的所述紋理數據元素集合分割成兩組的至少一個平面,確定所述數據空間中的從所述數據空間中的基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面一側的紋理數據元素的值的點到所述數據空間中的基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面另一側的紋理數據元素的值的點的向量的方向;以及 利用針對所述數據空間中的將所述紋理數據元素集合分割成兩組的所述至少一個平面中的至少一個、所述紋理數據元素的在所述數據空間中確定的所述方向,來確定所述數據空間中的將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合, 包括以下步驟: 針對所述數據空間中的將待編碼的所述紋理數據元素集合的偏移值分割成兩組的至少一個平面,確定所述數據空間中的所述數據空間中的原點與待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面一側的紋理數據元素的偏移值之和在所述數據空間中的點之間的向量的方向;以及 利用針對將所述紋理數據元素集合的偏移值分割成兩組的所述至少一個平面中的至少一個、所述紋理數據元素的在所述數據空間中確定的所述方向,來確定所述數據空間中的將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合。
6.根據前述權利要求中的任一項所述的方法,其中,確定了所述數據空間中的所述向量的方向的、所述數據空間中的分割所述紋理數據元素的各個平面垂直于所述數據空間的多個軸中的一個。
7.根據前述權利要求中的任一項所述的方法,該方法還包括以下步驟: 基于所述數據空間中的所述向量的長度,確定是否將針對已用于分割所述紋理數據元素值的平面確定的方向用作將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時使用。
8.根據前述權利要求中的任一項所述的方法,該方法包括以下步驟:針對所述數據空間中的分割所述紋理數據元素的多個不同的平面中的每一個確定所述數據空間中的向量的方向。
9.根據權利要求8所述的方法`,該方法還包括以下步驟:基于用于確定所述數據空間中的所述方向的所述向量在所述數據空間中的長度,選擇針對所述數據空間中的將所述紋理數據元素分割成兩組的所述多個不同的平面中的一個、所述紋理數據元素的在所述數據空間中確定的所述方向,作為所述數據空間中的將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合。
10.一種對用于圖形處理系統的紋理映射進行編碼的方法,該方法包括以下步驟: 將待編碼的紋理映射分割成多個紋理數據元素塊;以及 針對各個紋理數據元素塊: 利用前述權利要求中的任一項所述的方法確定所述數據空間中的將在確定基礎數據值時使用的至少一個方向,所述基礎數據值將在對所述紋理數據元素塊進行編碼時使用; 利用針對所述紋理數據元素塊確定的所述數據空間中的所述至少一個方向來推導將在對所述紋理數據元素塊進行編碼時使用的至少一個基礎數據值;以及 利用推導出的所述至少一個基礎數據值將所述紋理數據元素塊編碼為表示所述紋理數據元素塊的紋理數據塊。
11.根據權利要求10所述的方法,其中,利用針對所述紋理數據元素塊確定的所述數據空間中的所述至少一個方向來推導將在對所述紋理數據元素塊進行編碼時使用的至少一個基礎數據值的步驟包括以下步驟: 利用針對所述紋理數據元素塊確定的所述數據空間中的所述至少一個方向來推導將在對所述紋理數據元素塊進行編碼時使用的一對端點數據值。
12.一種用于針對將用于圖形處理系統的待編碼的紋理數據元素集合,確定所述紋理數據元素在數據空間中的方向的設備,所述方向將在確定基礎數據值時使用,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合,該設備包括: 處理電路,其被配置為: 針對所述數據空間中的將待編碼的所述紋理數據元素集合分割成兩組的至少一個平面,確定所述數據空間中的從所述數據空間中的基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面一側的紋理數據元素的值的點到所述數據空間中的基于待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面另一側的紋理數據元素的值的點的向量的方向;以及 利用針對所述數據空間中的將所述紋理數據元素集合分割成兩組的所述至少一個平面中的至少一個、所述紋理數據元素的在所述數據空間中確定的所述方向,來確定所述數據空間中的將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合。
13.根據權利要求12所述的設備,其中,被編碼的所述紋理數據元素集合包括紋理為了編碼目的而被分割成的紋理數據元素塊的所有紋理數據元素,或者紋理為了編碼目的而被分割成的紋理數據元素塊的紋理數據元素的子集。
14.根據權利要求12或13所述的設備,其中,所述處理電路被配置為: 針對所述數據空間中的將待編碼的所述紋理數據元素集合分割成兩組的至少一個平面,確定所述數據空間中的從待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面一側的紋理數據元素的平均值在所述數據空間中的點到待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面另一側的紋理數據元素的平均值在所述數據空間中的點的向量的方向。
15.根據權利要求12、1`3或14所述的設備,其中,所述處理電路還被配置為:首先確定所考慮的紋理數據元素集合的平均紋理數據元素值,然后按照所確定的平均值使各個紋理數據元素的值偏移。
16.根據權利要求15所述的設備,其中,所述處理電路被配置為: 針對所述數據空間中的將待編碼的所述紋理數據元素集合的偏移值分割成兩組的至少一個平面,確定所述數據空間中的所述數據空間中的原點與待編碼的所述紋理數據元素集合中的值落在所述數據空間中的所述平面一側的紋理數據元素的偏移值之和在所述數據空間中的點之間的向量的方向;以及 利用針對將所述紋理數據元素集合的偏移值分割成兩組的所述至少一個平面中的至少一個、所述紋理數據元素的在所述數據空間中確定的所述方向,來確定所述數據空間中的將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集合。
17.根據權利要求12至16中的任一項所述的設備,其中,確定了所述數據空間中的所述向量的方向的、所述數據空間中的分割所述紋理數據元素的各個平面垂直于所述數據空間的多個軸中的一個。
18.根據權利要求12至17中的任一項所述的設備,其中,所述處理電路被配置為:基于所述數據空間中的所述向量的長度,確定是否將針對已用于分割所述紋理數據元素值的平面確定的方向用作將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時使用。
19.根據權利要求12至18中的任一項所述的設備,其中,所述處理電路被配置為:針對所述數據空間中的分割所述紋理數據元素的多個不同的平面中的每一個確定所述數據空間中的向量的方向。
20.根據權利要求19所述的設備,其中,所述處理電路被配置為:基于用于確定所述數據空間中的所述方向的所述向量在所述數據空間中的長度,選擇針對所述數據空間中的將所述紋理數據元素分割成兩組的所述多個不同的平面中的一個、所述紋理數據元素的在所述數據空間中確定的所述方向,作為所述數據空間中的將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素集合進行編碼時用于所述紋理數據元素集口 ο
21.一種用于對用于圖形處理系統的紋理映射進行編碼的設備,該設備包括: 處理電路,其被配置為: 將待編碼的紋理映射分割成多個紋理數據元素塊; 并且被配置為,針對各個紋理數據元素塊: 針對所述數據空間中的將待編碼的所述紋理數據元素塊分割成兩組的至少一個平面,確定所述數據空間中的從所述數據空間中的基于待編碼的所述紋理數據元素塊中的值落在所述數據空間中的所述平面一側的紋理數據元素的值的點到所述數據空間中的基于待編碼的所述紋理數據元素塊中的值落在所述數據空間中的所述平面另一側的紋理數據元素的值的點的向量的方向; 利用針對所述數據空間中的將所`述紋理數據元素塊分割成兩組的所述至少一個平面中的至少一個、所述紋理數據元素的在所述數據空間中確定的所述方向,來確定所述數據空間中的將在確定基礎數據值時使用的方向,所述基礎數據值將在對所述紋理數據元素塊進行編碼時用于所述紋理數據元素塊; 利用針對所述紋理數據元素塊確定的所述數據空間中的所述至少一個方向來推導將在對所述紋理數據元素塊進行編碼時使用的至少一個基礎數據值;以及 利用推導出的所述至少一個基礎數據值將所述紋理數據元素塊編碼為表示所述紋理數據元素塊的紋理數據塊。
22.根據權利要求21所述的設備,其中,所述處理電路被配置為:利用針對所述紋理數據元素塊確定的所述數據空間中的所述至少一個方向來推導將在對所述紋理數據元素塊進行編碼時使用的一對端點數據值。
23.根據權利要求21或22所述的設備,該設備還包括權利要求13至20中的任一項所述的特征。
24.一種包括計算機軟件代碼的計算機程序,當所述程序在數據處理裝置中運行時,所述計算機軟件代碼用于執行權利要求1至11中的任一項所述的方法。
【文檔編號】H04N19/186GK103533364SQ201310279623
【公開日】2014年1月22日 申請日期:2013年7月4日 優先權日:2012年7月4日
【發明者】J·尼斯塔德 申請人:Arm有限公司