基于嵌入式Linux的双目测距系统研究

2015-08-29 11:11:18谢永超王进华福州大学电气工程与自动化学院福建福州350108
网络安全与数据管理 2015年5期
关键词:双目测距摄像机

谢永超,王进华(福州大学 电气工程与自动化学院,福建 福州 350108)

基于嵌入式Linux的双目测距系统研究

谢永超,王进华
(福州大学电气工程与自动化学院,福建福州 350108)

根据嵌入式系统的特点,设计了以ARM为核心的双目立体视觉测距系统。系统使用双目立体摄像头采集图像数据,可设置图像的多种属性。利用开源计算机视觉库OpenCV对采集的图像数据进行处理,分别完成了两台摄像机标定、匹配、重建等工作,最后实现摄像机测距功能。实验结果表明,该系统测量结果合理,工作稳定,同时可用Qt/Embedded实时显示图像和数据,具有良好的人机交互功能和跨平台移植性。

嵌入式;计算机视觉库;立体视觉;双目测距

0 引言

双目立体视觉测距是计算机视觉技术中的一个分支,也是计算机视觉研究的重点和热点之一。它通过双摄像机模拟人眼的功能,对三维世界进行立体感知,恢复物体的三维几何信息。随着机器视觉理论的发展,双目立体视觉在机器视觉研究中发挥了越来越来越重要的作用,具有广泛的适用性[1]。

嵌入式ARM因处理速度快、使用方便、操作系统开源等特点而广泛应用。目前,双目视觉系统多是基于 PC平台实现[2],而在嵌入式系统中,因其屏幕尺寸、处理速度等硬件资源受到限制,测距系统的实现具有新特点。本文以嵌入式处理器作为硬件核心,构建基于嵌入式系统的双目测距系统,并具有图像的实时显示功能。

1 双目测距原理

1.1摄像机模型

摄像机的针孔模型如图1所示,摄像机之外物体X通过穿过针孔平面的针孔,光束在图像平面成像,形成图像x。其中,f为摄像机焦距,Z为摄像机与物体间距离。

图1 针孔模型

根据相似三角原理可得:

1.2双目测距模型

利用针孔模型,可以得到双目测距模型[3]。如图2所示,Ol、Or分别为两摄像机的光心,焦距为 f1、f2。光轴经过两个像平面的主点cl、cr。假设两摄像机的像平面精确共面,图像行对准,光轴严格平行,并且具有相同的焦距f(以上这些假设都是需要后面实现的)。物理世界中的P在左右平面上的成像点为 pl、pr,对应横坐标xl、xr。

图2 双目测距模型

视差定义为 d=xl-xr。根据相似三角形原理,以左摄像机光心为原点,可以得到左摄像机坐标系下的深度Z:

2 实验平台

本系统主要分为硬件和软件两类。硬件是以S3C2440A为核心的ARM嵌入式开发平台。S3C2440A以ARM920T为核心,低功耗,简单,适合于成本和功耗敏感的应用。使用CMOS立体摄像头视频流数据,图片格式JPEG。LCD液晶显示器负责图像数据的显示和人机交互。软件部分由摄像头及屏幕驱动程序、OpenCV图像处理算法、QT主程序设计等组成。

开放源代码的计算机视觉类OpenCV是由一些C函数和C++类所组成的库,用来实现图像处理和常用的计算机图像算法。具有开发效率高、执行速度快等优点。使用C函数和C++类可进行跨平台移植,因此可以很好地应用于工程实际当中。

QT是跨平台C++图形用户界面工具。它特有的“信号-插槽”机制是QT编程的基础,当一个特定事件发生的时候,一个信号被发射。因此,执行按钮等事件时,可以方便地执行各个功能,如界面切换、显示和关闭等。本嵌入式系统的功能框图如图3所示,其功能都是利用“信号-插槽”机制实现。

图3 系统的功能框图

3 系统实现

3.1图像采集

获取立体图像是图像处理的基础,图像质量受到光照条件、摄像机性能以及景物特点等因素的影响。因此,获得高质量的立体图像是双目测距前提。

V4L2(Video 4 Linux 2)是针对免驱 USB设备的编程框架,主要用于采集USB摄像头。为了更方便地调节视频设备的属性,本系统并没有使用OpenCV获取图像,而是调用V4L2的接口函数。在Linux系统编程中,一般使用 ioct()函数来对设备的 I/O通道进行管理[4]。

针对本嵌入式的特点,使用 ioct()函数可以设置图片亮度、对比度、格式、尺寸,如设置320×240或者 640× 480的分辨率,以适应屏幕大小。

系统图像采集过程如图4所示。其中,图像处理阶段若是处在获取标定,可以用 Opencv中的“角点检测”函数计算角点个数,以判断角点图的好坏。在测距时,可以完成图像的处理。利用V4L2采集图像的主要过程如下:

(1)fd=open(″dev/video0″,O_RDWR),打开设备文件,即左、右摄像机。

(2)ioctl(fd,VIDIOC_QUERYSTD,&std),取得设备的功能,查看设备具有什么功能。

(3)ioctl(fd,VIDIOC_S_FMT,&fmt),设置摄像机视频图片格式。

(4)ioctl(fd,VIDIOC_REQBUFS,&req),向驱动申请帧缓冲。

(5)mmap(),申请物理内存,并将申请到的帧缓冲映射到用户空间。

(6)ioctl(fd,VIDIOC_STREAMON,&type),开始视频的采集。

(7)ioctl(fd,VIDIOC_DQBUF,&buf),出队列以取得已采集数据的帧缓冲,取得原始采集数据。

(8)ioctl(fd,VIDIOC_STREAMOFF,&type),停止视频的采集,然后使用munmap()函数删除映射。

(9)close(fd),关闭视频设备。

图4 图像采集流程图

3.2基于QT的图像显示

在OpenCV中,图片是IplImage类型,IplImage类型图片的每个像素点是由24位的三通道B、G、R(蓝、绿、红)三种颜色组成。若使用QT库内与图像处理与显示有关的QImage类,QImage类颜色的排列顺序为R、G、B(红、绿、蓝)。为使IplImage类图像能够在 QT图像界面中显示,又不降低视频图像质量,需要通过程序将 BGR图像转化为RGB图像,即交换R通道与B通道的顺序,可采用 cvCvtColor()函数。由于本系统 QT的特殊性,图片不能直接显示,可将图像显示在label上。采用如下语句进行转换及显示:

QLabel label(this);

cvCvtColor(frame,frame,CV_RGB2BGR);

QImage image=QImage((const uchar*)frame->imageDa ta,

frame->width,frame->height,QImage::Format_RGB888);

label.setPixmap(QPixmap::fromImage(image));

label.show();

3.3摄像机标定

在双目视觉中,可以通过两幅二维图像对应像素点计算得到三维世界坐标与二维世界坐标的对应关系,以此得到物体的三维坐标值[5]。

光轴与图像平面的交点与中心的偏移形成两个摄像机的内 cx、cy。单个像素点在成像仪上是矩形,形成另外两个 x、y方向上的焦距内参 fx、fy。这样,可以得到摄像机的内矩阵 M,将物理世界的点Q(X,Y,Z)投影到摄像机上q(x,y),利用齐次坐标,可表示为:

透镜的球形形状产生径向畸变 k1、k2、k3,在成像仪上径向位置按下式进行调节:

透镜与图像不平衡产生切向畸变,用两个参数p1和p2表示:

其中,(x,y)是原来的点,(xcorrected,ycorrected)为修正后的点。

两摄像机之间的旋转矩阵R和平移向量T构成了摄像机的外参。OpenCV中利用cvStereoCalibrate()函数和多幅棋盘角点图(图5)进行立体标定。

图5 摄像机角点检测图

3.4立体校正

在实际应用中,摄像机几乎不可能像图1那样严格地前向平行对准,但可以通过数学方法计算投影图和畸变图,从而将左右摄像机图像校正为前向平行对准[6]。立体校正的目的就是使得两台摄像机准确共面并且相对准,因此需要进行校正。

立体校正算法有非标定校正(如Hartley算法)等。其可以简单地通过场景中观察点完成校正,然而不可获知图像比例。Bouguet算法为标定立体算法,使用两台摄像机之间的旋转和平移参数进行校正计算。Bouguet立体校正可使得两图像中的每一幅重投影次数都最小化,同时使得观测面积最大化。

通过 OpenCV中 cvStereoRectify()立体校正函数,可以得到重投影矩阵Q:

3.5立体匹配

图像立体匹配实质上解决了对不同时间或空间位置下获取的同一物体的两幅或多幅图像信息在位置空间或灰度空间上寻找对应匹配像素点的问题。简言之,寻找这些图像中相同物体的对应像素点。

立体匹配找到两个不同摄像机图像中具有相同特征的点。OpenCV中有BM算法、SGBM算法、GC算法等。其中BM算法测距速度很快,可以达到实时应用的要求,SGBM算法和 GC(Graph Cuts)算法的测距速度较慢,而BM算法误差只比SGBM算法稍大,故系统采用BM算法[7]。BM块匹配算法cvFindStereoCorrespondenceBM()函数,使用“绝对误差累计”,查找左右两幅立体校正图像之间的匹配点,匹配代价函数:

其中E表示匹配窗口灰度均值,D为匹配窗口,d为窗口的位移量。代价越小,匹配度越高。通过规定视差的搜索范围构成一个双目视界。

3.6三维重建

利用立体匹配得到的视差d、图像中通过角点检测到的点(x,y)以及由立体校正得到的投影矩阵 Q,可得到3D深度:

其中三维坐标就是(X/W,Y/W,Z/W)。Opencv中的函数cvReprojectImageTo3d(),该函数输入视差数据和每个像素坐标,输出所需的三维点阵,这样就可以提取物体的深度信息。

4 实验结果

OpenCV利用张正友标定法,使用20幅摆放在不同位置的平面黑白棋盘图,对摄像机标定。在应用过程中,摄像机标定误差及系统结构参数对系统测量精度有着不同程度的影响[8],采取优化方法后的摄像机内参数如下。

利用上述参数,使用该系统测量多个目标物体的距离,将测量值与实际值进行比较,得到表1所示结果。

表1 测量结果

实验表明,摄像机间的距离约 36.5 mm时,在300~2 500 mm的实验范围内,系统能够识别匹配物体的图像,得出物体的距离的测量误差在10%以内。系统测距较为准确。但随着距离的增加,导致匹配效果较差,误差有逐渐扩大的趋势。物体距离为2 500 mm时,测量距离误差已超过100 mm。因此,本系统暂不适合远距离测距。为提高测距精度,可从以下几个方面入手:增加标定图像数目,增加基线长度,调整相应参数,变换图像处理方法,增大焦距等。如何更有效地减少测量误差,扩大测距范围,需要以后不断研究和改进。

[1]赵鹏.机器视觉理论及应用[M].北京:电子工业出版社,2011.

[2]王杰,孟浩,张洁.基于嵌入式 Linux的双目测距系统研究[J].世界科技研究与发展,2014,36(3):263-267.

[3]BRADSKI G,KAEHLER A.学习OpenCV[M].于仕琪,刘瑞祯,译.北京:清华大学出版社,2009.

[4]白长清,陈沛.嵌入式终端基于 Linux V4L2的图像采集系统[J].科技资讯,2012(2):22-23.

[5]陈胜勇,刘盛.基于 OpenCV的计算机视觉技术实现[M].北京:科学出版社,2008.

[6]任继昌,杨晓东.基于角点检测的双目视觉测距新方法[J].电光与控制,2013,20(7):93-95.

[7]王浩,许志闻,谢坤,等.基于OpenCV的双目测距系统[J].吉林大学学报(自然科学版),2014,32(2):188-193.

[8]肖志涛,张文寅,耿磊.双目视觉系统测量精度分析[J].光电工程,2014,41(2):6-11.

Research of binocular ranging system based on embedded Linux

Xie Yongchao,Wang Jinhua
(College of Electrical Engineering and Automation,Fuzhou University,Fuzhou 350108,China)

According to the characteristics of embedded system,this paper designs a binocular stereo vision measuring system based on ARM.it uses two binocular stereo cameras to capture image data and can also set various attributes of the image.Then,the system completes two camera calibration,matching and reconstruction with OpenCV(open source computer vision library).Finally the distance Measuring is realized.Experiments show that the results of the measurement system is reasonable and stable.The function of real-time display of images and data with Qt/Embedded can be achieved.It has good interactive features and crossplatform portability.

embedded;OpenCV;stereo vision;binocular ranging

TP391

A

1674-7720(2015)05-0039-04

(2014-12-06)

谢永超(1990-),男,硕士研究生,主要研究方向:嵌入式系统。

王进华(1963-),男,博士,教授,博士生导师,主要研究方向:鲁棒控制、非线性系统控制、嵌入式系统。

猜你喜欢
双目测距摄像机
类星体的精准测距
科学(2020年3期)2020-01-06 04:02:51
基于双目测距的卡尔曼滤波船舶轨迹跟踪
电子制作(2019年20期)2019-12-04 03:51:38
看监控摄像机的4K之道
浅谈超声波测距
电子制作(2017年7期)2017-06-05 09:36:13
摄像机低照成像的前世今生
新安讯士Q6155-E PTZ摄像机
基于双目视觉图像的长度测量方法
如何消除和缓解“摄像机恐惧症”
新闻前哨(2015年2期)2015-03-11 19:29:25
基于PSOC超声测距系统设计
相对差分单项测距△DOR
太空探索(2014年1期)2014-07-10 13:41:50