《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 基于DSP的图像采集及处理系统的设计与实现

基于DSP的图像采集及处理系统的设计与实现

2009-05-19
作者:刘红喜1,李长江1,孙俊喜2

  摘 要: 介绍了一种利用CCD摄像头、SAA7111视频解码芯片、高速可读写存储器SRAM,基于DSP与CPLD的图像采集与处理系统。系统完成了图像的快速采集、存储及数据处理。文章详细论述了系统的总体结构、部分硬件设计,简要叙述了相应图像算法的实现方法。给出了系统实例和实验结果。
  关键词: DSP;图像采集;图像处理;边缘提取

 

  图像采集处理系统大都基于摄像机、图像采集卡和计算机,图像理解和处理算法全部以软件方式实现。这是因为实时数字图像处理信息量和计算量大,而大多数采集卡基于成本考虑没有处理器和大容量的存储器,绝大部分任务必须依靠计算机来完成。但是,这种计算机参与的系统在工业或军事等复杂环境下应用极为不便。基于这种要求,许多专用图像处理系统应运而生[1]
  随着数字图像处理系统在当今工业及医疗领域的应用日益广泛,对图像处理系统的实时性和准确性也提出了更高的要求。而一个完整的视频图像处理系统不但要具备图像信号的采集功能,还要求能对图像进行实时显示,且要求完成图像信号的分析及处理算法。通常这些算法的运算量大,同时又要满足实时显示要求。DSP芯片以其适应于高速数字信号处理的内部结构,在图像处理领域得到不可替代的地位。
1 系统的结构框图
  本系统采用CCD摄像头、视频解码芯片SAA7111、CPLD、高速可读写存储器SRAM、AL250、缓冲器SN74LVC16245及数字信号处理器DSP等核心部件。由于采集的是一幅静态图像,所以选择了TI公司C54X系列的TMS320VC5416作为系统的核心处理器。系统框图如图1所示。

 

  系统采用主从结构,其中单片机是主机,主要负责系统工作的协调及利用I2C对SAA7111及AL250初始化。DSP作为从机,主要完成图像的算法处理。这样,在充分发挥单片机在任务调度方面优势的同时,也发挥了DSP在数字信号处理方面的优势,可以专注地完成图像处理,使系统的效率达到最优。CPLD是用来最终完成图像采集的器件,实质上起到了总线控制器的作用,通过编写的VHDL程序实现系统要求。
  图像采集是通过CCD图像传感器采集一帧PAL制的视频图像,利用视频解码芯片SAA7111将它转化为数字视频数据,通过CPLD将图像数据存储到SRAM中,DSP通过CPLD将数据从SRAM中读到内部数据存储器中,然后对其进行算法上的处理,再把经过处理后的数据又存储到SRAM中去。通过AL250将YUV格式的数字视频图像数据转换成RGB格式的数字视频数据,在CRT显示器上显示。
2 系统硬件
  DSP主要应用在图像算法的实现上。系统选用TI公司C54系列的TMS320VC5416芯片。它的程序ROM为16 K字,RAM为128 K字,1个并行口,3个多通道缓冲串口,设备电压3.3 V,核心电压1.6 V,指令周期为6.25ns[2]
2.1 系统前端图像采集
  图像获取模块处于系统最前端,其性能的优劣将直接影响整个系统视频图像信号的质量。因为本文还要对采集的图像做后期处理,对图像的成像质量要求比较高,所以采集设备选用CCD摄像头。
  由于CCD的视频输入信号是PAL制模拟信号,所以需要视频解码芯片将模拟信号转换成数字视频信号数据,通过解码芯片对其进行解码,变成可编程的数字信号。
  SAA7111是Philips半导体公司生产的一种视频输入处理器,在视频采集系统中,通常需要这类的视频解码器作为视频前端。将PAL制式的模拟视频信号转换为YUV格式的数字图像信号输出。它采用CMOS工艺,其功耗小、电压低、体积小、温度适应范围广,具有以下特点:
  (1)四路模拟输入信号通道,如(4*CVBS,2*Y/C)或者(2*CVBS,1*Y/C);
    (2)所有不同的制式标准只需同一频率的晶振(24.576 MHz);
  (3)自动进行50/60 Hz场频的检测,自动进行标准PAL制式和NTSC制式之间的转换;
  (4)具有实时状态信息输出;
  (5)数据输出格式多样,具体格式如下:4:1:1的YUV格式(12位)、4:2:2的YUV格式(16位)、4:2:2的YUV格式[按照CCIR—656标准](8位)、5:6:5的RGB格式(16位)、8:8:8的RGB格式(24位);
    (6)可通过I2C总线接受外部控制器的完全控制。
    在本系统中,将图像解码后的输出数字视频数据设计为YUV422(16 bit)格式,分辨率为768×625,每行的有效数据为720个像素点,每个像素点占用16 bit的存储空间。其中每个像素点包含一个亮度信号(Y),两个色差信号(U分量、V分量)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。以四个像素点为例,解码后产生的YUV422的格式数据与其原图像数据及其显示图像数据如下:
  原图的四个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
  YUV422存放的码流为:Y0 U0 Y1 V1 Y2 U2 Y3 V3
  映射出的四个像素为:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]
  SAA7111在将视频信号解码的同时,另外还输出行参考HREF、场参考VREF、行同步HS、 场同步VS、行锁定信号LLC(27M) 、像素时钟信号LLC2(13.5 MHz)、时钟参考信号CREF(相对LLC2有一定的延时)、奇偶场信号RST0等。这些信号与解码后的数字视频数据一起输入到CPLD中,CPLD由这些信号产生像素信号在SRAM中的存储地址信号和写控制信号。当存储完一帧图像数据时,CPLD就不再向SRAM 存储数据,并通知DSP进入图像处理的运算。SAA7111的硬件原理图见图2。

 

2.2 存储器SRAM
  本文采集的图像数字像素数据为720×576=414 720个像素点,又因为数字视频格式是YUV422格式,每个像素点占用16 bit个存储空间,所以一副图像的存储空间最少需要420 K×16 bit的存储器空间。
  所以选用的存储器是用两片512 K×8 bit存储器合并在一起产生512 K×16 bit的存储空间,可以适用本方案的需要。
  因为原输入的CVBS视频信号时采用隔行扫描的方式,所以解码后产生的数据先是奇数行的视频数据,然后才是偶数行的数据,以奇偶场信号RST0和场参考(VREF)信号为标志。为了后期对数据的处理方便,本系统在存储数据时将奇偶行信号合并存储,如图3所示。

 

2.3 视频编码
  因为要在CRT显示器上实时显示出采集的图像和经过算法处理过的图像,CRT显示器的数据显示格式为逐行显示的VGA信号,所以需要将YUV格式转换成RGB格式。本文选用一个专用的视频编码芯片AL250来实现,这样可减少软件设计的复杂度。虽然在硬件上增加了系统复杂度,但却使系统的模块化设计更加清楚,流程更简洁,接口的设计也简单了。
  AL250是AVER Logic公司生产的一款显示转换控制芯片,主要用于LCDVGA显示。它能够接收隔行NTSC或PAL、ITU-RBT601(CCIR601)或平方像素、YUV422或RGB565数字信号,将其转换成普通CRT显示器可以接收的模拟RGB格式视频信号RGB565格式的逐行数字视频信号。AL250有多种控制功能,可由微处理器通过I2C接口控制。该芯片供电电压为3.3 V或5 V,采用64引脚QFP封装形式。AL250电路原理图如图4所示。

2.4 I2C总线
  由于SAA7111和AL250都是利用I2C总线进行初始化编程及方式选择,因此需要用单片机的模拟I2C总线接口,从而实现单片机对SAA7111和AL250的初始化与控制。将单片机的P1.2、P1.3设为I2C总线的两条线SCL、SDA;P3.4、P3.5设置为CPLD与AT89C2051控制线的交换接口,CPLD通过这两条线设置单片机的I2C总线控制量;利用P1.6、P1.7的两个I/O口可以对整个系统的操作过程人为进行控制。I2C总线电路原理图如图5。

3 软件部分
3.1 图像算法
  DSP的软件编程既可以使用汇编语言,也可以使用C语言。使用汇编语言的优点是可以使系统的执行速度很快,但编写起来比较费时费力;使用C语言可以提高开发效率,使程序可以和高级语言接轨,但是CCS对C语言的编译效率较低,大约在30%左右。在系统的运算量不大、实时性要求不强的情况下,使用C语言比较合适;而在系统运算量大、实时性要求较高的情况下,使用汇编语言比较合适。由于本系统的视频数据的处理算法运算量不大、实时性要求又不高,所以采用C语言进行软件编程。
  系统利用CPLD将DSP的三个I/O口空间定义为地址总线接口和数据总线接口。因为SRAM数据共有512 K×16 bit个存储空间,地址线有19条,数据线16条。所以将I/O口空间的0000H定义为地址总线的高3位地址,将I/O口空间的0001H定义为地址总线的低16位地址,将I/O口空间的0002H定义为数据总线的16位地址。这样做可以不占用DSP的数据及地址总线,方便系统以后外扩存储器,做这两个接口也加强了系统板的通用性。
    由于最终存储的数字视频格式是YUV数据格式,所以进行算法设计时要针对这种格式进行设计。进行灰度算法设计时可以将色度信号也就是UV信号的数据全部置0。实现的结果是亮度信号Y信号被分成0~255种格式,再将色度信号置零,就实现了灰度算法。而反色算法就是在将灰度算法的亮度信号Y信号数据按位取反,所得的结果就是反色算法的结果。而边缘提取算法是在首先进行灰度图像算法的基础上,得到的灰度运算结果后进行的运算。
  图像上区域的边缘反映为相邻像素间灰度图像的跃变。边缘检测可借助空域微分算法通过卷积和类似卷积的运算实现。对于数字图像,求导实际上运用的是求差分。图像处理中最为常用的边缘检测算法有梯度法、Roberts梯度、Sobel算法和Laplacian 算法等。本系统采用的是Sobel算法[3]。3×3邻域内像素的编码如图6,采用的算法见式(1)。
    


3.2 系统软件流程
  系统软件流程图如图7所示,系统执行上电加载DSP程序、初始化程序后,用I2C初始化SAA7111及AL250芯片。然后DSP即发送开始采集指令给CPLD,实现总线控制权的交接,CPLD获得总线控制权。通过CCD采集一帧图像,利用SAA7111进行数字视频解码,存储到SRAM中。当一帧数据写入帧缓存后,CPLD关闭SAA7111A的视频输出,放弃总线控制权,并发送信号给DSP,通知DSP进入图像处理程序。DSP通过CPLD及缓冲器从SRAM中取得时钟视频数据,同时将数据通过AL250视频编码芯片在CRT显示器上显示。


  本文给出了基于DSP和CPLD结构的图像采集和处理系统的一种设计方法。描述了系统的CCD+CPLD+DSP的硬件构成框图。利用CCD和SAA7111进行前端的视频采集,SRAM作为帧存储器,AL250作为图像的编码显示,AT89C2051模拟I2C总线对SAA7111及AL250进行初始化,CPLD实质上起总线控制器的作用,DSP只作图像算法使用,图像采集独立自主进行,不参与采集过程,节省了DSP的时间,实时性好,实现了模块化设计的思想。系统在软件上对图像实现了灰度、边缘提取、反色的算法。
  该系统工作速率高、实时性强、结构清晰、智能度高,具有在线可编程的特点。且以它作为硬件平台编写图像处理的算法方便。该系统在实际中可以应用于视频图像监控、图像自动检测、医疗及军事检测等场所。系统的软、硬件环境已通过应用性、稳定性等测试,具有良好的市场前景。


参考文献
[1] 徐婉莹,刘建军,黄新生.基于CPLD和DSP的高速图像采集技术研究[J].电子工程师,2004(6).
[2] TMS320VC5416 Fixed-Point Digital Signal Processor.Texas Instruments Incorpora-ted, Literature[Z]Number:SPRS095H,2001

[3] 陆宗骐.C/C++图像处理编程[M].北京:清华大学出版社,2005.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。