本文首先介绍系统的组成和功能要求,重点论述了系统总体思路和硬件平台的搭建。其次阐述了系统软件平台程序的设计,在 Linux 系统下 V4L2 技术图像采集和程序分析。然后叙述了图像压缩与 Linux 下的数据压缩算法,并对比压缩前后图像,运用无线数据和图像传输方式及 Linux 下的网络编程,并完成无线传输的程序,最终在不同条件下的试验数据得到相应的结论。
一个完整的嵌入式无线图像传输系统包括发射与接收两部分。在发射部分,用图像采集模块作为信号输入端,把采集到的图像数据保存到嵌入式处理单元存储,并通过压缩模块进行压缩,然后经过压缩的图像作为输出信号,通过无线发射模块和网络传输协议,将信息发送到接收部分。接收部分首先将发送来的信息保存到控制中心,经过图像解压缩模块,将接收的图像进行解压处理,并通过数据处理模块对图像进行处理,实现系统的整体功能。
1. 嵌入式处理模块是整个系统的关键和核心,它接收摄像模块传来的图像信息,经过不同的接口函数与控制指令协同各个外设,完成对硬件设备的控制与数据传输;2. 摄像模块主要完成图像采集工作;3. 无线收发模块完成网络传输协议,它承载了传输信道的建立与数据通信;4. PC 机作为控制中心,它主要将接收的信息进行处理,实现实时监控和完成系统功能。
研究中采用的是基于通用性免费开源的 Linux 系统,在起始阶段,需要进行交叉编译,以生成系统需要的Bootloader 以及内核,我们用的开发板是 MINI2440.系统的总体设计流程:
1. 完成摄像设备的接口驱动工作和图像采集应用程序;2. 采集图像信息与编写图像压缩应用程序;3. 完成网络传输设备的驱动接口工作,编写传输应用程序;4. 图像接收成功后编写图像解压缩应用程序。本系统所用的是 USB 接口的数字摄像头,Linux 中描述USB 设备的结构体为 usb_driver,成员变量是 id_table,这个变量指向 structusb_device_id,主要描述了 USB 产品设备的版本、ID、产品接口类、设备类等信息。在设计中,需要重新配置 USB 驱动,编译内核,重新加载才能使用。在 Linux进行视频图像采集的接口函数是 V4L2,它提供数据结构和编程接口,是 Linux 中采集设备的内核驱动。本系统编写的是通过编程接口来控制采集设备完成相应的操作和图像采集功能应用程序。
通过前面的应用程序设计,采集到图像并保存到指定文件中,但是采集来的是信息量较大的初始图像,为了更好的传输,而质量又不至于下降,就需要图像数据的压缩。我们用最少的数码来表示信号,数据压缩技术包括无损和有损压缩格式,比较两种压缩方式和系统所采用的 ARM9 内核的CPU,本系统用软件方法实现数据的压缩,主要的工作是对静态图像的数据压缩,即空间信息进行压缩,目的是满足一定图像质量的条件下,缩小图像所占用的存储空间,以减小存储和占用尽量小的网络带宽。
在系统中,采用IJG JPEG Library来进行JPEG图像压缩,重点是 Linux 系统中设置压缩参数,然后在压缩过程中,通过扫描的方式一行行的进行压缩,最后通过采集到的图像压缩前后对比与解压缩之后的对比,并根据图像大小的变化得出结论。
无线传输是整个系统中重要的另一部分,它的传输性能直接影响传输的质量,本系统选择的是基于 IEEE802.11b 无线局域网方式,选择的无线是 WIFI 通信,所使用的网卡是TP-LINKWN 422G+.WN 422G+ 配置了快速 USB2.0 接口,数据通信速度很快,它还支持 WIFI 保护访问机制,为重要信息的保密提供了方便。
无线网卡要在 Linux 系统里需要特定的驱动包,把 WN422G+ 连接到 ARM 开发板上,执行命令,可以扫描到当前可以用的无线网络。在 Linux 中,使用的网络编程接口是 API 套接字,网络传输方式是具有传输可靠远程连接的 TCP 无线传输,进行网络文件的传输(服务器端和客户端),这样就完成了从客户端发送图像到服务器端的全过程,到此,已经基本上完成了整个系统所要求的功能。
本文选择的无线设备是无线网卡,通过测试,在图像传输过程中要考虑图像格式大小距离等因素,得到结论:
在静止或者固定低速的情况下,随着图像大小的逐渐增加,传输时延逐渐增大,在低速情况下,单位时间内的传输速率基本恒定,但在高速情况下,随着图像大小的逐渐增加,传输速率呈降低的趋势;2 在图像大小固定的情况下,随着移动速率的逐渐增加,传输时延和掉包率逐渐增大;3 通常图像大小与传输时延是一对矛盾,图像越大,占用的带宽也就越宽,在传输过程中的传输时延也就越长。
因此需要根据不同的应用场景,选择不同的优先策略。