基于兩個(gè)滅點(diǎn)的相機(jī)標(biāo)定
標(biāo)簽(空格分隔): 未分類
什么是滅點(diǎn)
在世界坐標(biāo)系中相互平行的兩條線,在圖像中會(huì)相交于一點(diǎn),這點(diǎn)在實(shí)際中表示的是無窮遠(yuǎn)處的點(diǎn)。
相機(jī)模型
相機(jī)模型以小孔成像為基本原理。實(shí)際情況中,相機(jī)由于制作工藝等多方面原因,造成相機(jī)不是完美的小孔成像,比如在常見的相機(jī)模型中,引入dx,dy表示光心的位置、fx,fy都表示焦距,但由于圖像的像素長(zhǎng)寬不一致所以用兩個(gè)方向上的像素單位表示焦距。并且鏡頭會(huì)產(chǎn)生畸變,為了矯正畸變有引入徑向和切向畸變模型。相機(jī)模型方程:
$sPi = K[R T]Pw$
其中,s為尺度因子,Pi表示點(diǎn)在圖像中的坐標(biāo),K為相機(jī)內(nèi)參數(shù),RT組成外參矩陣3行4列,這里需要注意不是簡(jiǎn)單的將T向量放在R矩陣的最后一列,需要將T轉(zhuǎn)為3*4矩陣(前三列是一個(gè)單位陣),然后和R相乘。Pw為點(diǎn)在世界坐標(biāo)系中的點(diǎn)。坐標(biāo)都是齊次坐標(biāo)表示。
兩個(gè)滅點(diǎn)標(biāo)定方法
現(xiàn)在最流行和精度高的方法是張正友棋盤標(biāo)定。在opencv和matlab中都能方便使用。但是在某些場(chǎng)景下,我沒辦法使用棋盤來標(biāo)定,比如高速公路場(chǎng)景。這個(gè)時(shí)候基于滅點(diǎn)的標(biāo)定方法就比較方便,因?yàn)榈缆飞嫌性S多標(biāo)線。
在這種方法標(biāo)定中,K中的f是唯一未知參數(shù),主點(diǎn)假設(shè)在圖像中心。所以我們的標(biāo)定就是要計(jì)算相機(jī)的焦距f,旋轉(zhuǎn)矩陣R,至于T,在不知道額外的標(biāo)定信息的情況下,只通過兩個(gè)滅點(diǎn)是不能計(jì)算T的,在實(shí)際使用中,會(huì)在圖像中指定一段已知實(shí)際尺度的標(biāo)志來計(jì)算T。
焦距

圖像中,藍(lán)色的兩對(duì)平行線決定了兩個(gè)滅點(diǎn)V1和V2,這兩對(duì)平行線是世界坐標(biāo)中一個(gè)平行四邊形的投影?,F(xiàn)在我們要計(jì)算的是f,也就是OcOi這段先斷的長(zhǎng)度(Oc是相機(jī)坐標(biāo)系的原點(diǎn),Oi是圖像的中心)。利用幾何性質(zhì)可以馬上得到答案。

(4)這個(gè)公式利用勾股定理得到。下邊一個(gè)是通過這三條邊所在的三角形相似得到的。
R
圖中帶有星標(biāo)的和Oc原點(diǎn)重合的坐標(biāo)系,代表世界坐標(biāo)移動(dòng)到Oc處。那么這個(gè)新的坐標(biāo)系與Oc的夾角就是要求的旋轉(zhuǎn)。而這三個(gè)方向上的夾角分別可以用向量OcV2、OcV1、OcV1叉乘OcV2來表示,分別是x方向y方向與z方向的旋轉(zhuǎn)分量。此處注意將兩個(gè)滅點(diǎn)的坐標(biāo)轉(zhuǎn)到以O(shè)i為原點(diǎn)的坐標(biāo)系。那么R就可以表示為:

