基于工业相机的数据无损压缩技术

2018-09-10 07:57王宗苗
河南科技 2018年22期

王宗苗

摘 要:本文提出了一种应用于以太网工业相机的无损压缩技术,其通过对工业相机的以太网GVSP报文的图像数据进行数据预测,减少数据之间的相关性;通过减小数据位宽来减小冗余数据量,从而减少网络传输所需要的带宽。最后,结合FPGA的硬件验证,给出了该无损压缩算法的性能比较结果。结果表明,该无损压缩算法压缩率可以达到45%~13%。

关键词:无损压缩;数据预测;工业相机

中图分类号:TP751 文献标识码:A 文章编号:1003-5168(2018)22-0023-02

Data Lossless Compress Technique Based on Industry Camera

WANG Zongmiao

(Zhejiang HuaRay Technology Co., Ltd., Hangzhou Zhejiang 310053)

Abstract: This paper presented a lossless compression technique for Ethernet industrial cameras, which reduced the correlation between data by predicting the image data of Ethernet GVSP messages of industrial cameras, and reduced the amount of redundant data by compressing the data to determine the bit data width, thus reducing the bandwidth needed for network transmission. Finally, the performance comparison results of the lossless compression algorithm were given based on the hardware verification of FPGA. The results showed that the compression rate of the lossless compression algorithm could reach 45% to 13%.

Keywords: lossless compress;data prediction;industry camera

隨着工业技术的发展,千兆网工业相机因具有价格合理、布线方便、技术成熟等优势,在工业现场应用较为广泛。但是,随着工业相机向高分辨率、高帧率等方向发展,千兆网的传输带宽成为瓶颈。为了充分利用网络的传输带宽,实现图像数据的低成本,快速无损压缩变得至关重要。

目前,流行的无损压缩算法LZ77和RLE等[1-3],需要对数据进行反复扫描,数据压缩过程的延时较长,不能满足工业领域的低延时需求。在预测算法中,大多是基于边缘的相关性进行预测,例如,JPEG-LS和CALIC算法等[2,3],这类算法是基于整幅图像进行预测。

为了提高传输效率,以太网工业相机的数据在传输图像数据的过程中,通常会采用巨帧(Jumbo Packet)。数据的概率统计接近整幅图像的概率统计信息。对封装后的有效载荷进行无损压缩处理,可以不影响或者尽可能减少对现有以太网工业相机的影响。在此基础上,本文提出基于信息预测的单边预测算法,并在FPGA上设计实现,测试数据压缩性能。

1 无损压缩算法原理分析

相机在拍摄过程中,镜头的低通滤波特性决定了图像的边缘存在一定的过渡。根据这种过渡特性,当前像素的数值可以利用相邻像素的关系进行预测。

本文算法的核心思想为:首先根据相邻像素的梯度变化预测当前的像素值,并与当前真实的像素值进行比较,从而获得当前像素的最小残差。每8×n个(n=1,2,3…)残差数据统计一次残差的最大比特数,并以该比特数作为每个像素的有效比特数,重新组合成8比特的数据,从而减少冗余的比特数,达到无损压缩的目的。

1.1 像素预测算法原理分析

本文采用4像素预测法。GVSP图像数据的前4个像素保持不变,从第5个像素开始,每个像素都要用当前像素之前的4个像素预测,预测算法为:假设当前像素X,之前的像素顺序为A、B、C、D、X。预测过程为:首先计算当前像素之前的4个像素A、B、C、D之间的梯度变化情况,S_ba表示像素B相对像素A的数值增量,“+”表示像素B的亮度值高于像素A;“-”表示像素B的亮度值低于像素A。S_cb表示像素C相对像素B的数值增量;S_dc表示像素D相对像素C的数值增量。

当前数据,可以根据S_ba、S_cb和S_dc的值进行预测。如果S_ba、S_cb和S_dc梯度变化方向一致,当前像素值可以用[X'=(3D-B)/2]预测;如果S_ba与S_cb、S_dc梯度变化方向不一致,但S_cb和S_dc变化一致时,那么当前像素值可用[X'=2D-C]表示;其他情况下,可以用[X'=(A+B+C+D)/4]预测。

1.2 数据编码

将预测得到的[X']与原始像素X相减,获得预测图像的残差[?X=X-X']。

在编码过程中,前4个像素直接作为编码后的数据。从第四个数据[?X]开始,每8×n个数据作为一组进行编码,其中n取值范围为[1,16]。编码过程中,首先扫描一组数据的最大位宽m,用3比特表示;每个像素分别取对应位宽的数据,拼接成8比特数据,作为编码后的数据。编码后的数据格式为:第一个字节的高3比特表示当前这一组数据的数据位宽,低5比特表示当前这一组数据的数据个数,后续的[m×n]个字节表示压缩后的数据。

数据编码后,每组数据增加8比特的开销,但数据[?X]位宽大幅减少,数据每减少1个比特,那么编码后的数据总量可以减少n个字节。

2 硬件验证

2.1 FPGA硬件设计

考虑到硬件的资源消耗、工作频率等问题,FPGA的实现如图1所示。步骤如下:①接收GVSP报文,提取图像数据;②提取到的图像数据缓存4个数据,从第5个数据开始,计算当前的预测数据;③预测后的数据按照数据编码算法进行编码,为了保证在压缩效率较低的数据报文区间不会丢失数据,数据位宽增加到16比特;④对编码后的数据进行GVSP报文的重新打包,并发送到以太网络上。

在工业相机的实现过程中,图像数据被压缩后,导致以太网报文的数据长度发生变化,为了使以太网的接收侧能正常接收数据包,需要对以太网报文进行重新打包。用压缩之后的数据长度替换原来报文的长度,并把原来的报文长度等信息作为部分有效数据填入数据包中,然后重新计算FCS。

2.2 性能比较

数据压缩过程不涉及数据的缓存,以流水的形式进行,硬件的时序延时在几百纳秒左右。同样的,在系统的接收解碼侧,只需要缓存一个完整的报文,完成解码即完成了数据的传输和接收过程;整个压缩、解压的数据处理过程仅增加一个数据报文解码的延时。同时,由于数据压缩后数据报文的长度变小,因此,数据传输时间的延时减小。整体上,基于以太网报文的数据压缩技术对系统的延时影响较小。

经过测试,本文无损压缩算法的压缩效率在较大程度上取决于拍摄的图片。图像细节较丰富的图片的压缩率在45%左右;正常的机器视觉场景在视野清晰、亮度适中的情况下,最好的压缩效率可以达到13%左右,完全达到了降低网络带宽的目的。

3 结语

本文提出的基于单边预测的无损压缩算法,在FPGA等硬件平台上实现方便,资源消耗少,延时低。同时,数据预测算法的应用保证了数据的压缩率处于一个合理水平,有效提供了网络传输的带宽利用率。

参考文献:

[1]王孔华,李若仲,丁浩,等.LZW算法的优化及其在FPGA上的实现[J].空军工程大学学报(自然科学版),2015(3):41-44.

[2]Lu H H,Chen J,Chen T S. Lossless Compression Method of High Dynamic Range and Resolution Image Based on CALIC for 2-Dimensional Gel Electrophoresis[C]// Information and Management Sciences——Processings of the Ninth International Conference on Information and Management Sciences.2010.

[3]Wu X, Memon N. Context-based, Adaptive, Lossless Image Coding[J]. IEEE Trans Commun,1997(4):437-444.