作者:木一
引言
上文我們提到,三維相機(jī)是對真實世界成像的模擬,為了讓三維物體在計算機(jī)屏幕上呈現(xiàn)出來的圖像符合人眼觀察效果,通常采用透視投影方式模擬相機(jī)成像,為了簡化計算,可以用針孔相機(jī)模型來描述透視投影成像過程。
針孔相機(jī)模型
針孔相機(jī)模型是一種簡化的光學(xué)成像模型,基本原理是中心透視投影,將三維空間中的物體通過針孔投影到二維成像平面上。這種模型忽略了鏡頭畸變、光線衍射等復(fù)雜因素,使得計算和分析變得相對簡單,因此也廣泛應(yīng)用于計算機(jī)視覺和圖形學(xué)領(lǐng)域。
針孔相機(jī)模型 圖源@作者
為了能夠用數(shù)學(xué)語言來描述針孔相機(jī)模型,需要建立四個坐標(biāo)系:世界坐標(biāo)系、相機(jī)坐標(biāo)系、圖像坐標(biāo)系、像素坐標(biāo)系,三維物體在二維圖像上的成像過程通過坐標(biāo)系變換來表達(dá)。
四個坐標(biāo)系 圖源@作者
1、世界坐標(biāo)系
世界坐標(biāo)系是描述客觀世界的絕對坐標(biāo)系,由于相機(jī)可以位于客觀世界中的任意位置,需要建立一個基準(zhǔn)坐標(biāo)系來描述相機(jī)的位置,并且用它來描述環(huán)境中任意空間點(diǎn)的位置,用(Xw, Yw, Zw)表示世界坐標(biāo)值。
2、相機(jī)坐標(biāo)系
相機(jī)坐標(biāo)系是以相機(jī)光心為參考點(diǎn)建立起的三維坐標(biāo)系,用于描述任意空間點(diǎn)在相機(jī)空間中的位置,建立方式為:以相機(jī)光心為坐標(biāo)原點(diǎn),相機(jī)主光軸為Z軸,平行于圖像平面水平方向作為X軸,平行于圖像平面垂直方向作為Y軸,用(Xc, Yc, Zc)表示相機(jī)坐標(biāo)值。
3、圖像坐標(biāo)系
圖像坐標(biāo)系是定義在成像平面上的二維平面坐標(biāo)系,以實際物理單位(mm)表示,建立方式為:以相機(jī)主光軸與圖像平面的交點(diǎn)為原點(diǎn),交點(diǎn)稱為像主點(diǎn),X軸平行于圖像水平方向向右,Y軸平行于圖像垂直方向向下,用(x, y)表示圖像坐標(biāo)值。
4、像素坐標(biāo)系
在計算機(jī)中數(shù)字圖像是經(jīng)離散化處理后以像素矩陣方式進(jìn)行存儲的,因此建立像素坐標(biāo)系以描述相機(jī)圖像,像素坐標(biāo)可以理解為像素在圖像平面中的位置索引。建立方式為:以圖像平面左上角為原點(diǎn),u軸平行于圖像坐標(biāo)系的X軸,水平向右,v軸平行于圖像坐標(biāo)系的Y軸,垂直向下,用(u,v)表示像素坐標(biāo)值。
坐標(biāo)變換
相機(jī)成像可以理解為是將三維空間中的物體投影到二維圖像平面上的過程,投影過程最終在三維空間點(diǎn)和圖像平面點(diǎn)之間建立映射關(guān)系,因此可以通過三維空間點(diǎn)與二維圖像平面點(diǎn)之間的坐標(biāo)轉(zhuǎn)換來表達(dá)投影過程。
坐標(biāo)轉(zhuǎn)換流程包括:
坐標(biāo)變換 圖源@作者
1、世界坐標(biāo)系 => 相機(jī)坐標(biāo)系
世界坐標(biāo)系轉(zhuǎn)換到相機(jī)坐標(biāo)系的過程是剛體變換,通常采用平移矩陣R和旋轉(zhuǎn)矩陣T來表示變換過程。齊次坐標(biāo)以及矩陣變換可以參考博文:用矩陣表述變換與齊次坐標(biāo) - 簡書
旋轉(zhuǎn)平移變換 圖源@作者
2、相機(jī)坐標(biāo)系 => 圖像坐標(biāo)系
相機(jī)坐標(biāo)系到圖像坐標(biāo)系是真正的投影過程,基本原理是中心透視投影,根據(jù)三角形相似原理,可推知空間點(diǎn)與它的像點(diǎn)關(guān)系如下:
投影變換 圖源@作者
3、圖像坐標(biāo)系 => 像素坐標(biāo)系
數(shù)字圖像是經(jīng)離散化處理后以像素矩陣方式進(jìn)行存儲的,圖像坐標(biāo)在圖像平面以物理單位表示,像素坐標(biāo)在圖像平面以像素坐標(biāo)表示,圖像坐標(biāo)與像素坐標(biāo)的轉(zhuǎn)換關(guān)系為:
像素離散化 圖源@作者
其中dx、dy表示單個像素實際物理尺寸的寬和高。
圖像坐標(biāo)系到像素坐標(biāo)系的轉(zhuǎn)換用矩陣表示為:
綜合以上變換,可以得到完整的坐標(biāo)變換過程如下:
其中,透視投影過程和像素離散過程組合后的變換矩陣稱為相機(jī)內(nèi)參矩陣,平移、旋轉(zhuǎn)過程的變換矩陣稱為相機(jī)外參矩陣。
相機(jī)畸變
實際的相機(jī)成像過程受鏡頭影響,往往無法遵循嚴(yán)格的線性變換,這會導(dǎo)致最終的圖像產(chǎn)生畸變(失真),鏡頭引起的畸變主要分為徑向畸變和切向畸變。
相機(jī)畸變 圖源@作者
徑向畸變:越遠(yuǎn)離光軸的光線越向內(nèi)彎曲,導(dǎo)致正方形成像后變成桶形,這也稱桶形畸變。反之如果越遠(yuǎn)離光軸的光線越向外彎曲則為枕形畸變。
徑向畸變 圖源@作者
切向畸變:切向畸變是透鏡與成像平面不完全平行的制造缺陷造成的。
在實際應(yīng)用中,通常采用多項式擬合模型來表示相機(jī)畸變,通用公式表示為:
其中圖像坐標(biāo)通過歸一化平面坐標(biāo)表示,(x,y)表示實際圖像坐標(biāo),(Xdistorted, Ydistorted)表示畸變后的圖像坐標(biāo)。歸一化平面坐標(biāo)參考:https://blog.csdn.net/ouyangandy/article/details/96840781
常用的多項式擬合畸變模型為:
其中:
基于畸變模型,可以對圖像進(jìn)行畸變校正,即計算畸變圖像點(diǎn)的正確位置,對圖像進(jìn)行像素重映射和插值處理,以糾正圖像畸變導(dǎo)致的變形現(xiàn)象。
畸變糾正(左:畸變圖像,右:畸變糾正圖像) 圖源@作者
文章參考:
什么是歸一化的平面坐標(biāo)_歸一化平面-CSDN博客
相機(jī)徑向和切向畸變及去畸變 - 知乎
用矩陣表述變換與齊次坐標(biāo) - 簡書
https://www.cnblogs.com/weststar/p/11836266.html
OpenCV: Camera Calibration and 3D Reconstruction
?關(guān)注Mapmost,持續(xù)更新GIS、三維美術(shù)、計算機(jī)技術(shù)干貨
Mapmost是一套以三維地圖和時空計算為特色的數(shù)字孿生底座平臺,包含了空間數(shù)據(jù)管理工具(Studio)、應(yīng)用開發(fā)工具(SDK)、應(yīng)用創(chuàng)作工具(Alpha)。平臺能力已覆蓋城市時空數(shù)據(jù)的集成、多源數(shù)據(jù)資源的發(fā)布管理,以及數(shù)字孿生應(yīng)用開發(fā)工具鏈,滿足企業(yè)開發(fā)者用戶快速搭建數(shù)字孿生場景的切實需求,助力實現(xiàn)行業(yè)領(lǐng)先。文章來源:http://www.zghlxwxcb.cn/news/detail-860921.html
歡迎進(jìn)入官網(wǎng)體驗使用:Mapmost——讓人與機(jī)器聯(lián)合創(chuàng)作成為新常態(tài)文章來源地址http://www.zghlxwxcb.cn/news/detail-860921.html
到了這里,關(guān)于相機(jī)系列——透視投影:針孔相機(jī)模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!