双目摄像头在识别物体大小方面的应用

2017-01-13 09:18程子龙蒋馥蔓许峰
中国新通信 2016年22期
关键词:计算机视觉嵌入式

程子龙+蒋馥蔓+许峰

【摘要】 在机器视觉的应用当中,双目摄像头对物体距离和大小的感知模仿了人眼的功能,实现了对现实世界的感知。该算法基于ARM Cortex-A9嵌入式开发平台,在考虑了透镜的径向畸变和切向畸变影响的情况下,对双目摄像头进行了立体标定,给出了使用opencv双目识别物体大小和距离的算法。其充分发挥了opencv图像处理库的实用性和双目摄像头的优势,具有较高的识别准确性、跨平台可移植性和实时性,可以满足各个领域的需求。

【关键词】 计算机视觉 嵌入式 双目立体视觉 物体大小 opencv

引言

随着计算机计算能力的提高,图像分析越来越凸显出其在各个领域的优势,而单摄像头所得到的单张平面图像已经满足不了人们在各个领域内对图像处理的要求,双摄像头的图像处理技术应运而生。人眼对世界的感知就是通过双眼得到的,图像工程领域模仿人眼的结构,设计了双目摄像头,在二维图像的基础上将图像拓展成为了三维。

本文基于OpenCV库,OpenCV是一个开源的计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上,它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,实验平台为Exynos 4412开发板,是一款基于ARM Cortex-A9架构的嵌入式开发平台,从双目测距的原理开始,使用了canny算子等算法实现了对双目摄像头中物体的提取和识别,并通过轮廓检测实时计算出物体的尺寸大小。经实验验证,计算结果准确,具有很高的实用价值。

一、双目测距的原理

1.1基本原理

双目测距是基于视差的原理,该模型是基于一套无畸变、对准、已测量好的完美标准立体实验台的数学模型,即两摄像头所得图像无任何畸变,完全基于小孔成像原理,两图像平面完全在一个平面内,每一行像素点平行且对其,两摄像头参数完全相同,如下图。

深度与视差成反比,两者是明显的非线性关系,当视差接近0时,微小的视差变化会导致很大的深度变化;当视差较大时,微小的视差变化几乎不会引起深度多大的变化。因此,立体视觉系统仅仅对于物体与摄像机相距较近时具有较高的深度精度。

1.2相机的标定的基本原理

对摄像机进行标定,其实质是求解摄像机成像模型中的相关参数。在众多摄像机模型中,最简单的是针孔模型。但是摄像机镜头都是采用的透镜成像,并不是理想的针孔模型,透镜的使用带来了透镜畸变。[1]在opencv中,常用的摄像头畸变模型为

其中,R为两摄像头间的旋转矩阵,T为两摄像头间的平移矩阵。Rr为右摄像头经过张氏标定得到的相对标定物的旋转矩阵,Tr为右摄像头通过张氏标定得到的相对标定物的平移向量。Rl为左摄像头经过张氏标定得到的相对相同标定物的旋转矩阵,Tl为左摄像头经过张氏标定得到的相对相同标定物的平移向量。

在opencv中,可以利用棋盘格标定盘进行标定,使用FindChessboardCorners()抓取角点。获取亚像素角点坐标 FindCornerSubPix(),单目标定,求取摄像机内外参数ClibrateCamera2()。双目标定,求取两摄像机相对位置关系StereoClibrate()。

图为立体标定后的修正图。

二、物体识别

2.1物体识别的基本原理

首先对双摄像头得到的图片进行立体匹配,然后对原始图片进行二值化处理、高斯模糊、canny算子轮廓检测,寻找物体轮廓并用最小四边形将物体完整框出,通过计算四边形四个顶点的坐标得到物体的像素大小。

2.1物体识别的opencv的实现

Opencv提供了BM算法、SGBM算法、GC算法三种立体匹配算法,三种算法的匹配速度从高到低,匹配质量从低到高,出于匹配速度和匹配质量的考虑,在这里使用SGBM算法进行计算,在opencv中提供了cv::Ptr类,运行效果如图。

三、物体实际大小的计算

3.1物体实际大小的计算原理

获得景深图后,对物体轮廓进行检测,并用最小四边形框出物体的轮廓,通过计算四边形四个顶点的坐标得到物体中心点的像素坐标,通过双目测距的原理获得物体中心点距离摄像头的距离。根据三角形原理,可以计算出物体的宽度和高度,实现物体大小的测量。

3.1计算物体实际大小的实现

首先使用reprojectImageTo3D生成三维点云,使用findContours获得物体轮廓,遍历删除最大最小的轮廓,使用minAreaRect获得轮廓的最小矩形并得到矩形四个顶点的坐标,通过三角函数计算出物体的大小,并通过雷达扇形图显示在屏幕上。

四、结束语

通过对opencv平台的利用,可以将注意力完全集中到图像识别的算法上去,本文基于Exynos 4412开发板,所编写的程序具有很高的可移植性和运行实时性。全文对双目摄像头物体大小识别的各个步骤进行了概括性的介绍,包括双目测距的原理、摄像头的标定、物体轮廓的识别等方面,并对各个步骤的原理做了简要介绍。本文基于算法的实时性和准确性考虑,经过多次实验选取了相对符合要求的算法,保证了实验结果的稳定性。尽管如此,本套研究成果在算法的优化上仍有提高的空间,后面会继续完善算法从而扩大算法使用的领域和准确性。

参 考 文 献

[1](袁 利 刘海华 陆雪松. 基于 OpenCV 的双目摄像机标定. 现代科学仪器 2013.4)

[2]于仕琪,刘瑞祯. 学习opencv(中文版)[M]. 清华大学出版社2009.10

[3](Heiko Hirschmuller的《Stereo Processing by Semi-global Matching and Mutual Information》)

猜你喜欢
计算机视觉嵌入式
机器视觉技术发展及其工业应用
危险气体罐车液位计算机视觉监控识别报警系统设计
嵌入式LINUX操作系统的研究
嵌入式组件技术的研究及应用
“嵌入式系统概论”课程设计
AItera推出Nios II系列软核处理器