双目视觉焦距_机器视觉——双目视觉的基础知识(视差深度、标定、立体匹...

双⽬视觉焦距_机器视觉——双⽬视觉的基础知识(视差
度、标定、⽴体匹配)...
1
1、双⽬视觉的视差与深度
⼈类具有⼀双眼睛,对同⼀⽬标可以形成视差,因⽽能清晰地感知到三维世界。因此,计算机的⼀双眼睛通常⽤双⽬视觉来实现,双⽬视觉就是通过两个摄像头获得图像信息,计算出视差,从⽽使计算机能够感知到三维世界。⼀个简单的双⽬⽴体视觉系统原理图如图 1 所⽰。
两个相机的投影中⼼的连线的距离为 b,也叫做基线,三维空间任意⼀点 P 在左相机的成像点为 PL,在右相机的成像点为PR。根据光的直线传播的原理可知,三维空间点 P 就是两个相机的投影中⼼点与成像点连线的交点。线段L和R分别是左右相机成像点到左成像⾯的距离,则点 P 在左右相机的视差可以定义如下:
两个成像点PL和PR之间的距离为:
电源外壳根据相似三⾓形理论可以得出:
则可以得到点 P 到投影中⼼平⾯的距离Z
当点 P 在三维空间上移动时,点 P 在左右相机上的成像位置也会改变,从⽽视差也会发⽣相应变化,由上式可知,视差与三维空间上的点到投影中⼼平⾯的距离成反⽐。因⽽,只要知道某点的视差,就可以知道该点的深度信息。
三维空间点 P 在相机的成像图如下图所⽰。由图可以看出,根据相似三⾓形原理, 有以下关系:
因此,当已知三维空间上任意⼀点的在不同图像上的视差,再根据相机的参数,就可以知道该点的三维坐标。
2
2、双⽬相机的相关坐标系
物体的三维信息都是通过⼆维图像推导⽽来的。要想明确物体在三维空间的具体位置,除了图像的信息,还需知道相机的具体参数。相机参数的确定过程就叫做相机的标定。在双⽬视觉系统中,除了对每个相机进⾏标定外,还需要知道相机间的相互关系以及相机与待测物体的坐标关系,这⼀过程叫做系统的标定。
从图像上的物体到三维空间上的物体的映射过程实际上是坐标系的变换。图像上的某⼀点,经过物理关系的转换可以得到现实的物理坐标,然后将图像平⾯映射成相机坐标系的某⼀平⾯,得到该点在相机坐标系的坐标,最后通过相机坐标系与世界坐标系的旋转平移变换就可以确定该点的实际三维坐标了。所以要想确定点的三维坐标,⾸先要了解这四个坐标系。
(1) 像素坐标系。在数字图像中,⼀幅图像就是⼀个 M ⾏ N 列的数组,数组中的每个数值就是该点的亮度。在图像的左上⾓建⽴直⾓坐标系 u、v, 每⼀像素的坐标(u, v)就是该像素在数 组中的⾏和列。以像素作为单位的坐标系就叫做像素坐标系。
(2) 图像坐标系。要想知道物体在三维空间的具体位置,就需要建⽴与实际物理单位相关的坐标系,这样的坐标系叫做图像坐标系,该坐标系以图像内某⼀点作为坐标原点,其 x 轴和 y 轴分别与像素坐标系的 u 轴,v 轴平⾏。图像上任意⼀个像素在两个坐标系的映射关系为:
其中,单个像素在 x 轴和 y 轴的实际物理距离为 dx 和 dy,将上式转换成齐次⽅程式为:
(3) 相机坐标系。图像坐标系虽建⽴起图像与现实世界的物理关系,但这只是⼆维关系,因此,需要建⽴与三维世界相关的相机坐标系。图像坐标系是相机坐标系的某⼀平⾯,相机坐标系 的 x 轴和 y 轴与图像坐标系对应轴平⾏,两个坐标系间的距离就是相机的焦距 f。其以相机光⼼为坐标原点,光轴为 z 轴,可以⽤(c, c, c )来表⽰。
(4) 世界坐标系。相机坐标系是以相机为中⼼的描述现实世界的三维坐标系。在现实空间中,存在⽆数坐标系可以描述三维空间,为了确定三维空间点的具体位置,需要确定唯⼀⼀个基准坐标系来表述空间,这就是世界坐标系,⽤(w, w, w)来表⽰。
其中,R 为 3×3 单位正交矩阵,表⽰了坐标系的旋转操作;t 为三维平移向量,代表了坐标系的平移操作;0 表⽰三维零向量。
四个坐标系之间总的关系
3
3、双⽬相机的畸变系数
上述的线性模型并不能准确描述物体与图像的对应关系,这是因为光学镜头具有透视失真,会导致图像发⽣偏差,这是镜头的固有属性⽆法消除。为了减少图像偏差,需要明确镜头的畸变系数,对图像进⾏校正。常见的畸变主要有径向畸变和切向畸变。
径向畸变是指图像像素以畸变中⼼为原点,沿着径向产⽣位置偏差,从⽽导致图像形变。其常⽤畸变原点周围的泰勒展开式的前两项 k1 和k2 来表⽰,如果畸变较⼤,还可以增加使⽤第三项 k3 来描述,常⽤的描述公式为:
其中,(x, y)是校正后像素点的位置;(0, 0)是原图上的像素点位置;r 径向距离。
切向畸变是由于在安装时,产⽣安装偏差,使镜头不完全平⾏于镜头平⾯⽽造成的畸变,其可以使⽤ p1和 p2 两个参数来描述:
要消除镜头畸变,就是要同时消除径向畸变和切向畸变,所以要知道以下 5 个畸变参数的值
这 5 个参数可以在相机标定的过程中得到。明确这 5 个畸变系数以及相机的内外参数, 就可以完成相机的标定了。
4
4、双⽬相机的标定
相机的标定是根据像素坐标系与世界坐标系的关系,利⽤⼀定的约束条件,来求解相机的内外参数以及畸变系数的过程。相机标定⽅法可分为两种,第⼀种是需要参照物的传统标定⽅法;另⼀种则是不需参照物的相机⾃标定法。
传统的标定⽅法⼀般以棋盘格作为参照物,其中每个棋盘格的⼤⼩,尺⼨以及棋盘格的数量都是已知的。标定过程就是,将棋盘格的顶点与图像上的对应点建⽴对应关系,利⽤棋盘格的已知信息来求得
相机模型的内外参数和畸变系数。这种标定⽅法通常有张正友标定法和 Tasi 两步标定法等。这种⽅法容易受到标定物的制作精度的影响,但精度仍⽐另⼀种⽅法⾼。
相机⾃标定法是不需要参照物的,通常有基于 Kruppa ⽅程的标定法等。其根据多视图约束⼏何⽅程,在不同位置采集多幅同场景的图像,通过相机的约束信息以及对 应点的⼏何信息来完成相机参数的计算。其最⼤优点就是不需要制作标定参考物,⽐较灵活;但由于缺少标定物,鲁棒性和精度都有所⽋缺。
张正友标定法
张正友标定法的基本步骤是:在不同⾓度下,对标定参考物(棋盘格)进⾏拍摄,然后提取出棋盘格的顶点,接着解析出相机的畸变系数和内外参数,最后再根据极⼤似然估计,对参数进⾏ 优化。
其中,M1为相机内参矩阵。
设单应性矩阵 H 满⾜监控门禁
,其中 λ 是尺度因⼦,由 于1和2正交,所以可得以下约束条件:
晾衣叉由以上两式可以看出,ℎ1和ℎ2是可以通过单应性求解出来的,所以要求解的参数就变成 1矩阵中的未
知的 5 个参数,可以通过三个单应性矩阵来求解这 5 个参数,三个单应性矩阵可以通过三张对同⼀标定板不同⾓度和⾼度的照⽚获得。
相机内参为:
相机外参为:
上述推导的结果都是在理想情况下得到的,没有任何噪声和⼲扰,但噪声是⽆法避免的。因此,在实际标定中,还需要使⽤极⼤似然法来对参数进⾏优化。⾄此,单⽬相机就标定完成,但对于双⽬视觉系统,不仅要对每个相机进⾏标定,同时还要明确相机间的相互关系,因此还要对双⽬相机进⾏进⼀步的标定,即求取相机间的旋转矩阵和平移向量。
由第⼀式可知左右相机的对应关系,由式第⼆式和第三式可知,只需要知道每个相机的 外参数,就可以求得双⽬相机的旋转矩阵和平移向量。
5、双⽬⽴体匹配
磨内喷水当三维空间与图像的对应关系确定后,要想对视差进⾏计算,就必须知道三维空间的点在左右图像上的对应关系,这就是⽴体匹配的⽬的。通过⽴体匹配技术,就可以明确左右图像中的点的对应关系,从⽽得到视差,恢复点的三维信息。
1、⽴体匹配的基本约束条件
⽴体匹配技术是双⽬⽴体视觉中的重要技术,研究⼈员提出了许多实⽤的算法,其中也提出许多基本的约束条件。将这些约束条件运⽤到匹配算法中,就可以有效降低匹配的难度,提⾼⽴体匹配的速度和精度。常⽤的约束条件如下:
(1) 极线约束。极线约束是最常⽤的约束条件。极线约束是指在左图像中的⼀点,它在右图像上的 对应匹配点必定在某⼀条直线上,这条直线就是极线。使⽤极线约束就可以让图像的搜索范围由⼆维下降⾄⼀维,只需要在⼀条直线上进⾏搜索,这就可以⼤⼤减少搜索的复杂度,并提⾼了匹配的精度。
(2) 相似性约束。在进⾏⽴体匹配时,点、线、块等元素⼀定具有相同或相似的属性。
(3) 唯⼀性约束。对于待匹配图像,在原图像中⾄多对应⼀个点。⼀幅图像上的每个点只能与另⼀幅 图像上的唯⼀⼀个点⼀⼀对应,这样图像上的点⾄多有⼀个视差值。
(4) 左右⼀致性约束。若左图像上的⼀点 P,其在右图像上的对应点为 Q,则右图像上的点 Q 在左图像上的对应点应该是点 P,如果这两点不是⼀⼀对应的,则匹配会不满⾜唯⼀性条件,说明匹配失败。在进⾏⽴体匹配时,运⽤基本约束条件对匹配结果进⾏检验,可以有效排除很多误匹配的点,减⼩搜索范围,降低⽴体匹配计算的复杂度,提⾼⽴体匹配的速度和精度, 获得最好的匹配效果。
羟乙基纤维素钠
2、半全局⽴体匹配算法
半全局匹配算法是⼀种实⽤的计算视差图的匹配算法,其较好的中和了局部匹配和全局匹配的优缺点,在保持视差图效果相差不⼤的前提下,极⼤地提⾼了算法的效率,实现了更好的精度和效率的权衡,已⼴泛应⽤在现实中。半全局匹配算法可以得到视差图,并且可分为匹配代价计算、代价聚合、视差计算和视差优化四个步骤。
(1) 代价匹配。代价匹配是待匹配点与候选匹配点之间的相似度的衡量。按照匹配度量⽅式可以分为互相关性度量⽅法和差值度量⽅法。互相关性度量越⼤,两个点间的相似度就越⾼, 两个像素点为对应匹配点的概率就越⼤,不然两个像素点就越不可能是对应匹配点;同样,差值度量越⼩,像素点的相似度越⾼,差值度量越⼤,像素点的相似度越⼩。
在搜索匹配点之前,对每个像素都会指定⼀个视差范围 D,将搜索范围局限在 D 内, 并会使⽤⼀个⼤⼩为 W×H×D(W, H 为图像的尺⼨)的矩阵来记录每个像素与视差范围内的像素的匹配代价值。该矩阵存储了所有的匹配代价值,可以有效减少重复的计算, 提⾼计算效率。匹配代价计算的⽅法有很多,如灰度绝对值差,灰度绝对值差之和,归⼀化系数, 互信息和 Census 变换等。不同的匹配代价计算算法都有其独特的优点,对数据的表现也各不相同,其中,最常⽤的⽅法是互信息和 Census 变换。
(2) 代价聚合。在初始代价匹配中,其计算范围只限于局部窗⼝中,只考虑了局部的相关性,对噪声⾮常敏感。为了得到更优的匹配,必须进⾏代价聚合操作。在代价聚合中,半全局匹配算法采⽤了全局能量最优策略。该⽅法设定⼀个全局能量函数,通过对其进⾏不断的优化,使该函数逐渐取到最⼩值,从⽽保证每个像素是最优匹配。该函数的定义如下:
该函数分为三部分,第⼀部分是主要部分,主要是对上⼀步的代价 进⾏求和;第⼆,三部分是为了保证匹配满⾜连续性约束,若像素在⼀定范围内视差变 化过⼤,说明匹配出错概率较⼤,需要进⾏惩罚,避免这种情况出现。其中,第⼆部分 是针对视差变化较⼩的情况,因⽽其惩罚的参数 P1 的值较⼩;第三部分是针对相邻像素 视差变化较⼤的情况,因此,需要加⼤惩罚,P2 的值⼀般会⽐较⼤。
对邻域内不同的视差变化给予不⼀样的惩罚,有助于更好地应对各种不同的边缘情况。但由于视差⼤于 1 的范围很⼤,如果仅仅使⽤⼀个常数项对⼤视差变化进⾏惩罚往 往不够,因此,P2 的值需要动态调整,其调整公式如下:
通常,能量函数的最优化很难求得最优解,为了⾼效解决这个问题,半全局匹配算法提出了路径代价聚合的⽅法,只在固定的路径上计算匹配代价。对于某⼀像素,在其邻域内存在多条到达该像素的路径。该⽅法⾸先就某⼀条路径对匹配代价进⾏计算,然后对所有路径的匹配代价求和得到代价聚合值。
靶向代谢组学分析(3) 视差计算。在半全局匹配算法中,视差计算的操作较为简单,其采⽤赢家通吃的算法,即对每个像素来说,其代表的最优视差为最⼩代价聚合值。在此步骤中,对每个像素都进⾏了 视差计算,因⽽可以得到以原图⼀样⼤⼩的视差图,代表了图像的匹配关系。
(4) 视差优化。在视差计算步骤中,仅仅只是对代价聚合值进⾏选择,如果代价聚合不准确,会直接影响匹配结果,因此需要进⾏视差优化步骤,按照匹配的基本约束条件,对错误匹配 进⾏剔除并提⾼视差精度。视差优化常⽤的操作有剔除错误匹配,提⾼视差精度以及抑制噪声等。
错误匹配是指像素在代价聚合后得到的视差值并不是真实的最⼩的视差值。这种错误匹配的现象在实际中并不少见,图像的噪声、遮挡、弱纹理和重复纹理都会导致这⼀ 现象产⽣。因此,为了提⾼匹配的精度,必须要对错误的匹配进⾏剔除。⽬前最常⽤的错误匹配的剔除⽅法是左右⼀致性法,它是根据匹配的唯⼀性约束条件指定的。匹配的 唯⼀性指出对于左图像的某⼀像素点,在右图像上⾄多只有⼀个像素点与之⼀⼀对应。左右⼀致法就是将左右图像的对应点的视差值进⾏⽐较,若两个视差值⼩于⼀定的阈值, 则认为匹配成功,否则认为该视差不满⾜唯⼀性将被剔除。除了左右⼀致性法外,常⽤的匹配剔除⽅法还有剔除⼩连通区和唯⼀性检测等⽅法。连通区是指连通区内的视差与其邻域的视差之差⼩于⼀定的阈值,剔除⼩连通区是指剔 除视差图中很⼩的连通区,因为这种连通区通常是由于误匹配造成的;唯⼀性检测是指 对每个像素,计算其最⼩代价值和次⼩代价值,如果它们的差⼩于⼀定的阈值,说明匹配不是很准确,应该剔除。每种剔除错误匹配⽅法,都有其⽆法识别的情况,在实
际应 ⽤中,可以将⼏种⽅法结合使⽤。
在视差计算中,得到的视差图都是整像素的,⽆法满⾜精度要求,为了提⾼视差精度,可以采⽤⼦像素优化技术,使⽤⼆次曲线内插的⽅法获得⼦像素。具体做法是⾸先将像素点的所有视差标注出来,然后到最优视差点,接着确定该点周围两个视差点, 按照 3 点确定⼀条⼆次曲线的原理,得到过这 3 点的抛物线,该抛物线的顶点就是最优 ⼦像素。
在计算像素的视差值时,都是基于⼩窗⼝进⾏的,容易产⽣噪声,因此可以使⽤中值滤波和均值滤波等图像滤波⽅式对视差图进⾏滤波,如果要保持较好的边缘精度,也可以考虑使⽤双边滤波。
参考
[1] 视觉SLAM⼗四讲
来⾃:AI算法修炼营
本⽂仅作学术分享,著作权归作者所有,如有侵权,请联系后台作删⽂处理。

本文发布于:2024-09-22 21:15:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/292553.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:匹配   视差   图像   坐标系   代价
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议