常从最顶端1行像素开始,紧跟着的是第2行、第3行,等等。
有些位图产生于图形操作系统设计的绘制程序,它们都是由某个操作者利用这些程序“手工绘制”出来的,还有一些位图是由计算机代码通过某种算法产生的。如今很多现实中的场景都利用位图来表示(比如数码照片),要把现实世界的图像输入到计算机中,可以借助一些不同的硬件,这类设备一般统称为电荷耦合器(charge-coupled device,CCD),它是一种在光照下会起电的半导体器件。每个像素都需要一个CCD单元来进行采样。
这些设备中最原始的可以算是扫描仪(scanner)了,其原理和影印机类似,都是利用一行CCD扫过需要复印的图像的表面,比如照片。由于光感度不同,不同区域CCD累积的电荷数也不同。扫描仪的配套软件把图像转换成位图存放在文件中。
视频摄像机利用二维CCD单元阵列捕捉图像。通常被捕捉到的图像存放在录像磁带上。但其实视频输出可以直接交给视频帧采集器(videoframegrabber)去处理,它的工作原理是把模拟信号转换成像素值阵列。帧采集器可以收集通用的视频源,如录像机(Video Cassette Recorder,VCR)或激光影碟机(Laser Disc Player),甚至可以用于有线电视机机顶盒。
近几年,数码相机的价格已逐渐降低到了家庭用户可以承担的水平,它们从外观上来看和一般相机几乎一样。但数码相机并不使用胶片,而是使用CCD阵列来捕捉图像并直接将其转移到相机的存储器中,之后在适当的时候转储至计算机中。
图形操作系统通常可以将位图文件以某种格式进行存储。Macintosh 系统采用Paint格式,之所以叫这个名字是参考了创建这种格式的MacPaint程序(Macintosh的PICT格式同时支持位图和矢量图形,而且是它们的首选格式)。Windows里的默认的格式是BMP,位图文件通常以它作为扩展名。
位图文件可能很大,如果有方法可以让它们变小一些那就再好不过了。这种需求催生了计算机科学中的数据压缩(DataCompression)这一全新领域。
假设我们正在处理一幅每个像素占3位的图像,这种图像在本章前面曾讲过。这张图片上出现的画面是一片天空、一栋房子和一块草坪。因此,图片中可能有大片的蓝色和绿色。很可能位图的最上面一行出现了72个蓝色像素。如果有一种方法可以表示蓝色像素连续且重复了72次,那么通过这种方法表示的位图文件将会比原先的小很多。这样的压缩方法称为游程长度编码(Run-Length Encoding),即 RLE。
25 图形化革命
411