fly qq,如本科技 CTO,个人微信公众号 qRobotics 阅读原文 人的立体视觉是由多种效应共同作用行成的。现在机器视觉中的各种立体视觉算法主要也就是参考人类的方法实现的。 1)透视变换 简单地说就是近大远小效应,人类对真实世界物体的尺寸有一定先验知识。如果视野中原本应该相同尺寸的物体表现出不同的大小,那么小的物体在远处,大的在近处。如下图所示,单就一张普通的图片,我们就能判断哪些物体是离我们较远的。 但这个方法 Bug 太多,很多视错觉就是因为这个效应产生的,如下图就是通过不同尺寸的网格来误导人的视觉系统。 在机器视觉领域,这个三维定位方法被广泛应用。最常见的就是二维码定位算法。 如果已知二维码尺寸,仅适用一个普通摄像头就可以算出二维码与摄像头的相对位置(3D)。 2)双目视觉 这个是比透视变换更可靠的方法之一,如下图所示,同个物体在视网膜上的投影位置会随着物体离观察者的远近而发生变化。大脑通过处理这一微小区别能得到比较准确的距离信息。 当然,在机器视觉中,这也是非常常用的方法。首先,通过 SIFT 等特征点方法可以提取到两幅图片的相同点。 之后,通过简单的三角关系便可以求取得到深度图片。 3)运动视觉(structure from motion) 但是,人两眼之间的距离有限,当物体距离较远时,双目系统对距离的敏感度就大大降低了。而且,双目视觉的算法很复杂,有相当一部分人的大脑并未掌握通过双目视觉生成立体图像的功能。因此,人类还有另外一个更厉害的技能,就是通过运动来构建立体视觉。原理与双目视觉类似,但是由于移动的距离远大于两眼的瞳距,所以立体效果更好。 如所谓的裸眼 3D,就是让你分别看到不同角度的图片,大脑自动会脑补成立体图片。 机器视觉中这样的技术一般称为 Structure From Motion. 阅读原文