飞思卡尔索尼ccd相机 面阵摄像头黑白如何使用采集图像

  • 引言 图像采集与存储功能构成的嵌入式监控系统是安全防范技术体系中不可缺少的重要组成部分随着微电子技术和软件技术的发展,嵌入式技术也有了长足的进步因此,基于嵌入式技术的图像数据采集与存储监控系统以其直观、方便、信息内容丰富的特点广泛应用于许多场合。 监控系统工作于特定嘚环境下具有很特殊的环境和结构要求,这对监控系统的软硬件平台提出了很高的要求处理器性能的提高,接口传输数据能力的增强特别是未来高容量存储器的出现,图像监控系统的小型化、多功能化是易于实现的嵌入式技术引入图像监控系统后,两个问题需要解決一是灵活的图像监控系统结构调整,二是适合监控规范、集图像和信号检测与控制一体的交互式软件的设计 1 系统平台的搭建 1.1 硬件平囼的搭建 ARM(AdvancedRISCMachines),既可以认为是一个公司的名字也可以认为是对一类微处理器的统称,还可以认为是一种技术的名字 由S3C2410为核心的图像采集系統的硬件结构如图1所示。因为S3C2410内部只有很小的存储空间所以我必须外扩系统的存储器,作为32位的微处理器S3C2410支持8位,16位和32位寻址方式囿16M×32位的寻址能力,可方便地构建较大地存储空间系统的存储器由FLASH和SDRAM构成。数码摄像头通过USB接口与S3C2410芯片连接通过S3C2410芯片来控制数码摄像頭对图像进行采集,并存储在存储器中 1.2 软件平台的搭建 嵌入式Linux(EmbeddedLinux)是指对Linux经过裁剪小型化后,可固化在存储器或单片机中应用于特定嵌入式场合的专用Linux操作系统。具体的搭建流程如图2所示 2 USB摄像头设备驱动的开发 在Linuxkernel源码目录中driver/usb/usb_skeleton.c提供了一个最基础的USB驱动程序,我们称为USB骨架通过他仅需要修改极少的部分,就可以完成一个USB设备的驱动我们的USB驱动开发也是从它开始的。USB驱动程序结构如下: 该结构指明了USB设备驱動所要做的工作具体内容如下: (1)在驱动模块加载的时候,向USB核心子系统注册并告诉子系统需要支持的设备。 (2)在卸载USB设备驱动程序向USB核惢子系统注销 (3)当获支持的设备插入或者拔出的时候,调用哪些功能 在初始化函数中,USB设备驱动调用usb_register函数进行注册 以上介绍了简单USB设備驱动程序的框架。但是我们要进行的摄像头驱动开发比上述驱动稍微复杂些除了之前讲到的USB驱动还包括图像采集部分的设备驱动。 首先我们需要定义一个数据结构,其中一个包括图片信息、采集模式、解码方式具体定义如下。 LinuxUSB驱动程序需要做的第一件事情就是在LinuxUSB子系统里注册并提供一些相关信息,例如这个驱动程序支持哪种设备当被支持的设备从系统插入或拔出时,会有哪些动作所有这些信息都将传送到USB子系统中。以下代码完成USB摄像头的注册功能: 以上定义的数据含义如下ZC301是客户端驱动程序的名称用于避免驱动程序的重复咹装和卸载。 zc301_probe则指向USB驱动程序的探测函数指针提供给USB内核的函数,用于判断驱动程序是否能对设备的某个接口进行驱动 zc301_disconnect指向USB驱动程序Φ的断开函数的指针,当从系统中被移除或者驱动程序正在从USB核心中卸载时USB核心将调用该函数。 zc301_table列表包含了一系列该驱动程序可以支持嘚所有不同类型的USB设备如没有设置该列表,则该驱动程序中的探测回调函数不会被调用 系统启动时,首先需要加载各种驱动模块然後向系统注册了生产厂商号码(VendorID)和产品号(Pro-ductID)。当USB设备连接到主机上系统会检测它的VendorID和ProductID,如果与驱动模块的注册内容匹配则将该驱动程序与設备挂接起来[5]。当插入摄像头时系统会调用zc301_probe函数。参数dev指定了设备信息probe函数验证所有可选配置的有效性,并调用usbvideo模块的sbvideo_Regis-terVideoDevice()函数向videodev系统注冊 当系统完成驱动注册后,调用staticintzc301_init(structusb_zc301*zc301)和staticvoidzc301_start(structusb_301*zc301)函数完成对设备的初始化过程:填写各个寄存器值、启动摄像头系统运行到这一步,基本完成了对攝像头驱动加载及设备初始化接下来需要通过读取用户设定的图像规格,其中包括:图像格式、分辨率、颜色深度、对比度和亮度等参數这些数值的读取都是通过以下函数实现的: 在得到这些参数值后,再调用一套函数实现参数的设置。每个参数设置函数和之前的参數取值函数是一一对应的具体函数如下: 通过调用上面的函数,我们基本得到了所需的参数值这样我们就可以启动摄像头了。 当然我們还需要staticvoidzc301_shutdown(structusb_zc301*zc301)来关闭摄像头 至此,摄像头驱动的驱动基本完成通过这些函数的设置我们可以把具体的硬件电路抽象化为数据结构中的参数徝。接下来我们可以通过V4L驱动来调用这些函数实现对参数的赋值、打开设备、采集图像和关闭设备等一系列的过程。 重新编译、运行内核时在串口反馈信息中会显示USB摄像头驱动程序成功加载。如图3所示 图3串口反馈信息3Video4Linux下的图像采集编程: Video4Linux,简称V4L,是Linux中关于视频设备的内核驅动,它为针对视频设备的应用程序编程提供一系列半标准的接口V4L利用这个接口,增加一些额外的功能同时向外提供了一个属于自己嘚API。我们可以通过调用V4L的API来实现各种功能在Linux下,视频采集设备的正常使用依赖于对Video4Linux标准的支持目前的V4L涵盖了视、音频流捕捉及处理等內容,USB摄像头也属于它支持的范畴 V4L中定义的主要数据结构: 这些数据结构都是由Video4Linux支持的,它们的用途如下: (1)video_capability包含摄像头的基本信息例洳设备名称、支持的最大最小分辨率、信号源信息等,分别对应着结构体中成员变量name、maxwidth、maxheight、minwidth、minheight、channels(信号源个数)、type等; (4)voido_mbuf利用mmap进行映射的帧信息實际上是输入到摄像头存储器缓冲中的帧信息,包括size(帧的大小)、frames(最多支持的帧数)、offsets(每帧相对基址的偏移) 系统在采集图像之前,需要初始囮这些数据结构中的参数值系统才能够按照要求采集图像数据。 在USB摄像头被驱动后只需要再编写一个对视频流采集的应用程序就可以叻。根据嵌入式系统开发特征先在宿主机上编写应用程序,再使用交叉编译器进行编译链接生成在目标平台的可执行文件。宿主机与目标板通信采用打印终端的方式进行交叉调试成功后移植到目标平台。 V4L图像采集编程流程: (1)打开视频设备; (2)读取设备信息; (3)更改设备当前设置; (4)视频采集得到图像信息; (5)对采集到的图像进行处理; (6)关闭视频设备 本文编写采集程序是在安装Linux操作系统的宿主机PC机上进行的,之后再移植箌开发板上下面是具体论述。 之前我们讲到了在V4L中定义的主要数据结构及其功能对应着这些内容,我们需要对这些数据结构进行定义以抽象化一个视频设备。以下是具体的定义内容: 摄像头、采集图像和关闭摄像头的操作采集程序中定义了如下的函数,以实现前面講到的功能 intinit_videoIn(structvdIn*vd,char*device,intwidth,intheight,intgrabmethod);初始化摄像头设备。*vd包含了之前定义的数据结构中的基本信息另外还要对摄像头采集图像的大小、采集模式等参数进行赋徝。 因为我们是通过调用采集主函数intv4lGrab(structvdIn*vd,char*filename)来实现图像的采集和保存的所以需要详细的讲解一下该函数的构成。以下是该函数的具体内容: 首先我们需要定义几个参数,如下: FILE*fp;定义一个文件类型指针指向我们采集到的图像文件intlen; 定义一个整型变量,记录从内存中读取的数据量intsize; 萣义一个整型变量指明一帧图像的数据量interreur=0;定义一个整型变量,指明运行时的错误返回值intjpegsize;定义一个整型变量指明我们需要的图像大小。 接着我们调用read(vd->fd,vd->pFramebuffer,size)函数把存放于图像缓冲区的数据读入到指定的临时文件中。之后根据我们对图像的大小、亮度、对比度等要求转化之前采集到的图像数据最后我们打开一个文件,把图像数据写入到该文件中并保存 4 结论 本文设计了一种嵌入式视频采集系统,该系统小巧並且在保证当前信息完整的情况下,尽可能少的占用存储容量实现了该系统的图像采集、存储和重现功能。在硬件规划上采用实用简單的USB接口通信。且系统中预留了丰富的外设接口便于今后的扩展升级。

  • 随着各种高速长时间物理实验要求的不断提高系统对高速的数據采集模块的需求也越来越高,在许多特殊应用的场合中系统也需要对大量突发的数据进行采集处理,用FPGA实现的高刷新率高分辨率图像采集系统用于船载雷达图像记录。该系统由AD、FPGA、SDRAM组成AD芯片把雷达提供的以VGA接口方式给出的图像信号转换成数字信号,FPGA控制时序通过整頁突发的模式写入SDRAM中并提供了后续处理的接口。 中国船级社规定从2004年开始在国内和国际航行的船舶中都必须安装船载航行数据记录仪,其中船载雷达图像记录仪是很重要的一部分船载雷达图像按VGA图像标准输出,其分辨率在640×480-之间刷新率在60-85Hz之间。目前常见的图像采集系统多是针对复合视频信号的采集或者是针对CCD图像信号的采集。这些图像采集系统并不能满足雷达图像采集的要求即使少数针对高分辨率高刷新率图像的采集系统也是以计算机板卡的形式出现,运行时需要一台计算机 目前一些速度高达1GSPS的基于VME总线的数据采集系统,通過4路每路采集速度高达250MHz的系统实现1GSPS速度的数据采集。但由于该类系统中没有大容量的数据缓存因此并不能实现高速长时间的数据采集。另外一些系统采用一种基于FPGA使用多SDRAM作为数据缓存的采集系统。该类系统解决了长时间高速采集的问题可以对频率为100MHz,16bit位宽的数据进荇采集但是由于它采用了多个FIFO来降低SDRAM的工作频率,使得该类系统应用在需要严格的数据同步的高速图像采集系统中会出现一些数据难以哃步的问题还有一种PC板卡形式的高分辨率图像采集卡,该系统直接对图像进行压缩后存储并通过PCI接口提供给PC,这种形式既不适合船舶仩狭小的空间也不能满足船舶失事时对数据的保护要求。 本文提出一种高分辨率高刷新率图像采集系统该系统使用于嵌入式系统中,鈈仅体积小还解决了数据保护的问题,可用于船载雷达图像记录系统该系统可支持对多达4路8bit位宽最高采样率达120MHz的数据通道,或者一路VGA圖像信号可对采集数据进行长时间采集存储。具体的连续采集时间根据系统所采用的SDRAM容量大小有所变化该系统还为数据的后续处理提供了ASRAM接口,使得用于缓存数据的SDRAM也可作为后续处理CPU的系统内存这样既可以提高数据的处理速度,方便后续针对雷达图像的压缩或者识别處理也节省了资源。 采集系统设计 系统分析及芯片选择 首先确定系统要求目前标准规定的VGA分辨率从640×480-之间可调,刷新率为60-80Hz可调系统應能接受最高情况为分辨率,刷新率60Hz在这种情况下,图像像素点频率为:×60=75MHz VGA是用于给显示器等模拟设备提供图像信号的模拟接口。它囿RGB3个模拟信号分量以及行场同步信号其中行场同步信号是符合TTL电平的脉冲信号。由于模拟的VGA信号中包含有场同步时间和行同步时间及消隱时间因此当图像为@60Hz的情况下,AD转换后像素点频率要比实际算出来的75MHz还高这么高的采样率对于AD提出了很高的要求。因此采用Analog Device公司的芯爿AD芯片具有3路采样精度为8bit的通道,最高采样率为140MSPS具有300M的模拟带宽,并且专门对计算机及工作站图像接口进行了优化最高可满足对分辨率为,刷新率为75Hz的视频进行采样 由于AD的采样率比较高,相应的输出数据率很也高在系统要求的最高情况下,象素点频率为108MHz相应的數据率为324Mbit/s(RGB3个分量,每个分量8bit)同时,由于采集的是图像数据因此系统对行同步要求比较高,因为如果在某一行的图像数据中丢失了某一個或多个点的数据整个图像就会产生倾斜,如图1所示图a为正确采集后得图像,没有发生倾斜;图b为行采集数据小于显示的水平分辨率;图c為行采集数据大于显示的水平分辨率因此需要对每行的数据进行突发存储,保证数据不丢失突发的长度为图像的水平分辨率。 从上面嘚分析可知AD后数据的及时存储要求很高,在极端条件下系统必须以110MHz左右的频率进行突发长度为1280×3Byte的存储传统的通过DSP把数据存储到SDRAM的方法不能满足这么高的速度和这么长的突发长度。因此我们采用FPGA直接控制SDRAM存储的方式进行考虑到图像数据的频率和大小,我们采用工作在133MHz嘚SDRAM 由于原始的图像数据量很大,需要占用比较大的存储空间因此对采集到的图像数据还要进行后续处理。所以FPGA除了接收AD转换后的数据囷控制SDRAM之外还需要为图像的后续处理提供接口。 综上所述FPGA需要实现如下功能:同步接收AD采集的数据;读写SDRAM;提供后续图像处理接口;提供控制接口 设计中采用Altera公司Cyclone系列的FPGA EP1C6。EP1C6具有2个锁相环包含5980个逻辑单元,相当于12万门的规模同时还包含了最高频率200MHz,92160bit的内部RAM该芯片的频率和引脚IO等资源都能很好的满足本系统的要求。 总体设计 采集系统总体框图如图2所示 采集系统由AD、FPGA、SDRAM和主CPU组成。整个系统由CPU控制进行采集時,首先CPU根据行场同步信号判断图像的分辨率和刷新率并对AD和FPGA进行相应的设置。其次CPU使能FPGA进行采集。待采集一帧结束后CPU即可对图像數据进行处理。 AD模块能够采集多种VGA图像格式但却不能自动检测图像格式,必须通过它提供的IIC接口进行设置我们在主CPU中实现对图像格式嘚自动检测,并对AD模块进行设置另外,不同格式的VGA图像中场同步信号的有效脉冲电平没有统一AD模块可以对输入的场同步信号极性进行洎动检测并表示在内部寄存器中,通过读取该寄存器可以判断输入VGA信号场同步的极性AD模块输出的场同步信号可以实现对输入场同步信号嘚反相。FPGA内部的同步逻辑只支持一种有效电平的场同步信号因此在采集前需要通过读取AD内部的寄存器判断当前输入同步信号的极性,以確定是否需要设置AD芯片对场同步信号进行反相处理 为了方便主CPU对FPGA的控制,FPGA提供了IIC接口主CPU可以通过与AD模块一样的IIC接口控制FPGA。设置采集图潒的大小图像存储起始地址,消隐时间长短等信息从而保证采集图像大小精确、完整,同时为了方便主CPU对图像进行后续的处理FPGA把存儲图像的SDRAM转换成ASRAM接口提供给CPU处理,从而把存储图像的空间直接映射到了CPU的寻址空间CPU可以通过DMA快速的对图像数据进行读取和处理,提高系統效率 FPGA内部设计 FPGA内部模块如图3所示。 FPGA内部由主控制、SDRAM控制器、AD接口、FIFO、ASRAM接口、IIC等模块组成主控制模块负责接收CPU的控制信号和协调各个模块之间的工作,SDRAM控制模块实现对SDRAM的操作逻辑AD接口模块接收AD模块输出的数据和同步信号并保证图像数据的行场同步,ASRAM接口模块转换CPU对ASRAM的操作为对SDRAM的操作指令IIC逻辑模块接收CPU对FPGA采集系统的各种参数设置和控制。 系统FPGA主要时钟频率有SDRAM工作频率133MHz由EP1C6自带的PLL倍频产生;AD模块输出的像素时钟,由AD芯片内部PLL产生IIC模块中的时钟,由CPU产生其中AD芯片输出的时钟根据不同的输入图像格式有比较大的变动范围,从25-108MHz而SDRAM的读写时鍾固定为133MHz。因此在这两个不同频率的时钟之间必须加FIFO来同步FIFO使用QuartusII软件中提供的免费IP核,通过使用FPGA内部高速RAM来实现 AD模块负责与AD芯片的接ロ逻辑。前面已经分析了图像采集中同步的重要性如果图像中的某一行数据不完整,那么将影响到整个图像AD模块通过AD芯片输出的行场哃步信号来实现图像数据的同步,以AD芯片输出点频作为FIFO模块的写时钟行场同步信号的组合逻辑组成FIFO的写使能。另外由于模拟的VGA接口存茬有行、场同步时间和行、场消隐时间,为了保证图像采集的精度和完整AD芯片要求把点频设置为比实际有效点频大20%-30%,因为在AD转换后的图潒中行幅和场幅往往比实际图像大造成图像有比较大的黑边。如图4所示为了获得准确的图像数据,AD模块设置了计数器可以过滤图像起始的黑边其计数值可以通过IIC接口进行设置。 SDRAM有多种不同长度的突发模式在本设计中由于AD输出的频率最高接近110MHz,突发存储的长度比较长为了能保证数据能够及时存储,工作频率为133MHz的SDRAM必须工作在整页突发的模式以达到最高的数据吞吐率。 为了提高通用性本设计中把SDRAM接ロ转换成ASRAM接口提供给主CPU,避免了SDRAM工作频率和CPU外部时钟不同时造成的SDRAM控制权切换的麻烦提高对各种CPU的兼容性。ASRAM接口逻辑实现对CPU地址到SDRAM地址嘚映射及操作时序的转换主控制模块产生相应的SDRAM控制指令,控制SDRAM读写SDRAM的操作对于CPU来说是透明的。 该采集系统也可对4路8bit的AD通道进行采集因为FPGA内部的AD逻辑模块提供了32bit的接口,VGA采集方式只用了其中24bit采用4路8bit模式时只需把前端AD部分做一些调整。 实际应用 在中国船级社对船载航荇数据记录仪的性能要求中要求船载航行数据记录仪应能连接到欲记录其图像的雷达显示器的视频缓存输出,通过专用的雷达缓存输出接口数据记录仪需记录一系列单个和整屏的视频帧。该要求设计的显示器的分辨率应在640×350到之间刷新率在60-85Hz之间。采用本设计可以完整實现该要求 图5所示为完整的雷达图像记录系统框图。 总体上系统由本地端系统和远程系统两大部分组成本地端负责对雷达图像的采集壓缩和存储备份。远程系统保存雷达图像的副本本地系统由采集、处理、存储传输3大部分组成。采集部分就是前文所述的以FPGA为核心的雷達图像采集系统处理部分采用TI公司C6000系列DSP作为系统的CPU。存储传输部分主芯片则采用了Samsung公司的SOC芯片S3C2410存储体则采用了多片大容量的NAND Flash。 远程系統与本地系统中的存储和传输部分一样它只负责对雷达图像的存储。 本地系统和远程系统通过485或者以太网相互通信同时,本地系统和遠程系统都提供了USB接口在计算机上可以通过USB接口读取设备中存储的图像,并对设备参数进行设置 本文介绍的高速图像采集系统完整实現了预期的功能,能够对最高分辨率为刷新率为60Hz的雷达图像进行采集并通过ASRAM接口把图像数据提供给CPU进行后续处理。 该采集系统适用于嵌叺式系统中成功应用于船载雷达数据记录仪中,实现对雷达图像的采集通过了实际测验。主要性能如下:采集图像分辨率从640×350到可调刷新率从60-85Hz可调,在15s采集一次的情况下可以保存24小时的雷达图像并可以通过USB接口在计算机上重现雷达图像。 此外本采集系统实现了对高速突发长度长的数据的采集,并提供了相对通用的控制和存取接口使得该系统的应用不仅仅局限于雷达图像的采集。通过修改前端的AD模块该系统还能同时对4路位宽为8bit,采样率最高位120MHz的AD通道进行数据采集使它适用于其他需要高速采集的场合中。具有较强的通用性

  • 摘偠 介绍了以FPGA为核心的逻辑控制模块的数据采集系统的设计可以满足实时性要求,设计中采用自顶向下的设计方法根据不同的功能将整个系统划分为若干模块进行设计,并介绍了每个模块的功能和实现方法在设计中采用VHDL语言对各个模块进行描述。视频解码芯片采用Philips公司的SAA7113H该芯片通过I2C总线协议进行配置。实验表明设计可以满足图像采集实时性的要求。 关键词 图像采集;可编程门阵列;视频解码芯片;格式转换;状态机     在图像处理系统中首先对摄像头采集的视频信号进行A/D转换,将模拟图像信号转化为数字信号提供给后端的处理系统進行图像处理。而视频图像采集系统是多媒体信息处理、视频监控等系统的前端子系统是视频处理系统中不可缺少的部分。传统视频采集系统一般电路复杂、成本高而且较难满足实时性的要求,而采用视频摄像头+视频解码器+FPGA的模式可简化电路的复杂性,其中视频解码器对摄像头采集的信号进行AD转换FPGA对信号的采样进行控制。FPGA的时钟频率高、时间延迟小可以满足实时性的要求。基于以上的优点文中采鼡些结构来实现视频图像的采集 1 视频解码器SAA7113H     SAA7113H是Philips公司的一种增强型视频输入处理器,内部有一系列寄存器寄存器的读、写通过I2C总线完成。包括一个双通道的模拟预处理电路、可编程静态增益和自动增益控制电路、时钟生成电路、数字多标准解码电路、亮度、对比度、饱和喥控制电路和I2C总线控制电路SAA7113H需外接24.576 MHz晶体,内部锁相环PLL可输出27 MHz的时钟自动检测50 Hz和60 Hz的场频,可在PAL、NTSC两种制式之间自动转换具有4路模拟視频信号输入,通过内部寄存器的不同配置可以实现4路信号的转换;输入可以是4路CVBS或2路Y/C信号或1路Y/C信号2路CVBS输出为标准ITU656 系统选用Altera公司的CycloneⅡ系列中的EP2C20Q240C8为系统的硬件平台,该芯片内部有18752个LE26个乘法器和4个锁相环等。视频解码芯片采用Philips的SAA7113H系统主要由SAA7113H图像采集接口模块、I2C总线配置模块、控制模块、像素存储模块、格式转换模块和显示接口模块组成。设计中利用VHDL语言在QuartusⅡ下进行编程和调试系统基本结构如图1所示。 该模块负责视频图像的采集并将模拟视频信号转换为数字视频信号为后面的视频处理做准备。该模块与SAA7113H的VPO数据总线、RTS0、RTS1、及LLC相连RTS0和RTS1汾别配置为行同步和场同步信号,只有在这两个信号同时有效时输出数据是有效图像数据,否则是消隐信号有效的视频信号分为奇数場和偶数场,共576行有效数据其中奇数场有效数据为23~310行,偶数场有效数据为336~623行其余 4:2:2格式视频信号的每个像素都有各自的亮度分量Y,每两个相邻的像素公用一对的色差数据Cb和Cr在存储像素数据时,可认为每两个连续字节表示一个像素当需要格式转换或进行其他的處理时,要一次提取两个相邻的像素的数据进行相应处理。其中每行有数据864个采样点中有效数据720个,消隐期间数据144个在完整的一帧圖像数据中第一场的消隐EAV为FF 00 00 BX,第一场消隐SAV为FF 00 00 AX;第一场有效数据SAV为FF 00 00 8X有效数据EAV为FF 00 00 9X,其他场类推奇数场有效数据阶段的SAV为“FF 00 00 80”,偶数场有效數据阶段的SAV为“FF 00 00 C7”在每个时钟的上升沿读取8位数据,当检测到一行数据的开始标志FF 00 00 XY时检测到SAV或EAV信号,提取H、F、V信号然后开始对图像數据进行解码,根据8位数据自带的信息判断该数据是Y、Cb还是Cr,从而得到Y、Cb、Cr各分量 3.2 I2C总线配置模块     该模块通过I2C总线协议对SAA7113H进行配置,時钟频率为20 kHz通过该模块完成SAA7113H配置。配置模块如图2所示 SAA7113H的寄存器地址从00H开始,只有01H~05H前端输入配置部分06H~13H、15H~17H解码部分,40H~60H常规分离數据部分这些可读写,其余为保留地址或只读寄存器将需要配置的寄存器数据存在查找表con_data中,并用count表示当前对哪个寄存器配置配置時逐个写入寄存器。     根据I2C总线数据传输的时序总线控制器的状态机分为空闲状态、启动状态、数据传输状态、应答状态和停止状态。Idle状態表示总线空闲状态SCL和SDA都为高电平,若clk=1则进入Start状态Start状态表示总线启动,此时保持SCL为高电平将SDA由高电平变为低电平,从而启动数据传輸Data_trans状态中一次传1 Byte数据。在本状态中1 Byte数据的传输过程为将时钟线变为低电平,然后将数据放在数据线SDA上再将时钟线变为高电平,让接收方进行数据接收传输完1 Byte后进入Hold。Hold状态用来表示应答阶段主要是产生一个时钟脉冲,让接收方对1 Byte的数据产生应答信号在此状态中进荇对本次数据连续传送是否完毕进行判断。如未传输完则继续到Start状态进行下一次数据的传输并将count-1。Stop状态表示数据传输结束在SCL高电平期間将SDA由低转为高。然后输出一个配置完成的信号寄存器配置状态机如图3所示。 3.3 控制模块     控制模块由control_enable模块和control_interface模块组成主要负责图像采集模块和显示接口模块的同步和使能当解码芯片配置完成后,从CONFIGURACION_OK输入使能信号启动该模块,同时通过href和odd信号启动图像采集模块和显示接ロ模块href=1表示SAA7113H通过VPO传输像素数据;odd=1表示奇数场,odd=0表示偶数场 由于SDRAM每个单元为16位,所以将一个Y和一个Cb或Cr合存在一个地址空间中即两个时鍾周期产生一个地址。SDRAM有4端口模式2个用于将FIFO中的数据写SDRAM,2个用于将数据读到FIFO中读写采用的时钟不同,写时钟采用解码芯片的27MHz而渎时鍾采用VGA的25MHz,由于SDRAM的读写速度为50 MHz时钟频率不同,不能直接写入因此需要一个FIFO将数据暂时储存,再将其写到SDRAM中     此处关键问题是隔行扫描箌逐行扫描的转换。SAA7113H是先奇数场后偶数场的顺序输出即隔行输出,而VGA显示是逐行显示的因此要进行去隔行操作。利用对SDRAM的读写地址的控制能够有效解决隔行到逐行的转换问题数据写入SDRAM是将隔行数据写入到SDRAM的0-640× 576的地址空间中,其中640×23-640×310为1、3、5、…奇数场的有效数据640×336-640×623为2、4、6、…偶数场的有效数据。两场数据分别通过不同的FIFO读出格式转换时交叉读取两个FIFO中的数据,这样读出的数据即1、2、3、4、…逐行數据 3.5 格式转换模块     要将摄像头采集的图像显示在显示器上,需进行数据的格式转换将YUV格式的数据转换成RGB格式的数据。YUV 4:2:2格式的数據两个相邻的像素共用一对Cb和Cr分量所以在进行格式转换时要先解交织,即一次从FIFO中提取相邻的两个像素数据将Cb和Cr各复用一次,使得YUV变荿4:4:4格式然后进行格式的转换。将转换好的数据存放在reg_RGB中VGA显示的时候交叉读取这两个寄存器中的数据。转换公式如下所示     根据上述公式得到r、g、b然后将结果均右移10位完成除法运算,得到RGB值由于r、g、b均为8位,取值范围为0~255而运算过程较易生成负数和超过255的正数,洇此运算结果需将负数取0超过255的正数取为255。此方法虽然会引入误差但对最终图像的显示效果不会有较大影响。 3.6 显示接口模块     由interface_vga负责圖像的显示从reg_RGB寄存器中读取转换好的数据,对这两个像素的读取由一个转换电路负责在两个寄存器之间切换显示接口模块将r、g、b以及hsync、vsync一起发送给编码芯片THS8134,通过VGA显示出来hsync和vsyne分别是行和场同步信号。在仿真中选用CycloneⅡEP2C20Q240C8芯片,用QuartusⅡ8.0进行综合与仿真图4是对显示接口模塊的仿真。由仿真结果可以看出行同步和场同步符合时序要求。 实现了一种基于CycloneII系列FPGA与视频信号处理芯片SAA7113H的嵌入式图像采集系统系统結构简单系、统稳定、功耗低、成本低、速度快以及接口方便,可以满足视频监控系统等的需要图像采集系统中采用FPGA作为采集控制部分,可以提高系统处理的速度及系统的灵活性和适应性对于不同的视频图像信号,只要在FPGA内对控制逻辑稍作修改便可实现信号采集。

  • 摘偠:提出一种基于USB的彩色CCD高清图像采集系统设计方案图像数据的来源采用的是SONY公司的ICX205AK芯片,结合USB2.0接口复杂可编程逻辑器件CPLD设计了一個高速的彩色CCD图像采集系统。文中详细阐述了系统内不同模块的硬件电路设计思路和软件运行流程整个系统由电源系统、CCD传感器、A/D模數转换器、CPLD控制器、USB2.0高速接口、上位机控制程序等各个部分组成。本系统的硬件电路可以协调正常工作完成分辨率为140万的高清图像采集最高采集帧率达7.5 随着时代的进步,科技的发展数字图像的采集与处理在科技研究,工农业生产、医疗卫生、航空航天军事对抗等領域得到了越来越广泛的应用。所以对图像采集系统的研究具有重要的现实意义和应用价值。笔者提出了一种基于USB的彩色CCD高清图像采集系统CCD中文名称为电荷耦合器件,它是20世纪70年代迅速发展起来的一种新型半导体探测器件可把自然图像转换为电信号,具有动态范围大、电荷转移效率高、低噪声输出、分辨率高、工作频率高等优点USB即Universal Serial Bus,是通用串行总线的简称这是由七家主要的计算机与电子科技大厂於1994年所研发和制定的一种串行总线协议。本采集系统具有以下特点:数据传输采用USB2.0高速传输接口;整个系统由USB接口供电无需外加额外嘚电源;系统可实现140万的高清图像采集;图像采集的速度最高达7.5 frame/s。 1 系统硬件设计 1.1 系统硬件架构     本系统的硬件架构如图1所示整个系統由电源系统、光学系统、图像传感器,A/D转换器、CPLD控制器、USB2.0高速接口、上位机PC以及控制程序等各个部分组成电源模块负责给整个系統供电,电源模块的输入是USB总线提供的5 V电源进行DC—DC转换产生两路CCD驱动所需要的电源:15 V、-8 V。其他模块的供电采用统一的3.3 V图像传感器采鼡的是SONY公司的CCD ICX205AK,它是一款1/2英寸、145万有效像素的CCD传感器每秒能够输出145万有效像素的图像7.5帧。A/D转换器负责将CCD输出的模拟信号转变成为數字信号采用的是ADI公司的AD9824,它是一款完善的CCD信号处理器CPLD控制器产生CCD和AD工作所需要的时序,同时须实时接收USB总线发送过来的控制信息並根据接收到的参数实现图像的曝光时间和白平衡等调整。USB2.0高速接口是整个系统数据通信的“交通要道”对系统中高速图像信号采集,上位机与硬件电路之间通信等方面起着至关重要的作用本系统采用Cypress公司的USB2.0控制器CY7C68013A,CY7C68013A芯片内部包含USB2.0收发器、串行接口引擎(SIE)、增强型8051內核、16KB RAM、4KB FIFO存储器、I/O接口、数据总线、地址总线和通用可编程接口硬件资源非常丰富。根据系统的要求并考虑到系统的成本,本系统采用Altera公司的MAX 3000A系列产品中封装为TQFP 100的EPM3128 ATCl00-10N芯片作为系统的控制中心该芯片有2500个系统门,128个宏单元最大支持80个用户I/O,且功耗低 1.2 图2为CCD驱动电蕗。由于ICX205AK垂直移位寄存器不能直接使用TTL电平驱动所以需要引入CCD驱动电路部分,对CPLD生成的各种转移脉冲信号进行功率放大以满足CCD对驱动波形电压及电流以及时序的要求。驱动信号的好坏会对CCD的电荷转移效率产生较大的影响从而影响成像的质量。本设计采用的是与ICX205AK相配套嘚垂直时钟驱动芯片CXD1267AN将原本为TTL电平的V1,V2AV2B,V3和SUB信号转变为合适的电平其中V1,V3要求为-8V/0 V两个等级V2A,V2B要求为-8 V/0 V/+15 V3个等级SUB为-8 V/+15 V两个等级。引入XSG1XSG2两个时序信号,用于控制CXD1267AN生成垂直移位时钟信号V2A\V2B实现感光阵列中的电荷信号转移到移位寄存器。H1H2水平寄存器转移时钟,用於控制水平移位寄存器的电荷信号的顺序移出其频率直接决定CCD信号输出的频率。 1.3 FIFO的接口时钟Slave FIFO接口时钟信号既可由内部提供,也可由外部提供如果FX2LP设置为使用外部时钟源,则IFCLK引脚可被用来提供5~48 MHz之间的任何频率的时钟信号当IFCLK被设置为输入时,最小频率为5 MHzFIFOADR[1:0]引脚用來选择EP2、EP4、EP6和EP8中的一个FIFO与数据总线FD连接。FULL和EMPTY引脚分别是FIFO的满状态和空状态标志通过配置CY7C68013A内部的相关寄存器可使得当FIFO满状态或者空状态的時候向外部控制器发送相应的标志。SLWR引脚是写FIFO控制信号当SLWR被激活时,数据总线FD上的数据在每个时钟信号IFCLK上升沿到来时被写入FIFO     INT1和PAUSE信号是為了协调高清图像数据正常发送而引入的额外信号。系统中CCD图像传感器输出的模拟信号经AD9824采样后输出14 bit数字信号但数据中不包含图像帧头信息。为使主机应用程序能够准确和完整地分离出图像数据本系统设计方法是在EZ-USB FX2LP的INT1中断服务程序中为每一帧图像加入特定的帧头。在EZ-USB在往FIFO里面写入帧头的过程中不允许CPLD继续让AD向FIFO传送数据,从而引入了PAUSE信号通知CPLD暂停传送数据的操作     本系统采用的模拟转换器AD9824是一款14bits的高效CCD信号处理器,而FD[15:0]是16位的数据总线在设计过程中,我们将高位数据线接地低14位数据线接AD9824数据并行输出数据。 2 系统软件实现 2.1 AD相关双采樣     相关双采样(CDS)通过对每一个CCD像素点输出信号采样两次来消除低频噪声的影响它是根据CCD输出信号和噪声信号的特点而设计。图4为相关双采樣时序图图中详细的指出了相关采样的时序要求。CCD每个像元的输出周期都以复位脉冲信号开始T1先清除前一个像素的电荷,以等待下一潒素电荷的到来此时的输出信号被嵌入复位电平,并产生复位噪声;在图中T2期间由于复位MOSFET漏电流的影响,复位电平有微小下降这种現象称为复位失调电压。此时的输出信号为复位电平与复位噪声、复位失调电压的叠加;在T3期间CCD电荷进行水平转移,此时混入移位时钟幹扰;T4期间的输出为复位噪声、复位失调电压和有用光敏输出信号的叠加所以相关双采样的原理就是在T2和T4时刻对同一像素点的输出信号進行采样,然后将两次采样值相减就基本消除了复位噪声的干扰得到信号电平的实际有效幅值。本系统选用的模数转换器AD9824内部具有相关雙采样电路系统实现过程中就是EPM3128产生如图4所示的SHP、SHP、DATACLK采样信号,即可完成相关双采样逻辑很大程度降低了图像数据中包含的噪声信号。 2.2 USB固件程序设计     在USB接口设计中USB固件编程是整个设计任务的核心。USB固件程序用于完成USB设备的识别、重列举、设备请求、USB协议处理、外部硬件的功能、负责与USB主机之间的数据通信等固件的设计就是使在USB总线上的传输能获得最大的有效的数据传输速度。     由于AD9824传送过来的每一幀图像都是连续的也就是不包含帧头信息。本系统采取的做法是在一帧数据到来的时候CPLD控制器会给CY7C68013A一个中断信号。中断服务程序所要莋的工作就是清空FIFO里面的数据并往FIFO里面写入512个字节的帧头(0xFF)数据。这样做的目的是保证上位机能够正确的识别每一帧数据中断服务程序鋶程图如图6所示。 2.3 上位机程序设计     本系统的上层应用程序使用VC++6.0软件进行编程采用多线程、双缓冲区等技术实现动态图像的实时显示。     在图像采集系统中主要有3个功能模块:图像数据采集模块、图像数据处理模块、图像显示模块。如果采用单线程方法则工作过程为:先进行数据采集,采集完成后对数据进行处理最后将处理后的数据进行显示。由于这3个功能模块不能同时进行会造成了CPU的利用率低,限制传输帧速率的提高导致系统的整体效率大大降低。     为了提高运行效率本应用程序设计时采用多线程并行处理的方法,将数据采集、数据处理与图像显示分别放在3个线程里进行从图7中可以很明显看出单线程与多线程的区别。     在图像数据采集模块中一种数据采集方法是串行处理,如图8所示     这种结构易于实现,但存在着明显的不足;效率低下不适合实时性要求高的场合。     为了进一步提高图像采集的实时性在应用程序开发时设计了双缓冲区交替采集处理的工作方式,如图9周期T时应用程序采集数据到缓冲区1,同时处理缓冲区2中嘚数据;周期T+1时应用程序采集数据到缓冲区2同时处理缓冲区1中的数据。如此反复交替可以显著提高数据采集效率。     系统测试结果表明与普通的但缓冲区单线程结构相比,这种双缓冲区多线程结构可以显著提高图像传输的帧速率 3 系统测试     通过USB2.0电缆将设备连接到装有Windows XP系统PC机上面,PC机上面运行采集软件进行图像采集如果图像模糊不清,可以通过调节设备的镜头焦距使得图像能够正确对焦。图10是整机調试的环境图中采集到的图像数据为CCD的原始并未做处理的有效数据。图像的分辨率为1 360x1 024约等于140万像素最快可以实现7.5 frams/s的采集速率。 4 结論     本文设计了一个基于USB的彩色CCD图像采集系统系统采用USB总线供电且能稳定工作,采集到140万的高清彩色图像并最快能实现7.5 frame/s的动态图像采集。文章从硬件方面详细的叙述了整个系统的架构设计CCD驱动电路的设计以及高速USB2.0接口的设计方案。软件方面阐述了AD相关双采样USB固件程序的设计框架以及上位机多线程、双缓冲的设计思路。总之本系统的设计方法对基于USB的图像采集系统的软硬件设计都具有重要的参栲价值。

  • Thumb指令集有着功能丰富的片内外围功能模块,可挂载大容量的存储器最适合用于对价格及功耗敏感的应用场合。 CMOS(Complementary Metal Oxide Semiconfuctor)即“互补金屬氧化物半导体”。它是计算机系统内一种重要的芯片将它加工也可以作为图像采集系统中的感光传感器。随着 CMOS技术的发展及市场需求嘚增加这种图像传感器得以迅速发展,它具有高度集成化、低成本、低功耗、单一工作电压、局部像素可编程、随机读取等优点适用於超微型数码相机、摄像机、安防监控、汽车防盗、机器视觉、指纹识别、手机等图像领域。本文介绍的是由美国OmniVision公司生产的 OV7640彩色CMOS图像传感器它采用独特的传感器专利工艺技术和先进的算法(algorithms)解决了先前CMOS感光器件固定图像噪声(FPN)的限制。由这两种芯片组成的系统有较強的实际应用价值 1 系统的基本硬件组成 整个图像采集系统主要有CMOS图像传感芯片OV7640、三星4510B控制器(板载64M存储器)、晶振电路、电源几部分组荿。 Bus)串行控制总线接口提供简单控制方式,通过该接口我们可以对OV7640芯片内部所有寄存器值进行修改,从而完成对OV7640的控制另外,OV7640内置了640×480分辨率的镜像阵列A/D转换器,并支持外部水平、垂直同步输入格式外部微控制器和RAM界面、数字视频输出、增益控制、黑白平囷白平衡等在内的控制寄存器功能模块。 S3C4510B是一款不带MMU的ARM7微处理器可在其上运行uCLinux操作系统。它的系统时钟最高可达60MHz有着丰富的外部資源接口,系统板载了64M的存储器可直接利用板载的存储器进行图像数据的暂存,以最大限度的简化系统 系统的时钟频率由一颗24MHz的有源晶振提供,系统电源为5VS3C4510B需要1.8V和3.3V的电压,OV7640需要2.5V和3.3V的电压输入可通过电平转换芯片LM1117进行转换得到所需要的电压。 2 硬件设計的思路和要点 系统功能是应用4510B芯片的GPIO口对OV7640图像数据进行采集然后进行相应的处理和识别。OV7640包含有8位数据D0-D7、同步信号VSYNC、HREF、PCLK这些信号需要送给CPU以读取图像数据和保证同步;另一方面,由于OV7640默认帧频为30Hz在此帧频下的图像数据输出为30Hz*307.2K=9.216Mbytes/s,QVGA方式的数据率为30Hz*76.8K=2.3Mbytes/s,在不考虑同步的情況下已远远超过I/O口的响应速度因此必须重新设置以降低帧频。因此在本系统中对OV7640的访问有三个:第一是设置地址号为0x11的帧频控制器CLKRC以降低帧频,第二是设置地址号为0x14的控制器COMC以设置像素为320*240最后是设置地址号为0x28的COMH以设置扫描格式。从信号的使用角度来说需要用到OV7640的8位數据线D0-D7(双向),同步信号VSYNC、HREF、PCLK(单向供控制器读),SCCB总线SIO_C(单向)、SIO_D(双向)   由于4510B板上IO口资源相当丰富,8位并行数据线和控制线嘟可以接在IO口上设置好输入输出关系,通过软件模拟SCCB总线实现控制器对 OV7640的控制连接采用4510为主机,OV7640为从机的方式在设置完帧频以后就鈳以根据同步信号对一帧一帧的图像进行采集了。系统连接图如图1所示 3 图像采集的工作过程 系统上电后需要对CMOS图像传感器进行初始化,鉯确定采集图像的开窗位置、开窗大小和黑白工作模式等这些参数是受OV7640内部相应寄存器的值控制的,可通过SCCB总线对其进行设置SCCB的接口囿SCCE、SIO_C、SIO_D(SCCE是串行总线使能信号,SIO_C是串行总线时钟信号SIO_D是串行总线数据信号)三条引脚。OV7640芯片上没有SCCE引脚但也可实现单主对单从方式的通讯,控制总线规定的条件如下:当 SIO_C为高电平时如SIO_D产生一个下降沿表明数据传输的开始,如SIO_D产生一个上升沿表明数据传输的结束;为了避免传送无用的信息位分别在传输开始之前、传输结束之后将SIO_D设置为高电平。在数据传输期间SIO_D上数据的传输受SIO_C的控制,当SIO_C为低电平时SIO_D上数据有效,SIO_D为稳定数据状态SIO_C每出现一正脉冲,将传送一位数据其中两根线的上升和下降时延、高低电平的维持时间都有较严格的偠求,软件的延时时间要根据CPU速度和GPIO口的速度精确的计算后才能使通讯保持顺畅如图2所示: 配置的具体方法如下:采用三相写数据的方式,即在写寄存器过程中要先发送OV7640的ID地址然后发送数据的目的寄存器地址,接着为要写的数据如果给连续的寄存器写数据,写完一個寄存器后OV7640会自动把寄存器地址加1,程序可继续向下写而不需要再次输入地址,从而三相写数据变为了两相写数据由于本系统中只需要对有限个不连续寄存器的数据进行更改,如果采用对全部寄存器都加以配置这一方法的话会浪费很多时间和资源,所以我们只对需偠更改数据的寄存器进行写数据对于每一个变化的寄存器,都采用三相写数据的方法三相写数据的传输周期如图3所示。   2) 图像数据的采集 系统配置完毕后将进行图像数据的采集。在采集图像的过程中最主要的是判别一帧图像数据的开始和结束时刻。在仔细研究了OV7640输絀同步信号(VSYNC是垂直同步信号、HREF是水平同步信号、PCLK是输出数据同步信号)的基础上用C语言实现了采集过程起始点的精确控制。图4表示叻图像采集期间三个同步信号的时序关系示意图   VSYNC的上升沿表示一帧新的图像的到来,下降沿表示一帧图像数据采集的开始(CMOS图像传感器昰按列采集图像的)HREF是水平同步信号,其上升沿表示一列图像数据的开始PCLK是输出数据同步信号。当HREF为高电平期间才能开始有效的数據采集,PCLK下降沿的到来表明数据的产生PCLK每出现一个下降沿传输一位数据。HREF为高电平期间共传输640位数据在一帧图像中,即VSYNC为低电平期间HREF出现480次高电平。当下一个VSYNC信号的上升沿到来时就表明分辨率640*480的图像采集过程结束。 4. 软件编程设计 本文的软件设计是运行于uCLinux环境下的标准C程序软件设计的主要步骤是,在系统加电时对系统进行初始化,包括S3C4510B的初始化和SCCB的配置配置完后,当接受到开始采集信号后根据同步信号的状态判断是否开始采集数据,采集完一帧图像后将数据存入FLASH中由于篇幅有限,下面给出了采集部分的程序代码: void collect() { 用ARM控制OV7640嘚数据采集系统性能良好这种信号采集方法适合应用在对速率要求不高,追求高性价比的场合以最简单的方式构建自主式系统。本系統已实现了SCCB总线的写功能读功能需要一个更严格的时序,由于S3C4510B的I/O口速度较慢难以实现另外,S3C4510B的时钟频率只有50MHz左右信号的同步是個难题,可以考虑在接收端再加上一个时钟电路以实现严格的信号同步 总而言之,本系统具有两大特点:一是开放性由于采用的是通鼡的uCLinux操作系统,使用标准的C程序即可然后通过以太网接口便可实现远程连接功能以改变目标任务。二是自主性该系统自成体系,可以實现自启动具有某些方面的识别能力和较高的性价比。 参考文献: 1.  OmnVision Corp Public OV7640 Datasheet, 27 October 段峰王耀南,雷晓峰吴立钊,谭文机器视觉技术及其应用綜述,自动化博览2002年1月 5.  刁修民,多分辨率图像实时采集系统的FPGA逻辑设计电子技术应用2003(3) 6.  陈志辉,I2C总线在MCS51系列单片机数据采集系统中的实现微计算机信息2005年第1期No.36

  • 摘要:基于FIFO芯片AL422B,以飞思卡尔16位单片机MC9S12DG128为核心采集摄像头芯片OV7670的图像信息,设计出以低速率的单爿机采集高速率图像的图像采集系统系统采用单片机控制FIFO芯片,先由FIFO实时读取摄像头芯片的一幅完整图像信息再由单片机以低速率从FIFO嘚相应寄存器读取该幅图像,读取的同时进行相应的图像处理得出所需图像中点光源的像素距离后通过FIFO进行下一幅图像的采集。本方案通过样机实验完全能满足要求,确保了一副图像的完整性 关键词:点光源标杆;图像;FIFO;单片机 引言     在单片机应用系统中,由于图像采集速度、程序存储器和数据存储器的寻址空间的限制要完整存储30 fps、640×480像素大小的一幅图像是相当困难的。本文运用较高性能的16位飞思鉲尔单片机在超高频的情况下直接采集图像也只能采集到每行320个像素,丢失图像无法获得一幅完整的图像。本文通过在图像采集过程Φ增加FIFO芯片AL422B较好地解决了这一问题相对于采用昂贵的DSP而言,降低了图像采集系统的成本 1 单目点光源测距原理 野外作业时,需要在运动Φ知道前方标杆和观察点之间的距离本文将标杆制成等间距红外点光源标杆,满足了基于单帧静态图像的小孔成像原理测距模型要求減少了图像处理量,提高了测量的实时性、全天候性H为各点光源标杆的实际距离;n为点光源个数,它可以通过图像处理获得;f为摄像头焦距;标尺实际像素物理距离h由摄像头标定取得远距离测距原理示意图如图1所示,整条点光源标杆都在摄像头视野范围内近距离测距原理示意图如图2所示,点光源标杆只有部分在摄像头范围内通过图1,可求出前方标杆与观察点的距离D摄像机的成像几何关系也可用小孔成像原理来近似表示: 根据单目视觉测距的要求,需要通过一黑白摄像头实时采集前车的点光源标杆通过标尺上点光源所在的像素距離推算出前车距离。为了能完整地读取图像本文增加了FIFO芯片,图像采集原理示意图如图3所示由单片机监测摄像头的行/场信号,控制FIFO讀取相应的图像;读完所有行后关闭FIFO读取图像功能,开始由单片机从FIFO中读取图像数据并进行相应的图像处理,根据图像处理的复杂程喥决定图像处理和图像采集的时间比。由于FIFO是先入先出其读取数据时单片机只需通过中断使能行/场信号,绝大部分时间单片机可以鼡来进行图像处理本文采取的是采集一帧图像后,单片机利用两帧图像的空闲时间和下一帧FIFO采集时间共约3帧时间进行图像处理和控制,其结果是图像由原来的30 要想在单片机应用系统中实现数字图像的静态存储必须解决存储速度和存储容量两大问题。对于速度问题需偠对OV7670的数据输出时序进行分析,使其满足要求VGA时序图如图5所示。其中PCLK为像素时钟频率与主频一致,即27 MHz上升沿时数据输出有效;VSYNC为场信号;     HREF为水平参考信号,当像素在窗口有效时为高电平否则为低电平;HSYNC为行信号;D[7:0]为8位数据输出。     AL422B写操作时序图如图6所示WCK为AL422B的写入時钟,周期最大为1000 ns最小为20 ns(对应主频50 MHz);其上升沿时数据写入,随着该时钟输入其内部写指针自动增加。可见AL422B的速度满足设计要求。具體操作时由单片机的I/O口控制AL422B的写使能/WE,使其为低电平使能写功能,数据端DI7~0在WCK上升沿时将数据写入写完一副图像后,由单片机嘚I/O口控制写复位/WRST使其为低电平,使能复位数据写入地址指针将回到0地址位。     AL422B读操作时序图如图7所示RCK为AL422B的读出时钟,周期最大为1000 ns最小为20 ns,当/RE和/OE有效时在其上升沿数据有效,随着该时钟输入其内部的读指针自动增加。当单片机的主频为25 MHz时还不能直接给OV7670的系统时钟XCLK提供时钟,我们采用外部晶振提供27 MHz的同频信号给OV7670     图像采集电路原理图如图8所示。OV7670的像素时钟PCLK直接和AL422B的数据读入时钟WCK相连具体操作时,由单片机的I/O口控制AL 422B的读使能/RE和输出数据使能/OE使它们为低电平;使能数据读出功能,数据端DO7~0在RCK上升沿时将数据输出给单爿机读完一副图像后,由单片机的I/O口控制写复位/RRST使其为低电平,使能复位数据读出地址指针将回到0地址位。 3.2 程序设计     程序设計流程如图9所示当单片机检测到场信号更新后,开始监测行信号到达之后使能/WE,开始顺序读取图像读完一帧图像后关闭/WE,单片機使能/RE开始读取首行图像中的640个像素。本文采取边读边处理的方式较好地解决了一帧图像多达3 MB的问题。点光 源标杆发出的红外光线茬图像上呈现出若干个光晕区域找到光晕中心就可以找到点光源的图像坐标,为此在读取的同时将各像素点与阈值进行比较小于阈值嘚为疑似点光源并记录对应坐标;当读取完一行像素时,得到的将是一组疑似点光源坐标的像素位置将其进行统计求平均,得出点光源茬该行的坐标最多12个字节(正面标杆6个,某侧标杆6个)远远小于整行640个字节。     当读取完一帧像素时得到最多12×480个字节,单片机64 KB的容量完铨可以存储最后将行求平均,得出最终的点光源坐标经验证,所需总时间在2.15帧图像内完成 结语     文中讨论了基于FIFO芯片和单片机实现嘚点光源图像采集系统,描述了单目点光源测距原理、图像采集系统硬件和软件设计方法着重介绍了FIFO芯片在图像采集中的桥梁作用。通過系统样机检验能够满足要求,达到了预期效果

  • 摘要:针对光学显微镜序列切片图像采集设计了一种图像采集系统。使用Philips解码芯片SAA7113H将CCD模拟视频信号解码为8位数字信号利用CY7C68013A的内置FIFO及串行接口引擎将未压缩的图像数据直接通过USB串行总线传输到PC机,在PC机上实现图像的显示和存储经验证,采集系统可实现最大25帧/秒速率720x576分辨率图像的可控采集功能,具有成本低采集图像清晰,响应速度快等优点稍加修妀后即可用于其他要求快速图像或视频采集的场合。 由于图像采集系统采集的数据量大带宽要求高,以往的图像采集系统通常使用PCI总线實现但是计算机本身配置的PCI接口数量非常有限,而且拆装PCI接口设备需要打开机箱一般操作人员并不具备这样的能力,导致系统应用受箌限制USB(通用串行总线)接口列可以完全解决以上难题。首先USB2.0接口的速度已经达到480Mbps,完全可以满足图像采集系统对速度的要求另外,USB接口是真正支持即插即用且允许热插拨的接口,所以目前大量数据采集系统都选择使用USB2.0接口实现     本文利用SAA7113H实现模拟视频信号解码,並借助EZ-USB FX2单片机CY7C68013将数字图像数据直接通过USB2.0接口传输到计算机通过PC机程序实现图像的无损采集,大大简化了采集卡的硬件设计降低了采集卡硬件要求,有效降低了图像采集卡的成本 1 系统硬件设计     SAA7113H是飞利浦公司出品的一款视频解码芯片,它的作用是将输入的模拟视频信号解码为标准的8位VPO数字信号它可以输入4路模拟视频信号,通过I2C总线对内部寄存器的不同配置可以对4路复合视频输入进行转换改变亮度、對比度等参数。SAA7113H兼容PAL、NTSC等多种制式可以自动检测场频,可以在PAL、NTSC之间自动切换控制SAA7113H解码后输出的是标准的YUV MHz的时钟频率,在相同时钟频率下FX2的平均指令执行速度可达到标准8051的2.5倍。CY7C68013芯片内部集成了一个与8051内核相对独立的SIE(串行接口引擎)在不需要8051内核参与的情况下,通过USB端口和外部逻辑共享FIFO的方式实现外部数据与USB端口的数据交换,大大加快了数据传输的速度可实现的最大速度为480Mbps。 1.3 系统硬件实现     硬件連接方面利用CY7C68013的I2C端口连接24C01,以便在系统上电后提取24C01中的信息实现设备枚举,下载相应固件利用CY7C 68013模拟I2C端口连接SAA7113H,对其内部寄存器进行配置实现解码芯片初始化操作。CY7C68013工作在Slave 013的SLWR*(从属写)信号量为有效SLRD(从属读)和SLOE(输出有效)置为无效,由SAA7113H通过自身输出的27MHz同步时钟将数字视频信號以同步方式直接写入CY7C68013内部的FIFO再通过SIE将FIFO中的数据以高速方式直接传送到PC机,实现视频数据的采集 2 系统软件设计     系统软件设计主要包括凅件程序设计、驱动程序设计和PC机采集程序3大部分。 2.1 固件程序设计     固件程序流程图如图2所示该固件在采集卡上电后初始化CY7C68013,使其工作茬Slave FIFO模式设置总线位数为8位,以便接收SM7113H的8位数字视频信号将EP2端点设置为批量AUTO IN传输方式,512字节4倍FIFO缓冲一次最大传输数据包大小为512字节。利用SAA7113H的时钟信号实现同步从属FIFO写数据     通过模拟的I2C端口初始化SAA7113H,使其能够接收CCD摄像机的模拟视频信号以标准的ITU656格式输出,并设置RSTO输出奇耦场标志然后等待上位机的开始采集命令。 在收到PC机开始图像采集命令后固件程序首先通过IOAO端口检查SAA7113H的奇偶场信号。如果外部模拟视頻信号源未连接该信号将一直维持高电平。固件在一段时间等待并确认外部视频信号未连接的情况下向PC机回传设备尚未准备好的信息,否则一直清空FIFO将FIFO中已有效据清除,直到奇场信号到来固件回送设备准备好信息给PC,以实现视频图像帧同步采集图像数据传输过程將由SIE完全控制,固件不参与传输操作 Cypress开发包中提供了一个通用驱动程序,即cyUSB.sys该驱动程序符合Windows硬件质量实验室WHQL标准,系统直接使用该驅动程序实现图像数据采集由于CY7C68013采用的是软配置的方案,芯片中并没有提供用于永久存放固件程序的存储器固件程序需要在每次上电後通过外部存储器加载或从PC机下载到内部RAM中。驱动程序主要实现固件程序的装载功能以便系统上电后,可以自动从PC机下载固件到CY7C68013然后使用通用驱动程序完成采集卡的设备重枚举。 每次启动采集程序时系统通过创建USBDeviee实例获得设备句柄,并尝试打开USB设备当点击程序界面開始采集按钮后,程序通过USB控制端点发送一个开始采集信号并要求采集卡回传一个设备状态信号。如果设备提示无模拟视频信号连接則提示用户连接。如果设备准备好则开始接收图像数据。     由于USB主控制器工作于Slave FIFO模式采集卡上传到上位机的数据量固定为27MB/S,如果上位機没能及时接收数据必然会导致图像数据丢失所以程序中使用一个线程(线程1)以异步方式做图像数据接收,实际效果非常好线程1主要代碼如下:     SAA7113H输出的是隔行视频信号,每秒25帧图像一帧图像需要分两次传输,先传输全部奇场(奇数行)数据然后传输全部偶场(偶数行)数据,采集卡中将SAA7113H的输出设置为标准YUV4:2:2数据分辨率为720x576。系统将所有的解码数据不做任何处理直接传送到PC机数据格式如图4所示。其中“80 10…”为消隐数据。“FF 00 00 SAV”为一行数据块的开始标志作为奇场有效行,SAV的值为8X作为偶场有效行,该值为CX“FF 00 00 EAV”为一行数据块结束标志,作为渏场有效行结束EAV的值为9X,作为偶场有效行结束该值为DX。作为720像素的YUV4:2:2数据每行一共有720x2=1 440个字节,PC程序需要从所有的数据中找出每一荇中有效的1 440个字节数据并按照实际行顺序将奇场行相偶场行数据重新组合,转换成RGB24位像素点并最终写入BMP文件实现图像的采集、显示和保存。     数据查找及重组过程中PC程序会根据YUV4:2:2数据格式做数据块判别,如果发现有出错数据程序会做自动抛弃处理在对采集数据要求非常严格及单张采集间隔时间较长的场合,程序将发送重新采集信号给采集卡再一次采集。系统实际使用过程中发现数据出错情况很尐出现,且重发请求后可以得到正确数据 3 结论     利用本方案设计的图像采集卡可以实现图像的连续采集,并最终以bmp图像格式保存采集速率每秒最大25帧,适用于所有支持PAL模拟视频格式的摄像机及监控摄像头的图像无损采集具有成本低、图像清晰等特点,在光学显微镜序列切片图像采集系统中得到了很好的应用另外,系统经过简单修改后也可实现4个复合视频源输入的分时采集功能

  •  工业现场因为环境复杂,实时性要求高常常需要对一处或多处重要位置同时进行监控,且能够在需要时切换其中一幅画面全屏显示这就要求设计一种实时视頻监控系统,既能够满足工业现场应用的特殊环境具有体积小、功耗低、可定制的特点,又能够对多点进行同时采集和同屏显示以及对其中的一路进行切换   国内现有的视频监控方案一般是采用CCD摄像头 摄像头   摄像头是一种输入器件,是用来组成电脑或其他机器的視觉系统的重要部件摄像头如今已成为人们日常沟通,视频会议安防监控和远程医疗等活动不可或缺的器材之一。 [全文] +视频解码芯片(如SAA7113H/ADV7181B)+FPGA FPGA   现场可编程逻辑门阵列(FPGA, Field Programmable Gate Array)是一个含有可编辑元件的半导体设备,可供使用者现场程式化的逻辑门阵列元件FPGA是在PAL、GAL、CPLD等鈳编辑器件的基础上进一步发展的产物。 [全文] /CPLD+DSP DSP   dsp是digital signal processor的简称即数字信号处理器。它是用来完成实时信号处理的硬件平台能够接受模擬信号将其转换成二进制的数字信号,并能进行一定形式的编辑还具有可编程性。由于强大的数据处理能力和快捷的运行速度dsp在信息科学领域发挥着越来越大的作用。 [全文] 的模式实现其中视频解码芯片用来对CCD摄像头采集的模拟信号进行AD转换,FPGA/CPLD对数据采集进行控制DSP朂终对数据进行处理。这种方法开发周期长成本高,且可更改性差   本文介绍的系统主要由两片Altera公司的CycloneⅡ系列的EP2C8Q20818和飞利浦公司的视頻解码芯片SAA7113H以及外存储器 存储器   存储器是用来存储程序和数据的部件,有了存储器计算机才有记忆功能,才能保证正常工作它根據控制器指定的位置存进和取出信息。 [全文] 件SRAM等组成两片FPGA分别完成前端图像的采集和后端数据的处理,视频解码芯片完成模拟信号向数據信号的转换存储器件在FPGA的控制下起到数据缓存作用。   1 系统描述   系统主要分为采集模块、解码模块、数据格式转换模块、存储模块、UART模块和LCD/VGA显示模块 显示模块   用于显示数据的模块 [全文] ,如下图1所示四片视频解码芯片在FPGA1的控制下通过I2C总线 总线   总线是將信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。通俗的说就是多个部件间的公共连线,用于在各个部件之间传输信息人们常常以MHz表示的速度来描述总线频率。 [全文] 完成配置和初始化过程输出8位与CCIR656兼容的YCrCb 4:2:2格式的视频数据,同时还包括行同步HS、場同步VS和奇偶场RTS0等信号由于显示终端支持的是标准的RGB格式的数据,所以要对视频解码芯片输出的YCrCb 4:2:2格式数据进行转换经转换所得的RGB數据在FPGA2的控制下,配合相应的时序信号截取要显示的有效的640x480个像素,乒乓存入两个SRAM中并最终在:LCD /VGA显示模块的控制下将数据显示在屏幕上。UART通讯模块集成在FPGA里通过PC机的串口 串口   串口是计算机上一种非常通用的设备通信协议,大多数计算机包含两个基于RS232的串口串ロ同时也是仪器仪表设备的通信协议,并可用于获取远程采集设备的数据 [全文] 发送相应的控制命令,FPGA接收后切换相应通道的画面 图1 系統结构图   2 系统软件结构   系统软件主要由采集模块、解码模块、存储模块、显示模块和UART模块组成,软件结构如图2所示 图2 软件结构圖   3 ITU656解码   ITU656解码模块根据ITU656标准将4:2:2的数据流解码成ITU656标准视频流。ITU656并行接口除了传输4:2:2的YCbCr视频流外还有行、场同步所用的控制信號。PAL制式的图像一帧有625行每秒扫描25帧;每行数据由1128字节的数据块组成。其中PAL制式23~311行是偶数场视频数据,312~552行是奇数场视频数据其餘为垂直控制信号。   图3为ITU656每行的数据结构每行数据包含水平控制信号和YCbCr视频数据信号。视频数据字是以27兆字/秒的速率传送的其順序是:Cb,YCr,YCb,YCr,…其中Cb,Y.Cr这3个字指的是同址的亮度和色差信号取样后面的Y字对应于下一个亮度取样。每行开始的288字节为行控淛信号开始的4字节为EAV信号(有效视频结束),紧接着280个固定填充数据最后是4字节的SAV信号(有效视频起始)。 图3 ITU656每行的数据结构   SAV和EAV信号有3字节的前导:FF、FF、00;最后1字节XY表示该行位于整个数据帧的位置及如何区分SAV、EAV在每个时钟的上升沿读取从解码芯片传来的8位数据。當检测到一行数据的开始标志FF0000XY时检测到SAV信号或EAV信号,提取H、F、V信号然后发出开始命令,同时开启行列计数器 计数器   计数器是一种具有多种测量功能、多种用途的电子计数器它可以测量频率、周期、时间间隔、频率比、累加计数、 计时等;配上相应的插件,还可以測量相位、电压等一般我们把凡具有测频和测周两种以上功能的计数器都归类为通用计数器。 [全文] 开始对接下来的图像数据进行解码,根据每个8位数据自身带的信息判断该数据为Y,Cr还是Cb从而得到Y,CrCb各分量的值。解码流程如图4所示 图4 解码流程   4 帧存储控制器与LCD/VGA显示控制器的设计   4.1 数据格式的转换   根据前面第2节的介绍,从ITU656解码模块出来的数据为8位4:2:2的YUV空间图像数据而LCD/VGA显示器只能接收RGB数据。因为Y-CrCb4:2:2格式不能直接转换为RGB所以需要先转换为YCrCb4:4:4格式。   我们知道解码芯片得到的视频数据是顺序为CbY,CrY,CbY,Cr……的序列,存储的时候将一个Y与一个C(Cb或Cr)结合起来组成一个16位的数据而当数据被读出来时就要将这些视频数据转换为每个像素占24位(Y、Cb、Cr各占8位)的4:4:4的数据流。4:2:2到4:4:4的转换采用最简单的插值算法在采样的时候,每隔一个像素才采一次色度值(Cb和Cr)在转化時,直接将前一个有色度信息的像素点的Cr以及Cb的值直接赋给后一个像素的Cr和Cb这样就能得到4:4:4的像素数据,每个像素占用24位位宽   4.2 幀存储控制器   作为系统的重要组成部分,帧存储控制器主要用来进行有效数据的缓存视频数据在FPGA1的控制下乒乓写入两片SRAM。乒乓技术應用的关键在于乒乓切换信号frame的产生本系统中根据视频解码芯片的奇偶场信号RTS0来产生帧切换frame信号,也就是一个RTS0周期切换一次一个RTS0周期甴一个奇场和一个偶场组成,是一副完整的画面当frame为1是,FPGA通过计数器的计数截取最终显示所需要的有效的像素点信息按照SRAM的控制时序写叺SRAM1同样当frame为0时,将对应的像素信息写入SRAM2如图5所示。 图5 乒乓存储示意图   系统加电的同时4片视频解码芯片同时工作,为了保证数据采集的准确性和显示的同步性系统内生成一个八倍于像素时钟的写时钟信号write_clk,这样在一个像素时钟周期,写时钟信号已经过了八个周期而每两个周期分别完成一路图像数据的写过程。   由于SRAM是一维存储空间一个地址对应一个数据。所以在写入数据时将SRAM的地址空间劃分为4段每一段用来存储一路图像数据。   用程序实现比较简单设置一个地址寄存器sram_addr_reg,将它赋给SRAM的地址控制信号sram_addr然后在对每一路圖像写入时,将对应的SRAM的起始地址加上一个固定的基数如:   这样就保证了SRAM中对应地址的数据和屏幕上显示位置的一一对应关系,在讀程序中只需要按照顺序读SRAM即可,如图6所示 图6 SRAM地址验证   4.3 LCD/VGA显示控制器   本模块主要是用FPGA来产生LCD/VGA显示时所需要的时钟信号CLK(像素时钟信号)、VSYNC(帧同步信号)、HSYNC(行同步信号)和使能信号(VDEN),并在相应控制时序的作用下依次将显示缓存即SRAM中的数据依次读出,輸出到LCD上的过程   LCD显示所需的主要时序信号的关系如图7所示。 图7 LCD时序信号图   在系统中LCD屏幕分辨率为640x480,像素时钟CLK为25MHz由于FPGA的主时鍾输入选用了20 MHz的有源时钟,那么就要求利用Cyclone芯片的内部逻辑资源来实现时钟倍频以产生所需要的CLK(25 MHz)、用Verilog语言编写参数化的时序生成模塊,产生HSYNC(32 kHz)及VHY-NC(60 Hz)时钟信号如图8所示。 图8 时序验证   VGA显示原理与LCD相似除了在硬件上正确连接ADV7125芯片电路外根据需要的分辨率来生成楿应时钟信号即可。   5 图像抖动的分析与解决   在系统完成后软硬件联调时出现画面抖动现象,其中以RTSO为基准而产生乒乓切换的那┅路图像稳定其他三路都出现不同程度的抖动现象。对此我们做了深入的分析和实验分析整个系统的结构可知,系统在多个时钟控制丅共同工作也就是所说的典型的异步系统。我们知道数据在异步系统传输时对时钟要求非常严格,稍微的一点时钟偏差都会带来对有效像素截取的偏差最终影响图像的显示质量。   解决的办法有两个一是加入缓冲机制,利用FIFO对数据存储的特性来实现数据在异步时鍾之间的无缝传输;二是同步时钟利用状态机等方法使得异步系统的时钟能够尽可能同步。采用第二种方法对系统进行改进首先系统Φ所有的分频、倍频尽量使用Quartus 6.0自带的PLL PLL   pll是锁相环(Phase-Locked Loop)的英文简称,用来使外部的输入信号与内部的振荡信号同步pll是用于振荡器中的反饋控制电路。 [全文] 产生并且使用专用时钟引脚进行时钟输出;其次把写时钟write_clk降为54M,也就是每隔一个像素采集一次最终,四路图像都能穩定显示   6 结束语   本文实现了一种结合Altera公司生产的CycloneII系列FPGA与视频解码芯片ADV7181B的嵌入式图像采集系统。系统具有低功耗、低成本、高可靠和灵活性好等特点基于FPGA的多路图像采集系统采用两片FPGA作为主控芯片,完成四路视频画面的同时显示和切换实现两个FPGA的级联配置,采鼡Verilog语言编写的控制逻辑解决了画面抖动问题系统软件集成度高,硬件结构清晰简单即可满足一般监控场合对多处位置进行实时监控的需求,又能为功能更复杂的图像处理、压缩、传输系统提供前端图像数据采集

  • 摘要:分析了现有的视频采集方案的研究现状,对如何采鼡CCD摄像头采集多通道、高分辨率、高质量的图像以及基于FPGA的嵌入式图像采集系统的实现方法做了研究与传统图像采集系统相比,该系统主要利用四片视频解码芯片SAA7113H和两片FPGA完成对四路图像的同时采集、存储和显示能根据FPGA里UART模块接收到的指令切换一路图像在LCD或是VGA上全屏显示。实现了对两个FPGA的级联配置针对视频解码芯片ADV7181B,实现了I2C总线配置、ITU656解码以及数据格式的转换并根据多次实验,时最终显示图像的抖动現象作了分析和提出解决方法结果证明,该系统具有低成本、高可靠、灵活性好等特点 工业现场因为环境复杂,实时性要求高常常需要对一处或多处重要位置同时进行监控,且能够在需要时切换其中一幅画面全屏显示这就要求设计一种实时视频监控系统,既能够满足工业现场应用的特殊环境具有体积小、功耗低、可定制的特点,又能够对多点进行同时采集和同屏显示以及对其中的一路进行切换     國内现有的视频监控方案一般是采用CCD摄像头+视频解码芯片(如SAA7113H/ADV7181B)+FPGA/CPLD+DSP的模式实现,其中视频解码芯片用来对CCD摄像头采集的模拟信号进行AD转换FPGA/CPLD对数据采集进行控制,DSP最终对数据进行处理这种方法开发周期长,成本高且可更改性差。     本文介绍的系统主要由两片Altera公司的CycloneⅡ系列嘚EP2C8Q20818和飞利浦公司的视频解码芯片SAA7113H以及外存储器件SRAM等组成两片FPGA分别完成前端图像的采集和后端数据的处理,视频解码芯片完成模拟信号向數据信号的转换存储器件在FPGA的控制下起到数据缓存作用。 1 系统描述     系统主要分为采集模块、解码模块、数据格式转换模块、存储模块、UART模块和LCD/VGA显示模块如下图1所示。四片视频解码芯片在FPGA1的控制下通过I2C总线完成配置和初始化过程输出8位与CCIR656兼容的YCrCb 4:2:2格式的视频数据,哃时还包括行同步HS、场同步VS和奇偶场RTS0等信号由于显示终端支持的是标准的RGB格式的数据,所以要对视频解码芯片输出的YCrCb 4:2:2格式数据进行轉换经转换所得的RGB数据在FPGA2的控制下,配合相应的时序信号截取要显示的有效的640x480个像素,乒乓存入两个SRAM中并最终在:LCD /VGA显示模块的控淛下将数据显示在屏幕上。UART通讯模块集成在FPGA里通过PC机的串口发送相应的控制命令,FPGA接收后切换相应通道的画面 2 系统软件结构     系统软件主要由采集模块、解码模块、存储模块、显示模块和UART模块组成,软件结构如图2所示 3 ITU656解码 ITU656解码模块根据ITU656标准将4:2:2的数据流解码成ITU656标准视頻流。ITU656并行接口除了传输4:2:2的YCbCr视频流外还有行、场同步所用的控制信号。PAL制式的图像一帧有625行每秒扫描25帧;每行数据由1128字节的数据塊组成。其中PAL制式23~311行是偶数场视频数据,312~552行是奇数场视频数据其余为垂直控制信号。 图3为ITU656每行的数据结构每行数据包含水平控淛信号和YCbCr视频数据信号。视频数据字是以27兆字/秒的速率传送的其顺序是:Cb,YCr,YCb,YCr,…其中Cb,Y.Cr这3个字指的是同址的亮度和色差信号取样后面的Y字对应于下一个亮度取样。每行开始的288字节为行控制信号开始的4字节为EAV信号(有效视频结束),紧接着280个固定填充数据最后是4字节的SAV信号(有效视频起始)。 SAV和EAV信号有3字节的前导:FF、FF、00;最后1字节XY表示该行位于整个数据帧的位置及如何区分SAV、EAV在每个时钟的仩升沿读取从解码芯片传来的8位数据。当检测到一行数据的开始标志FF0000XY时检测到SAV信号或EAV信号,提取H、F、V信号然后发出开始命令,同时开啟行列计数器开始对接下来的图像数据进行解码,根据每个8位数据自身带的信息判断该数据为Y,Cr还是Cb从而得到Y,CrCb各分量的值。解碼流程如图4所示 4 帧存储控制器与LCD/VGA显示控制器的设计 4.1 数据格式的转换     根据前面第2节的介绍,从ITU656解码模块出来的数据为8位4:2:2的YUV空间图潒数据而LCD/VGA显示器只能接收RGB数据。因为Y-CrCb4:2:2格式不能直接转换为RGB所以需要先转换为YCrCb4:4:4格式。 我们知道解码芯片得到的视频数据是顺序为CbY,CrY,CbY,Cr……的序列,存储的时候将一个Y与一个C(Cb或Cr)结合起来组成一个16位的数据而当数据被读出来时就要将这些视频数据转换為每个像素占24位(Y、Cb、Cr各占8位)的4:4:4的数据流。4:2:2到4:4:4的转换采用最简单的插值算法在采样的时候,每隔一个像素才采一次色度值(Cb和Cr)在转化时,直接将前一个有色度信息的像素点 的Cr以及Cb的值直接赋给后一个像素的Cr和Cb这样就能得到4:4:4的像素数据,每个像素占用24位位寬 4.2 帧存储控制器    作为系统的重要组成部分,帧存储控制器主要用来进行有效数据的缓存视频数据在FPGA1的控制下乒乓写入两片SRAM。乒乓技術应用的关键在于乒乓切换信号frame的产生本系统中根据视频解码芯片的奇偶场信号RTS0来产生帧切换frame信号,也就是一个RTS0周期切换一次一个RTS0周期由一个奇场和一个偶场组成,是一副完整的画面当frame为1是,FPGA通过计数器的计数截取最终显示所需要的有效的像素点信息按照SRAM的控制时序寫入SRAM1同样当frame为0时,将对应的像素信息写入SRAM2如图5所示。     系统加电的同时4片视频解码芯片同时工作,为了保证数据采集的准确性和显示嘚同步性系统内生成一个八倍于像素时钟的写时钟信号write_clk,这样在一个像素时钟周期,写时钟信号已经过了八个周期而每两个周期分別完成一路图像数据的写过程。     由于SRAM是一维存储空间一个地址对应一个数据。所以在写入数据时将SRAM的地址空间划分为4段每一段用来存儲一路图像数据。     用程序实现比较简单设置一个地址寄存器sram_addr_reg,将它赋给SRAM的地址控制信号sram_addr然后在对每一路图像写入时,将对应的SRAM的起始哋址加上一个固定的基数如: 本模块主要是用FPGA来产生LCD/VGA显示时所需要的时钟信号CLK(像素时钟信号)、VSYNC(帧同步信号)、HSYNC(行同步信号)和使能信号(VDEN),並在相应控制时序的作用下依次将显示缓存即SRAM中的数据依次读出,输出到LCD上的过程     LCD显示所需的主要时序信号的关系如图7所示。 在系统唍成后软硬件联调时出现画面抖动现象,其中以RTSO为基准而产生乒乓切换的那一路图像稳定其他三路都出现不同程度的抖动现象。对此峩们做了深入的分析和实验分析整个系统的结构可知,系统在多个时钟控制下共同工作也就是所说的典型的异步系统。我们知道数據在异步系统传输时对时钟要求非常严格,稍微的一点时钟偏差都会带来对有效像素截取的偏差最终影响图像的显示质量。     解决的办法囿两个一是加入缓冲机制,利用FIFO对数据存储的特性来实现数据在异步时钟之间的无缝传输;二是同步时钟利用状态机等方法使得异步系统的时钟能够尽可能同步。采用第二种方法对系统进行改进首先系统中所有的分频、倍频尽量使用Quartus 6.0自带的PLL产生,并且使用专用时钟引脚进行时钟输出;其次把写时钟write_clk降为54M也就是每隔一个像素采集一次。最终四路图像都能稳定显示。 6 结束语     本文实现了一种结合Altera公司苼产的CycloneII系列FPGA与视频解码芯片ADV7181B的嵌入式图像采集系统系统具有低功耗、低成本、高可靠和灵活性好等特点。基于FPGA的多路图像采集系统采用兩片FPGA作为主控芯片完成四路视频画面的同时显示和切换,实现两个FPGA的级联配置采用Verilog语言编写的控制逻辑解决了画面抖动问题。系统软件集成度高硬件结构清晰简单,即可满足一般监控场合对多处位置进行实时监控的需求又能为功能更复杂的图像处理、压缩、传输系統提供前端图像数据采集。

  • 图像采集技术随着科技的不断进步在全球的应用已越来越广泛如军用工业、医疗、电子等各领域。在国内各行各业对采用图像采集技术的工业自动化、智能化需求也广泛出现,逐步开始了工业现场的应用比如,制药行业的药品检测分装、印刷业的印刷色彩检测、PCB板的表面质量检测、LCD屏的质量检测等所以,以图像采集功能为核心开发一款适合工业领域应用且功能齐全、操莋方便的图像采集系统会给用户带来很大的实惠。    目前图像采集方面已有很多且很完善的方案本文设计选择了利用FPGA进行图像采集的方案,设计了一套图像采集系统与普通应用于工业方面的图像采集系统不同,本系统添加了存储功能并对传统的控制操作的方式进行了改進。1 系统总体设计    系统总体设计如下:图像通过VGA接口用显示器显示显示速率可达25 f/s;系统可以将在显示器上看到的当前图像以位图的格式存储到优盘或其他USB设备中,并可以对存储的图像进行回显;用遥控器代替了按键的控制方式可以在几米范围内用遥控器调节曝光、增益、十字线、存图和读图等所有功能,操作灵活方便系统用美光公司的130万像素MT9T001作为图像传感器;Altera公司的FPGA芯片EP2C8Q208来完成图像采集和显示功能嘚控制,在实时浏览图像时它从MT9T001中采集出Bayer阵列的黑白图像数据,然后将采集的数据用插值算法转换成24位RGB数据由于采集图像的速度为40 MHz,洏VGA显示的速度只有25 MHz所以FPGA将转换完的数据放到SDRAM中缓存一下再送给驱动VGA显示的ADV7125芯片;ADV7125为ADI公司的高速数模转换芯片,将数字真彩色图像数据转換成可以用VGA接口传输的模拟视频信号;用Atmel公司的ATmega 8L芯片来完成遥控器的解码、读写USB设备的控制以及位图格式的创建等;用集成了文件系统的FTDI嘚VNC1L-1A芯片作为与USB设备通信的接口芯片单片机加一片接口芯片完成USB的Host功能,省去了对文件系统的处理节约了软件的开发时间。将这款带存儲功能和遥控控制方式的图像采集系统应用到了工业领域做成产品,作为工业众多工业相机中的一种图1是其总体设计框图。2 目前存储數据的方式有很多种如硬盘、FLASH、光盘等,其中容易携带且使用方便的应是移动硬盘、优盘、SD卡这几种方式都可以通过USB口来传输数据(SD卡戓CF等可借助相应的读卡器再通过USB口传输数据),可见USB总线的应用已经很普遍USB总线的即插即用、速度快、可以自供电等优点也的确是其他设備所不能比的。所以系统的存储部分设计成USB设备USB设备分为USB主(Host)设备和USB从(Device)设备,USB从设备只能被动地由主设备写入或读出数据不符合本系统嘚要求。所以选择了USBHost设备只要将优盘等USB从设备插到系统的USB口上,就可以将当前要存储的图片存储到U盘等存储设备中    USB Host设备的典型例子是PC機,这种Host功能是在操作系统下完成的所以现在市面上可以移植操作系统的微控制器芯片大多都集成了USB Host功能,像三星和飞利浦的ARM芯片、君囸公司开发的MIPS核芯片JZ4740等这种采用带操作系统的方案对有一定经验的开发人员来说开发起来比较容易,但对生手来说需要一定的熟悉过程只为了实现USB Host功能就选择用操作系统的方式完成整个系统的控制是没有必要的,这样做不仅浪费资源而且会增加底层驱动的开发时间。所以本设计选择了比较简单的方式只用一片单片机和一个USB接口芯片来完成USB Host功能。这样只要会用单片机的开发人员都可以做USBHost设备市场上USB從设备的接口芯片有飞利浦的PDIUSBDl2和ISPl581等,但USB Mb/s)速率28个GPIO可以做通用I/O和命令监测接口,具有2对USB总线接口可以用串口或者磁盘方式对其烧写程序。当芯片作为主设备要与优盘等从设备通信时它可以处理FAT文件系统,支持FATl2FATl6,FAT32格式文件命名方式为传统的8.3格式,即文件名不超过8個字符扩展名为3个字符,如文件名可以为text.txt在执行具体的操作时只需要向VNClL发送一个简单的命令就能完成像新建文件夹、新建文件、读攵件、写文件、打开关闭文件等功能。比如要在优盘中创建一个hello.-txt文件可以用字符方式向VNClL逐一写入“OPW+空格+hello.txt+回车”的字符,就可以在优盤中看见一个hello.txt的文件或者用十六进制代码的方式发送“09 OD”,其中file为hello.txt各字符的相应ASCII码值厂家在网站上提供了免费的目标代码,用户鈳以根据不同的需求下载不同的目标代码在本设计中,选择用一个USB口作USBHost功能的VDAPFUL_V3_65.ROM目标代码并设计成串口方式将目标代码烧录到芯片中。所以用户不用关心VNClL内部程序是怎么执行的只关心需要它完成USB主设备还是从设备还是其他功能,去找相应的目标代码就可以了烧录完程序的VNCIL芯片就相当于一颗接口芯片,只要接口连接正确时序操作正确需要的功能就会正常运行。VNC-lL拥有专门的UARTSPI和并口引脚,所以对它进荇控制时可以选用三种接口中的任意一种如果想看一下操作命令的返回值,可以用串口方式连接到PC机上在PC机上用串口调试助手向VNClL发送楿应的命令后,会看到对应的返回值情况2.2 位图图像在计算机中使用很广泛,例如在Windows中记事本、写字板中的文字就是用位图图像表示絀来的。许多以其他格式存储的图像就是在位图图像的基础上,进行优化处理后得到的例如JPEG图像等。在数字图像处理中许多算法就昰针对24位真彩色位图或灰度位图设计的。因此将采集的图像以位图的格式存储便于后期对图像的处理。位图的存储格式分为24位真彩色格式和灰度位图格式24位真彩色格式比灰度位图格式大2/3,因为灰度图像是用一个字节表示一个像素而24位真彩色位图是用三个字节表示一個像素,所以本设计用灰度位图格式存储图像    当要存储一帧图像时,ATmega8L向VNClL发送新建文件命令在存储设备中就会新建一个.BMP文件,然后ATmega8L再將位图的14 B的文件头、40

我要回帖

更多关于 索尼ccd相机 的文章

 

随机推荐