通用工业视频图像叠加的设计与实现
2008-11-11 来源:电子技术应用
图像处理技术广泛应用于科学研究、工农业生产、军事技术、医疗卫生等领域。在工业上的应用主要有:机器人视觉的研制、生产过程自动化、产品质量检测、机器零件的无损探伤、人工地震信号处理及地层内部结构的重建等等。本文介绍的项目是为实现生产过程自动化,叠加工业现场视频图像中多种起标识作用的图形,简化以后的数字化处理过程;并且可以通过人机交互,由用户通过按键选择所要叠加的图形。目前市场上有能完成其中部分功能的芯片,但是它们价格太高;而且,这些芯片应用面窄,可扩充性差,不能满足客户的特殊要求。本文作者设计并实现了一种成本低、应用灵活可靠,易于扩充、实用性强的图像叠加方案。
1 图像叠加的原理及总体设计
经过上述分析和市场调查,选用Intel的单片机90C32(它与8032的引脚和功能完全一致)作为CPU,可以充分发挥它的灵活性,并且利用其成熟的典型扩展电路来减少开发的难度和成本。在设计中,同步信号的提取、叠加选择的控制、屏幕编辑缓冲区的读写控制,以及键盘译码均用硬件实现,使系统快速、稳定、可靠运行。为减少时延,扩展电路全部采用高速CMOS芯片实现。在此功能较完善的硬件基础上,软件设计简单多了,主要完成系统初始化的按键响应。
2 硬件设计
硬件设计的总体框图如图3所示。
下面分别详细介绍各个主要部分的电路。
2.1 同步信号的提取及行/场计数器电路
准确提取视频信号中的同步信号对于本项目的成攻至关重要,幸运的是市场上提供了LM1881芯片,它仅需几个外接元件,就可以可靠地提取出视频信号中的同步信号。LM1881的引脚及连接电路如图4所示,图中的电容值均为0.1μF,电阻阻值为680KΩ。
行/场计数器由193芯片级联而成。按PAL制式规定,场扫描频率为50Hz,帧频25Hz,总扫描线数625,由于分为奇偶场扫描,每场有312行,需用二进制地址9位。选择4MHz的晶振行为行计数器的计数脉冲输入,那么每行有256个像素点,计算公式为:每片193有四位输入、输出端,输入端均接“0”,输出端组成地址总线。为保持行、场计数器电路的整齐,并保留一定的扩充性,行、场计数器各设3片193芯片实现。计数器电路如图5所示。
行同步信号经过一级非门,送往行计数器三片193的清零端MR;同时作为场计数器的计数脉冲,送往场计数器最低级193的计数脉冲输入端CU;而行计数器各级之间的级联由低级193芯片的TCU端送往更高一级193芯片的CU端;图中未画出的行计数器的计数脉冲输入端CU由晶振信号送入。场同步信号经过一级非门,送往场计数器三片193的清零端MR;场计数器各芯片之间的级联方式同行计数器相同。计数器产生的18位地址,经过总线锁存器,高15位送往屏幕编程缓冲区RAM,最低3位送往叠加控制的并串转换电路。
2.2 图像叠加及控制电路
MAX442的引脚图与连接电路如图6所示,图中的电容容值单位为μF,电阻单位为Ω。INO,IN1为两路视频信号的输入端,分别外接现场视频信号和黑电平;地址线AO控制“二选一”开关,选择输出哪个通道的信号。AO在屏幕编辑缓冲区中仅占一位空间,所以叠加控制字可以按位读写修改,这大大减少了所需的屏幕编辑缓冲区RAM的存储空间。在RAM中数据是按照字节存取的,因此在输出时,需要把从RAM中读出的数据进行并串转换,送到MAX442的AO端。这种“八选一”的数字逻辑电路用可编程芯片GAL可以很方便地实现,成本也不高,因此我们选择用GAL实现,逻辑表达式从略。
2.3 屏幕编辑缓冲区的控制设计
屏幕编辑缓冲区选择用RAM,是因为用户要求叠加的均是规则的几何图形,由CPU 90C32动态计算图形各点的位置算法非常简单;用户完全可以接受。
CPU 90C32的典型扩展电路包括程序存储区的扩展、数据存储区的扩展、时钟电路和晶振电路的扩展。考虑到项目需求并保留一定的扩充余地,存储器ROM选用27256芯片,RAM选用61256芯片。其中除RAM(屏幕编辑缓冲区)为临界区,需要特殊设计以外,其它电路与通用的单片机扩展电路完全相同,在此不另做介绍。
2.4 按键译码电路
本项目中,用户在人机交互选择叠加光标的形状与大小时,仅需要四个按键,因此不必使用功能强大的8279芯片,直接扩展90C32即可。四个按键经过译码,送到90C32的P1端口,这个译码逻辑非常简单,同样用GAL实现,逻辑表达式从略。在实际使用中,用户选择一次光标的大小与形状之后,总会稳定一段时间去进行其主要工作,所以操作按键的时间对于整个系统的工作时间而言是很短的。CPU对按键的响应采用中断方式,这可以比轮询方式大大减少对CPU处理器资源的占用。在按键电路中,一共占用P1端口2根I/O线,AO、A1是译码后的按键地址(或代码);另有INT是检测是否有按键被按下的中断信号线,它与90C32的外接中断输入端相连接。通常INT为高电平,若有按键被按下,INT为低电平,CPU可响应中断。
3 软件实现
由于本项目中的难点工作均用硬件实现,所以大大减少了软件设计工作量。软件主要实现系统初始化和中断处理过程,其流程图如图7所示。
主要过程的设计思想如下所述。
3.1 系统初始化
初始化参数,如代表光标大小的RDS、代表光标形状的SHAPE等等;
初始化监视器的屏幕:清零屏幕编辑缓冲区、叠加十字光标和圆形光标;
开中断,使CPU处于可接收外部中断信号的状态。
3.2 中断处理过程
首先打开在CPU响应中断时关闭的中断,然后调用按键去抖过程,确认有合法按键输入后取出按键代码,刷新屏幕编辑缓冲区,并调用按键响应过程。
3.3 按键响应过程
四个子程序分别对应于四个按键的功能:
KEY0:将现在屏幕上的光标尺寸放大一个单位;
KEY1:将现在屏幕上的光标尺寸缩小一个单位;
KEY2:改变现在屏幕上的光标形状,依次重复按此键,光标的形状依次变为圆形、方形、六边形;
KEY3:同时叠加所有不同大小的圆形光标,这是考虑到在实际应用中,圆形光标的使用频率较其它形状更高而特设的。
3.4 按键去抖过程
在检测到有且仅有一个键被按下时,记录此时闭合的按键的代码,然后执行一个延时过程,如延时10ms;之后,再判断是否仍有按键闭合。若有,检测它的代码与方才记录的代码是否一致,只有二者一致时,才认为确实有按键闭合,进行按键响应处理。
(1)若要求进一步提高图像叠加的精确度,可选择更高频的晶振作为行计数器的输入脉冲,必要时对行计数器电路加以扩展;同时在软件的地址处理上略加改动即可。这相当于将像素点细化,因而叠加后的图像清晰度更高。
(2)若要求对叠加的图形加以扩充或改动,可对相应的软件“按键处理过程”做调整。若需要增加按键的数目,还要对硬件中的按键译码电路进行扩展。由于在硬件设计中已考虑到未来的扩展,目前的设计仅需作很少改动,并且可最大限度地减少占用CPU90C32的端口线。如4个按键需要3根I/O线,即2线地址线,1根中断检测线;若扩展为8个按键,只需增加1根地址线,并重写译码GAL的逻辑即可。以此类推,若扩展N个按键,需要n根I/O线,其中,
n=[logN]+1+1
但是,由于GAL芯片本身结构的限制,建议在按键超过8个时,选用8279扩展键盘,以更好地满足用户要求。
(3)若要求能叠加更多类的信号,如增加要求“可选择叠加黑电平或白电平”,可对硬件设计的叠加电路及其控制部分加以修改。MAXIM公司提供的芯片MAX441是4信道视频多路开关,MAX440是8信道视频多路开关,它们的单位增益带宽更高,其他主要参数与MAX442基本一致。详细介绍请查阅《MAXIM DATABOOK1998》。
(4)若要对视频信号进行其它加工、处理,也可由本文所述的原理与实现得到参考和启发。