基于图像数据封装包文的数据采集方法

2016-11-23 10:02谈恩民位庆海
计算机测量与控制 2016年5期
关键词:分片数据量字节

谈恩民,位庆海

(桂林电子科技大学电子工程与自动化学院,广西桂林 541004)

基于图像数据封装包文的数据采集方法

谈恩民,位庆海

(桂林电子科技大学电子工程与自动化学院,广西桂林541004)

针对如何在工业应用中找到一种实现周期更短和更低成本的图像数据采集方法进行了研究;通过分析以太网帧格式和JPEG图像数据特点,给出了一种对JPEG图像帧进行分片并对分片进行数据封装的方法,在此基础之上实现了基于图像数据封装包文的数据采集设计;最后在FPGA环境中对该设计进行了实现,此实现成功应用到了工程项目当中;实践表明,基于图像数据封装包文的数据采集方法能够在不添加外置存储器等复杂器件的情况下实现稳定的、实时的JPEG图像数据采集。

JPEG;图像采集;数据分片;数据封装;FPGA

0 引言

在工业现场,由于各种极端的环境和具体应用需求,通常需要对工业设备或现场进行实时的图像采集。目前,国内应用于视频监控领域的图像采集方案多采用CCD图像传感器+视频解码器(如SAA7113H)+FPGA/CPLD+DSP实现,这种方案开发周期较长,并且在现有的通用图像采集处理系统中,需要用帧缓存模块对图像数据整帧或多帧进行存储,存储设备一般采用SDRAM、SRAM等,这种大容量的高速存储器件成本较高。

针对现有图像采集方案所存在的问题,本文充分利用JPEG压缩图像数据量小的优势和FPGA的高速数据处理能力,提出了基于图像数据封装包文的数据采集方法,这种方法只需缓存数据包文而不需要对图像数据的整帧进行存储,从而可以不用外部存储器。基于此实现了图像传感器(可直接驱动输出JPEG图像)+FPGA+以太网的图像采集方案,该方案实现简单、开发周期短,并降低了开发成本。

1 JPEG图像数据分片与封装的实现

1.1以太网帧格式简介

以太网有多种帧格式,按照目前最常用的Ethernet V2标准的规定,以太网MAC帧长度要介于64~1 518 Byte之间,其数据部分要介于46~1 500Byte之间,当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充无效数据以满足数据帧长不小于64字节[7]。如图1为以太网MAC帧格式,数据部分为实际需要传输的客户数据,当其字节数低于46时,会包含一定的填充数据。以太网MAC层对数据添加一定的帧首和帧尾封装为MAC帧数据报。

图1 Ethernet V2标准MAC层帧格式(单位:Byte)

设MAC帧首、帧尾信息大小为Sh字节,数据部分大小为Sc字节,则实际数据报利用效率G=Sc/(Sh+Sc)。可见当Sh大小一定时,Sc越小,数据报的利用率越低,相当于网络的有效负载越小,因此增大数据报长度可以提高网络利用率。但在本文的实现方案中,图像数据采集时一次性需发送的数据量越大,所需的缓存资源也越大,因本系统无外置存储器,故需综合考虑网络利用率和硬件资源,本系统采用最大数据部分长度为256字节。

1.2JPEG图像数据封装

常见图像传感器的输出图像格式有RGB、YUV和JPEG等,JPEG是国际标准化组织(ISO)和CCITT联合制定的静态图像的压缩编码标准,它与RGB、YUV图像相比有如下特点:

1)JPEG数据量大幅缩小,使用有损压缩时,在压缩比25:1的情况下,压缩后的图像与原始图像相比,视觉上很难看出区别[8];

2)由于JPEG压缩编码过程中涉及到熵编码(一般采用霍夫曼编码),其图像帧的数据量是不确定的[9];

3)JPEG图像帧的起始并不是由行同步信号(HS)和场同步信号(VS)确定,而是由特定字节标示,16进制数据FFD8表示开始,FFD9表示结束[10]。

为了实现基于图像数据包文的数据采集,在数据经以太网传输之前,需要对图像帧数据进行分片、封装,在封装的过程中,也实现了数据发送端和接收端的通信协议。如图2为本图像采集系统采用的数据封装包文格式。

图2 数据封装包文格式

包文中各部分的含义如下:

1)有效长度:指示数据封装包的有效数据字节数,如上即为包文类型、包文数据、CRC校验码的字节数总和,在数据接收端,先接收此字节,然后根据此字节的指示确定接收数据的长度;

2)包文类型:用于标示数据源或目的,如0x01标示摄像头1的数据,0x02标示摄像头2的数据;

3)图像数据:实际需要传输的JPEG数据;

4)CRC16校验码:根据包文数据生成的16bit的CRC校验码,用于接收端对接收的包文数据进行校验,当校验不通过时,进行错误包文统计并对当前图像帧作出相应处理。

1.3不定长数据封装的实现算法与实现流程

在对数据进行封装时,封装包文长度的确定,要综合考虑以太网帧格式和JPEG图像帧数据总量不确定的特点。在对JPEG图像帧取某定长分片时(如256 Byte),因其帧数据总量不确定,那么最后一个分片的长度也不确定,此时就会出现低于46 Byte的图像包文,这样的包文可以直接发送,但是以太网端填充的无效数据会浪费以太网带宽。为了避免小于46 Byte的包文出现,本系统提出了如下不定长的数据封装方法,实现更高效的数据传输。

设定最长包文长度是最短包文长度的2倍。设允许的最小包文长度为K(不小于46 Byte),则最长包文长度为2 K(不大于1 500 Byte),包文中添加的包头、包尾字节数之和为C,封装后的包文格式如图3所示。

图3 不定长数据封装包文格式

取最短、最长包文图像数据部分长度分别为P min、P max,图像数据部分长度之和为R,则

图像数据的采集时,到来的图像数据先存于缓存中,打包时根据需要从缓存中取一定量的数据。设在图像数据的缓存中,所统计的当前图像帧数据总量为M,则我们对包文的图像数据部分长度N按照以下公式取值:

式中,N为0表示不进行数据封装操作,设最终的包文长度为P,则

P=N+C

可以验证各式中P的取值范围:

表1 包文长度P取值范围

C的值远小于K,通过上表分析可知此时P的最小值为K,最大值为2K,即经过以上处理算法,所有数据包文的长度都介于K-2K之间,且没有无效数据的填充,达到了预定的目的。

为便于不定长数据封装方法的进一步阐明,取K为128 Byte(此时包文长度最小值为128 Byte,最大值为256 Byte),取C为4 Byte,即假设打包时添加的包头、包尾数据字节数之和为4。在这种情况下,以上算法的实现流程如图4所示。

图4 不定长数据封装方法的实现流程图

2 基于图像数据封装包文的数据采集系统

2.1系统功能

系统实现双摄像头的图像采集功能。摄像头图像数据经FPGA采集处理后,经以太网传输给上位机,上位机端对接收的JPEG数据进行解码并实时显示,同时上位机也具有对下位机的配置或控制功能,系统功能框图如图5所示。

图5 系统功能框图

2.2系统硬件结构

系统中,摄像头采用OV公司的OV2640图像传感器,该图像传感器在FPGA的驱动下,可直接输出JPEG图像,开发周期短且性能稳定,输出图像最大支持UXGA(1600×1200分辨率)、15fps。采集的图像采用TCP协议经以太网传输,本系统采用TCP/IP协议栈芯片W5300实现高速硬件以太网解决方案,此方案具有较短的开发周期与较高的弹性,而且能够增加稳定性与有效降低主CPU负担,模块化的设计也便于以后系统的升级。主处理器采用Altera的Cyclone IV系列FPGA芯片EP4CE6E22C8,Cyclone IV系列是Altera的低成本FPGA系列,采用经过优化的60nm低功耗工艺,实现了低功耗、高性能和低成本的综合。系统硬件结构如图6所示。

图6 系统硬件结构

系统初次工作,通过JTAG接口完成系统的配置,此后系统上电由EPCS4SI8N完成系统的自动配置。

2.3系统实现

FPGA功能模块的实现框图如图7所示,系统工作时,由W5300配置模块完成对W5300的配置,实现TCP协议的以太网通信,然后PC上位机发送配置命令,经以太网传输给FPGA,FPGA对配置命令进行解析并完成对两路OV2640摄像头的配置,OV2640按照具体配置输出JPEG图像数据,再由FPGA完成对图像数据的分片、封装处理,经过处理的两路图像数据最终经以太网传输给上位机分别显示,上位机端在对图像实时显示的同时可以随时发送控制命令,并经指令解析模块解析,完成暂停某路图像的接收、改变图像输出分辨率、帧率等功能。

数据封装模块完成图像帧的分片、封装功能,将采集到的原始图像帧数据转化为若干图像包文,是实现基于图像分片封装包文的核心,下面对该模块的实现进行说明。

图7 FPGA功能模块实现框图

在FPGA中,用两个FIFO分别对两路图像数据进行缓存,具体实现时,不定长数据封装方法的K和C的值以及FIFO的宽度、深度均以参数化定义,这样可以很方便的调整数据封装包的格式。本系统实现时,取K值为128 Byte,考虑到一定的数据突发因素,取单个FIFO深度为1 024、宽度为10(帧开始、结束各1 bit,图像数据8 bit)。实现框图如图8所示。

图8 不定长数据封装方法FPGA实现框图

上述方法中,数据缓存的读写两侧是相互独立的,可以同时进行,这符合图像数据随时到来的特点,因此数据段打包不会影响图像数据的传输速度。但须注意,使用前述不定长数据封装的M是当前帧的数据总量,而非缓存中有数据的总量,因为图像数据是随时到来的,若当前图像帧数据尚未封装完毕,而下一帧图像又到来时,缓存中将同时存在两帧的图像数据。

动态包长模块即是根据前述不定长数据封装算法实现。在FPGA中,它依据数据封装模块是否空闲以及FIFO中当前图像帧的数据量产生读FIFO数据长度值,因为系统有两个FIFO,实现时要根据具体FIFO中的数据量选择所读取的FIFO,若两个FIFO中的数据均满足取数据要求,则对两个FIFO进行轮流选择。所读的FIFO以及读数据量确定后,FIFO根据给定的长度值输出指定长度的图像数据;CRC16码生成模块产生输出图像数据的CRC16校验码;最终,图像数据经数据封装模块添加相应的包头、包尾生成图像包文。

如图9为Singal TapⅡ逻辑分析工具对某帧输出图像最后两个封装包文的实时波形抓取,该图像帧结束标志(img_ eop)到来前,包文长度(pck_cnt)均为256 Byte,图像帧结束标志(img_eop)到来时,剩余当前帧数据段长度(fifo_ num)为287 Byte,在不定长数据打包方法下,分两次发送完成,先后两次所取图像数据量(pck_img_num)分别为144、143,包文长度 (pck_cnt)字节数分别为148、147。这样就完成了对一帧数据的完整分片、封装。

最后图像帧数据以图像包文为单位传输给W5300接口,经以太网传输给上位机,上位机端根据发送端的数据封装协议提取图像数据,并对数据分片进行重组,最后对重组的JPEG图像帧进行解码并实时显示,完成了图像采集任务。

图9 Singal TapⅡ实时波形抓取

3 结束语

本文所提出的JPEG图像采集方案,整体硬件结构简单、实现方便,大大缩短了项目开发周期,同时,在硬件处理速度与资源足够时,本方案能够在不添加任何额外硬件的前提下实现摄像头的扩展。本文所提出的方法在基于FPGA的工业相机项目中得到了应用,实践证明,本方案性能稳定,能够满足具体应用环境的需求。

[1]王巧玉.基于FPGA的网络视频监控系统 [D].西安:西安电子科技大学,2011.

[2]付强,夏靖波,杨军.基于FPGA的多路图像采集系统的软件设计[J].电子设计工程,2011,19(3):174-177.

[3]牛彦明,史忠科.基于DSP和FPGA的多路图像信息提取系统设计[J].弹箭与制导学报,2007,27(5):341-343,346.

[4]彭加进.基于JPEG图像压缩的嵌入式视频采集处理系统[D].南京:河海大学,2007.

[5]张小琴.基于FPGA的高速图像数据采集系统设计[D].武汉:武汉理工大学,2010.

[6]龚涛.基于FPGA的图像采集处理系统[D].武汉:华中科技大学,2005.

[7]范兴刚,孙优贤.以太网帧[J].工业控制计算机,2002,15(10):29-31.

[8]唐赛明.基于FPGA的JPEG压缩编码的研究与实现[D].长沙:湖南大学,2007.

[9]张元伟,刘彦隆.基于JPEG标准的静态图像压缩算法研究[J].电子设计工程,2010,18(2):78-80.

[10]邢赛鹏,平西建,詹杰勇.JPEG图像数据格式简明分析[J].微计算机信息,2005(36):166-168.

Data Acquisition Method Based on Image Data Encapsulation

Tan Enmin,Wei Qinghai
(School of Electronic Engineering and Automation,Guilin University of Electronic Technology,Guilin541004,China)

How to find an implementation for a shorter period and lower cost of image data acquisition method in industrial applications were studied.By analyzing the Ethernet frame format and JPEG image data characteristics,given a JPEG image frames of fragmentation and the fragmentation data encapsulation method,on this basis to realize the data acquisition method based on the packet of image data encapsulation.Finally the design was implemented in the FPGA environment,and this implementation was successfully applied to the project.Practice shows that the proposed method can achieve stability and real-time JPEG image data acquisition without adding external memory devices and other complex devices.

JPEG;image data acquisition;data fragmentation;data encapsulation;FPGA

1671-4598(2016)05-0169-04

10.16526/j.cnki.11-4762/tp.2016.05.049

TP274.2

A

2015-10-14;

2015-12-18。

国家自然科学基金(61306024);国家自然科学基金(61376024)。

谈恩民(1966-),男,河南光山人,博士,教授,主要从事现代测试理论、电路可测试性设计、计算机辅助测试方向的研究。

猜你喜欢
分片数据量字节
上下分片與詞的時空佈局
利用状态归约处理跨分片交易的多轮验证方案①
No.8 字节跳动将推出独立出口电商APP
基于大数据量的初至层析成像算法优化
高刷新率不容易显示器需求与接口标准带宽
宽带信号采集与大数据量传输系统设计与研究
No.10 “字节跳动手机”要来了?
基于模糊二分查找的帧分片算法设计与实现
轻量级分组密码Midori64的积分攻击
通用导弹雷达罩曲面分片展开系统的开发