双目视觉

news/2025/2/19 17:15:53/

转载自:http://blog.sina.com.cn/s/blog_4a540be60102v44s.html


1. 双目视觉算法简介


1.1. 双目视觉简介

双目视觉广泛应用在机器人导航,精密工业测量、物体识别、虚拟现实、场景重建,勘测领域。

什么是双目视觉?

双目视觉是模拟人类视觉原理,使用计算机被动感知距离的方法。从两个或者多个点观察一个物体,获取在不同视角下的图像,根据图像之间像素的匹配关系,通过三角测量原理计算出像素之间的偏移来获取物体的三维信息。

得到了物体的景深信息,就可以计算出物体与相机之间的实际距离,物体3维大小,两点之间实际距离。目前也有很多研究机构进行3维物体识别,来解决2D算法无法处理遮挡,姿态变化的问题,提高物体的识别率。

1.2. 算法一般流程

                                           图1 双目视觉算法流程

1.2.1. 离线标定

标定的目的是获取相机的内参(焦距,图像中心,畸变系数等)和外参(R(旋转)矩阵T(平移)矩阵,用于对其两个相机)。目前比较常用的方法为张正友的棋盘格标定方法,Opencv和Matlab上均有实现。但是一般为了获取更高的标定精度,采用工业级的(60*60格子)玻璃面板效果会更好。并且有人也建议使用Matlab,因为精度包括可视化效果会更好一些,并且Matlab的结果保存为xml,Opencv也可以直接读入,但是步骤相对于Opencv的麻烦了一些。这是Matlab标定工具箱的连接:http://www.vision.caltech.edu/bouguetj/calib_doc/

步骤为:

(1)左摄像头标定,获取内外参数。

(2)右参数摄像头标定获取外参。

(3) 双目标定,获取相机之间的平移旋转关系。


图2  Matlab双目视觉标定

 

1.2.2. 双目矫正

矫正的目的是得到的参考图与目标图之间,只存在X方向上的差异。提高视差计算的准确性。

矫正分为两个步骤

l  畸变矫正

 


图3 畸变矫正

l  将相机转化为标准形式

图4 转换为标准形式

因为矫正部分,会对图像所有点的位置进行重新计算,因而算法处理的分辨率越大耗时越大,而且一般需要实时处理两张图像。而且这种算法并行化强标准化程度较高,建议使用IVE进行硬化,类似Opencv中的加速模式,先得到映射Map,再并行化使用映射Map重新得到像素位置。Opencv中的矫正函数为cvStereoRectify。

1.2.3. 双目匹配

双目匹配是双目深度估计的核心部分,发展了很多年,也有非常多的算法,主要目的是计算参考图与目标图之间像素的相对匹配关系,主要分为局部和非局部的算法。一般有下面几个步骤。

l  匹配误差计算

l  误差集成

l  视差图计算/优化

l  视差图矫正

一般局部算法,使用固定大小或者非固定大小窗口,计算与之所在一行的最优匹配位置。如下图为最简单的局部方式,求一行最佳对应点位置,左右视图X坐标位置差异为视差图。为了增加噪声,光照的鲁棒性可以使用固定窗口进行匹配,也可以对图像使用LBP变换之后再进行匹配。一般的匹配损失计算函数有:SAD,SSD,NCC等。一般采用最大视差也可以限制最大搜索范围,也可以使用积分图和Box Filter进行加速计算。目前效果较好的局部匹配算法为基于Guided Filter的使用Box Filter和积分图的双目匹配算法,局部算法易于并行化,计算速度快,但是对于纹理较少的区域效果不佳,一般对图像分割,将图像分为纹理丰富和纹理稀疏的区域,调整匹配窗大小,纹理稀疏使用小窗口,来提高匹配效果。


图5 基于线性搜索的视差计算

非局部的匹配算法,将搜索视差的任务看做最小化一个确定的基于全部双目匹配对的损失函数,求该损失函数的最小值即可得到最佳的视差关系,着重解决图像中不确定区域的匹配问题,主要有动态规划(Dynamic Programming),信任传播(Blief Propagation),图割算法(Graph Cut)。目前效果最好的也是图割算法,Opencv中提供的图割算法匹配耗时很大。

图割算法主要是为了解决动态规划算法不能融合水平和竖直方向连续性约束的问题,将匹配问题看成是利用这些约束在图像中寻求最小割问题。

图6 基于图割(左),动态规划(中),相关性计算(右)的效果。

因为考虑到全局能量最小化,非局部算法一般耗时较大,不太好使用硬件加速。但是对于遮挡,纹理稀疏的情况解决的较好。

得到了匹配点之后,一般通过左右视线一致性的方式,检测和确定具有高置信度的匹配点。很类似前后向光流匹配的思想,只有通过左右视线一致性检验的点才认为是稳定匹配点。这样也可以找出因为遮挡,噪声,误匹配得到的点。

那么我们如何得到视差和深度信息呢?

关于视差图的后处理,一般采用中值滤波的方法,对当前点的灰度值使用邻域像素的中值来代替,这种方法可以很好去除椒盐噪声。可以去除因为噪声或者弱纹理匹配失败的孤立点。

http://www.ppmy.cn/news/355712.html

相关文章

双目测距------双目相机V1.0,将双目相机采集到任意一点的深度数据进行串口传输(带源码)

Depth2Uart 双目测距------双目相机V1.0,将双目相机采集到任意一点的深度数据进行串口传输 一、项目说明/Overview 所实现的功能:基于Intel Realsense官方提供的SDK,双目深度相机能获取到相机任何一个像素点距离前方障碍物的距离(即深度信息),并将深度信息串口数据发送…

多目标跟踪

文章目录 1. 目标跟踪分类 2. 多目标跟踪目前的主要问题 3. 多目标跟踪概述 4. 多目标跟踪方法分类5. 行人多目标跟踪方法研究进展5.1 基于目标检测的多目标跟踪5.1.1 在线多目标跟踪5.1.2 离线多目标跟踪 5.2 基于人工手动标记第一帧的方式的多目标跟踪 1. 目标跟踪分类 单目…

双目视觉的成像理论

双目视觉是机器视觉的一种重要形式,通过模拟人类双眼感知外界物体的位置信息,输送给大脑并分析出该物体在空间中的位置过程,双目视觉是利用电脑设备被动感知物体空间信息。双目视觉系统相对于单目视觉的优点主要是它存在视差,可以…

基于双目深度估计的深度学习技术研究

基于双目深度估计的深度学习技术研究 英文标题: A Survey on Deep Learning Techniques for Stereo-based Depth Estimation 论文地址: https://arxiv.org/abs/2006.02535 0.摘要 从彩色图像中估计深度是一个长期存在的不适定问题(ill-posed problem),其已经在计…

双目 机器视觉-- 测距

目录 1.双目图片--测距: 流程说明: 2. 实时采集数据,进行测距 首先进行双目定标,获取双目摄像头内部的参数后,进行测距。 注意:双目定标的效果会影响测距的精准度,建议大家在做双目定标时,做好一些(尽量让误差小) 本次的双目视觉测距,基于BM算法。

【双目相机同目标追踪】

多摄像头多目标定位追踪相关原理: 1. 多摄像头多目标追踪指标(Multi-Target Multi-Camera Tracking, MTMC Tracking) 2. 多相机系统视觉定位中的高效2D-3D点匹配方法 3. 多摄像头实时目标追踪和计数 4. 多目标多相机追踪 5. 双目视觉的运动目标跟踪定位及抓取系…

【双目视觉】双目立体匹配

一、双目立体匹配算法 在opencv中用的比较多的双目立体匹配算法有两种:BM和SGBM。SGBM是BM立体匹配算法的优化版,属于半全局匹配,相对于BM花的时间要更多,但效果优于BM。本文使用的是SGBM半全局匹配方式。 步骤: 1.打…

双目相机标定

一.运行环境 opencv2、windows、vs 二.图像获取、分割、保存 参考博客opencv打开双目摄像头、图像切割保存_scutqq的博客-CSDN博客_双目图像分割#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.…