《Fundamentals of Computer Grahpics 4ed》虎书第四版翻译——第三章光栅图像


大多数的图形图像在 光栅显示器 上展示给用户。光栅显示器将图像作为矩形像素数组显示。一个通俗的例子是:一台平面电脑显示器或电视,它们具有小发光像素的矩形阵列,可以分别设置为不同的颜色以创建任何所需的图像。通过混合不同强度的红,绿和蓝光可获得不同的颜色。 大多数打印机(例如激光打印机和喷墨打印机)也是光栅设备。它们基于扫描:没有物理像素网格,但是通过在网格上的选定点处沉积墨水来顺序放置图像。

栅格在图像输入设备中也很普遍。 数码相机包含图像传感器,该图像传感器包括光敏像素的网格,每个像素都记录落在其上的光的颜色和强度。 台式扫描仪包含一个线性像素阵列,该像素阵列扫过要扫描的页面,每秒进行多次测量以生成像素网格。

由于栅格在设备中非常普遍,因此栅格图像是存储和处理图像的最常用方法。 光栅图像使用一个2D数组存储每个像素的像素值-通常是存储为三个数字的颜色(红色,绿色和蓝色)。 通过使用存储的图像中的每个像素来控制显示器的一个像素的颜色,就可以显示存储在存储器中的光栅图像。

但是我们并不总是希望以此方式显示图像。 我们可能想要更改图像的大小或方向,校正颜色,甚至显示粘贴在移动的三维表面上的图像。 即使在电视机中,显示器也很少具有与所显示图像相同数量的像素。 诸如此类的考虑打破了图像像素与显示像素之间的直接联系。最好将光栅图像视为是要显示图像的与设备无关的描述,而将显示设备视为逼近理想图像的一种方式。

除了使用像素阵列之外,还有其他描述图像的方法。矢量图像是通过存储形状的描述(由线条或曲线界定的颜色区域)来描述的,而没有引用任何特定的像素网格。 从本质上讲,这相当于存储显示图像的指令,而不是显示图像所需的像素。 矢量图像的主要优点是它们与分辨率无关,并且可以在非常高分辨率的设备上很好地显示。 相应的缺点是,在显示它们之前必须对其进行栅格化。 矢量图像通常用于文本,图表,机械制图,以及其他要求清晰度和精确度而无需摄影图像和复杂阴影的应用中。

在本章中,我们将讨论光栅图像和显示的基础知识,尤其要注意标准显示的非线性。 当我们在后面的章节中讨论计算图像时,必须牢记像素值与光强度的关系的细节。

3.1 光栅设备

在摘要讨论光栅图像之前,先了解一些使用这些图像的特定设备的基本操作是有启发性的。 可以将一些熟悉的栅格设备简单地分为几类:

  • 输出
    • 显示
      • 透射式:液晶显示器(LCD)
      • 发光:发光二极管(LED)显示屏
    • 硬拷贝
      • 二进制:喷墨打印机
      • 连续色调:热升华打印机
  • 输入
    • 2D阵列传感器:数码相机
    • 一维阵列传感器:平板扫描仪

3.1.1 显示器

当前的显示器,包括电视机和数字电影放映机以及用于计算机的显示器和放映机,几乎普遍基于固定的像素阵列。 它们可以分为发射式显示器透射式显示器,发射式显示器使用直接发射可控光量的像素;像素本身不发光,而是改变它们允许通过的光量。 透射式显示器需要一个光源来照亮它们:在直视式显示器中,这是阵列后面的背光; 在投影仪中,它是一盏发出光的灯,穿过阵列后会投射到屏幕上。 发光显示器是其自身的光源。

发光二极管(LED)显示器是发射型的例子。 每个像素由一个或多个LED组成,这些LED是半导体器件(基于无机或有机半导体),其发光强度取决于流过它们的电流(见图3.1)。
在这里插入图片描述
彩色显示器中的像素分为三个独立控制的子像素(一个红色,一个绿色和一个蓝色),每个子像素都有其自己的LED,该LED使用不同的材料制成,从而发出不同颜色的光(图3.2)。从远处观看显示器时,眼睛无法分辨各个子像素,感知到的颜色是红色,绿色和蓝色的混合。
在这里插入图片描述
液晶显示器(LCD)是透射型的例子。 液晶是一种分子结构使其能够旋转通过其的光的偏振的材料,并且旋转的程度可以通过施加的电压来调节。 LCD像素(图3.3)后面有一层偏振膜,以便被偏振光照射-假设它是水平偏振的。
在这里插入图片描述
像素前面的第二层偏振膜被定向为仅透射垂直偏振光。 如果设置所施加的电压,以使两者之间的液晶层不改变偏振态,则所有光都将被遮挡,并且像素处于“关闭”(最小强度)状态。 如果设置电压使液晶将偏振旋转90度,则所有从像素背面入射的光都会从正面逸出,像素完全“打开”——它具有最大强度。 中压会部分旋转偏振光,因此前偏振片会部分阻挡光,从而导致强度介于最小值和最大值之间(图3.4)。 像彩色LED显示器一样,彩色LCD在每个像素内都有红色,绿色和蓝色子像素,它们是三个独立的像素,上面有红色,绿色和蓝色滤色镜。
在这里插入图片描述
具有固定像素网格的任何类型的显示器(包括这些技术和其他技术)都具有由网格大小决定的从根本上固定的分辨率。对于显示器和图像,分辨率仅表示像素网格的尺寸:如果台式机显示器具有 分辨率为1920×1200像素,这意味着它有2,304,000像素按1920列和1200行排列。

为了填充整个屏幕,必须使用第9章的方法将不同分辨率的图像转换为1920×1200图像。

3.1.2 硬拷贝设备

与在显示器上瞬时显示图像相比,将图像永久记录在纸上的过程有很大的不同。 在打印过程中,颜料会散布在纸张或其他介质上,以便当光从纸张反射时会形成所需的图像。 打印机是像显示器一样的光栅设备,但是许多打印机只能打印二进制图像——在每个网格位置上都沉积或不沉积颜料,没有中间量。

喷墨打印机(图3.5)是通过扫描形成光栅图像的设备示例。 喷墨打印头包含带有液体的颜料,可以在电子控制下将其喷成很小的液滴。 喷头在纸张上移动,当墨滴通过应该接收墨水的网格位置时,墨滴就会散发出去; 在打算留为空白的区域中不会发出墨水。每次扫动后,纸张略微前进,然后放下网格的下一行。 通过使用多个打印头进行彩色打印,每个打印头用不同的颜料喷涂墨水,以便每个网格位置可以接收不同颜色的墨滴的任意组合。因为所有墨滴都是相同的,所以喷墨打印机会打印二进制图像:在每个网格点上都有墨滴或没有墨滴; 没有中间效果。
在这里插入图片描述
喷墨打印机没有像素的物理阵列。 分辨率取决于每次扫描后可以滴多少滴以及纸张前进多远。 许多喷墨打印机在打印头中有多个喷嘴,一次可以进行多次扫描,但是最终决定行间距的是纸张前进而不是喷嘴间距。

热染料转移过程是连续色调打印过程的一个示例,这意味着可以在每个像素处沉积不同数量的染料-它不像喷墨打印机那样全有或全无(图3.6)。将包含有色染料的供体色带压在纸张或染料接收器与包含线性加热元件阵列的打印头之间,加热元件线性阵列用于图像中的每一列像素。当纸和色带经过打印头时,加热元件会打开和关闭,以在需要染料的区域加热色带,从而使染料从色带扩散到纸张上。对几种染料颜色中的每一种都重复此过程。由于较高的温度导致更多的染料转移,因此可以控制沉积在每个网格位置的每种染料的量,从而可以产生连续范围的颜色。打印头中加热元件的数量在整个页面方向上建立了固定的分辨率,但是沿着页面的分辨率由加热和冷却的速度与纸张的速度相比来确定。
在这里插入图片描述
与显示器不同,打印机的分辨率是根据像素密度而不是像素总数来描述的。 因此,一种热染料转移打印机在其打印头上每英寸间隔300英寸,在整个页面上的分辨率为每英寸300像素(ppi)。如果选择页面上的分辨率相同,我们可以简单地说打印机的分辨率为300 ppi。将点以每英寸1200个网格点放置在网格上的喷墨打印机被描述为具有每英寸1200个点(dpi)的分辨率。因为喷墨打印机是二进制设备,所以出于至少以下两个原因,它需要更精细的网格。由于边缘是陡峭的黑白边界,因此需要非常高的分辨率,以防止出现阶梯刻痕或混叠现象(请参见第8.3节)。当打印连续色调图像时,需要高分辨率以通过打印称为半色调的变化密度的点图案来模拟中间色。

3.1.3 输入设备

栅格图像必须来自某个地方,并且任何未经某种算法计算的图像都必须由某些栅格输入设备(通常是照相机或扫描仪)进行测量。 即使在渲染3D场景的图像时,也经常将照片用作纹理贴图(请参见第11章)。 光栅输入设备必须对每个像素进行光测量,并且(像输出设备一样)它们通常基于传感器阵列。

数码相机是2D阵列输入设备的一个示例。 照相机中的图像传感器是具有光敏像素网格的半导体器件。 两种常见的阵列类型称为CCD(电荷耦合器件)和CMOS(互补金属-氧化物-半导体)图像传感器。 相机镜头将要拍摄的场景图像投射到传感器上,然后每个像素测量落在其上的光能,最终得到一个数字,进入输出图像(图3.7)。 彩色显示器使用红色,绿色和蓝色子像素的方式几乎相同,大多数彩色相机通过使用滤色器阵列或马赛克来工作,以使每个像素只能看到红色,绿色或蓝色的光,而无需使用图像处理软件在称为去马赛克的过程中填写缺失值(图3.8)。
在这里插入图片描述
在这里插入图片描述
其他相机使用三个单独的阵列或该阵列中的三个单独的层来测量每个像素处的独立红色,绿色和蓝色值,无需进一步处理即可生成可用的彩色图像。 摄像机的分辨率由阵列中固定的像素数确定,通常使用总像素数来引用:具有3000列和2000行的阵列的摄像机会产生分辨率为3000×2000的图像,具有600万像素,称为6百万像素(MP)相机。 重要的是要记住,mosiac传感器无法测量完整的彩色图像,因此,与使用马赛克传感器的相机相比,测量相同像素数量但具有独立的红色,绿色和蓝色测量值的相机会记录有关该图像的更多信息。

平板扫描仪还可以测量每个像素网格的红色,绿色和蓝色值,但是像热染料转印打印机一样,它使用一维阵列扫描整个扫描页面,每秒进行多次测量。 页面上的分辨率由阵列的大小确定,页面上的分辨率由测量频率与扫描头移动速度的比较确定。 彩色扫描仪具有3×nx阵列,其中nx是页面上的像素数,三行由红色,绿色和蓝色滤镜覆盖。 在测量三种颜色的时间之间有适当的延迟,这允许在每个网格点进行三种独立的颜色测量。 与连续色调打印机一样,扫描仪的分辨率以每英寸像素(ppi)描述。
在这里插入图片描述
有了有关图像的来源和去向的具体信息,我们现在将以图形算法中使用图像的方式更抽象地讨论图像。

3.2 图像,像素和形状

我们知道,光栅图像是一个很大的像素阵列,每个像素都存储有关其网格点处图像颜色的信息。 我们已经了解了各种输出设备如何处理发送给它们的图像,以及输入设备如何从物理世界中由光形成的图像中提取图像。 但是对于计算机中的计算,我们需要一个方便的抽象方法,该抽象方法独立于任何设备的详细信息,可用于推断如何产生或解释存储在图像中的值。

当我们测量或复制图像时,它们采取光能的二维分布形式:从显示器发出的光随显示器表面位置的变化而变化; 相机图像传感器上的光线随传感器平面位置的变化而变化; 反射率或反射光的比例(相对于吸收光),取决于在一张纸上的位置。 因此,在物理世界中,图像是在二维区域(几乎总是矩形)上定义的函数。 这样我们就可以将图像抽象为一个函数:

I ( x , y ) : R − > V I(x,y):R->V I(x,y):R>V

其中 R ⊂ R 2 R⊂R^{2} RR2 是一个矩形区域,V是一组可能的像素值。 最简单的情况是理想化的灰度图像,其中矩形中的每个点都只有一个亮度(没有颜色),我们可以说 V = R + V = R^{+} V=R+(非负实数)。 理想化的彩色图像在每个像素处具有红色,绿色和蓝色值,其 V = ( R + ) 3 V =(R^{+})^{3} V=(R+)3。 在下一节中,我们将讨论V的其他可能性。

栅格图像与连续图像的抽象概念如何相关? 看具体的例子,来自照相机或扫描仪的像素是在像素周围的一些小区域上图像平均颜色的度量。 设计具有红色,绿色和蓝色子像素的显示像素,以使像素表面上图像的平均颜色由光栅图像中的相应像素值控制。 在这两种情况下,像素值都是图像颜色的局部平均值,它被称为图像的点样本。 换句话说,当我们在一个像素中找到值x时,表示“该网格点附近的图像的值为x”。 在第9章中将进一步探讨图像作为函数的表示形式的思想。
在这里插入图片描述
一个普通但重要的问题是像素在2D空间中的位置。 这只是一个约定,但是建立一致的约定很重要! 在这本书中,光栅图像是由表示像素的列 ( i ) (i) (i) 和行 ( j ) (j) (j) 的对 ( i , j ) (i,j) (i,j) 索引的,从左下角开始计数。 如果图像具有 n x n_{x} nx 列和 n y n_{y} ny 行像素,则左下像素为 ( 0 , 0 ) (0,0) (0,0) ,右上角为像素 ( n x − 1 , n y − 1 ) (n_{x}-1,n_{y}-1) (nx1,ny1) 。 我们需要2D实际屏幕坐标来指定像素位置。 我们将像素的采样点放置在整数坐标处,如图3.10的4×3屏幕所示。

图像的矩形域的宽度为 n x n_{x} nx,高度为 n y n_{y} ny,并且以该网格为中心,这意味着它在每侧的最后一个采样点之外延伸了半个像素。 因此 n x × n y n_{x}×n_{y} nx×ny 图像的矩形域是:

R = [ − 0.5 , n x − 0.5 ] ∗ [ − 0.5 , n y − 0.5 ] R=[-0.5,n_{x}-0.5]*[-0.5,n_{y}-0.5] R=[0.5,nx0.5][0.5,ny0.5]

同样,这些坐标只是约定俗成,但是在以后实现相机和查看变换时会证明它们很重要。

3.2.1 像素值

到目前为止,我们已经用实数描述了像素的值,它们代表了图像中某个点的强度(可能分别针对红色,绿色和蓝色)。 这表明图像应该是浮点数数组,每个像素存储一个(对于灰度或黑白图像)或三个(对于RGB彩色图像)32位浮点数。 当需要精确度和取值范围时,有时会使用此格式,但是图像具有很多像素,并且存储和传输图像的内存和带宽总是很匮乏。 仅一张10百万像素的照片将以这种格式消耗约115MB的RAM。

对于直接显示的图像,所需的范围较小。 尽管原则上可能的光强度范围不受限制,但任何给定的设备都具有确定的最大强度,因此,在许多情况下,像素具有有限的范围就足够了,为简单起见通常将其设为[0,1]。 例如,在8位图像中,可能的值为0、1 / 255、2 / 255,…。 。 。 ,254 / 255、1。以浮点数存储的图像(允许有较大的值范围)通常被称为高动态范围(HDR)图像,以将它们与固定范围或低动态范围(LDR)图像区分开来。 用整数存储。 有关高动态范围图像的技术和应用的深入讨论,请参见第21章。

以下是一些典型应用的像素格式:

  • 1bit灰度级——文本和其他不需要中间灰度的图像(需要高分辨率);
  • 8bit RGB固定范围颜色(每个像素总共24位)——网络和电子邮件应用程序,消费者照片;
  • 8bit 或10bit 固定范围RGB(24–30位/像素)——计算机显示器的数字接口;
  • 12至14bit固定范围的RGB(36-42位/像素)——用于专业摄影的原始相机图像;
  • 16bit固定范围的RGB(48bits/像素)——专业摄影和打印; 定距图像图像处理的中间格式;
  • 16bit固定范围灰度(16位/像素)——放射线和医学成像;
  • 16bit“半精度”浮点RGB——HDR图像;实时渲染的中间格式;
  • 32bit浮点RGB——用于HDR图像的软件渲染和处理的通用中间格式。

减少用于存储每个像素的位数会导致图像中两种不同类型的伪像或人为引入的瑕疵。 首先,使用固定范围值编码的图像会对比设置的最大值明亮值大的像素进行裁剪。 例如,晴天的照片可能包含比白色表面明亮得多的反射; 当将图像转换为固定范围显示时,这些图像将被裁剪(即使它们是由相机测量的)。 其次,当需要将像素值四舍五入到最接近的可表示值时,以有限的精度对图像进行编码会导致量化伪像或条带,从而在强度或颜色上引起可见的跳跃。 在动画和视频中,条带特别隐蔽,其中条带在静止图像中可能不会令人反感,但在它们来回移动时变得非常明显。

3.2.2 显示器强度和伽马

所有现代显示器都将数字输入输入为像素的“值”,并将其转换为强度级别。 实际的监视器处于关闭状态时,它们会具有一些非零强度,因为屏幕会反射一些光线。 就我们的目的而言,我们可以将其视为“黑色”,而将显示器完全打开为“白色”。 我们假设像素颜色的数字描述范围是从零到一。 黑色为零,白色为1,介于黑色和白色之间的灰色中间值为0.5。 请注意,此处的“中途”是指来自像素的物理光量,而不是外观。 人类对强度的感知是非线性的,因此不会成为当前讨论的一部分。 有关更多信息,请参见第20章。

为了在监视器上产生正确的图像,必须理解两个关键问题。 首先是监视器相对于输入是非线性的。 例如,如果将监视器0、0.5和1.0用作三个像素的输入,则显示的强度可能是0、0.25和1.0(关闭,四分之一完全打开和完全打开)。 作为这种非线性的近似特征,监视器通常以γ(“伽马”)值作为特征。 该值是公式中的自由度:

d i s p l a y e d i n t e n s i t y = ( m a x i m u m i n t e n s i t y ) a γ displayed intensity = (maximum intensity)a^{γ} displayedintensity=(maximumintensity)aγ

其中a是介于0和1之间的输入像素值。 例如,如果监视器的伽玛值为2.0,并且我们输入a = 0.5的值,则显示的强度将是最大可能强度的四分之一,因为0.52 = 0.25。 请注意,与γ的值无关,a = 0映射到零强度,而a = 1映射到最大强度。 使用γ描述显示器的非线性只是一个近似值; 我们在估算设备的γ时并不需要很高的精度。 衡量非线性的一种不错的可视方法是找到a的值在黑白之间的中间强度。 这将是:

0.5 = a γ 0.5=a^{γ} 0.5=aγ

如果我们找到a,我们可以通过取两边的对数来推论γ:

γ = l n 0.5 l n a γ=\frac{ln0.5}{lna} γ=lnaln0.5

我们可以通过一种标准技术找到它,我们在输入像素为a的情况下,在灰色像素的正方形旁边显示一个黑白像素的棋盘图案(图3.11),然后要求用户调整a(例如,使用滑块) 直到两侧的平均亮度匹配。 当您从远处观看此图像时(如果您是近视则不戴眼镜),当a产生介于黑白之间的强度时,图像的两侧将看起来相同。 这是因为模糊的棋盘混合了偶数个白色和黑色像素,因此总体效果是介于白色和黑色之间的均匀颜色。
在这里插入图片描述
知道γ后,我们就可以对输入进行伽马校正,以便显示a = 0.5的值,其强度介于黑白之间。 这是通过转换完成的:

a ′ = a 1 γ a'=a^{\frac{1}{γ}} a=aγ1

将这个公式代入公式(3.1),我们得到:

d i s p l a y e d i n t e n s i t y = ( a ′ ) γ = ( a 1 γ ) γ ( m a x i m u m i n t e n s i t y ) = a ( m a x i m u m i n t e n s i t y ) displayed intensity = (a')^{γ} = (a^{\frac{1}{γ}})^{γ}(maximum intensity)= a(maximum intensity) displayedintensity=(a)γ=(aγ1)γ(maximumintensity)=a(maximumintensity)

实际显示的另一个重要特征是它们采用量化的输入值。 因此,尽管我们可以在浮点范围[0,1]中操作强度,但是监视器的详细输入是固定大小的整数。 该整数的最常见范围是0–255,可以保存在8位存储空间中。 这意味着a的可能值不是[0,1]中的任何数字,而是:

a 可 能 值 = { 0 255 , 1 255 , 2 255 , . . . , 254 255 , 255 255 } a可能值 = \{\frac{0}{255} , \frac{1}{255} , \frac{2}{255}, . . . , \frac{254}{255}, \frac{255}{255}\} a={2550,2551,2552,...,255254,255255}

这意味着可能显示的强度值约为:

{ M ( 0 255 ) γ , M ( 1 255 ) γ , M ( 2 255 ) γ , . . . , M ( 254 255 ) γ , M ( 255 255 ) γ } \{M(\frac{0}{255})^{γ}, M(\frac{1}{255})^{γ}, M(\frac{2}{255})^{γ}, ..., M(\frac{254}{255})^{γ}, M(\frac{255}{255})^{γ}\} {M(2550)γ,M(2551)γ,M(2552)γ,...,M(255254)γ,M(255255)γ}

其中M是最大强度。 在需要控制精确强度的应用中,我们将必须实际测量256种可能的强度,并且这些强度在屏幕上的不同点可能不同,尤其是对于CRT。 它们也可能随视角而变化。 幸运的是,很少有应用需要如此精确的校准。

3.3 RGB颜色

大多数计算机图形图像都是根据红绿蓝(RGB)颜色定义的。 RGB颜色是一个简单的空间,可以直接转换成大多数计算机屏幕的控制。 在本节中,将从用户的角度讨论RGB颜色,并且以操作便利为目标。 在第19章中将对颜色进行更全面的讨论,但是RGB颜色空间的机制将使我们能够编写大多数图形程序。 RGB颜色空间的基本思想是通过混合三种原色灯来显示颜色:一种红色,一种绿色和一种蓝色。 灯光以加法方式混合。

在RGB加法混色中,我们有(图3.12):

red + green = yellow,
green + blue = cyan,
blue + red = magenta,
red + green + blue = white

颜色“青色”是蓝绿色,颜色“品红色”是紫色。
在这里插入图片描述
如果允许我们将原色光从完全关闭(由像素值0表示)调到完全打开(由1表示),则可以创建所有可以在RGB监视器上显示的颜色。 红色,绿色和蓝色像素值会创建一个具有红色,绿色和蓝色轴的三维RGB颜色立方体。 轴的允许坐标范围为零到一。 颜色立方体如图3.13所示。

立方体角的颜色是:

black = (0, 0, 0),
red = (1, 0, 0),
green = (0, 1, 0),
blue = (0, 0, 1),
yellow = (1, 1, 0),
magenta = (1, 0, 1),
cyan = (0, 1, 1),
white = (1, 1, 1).
在这里插入图片描述
实际RGB水平通常以量化形式给出,就像3.2.2节中讨论的灰度一样。 每个组件都用整数指定。 这些整数最常见的大小是单字节,因此三个RGB分量中的每个都是0到255之间的整数。这三个整数一起占用三个字节,即24bit。 因此,“ 24位颜色”的系统对三种原色中的每一种都有256种可能的色阶。 第3.2.2节中讨论的伽玛校正问题也分别适用于每个RGB组件。

3.4 Alpha合成

通常,我们只想部分覆盖像素的内容。 一个常见的例子是在合成中,我们有一个背景,想在其上插入一个前景图像。 对于前景中的不透明像素,我们只替换背景像素。 对于完全透明的前景像素,我们不会更改背景像素。 对于部分透明的像素,必须格外小心。 当前景对象具有部分透明区域(例如玻璃)时,可能会出现部分透明像素。 但是,最常见的情况是必须混合前景和背景,这是当前景对象仅部分覆盖像素时,要么在前景对象的边缘,要么在远处树的叶子之间有子像素孔时 。

将前景对象混合到背景对象上所需的最重要的信息是像素覆盖率,它可以说明前景层覆盖的像素比例。 我们称这个分数为α。 如果要在背景色cb上合成前景色cf,并且前景所覆盖的像素比例为α,则可以使用以下公式:

c = α c f + ( 1 − α ) c b c=αc_{f}+(1-α)c_{b} c=αcf+(1α)cb

对于不透明的前景层,其解释是前景对象覆盖了像素矩形内的区域α,而背景对象覆盖了剩余的区域(1-α)。 对于透明层(想像在玻璃或描图纸上绘制的图像,使用半透明涂料),其解释是前景层阻挡了来自背景的光的一部分(1-α)并贡献了一部分α 自己的颜色来替换被删除的内容。 图3.14给出了使用公式(3.2)的示例。

图像中所有像素的α值可以存储在单独的灰度图像中,该图像随后称为alpha蒙版或透明蒙版。 信息可以作为第四通道存储在RGB图像中,在这种情况下,它称为alpha通道,而该图像可以称为RGBA图像。 对于8位图像,每个像素占用32位,这在许多计算机体系结构中都是大小合适的块。

尽管通常使用公式(3.2),但在许多情况下,α的使用方式有所不同(Porter&Duff,1984)。
在这里插入图片描述

3.4.1 图像存储

大多数RGB图像格式对红色,绿色和蓝色通道均使用八位。 对于单个百万像素的图像,这将导致大约3MB的原始信息。 为了减少存储需求,大多数图像格式都允许某种压缩方式。 在较高水平上,这种压缩是无损的或有损的。 在无损压缩中不会丢弃任何信息,而在有损系统中某些信息将无法恢复。 流行的图像存储格式包括:

  • jpeg:这种有损格式会根据人类视觉系统中的阈值压缩图像块。 此格式适用于自然图像。
  • tiff:尽管存在许多其他选项,但该格式最常用于保存二进制图像或无损压缩的8位或16位RGB。
  • ppm:尽管有很多选择,这种非常简单的无损、未压缩格式最常用于8位RGB图像。
  • png:这是一组无损格式,带有一组良好的开源管理工具。

由于压缩和变化,可能会涉及为图像编写输入/输出例程。 幸运的是,通常可以依靠库例程来读取和写入标准文件格式。 对于简单性高于效率的简单应用,一个简单的选择是使用原始ppm文件,通常可以通过将存储在内存中的图像的数组转储到文件中,并添加适当的格式文件头。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页