现实中每个物体对所有方向都在发光,放一个胶片或传感器上每一个点上的光照强度都来自于目标物体所有点的光强。要成像就要使得传感器上受到的光照来自物体的一个特定的点。 可以在光圈留一个很小的洞,唯一找到小孔反向求焦到真实世界的一个点。这就是小孔成像,也是最经典的pinhole camera的模型。 之所以能成像,要使得这一个点被照的内容,来自于尽量少的目标物体的点,小孔越小,光锥越小,点只贡献到接收面上的很小一个点。小于一个像素就可以成很清晰的像。 但当孔很小的时候,跑到传感器上的光很少,图像会很暗。理论上可以无限增长曝光时间,不断积分,但并不实际。 如果可以改变光的方向,聚到一个地方去,图像就可以清晰且不会太暗。于是人们发明了镜头,使点偏离光轴方向发生偏转,形成聚焦。物距和焦距定了,像就定了。 但传感器是平的,只能捕获一个方向的像素。实际物体时三维的,有一些点的最佳成像位置不同。有一些点会正好落在传感器上。这就是景深。 只要在景深的范围内成像就是比较清晰。其他点一定存在blur,只要小于一个像素,就仍旧是清晰的。有时候因为距离的不同,真正的焦点会相差了一点点比如0.1毫米,这在图像上会造成多大范围的模糊,还由光圈决定。 光圈小,blur的半径会小一点,前后都清晰,但进光量会小。光圈大,镜头得大。意味着相机会大。而传感器大,单元面积大,接收更多的光子。如果焦距越短,张角越大,就像监控的广角相机,一般大家不想要这种效果。 视角变大就会引入径向的畸变。径向畸变一个是因为镜头的不完美,另一个是视场角,太大会形成突出的球面的效应。球面映射到平面总会有扭曲。 畸变可以建模,扭回来。但是范围就会奇怪,意味着就会裁掉一些东西,浪费一些像素。 为了更方便地去描述3D场景是怎么样被投射到二维的,机器视觉里引入了一个叫齐次坐标的东西。 因为使用除法后就不是线性系统,所以我们给它升维,这样做的好处是升过维的向量可以和后面所有这些transformation可以formulate到一起去,变成一个线性的东西,最后成像的时候计算图像空间点的位置,在最后除一下就行。 图像距离越远就会越接近光轴,那么这个除法先不做,最后成像后再做,前面计算过程中就可以回避非线性的问题。 这些在数学中的公式就是perceptive matrix,四维投射成三维的矩阵乘法。真实世界中空间中有一个三维的点,有一个world坐标到image坐标的转换过程。 比如世界坐标系先建好,所有的点都定义进去,这时候相机可以放在特定位置,会有一个矩阵来描述,把世界坐标系转化为相机坐标系,再乘perspective matrix,再相机坐标系转换到图像坐标系。 这就是三维成像的基础。 这是处理大规模三维重建的方法。空间中的点拿到的图像乘了一个空间变换矩阵。现在相机和点的位置不知道,同样一个物体被几个相机拍了,联立可以求得物体上的点和相机的位置。这个就是它的目标函数。 假设旋转矩阵为已经知道了,translation和perspective都知道了,对应空间中的所有的feature点,点在图像上的正确位置是知道的。 (责任编辑:本港台直播) |