——2020.10.20
開始學習SLAM,想著從SLAM開始然后做三維重建,前面的李群李代數以及旋轉四元數有點復雜,都看過了一遍,但不太理解就先放放,希望接下去能夠順利進行,數學基礎可能不是很好,公式推導書中以及寫得十分詳細,主要是記錄我看SLAM的筆記,以及一些理解,
相機通過把三維世界的坐標點映射到二維影像平面,從單位米到單位像素,這個程序能夠用一個幾何模型進行描述,我們從最簡單的針孔相機模型說起,
設O-x-y-z為相機坐標系,O為攝像機的光心,也就是攝像頭的針孔,現實世界的空間點的P,經過小孔O投影之后成像P‘,因為成的是倒像所以要加一個負號,我們對所成的像進行關于O點鏡像對稱,


大多數的相機輸出的影像都不是倒像——相機自身的軟體會幫你反轉,所以也就是對稱的成像平面,在相機中,我們最侄訓得的是一個一個的像素,我們要對他進行采樣以及量化,我們在物理成像平面固定一個像素平面o-u-v,我們在像素得到P‘的像素坐標,
像素坐標系通常的定義方式:原點o’位于影像的左上角,u軸向右,v軸向下,像素坐標系與成像平面直接差了一個縮放和一個原點的平移,

上面是關于相機內參的推導方式,上式中的K便是相機內參(內引數矩陣),相機的內參在出廠后便已經確定,我們也可以通過標定的方式來確定相機內參,除了內參之外還有對應的外參,我們使用的P是在相機坐標系下的坐標,但是,因為相機是在世界坐標系下運動的,所以,相機的位置需要用相機的旋轉矩陣以及位移組成,

所以上式中對應的R,t便是相機的外參,隨相機的運動而變化,然后我們對其進行歸一化處理之后,得到對應的二維齊次坐標Pc=[x/z,y/z,1]T,便是對應螢屏上的uv坐標,
為了得到更好的成像效果,我們需要在鏡頭前增加一層透鏡,這樣會導致對圖形有影響,也就是會產生畸變,而畸變分為兩種一種是徑向畸變,第二種就是切向畸變,第一種導致的原因是光線在穿過透鏡的時候會導致光線的折射,導致原先在現實生活中的直線在影像中呈曲線,這種現在越靠近邊緣越明顯,又因為透鏡成中心對稱,則在影像中呈徑向對稱,又分為兩種一種是桶形畸變,一種是枕形畸變,桶形是由于影像放大率隨著光軸的距離增加而減小,枕形則反之,

在相機組裝程序中不能使得透鏡和成像平面嚴格平行會引入切向畸變,
我們可以用數學運算式對其進行表述,可以用笛卡爾坐標系以及極坐標的形式來對螢屏上面的點進行描述,[X,Y]T->[Xcorrected,Ycorrected]T這個程序就是糾正過后的坐標,要注意他們現在是歸一化平面上的點,不是像素平面上的點,

上式是對應的徑向畸變的坐標調整公式,對于畸變比較小的影像中心區域,畸變主要是k1起作用,對于畸變比較大的邊緣區域則是k2起作用,對于畸變比較大的鏡頭采用k3.下面則是切向畸變對坐標的調整,主要由系數p1,p2進行修正.

通過我們學習上面的兩個模型,針孔相機模型以及畸變模型,我們可以把整個程序進行梳理,從相機坐標系(X,Y,Z)->像素平面(u,v)
1.將三維空間點投影到歸一化影像平面,
2.對歸一化平面上的進行徑向畸變和切向畸變糾正,

3.將糾正后的點通過內引數矩陣投影到像素平面,得到該點在影像平面的正確位置,

我們可以選擇先對影像進行去畸變,然后討論他在空間中的位置,也可以先考慮影像中的某個點,進行去畸變,然后討論他在空間中的位置,
雙目相機模型
通過左右攝像機得到視差來判斷物體距離我們的位置,計算得到視差之后估計每一個像素的深度,


在左右攝像機,我們可以把他們看成兩個針孔相機,他們是水平放置的,意味著兩個相機的光圈中心位于x軸上,他們之間的距離稱為雙目攝像機的基線,現在空間中一點P,在左眼以及右眼中各呈一像,由于基線的存在,兩個成像位置不同,理想情況下,兩個像只有在x軸上有差異,
視差與距離成反比,視差越大,距離越遠,由于最小視差是一個像素,于是深度具有一個理論最大值,由fb決定,實際上看上去公式十分的簡潔,但是d在u行中不好確定,可能雙目估計需要使用GPU或FPGA來計算,
RGB-D相機
1.紅外結構光,
2.飛行時間法(ToF),
RGB-D都需要向探測目標發射一束光線,在結構光中,根據回傳的結構光圖案,計算物體與自身的距離,飛行時間法,通過計算光線回傳時間,ToF能直接對整個影像發射激光得到深度,而不用逐一像素進行發射,RGB-D需要多個相機進行放置,同時因為條件過于苛刻,為了排除戶外因素必須在室內,對于透明的物體因為接受不到反射光則無法確定其位置,
影像
我們從灰度圖開始說起,每個像素位置對應一個灰度值,用一個位元組來表示我們可以用二維矩陣來表示可以設定第一個下標為行,第二個下標為列,然后在像素平面內原點在左上角,但當我們想記錄比顏色更多的資訊的時候我們的一個位元組就不夠用了,比如說我們需要記錄深度可能需要用十六位整數進行記錄,當我們使用彩色圖片的時候,則需要通道的概念此時RGB便需要24位,3個位元組,當有透明度的時候則又要增加一位,用通道的方式進行訪問,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/228501.html
標籤:其他
上一篇:長翅膀的馬里奧
下一篇:非線性優化-SLAM14CP6
