机器人视觉与感知
立体视觉
立体视觉是一种测量物体远近的方法,它用并排放置的两台摄像头,靠的正是你两只眼睛用的同一个小窍门。竖起一根手指,先闭一只眼看它,再换另一只眼:手指看起来会相对背景往旁边跳一下。近的东西跳得多,远的东西几乎不动。立体视觉就是把这个“跳动”换算成距离。两台摄像头相隔一段固定的距离、朝同一方向架好,在同一瞬间各拍下场景的一张照片,系统再去比较这两张图。
每个点在左图和右图之间看起来移动的幅度,叫做视差,它是这套方法的核心。一个点如果在一张图里落在很靠某一侧、在另一张图里却落到另一侧很远的地方,它的视差就大,这意味着它离摄像头很近;而一个点如果在两张图里几乎落在同一个位置,它的视差就很小,说明它很远。由于两台摄像头之间的间距(叫做基线)和它们的焦距都已通过标定得知,简单的几何就能把每一个视差值直接换算成以米为单位的真实距离。难点在于“匹配”:对于左图里的每一个点,系统都必须在右图里找到那个一模一样的点——这正是特征和描述子大显身手的地方。
对整张图上的许多点都做一遍这样的匹配,你就得到一张深度图——一张每个像素存的不是颜色而是距离的图。有了这张图,机器人单凭普通摄像头、不靠激光也不靠特殊照明,就能判断墙、桌子或人有多远。其代价是:立体视觉需要看得见的纹理才能匹配,一面空白的白墙没有任何东西可供对齐,那里的深度就变得不可靠;而对于非常遥远的物体,它们的视差缩向零,精度也会随之下降。
机器人头上一对相距几厘米的摄像头盯着桌上的一只杯子;杯子在两张图之间明显地移了位,而远处的墙几乎没动,于是机器人就读出:杯子近、墙远。
移得多就近,几乎不动就远。
两台摄像头之间的间距越大(基线越长),测量远处距离就越准,但代价是很近的物体没法同时落进两个画面里。
又称
另见