图像处理系统
上QQ阅读APP看书,第一时间看更新

第5章
图像显示

5.1 图像显示的基本形式

数字图像有自然图像和计算机图像之分,前者是由传感器获得的,一般都要经过A/D转换而形成数字图像,后者是由计算机作图产生的,也称为计算机图形。虽然图像处理系统也能显示图形,但图像处理系统和图形系统还是各有特点。一般来说,图像处理系统的色彩较丰富,但图像的清晰度较低(常为512×512点阵);而图形系统清晰度较高,体现在图形点阵数多,如1024×1024、2048×2048等,但色彩不如前者。两者在处理的方法上也有所不同,图像处理系统着重于对图像在时域、频域上进行处理,而图形系统则着重于作图,包括画点线圆等。随着技术的发展,图像处理系统和图形系统在色彩方面、清晰度方面的差别已不再是两者的主要区别了,因为现在的图形系统也有很丰富的色彩,而图像处理系统在清晰度上也有很大提高,也可达到1024×1024甚至更高的图像清晰度,这样两者的区别则主要体现在两个方面:首先体现在图像的本质上,即看该系统处理的图像是自然图像还是计算机图像;同时还体现在各自的处理方法上。本章只讨论图像显示的各种技术问题,而不涉及图形生成技术。

在图像处理系统中,图像显示电路的作用是把数字信号转换为视频信号,并使视频信号能够在监视器(或计算机终端)上显示出来。这个数字信号可以是数字图像数据,可以是灰度标数据,也可以是文字图表数据。显然,要能够把数字信号在监视器(或计算机终端)上显示出来,不仅要考虑所显示的数据以及这些数据的数/模转换,还要考虑该数据存放在帧存里的地址以及同步消隐等问题。

图像显示的种类很多,就其色彩来讲,有黑白图像显示和彩色图像显示之分,而彩色图像显示又分为真彩色图像显示、伪彩色图像显示和假彩色图像显示。黑白图像和彩色图像相比,人眼对色彩更为敏感。明显,在256级灰度图像的图像处理系统中,人眼对一级灰度的差别基本感觉不到,如果通过彩色指定,把一级灰度的差别变成两种颜色的差别,那么人眼就便于分辨了,这一点也正是彩色指定所起的作用。把灰度图像变成彩色图像的过程称为伪彩色化,也称为彩色指定,其图像称为伪彩色图像。这种伪彩色图像并不一定忠实于原始图像的自然色彩,而只是一种人为上彩的结果,实际上很难做到人为上彩的结果与原始图像的自然色彩相一致。一般情况下伪彩色图像的数字比特位多为8bit,而仅仅用8bit的灰度图像来逼近一幅色彩丰富的自然图像显然是过于勉强的,在大多数情况下得不到好的效果。真彩色图像显示一定要求所显示的图像具有色彩上的真实性,要忠实于原始图像的自然色彩,而假彩色图像则是遥感图像中多波段图像的合成图像,在显示上采用类似于真彩色显示的电路。

图像显示有静止图像和动态图像之分,后者是指在监视器(或计算机终端)上的图像在不同时刻以不同位置、不同大小、不同灰度(色彩)的动态显示,或者说是多幅不同的图像序列的连续显示。这种动态显示,不论是由硬件实现还是软件实现,或者二者兼而有之,但就其实现的方法来讲,大致上可以分为灰度比特平面动态显示、地址变换动态显示和解压的活动图像显示。在图像处理系统中,常常需要进行图像和图形、图像和文本之间的重叠显示,以此来实现图像注释、感兴趣区勾画等功能。在黑白图像处理系统中,还常常需要显示灰度标。所谓灰度标,是指在屏幕上某一确定区域里,固定显示由暗到亮的在灰度值上连续变化的灰度条,以此来标定与某灰度值相对应的屏幕亮度,其作用则是帮助分析图像灰度的分布情况。在伪彩色图像处理系统中,类似灰度标的这种固定区域图像称为彩色带标,这是该系统彩色指定的一种标志标,在屏幕上某一确定区域里,固定显示由连续变化的灰度形成的一个彩条,以此来标定与某灰度值相对应的图像色彩,由此可以很直观地看出图像中不同区域灰度分布的情况。在这些技术中,屏幕区域的划分或者说屏幕区域的分割技术是很重要的。

在图像显示众多的电路中,最基本的电路是数/模转换电路。目前集成的数/模转换芯片已经非常普遍,与模/数转换芯片一样,数/模转换的比特位数、转换速率和线性都是其重要的参数。当然,该芯片对电源的要求以及外围电路的复杂性也是在选择芯片时需要认真考虑的。

在设计一个使用D/A芯片的数/模转换电路时,首先要选择合用的D/A芯片,最主要的要求是所采用芯片的数/模转换速率一定要高于或等于视频数据的速率,而对转换的精度要求则根据系统的要求来确定,常常是D/A芯片的比特位数就等于存储体每个像素的比特位数。我们知道,要形成标准的视频信号,除了有视频图像信号以外,还需要在视频图像信号上叠加同步和消隐信号,有的芯片具有同步消隐叠加功能,只需要把同步消隐按要求送到D/A芯片上,由芯片自动地实现信号的叠加。如果所选用的信号没有同步消隐叠加功能,则需要在后续的电路中设置同步消隐叠加电路。但在实际应用中,由于从帧存读出图像数据是按扫描时序进行的,这种读出时间就是扫描的正程,在扫描正程的其他时间里我们可以很方便地让数据为零,也就是说很方便地形成了消隐信号,这样只需要在D/A转换的后续电路里设置同步叠加电路。图5.1.1给出了一个实际使用的黑白图像显示电路。

图5.1.1 一个实际使用的黑白图像显示的图像通道

图5.1.1中,MB40778是日本富士通公司生产的8bit高速D/A转换器,它的最大转换速率为20MHz,其主要的工作条件如下:

(1)电源电压:+5V。

(2)模拟参考电压:+4V。

(3)时钟脉冲高电平最小宽度为25ns,低电平最小宽度为25ns。

图5.1.1电路所实现的功能是对数字的视频数据流进行数/模转换,然后再叠加上复合同步信号,形成黑白全电视信号。图中,VCLK为D/A转换的时钟脉冲,其频率为点时钟的频率;CS为复合同步,其极性为正极性。三极管T1的作用是为MB40778芯片提供一个参考电压,三极管T2是一个射随器,三极管T3的作用是在模拟图像信号上叠加同步信号,三极管T4输出一个完整的黑白全电视信号。图中,+9A是经板稳压的+9V电压。

彩色图像显示电路一般要输出R、G、B三路模拟信号,这样就可以采用能接收R、G、B三路模拟信号的彩色监视器进行彩色图像显示,在电路上可以采用三路类似于黑白图像显示电路来实现这一功能。这种方法存在两个缺点:①电路庞大;②各路信号的沿难以对齐。

在伪彩色图像显示电路中常常使用查找表技术以实现彩色指定功能。查找表(Look Up Table,LUT)技术是图像处理常用的一种技术,不仅用在图像处理系统的硬件上,在软件上也常常使用。查找表的两个要素是地址和数据。地址是查找表中一个个存储单元的物理编号,而数据则是查找表内一个个存储单元里的内容。查找表技术的基本方法是预先制好表,使用时再按地址去读出表的内容。图5.1.2给出了一个简化查找表的例子,从图中可以看到,在图的下方标有查找表的地址,从左到右(0~9)共10个单元,表格中的数字表示表的内容,当查找表地址为“0”时,查表结果为“9”;当查找表地址为“1”时,查表结果为“8”……当查表地址为“9”时,查表结果为“0”。这个表实际上是一个反表。从表内容的制作来看,在图像硬件系统中有固定查找表和可变查找表,固定查找表常用高速的双极型PROM芯片构成,而可变查找表常用高速的SRAM存储芯片构成,查表时这些芯片的数据读出速度一定要高于显示数据的速度。在制作固定查找表时要用专用的编程器把固定查找表的内容烧进PROM芯片,可变查找表则是在查表前先把查找表的内容加载到SRAM芯片内。

图5.1.2 一个简化的查找表

图5.1.3给出了使用固定查找表的伪彩色电路框图。

图5.1.3 固定查找表的伪彩色电路框图

图5.1.3中,OD0~OD7是8位灰度数据,通过三路独立的查找表,再经过三路独立的D/A,最后输出三路模拟信号。每一个查找表的最小容量为256×8bit,使用具体芯片时可选择容量较大的PROM芯片,以便多设置几组查找表,供使用时加以选择。

图5.1.3所示的固定查找表的伪彩色电路大多使用在脱机系统的场合,其电路简单,但功能很有限。早期使用的内容可变的查找表,其芯片一般都使用独立的SRAM芯片,由此构成的伪彩色电路框图如图5.1.4所示。

图5.1.4 使用独立的SRAM芯片构成可变查找表的伪彩色电路框图

图5.1.4中,OD0~OD7是8位图像灰度数据,CA0~CA7是由计算机送来的8位地址,双向驱动器由74LS245构成,SD0~SD7是接到计算机的数据。当计算机写查找表时,二选一电路选择CA0~CA7,计算机的数据通过相应的双向驱动器分别写入R、G、B查找表。当计算机读查找表时,R、G、B查找表的数据通过相应的双向驱动器分别送到计算机。查表时,二选一电路则选择OD0~OD7图像数据,此时各双向驱动器均处于三态,R、G、B查找表均处于读出状态,查表结果送入各自的D/A,数/模转换输出的模拟信号分别为RAGABA,直接送入彩色监视器。

随着VLSI的发展,出现了把三路D/A集成在一个芯片的产品。如美国BT公司的BT478芯片,允许三路数字信号输入,所以该产品可以用于各类彩色显示电路。图5.1.5给出了使用BT478的伪彩色显示电路。

图5.1.5 使用BT478的伪彩色显示电路

BT478芯片具有三路查找表和三路D/A,并有重叠显示功能,用于伪彩色显示电路。图5.15中OD0~OD7是图像处理系统送到显示电路来的图像数据,可以是从存储体读出来的图像数据,也可以是直接从A/D来的数字化图像数据。SD0~SD7是和计算机通信的8位数据,这是计算机读写查找表的数据。CA0、CA1、CA2是由计算机送来的地址,直接作为BT478的RS0、RS1、RS2端。RS0、RS1、RS2用来选择BT478芯片的功能,其功能划分如表5.1.1所示。

表5.1.1 BT478控制输入表

BT478芯片中查找表的数据结构和大多数D/A芯片的查找表数据结构一样,即每路256个数据,R、G、B三路共768个数据,按照R0,G0,B0,R1,G1,B1,R2,G2,B2,…,R255,G255,B255顺序排列,在设计查找表时,一般是先独立设计好R、G、B查找表,然后再合成一张含768个数据的大表。在掌握了查找表的数据结构以后,就可以根据表5.1.1给出的控制输入表,编制计算机读写查找表的程序。如果是执行写查找表的操作,计算机则要先送出写模式的查找表首址(RS2、RS1、RS0分别为0、0、0),再顺序送出写入的查找表数据(RS2、RS1、RS0分别为0、1、0);如果是执行读查找表的操作,则计算机要先送出读模式的查找表首址(RS2、RS1、RS0分别为0、0、1),再顺序读入查找表数据(RS2、RS1、RS0分别为0、1、0)。类似地,也可以通过编程实现对overlay寄存器的读写,还可以实现对屏蔽寄存器的读写。设置计算机读查找表这一功能的目的主要是检查写查找表的正确性,偶尔也需要读查找表,如在未知查找表的内容时想对当前查找表求反,这时就需要把查找表的内容读回来再进行处理。

图5.1.5中U4组成了计算机写查找表的数据通道,U5组成了计算机读查找表的数据通道,CD0~CD7为计算机总线数据,SD0~SD7为计算机访问查找表的输入输出数据。U1、U2、U3组成了计算机读写查找表的时序和控制信号的产生电路,其工作原理和第3章的帧存时序产生电路类似,也采用了8个节拍,一个节拍为50ns。该电路也有操作状态的建立、撤销、时序产生功能,但没有查询功能,因此这种时序发生电路为从动式的数值编程时序发生器,而第3章的帧存时序产生电路为主动式的数值编程时序发生器。计算机访问查找表时,微机接口电路产生一个访问查找表的工作信号CPL(上升沿有效),U1的Q端变为低电平,U2即进入正常计数状态,/WEC给出计算机读写标记(低电平为写,高电平为读),U3则给出相应的读写时序和控制信号,其中/WLDG为写查找表时数据使能信号,WLUT为写查找表时数据锁存信号,RLCK为读查找表时数据锁存信号,/RLDG为读查找表时数据使能信号,/VWE为BT478的写信号,/VOE为BT478的读信号,/VCLR为查找表读写结束信号,CK0为时钟信号,频率为20MHz,这个时钟信号用来为U3的输出信号整形(U3为D触发器输出,CK0为D触发器的锁存时钟信号)。当计算机写查找表时,WLUT、/WLDG、/VWE有效(WLUT产生上升沿,/WLDG、/VWE为低电平);当计算机读查找表时,RLCK、/RLDG、/VOE有效(RLCK产生上升沿,/RLDG、/VOE为低电平)。下面给出了U3的逻辑方程:

    /** INPUTS **/
     PIN[1] = CLK ;
     PIN[2] = QA ;
     PIN[3] = QB ;
     PIN[4] = QC ;
     PIN[5] = CPL ;
     PIN[9] = WEC ;
     PIN[10] = GND ;
     PIN[11] = EC ;
     PIN[20] = VCC ;
    /** OUTPUTS **/
     PIN[12] = WLUT ;
     PIN[13] = WLDG ;
     PIN[14] = RLCK ;
     PIN[15] = RLDG ;
     PIN[16] = VWE ;
     PIN[17] = VOE ;
     PIN[19] = VCLR ;
    /** LOGIC EQUATIONS **/
     WLUT.D = CPL ;
     /WLDG.D = CPL&/WEC ;
     !RLCK.D = !WEC # !QA # !QB # QC # !QA&!QB&!QC ;
     !RLDG.D = CPL&WEC ;
     !VOE.D = WEC&QA&QB&!QC#WEC&!QA&QB&!QC;
     !VWE.D = !WEC&!QA&!QB&QC#!WEC&QA&!QB&QC;
      !VCLR.D = CPL&!QA&QB&QC ;

值得指出的是,图5.1.5中所示的由U1、U2、U3、U4、U5组成的计算机读写查找表的电路也可以用来作为计算机读写SRAM存储体的电路,节拍数可由8个减为4个。

查找表的内容怎样设置?可以说,设置查找表的目的是通过灰度变换以达到彩色指定。灰度变换的解析式可表达为

式中,G为变换前的灰度;G'为变换后的灰度。

彩色显示有R、G、B三个通道,所以应有三个相应的变换式。

图5.1.6给出了一组彩色变换曲线。从图中可以看出,把满量程的灰度分成了4个部分:输入的最高灰度为同一个值,如8bit的最大值255,这说明当输入灰度为255时,三个查找表输出均为255,此时图像显示为白色。再把余下的灰度范围再进行三等分,R、G、B三条曲线有所不同,由此形成了不同的显示色彩。

图5.1.6 一组彩色变换曲线

彩色变换曲线有很多,可根据实际需要进行设置。如医学伪彩色图像,有的要把血管设成红色;又如航空图像,有的要把海洋设置成蓝色。要实现这些要求,就要利用色度学中的配色原理,再结合所使用系统的具体情况,编制成准确的彩色变换曲线。在实际制作中,首先测试出图像中要进行彩色指定部位的灰度(或灰度范围),再根据需要把这个灰度(或灰度范围)指定为某种色彩。比如,有一个由16种颜色小块组成的颜色板,由光标指定某一图像的某一部位,测定其灰度值,再把颜色板中的一种颜色赋予该灰度;或对一图像区域进行直方图统计,再把颜色板中的一种颜色赋予该直方图的一个灰度(或灰度范围),显然可以编制一个程序来完成这一类工作。

值得指出的是,一种查找表适合这一幅图像或多幅图像,并不一定适合所有的图像,原因在于许多图像处理系统并没有严格地进行灰度标定工作。所谓灰度标定,是指某一种亮度的模拟信号在该类图像处理系统中唯一地对应一个数字化的数字。由于没有进行灰度标定,这样同一幅医学图像,其血管的灰度在不同类别的系统中将体现出不同的灰度值(在同类别系统中不同的系统也会如此),所以上面提到的首先测试出图像中要进行彩色指定部位的灰度(或灰度范围)再进行彩色指定的方法是可取的。反过来说也可以这样进行,即确定了查找表,反过来去调整图像数字化器的亮度和对比度。如还是那幅医学图像,调整图像数字化器的亮度和对比度,使血管显示的颜色为红色,由此也能达到这种彩色指定的目的。

上面讲到了用查找表来对灰度图像进行彩色指定,这里顺便指出一个容易产生混淆的问题,即有的人试图利用彩色查找表,来指定一幅图像中某个区域的颜色而区域外不受这个指定的影响。我们知道,彩色指定是依据图像的灰度进行的,区域内和区域外如果灰度值一样,在伪彩色系统中则呈现相同的颜色,这并不会因为地址的不同而可以不符合按灰度进行彩色指定的原理。

真彩色系统一般不加彩色指定的查找表,而在真彩色、伪彩色混合系统中仍然需要设置彩色指定的查找表,如BT473芯片就具备了真彩色、伪彩色显示的功能,片内也设置了查找表。伪彩色显示电路只需一组输入数据,真彩色显示电路需要三组输入数据,如果要设计一个真彩色、伪彩色混合的显示电路,而且要求采用BT473芯片,就必须在T473芯片的前端加上数据选择电路,以选择真彩色数据或选择伪彩色数据。

在伪彩色图像显示(或黑白图像显示)中有一个功能称作按位显示功能,设图像显示中每个像素的字长为Nbit,若指定按像素的第K个比特位进行显示,这时就要对原始像素的灰度进行变换,令Gk为原始像素的灰度第K个比特位的值(0或1),G'为变换后的灰度值,那么按位显示的灰度变换式则为

式(5.1.2)中,显然只处理原始像素的第K个比特位的值,其他比特位则不显示,因此只能显示二值图像。在电路实现上,按位显示电路比起一般显示电路来,只需在前端插入如图5.1.7所示的电路。

图5.1.7 按位显示电路框图

图5.1.7中,OD0~OD7是送入显示电路的原始数据,BITS0~BITS2是三位选择信号,用来选择某一位显示数据,经八选一得到一位数据后,再送入一个二选一电路,送入这个二选一电路的另一组数据是原始图像数据,这个二选一电路的作用是作为显示功能的选择,或选择按位显示功能,或选择原始图像显示,选择信号为/BITG。

按位显示功能的用处主要有3个,第一个用处是检查存储体写入是否正确,可以进行逐位检查。计算机写入一个已知图案,通过按位显示电路进行显示由此检验该位是否写入正确。第二个用处是可以观察输入数据中任一位的信息,非常直观。如查看数字化图像的动态范围,可以看看高位有无数据;如隐含在数据最低位的信息。如果按八位进行灰度显示则观察不到,采用按位显示,即可清楚地看到数据最低位的信息。第三个用处是可以进行由按位显示形成的比特位动态显示,其具体做法是在不同的比特位写入不同的图案,显示时,控制BITS0~BITS2选择信号,按节奏轮流显示每一个比特位,由此形成不同图案的动态显示。

重叠(overlay)显示,是图像显示的一个重要功能,该功能最主要的作用是在图像中注释文字,显示光标,也可以在图像中勾画感兴趣区,可以在图像上叠加图形等。

要进行重叠显示,至少应该给出两个信号,一个信号是重叠显示的控制信号,表明是否要进行重叠显示操作;另一个信号则是叠加位。产生叠加位的方法有两种,一种方法是独立设置一个称为字符存储体的帧存,其地址结构和图像帧存一致,其显示读出的方法和图像帧存显示读出的方法完全一样,所读出的一位或多位数据用来作为叠加位数据;另一种产生叠加位的方法是把帧存的某一位作为叠加位,由于隐含在数据最低位的信息在灰度显示中不易被观察到,所以常常选用帧存的最低一位或最低两位作为叠加位,这样做的好处是可以减少系统成本。因此在一些简化系统中,常使用这种隐含叠加位来实现重叠显示的功能。和按位显示类似,我们也把重叠显示的过程看作是对原始图像数据进行灰度变换的过程。设图像显示中每个像素的灰度为GGk为原始像素的灰度第K个比特位的值(0或1),G'为变换后的灰度值,那么重叠显示的灰度变换式则为

式(5.1.3)和式(5.1.2)相比,区别在于:当Gk=0时,按位显示输出为零,而重叠显示输出则为原始图像数据。

由于系统的构成不同,实现式(5.1.3)的方法也有所不同,一种实现重叠显示的电路框图如图5.1.8所示。当Gk=0时,VD0~VD7等于OD0~OD7;当Gk=1时,VD0~VD7全为1,输出值为255,可显示为白色。当然,图5.1.8所示的电路也可以用GAL芯片来实现。

图5.1.8 一种重叠显示的电路框图

现在,许多D/A芯片在内部都设置了重叠显示电路,与之相配合的是结构一个字符帧存,由于字符帧存的字长一般设为4bit,因此可以得到多种重叠显示的结果。

图像显示的另一个功能是灰度标显示,前面已经介绍了灰度标(或彩标)的作用,要实现灰度标显示,就要解决好两方面的问题,一是灰度标显示的区域确定,二是灰度标数据的产生。灰度标显示的区域大致有两种形式,即垂直的或水平的,有的系统把垂直的灰度标显示在屏幕的左边,也有的系统显示在屏幕的右边,而水平的灰度标则显示在屏幕的下边。在一个512×512的图像处理系统中,灰度标显示区域的点阵数一般为512×16,这样便于在硬件上确定灰度标显示的区域。这个区域的确定属于屏幕划分的范围,属于图像正程显示区域的一部分,参照图3.3.12所示行框和列框的描述,单独形成一个列框作为垂直条灰度标数据显示的选通信号;同理,单独形成一个行框作为水平条灰度标显示数据的选通信号,这些灰度标数据选通信号的形成和扫描时序的形成类似,因此可以很方便地在扫描时序发生器里实现。灰度标数据的形成比较容易,图5.1.9给出了水平条灰度标数据形成电路。

图5.1.9 水平条灰度标数据形成电路

图5.1.9中,八位计数器输入时钟的频率为点时钟频率的1/2,列框加到计数器的计数允许端,计数器在列框为高电平时计数,其输出数值在0~255之间顺序变化,行框加到二选一数据选择器的选择端,当行框为高电平时,选择计数器的输出信号作为VD0~VD7,再送到D/A去,由此在屏幕的下方显示出一条水平的从左到右由黑到白的灰度标。垂直条灰度标数据形成电路和水平条灰度标数据形成电路类似,对照图5.1.9所示的电路,在垂直条灰度标数据形成电路中,计数器输入时钟的频率为行频,计数器的允许端为行框,二选一数据选择器中选择端的选择信号为列框。

不管是黑白图像处理系统还是伪彩色图像处理系统,其灰度标的产生方法都是一样的,只不过在显示的结果上有所不同,在伪彩色图像处理系统中,灰度标经彩色指定而显示为彩色灰度标。