
1图像压缩的概念
减少表示数字图像时需要的数据量
2图像压缩的基本原理
图像数据之所以能被压缩,就是因为数据中存在着冗余。图像数据的冗余主要表现为:图像中相邻像素间的相关性引起的空间冗余;图像序列中不同帧之间存在相关性引起的时间冗余;不同彩色平面或频谱带的相关性引起的频谱冗余。数据压缩的目的就是通过去除这些数据冗余来减少表示数据所需的比特数。由于图像数据量的庞大,在存储、传输、处理时非常困难,因此图像数据的压缩就显得非常重要。
信息时代带来了“信息爆炸”,使数据量大增,因此,无论传输或存储都需要对数据进行有效的压缩。在遥感技术中,各种航天探测器采用压缩编码技术,将获取的巨大信息送回地面。
图像压缩是数据压缩技术在数字图像上的应用,它的目的是减少图像数据中的冗余信息从而用更加高效的格式存储和传输数据。
3。图像压缩基本方法
图像压缩可以是有损数据压缩也可以是无损数据压缩。对于如绘制的技术图、图表或者漫画优先使用无损压缩,这是因为有损压缩方法,尤其是在低的位速条件下将会带来压缩失真。如医疗图像或者用于存档的扫描图像等这些有价值的内容的压缩也尽量选择无损压缩方法。有损方法非常适合于自然的图像,例如一些应用中图像的微小损失是可以接受的(有时是无法感知的),这样就可以大幅度地减小位速。
无损图像压缩方法有:
行程长度编码
熵编码法
如 LZW 这样的自适应字典算法
有损压缩方法有:
将色彩空间化减到图像中常用的颜色。所选择的颜色定义在压缩图像头的调色板中,图像中的每个像素都用调色板中颜色索引表示。这种方法可以与 抖动(en:dithering)一起使用以模糊颜色边界。
色度抽样,这利用了人眼对于亮度变化的敏感性远大于颜色变化,这样就可以将图像中的颜色信息减少一半甚至更多。
变换编码,这是最常用的方法。首先使用如离散余弦变换(DCT)或者小波变换这样的傅立叶相关变换,然后进行量化和用熵编码法压缩。
分形压缩(en:Fractal compression)。
4图像压缩的主要目标就是在给定位速(bit-rate)或者压缩比下实现最好的图像质量。但是,还有一些其它的图像压缩机制的重要特性:
可扩展编码 (en:Scalability) 通常表示 *** 作位流和文件产生的质量下降(没有解压缩和再压缩)。可扩展编码的其它一些叫法有 渐进编码(en:progressive coding)或者嵌入式位流(en:embedded bitstreams)。尽管具有不同的特性,在无损编码中也有可扩展编码,它通常是使用粗糙到精细像素扫描的格式。尤其是在下载时预览图像(如浏览器中)或者提供不同的图像质量访问时(如在数据库中)可扩展编码非常有用 有几种不同类型的可扩展性:
质量渐进(en:Quality progressive)或者层渐进(en:layer progressive):位流渐进更新重建的图像。
分辨率渐进(en:Resolution progressive):首先在低分辨率编码图像,然后编码与高分辨率之间的差别。
成分渐进(en:Component progressive):首先编码灰度数据,然后编码彩色数据。
感兴趣区域编码,图像某些部分的编码质量要高于其它部分,这种方法可以与可扩展编码组合在一起(首先编码这些部分,然后编码其它部分)。
元数据信息,压缩数据可以包含关于图像的信息用来分类、查询或者浏览图像。这些信息可以包括颜色、纹理统计信息、小预览图像以及作者和版权信息。
5图像压缩目前的标准
经典的视频压缩算法已渐形成一系列的国际标准体系,如H26x系列建议,H320系列建议以及MPEG系列建议等。
6图像压缩效果的评估
压缩方法的质量经常使用峰值信噪比来衡量,峰值信噪比用来表示图象有损压缩带来的噪声。但是,观察者的主观判断也认为是一个重要的、或许是最重要的衡量标准。
像素格式描述了像素数据存储所用的格式。定义了像素在内存中的编码方式。下面的像素格式 (PF_) 类型定义了:
本地格式 (PF_A8R8G8B8 以及其他大量的不同的类型)
这意味着在内存中使用了本地储存方式(big endian或者little endian,包括16,24,32位)的整形数据。同时意味着可以把PF_A8R8G8B8格式的看作一个32位的整形数组,在16进制表现为0xAARRGGBB。这些字母的意义我们在稍后会提供。
位组格式Byte formats(PF_BYTE_)
在这种格式下每个通道对应一个byte,通道在内存里的组织方式和格式名称定义的相同。例如PF_BYTE_RGBA格式的像素包含了四个byte,一个对应红色,一个绿色,一个蓝色,以及一个alpha通道。
Short格式(PF_SHORT_)
在这种格式下每个通道对应一个unsigned short数据(16 bit整型),通道在内存里的组织方式和格式名称定义的相同。例如PF_BYTE_RGBA格式的像素包含了四个unsigned short数据,一个对应红色,一个绿色,一个蓝色,以及一个alpha通道。
Float16 格式(PF_FLOAT16_)
在这种格式下每个通道对应一个16 bit浮点数,通道在内存里的组织方式和格式名称定义的相同。例如PF_BYTE_RGBA格式的像素包含了四个16 bit浮点数数据,一个对应红色,一个绿色,一个蓝色,以及一个alpha通道。16 bit浮点数也被称为半浮点(half float),非常类似于IEEE 对32bit单精度浮点数标准,只不过它只有5个exponent位和10个mantissa位而已。值得注意,这并不是一个标准的C++数据,CPU对其支持也不够好,不过GPU却能如同处理32bit浮点数一样高效的处理它。
Float32格式(PF_FLOAT32_)
在这种格式下每个通道对应一个32 bit浮点数,通道在内存理的组织方式和格式名称定义的相同。例如PF_BYTE_RGBA格式的像素包含了四个32 bit浮点数数据,一个对应红色,一个绿色,一个蓝色,以及一个alpha通道。在C++中,这个数据就是普通的float。just “float”。
压缩格式formats (PF_DXT[1-5])
S3TC压缩纹理格式。
格式,如 jpg/png 等
纹理格式,如 ETC1/ETC2/PVRTC/ASTC等
电脑硬盘上的文件用来保存图形或图像的信息,包括大小、颜色等。的格式很多,但总体上可以分为 点阵图 和矢量图两种。
常见的位图格式:
考虑无压缩的 bmp 格式位图,文件在硬盘上的大小和以下几个因素有关
文件被加载到内存后,被转换为显卡能够识别的 纹理 提交到显存中,供 GPU 进行采样,纹理采样是根据 uv 坐标获得对应纹理中 纹素 颜色值的过程。
不同的显卡和图形API对纹理格式的支持不一样,RGBA32被显卡和图形API完全支持,DirectX特有的DXTx只有微软的部分设备支持,Android设备广泛支持ETC系列,iOS则支持 PVRTC 系列。
CPU将从硬盘加载到内存中,进行解码得到 RGBA32 格式位图,然后在 CPU 端进行编码,得到GPU支持的纹理格式,提交到显存供 GPU 采样访问。
这个过程中需要进行解码、重新编码,非常消耗 CPU,为了减少 CPU 的消耗,因此可以把预先转换成某种纹理格式放到硬盘上,CPU 加载后不需要解码和重新编码,直接提交给 GPU。大大节省了纹理从加载到使用的性能。
在Unity中,任何文件格式都存在一个导入过程,导入后的文件格式都是Texture2D,在Texture2D的导入设置选项中需要针对不同平台设置纹理压缩格式,在构建时,会直接将转换后的纹理格式构建到安装包或 assetbundle 中。
使用纹理压缩格式的好处
GPU 通常并行处理若干数据,无法预测纹理中纹素被访问的先后顺序,因此纹理格式必须支持GPU的 随机访问 :
几乎所有的纹理压缩算法都 以块为单位 压缩和存储纹素,可以理解为,每个纹素块(通常为4x4)占用的字节数是确定的,所以当我们需要访问某一个坐标的纹素时,可以明确得到该纹素所在块的数据,GPU纹理采样单元针对该块进行解压,读取对应纹素数据即完成采样。
而jpeg/png这类压缩算法考虑了的整体数据,像素数据之间互相依赖,无法针对其中某一块进行解压,必须全部解压才能正确访问纹素,所以不适宜作为纹理格式。
纹理压缩算法几乎都是有损压缩,通常情况下有限度的信息损失换到的性能上的提升是值得的。
如果使用了硬件不支持的纹理压缩格式,Unity在运行时会对纹理进行解压所到无压缩格式,而这种无压缩格式只是格式上是无压缩的,但是因为原始数据是有损压缩,所以视觉上纹理精度和压缩格式是一致的,因此单从视觉上很难察觉,而且占用的内存是双份纹理的开销,而带宽开销是无压缩格式的纹理大小所占用的开销。
例如:ETC格式在PC端Dx11的显卡是不支持的,如果使用,开销计算如下
1024 x 1024 ETC2 8bit的格式在PC端,会产生5M的内存开销(1M压缩的原图+4M解压出来的RGBA32bit图)
1024 x 1024 ETC 4bit格式在PC端,会产生45M的内存开销(05M压缩的原图+4M解压出来的RGBA32bit图)
而如果贴图格式在目标设备上支持,则不会发生内存中的解压缩 *** 作,压缩过的图大小是多少,在内存中的设备上大小就是多少:
1024 x 1024 ETC2 8bit的格式在Android端,会产生1M的内存开销(1M压缩的原图)
1024 x 1024 ETC 4bit格式在Android端,会产生05M的内存开销(05M压缩的原图)
纹理压缩是一次性的工作,例如 Unity 在导入资源时会有一段转换时间,被处理成对应的纹理格式后存储了下来,此时纹理压缩的速度慢一些是可以接受的
GPU 对纹理进行采样时,通常只会解压一个纹素块,不会全部解压,这个过程本身就是很快的
“像素”(Pixel) 是由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的,是用来计算数码影像的一种单位,如同摄影的相片一样,数码影像也具有连续性的浓淡阶调,我们若把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位“像素”(Pixel)。这种最小的图形的单元能在屏幕上显示通常是单个的染色点。越高位的像素,其拥有的色板也就越丰富,越能表达颜色的真实感。
一个像素通常被视为图像的最小的完整采样。这个定义和上下文很相关。例如,我们可以说在一幅可见的图像中的像素(例如打印出来的一页)或者用电子信号表示的像素,或者用数码表示的像素,或者显示器上的像素,或者数码相机(感光元素)中的像素。这个列表还可以添加很多其它的例子,根据上下文,会有一些更为精确的同义词,例如画素,采样点,字节,比特,点,斑,超集,三合点,条纹集,窗口,等等。我们也可以抽象地讨论像素,特别是使用像素作为解析度地衡量时,例如2400像素每英寸(ppi)或者640像素每线。点有时用来表示像素,特别是计算机市场营销人员,因此ppi有时所写为DPI(dots per inch)。
用来表示一幅图像的像素越多,结果更接近原始的图像。一幅图像中的像素个数有时被称为图像解析度,虽然解析度有一个更为特定的定义。像素可以用一个数表示,譬如一个"3兆像素" 数码相机,它有额定三百万像素,或者用一对数字表示,例如“640乘480显示器”,它有横向640像素和纵向480像素(就像VGA显示器那样),因此其总数为640 × 480 = 307,200像素。
数字化图像的彩色采样点(例如网页中常用的JPG文件)也称为像素。取决于计算机显示器,这些可能不是和屏幕像素有一一对应的。在这种区别很明显的区域,图像文件中的点更接近纹理元素。
在计算机编程中,像素组成的图像叫位图或者光栅图像。光栅一次源于模拟电视技术。位图化图像可用于编码数字影像和某些类型的计算机生成艺术。
原始和逻辑像素
因为多数计算机显示器的解析度可以通过计算机的 *** 作系统来调节,显示器的像素解析度可能不是一个绝对的衡量标准。
现代液晶显示器按设计有一个原始解析度,它代表像素和三元素组之间的完美匹配。(阴极射线管也是用红-绿-蓝荧光三元素组,但是它们和图像像素并不重合,因此和像素无法比较)。
对于该显示器,原始解析度能够产生最精细的图像。但是因为用户可以调整解析度,显示器必须能够显示其它解析度。非原始解析度必须通过在液晶屏幕上拟合重新采样来实现,要使用插值算法。这经常会使屏幕看起来破碎或模糊。例如,原始解析度为1280×1024的显示器在解析度为1280×1024时看起来最好,也可以通过用几个物理三元素组来表示一个像素以显示800×600,但可能无法完全显示1600×1200的解析度,因为物理三元素组不够。
像素可以是长方形的或者方形的。有一个数称为长宽比,用于表述像素有多方。例如125:1的长宽比表示每个像素的宽是其高度的125倍。计算机显示器上的像素通常是方的,但是用于数字影像的像素有矩形的长宽比,例如那些用于CCIR 601数字图像标准的变种PAL和NTSC制式的,以及所对应的宽屏格式。
单色图像的每个像素有自己的辉度。0通常表示黑,而最大值通常表示白色。例如,在一个8位图像中,最大的无符号数是255,所以这是白色的值。
在彩色图像中,每个像素可以用它的色调,饱和度,和亮度来表示,但是通常用红绿蓝强度来表示(参看红绿蓝)。
比特每像素
一个像素所能表达的不同颜色数取决于比特每像素(BPP)。这个最大数可以通过取二的色彩深度次幂来得到。例如,常见的取值有 :
8 bpp [28=256;(256色)];
16 bpp [216=65536; (65,536色,称为高彩色)];
24 bpp [224=16777216; (16,777,216色,称为真彩色)];
48 bpp [248=281474976710656;(281,474,976,710,656色,用于很多专业的扫描仪) 。
256色或者更少的色彩的图形经常以块或平面格式存储于显存中,其中显存中的每个像素是到一个称为调色板的颜色数组的索引值。这些模式因而有时被称为索引模式。虽然每次只有256色,但是这256种颜色选自一个选择大的多的调色板,通常是16兆色。改变调色板中的色彩值可以得到一种动画效果。视窗95和视窗98的标志可能是这类动画最著名的例子了。
对于超过8位的深度,这些数位就是三个分量(红绿蓝)的各自的数位的总和。一个16位的深度通常分为5位红色和5位蓝色,6位绿色(眼睛对于绿色更为敏感)。24位的深度一般是每个分量8位。在有些系统中,32位深度也是可选的:这意味着24位的像素有8位额外的数位来描述透明度。在老一些的系统中,4bpp(16色)也是很常见的。
当一个图像文件显示在屏幕上,每个像素的数位对于光栅文本和对于显示器可以是不同的。有些光栅图像文件格式相对其他格式有更大的色彩深度。例如GIF格式,其最大深度为8位,而TIFF文件可以处理48位像素。没有任何显示器可以显示48位色彩,所以这个深度通常用于特殊专业应用,例如胶片扫描仪和打印机。这种文件在屏幕上采用24位深度绘制。
子像素
很多显示器和图像获取系统出于不同原因无法显示或感知同一点的不同色彩通道。这个问题通常通过多个子像素的办法解决,每个子像素处理一个色彩通道。例如,LCD显示器通常将每个像素水平分解位3个子像素。多数LED显示器将每个像素分解为4个子像素;一个红,一个绿,和两个蓝。多数数码相机传感器也采用子像素,通过有色滤波器实现。(CRT显示器也采用红绿蓝荧光点,但是它们和图像像素并不对齐,因此不能称为子像素)。
对于有子像素的系统,有两种不同的处理方式:子像素可以被忽略,将像素作为最小可以存取的图像元素,或者子像素被包含到绘制计算中,这需要更多的分析和处理时间,但是可以在某些情况下提供更出色的图像。
后一种方式被用于提高彩色显示器的外观解析度。这种技术,被称为子像素绘制,利用了像素几何来分别 *** 纵子像素,对于设为原始解析度的平面显示器来讲最为有效(因为这种显示器的像素几何通常是固定的而且是已知的)。这是反走样的一种形式,主要用于改进文本的显示。微软的ClearType,在Windows XP上可用,是这种技术的一个例子。
兆像素
一个兆像素(megapixel)是一百万个像素,通常用于表达数码相机的解析度。例如,一个相机可以使用2048×1536像素的解析度,通常被称为有“31百万像素” (2048 × 1536 = 3,145,728)。
数码相继使用感光电子器件,或者是耦合电荷设备(CCDs)或者CMOS传感器,它们记录每个像素的辉度级别。在多数数码相机中,CCD采用某种排列的有色滤波器,在Bayer滤波器拼合中带有红,绿,蓝区域,使得感光像素可以记录单个基色的辉度。相机对相邻像素的色彩信息进行插值,这个过程称为解拼(de-mosaic),然后建立最后的图像。这样,一个数码相机中的x兆像素的图像最后的彩色解析度最后可能只有同样图像在扫描仪中的解析度的四分之一。这样,一幅蓝色或者红色的物体的图像倾向于比灰色的物体要模糊。绿色物体似乎不那么模糊,因为绿色被分配了更多的像素(因为眼睛对于绿色的敏感性)。参看[1]的详细讨论。
作为一个新的发展,Foveon X3 CCD采用三层图像传感器在每个像素点探测红绿蓝强度。这个结构消除了解拼的需要因而消除了相关的图像走样,例如高对比度的边的色彩模糊这种走样。
类似概念
从像素的思想衍生出几个其它类型的概念,例如体元素(voxel),纹理元素(texel)和曲面元素(surfel),它们被用于其它计算机图形学和图像处理应用。
数码相机的像素
像素是衡量数码相机的最重要指标。像素指的是数码相机的分辨率。它是由相机里的光电传感器上的光敏元件数目所决定的,一个光敏元件就对应一个像素。因此像素越大,意味着光敏元件越多,相应的成本就越大。
数码相机的图像质量是由像素决定的,像素越大,照片的分辨率也越大,打印 尺寸在不降低打印质量的同时也越大。早期的数码相机都是低于100万像素的。从1999年下半年开始,200万像素的产品渐渐成为市场的主流。当前的数码相机的发展 趋势,像素宛如PC机的CPU主频,有越来越大的势头。
其实从市场分类角度看,面向普及型的产品,考虑性价比的因素,像素并不是 越大越好。毕竟200万像素的产品,已经能够满足目前普通消费者的大多数应用。因 此大多数厂商在高端数码相机追求高像素的同时,当前其产量最大的,仍是面向普 及型的百万像素产品。专业级的数码相机,已有超过1亿像素级的产品。而300万像 素级的产品,将随着CCD(成像芯片)制造技术的进步和成本的进一步下降,也将很 快成为消费市场的主流。
另外值得消费者注意的是,当前的数码相机产品,在像素标称上分为CCD像素和经软件优化后的像素,后者大大高于前者。如某品牌目前流行的数码相机,其CCD像素为230万,而软件优化后的像素可达到330万。
像素画
像素其实是由很多个点组成。
我们这里说的“像素画”并不是和矢量图对应的点阵式图像,而是指的一种图标风格的图像,此风格图像强调清晰的轮廓、明快的色彩,同时像素图的造型往往比较卡通,因此得到很多朋友的喜爱。
像素图的制作方法几乎不用混叠方法来绘制光滑的线条,所以常常采用gif格式,而且也经常以动态形式出现但由于其特殊的制作过程,如果随意改变的大小,风格就难以保证了。
像素画的应用范围相当广泛,从小时候玩的FC家用红白机的画面直到今天的GBA手掌机;从黑白的手机直到今天全彩的掌上电脑;即使我们日以面对的电脑中也无处不充斥着各类软件的像素图标。如今像素画更是成为了一门艺术,深深的震撼着你我。
效象素值
首先我们要明确一点,一张数码照片的实际象素值跟感应器的象素值是有所不同的。以一般的感应器为例,每个象素带有一个光电二极管,代表着照片中的一个象素。例如一部拥有500万象素的数码相机,它的感应器能输出分辨率为 2,560 x 1,920的图像—其实精确来讲,这个数值只相等于490万有效象素。有效象素周围的其他象素负责另外的工作,如决定“黑色是什么”。很多时候,并不是所有感应器上的象素都能被运用。索尼F505V就是其中的经典案例。索尼F505V的感应器拥有334万象素,但它最多智能输出1,856 x 1,392即260万象素的图像。归其原因,是索尼当时把比旧款更大的新型感应器塞进旧款数码相机里面,导致感应器尺寸过大,原来的镜头不同完全覆盖感应器中的每个象素。
因此,数码相机正是运用”感应器象素值比有效象素值大“这一原理输出数码。在当今市场不断追求高象素的环境下,数码相机生产商常常在广告中以数值更高的感应器象素为对象,而不是反映实际成像清晰度的有效象素。
感应器象素插值
在通常情况下,感应器中不同位置的每个象素构成中的每个象素。例如一张500万象素的照片由感应器中的500万个象素对进入快门的光线进行测量、处理而获得(有效象素外的其他象素只负责计算)。但是我们有时候能看到这样的数码相机:只拥有300万象素,却能输出600万象素的照片!其实这里并没有什么虚假的地方,只是照相机在感应器300万象素测量的基础上,进行计算和插值,增加照片象素。
当摄影者拍摄JPEG格式的照片时,这种“照相机内扩大”的成像质量会比我们在电脑上扩大优秀,因为“照相机内扩大”是在未被压缩成JPEG格式前完成的。有数码相片处理经验的摄友都清楚,在电脑里面扩大JPEG会使画面细腻和平滑度迅速下降。虽然数码相机插值所得的会比感应器象素正常输出的画质好,但是插值所得的文件大小比正常输出的大得多(如300万感应器象素插值为600万象素,最终输入记忆卡的为600万象素)。因此,插值所得的高象素看来并没有太多的可取之处,其实运用插值就好像使用数码变焦-并不能创造原象素无法记录的细节地方。
CCD总象素
CCD总象素也是一个相当重要指标,由于各生产厂家采用不同技术,所以其厂家标称CCD像素并不直接对应相机实际像素,所以购买数码相机时更要看相机实际所具有总像素数。一般来讲总像素水平达到300万左右就可以满足一般应用了,一般200万象素、100万象素产品也可以满足低端使用,当然更高象素数码相机可以得到更高质量照片,现在有些公司已经开始推出600万象素级别普通数码相机了。
1、为什么要对图像数据进行压缩?其压缩原理是什么?
答:(1)数字图像如果不进行压缩,数据量是比较大的,例如一幅分辨率为1024×768的静态真彩色图像,其数据量为1024×768×24=225(MB)。这无疑对图像的存储、处理、传送带来很大的困难。事实上,在图像像素之间,无论在行方向还是列方向,都存在一定的相关性。也就是说,在一般图像中都存在很大的相关性,即冗余度。静态图像数据的冗余包括:空间冗余、时间冗余、结构冗余、知识冗余和视觉冗余、图像区域的相同性冗余、纹理的统计冗余等。图像压缩编码技术就是利用图像数据固有的冗余性和相干性,将一个大的图像数据文件转换为较小的同性质的文件。
(2)其压缩原理: 空间冗余、时间冗余、结构冗余、和视觉冗余。
2、图像压缩编码的目的是什么?目前有哪些编码方法?
答:(1)视频经过数字化处理后易于加密、抗干扰能力强、可再生中继等诸多优点,但是由于数字化的视频数据量十分巨大,不利于传输和存储。若不经压缩,数字视频传输所需的高传输率和数字视频存储所需的巨大容量,将成为推广数字电视视频通信的最大障碍,这就是进行视频压缩编码的目的。
(2)目前主要是预测编码,变换编码,和统计编码三种编码方法。
3、某信号源共有7个符号,概率分别为02,018,01,015,007,005,025,试进行霍夫曼编码,并解释是否进行了压缩,压缩比为多少?
0000 0001 000 00 111 110 10
005 007 01 02 018 015 025
005×4+007×4+01×3+02×2+018×3+015×3+025×2=267
很大 窗口很小 被压缩很正常 大部分GDI绘图函数也是这样
这些只是基本功能的函数 提供拉伸/缩小的功能 不会提供 更高质量的压缩算法
如果 不想被拉伸 把窗口设置为 不可拉伸的就可以了
(CreateWindow(Ex) 这样写WS_OVERLAPPEDWINDOW & (~WS_SIZEBOX))
如果是 窗口够大 还是模糊 可以使用下面的方法试试看
D3DXCreateTextureFromFile 函数换成
D3DXCreateTextureFromFileEx 之后
_In_ UINT Width,
_In_ UINT Height,
_In_ UINT MipLevels,
这是函数 3 4 5项形参 依次填图像的实际长宽 把MipLevels 设为 D3DX_FROM_FILE
纹理单元,就是将游戏程序中的纹理贴图反映到像素位置的运算单元,其实里面的结构可以细分:
1、纹理寻址单元:主要用于从显存或缓存中提取纹理像素的单元。
2、纹理程序处理单元:主要是解析在模型文件的要求下纹理的渲染顺序和三角形的渲染路径。
3、纹理拾取单元:将提取的纹理像素转换到应该显示的像素位置。
4、纹理解压缩:对于某些纹理压缩的贴图进行解压渲染。
这里面可能还包括凹凸贴图、分级贴图、动态纹理、多重纹理贴图等。
但是这只是初步的渲染,纹理单元还有很多工作没有做,这些都给流处理器和光栅单元做了:
1、光影校正:当纹理显示在光照、阴影的区域和某些特殊材质下,纹理像素需要根据这些区域进行重新矫正其像素值,这也包括T&L、光线追踪、HDR,可能还包括法线贴图。
2、像素过滤:最新的技术叫AF,就是对于纹理贴图的像素大小与渲染区域的像素大小不匹配,需要对像素值进行插值算法,以提升清晰度,这个对游戏的整体画质提升起到非常重要的作用。
3、采样过滤:也叫抗锯齿,对一些顶点组成的直线采用插值算法而消除其锯齿状的像素描绘方式,通常锯齿比较容易出现在Z轴较深的面上出现的Z轴较浅的异面直线。
4、水纹理:包括水面纹理和水底透射纹理的扭曲校正。
5、特殊效果:包括粒子效果、雾化、动态模糊等。
对于材质,有些材质有些是靠纹理贴图体现出来,有些则是靠光影校正将不同材质对应的反射光线采用不同的校正方法,后者也不是纹理单元处理的内容。
以上就是关于图像压缩的图像压缩原理全部的内容,包括:图像压缩的图像压缩原理、像素格式的像素格式、图形学自问自答4——图片和纹理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)