一、图像数据的存储、传送和处理
图像数据可以存放在外存储器、显示存储器或计算机内存中等3中介质中,不同存储介质的用途不同。图像存入显示存储器是为了显示,显示的图像智能在开机状态下观看,关机后即消失的称为软拷贝。为了便于图像刷新时快速存取,显示存储器中的数据不能压缩。因此,显示存储器中的数据是“原质原味”、真实的。大部分图像处理算法的处理对象就是这样的一组数据,对这样的数据进行处理的程序通常与编程环境无关。图像数据以文件形式存放在外存储器中作为永久性保存,为了节约存储空间,有时图像数据需要经过压缩后再存放,压缩的图像数据使用时需解压缩。图像数据需存入计算机内存进行处理,数据只能在内存中处理时才能够做修改。图像数据还可以通过计算机网络进行传输。下面列出图像传送的几种类型:
1. 外存与显示存储器之间的传送
不加压缩和不需处理的图像可以再外存和显示存储器之间直接传送,这种传输速度最快。
2. 外存与显示存储器通过内存进行传送
压缩过的和需要处理的图像数据不能再外存和显示存储器之间直接传送,必须通过内存才能传送。
3. 内存与显示存储器之间的传送
图像处理过程中数据经常在内存与显示存储器之间传送。处理程序从显示存储器中读取原始数据,又将处理结果送回显示存储器以供显示。
4. 外存和内存之间的传送
外存和内存之间的传送较少,主要用于数据处理,如图像文件的格式转换等。
前两种传送用于图像的显示和显示图像的存储,常用的第二种传送方式。后两者传送用于图像处理,常用的是第3种传送方式。
5. 计算机之间的传送
图像数据还可以在计算机之间通过网络或其他通信线路进行传送,为了节省费用,传送的数据通常是经过压缩的。
二、像素数据的存储结构
通常,像素数据在显示存储器和外存储器中都用一维结构定位。因此,没有经过要锁的图像数据在外存储器和显示存储器中存储方式相似,也以扫描循序排列,像素数据在外存中存储位置的计算公式与在显示存储器中的计算公式相同。大多数情况下,不经压缩图像的每行字节数计算公式为
每行字节数=每像素字节数 * 每行像素数
图像数据在内存中,可用一维数组,也可用二维数组表示,数据类型可为单字节数、短整数(两字节)或浮点数等,视具体需要而定。图像处理时也经常存取图像数据的一个矩形窗口,某一图像窗口的像素数据存入一维数组时,其寻址方式也与显示存储器的寻址方式相同,计算时原来的行宽用用窗口宽度代替即可。为了结构上的一致性和便于成行的传送数据,处理时建议采用一维单字节数组。
若采用二维数组,数组的两个维应分别对应于屏幕的行和列。使用时应特别注意他们的顺序,定义时应保证二维数组中像素数据在内存中的存储顺序与显示存储器中的存储顺序一致。在C语言程序和PASCAL语言程序中分别为C[y][x]、P[y][x]。其中x为列号,y为行号。
数组定义建立的数组其元素在内存中是连续存放的,故数组不能开的很大。在DOS环境下,大幅面图像一般采用动态内存申请建立的二维数组,它在同一行内是连续存放的,但相邻两行不一定连续。在Windows环境下可以申请较大的内存空间,没有上述限制。