0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从零开始:入门双目视觉你需要了解的知识

3D视觉工坊 来源:3D视觉工坊 2023-06-06 14:35 次阅读

双目立体视觉是计算机视觉中的一个重要领域,它利用两个相机拍摄同一场景的不同视角的图像,通过计算图像之间的对应关系,恢复出场景的三维结构信息。双目立体视觉的基本步骤包括双目标定、立体校正、立体匹配和三维重建。本文将介绍这些步骤,帮助你学会从双目标定到立体匹配的基本流程。

2fb19958-042f-11ee-90ce-dac502259ad0.png

双目相机标定

双目标定是指确定两个相机之间的几何关系,包括内参矩阵、外参矩阵和基础矩阵。内参矩阵描述了相机的内部参数,如焦距、主点坐标和畸变系数。外参矩阵描述了相机的外部参数,如旋转矩阵和平移向量。基础矩阵描述了两个图像平面之间的对极几何关系,即任意一点在一个图像平面上的投影与另一个图像平面上的对应点所在的直线满足一个线性方程。

双目标定的方法有很多,常用的是基于棋盘格图案的张氏标定法,它利用多幅不同角度拍摄的棋盘格图像,通过提取角点坐标和求解最小二乘问题,得到两个相机的内参矩阵和外参矩阵,进而计算出基础矩阵。

2fbd7b38-042f-11ee-90ce-dac502259ad0.png

tip:除了传统的标定方法的张正友标定法,还有什么标定方法?

传统的标定方法:除了张正友标定法还包括椎体标定法、光栅板标定法、点追踪标定法等,这些方法通常需要事先准备一些特定的标定物体和设备,采集一定数量的标定图像或者对标定物体进行特殊处理,然后通过求解投影矩阵和外参矩阵等参数,计算出相机的内部参数和外部参数。

自标定方法:也称为自标定技术或自动标定技术,它是一种无需特定标定物体和设备,通过对场景中的特征点或轮廓线进行跟踪、匹配和分析,利用统计学或优化算法实现相机标定的方法。这种方法与传统标定方法相比,具有更高的自动化程度和更广泛的适应性,但在精度和稳定性上稍有不足。

基于主动视觉的标定方法:主要包括基于结构光的方法和基于视觉后处理的方法。前者是通过光源和被测物体之间的互动关系,实现对相机内部参数和外部参数的标定;后者则是利用数字图像处理技术进行后处理,从而提高标定结果的精度和可靠性。这些方法因其高精度、高速度、无需接触、非侵入性等优点,在各种工业自动化机器人视觉等领域都有广泛应用。但是标定过程复杂,设备成本高昂。

去畸变

2fcd1264-042f-11ee-90ce-dac502259ad0.png

标定板法是最常用的一种方法,它可以根据标定板上的特征点计算出相机的畸变参数,然后通过畸变参数对图像进行畸变校正。自适应分类法是一种基于图像边缘的方法,它可以通过检测图像边缘来估计畸变参数,然后对图像进行畸变校正。以图像边缘为基础的方法是一种基于图像边缘的方法,它可以通过检测图像边缘来估计畸变参数,然后对图像进行畸变校正。以特征点为基础的方法是一种基于特征点匹配的方法,它可以通过匹配特征点来估计畸变参数,然后对图像进行畸变校正。以直线为基础的方法是一种基于直线匹配的方法,它可以通过匹配直线来估计畸变参数,然后对图像进行畸变校正。

tip:假如已经通过张正友标定获取了相机的内外参数,接下来去畸变都可以使用什么算法?

如果已经获取了相机的内部参数和外部参数,可以使用 OpenCV 库中提供的 undistort() 函数对图像进行去畸变处理。在这种情况下,对于常见的径向畸变,undistort() 函数在默认情况下使用张正友畸变模型进行去畸变处理。具体实现过程如下:

根据所给的相机内部参数和外部参数,计算出投影矩阵 Q,即将相机坐标系下的三维点转换到像素坐标系下的映射矩阵。

根据 Q 矩阵和畸变系数,计算出相机坐标系下的径向畸变和切向畸变的校正系数。

通过校正系数对输入的图像进行去畸变处理。

2fd47572-042f-11ee-90ce-dac502259ad0.png

极线校正(立体校正)

在双目视觉中,极线校正是一项关键的预处理步骤,极线校正的主要目标是将左右图像的极线对齐,并且使对应的像素在同一行上。这样,当进行立体匹配时,我们只需要在一条极线上搜索对应像素,而无需在整个图像上进行搜索。这极大地降低了计算复杂度,并提高了匹配的效率。

2fdf6ac2-042f-11ee-90ce-dac502259ad0.png

tip:有没有不需要极线校正的立体匹配算法?极线校正是立体匹配必须要提前进行的步骤吗?

事实上,并不一定需要进行极线校正才能进行立体匹配。以下几种算法可以在无需进行极线校正的情况下进行立体匹配:

基于特征的匹配算法:这类算法利用图像中的特征点(如SIFT,SURF等)进行匹配,在匹配过程中可以抵消一定角度的视角变化,无需极线校正。代表算法有SIFT立体匹配、SURF立体匹配等。

基于区块的匹配算法:这类算法将图像分割成多个区块,然后在两个图像中的对应区块中寻找最相似的区块进行匹配。匹配过程中也可以抵消一定的视角变化,无需极线校正。代表算法有区块匹配算法等。

基于光流的匹配算法:这类算法通过计算两个图像之间的光流场来寻找匹配,光流计算过程可以抵消一定视角变化,所以也无需进行极线校正。代表算法有Lucas-Kanade光流算法等。

基于深度学习的匹配算法:这类算法利用深度学习网络对立体图像对进行端到端的学习和匹配,网络在训练过程中可以学习视角变化,所以也无需进行极线校正。代表算法有PBC-Net等。

所以,总的来说,尽管极线校正可以简化立体匹配的难度,但并不是立体匹配一定要提前进行的步骤。使用上述几种算法都可以在无需进行极线校正的情况下实现立体匹配。

立体匹配

立体匹配是指寻找两个图像中相同物体或场景的对应点,从而计算出它们之间的视差。视差是指同一物体在两个图像中投影点之间的水平距离,它与物体到相机的距离成反比,因此可以用来估计物体的深度。

立体匹配的方法有很多,以下是一些常见的立体匹配算法:

基于块匹配的算法:这是一种经典的立体匹配算法,它将图像分成小的块,然后在两个摄像机图像中搜索具有最小差异的块对应区域。常见的块匹配算法包括贪婪匹配算法(例如最小绝对差异、最小均方差)和自适应窗口匹配算法(例如自适应支持窗口)。

基于特征匹配的算法:这些算法使用图像中的特征点或特征描述符来进行匹配。特征点可以是角点、边缘点或其他具有显著性的图像点。常见的特征匹配算法包括尺度不变特征变换(SIFT)、加速稳健特征(SURF)和特征点匹配算法(例如RANSAC)。

基于能量优化的算法:这些算法将立体匹配问题建模为能量最小化问题。通过定义能量函数和约束条件,可以使用动态规划、图割(graph cut)或消息传递等方法来求解最优匹配。常见的能量优化算法包括图割算法、Belief Propagation算法和Semi-Global Matching(SGM)算法。

深度图生成

视差图是由两个不同位置的相机所拍摄到的两张图像组成的。深度图则是通过视差图来计算出物体所处的深度。以下是几种生成深度图的算法:

基线三角化:通过已知的相机位置和视差图的像素坐标之间的关系,使用三角化方法计算出物体深度。

统计学方法:通过对大量的视差数据进行简单统计,去除误差和离群点得到物体深度。

基于卷积神经网络(CNN)的方法:使用卷积神经网络训练模型,对输入的视差图进行处理,得到物体的深度图。

基于深度学习和立体视觉的融合方法:将深度卷积神经网络(DCNN)和立体视觉算法结合起来进行深度图生成,提高深度图的精度和鲁棒性。

tip:深度图和视差图有什么区别?

视差图指存储立体校正后单视图所有像素视差值的二维图像,是左图和右图对应点的x差值,单位一般是像素单位。深度图是在视差图基础上生成的图像,它的像素值表示场景中各点到相机的距离。深度图是一种单通道灰度图像,其中像素值越小表示物体距离相机越近,像素值越大表示物体距离相机越远。深度图可以用于计算物体的三维坐标,也可用于机器视觉和计算机图形学中的三维重建、虚拟现实等领域。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4572

    浏览量

    98748
  • 矩阵
    +关注

    关注

    0

    文章

    406

    浏览量

    34250
  • 视觉
    +关注

    关注

    1

    文章

    140

    浏览量

    23678

原文标题:从零开始:入门双目视觉你需要了解的知识

文章出处:【微信号:3D视觉工坊,微信公众号:3D视觉工坊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于SoC的双目视觉ADAS解决方案

    相比于单目视觉双目视觉(Stereo Vision)的关键区别在于可以利用双摄像头从不同角度对同一目标成像,从而获取视差信息,推算目标距离。
    发表于 11-05 03:46 3115次阅读

    钜芯发布业内首颗智能双目视觉芯片

    据麦姆斯咨询报道,物联网及双目视觉专家钜芯发布了一款智能双目立体视觉系统,以及业内首颗智能双目立体视觉芯片eagleye100。
    的头像 发表于 10-26 10:26 1w次阅读

    双目立体视觉原理大揭秘(一)

    双目视觉的应用来说,主要分为四大部分:一 双目视觉导航、定位;二 三维重构;三 双目立体测量;四 空间三维立体跟踪。很多科研项目或工业现场需要双目
    发表于 11-21 16:20

    【WRTnode2R申请】双目视觉随动平台

    申请理由:之前用wrtnode的u***接双摄像头外加一个么mcu实现过一个一个双目视觉随动平台,这样太麻烦了,希望能用这个来实现一个更简单的解决方案。项目描述:u***接双摄像头,mcu控制云台。通过WIFI将双目视觉传递到手机进行显示,同时将手机的角度信息返回,控制云
    发表于 09-10 11:25

    从零开始入门IT编程之路

    的束缚,也能遂心应手的走上编程这条不归路!  如何从零开始入门IT编程之路:  一、首先来了解什么是编程?  编程广义上来说就是编写计算机可执行的指令(集合)  二、编程领域的知识有什
    发表于 07-06 10:31

    基于SoC的双目视觉ADAS解决方案

    和带宽能够支持对双路高达1080p@30fps图像信号的实时处理,保证了双路图像信号的质量和一致性。在双目视觉ADAS应用中,最大的挑战来自于对两路图像进行立体匹配和三维重构所需要的巨大运算量。以FCW
    发表于 08-12 15:15

    如何从零开始入门FPGA?

    求教论坛的大神,如何从零开始入门FPGA?对Xilinx平台的开发比较感兴趣,不知道有什么开发板推荐?除了开发板,还需要什么配套硬件?
    发表于 07-16 12:57

    LabVIEW双目视觉 【转载】

    ` 本帖最后由 sszx2007 于 2020-3-2 17:04 编辑 LabVIEW双目视觉原创 张冬斌 LabVIEW逆向工程高级编程 转载至:https
    发表于 03-02 17:03

    JAVA从零开始学习知识整理

    JAVA从零开始学习知识整理——MySql——day05—【hqC】
    发表于 06-14 16:15

    基于IMX214+ZYNQ XC7Z100的1080P双目视觉智能平台

    双目视觉智能平台概述硬件资源1 FMC 双目MIPI模块FL0214FL0214模块的参数说明 FL0214模块的结构图FL0214模块原理框图模块FMC LPC的引脚分配
    发表于 01-01 06:18

    采用DM642设计的机器人双目视觉系统

    基于DM642的机器人双目视觉系统设计
    发表于 04-02 07:20

    基于神经网络的双目视觉传感器建模

    根据双目视觉传感器的工作原理, 分析了影响测量精度的因素, 表明双目视觉传感器的物体空间坐标与图像坐标之间存在复杂的非线性映射关系, 其数学模型无法用解析式精确地加以
    发表于 07-10 15:53 11次下载

    在DM642开发评估板上实现双目视觉监控系统的软硬件设计方案

    由于双目视觉监控系统可以模仿人眼功能,感知三维世界信息,能够得到被测对象到CCD摄像机的深度信息,近几年已开始需要三维立体检测的领域得到应用。另外,双目视觉监控系统也可用于多场景监控
    发表于 05-07 09:55 993次阅读

    双目视觉简介及算法一般流程

    1.1. 双目视觉简介 双目视觉广泛应用在机器人导航,精密工业测量、物体识别、虚拟现实、场景重建,勘测领域。 什么是双目视觉双目视觉是模拟人类
    的头像 发表于 10-23 09:51 1.1w次阅读
    <b class='flag-5'>双目视觉</b>简介及算法一般流程

    双目立体视觉是什么?单目视觉双目立体视觉的区别?

    双目更多的是基于物理测量,而单目视觉则是基于逻辑推理,通过大量的数据训练,先识别出目标,再根据目标的大小和高度估算距离。因此,单目视觉的漏检率高于双目立体
    发表于 08-17 09:40 2531次阅读
    <b class='flag-5'>双目</b>立体<b class='flag-5'>视觉</b>是什么?单<b class='flag-5'>目视觉</b>与<b class='flag-5'>双目</b>立体<b class='flag-5'>视觉</b>的区别?