进行数据编码和解码的方法和设备。在对用于图形处理系统的纹理数据元素集合30进行编码时,利用颜色空间中的分割纹理数据元素的一个或更多个无限平面41估计颜色空间中的所关注的纹理数据元素集合的数据值呈现最大方差的方向。对于各个这样的平面,将平面各侧的纹理数据元素值相加以得到相应的和点48、49,确定这两个和点之间的向量50。然后,使用所确定的向量50中的一个在数据空间中的方向来推导将在对纹理数据元素集合进行编码时使用的端点颜色值。
【技术实现步骤摘要】
【专利摘要】进行数据编码和解码的方法和设备。在对用于图形处理系统的纹理数据元素集合30进行编码时,利用颜色空间中的分割纹理数据元素的一个或更多个无限平面41估计颜色空间中的所关注的纹理数据元素集合的数据值呈现最大方差的方向。对于各个这样的平面,将平面各侧的纹理数据元素值相加以得到相应的和点48、49,确定这两个和点之间的向量50。然后,使用所确定的向量50中的一个在数据空间中的方向来推导将在对纹理数据元素集合进行编码时使用的端点颜色值。【专利说明】进行数据编码和解码的方法和设备
本专利技术涉及进行数据编码和解码的方法和设备,具体地讲,涉及在对用于计算机图形系统的纹理数据进行压缩和解压缩时使用的方法和设备。
技术介绍
在计算机图形系统中常见的是通过将所谓的纹理或纹理数据应用于待绘制的表面来产生颜色以对要显示的图像中的位置进行采样。例如,对象的表面细节可这样产生:将预定义的“纹理”应用于表示对象的图元(graphics primitive)集合(例如,多边形),以赋予对象的渲染图像以“纹理”外观。通常,通过将纹理元素或“纹元”(各自表示给定纹理数据(例如,颜色、亮度和/或光照/阴影等值))的阵列存储在给定位置,然后将纹元映射到要显示的图像的对应元素上(例如(且通常为)采样位置集合),来应用这些纹理。所存储的纹理元素(数据)的阵列通常称为“纹理映射”。这些布置方式可提供相对高的图像质量,但也具有许多缺点。具体地讲,存储纹理数据并在使用中访问这些纹理数据会给图形处理装置带来(例如)高的存储和处理要求(或者相反,在这些要求没有满足的情况下导致性能的降低)。这对于执行图形处理的低功率、移动和手持式装置而言尤其明显,因为这些装置在其(例如)存储、带宽和功率资源以及能力方面存在固有局限。因此,已知的是,尝试以“压缩”方式对这种纹理数据进行编码,以尝试减小(例如)在使用纹理时可能强加于图形处理装置的存储和带宽负担。对于纹理压缩技术而言常见的是使用基于块的编码,即,将待编码的纹理元素的总阵列(纹理映射)分割成较小的纹元块(例如,4X4纹元块)的阵列,然后分别对各个这种块进行编码(压缩)和解码的布置方式。这可以(例如)有助于使解码处理更高效,因为例如,解码器可能仅需要对一个或几个编码的块进行解码以确定感兴趣的纹元的值,而非对整个编码的纹理进行解码。基于块的纹理压缩技术通常确定将用于给定纹元块的颜色(或其它数据)的缩减集或调色板,然后针对块中的各个纹理元素(纹元)将索引存储在所述颜色集或调色板中,以指示将用于所关注的纹理元素(纹元)的颜色。这具有如下优点:针对各个纹元仅需存储索引值,而非整个(例如)颜色值。—种已知的基于块的纹理压缩技术是所谓的块截断编码(BTC)。在该技术中,总纹理阵列(纹理映射)被再分割成(例如)4 X 4纹元的较小块,针对各个这种块确定一定数量(通常为两个)的基色或原色值,并且将块中的各个纹元设定为所述基色值之一。这节省了必须存储和访问的数据,但代价是图像质量下降。美国专利N0.5047853描述了一种改进的块截断编码技术。在该技术中,针对各个纹元块同样存储两种基色,但还从这两种基色(如,通这些颜色的线性混合)推导将用于该块的两种附加颜色。这样,提供四种颜色作为纹元块的“调色板”,但针对块仅需存储两种颜色值。然后,利用两个索引比特来对块中的各个纹元编码,以指示四种块“颜色”中的哪一种应该用于该纹元。这种系统所提供的图像质量优于基本块截断编码,但每一块需要更多数据。还有其它基于块的纹理压缩方案,例如S3TC、BC6和BC7,其类似地将纹理分割成块,然后针对各个块定义两种“端点(endpoint)”基色,通过这两种端点颜色之间的插值来形成附加颜色,然后使用用于各个纹元的索引来从所得的颜色集为纹元选择颜色。例如,在S3TC纹理压缩格式中,纹理被表示为4X4纹元块。对于各个块,确定两种端点颜色,通过这两个端点之间的插值来形成两种附加颜色。这样针对块得到四种颜色的调色板,这四种颜色在颜色空间中全部落在直线上。然后针对各个纹元使用纹元索引,以将纹元映射到这四种颜色中的一种。各个编码的块存储该块的两种端点颜色以及该块的4X4纹元索引的网格。这些类型的纹理压缩处理中的最复杂的步骤通常是选择将使用的两种端点颜色。这通常通过确定可投影纹元值的颜色空间中的线来进行。该线通常通过针对所关注的纹元块计算平均颜色和方向向量来推导。然后,确定投影了块中的纹元的颜色空间中的线是穿过该平均颜色点并具有所确定的方向向量的方向的线。在这些布置方式中,将使用的最佳方向向量是沿着颜色空间中纹元的值呈现最大方差的方向(即,纹元值在颜色空间中的主方向)的向量,因此传统上利用离散卡亨南-洛维(Karhunen-Loewe )变换(KLT)(也称为主分量分析)来计算。因此,计算要在对纹元块进行编码时使用的两种端点颜色的标准方法(给定未压缩的纹理作为输入,其中每一纹元(例如)用(R,G,B)颜色元组来表示)如下:1.计算待编码的纹元块上的平均颜色C2.针对各个纹元,用纹元的颜色值减去平均颜色C:r =T-C3.从步骤2的减法所得的纹元值,计算协方差矩阵M4.计算M的特征值和特征向量,然后保留表示最大能量的特征向量V。这可通过计算与最大特征值对应的特征向量,或者利用“幂迭代”方法寻找主特征向量来进行。5.定义颜色空间中穿过平均颜色值C并具有所确定的特征向量V的方向的参数线,L=C+t*V6.将所有纹元投影到该线上(即,针对各个纹元,确定该线上最靠近该纹元的点)。这基本上等同于针对线L上最靠近纹元的点寻找参数值t:给定减法所得的纹元T’ =T-C,参数可被计算为t=dot(V,T')/dot (V, V),其中dot O表示通常的向量点积。7.寻找投影了纹元的线上的最高点和最低点(值)。这基本上等同于寻找得自纹元的最低(t_low)和最高(t_high)参数值。8.然后将端点颜色定义为投影了纹元的线上的最高和最低点(值)。这基本上等同于定义:El=C+t_low*V 和 E2=C+t_high*V在计算出这两个端点值之后,通过从这些端点颜色的插值计算将用于编码的块的(例如)两个其它的颜色值(如,分别为1/3E1+2/3E2和2/3E1+1/3E2)。然后,向各个纹元分配与块的(例如)四个颜色当中的颜色值最接近的那一个对应的索引(对于快速编码,这可通过仅对上述步骤6中所计算出的参数值“ t ”重新缩放和量化来进行)。在该处理中,步骤1-4构成卡亨南-洛维变换,剩余步骤利用KLT结果来执行实际纹理压缩。利用卡亨南-洛维变换(具体地讲,上述步骤3和4)来确定将使用的向量方向,同时为待编码的纹元块提供对期望的主方向的精确估计在计算上花费高,并且易于数值不稳定且需要处理特殊情况。例如,当计算特征值时,必须求解3次多项式。这样做在分析上需要多次花费高的超越运算(立方根、正弦、余弦、反正切),并且这样做在数值上需要相对复杂的方法(如,詹金斯-特劳布(Jenkins-Traub))以确保在合理的时间内收敛。使用幂迭代方法来寻找主特征向量较简单。然而,这仍然需要挑选随机向量,然后反复地将其乘以协方差矩阵,直到所得向量最终收敛于主特征向量为止。还需要注意确本文档来自技高网...
【技术保护点】
一种针对将用于图形处理系统的待编码的纹理数据元素集合,确定所述纹理数据元素在数据空间中的方向的方法,所述方向将在确定基础数据值时使用,所述基础数据值将在对所述纹理数据元素集合进行编码时用于所述纹理数据元素集合,该方法包括以下步骤:针对所述数据空间中的将待编码的所述纹理数据元素集合分割成两组的至少一个平面,确定所述数据空间中的从所述数据空间中的基于待编码的所述纹理数据元素集合中的值落在所述数据空间中的所述平面一侧的纹理数据元素的值的点到所述数据空间中的基于待编码的所述纹理数据元素集合中的值落在所述数据空间中的所述平面另一侧的纹理数据元素的值的点的向量的方向;以及利用针对所述数据空间中的将所述纹理数据元素集合分割成两组的所述至少一个平面中的至少一个、所述纹理数据元素的在所述数据空间中确定的所述方向,来确定所述数据空间中的将在确定基础数据值时使用的方向,所述基础数据值将在对所述纹理数据元素集合进行编码时用于所述纹理数据元素集合。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:J·尼斯塔德,
申请(专利权)人:ARM有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。