立体视觉
通过两个或多个相机同时拍摄的图像,推导出深度信息
基本投影模型
为什么立体视觉?
本质的歧义:
射线OP上的任何点都会产生像素点p
为什么立体视觉?
第二个相机能够解决这个歧义,能够通过三角化进行深度的度量
为什么立体视觉?
你的一对眼睛组成了一个立体视觉系统
右眼和左眼从稍微改变的角度看世界。
今天的主要概念
视差
立体照片
随机点立体图
简单立体视觉的数学
自己做视差演示
显示:
不同深度的点位移不同
附近点的位移大于远处点
搭便车者的视差指南
视差 (Parallax) = 位于不同距离的场景特征的视运动(apparent motion)
立体视觉的基本概念
通过测量视差推断出到场景点的距离
立体照片
立体照片是在一张图片中编码视差的一种方法。同一目标物体的两个稍微不同的视角以对比色相互叠加,通过两个相应颜色的滤镜观看时产生三维效果
立体照片是如何工作的
闭上右眼,然后闭上左眼。你观察到什么?
红色滤光片选择性地通过红色,类似地,对于青色滤光片和青色滤光片。
制作一张立体照片
拍一个灰度立体照片对
将左图像复制到新图像的红色通道(立体图像)
将右图像复制到立体图像的绿色和蓝色通道(注意:绿色+蓝色=青色)
现在当你用红色-青色眼镜观看,左眼只能看到左图像,右眼只能看到右图像。大脑将两者融合形成3D图像。
立体物理学
立体深度感知是如何工作的?
特别地,这发生在在视觉系统的什么层面?
早期的争论:我们是从更高层次的信息(如透视图和轮廓)推断深度,还是从更低层次推断深度?
更高层面深度推断
透视(灭点)
相似大小的对象在有一定距离时看起来更小(这也与透视有关)
遮挡轮廓(透视的完成)
立体物理学
显然透视和轮廓是很重要的(特别是单目深度估计),但这些对双目立体视觉深度估计是必须的吗?
Bela Julesz 在1960年用他的随机点立体图实验回答了这个问题。
1960年,Bela对最终被称为Julesz随机点立体图的实验毫不含糊地证明,在没有任何可识别物体的情况下,在没有任何透视的情况下,在没有任何一只眼睛可获得的任何提示的情况下,立体深度也可以计算出来。
Julesz随机点实验
用计算机产生一个随机点模式
根据定义,这只是“噪声”,因此这明显没有任何单目深度提示。
Julesz随机点实验
剪出一个正方形区域并向左移动
用更多随机点填充留下的“洞”。
现在将其作为立体对观察
Julesz使用了一个特殊的查看器,但是我们将其观察为一个立体照片(用你的立体眼镜!)
自己做
尝试:当你把正方形移到左边而不是右边时会发生什么?
立体图
在单张图像中编码视差的另一种方法。重复纹理的细微变化编码场景中深度的视差(一种以“魔眼”品牌闻名的技术)
不像立体照片,你不需要特殊的眼镜去观看,只需要在之后的页面中练习聚焦你的眼睛。
一个简单的立体视觉系统
右边相机只需沿X轴移动Tx单位。否则,两个相机是相同的(方向/焦距相同)
一个简单的立体视觉系统
自顶向下视图(XZ平面)
沿X轴移动距离Tx
(Tx也被称为立体视觉的“基线baseline”)
一个简单的立体视觉系统
点(X, Y, Z)在左边相机的图像坐标 (Image coords):
同样的点在右边相机的图像坐标是什么呢?
洞察:将相机向右平移Tx相当于让相机静止,将世界点向左平移Tx
立体视差
左边相机
右边相机
立体视差
Z:深度depth,Tx基线baseline,d视差disparity
深度计算
Z
=
f
T
x
d
Z = \frac{fT_x}{d}
Z=dfTx
注:深度和立体视差成反比
立体视差Disparity / Parallax
配合简介:为了我们的目的
Disparity = Parallax
视差与深度成反比
这就是为什么当相机横向平移时,近的物体看起来比远的物体移动得多