前言
双目视觉的测距原理作为一个非常简单的一个知识点,看了许多书籍、博客和视频,里面描述的很详细,但是有一些很晦涩的翻译与描述让很多新手看知识点时很难做到一步了解,特此补充一些自己的理解。
一、背景
不知道是哪位前辈和我讲过,在你解决你规避的问题以前,它一定还会出现在你的面前。学生时代没有好好的学习3D相关的视觉知识,组会汇报时对该部分了解些皮毛就开始侃侃而谈,导致目前项目需要该部分知识时仍然需要花费大力气去恶补回来。所以学习过程中呢记录下自己的学习经历,方便自己后期整理还是很重要的。
二、原理补充
已经有相应的博主讲解了,具体原理以及后期拓展我就不班门弄斧了。https://blog.csdn.net/m0_46384757/article/details/125036675
我这里主要是梳理一下具体各个区域是怎么得到的。
首先解释一下视差,如下图所示,世界坐标系下一个点在左右两个像平面生成两个位置不同的投影(理论情况下,像位于同一平面,投影仅有 X X X方向的偏差)其 X X X方向的偏差分别为 x x xL与 x x xR。
那么视差:
d
=
d =
d=
x
x
xL-
x
x
xR。
如图1所示,根据三角形相似原理
△
\triangle
△
P
P
P
O
O
OL
O
O
OR~
△
\triangle
△
P
P
P
P
P
PL
P
P
PR
那么自然
(看了一下好多人都在这点有疑惑的,恐怕就疑惑在这一步)结合图2,我们最终是要转换成视差与深度之间的关系的所以:
代入后可得
由此可得
f
、
b
f、b
f、b已知,那么我们只要求出视差
d
d
d即可获得深度
Z
Z
Z。(这也反映了视差近大远小的特点)
个人能力有限,如果有问题,请批评指出,如果有问题可以一起讨论。
参考
https://blog.csdn.net/m0_46384757/article/details/125036675
https://zhuanlan.zhihu.com/p/81016834