??????? 在計算機視覺和圖形學中都有“攝像機內參數矩陣”這個概念,其含義大致相同,但在實際使用過程中,這兩個矩陣卻相差甚遠。在增強現實中,為了使計算機繪制的虛擬物體和真實環境圖像對其,需要令虛擬攝像機的內參數和真實攝像機的內參數相一致。因此,理解這兩個內參數矩陣的詳細含義和算法很重要。
??????? 在計算機視覺中,攝像機內參數矩陣可以表示為:
?????? 其中 f 為攝像機的焦距,單位一般是mm,dx,dy 為像元尺寸,u0,v0 為圖像中心。由此可以計算出攝像機縱向視場角有:
?????? h為圖像的縱向像素值,相似的可以推導橫向視場角。
?????? 在計算機視覺中,攝像機內參數矩陣一般也稱作投影矩陣,而其數值在不同的渲染引擎中也不盡相同,本文僅對XNA中的情況加以說明。在XNA中,一般采用Matrix.CreatePerspectiveFieldOfView (floatfieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance)來生成一個投影矩陣。其中,fieldOfView為攝像機的縱向(并非橫向)視場角(并非半視場角),aspectRatio為寬高比,nearPlaneDistance,farPlaneDistance分別為進、遠剪切面。其生成的矩陣可表示為:
其中,
?????? 綜上所述,聯系兩個矩陣的關鍵因素在于縱向視場角和寬高比。