5.3 图像灰度窗口显示
在图像处理中,常采用灰度变换技术,把图像像素的某种灰度变换为另一种灰度,比如对原始图像进行指数变换,着重把原图像的高灰度区进行非线性拉伸;对原始图像进行对数变换,则着重把原图像的低灰度区进行非线性拉伸;线性拉伸处理,则是在一段灰度范围内对原始图像进行线性拉伸,有效地把原始图像的灰度范围进行了扩展;在直方图均衡化处理中使处理后图像的直方图分布均匀等。这些灰度变换的目的主要是想解决图像灰度分布过于集中而不易分辨其图像细节的问题。
在各种灰度变换的实现上,有软件处理,也有硬件处理;有的处理手段属于破坏性的,也有的处理手段属于非破坏性的。一般来讲,软件处理灵活易变,但速度慢;而硬件处理局限性大,但处理速度快。在处理手段的选择上,一般希望采用非破坏性的手段,特别是做灰度变换,并不是选用某种办法就一定有好的处理效果,有时还需要使用多种处理方法,即使只使用一种方法,也希望多试一些不同的参数,这样就要求在处理过程中不立即破坏原始数据。因此在软件处理上,常采用保留现场的做法,以达到“回溯”的目的。在硬件处理上,常使用输出查找表的技术,这也只是在显示上进行加工处理,并不破坏图像帧存中的存储数据。在一些系统中,当对存储图像做某些灰度变换时,巧妙地结合查找表,可以达到快速“回溯”的效果,具体的做法是把该灰度变换的数据写入输出查找表,这样可以从显示图像上立即看到本次灰度变换的效果,如果效果满意则可对存储图像进行相应的灰度变换;如果不满意此次的处理结果,则可取消这种灰度变换从而继续选择其他的方法或参数。查找表有RAM表和ROM表之分,RAM表灵活多变,变换函数可由计算机写入;ROM表函数固定,局限性大,但时序简单,速度快,适用于专用的场合。
在各种灰度变换方法中,常采用灰度窗口显示技术,即定义一个灰度范围作为灰度窗口,对属于窗口内的图像像素的灰度进行某种线性或非线性的变换,而把处于灰度窗口之外的灰度再定义为其他灰度。同样,可以用软件来实现灰度窗口显示的功能,也可以用硬件实现。在一些大型的设备里,如CT、γ照相机图像处理系统,常常使用硬件来实现这一功能,而窗内进行的变换也主要采用线性变换。
图5.3.1表示了窗口灰度变换的原理。
图5.3.1 窗口灰度变换的原理
在图5.3.1中,变换前的灰度为G,最大值为GM;变换后的灰度为G',最大值为;WL称为窗底,WU称为窗顶;从WL到WU这段灰度范围,称为窗宽,记作WW。
WW=WU-WL
图5.3.1所表示的灰度变换式如下:
式中,GM的值是由系统里每像素比特位的长度来决定,一般图像处理系统每像素为8bit,则GM的值为255,而在CT中GM的值较高,有的高达2047,即每像素比特位长度为11位。变换后的灰度最大值是由系统中D/A转换器的输入比特位的长度来决定,如果系统仍采用8bit的D/A转换器,则值为255。
在硬件灰度窗口的实现上,有固定灰度窗口和灰度全窗口之分。所谓固定灰度窗口,是指窗底、窗宽或者其中之一是固定不变的或是分挡跳变的;而灰度全窗口是指窗底、窗宽在全灰度范围(0~GM)内连续可调。从难度来讲,实现灰度全窗口比实现固定灰度窗口更难一些,而效果则以灰度全窗口最好。我们在γ照相机图像处理系统中实现的灰度窗口电路是采用ROM表的灰度全窗口电路,其功能设计要求如下:
(1)窗底的数值单独可调(0~255);
(2)窗宽的数值单独可调(0~255);
(3)窗底、窗宽的数值同时可调(0~255);
(4)窗底、窗宽的数值变化快慢可调;
(5)窗底、窗宽的数值变化方向可调;
(6)窗底、窗宽数值的和大于255时,它们的数值自动向反方向变化;
(7)窗底、窗宽的数值以十进制数在屏幕上显示。
为了便于操作,我们设置了5个琴键开关。
(1)可变框选择键。该选择键选择下面两种状态之一:一种状态为WL=0,WW=255,这实际是不要灰度变换的状态,也是常规显示的状态;另一种状态为WL、WW可变,即显示采用灰度窗口。
(2)窗底控制键。该控制键控制两种状态,一种状态是窗底WL可变;另一种状态是窗底WL维持原参数。
(3)窗宽控制键。该控制键控制两种状态,一种状态是窗宽WL可变;另一种状态是窗宽WL维持原参数。
(4)计数方向控制键。这实际是一个单脉冲的产生电路,只要产生一个单脉冲,就改变一次WL、WW的计数方向。
(5)时钟控制键。这是选择窗口参数变化的速率,一种状态是选择快时钟,这时窗口参数变化快,用于窗口参数的粗调;另一种状态是选择慢时钟,这时窗口参数变化慢,用于窗口参数的细调。
这5个键安装在操作台上,并分别用长线连接到窗口参数控制器电路板上。为了防止按键时抖动对该电路带来不利影响,把每个键的输出端都连到D触发器的D端,再选用一个时钟连到D触发器的CK时钟端,由此对5个键的输出信号进行采样,结果做到控制电路稳定可靠。窗口参数控制器电路框图如图5.3.2所示。
图5.3.2 窗口参数控制器电路框图
为了实现图5.3.2所示的功能要求,在窗口参数控制器中,要产生正反两方向可调的窗底WL、窗宽WW,由此设置了窗底、窗宽可逆计数器,而且根据本系统图像像素比特位的限制,这里不允许(WL+WW)>255,对此设置了一个全加器,当(WL+WW)>255时,全加器的第9位输出一个高电平,从而改变当前WL、WW的计数方向。产生窗口参数的一种办法是用电位器来调节电压量,再把不同的电压转换成数字量,这种办法实现起来电路比较烦琐,而且常常得不到一个连续的数字量。这里选用由计数器计数的办法,电路简单,可靠性好,窗口参数连续可调,数值没有跳跃。图中所示的计数器是1bit的计数器,可用74LS74来实现。
在窗口范围内,灰度变换公式为
式(5.3.2)是一个线性灰度变换式,根据直线斜率的变化,输出就可以得到不同的数值。
对于式(5.3.2),我们采取先取对数、再取反对数的方法化乘除运算为加减运算,这样就可以仅用全加器和PROM等硬件来实现式(5.3.2)所表示的线性灰度变换。
对式(5.3.2)取对数后得
这里,α的选择要考虑尽量减少设计误差,由于取对数在前,为确保有足够的精度,就要使对数输出的范围为0~255。另外,从取对数的表达式上看,输入若为零,则无意义,将输入加1后得到的修正式y=logα(1+x)在x取值较大时与原输出结果相差甚微。对应输入0~255,相应的输出也为0~255,因此应选α=2561/255,这样,logα256=255,用十六进制的数表示为FF,由于WW在8bit的数据范围里变化,由此式(5.3.3)可改写为
式中,为logαWW的反码。通过运算求得后,再进行指数变换:
由式(5.3.5),可得到窗口处理器的输出灰度G'。在电路设计上,指数、对数变换采用硬件查表方式,该表由高速的双极型PROM芯片构成,预先制作表时把指数、对数变换函数烧进PROM芯片中。这种实现线性变换的灰度窗口处理器的电路框图如图5.3.3所示。
图5.3.3 实现线性变换的灰度窗口处理器的电路框图
在实现中,G-WL的运算是对WL求反,其结果再和G进行相加运算实现的。整个灰度全窗口电路的其他细节问题,如像素灰度G低于WL或高于WU时输出灰度G'分别等于0和255等问题纯属技巧性问题,这里不再赘述。
这种γ照相机图像处理系统在实现灰度窗口功能的同时还附带有窗口参数注释功能,其窗口参数的注释不是利用覆盖体进行重叠显示来完成的,而是专门设计了窗口参数注释电路来具体给予实现,显然这样做的优点是操作简单明了,操作人员可以及时地了解到当前的窗口参数,而不需要计算机进行干预。
这种参数注释在监视器上的位置如图5.3.4所示,其中把屏幕划分为两个区域,图像区域为256×256点阵;另一个为窗口参数注释区,为256×8点阵,即注释区占用了8行的屏幕位置,所注释字形的大小选择为5×7点阵,在注释区左边128点内显示窗底的参数,在注释区右边128点内显示窗宽的参数。只要系统一加上电,窗口参数就自动地显示出来,使用方便。
图5.3.4 参数注释的屏幕划分
显示窗口参数,可以先将窗底、窗宽参数变为BCD码,然后去查字库,而且微机一般都具有齐全的字库。显然这种方法可以节省硬件的字符存储容量,但要以复杂的控制电路以及码制变换为代价。另一种方法是直接用窗口参数(二进制码)去查字符库,这就要做一个硬件字符库。考虑到我们这里所用的字符不多,只有0~255数字和“WL”“WW”以及“=”字符,所以该系统采用了后一种方法,其电路框图如图5.3.5所示。
图5.3.5 窗口参数注释电路框图
图中,参数选择器是以X方向的位置来选择WL和WW的,即X地址小于128时选择,其余的选择WW,字符库由4片2K×8的EPROM(2716)组成,由8bit的窗口参数线和3bit的行地址线以及1bit的窗底/窗宽参数选择线寻址,字符库输出的32位数据送入移位寄存器进行并码到串码的转换,每位串码又变成全“0”或全“1”的8bit并码送入系统的D/A,这样就实现了窗口参数的实时标注。