王 戈 常 敏 杨园园 姚 晨 张学典
(上海理工大学光电信息与计算机工程学院,上海,200093)
嵌入式图像处理技术包括数字图像处理技术和嵌入式系统技术两部分。图像处理算法[1]通常需要大量的数学运算,而实时图像处理领域除对运算的正确性提出很高的要求外,对运算的实时性也有相当高要求。因此选用计算功能强大的数字信号处理芯片DSP来实现实时图像处理已成为趋势。嵌入式系统[2],拥有软硬件可裁剪,多任务处理,稳定可靠等优点,使得用户应用任务以及软硬件资源能够得到科学有效的管理。两种技术的结合无疑增强了图像处理系统的通信、交互及数据处理等能力[3]。完整的嵌入式图像处理系统通常包括原始图像采集、图像处理和人机交互界面三大部分,而进行图像采集和显示通常需要两组PPI接口,这就需要选择接口丰富但价格昂贵的处理器芯片,增加了系统开发的成本。
针对上述问题,文中选用只包含单组PPI接口的数字信号处理芯片,通过将这组PPI接口进行分时复用,实现了实时的图像采集、处理和显示。本文以自动检测运动目标的图像处理[4]为例,说明了系统的具体实现方法。实验结果表明所选DSP芯片可以充分利用有限的PPI接口很好地实现图像的采集、处理和实时显示等功能。
BF531是ADI公司Blackfin系列的DSP处理器芯片,该处理器[5]是一款高性能的DSP嵌入式微处理器,内部集成控制器,数字信号处理模块和媒体处理器等,广泛用于因特网上大量的图像、声音、文本和数据流的处理,适用于各种因特网设备,如可视电话、网络终端和智能手持设备等。其强大的数据运算能力可以满足实时图像处理和视频处理的需要。BF531的PPI接口是一种可双向传输的接口,部分引脚可以复用,可一次传输8位或16位的数据。使用专门的时钟和3个同步信号(包括行同步,帧同步及场同步)可支持ITU-R 656视频数据格式的传输。
本系统的核心设计思路即是利用BF531芯片的单组并行数据口,通过分时复用实现实时图像采集和显示。该技术曾广泛应用于有限I/O管脚条件下的系统扩展。如单片机系统的键盘及显示电路扩展,以及三总线方式的单片机外部存储器扩展。
在I/O管脚不够用的场合,通常都会采用扩展I/O的方法来解决问题。而采用I/O口扩展与分时复用两种方法解决问题都有着各自的优点及特点,但同时也都暴露出一些问题。采用分时复用的方式利用较少的I/O管脚实现系统扩展能有效地节约硬件开发成本,降低系统的硬件复杂度,使系统有限的硬件资源得到充分的利用,但与此同时会增加软件部分的复杂度,提高了系统软件部分的开发难度。而采用扩展I/O口的方式可以使各模块之间相互独立,软件设计思路较为清晰,降低系统软件部分的开发难度,但使用I/O扩展芯片必定会导致硬件设计成本的上升。
在系统设计对硬件成本较为敏感的场合,扩展I/O口以及换用包含更多PPI接口的设计方案难以满足设计需求。故本系统选用互补金属氧化物半导体(Complementary metal-oxide-semiconductor,CMOS)图像传感器与TFT液晶分时复用一组PPI接口来实现对图像的实时采集与显示。
利用CMOS图像传感器采集图像数据,图像数据通过BF531仅有的一组PPI口传输到DSP中,经过内部嵌入式图像处理系统对图像数据进行处理,实现对所采集视频图像中运动目标的自动检测;通过寄存器配置切换DSP管脚功能,将这组PPI接口配置为GPIO接口(通用可编程接口),驱动TFT显示处理后的图像。
系统硬件框图如图1所示。BF531为系统的处理器,其内核工作频率可达400MHz,可实现一个时钟周期同时执行一条32bit涉及ALU和MAC操作的指令(可并行操作两次算术运算)和两条16bit指令。以16阶的实数FIR滤波运算为例,BF531需8个指令周期,而TI公司的54×系列DSP芯片需16个指令周期。如果以400MHz的531与100MHz的5402作对比,则前者运算能力是后者的8倍。故BF531特别适合应用于需要处理大量的图像、声音、文本和数据流的多媒体系统中。
图1 系统硬件框图
图像传感器选用OmniVision的OV7690,其感光阵列大小为640像素×480像素,容许输入的时钟频率为6~27MHz且包含片上PLL,同时支持多种输出格式。液晶控制器选择ILI9331,ILI9331内置一个约172KB字节的RAM,可用于储存图像数据。系统还通过DSP芯片的扩展口扩展了SDRAM和FLASH,SDRAM用于存储图像处理过程中的图像数据,FLASH则存储系统启动的数据和程序代码[6]。
图1中BF531的可编程控制IO引脚PF0与PF1与CMOS图像传感器OV7690的I2C的数据SIO-D与时钟SIO-C引脚相连,用于写CMOS的寄存器,配置采集图像大小,图像数据格式等选项。PF3引脚与CMOS的复位端连接,当要传下一帧图片时,复位CMOS,保证从第一个像素点开始传输图像。CMOS输出引脚Y0~Y7与BF531的PPI0~PPI7相连,将采集到的图像数据通过PPI口传给DSP,同时图像传感器的像素时钟,行同步和帧同步信号与PPI口的时钟和同步信号端相连,保证图像数据传输的同步性和正确性。
第一次进行图像采集需对BF531芯片的PLL,EBIU和系统的SDRAM进行设置,保证芯片正常工作。
图2所示为图像采集的软件流程图。通过配置FIO-DIR,FIO-FLAG-C和FIO-FLAG-S这3个寄存器[7],使PF2(CMOS图像传感器复位端)为高电平,PF7(TFT片选端)为高电平,即使图像传感器处于工作状态,液晶停止工作。之后配置PPI口和DMA通道[8],使其按照要求传输图像数据。
图2 图像采集软件框图
CMOS初始化利用PF0和PF1,采用I2C工作方式对图像传感器进行配置。最后将寄存器DMA0-CONFIG和PPI-CONTROL中的最低位使能位DMAEN和PORT-EN位均置1,开启PPI和DMA0功能开始采集数据。DMA0传输完一帧数据之后进入中断,执行中断服务程序,配置寄存器PPI-CONTROL,关闭PPI功能。
BF531芯片的PF7,PF6,PF5和PF4分别与LCD的CS,RS,WR,RST连接,CS为液晶的片选端,PF7置低即为选通液晶设备。液晶接口方式为8080模式,通过控制CS,RS,RD和 WR等引脚的时序对寄存器进行配置。
系统选用分辨率为240像素×320像素的点阵式RGB彩色屏,按照8bit数据宽度把图像数据写入屏控制器内的图像RAM中,屏的显示格式设置为RGB565,一个像素16bit数据分两次传输。第一次写屏需要进行初始化,向屏的特殊寄存器中写入命令,首先写入要改写的寄存器的地址,其次将要写入的命令值通过数据口传输进去,该过程的工作时序如图3所示。
初始化完成后,将处理好的图像数据(已转换为RGB565格式)送屏显示。液晶实时显示的软件流程图如图4所示。
图3 写寄存器的工作时序
图4 液晶实时显示图像软件流程图
图像处理完成后,液晶的片选端置0,复位端置1,保证液晶正常工作。而后初始化屏幕,写入一帧数据,完成显示后重新配置PPI口,并将液晶片选端置高,将CMOS复位,保证从一帧的第一个像素开始采集,开启PPI和DMA采集下一帧。一帧采集完成后产生中断信号,图像数据经过处理送入屏幕,刷新屏的RAM数据。这样就形成了一个动态的过程,只要液晶图像数据RAM刷新速度足够快,就可以满足人眼对动态图像的要求。
本系统的设计目标是实现静态背景下运动目标的自动检测[9]。系统的性能由DSP芯片与CMOS传感器的通信速率、运动目标检测算法的时间复杂度以及DSP芯片与液晶驱动器的通信速率共同决定。
经过合理的配置OV7690在采集QVGA(320像素×240像素)图像时,速率可达 60f/s。为达到DSP芯片同摄像头在速度上的匹配,接收端使用DMA的方式来实现对传感器输出数据的存储。DMA技术的使用使得DSP在接收来自于传感器的数据时,仍能完成数据处理的任务。
在本系统中,DSP芯片运行在400MHz,并经过分频为COMS传感器提供24MHz的外部时钟,保证了图像采集的速率。考虑到实际工程当中在满足任务要求的前提下应留有充分的余量,传感器实际配置在30f/s的工作模式下。
本系统对实时性有一定要求,故在设计中采用了帧间差分法与背景查分法相结合的检测方法[10,11],以降低计算量并实现较高的处理效率。
实现运动目标检测的软件流程图如图5所示。首先利用帧间差分方法,在同一个静态背景下,将不同时刻的两幅图像进行差分运算,就能检测出运动区域。然后在确定的运动区域内结合背景差分法进行运动目标检测。
图5 运动目标检测的软件流程图
本系统使用C语言实现上述算法,并在PC机完成功能验证后,使用ADI公司的VisualDSP++开发环境对软件算法进行编译、优化操作。通过对优化后的汇编语言程序进行分析并测算的程序执行时间,得出系统对运动目标检测结果的输出速率约为20f/s。
DSP芯片同液晶驱动器的通信[12]方式同样采用DMA的方式实现,液晶控制器工作在8080模式,通过相关寄存器设置,将显示屏设置为如下模式:
由公式可以计算得出液晶控制器内部时钟频率:
Internal oscillator clock[Hz]=60×320+2+14]×16×(1.1/0.9)=394kHz。经过实际测试,液晶屏幕可稳定地工作在60f/s的频率下。
实验证明,屏幕刷新的频率达到12Hz左右,能够满足人眼对动态图像的要求。本系统还实现了实时采集图像中运动目标的检测功能。只有一组PPI口的BF531芯片按照常理无法实现同时进行图像的采集和实时显示,但是本文通过分时复用这一组PPI口,借助内置RAM的液晶控制器,很好地实现了实时的图像采集、处理与显示任务,节约了硬件成本,降低了硬件设计难度。
[1] 刘铁根.嵌入式图像检测技术 [M].北京:机械工业出版社,2008.Liu Tiegen.Embedded image detection technology[M].Beijing:Mechanical Industry Press,2008.
[2] Labrosse J J.MicroC/OS-Ⅱ:the real-time kernel[M].2nd Edition.Lawrence,USA:CRC Press,2002.
[3] 高辉,杜庆灵.视频监控系统中动目标检测算法研究[J].计算机与数字工程,2008,36(9):34-37.Gao Hui,Du Qingling.Research on moving object detection algorithm in video monitor system [J].Computer & Digital Engineering,2008,36(9):34-37.
[4] 黄永丽,曹丹华,吴裕斌.实时监控系统中运动人体图像分割[J].光电工程,2002,29(1):70-71.Huang Yongli,Cao Danhua,Wu Yubin.Segmentation of motion human body image in real-time monitor system[J].Opto-Electronic Engineering,2002,29(1):70-71.
[5] Anolog Device,Inc.Blackfin Rembedded processor ADSP-BF531/ADSP-BF532datasheet [EB/OL].[2012-10-1].http://www.analog.com/en/processors-dsp/blackfin/ADSP-BF531/products/product.html.
[6] 李武森,迟泽英,陈文建.嵌入式高速DSP视频图像处理系统中数据存储器的接口设计 [J].红外技术,2003,25(1):51-54.Li Wusen,Chi Zeying,Chen Wenjian.Configuring of data memory in high speed DSP video processing system [J].Infrared Technology,2003,25(1):51-54.
[7] Anolog Device,Inc.ADSP-BF533Blackfin processor hardware reference[EB/OL].[2012-10-1].http://www.analog.com/zh/processors-dsp/blackfin/adspbf531/products/product.html.
[8] 王金础,余松煜.TMS320C3x高速数据采集的DMA实现[J].数据采集与处理,2000,15(1):86-89.Wang Jinchu,Yu Songyu.High speed data acquisition implemented with DMA of TMS320C3x [J].Journal of Data Acquisition and Processing,2000,15(1):86-89.
[9] 谢凤英,赵丹培.Visual C++数字图像处理 [M].北京:电子工业出版社,2008.Xie Fengying,Zhao Danpei.Digital image processing using visual C++[M].Beijing:Publishing House of Electronics Industry,2008.
[10]高辉,杜庆灵.视频监控系统中动目标检测算法研究[J].计算机与数字工程,2008,36(9):34-37.Gao Hui,Du Qingling.Research on moving object detection algorithm in video monitor system [J].Computer & Digital Engineering,2008,36(9):34-37.
[11]李劲菊,朱青,王耀南.一种复杂背景下运动目标检测与跟踪方法 [J].仪器仪表学报,2010,31(10):2242-2246.Li Jinju,Zhu Qing,Wang Yaonan.Detecting and tracking method of moving target in complex environment[J].Chinese Journal of Scientific Instrument,2010,31(10):2242-2246.
[12]李立,金华标,陈智君,等.基于FPGA和DSP的高分辨率图像采集系统[J].数据采集与处理,2008,23(1):117-122.Li Li,Jin Huabiao,Chen Zhijun,et al.High resolution image data acquisition system based on FPGA and DSP[J].Journal of Data Acquisition and Processing,2008,23(1):117-122.