第5期 梁义辉,等:一种面向无线图像传输的视觉平台 ·611· 另外,为了在Liux上使用USB无线网卡,需要 OpenCV程序时,将编译好的库拷贝至处理板上的 在系统上安装相应的驱动程序,从而获得图像传输 库目录,默认可以放在系统文件中的/usr/oca/Iib 链路中的图像数据。安装驱动时,进入驱动程序的 目录或者/usr/b目录下,配置环境变量LDL …/drivers目录下,执行make和make install命令, BRARY_PATH和LIBRARY_PATH,令其包含库文 或者使用驱动目录下的install.sh批处理命令,即可 件所在目录。在include目录下存放的是OpenCV 将驱动程序安装到系统中。驱动安装完成后,可以 库被调用时所需要的头文件,这里将include目录下 使用ifconfig命令来查看网卡的信息,如图8所示。 拷贝至用户include目录,一般也放在/usr/include 或者/usr/Ioca/include目录下面。 2.3.2图像信号的复原 接收学节00:0发送字节:0(0.。 图像复原的流程大致如图10所示,图像信号 接收端从无线通信链路中获取的数据是MPEG视 流码:25.0 频流,在接收端需要对图像信号进行复原与显示。 12079(2.0KB)发字节:12079(12.0K】 根据TCP协议编程可从socket中获得数据流,网络 数据流的获取主要包括设置服务器P和对应端口 网络协议选择、网络连接和接收数据。接收到的数 据是以MPEG格式存储的图像,在接收端只需要从 图8USB无线网卡P地址查看 数据流中将各副图像分割开来,得到JPEG格式的 Fig.8 IP address of USB wireless adapter 图像。然后使用OpenCV的imread函数进行解压, 将JPEG格式的图像解压成OpenCV内部可使用的 为了在视觉平台上进行图像处理,本文在Liux Mat矩阵,再使用imshow函数将图像进行显示。 系统下搭建了OpenCV开发环境。OpenCV计算机 初始化socket connecti连接, data 视觉库(open source computer vision library)是一个 rccv接收数据H 开源的跨平台视觉库,具有轻量级而且高效的特点, 关闭cocket 解压复原-PEG格式图像-分割单幅图像数据 实现了计算机视觉方面用于图像处理的大部分算 法。OpenCV移植至ARM板上的流程如图9所示。 图10图像复原流程 Fig.10 The flow of image restoration 交叉编译链的安装 Cmake安装 支撑库的安装 libgtk/libjpcg/ffmpcg 3 视觉系统平台试验 编译环境 无线图传视觉系统平台搭建完成后,可以实现 将远程视频通过无线的方式传送到接收端,然后在 接收端可以对图像进行相应的处理。为了验证平台 选择OpenCV版本 的性能,进行了图像接收和处理的开发试验。首先, 打开视频采集设备和图像接收设备,让摄像头工作 OpenCV源码编泽 在AP模式。然后在接收终端设置无线网卡连接至 摄像头网络,对收到的图像进行复原。 链接库移植至ARM 另外,对复原的图像进行图像处理实验,本文使 用OpenCV库demo中的Camshift9-1o]例程来做对象 图9移植OpenCV至ARM流程图 Fig.9 Transplant flow of install OpenCV to ARM 跟踪。CamShift(continuously apative meanShift)算 本文选用的OpenCV版本为比较新而且稳定的 法,即连续自适应MeanShift!)算法,是一种运动跟 版本2.4.9,为了使OpenCV可以在ARM的平台上 踪算法,它主要通过视频图像中运动物体的颜色信 使用,需要对其源码进行编译,得到可以在相应平台 息来达到跟踪的目的。其基本思想是对视频序列中 上运行的文件,一般使用Cmake工具进行编译操 的所有图像都做MeanShift运算,并将上一帧结果作 作。使用Cmake工具配置编译参数,设置C和C+ 为下一帧运算初始值。在OpenCV中,Camshift算法 编译器为之前配置好的amm--linux交叉编译链,然后 的实现可分为BackProjection、MeanShift和CamShift Cmake会自动根据配置生成编译所需要的Make- 3个步骤。本文将无线链路中复原的图像作为图像 file[s)。编译完成之后,由于本文中用的是am工具 处理帧的来源,根据Camshif近算法即可实现对象跟 链编译的,所以生成的OpenCV库可以在对应的am 踪。例程运行界面和跟踪结果如图11所示,在运 平台下使用。编译后生成的文件主要有bin、lib和 行界面中定义跟踪对象,此处定义的是水杯盖,图 include等目录,其中lib目录下的文件即为OpenCV ()右侧即为该对象的颜色直方图,图(b)为在移动 应用程序调用的动态链接库。在图像处理板上运行 杯盖时,程序对杯盖的跟踪结果。另外,为了在 Linux 上使用 USB 无线网卡,需要 在系统上安装相应的驱动程序,从而获得图像传输 链路中的图像数据。 安装驱动时,进入驱动程序的 …/ drivers 目录下,执行 make 和 make install 命令, 或者使用驱动目录下的 install.sh 批处理命令,即可 将驱动程序安装到系统中。 驱动安装完成后,可以 使用 ifconfig 命令来查看网卡的信息,如图 8 所示。 图 8 USB 无线网卡 IP 地址查看 Fig.8 IP address of USB wireless adapter 为了在视觉平台上进行图像处理,本文在 Linux 系统下搭建了 OpenCV 开发环境。 OpenCV 计算机 视觉库( open source computer vision library) 是一个 开源的跨平台视觉库,具有轻量级而且高效的特点, 实现了计算机视觉方面用于图像处理的大部分算 法。 OpenCV 移植至 ARM 板上的流程如图 9 所示。 图 9 移植 OpenCV 至 ARM 流程图 Fig.9 Transplant flow of install OpenCV to ARM 本文选用的 OpenCV 版本为比较新而且稳定的 版本 2.4.9,为了使 OpenCV 可以在 ARM 的平台上 使用,需要对其源码进行编译,得到可以在相应平台 上运行的文件,一般使用 Cmake 工具进行编译操 作。 使用 Cmake 工具配置编译参数,设置 C 和 C++ 编译器为之前配置好的 arm⁃linux 交叉编译链,然后 Cmake 会自动根据配置生成编译所需要的 Make⁃ file [8] 。 编译完成之后,由于本文中用的是 arm 工具 链编译的,所以生成的 OpenCV 库可以在对应的 arm 平台下使用。 编译后生成的文件主要有 bin、lib 和 include 等目录,其中 lib 目录下的文件即为 OpenCV 应用程序调用的动态链接库。 在图像处理板上运行 OpenCV 程序时,将编译好的库拷贝至处理板上的 库目录,默认可以放在系统文件中的/ usr/ local / lib 目录或者/ usr/ lib 目录下, 配置环境变量 LD _ LI⁃ BRARY_PATH 和 LIBRARY_PATH,令其包含库文 件所在目录。 在 include 目录下存放的是 OpenCV 库被调用时所需要的头文件,这里将 include 目录下 拷贝至用户 include 目录,一般也放在/ usr/ include 或者/ usr/ local / include 目录下面。 2.3.2 图像信号的复原 图像复原的流程大致如图 10 所示,图像信号 接收端从无线通信链路中获取的数据是 MJPEG 视 频流,在接收端需要对图像信号进行复原与显示。 根据 TCP 协议编程可从 socket 中获得数据流,网络 数据流的获取主要包括设置服务器 IP 和对应端口、 网络协议选择、网络连接和接收数据。 接收到的数 据是以 MJPEG 格式存储的图像,在接收端只需要从 数据流中将各副图像分割开来,得到 JPEG 格式的 图像。 然后使用 OpenCV 的 imread 函数进行解压, 将 JPEG 格式的图像解压成 OpenCV 内部可使用的 Mat 矩阵,再使用 imshow 函数将图像进行显示。 图 10 图像复原流程 Fig.10 The flow of image restoration 3 视觉系统平台试验 无线图传视觉系统平台搭建完成后,可以实现 将远程视频通过无线的方式传送到接收端,然后在 接收端可以对图像进行相应的处理。 为了验证平台 的性能,进行了图像接收和处理的开发试验。 首先, 打开视频采集设备和图像接收设备,让摄像头工作 在 AP 模式。 然后在接收终端设置无线网卡连接至 摄像头网络,对收到的图像进行复原。 另外,对复原的图像进行图像处理实验,本文使 用 OpenCV 库 demo 中的 Camshift [9⁃10]例程来做对象 跟踪。 CamShift ( continuously apative meanShift) 算 法,即连续自适应 MeanShift [11] 算法,是一种运动跟 踪算法,它主要通过视频图像中运动物体的颜色信 息来达到跟踪的目的。 其基本思想是对视频序列中 的所有图像都做 MeanShift 运算,并将上一帧结果作 为下一帧运算初始值。 在 OpenCV 中,Camshift 算法 的实现可分为 BackProjection、MeanShift 和 CamShift 3 个步骤。 本文将无线链路中复原的图像作为图像 处理帧的来源,根据 Camshift 算法即可实现对象跟 踪。 例程运行界面和跟踪结果如图 11 所示,在运 行界面中定义跟踪对象,此处定义的是水杯盖,图 (a)右侧即为该对象的颜色直方图,图(b)为在移动 杯盖时,程序对杯盖的跟踪结果。 第 5 期 梁义辉,等:一种面向无线图像传输的视觉平台 ·611·