第4章
图像帧存储体
4.1 图像帧存储体的结构
定义4.1.1 图像帧存储体
能存储一帧图像的由半导体存储芯片组成的存储体,称为图像帧存储体,简称为帧存(FB)。根据帧存的这一定义,显然诸如硬盘、软盘、光盘等存储设备,都不属于帧存的范畴,而能显示数字图像的计算机显存,也可称其为帧存。为什么要设立帧存?原因是多方面的,如帧存结构灵活,适应性强,实时图像易于存入帧存,帧存的图像实时显示直观等。当然,可视性是设立帧存的主要原因。设立帧存,还有其历史的原因。早期的图像处理系统遇到一个难题,即视频图像不能实时地送到计算机中,其主要的原因在于当时解决不了快速的视频图像数据流(如8bit/100ns)和早期计算机总线慢速的数据传输速率之间的矛盾,于是很自然地想到设立一个缓存,先把视频图像存入缓存,再慢慢地把缓存的数据送入计算机。随着图像处理技术的发展,这个缓存自然地发展成为多用途的帧存,并且功能也越来越完善。很长时间以来,图像处理系统保持了“面向帧存”这一主体结构,在这种结构里,A/D图像可以存入帧存;帧存的图像可以实时显示;计算机访问帧存,或把帧存的图像存入磁盘,或把磁盘的图像调入帧存进行显示,或对帧存的图像进行处理;硬件处理器还可以对帧存的图像进行加工处理等,这一切功能都围绕着帧存展开,帧存常称为图像处理系统的心脏,由此可见帧存在图像处理系统中的重要性了。
用来构成图像帧存的存储芯片种类较多,从类别来讲,主要有DRAM(Dynamic Random Access Memory)、VRAM(Video RAM)、SRAM(Static RAM)存储器。一般来讲,用DRAM存储芯片来构成帧存,功耗低、体积小、容量大、价格便宜,但是读写时序比较复杂,要考虑存储体刷新,尤其要考虑怎样和高速的视频图像数据流(或读或写)相匹配的问题,由于其容量大、价格低的明显优点而受到特别重视。VRAM也称视频RAM,该芯片是图像图形系统的专用存储芯片,从20世纪80年代末开始流行,这种芯片是一种双端口存储芯片,一个端口是标准的DRAM端口,另一个端口是SAM(Serial Access Memory)端口。这种存储芯片与DRAM芯片相比,在构成帧存时具有电路结构简单的优点。这种芯片由于具有SAM端口,从而简化了与A/D、D/A高速数据流相关的读写电路,使得整体电路很简洁;其主要的缺点是价格较高、存储容量一般不如DRAM芯片大。SRAM芯片,时序简单、读写周期快,但一般价格比较贵,容量偏低,功耗较大,因此一般不用来构成常规的帧存,而常常用来构成高速的帧存,即常用在高速的图像处理系统里。也有的系统采用FIFO(first-in/first-out)存储芯片,但由于FIFO的数据流是一行一行地组织的,不具备随机地单点读写的功能,计算机也就不能对它进行单点的读写操作,因而不能用来构成“面向帧存”这一主体结构的图像帧存。正由于FIFO存储芯片具有快速存取和时序简单的特点,所以常常用在一些需要视频图像缓存的特殊地方。综上所述,DRAM、SRAM芯片是结构帧存的主流芯片,究竟孰优孰劣,厂家也各持己见,也就形成了不同价格、不同品牌的图像产品了。
一幅数字图像的点阵有256×256、512×512、640×480等多种规格,其像素的比特位也有多种形式,黑白图像有6bit、8bit的,彩色图像RGB方式的有5、5、5和5、6、5以及8、8、8的,YUV方式的有4:2:0(比特位对应为7bit、2bit、2bit)和4:2:2(比特位对应为8bit、4bit、4bit)。为了便于描述帧存的容量及其结构,我们引入了单位帧存这一概念。
定义4.1.2 单位帧存
单位帧存是指存储一幅具有标定图像点阵数值和图像分解力数值的数字图像的基本帧存。
显然,单位帧存的存储容量与图像处理系统标定的点阵数值和图像分解力数值指标有关,如系统标定的图像点阵数值、图像分解力数值为512×512×8bit,则单位帧存的存储容量为256KB。有了单位帧存的概念以后,我们就有了多帧图像帧存的概念了。如一个图像处理系统含有24个单位帧存,就称该系统有24帧图像帧存。而每一帧图像的存储容量,则由单位帧存来决定。
图像帧存就像一个存储数字图像的仓库,A/D图像的存入、显示图像的读出、主机或硬件处理器对帧存的存取,都有一个存取速度的问题。我们以“用户”这个词来表示这些使用帧存的对象,如A/D是帧存的一个用户,D/A、计算机也是帧存的用户,每个用户访问帧存都有一个本身特定的数据速率,我们用RAC来表示用户访问帧存的数据速率,记为X(ns)/pixel,X是各个用户的实际数值。显然,A/D、D/A存取速度较快,在512×512点阵的单位帧存里,在某个系统中,RAC为100ns/pixel。另外,通过PC微机的ISA总线访问帧存,其读写速度较慢,约在1μs/pixel,这两类存取的速率差别较大,而且在常规的图像处理系统中,这两类存取有不同的特点,A/D、D/A的数据一般是按电视行的顺序连续进行的,而微机对帧存的存取是按逐点进行的,此时的数据流可以是按行顺序逐点存取,也可以是以随机点的形式随意读写帧存。因此,在帧存数据线的安排上,常常分为快数据总线通道和慢数据总线通道,简称为快通道和慢通道。对于快、慢通道的确切划分,在考虑到256×256单位帧存的情况下,可作如下的通道划分:RAC为用户访问帧存的数据速率,当RAC≥200ns/pixel时,该用户连接到帧存的数据通道为快通道;当RAC<200ns/pixel时,该用户连接到帧存的数据通道为慢通道。
显然,连接A/D、D/A的帧存数据通道属于快通道,连接ISA总线的帧存数据通道属于慢通道。有的图像处理系统,整个帧存结构里只设一个通道,没有快通道、慢通道之分。
我们知道,计算机常规硬盘(非硬盘阵列)的容量有大有小,但其数据通道只有一个,不管硬盘的容量有多大,其数据流只能是串行的,也只能顺序地进行存取。对于帧存来说,也有类似硬盘的存储结构,可以达到海量存储,但数据流只是单一的串行,同一时刻只能获取一组数据,其功能也非常有限。图像处理系统的功能是多种多样的,于是对帧存的数据结构提出了更高的要求,有时还需要帧存的数据结构为某些特殊的结构。在这些要求中,比较简单的算是两帧图像加减运算了,如动目标检测以及医学上的减影,要用减法运算。一种较为严格的做法是从两个独立的单位帧存中同时读出两相邻帧且相同地址的存储单元的数据,再进行相减运算。为了描述帧存的数据结构,我们以单位帧存为基本帧存来考虑帧存的数据通道,提出了单帧单通道帧存、单帧多通道帧存、多帧单通道和多帧多通道存储体的大致划分。
单帧单通道帧存是指图像处理系统的帧存,其容量大于或等于一个单位帧存但低于两个单位帧存的存储容量,且在同一时刻只能获取该帧存的存储芯片的一个独立数据通道的帧存数据。
单帧多通道帧存是指图像处理系统的帧存,其容量等于一个单位帧存的存储容量,且在同一时刻能获取该帧存的存储芯片的两个或两个以上独立数据通道的帧存数据。
多帧单通道帧存是指图像处理系统的帧存,其容量大于或等于两个单位帧存的存储容量,且在同一时刻只能获取该帧存的存储芯片的一个独立数据通道的帧存数据。
多帧多通道帧存是指图像处理系统的帧存,其容量大于或等于两个单位帧存的存储容量,且同一时刻能获取该帧存的存储芯片的两个或两个以上的独立数据通道的帧存数据。
图4.1.1~图4.1.4分别表示了不同的帧存结构。
图4.1.1 单帧单通道存储体
图4.1.2 单帧多通道存储体
图4.1.3 多帧单通道存储体
图4.1.4 多帧多通道存储体
在图4.1.1所示的单帧单通道存储结构中,由于帧存只有一个数据端口,在使用DRAM芯片时,采用页面读写方式可以适应高速图像数字化器的图像输入,此时的数据通道属快通道。计算机的存取也在这个端口进行,此时的数据通道属慢通道。
图4.1.2所示的单帧多通道存储体,最简单的是单帧双通道存储体,这时使用多端口存储芯片。VRAM芯片是一种多端口存储芯片,慢通道使用VRAM芯片的DRAM端口,可以安排计算机读写;快通道使用VRAM芯片的SAM端口,可以安排A/D的写入和D/A的读出。当然,在VRAM芯片的DRAM端口还可以安排一个快通道,这样可以把A/D、D/A使用的数据线分开,把A/D的写入安排在DRAM端口的快通道,这时是采用存储体页面写方式来完成A/D的快速写入,而D/A仍然安排在SAM端口,这种安排可以增加系统的一些灵活性。在图4.1.2所示的结构中,由于VRAM芯片有两个独立的数据端口,因此在同一时刻可以得到两个不同单元的像素数据,尽管这样,如果不作特殊安排,也无助于硬件图像处理。
图4.1.3所示的多帧单通道存储体,也是用DRAM芯片的常见形式,这种结构尤其适用于序列图像存储的场合。从图中可以看出,各个单位帧存的数据线是相同端互连的。
在多帧多通道帧存的诸多结构中,图4.1.4只是其中的一种结构。在图4.1.4所示的结构中,最小的配置是只有两个独立的帧存结构,由于多帧多通道存储体有两个或两个以上的独立数据通道,所以能方便地进行一些实时的点对点的图像处理。
这些存储结构都是一些常见的存储结构,基本上满足了大多数系统的要求。但图像处理涉及许多邻域图像的处理算法,往往需要特殊的数据结构,其结构比较复杂。对于这种结构,我们将在后续的章节里(邻域图像存储体)予以讨论。
一幅W×H点阵且每点为Nbit的数字图像,其存储容量为M,则
这就是单位帧存的存储容量。M由两部分组成:一部分为地址单元容量H×M,另一部分为每个存储单元的比特位(N),即每个地址单元的字长。
选择存储芯片来设计图像帧存,应注意分别满足式(4.1.1)中地址和比特位两方面的要求。
例如,用512×512×4bit的存储芯片来构成512×512×8bit的单位帧存,则需两片存储芯片。
类似上面的计算,从所需帧存的地址总容量和像素比特位就可以推算出多帧图像帧存所需的具有确定容量的存储体芯片数目。这种计算只是从帧存总容量的角度来考虑的,在具体问题中,还有一些其他的制约因素,如芯片的能力,特别是要考虑芯片的存取速度。另外,在特殊结构的图像帧存里还将要考虑一些特殊要求,这些考虑将在后续章节给予介绍。
我们知道,A/D图像要实时存入帧存,实时图像显示则要求从帧存实时读出数据,计算机实时访问帧存,一般来说,计算机对帧存的访问是以单点的方式进行的,速度较慢;而A/D的存入和D/A的读出速度较快,在一个512×512点阵的图像帧存里,水平相邻像素的时间间隔如果选为100ns,使用DRAM芯片来构造图像帧存,而早期的DRAM芯片常规的读写周期时间一般达不到视频图像存取的要求,于是采取了并行交叉存取技术来解决这个高速图像数据流和较低的DRAM芯片存取速度的矛盾。并行交叉存取技术是在20世纪60年代提出来的,它主要用在计算机主存储器的设计上。这种方法是把主存储器分为多个存储模块,连续存储的数据可以在一个读周期里从这多个存储模块里同时读出来,连续的数据也可以在一个写周期里同时写入相应的多个存储模块里,这样可以大大提高计算机主存储器的存取效率。
在设计帧存时,并行交叉存具体取形式的选择和存储芯片地址容量的选择常常综合起来进行考虑,它们之间存在着相互制约的关系。令A/D写入时视频图像的数据流的周期时间为T0,而存储器最小的存取周期时间为Tmin,一个存取周期至少同时存取的像素个数为Lmin,则
一幅W×H点阵的图像帧存,其地址单元总容量为A,考虑到并行交叉存取,则所选择的存储芯片地址容量的最小值Bmin应遵循下式:
例4.1 已知某系统确定,图像帧存容量为512×512×8bit, Tmin=400ns,T0=100ns,系统采用并行交叉存取方式,试求单片存储芯片的地址容量及所需数量。
解:
考虑到存储芯片一般为64KB×4bit的结构,根据式(4.1.3)、式(4.1.4)算得KA=4,KB=2,则所需64KB×4bit的存储芯片数量为N=KA×KB。
根据例4.1的运算结果,我们用64KB×4bit的存储芯片,采用并行交叉存取技术,在一个写周期里同时把水平相邻的4个像素写入帧存;同理,采用并行交叉存取技术,也可以在一个读周期里把帧存中4个水平相邻的像素读出来。这种并行交叉存取的结构方式,简称为四相存取方式,为了实现四相存取方式,就要增加存储器外围的快通道电路。图4.1.5给出了四相存取方式的数据通道电路框图及控制信号波形。
图4.1.5 四相存取方式框图及通道控制
在图4.1.5中,快通道有8个8bit的寄存器R0~R7。AD0~AD7是A/D后的图像数据,R0~R3为快通道输入寄存器;CK0~CK3作为锁存脉冲分别送到各寄存器的CK端,依次把A/D后的图像数据输入各寄存器;/WG是各输入寄存器的输出使能信号,在/WG为低电平时,并行地把水平相邻的4个像素送入帧存,以实现一个写周期同时写入4点的操作。读出过程则是写入过程的逆过程,在一个读出周期里一次读出4个水平相邻的像素并用OCK脉冲把它们锁存在输出寄存器R4~R7中,然后分四相依次从输出寄存器中输出DA0~DA7,由此完成了并到串的转换,从而形成了显示的数字图像数据。计算机读写是通过帧存的慢通道进行的,K0~K3是双向驱动器,/WEC为计算机读写的标记信号,此处用来控制双向驱动器的数据传送方向,CA0、CA1是计算机送来的低2位列地址,由此译码形成计算机数据CD0~CD7的选通信号。VCK点时钟的周期时间为100ns,从图4.1.5(b)所示的四相存取方式慢通道控制波形中可以看到,400ns完成一次4个像素的读或写操作(进行写入操作时不进行读出操作)。
从上面介绍的四相存取方式中可以看到,采用并行交叉存取技术成功地解决了要存取的快速数据流和存储体慢速存取周期的矛盾,其代价是周边电路较多,时序控制也比较复杂。有时,虽然存储体芯片的读写周期能够满足快速存取的要求,但此时没有余量,为了提高帧存的吞吐能力,有时也为了兼顾其他电路的存取,也常常需要使用并行交叉存取技术。
解决这种快速视频数据流的存取问题,除了使用并行交叉存取技术以外,还有其他3种解决方法。第一种方法是采用DRAM存储体的页面操作方式,对于按电视行顺序形成的数据流,采用页面存取方式可以把一个电视行对应为存储体的一个行,高速地进行一行视频数据的存取,但这种方法一定要求一个页面操作周期时间大于行周期时间;第二种方法是选用VRAM(视频RAM)芯片,使用VRAM芯片的SAM端口,也可以高速地按电视行一行一行地进行视频数据的存取;第三种方法则是选用高速的SRAM芯片,这种芯片的存取速度很快,可以逐点地存取视频数据。