1.2 视觉和图像
视觉对象是眼睛直接感受到的图像,源自客观世界中物体的影像,一般称为“连续图像”。“连续”在这里指图像在空间上和亮度上都是密集取值的。连续图像也称为模拟图像,与此对应的是数字图像或离散图像。“离散”在这里指图像在空间上和亮度上都是间断采样的。利用计算机对数字图像进行加工、操作等的技术统称为数字图像技术。因为计算机所能操作的对象都是数字化的,所以数字图像技术也可直接称为图像技术,数字图像也可直接称为图像。
计算机视觉需要借助许多图像技术来实现。客观世界在空间上是3D的,但大部分成像装置都将3D世界投影到2D像平面上,所以得到的图像是2D的。2D计算机视觉基本上基于各种2D图像技术。
下面介绍如何定义、表示图像及其基本单元——像素,介绍图像存储与文件格式、图像显示和打印方法,并利用对打印所用的半调输出和抖动技术的介绍,进一步加深读者对图像空间和幅度(像素灰度)的理解。
1.2.1 图像和数字图像
图像可定义为用各种观测系统,以不同形式和手段观测客观世界而获得的、可以直接或间接作用于人眼并进而产生视知觉的实体。例如,人的视觉系统就是一个观测系统,通过它得到的图像就是客观物体在人眼中形成的影像。视觉信息均来源于图像,这里的图像是比较广义的,如照片、绘画、草图、动画、视频等。图像带有大量的信息,“百闻不如一见”“一图值千字”都说明了这个事实。
一幅图像一般可以用一个2D函数f(x, y)(在计算机中为一个2D数组)来表示,这里(x, y)表示2D空间XY中一个坐标点的位置,而f则代表图像在点(x, y)处的某种性质F的值。例如,常用的图像一般是灰度图,这时f表示灰度值,当用可见光成像时,灰度值对应客观物体被观察到的亮度。
图像的概念在近几年得到许多扩展。虽然一般谈到的图像常指2D图像,但3D图像、立体图像、彩色图像、多光谱图像及多视图像等也越来越多见;虽然一般谈到的图像常指静止的单幅图像,但图像序列、运动图像(如视频)等也得到了越来越广泛的应用;虽然图像常用对应辐射量的灰度点阵的形式显示,但图像灰度所代表的也可能是客观世界中的距离或深度值(深度图)、纹理变化(纹理图像)、物质吸收值(计算机断层扫描图像)等。近年来,随着科学的进步和技术的发展,成像已从可见光扩展到其他辐射波段,如在低频端,有红外线、微波、无线电波等;在高频端,有紫外光、X光、g射线、宇宙射线等,此时图像的亮度值或灰度值可以对应各种辐射量度。
从广义来说,图像可表示一种辐射能量的空间分布,这种分布可以是5个变量的矢量函数,记为T(x, y, z, t, λ),其中x、y、z是空间变量,t是时间变量,λ是频谱变量(波长),而对于同一组变量,其函数值T可以是矢量(彩色图像包括三个分量,多光谱图像可能包括成百上千个分量)。由于实际图像在时空、频谱和能量上都是有限的,所以T(x, y, z, t, λ)是一个5D有限函数。
顺便指出,在早期的英文书籍里,一般用“Picture”表示图像,随着数字技术的发展,现在都用“Image”代表各种离散化的数字图像,包括前述的各种广义形式的图像,Image与中文“图像”一词的含义更接近。
例1-1 图像示例
图1-4给出的是两幅典型的公开图像(Lena和Cameraman,本书许多处理和分析的例子以其为原始图像)。图1-4(a)中的坐标系常在屏幕显示中采用,它的原点O位于图像的左上角,纵轴标记图像的行,横轴标记图像的列。图1-4(b)中的坐标系常在图像计算中采用,它的原点位于图像的左下角,横轴为X轴,纵轴为Y轴。在两幅图中,f(x, y)既可代表整幅图像,也可表示在坐标(x, y)处图像的属性值f。
图1-4 数字图像及其显示示例
1.2.2 图像和像素表示
一幅图像可分解为许多单元,每个基本单元称为图像元素,简称为像素。对于2D图像,常用英文pixel(也有用pel)代表像素。图像分辨率与图像包含的像素个数成正比,包含的像素越多,图像的分辨率越高,能更好地看清图像的细节。
例1-2 像素示例
图像是由许多像素紧密排列而成的,或者说,一幅灰度图像就是亮度点的集合(只要将图像逐步放大就可看出)。例如,从图1-4(b)中选取一小块(32×32)并进行放大,如图1-5(a)所示,将一个如图1-5(b)所示的32×32的网格覆盖在上面,得到图1-5(c)。图1-5(c)中每个小格对应一个像素,格内灰度是一致的,这里每个小格就对应一个像素。
图1-5 像素示例
若要表示图像,就要表示其中的每个像素。有多种表示方法,最常用的表示方法是前文提到的将一幅图像用一个2D数组f(x, y)表示,其中(x, y)表示像素的位置,f则代表像素的属性值。在这种称为光栅表示的方法中,图像像素与数组元素是一一对应的。
一幅图像也可表示为一个2D的M×N的矩阵F(其中每个元素表示一个像素,M和N分别为图像的行数和列数):
矩阵表示法可以很容易地转化为更为简单的矢量表示法,对应式(1-1),有
其中,
矩阵表示法和矢量表示法是等价的,它们可以方便地互相转换。
1.2.3 图像存储与文件格式
图像在计算机中需要用大量的数据来表达,同时需要以特定的格式存储。
1. 图像存储器
图像存储需要大量的空间。在图像处理和分析系统中,大容量和高速的图像存储器是必不可少的。在计算机中,最小的图像数据量度单位是比特(bit)。存储器的存储量常用字节(B,1B=8bits)、千字节(KB)、兆(106)字节(MB)、吉(109)字节(GB)、太(1012)字节(TB)等表示。例如,存储一幅1024×1024的8bit图像需要容量至少为1MB的存储器。用于图像处理和分析的数字存储器可分为如下3类。
(1)在处理和分析过程中使用的快速存储器。
(2)可以比较快地重新调用数据的在线或联机存储器。
(3)不经常使用的数据库(档案库)存储器。
例1-3 存储器示例
计算机内存是一种具有快速存储功能的存储器。目前,微型计算机的内存通常为若干GB。有一种内存是特制的硬件卡,也称为“帧缓存”或“显存”,其可存储多幅图像并以视频速度(每秒25幅或30幅图像)读取,还允许对图像进行实时放大/缩小及垂直翻转和水平翻转等操作。目前常用的帧缓存容量可达几十GB。近年来得到广泛应用的闪存(FLASH)在工作原理和结构等方面与内存有相似之处,但闪存在断电后仍能保留存储的内容。
磁盘是比较通用的在线存储器,常用的Winchester磁盘一般可存储TB级的数据。近年来,磁光(Magneto Optical,MO)存储器也比较常用,它可在5¼英寸的光片上存储GB级的数据。在线存储器的一个特点是需要经常(随机地)读取数据,所以一般不采用磁带一类的顺序介质。针对更大的存储要求,还可以使用光盘塔,一个光盘塔可容纳几十个到几百个光盘,利用机械装置插入或从光盘驱动器中抽取光盘。
数据库存储器的特点是须具备非常大的容量,但对其上数据的读取不能太频繁,常将磁带和光盘作为数据库存储器。一条长为13英尺的磁带可存储GB级的数据,但磁带的寿命较短,在良好的环境中也只有7年。常用的一次写多次读(WORM)光盘可在12英寸的光盘上存储6GB的数据,在14英寸的光盘上存储10GB的数据。另外,WORM光盘在一般环境下可保存30年以上。在主要操作为读取的应用中,可将WORM光盘放在光盘塔中。一个存储量达到TB级的WORM光盘塔可存储上百万幅1024×1024的8bit图像。
2. 图像文件格式
图像数据在联机存储器和数据库存储器中一般以各种图像文件格式存储,除图像数据本身外,一般还需要包含对图像的描述信息,以便于对图像数据进行提取和使用。
图像文件格式有很多种,基本上可分为两种形式,一种是矢量形式,另一种是光栅形式。
(1)在矢量形式中,图像是用一系列线段或线段的组合体来表示的,线段的灰度(色度)可以是均匀的或变化的,在线段的组合体中,各部分也可使用不同的灰度。矢量文件类似于程序文件,里面有一系列命令和数据,执行这些命令就可根据数据画出图案。矢量形式主要用于人工绘制的图形数据文件。
(2)表示自然图像数据的文件主要使用光栅形式,该种形式与人对图像的理解一致(一幅图像是许多图像点的集合),比较适用于色彩、阴影或形状变化复杂的真实图像。它的主要缺点是缺少直接表示像素间相互关系的结构,并且限定了图像的分辨率。后者带来两个问题,一个是将图像放大到一定程度就会出现方块效应,另一个是如果将图像缩小再恢复到原尺寸,图像会变得模糊。
不同的系统平台和软件常使用不同的图像文件格式,下面简单介绍5种应用比较广泛的格式。
1)BMP格式
BMP格式是Windows环境中的一种标准图像格式,全称是Bitmap。BMP图像文件也称为“位图文件”,包括三部分:位图文件头(也称为表头)、位图信息(常称为调色板)、位图阵列(图像数据)。一个位图文件只能存放一幅图像。
位图文件头的长度固定为54字节,给出图像文件的类型、大小、打印格式和位图阵列的起始位置等信息。位图信息给出图像的长、宽、每个像素的位数(可以是1、4、8、24,分别对应单色、16色、256色和真彩色的情况)、压缩方法、目标设备的水平和垂直分辨率等信息。位图阵列给出原始图像每个像素的值(如对于真彩色图像,每3字节表示一个像素,分别是蓝、绿、红的值),它的存储格式有压缩(仅用于16色和256色图像)和非压缩两种。位图阵列数据以图像的左下角为起点进行排列。
2)GIF格式
GIF格式是一种公用的图像文件格式标准,它是8位文件格式(一个像素占一个字节),所以最多只能存储256色图像,不支持24位的真彩色图像。GIF文件中的图像数据均为压缩过的,采用的压缩算法是改进的LZW算法,所提供的压缩比通常在1:1到3:1之间,当图像中有随机噪声时,效果不太好。
GIF文件结构较复杂,一般包括7个数据单元:文件头、通用调色板、图像数据区及4个补充区(如果用户只利用GIF格式存储用户图像信息,则可不设置)。其中,文件头和图像数据区是不可缺少的单元。
一个GIF文件中可以存放多幅图像(这个特点对实现网页上的动画很有利),所以文件头中会包含适用于所有图像的全局数据和仅属于其后那幅图像的局部数据,当文件中只有一幅图像时,全局数据和局部数据一致。当存放多幅图像时,每幅图像集中成一个图像数据块,每个数据块的第一个字节是标识符,指示数据块的类型(可以是图像块、扩展块或文件结束符)。
3)JPEG格式
JPEG格式是针对静止灰度图像或彩色图像的一种国际压缩标准,尤其适用于拍摄的自然照片,所以在数字相机中得到了广泛使用。JPEG格式采用的是有损编码(也有采用无损编码的JPEG格式,但没有特点,很少使用),一般来说,其可节省的空间是相当大的。JPEG格式在内容和编码方式方面都比其他图像文件格式要复杂,但在使用时并不需要用到每个数据区的详细信息。
JPEG标准本身只定义了一个规范的编码数据流,并没有规定图像文件的格式。Cube Microsystems公司定义了一种JPEG文件交换格式(JFIF)。JFIF图像是一种使用灰度或Y、Cb、Cr分量(彩色)表示的JPEG图像,包含一个与JPEG兼容的文件头。一个JFIF文件通常包含单幅图像,图像可以是灰度的,其中的数据为单个分量;也可以是彩色的,其中的数据包括三个分量。
4)PNG格式
PNG格式是一种无损压缩的位图格式,使用由LZ77派生的无损数据压缩算法,一般应用于JAVA程序、S60程序或网页(主要原因是它压缩比高,生成的文件体积小)。PNG格式有8位、24位、32位三种形式,其中,8位PNG格式支持两种不同的透明形式(索引透明和Alpha透明),24位PNG格式不支持透明(仅包含3个颜色分量R、G、B),32位PNG格式在24位PNG的基础上增加了8位透明通道,即Alpha通道,因此可展现256级透明程度。此时可以指定每个像素的Alpha值,当Alpha值为0时,像素是完全透明的,而当Alpha值为255时,像素是完全不透明的。这样可使得彩色图像的边缘与任何背景平滑地融合,从而彻底消除锯齿边缘。这种功能是GIF格式和JPEG格式不具备的。
相比于JPEG格式,如果保存文本、线条或边缘清晰、含有大块相同颜色区域的图像,PNG格式的压缩效果要比JPEG格式好很多,并且不会出现JPEG格式在高对比度区域中出现的图像损伤。但是,JPEG格式采用了一种针对照片图像的特定编码方法,适用于图像对比度低、颜色过渡平滑、噪声较多且结构不规则的情况,所以如果此时用PNG格式代替JPEG格式,文件尺寸会增大很多,而且图像质量的提高有限。
5)TIFF格式
TIFF格式是一种独立于操作系统和文件系统的格式(如其在Windows环境中和Macintosh机上都可使用),非常便于在软件之间进行图像数据交换。TIFF图像文件包括文件头(表头)、文件目录(标识信息区)和文件目录项(图像数据区)。文件头只有一个,并且在文件前端,给出数据存放顺序、文件目录的字节偏移信息;文件目录给出文件目录项的个数信息,并有一组标识信息,给出文件目录项的地址;文件目录项是存放信息的基本单位,也称为“域”,域主要分为基本域、信息描述域、传真域、文献存储和检索域及其他建议不再使用的域。
TIFF格式的描述能力很强,可制订私人用的标识信息。TIFF格式支持任意大小的图像,文件可分5类:二值图像、灰度图像、调色板彩色图像、全彩色RGB图像和YCbCr图像。一个TIFF文件中可以存放多幅图像,也可存放多份调色板数据。
1.2.4 图像显示和打印方法
图像显示指将图像数据以图的形式(在一般情况下是亮度模式的空间排列,即在空间(x, y)处显示对应f的亮度)展示(这也是计算机图形学的重要内容)。对图像处理来说,处理的结果主要用于显示;对图像分析来说,分析结果可以借助计算机图形学技术转换为图像形式,从而直观地展示。图像显示对图像处理和分析系统来说是非常重要的。
例1-4 显示设备示例
可以显示图像的设备有许多种。常见的图像处理和分析系统所用的主要显示设备是电视显示器。输入的图像可以通过硬拷贝转换到幻灯片、照片或透明胶片上。
除了电视显示器,可以随机存取的阴极射线管(CRT)和各种打印设备也可用于图像的输出和显示。在CRT中,电子枪束的水平和垂直位置可由计算机控制。在每个偏转位置上,电子枪束的强度是用电压来调制的。每个点的电压都与该点所对应的灰度值成正比,如此一来,灰度图像就转化为光亮度空间变化的模式,这个模式被记录在CRT屏幕上以显示出来。
打印设备也可以看作一种图像显示设备,一般用于输出分辨率较低的图像。早期在纸上打印灰度图像的一种简便方法是利用标准行式打印机的重复打印能力输出图像上任一点的灰度值。近年来使用的各种热敏、喷墨和激光打印机等具有更强的能力,可以打印具有较高分辨率的图像。
1. 半调输出
图像的原始灰度通常有几十级、几百级甚至上千级,但有些图像输出设备的灰度只有两级,如激光打印机(打印,输出黑;或者不打印,输出白)。为了在这些设备上输出多级灰度图像并保持图像原有的灰度级数,常采用一种称为半调输出的技术。半调输出的原理是利用人眼的集成特性,在每个像素位置打印一个尺寸反比于该像素灰度的黑圆点,即在较亮的图像区域中打印的点较小,而在较暗的图像区域中打印的点较大(与例1-5所给方法的原理一致,但实现手段不同)。当点足够小、观察距离足够远时,人眼就不容易区分各小点,从而得到比较连续平滑的灰度图像。一般来说,报纸上图片的分辨率约为100DPI(每英寸100点),而书或杂志上图片的分辨率约为300DPI。
例1-5 半调输出方法
一种半调输出技术的具体实现方法:先将图像区域细分,取近邻单元进行结合,组成输出区域,这样每个输出区域包含若干个单元,只要使一些单元输出黑,而使其他单元输出白就可得到不同的灰度效果。一般来说,如果一个单元在某个灰度下的输出为黑,则让它在所有大于这个灰度下的输出仍为黑。例如,将一个区域分成2×2个单元,按照图1-6的方式,可以输出5种不同的灰度;将一个区域分成3×3个单元,按照图1-7的方式,可以输出10种不同的灰度。
图1-6 将一个区域分成2×2个单元(输出5种灰度)
图1-7 将一个区域分成3×3个单元(输出10种灰度)
依此类推,要输出256种灰度,则需要将一个区域分成16×16个单元。需要注意的是,这个方法通过降低图像的空间分辨率来提升图像的幅度分辨率,所以有可能导致图像采样过粗,进而影响图像的显示质量。
2. 抖动技术
半调输出通过降低图像的空间分辨率来提升图像的幅度分辨率,所以输出的灰度级数有一定限制。用较少的灰度级数显示图像可能产生虚假轮廓而导致图像质量下降。这时可以采用抖动技术,通过改变图像的幅度值来改善图像的显示质量。抖动的实现一般是对原始图像f(x, y)加一个随机的小噪声d(x, y),即将两者加起来进行显示,由于d(x, y)的值与f(x, y)没有任何有规律的联系,所以有助于消除因量化不足而产生的图像中出现虚假轮廓的问题(还可参见例2-11)。例如,设b为图像显示的比特数(一般b<5),则先从以下5个数中以均匀概率取得d(x,y)的值:-2(6-b)、-2(5-b)、0、2(5-b)、2(6-b),然后将这个相当于随机小噪声的d(x, y)的b个最高有效比特加到f(x, y)上,作为像素的值进行显示。
例1-6 抖动示例
图1-8给出一组抖动示例,图1-8(a)是一幅具有256个灰度级的原始图像;图1-8(b)是借助例1-5的半调技术,使用图1-7的方式得到的输出图像,由于现在只有10个灰度级,所以在脸部和肩部等灰度变换比较缓慢的区域,有比较明显的虚假轮廓现象(原来光滑的表面出现阶梯变化);图1-8(c)是利用抖动技术进行改善的结果,叠加的抖动值分别为-2、-1、0、1、2;图1-8(d)也是利用抖动技术进行改善的结果,但叠加的抖动值分别为-4、-2、0、2、4。
图1-8 抖动示例
由此可见,利用抖动技术可以消除一些由于灰度级数过少而导致的虚假轮廓,叠加的抖动值越大,效果越明显。但抖动值的叠加也给图像带来了噪声,抖动值越大,噪声影响也越大。