在计算机视觉和图形学中都有“摄像机内参数矩阵”这个概念,其含义大致相同,但在实际使用过程中,这两个矩阵却相差甚远。在增强现实中,为了使计算机绘制的虚拟物体和真实环境图像对其,需要令虚拟摄像机的内参数和真实摄像机的内参数相一致。因此,理解这两个内参数矩阵的详细含义和算法很重要。
在计算机视觉中,摄像机内参数矩阵可以表示为:
其中 f 为摄像机的焦距,单位一般是mm,dx,dy 为像元尺寸,u0,v0 为图像中心。由此可以计算出摄像机纵向视场角有:
h为图像的纵向像素值,相似的可以推导横向视场角。
在计算机视觉中,摄像机内参数矩阵一般也称作投影矩阵,而其数值在不同的渲染引擎中也不尽相同,本文仅对XNA中的情况加以说明。在XNA中,一般采用Matrix.CreatePerspectiveFieldOfView(floatfieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance)来生成一个投影矩阵。其中,fieldOfView为摄像机的纵向(并非横向)视场角(并非半视场角),aspectRatio为宽高比,nearPlaneDistance,farPlaneDistance分别为进、远剪切面。其生成的矩阵可表示为:
其中,
。
综上所述,联系两个矩阵的关键因素在于纵向视场角和宽高比。