Alvy Ray Smith
July 17, 1995
小方块模型
小方块模型假装将一个像素(图片元素)表示为正方形。因此像素(i, j)被假定为对应于
以正方形的面积
有了这个简单的定义,我已经进入了争议的领域——正如我将试图展示的那样,这是一个被误导的(或至少是不相关的)争议。通常存在关于像素“中心”是位于整数还是半整数的争论。 **“半整数”**将有像素 $(i, j)$ 对应平面。
该模型有时隐藏在以下术语中提示这个备忘录的案例,实际上:图像分辨率无关坐标系是, W 和 H 是图像的宽和高。分辨率相关坐标系将像素的边缘放在整数上,它们的中心在边缘上加一半,左上角是$(0., 0.)$ ,右上角是$(W., 0.)$ ,左下角在 $(0., H)$ 上。看到小方块了吗?通过这种公式,它们将具有边缘和中心。
究竟像素是什么?
****像素是点样本。像素只存在于那个点上。对于彩色图片来说,一个像素也许包含着3个样本,每个样本都是在采样点对一种主元色的采样。不过我们依然可以认为这是对颜色的点采样。但是我们不能认为像素是个方块——或者任何其它不是点的东西。**对像素造成影响的范围(译者注:在每个采样点,滤波器的影响范围,也就是后面说的足迹)**可以被建模为一个方块,但也绝不是像素本身。
一副图像是二维的点样本(像素)的数组。神奇的采样理论告诉我们,我们可以用合适的重建滤波器(pixel渲染算法,如最近邻插值、双线性插值、双三次插值),将离散的实体(pixel)重建为连续的(图像)。
图1描述了一副图像是如何通过重建滤波器重建为连续的实体。在这里使用的滤波器,可以是截断的高斯滤波器。为了简化这幅图,我给出只有滤波器的“足迹”以及被重建的图像——图1(d)。“足迹”是指滤波器非0的部分。通常,画出这些足迹的最小外接矩形是很方便的。他们要比足迹好画的多——图1(d)。我已经在图1中画出了最小外接矩形(点线矩形)。
图2是同样的图像,但是用了一个更好的重建滤波器,例如,一个cubic filter或是一个正弦窗函数,亦或是不常见的一种滤波器。绝大多数高质量的成像都采用这种类型的滤波器。重要的是这些图形描绘出了有效的图形计算。这些滤波器的“足迹”没有一个是矩形的。在这些情形中,就算是近似,像素也和小方块不沾边。如果一定要给像素套上一个形状(我并不是说像素应该有个形状),那么所用的重建滤波器的“足迹”的形状应该是最为自然的选择。就如这两个例子所示,通常滤波器(的足迹)会有大部分的重叠。
之前给出的坐标系统的定义,仅仅只适用于最低质量的图形计算。给定一副图像,如图2(a)所示,并给定一个滤波器,如图2(b),那么我就可以准确的计算出最小外接矩形,并将其映射到之前定义的,被正规化了的矩形上。然后像素(记住是点样本)位置可以回溯到映射之前。他们会落在半个整数上吗?在以上三种有效的情形之中,只有图3(质量最差)中的样本落在半个整数上。重建后图像的左边界会落在最左像素往左0.5的位置上么?同样的,只有最糟糕的图3会。
到目前为止,唯一固定的东西就是样本。你不觉得将它们映射到整数位置上是很简单方便的么?然后边的位置就取决于所选用的滤波器。我相信,如果你将小方块模型赶出你的脑子,你甚至不会想起将样本放在半个整数这样一个只适合于盒式滤波器的奇怪位置上。我最常用的cubic filter的足迹的最小外接矩形如图2(b)所示。半个整数的位置对这个滤波器来说就是非常奇怪。当然我们可以这么做,但是何必呢?
我承认半个整数位置(译者注:也就是将最左上角的像素映射到(0.5,0)这个位置上,其它像素类推)对“小方块模型信者”是有吸引力的,因为重建后图像的最小点(左上角)会落在(0,0)位置上。但是请注意,这仅仅发生在,没错,盒式滤波器身上。而对于我喜爱的滤波器来说(cubic filter),最小点会落在(-1.5,-1.5)上。它有比(-2.,-2.)更方便更漂亮么?没有。
为什么小方块模型如此根深蒂固?
我认为主要有两方面的原因:
基于几何的计算机图形学使用的是这种模型
对计算机显示器进行放大能够看到它
基于几何的计算机图形学在过去20年中,解决了一些非常困难的问题。这都是基于这样一个假设:世界可以被分割成许多小方块。渲染是将抽象的几何体转化为可以被显示在电脑屏幕上或是写入电影影像中的可视像素的过程。现代计算机图形学模型可以在一副图像中包含上百万个多边形。如何将这上百万个的几何体转化为待显示的像素的数列?答案是:通过假设可以将矩形的视口(viewport)规则的分割为许多小方块,一个方块对应一个像素,来将问题简化。在这些小方块上解决问题,并将结果平均为一个颜色采样。这正是盒式滤波,尽管这是非常低级的滤波但它确实起作用。如果没有这个简化的假设,计算机图形学也许发展不到今天。但是不能因此就认为像素就是应该如此定义。我经常遇见一些极富天才并且经验丰富的计算机图形学从业人员也认为像素就是小方块。这并不是说要他们不再使用小方块模型,而是希望他们能够注意这其中的简化,并理解另一半做计算机成像的人——那些完全不涉及几何的人——会避免去使用这种过度简化模型的原因。
当我们在最常用的软件中放大一副图像或是放大一部分时,每个像素看起来就是个小方块。放大的倍数越大,方块也变得越大。因为我很明显是在放大一个像素,所以像素一定是个小方块,没错吧?不,这是个误区。在你扩大图像时发生的事如下:每个点样本被重复了MxM次(M是放大倍数)。所以当你看着MxM个像素,并且它们颜色相同时,你看着的就是一个单色的方块!它并不是像素的准确图像。它是一群像素,接近于你用盒式滤波器滤波后所得到的重构图像。真正的放大操作需要一个重采样的过程,现今的图形硬件还没有办法很好的支持它的实时操作(译者注:也就是根据放大后需要的像素(样本)数,对重构得到的连续图像信号源重新进行采样。现在已经完全不是问题了)。所以请丢弃既有的观念。你真正看到的只是MxM个点样本,并不是被放大渲染出来的单个点样本。
扫描仪如何将图片数字化?
为了确保我消除了无处不在的小方块的概念,让我们看一下扫描过程。我想确保没有人认为扫描仪可以使用小方块,因此可以使用该模型。
扫描仪的工作原理是这样的:光源照亮一张包含彩色图片的纸。从纸张反射的光被颜色敏感设备收集和测量。纸上的图片是不是被分割成小方块,每个小方块都被测量并转换成一个像素?不。
事实上,这在物理上很难做到。取而代之的是照明光源具有形状或接收设备具有aperture使入射光具有形状或形状+孔径,并且设备集成在该形状上。形状永远不是正方形。它不一定准确,但会给您正确的味道,将形状视为高斯。一般来说,重叠的形状被平均以获得相邻的像素样本。所以扫描不支持小方块模型。
打印机如何打印数字图像?
同样,让我们看打印过程,以确定它是否支持小方块模型。
这是一个非常庞大和复杂的主题,因为将图像打印到介质有许多不同的方法。
首先考虑打印到胶片。在任何使用飞行光点a flying spot of light曝光胶片的过程中,曝光光束都有一个形状——把它想象成高斯。在这个过程中没有小方块。考虑在纸上进行半色调half-tone印刷。
这里的概念是将具有许多值的像素转换为纸上的一个不透明墨水点,使得该点相对于该点占据的一小块纸的面积是像素强度与最大可能强度的比值。(灰度值?)
听起来像小方块模型,不是吗?
但是对于彩色印刷,不同的原色以一定的角度相互印刷,这样它们就可以相互“透视”。因此,虽然每次分色中都有小方块,但最终的结果却没有。有一个新的在每个小方块内使用随机图案的纸上墨水印刷技术。因此,这些分隔不必为了“显示”而相互旋转。在这种情况下,小方块模型是一个不错的模型。现在有升华染料打印机在纸上用墨水打印“连续色调”图像。
我相信这些使用透明染料的小方块来实现连续色调。
在这种情况下,他们可能会使用小方块模型。这里的重点是,小方块的使用是印刷技术决定的,而不是成像图像模型中固有的东西。事实上,被成像的图像在所有情况下都只是一个点样本数组。
图像如何在监视器上显示?
许多人都知道,彩色显示器通常具有小三元组(RGB?),在正常观看距离下这些点会导致对颜色的感知。
这通常是正确的,除了使用小矩形条而不是三元点的索尼特丽珑Trinitrons(RGB排列方式?)。
在这两种情况下,显示屏上都没有小方块。
我将为此讨论假设三元组triads。然而,它也适用于 Trinitron 模式。虽然我们在讨论它,但我还想消除任何关于三元组是像素的概念。
三元组和驱动它们的像素之间没有固定的映射。理解这一点的最简单方法是考虑您自己的显卡。大多数现代卡支持各种不同的颜色分辨率,例如 640x480、800x600、1024x768 等。显示屏上的三元组数量不会随着驱动它们的像素数量的变化而变化。
现在回到屏幕上的像素显示。大致情况如下。对于每种原色,像素的值被转换为电压电平。这个阶梯电压通过电子器件,它会使电平阶梯的边缘变圆。整形电压调制电子束,该电子束以光栅方式在显示器表面上偏转。该光束具有形状——再次将其视为高斯光束(尽管它会在显示器边缘高度失真)。成形的光束穿过一个荫罩,确保只有红色枪会照亮红色荧光粉。然后荧光粉被激发并发出光模式。然后你的眼睛将一组三元组的光模式整合成一种颜色。
这是一个复杂的过程,我只是粗略地介绍。但我认为很明显,在这个过程的任何步骤中都没有涉及到小方块。
在成像中,通常有重叠的形状用作自然重建过滤器。另一个暗示小方形模型的显示问题是具有“非方形像素”的显示器的概念。
尽管现在它变得不那么普遍了,但使用 512x480 图像存储器驱动的视频显示器过去是相当普遍的。这意味着显示器 512 个样本一行,共有 480 行。如果调整正确,显示器具有 4:3 的纵横比。
因此,这种情况下的像素间距比 (PSR, pixel spacing ratio) 为 1.25 = (4/3)/512:1/480 =(4/3)*(480/512)。???所以这种情况的正确术语是显示器具有“非方形像素间距比”,而不是它具有“非方形像素”。大多数现代计算机显示器,如果正确调整,具有方形 PSR,即 PSR = 1。因此,对于小方块模型,我们没有来自扫描或显示过程的贡献。我们有一两个支持小方形模型的特定打印技术的案例,但它们不是一般的打印案例。总之,用于图像输入和输出的过程不是小方块模型的来源。