机器人视觉与感知

针孔相机模型

针孔相机模型是关于相机如何把三维世界变成一张平面图像的简单、理想化的图景。想象一个黑暗的盒子,前面只扎了一个极小的孔。世界中某一点发出的光沿直线前进,穿过那唯一的小孔,落在盒子的后壁上,在那里画出一幅上下颠倒的图像。由于每一条光线都必须穿过同一个小孔,这个模型就把相机当作空间中的一个点——而仅凭这一条假设,就足以精确预测现实世界中任何一点会出现在照片的哪个位置。

随之而来的几何关系,其实只是相似三角形。距离远一倍的点看起来就小一半;更根本的规律是,一个物体的成像大小与它的距离成反比——距离翻一倍,成像就减半——再乘以相机的焦距(后壁离小孔有多远)来放大比例。这正是投影的核心:把表示位置的三个数字压缩成平面传感器上的两个数字。这个模型让机器人能够反过来推理——给定一个像素,它就知道这个像素可能来自哪一条方向的射线,尽管单凭一张图像它还无法判断距离。

真实的镜头并不是针孔,所以这个模型是一种近似。它忽略了模糊、玻璃对光线的弯折,以及把直线压弯成曲线的镜头畸变。但它如此简洁又有用,以至于几乎所有的机器人视觉都从这里出发,然后在它之上加一些小的修正,而不是把这个模型整个扔掉。

一台机器人在 4 米外给一扇 2 米高的门拍照,相机的焦距相当于 800 个像素。按针孔规律,这扇门在图像里大约成像为 400 像素高——距离翻一倍,成像就缩小一半。

同一个实物,距离增加一倍,成像大小减半——这正是针孔模型的核心预测。

在真正的针孔后面,图像确实是上下颠倒成像的;在数学和软件里,人们通常把成像面翻到小孔前方的一个虚拟像平面上,让结果变成正立的。

又称
pinhole projection针孔成像模型針孔成像模型