视觉SLAM十四讲第五讲
生活随笔
收集整理的這篇文章主要介紹了
视觉SLAM十四讲第五讲
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
第五章 相機(jī)與圖像
主要目標(biāo)
在計算機(jī)中,一張照片由很多個像素組成,每個像素記錄了色彩或亮度的信息。三維世界中的一個物體反射或發(fā)出的光線,穿過相機(jī)光心后,投影在相機(jī)的成像平面上。相機(jī)的感光器件接收到光線后,產(chǎn)生測量值,就得到了像素,形成了我們見到的照片。
一、相機(jī)模型
1)針孔相機(jī)模型
設(shè) O-x-y-z 為相機(jī)坐標(biāo)系,習(xí)慣上我們讓z 軸指向相機(jī)前方,x 向右,y 向下(此圖我們應(yīng)該站在左側(cè)看右側(cè))。O 為攝像機(jī)的光心,也是針孔模型中的針孔。現(xiàn)實(shí)世界的空間點(diǎn) P,經(jīng)過小孔 O 投影之后,落在物理成像平面 O′ - x′ -y′ 上,成像點(diǎn)為 P′。設(shè) P 的坐標(biāo)為 [X, Y, Z]T,P′ 為 [X′, Y ′, Z′]T,并且設(shè)物理成像平面到小孔的距離為f(焦距)。那么,根據(jù)三角形相似關(guān)系,有:
其中負(fù)號表示成的像是倒立的。不過,實(shí)際相機(jī)得到的圖像并不是倒像(否則相機(jī)的使用會非常不方便)。為了讓模型更符合實(shí)際,我們可以等價地把成像平面對稱地放到相機(jī)前方,和三維空間點(diǎn)一起放在攝像機(jī)坐標(biāo)系的同一側(cè),這樣做可以把公式中的負(fù)號去掉,使式子更加簡潔:
把 X′, Y ′ 放到等式左側(cè),整理得:
為了描述傳感器將感受到的光線轉(zhuǎn)換成圖像像素的過程,我們設(shè)在物理成像平面上固定著一個像素平面 o-u-v。我們在像素平面得到了 P′ 的像素坐標(biāo):[u, v]T。
像素坐標(biāo)系通常的定義方式是:原點(diǎn) o′ 位于圖像的左上角,u 軸向右與 x 軸平行,v 軸向下與 y 軸平行。像素坐標(biāo)系與成像平面之間,相差了一個縮放和一個原點(diǎn)的平移。我們設(shè)像素坐標(biāo)在u 軸上縮放了 α 倍,在 v 上縮放了 β 倍。同時,原點(diǎn)平移了 [cx, cy]T。那么,P′ 的坐標(biāo)與像素坐標(biāo)[u, v]T 的關(guān)系為:
把 αf 合并成 fx,把 βf 合并成 fy,得:
其中,f 的單位為米,α, β 的單位為像素/米,所以 fx, fy 和 cx, cy 的單位為像素。
我們把中間的量組成的矩陣稱為相機(jī)的內(nèi)參數(shù)矩陣(Camera Intrinsics)K。通常認(rèn)為,相機(jī)的內(nèi)參在出廠之后是固定的,不會在使用過程中發(fā)生變化。
由于相機(jī)在運(yùn)動,所以 P 的相機(jī)坐標(biāo)應(yīng)該是它的世界坐標(biāo)(記為 Pw)根據(jù)相機(jī)的當(dāng)前位姿變換到相機(jī)坐標(biāo)系下的結(jié)果。相機(jī)的位姿由它的旋轉(zhuǎn)矩陣 R 和平移向量 t 來描述。那么有:
它描述了 P 的世界坐標(biāo)到像素坐標(biāo)的投影關(guān)系。其中,相機(jī)的位姿 R, t 又稱為相機(jī)的外參數(shù)(Camera Extrinsics)。相比于不變的內(nèi)參,外參會隨著相機(jī)運(yùn)動發(fā)生改變,同時也是 SLAM 中待估計的目標(biāo),代表著機(jī)器人的軌跡。
我們可以把一個世界坐標(biāo)點(diǎn)先轉(zhuǎn)換到相機(jī)坐標(biāo)系,再除掉它最后一維的數(shù)值(即該點(diǎn)距離相機(jī)成像平面的深度),這相當(dāng)于把最后一維進(jìn)行歸一化處理,得到點(diǎn) P 在相機(jī)歸一化平面上的投影:
歸一化坐標(biāo)可看成相機(jī)前方z = 1 處的平面上的一個點(diǎn),這個 z = 1 平面也稱為歸一化平面。歸一化坐標(biāo)再左乘內(nèi)參就得到了像素坐標(biāo),所以我們可以把像素坐標(biāo) [u, v]T 看成對歸一化平面上的點(diǎn)進(jìn)行量化測量的結(jié)果。
2)畸變
由透鏡形狀引起的畸變(Distortion,也叫失真)稱為徑向畸變。它們主要分為兩大類:桶形畸變和枕形畸變。
除了透鏡的形狀會引入徑向畸變外,在相機(jī)的組裝過程中由于不能使透鏡和成像面嚴(yán)格平行也會引入切向畸變。
3)單目相機(jī)成像過程
1.首先,世界坐標(biāo)系下有一個固定的點(diǎn) P,世界坐標(biāo)為 Pw。
2.由于相機(jī)在運(yùn)動,它的運(yùn)動由 R, t 或變換矩陣 T ∈ SE(3) 描述。P 的相機(jī)坐標(biāo)為 P?c =RPw + t。
3.這時的 P?c 的分量為 X, Y, Z,把它們投影到歸一化平面 Z = 1 上,得到 P 的歸一化坐標(biāo):Pc = [X/Z, Y /Z, 1]T。
4.有畸變時,根據(jù)畸變參數(shù)計算 Pc 發(fā)生畸變后的坐標(biāo)。
5.最后,P 的歸一化坐標(biāo)經(jīng)過內(nèi)參后,對應(yīng)到它的像素坐標(biāo):Puv = KPc。
4)雙目相機(jī)模型
通過同步采集左右相機(jī)的圖像,計算圖像間視差,來估計每一個像素的深度。
雙目相機(jī)一般由左眼相機(jī)和右眼相機(jī)兩個水平放置的相機(jī)組成。它們是水平放置的,意味著兩個相機(jī)的光圈中心都位于 x 軸上。兩者之間的距離稱為雙目相機(jī)的基線(Baseline,記作 b),是雙目相機(jī)的重要參數(shù)。
現(xiàn)在,考慮一個空間點(diǎn) P,它在左眼相機(jī)和右眼相機(jī)各成一像,記作 PL, PR。由于相機(jī)基線的存在,這兩個成像位置是不同的。理想情況下,由于左右相機(jī)只在 x 軸上有位移,因此 P 的像也只
在 x 軸(對應(yīng)圖像的 u 軸)上有差異。記它的左側(cè)坐標(biāo)為 uL,右側(cè)坐標(biāo)為 uR,根據(jù) △P PLPR 和 △P OLOR 的相似關(guān)系,有:
稍加整理,得:
其中 d 定義為左右圖的橫坐標(biāo)之差,稱為視差(Disparity)。根據(jù)視差,我們可以估計一個像素與相機(jī)之間的距離。視差與距離成反比:視差越大,距離越近。
5)RGB-D 相機(jī)模型
目前的 RGB-D 相機(jī)按原理可分為兩大類:
1.通過紅外結(jié)構(gòu)光(Structured Light)來測量像素距離的。例子有 Kinect 1 代、Project Tango 1代、Intel RealSense 等。
2 通過飛行時間法(Time-of-flight,ToF)原理測量像素距離的。例子有 Kinect 2 代和一些現(xiàn)有的 ToF 傳感器等。
RGB-D 相機(jī)能夠?qū)崟r地測量每個像素點(diǎn)的距離。但是,由于這種發(fā)射 ? 接收的測量方式,其使用范圍比較受限。用紅外光進(jìn)行深度值測量的 RGB-D 相機(jī),容易受到日光或其他傳感器發(fā)射的紅外光干擾,因此不能在室外使用。在沒有調(diào)制的情況下,同時使用多個 RGB-D 相機(jī)時也會相互干擾。對于透射材質(zhì)的物體,因?yàn)榻邮詹坏椒瓷涔?#xff0c;所以無法測量這些點(diǎn)的位置。此外,RGB-D 相機(jī)在成本、功耗方面,都有一些劣勢。
二、圖像
在一張灰度圖中,每個像素位置 (x, y) 對應(yīng)一個灰度值 I,所以,一張寬度為 w、高度為 h 的圖像,數(shù)學(xué)上可以記為一個函數(shù):
其中 (x, y) 是像素的坐標(biāo)。然而,計算機(jī)并不能表達(dá)實(shí)數(shù)空間,所以我們需要對下標(biāo)和圖像讀數(shù)在某個范圍內(nèi)進(jìn)行量化。
三、實(shí)踐:計算機(jī)中的圖像
1)OpenCV 的基礎(chǔ)使用方法
從 http://opencv.org/downloads.html 下載,選擇 OpenCV for Linux 版本即可。獲得壓縮包。將它解壓到任意目錄下,可以發(fā)現(xiàn) OpenCV 亦是一個 cmake 工程。
安裝依賴項(xiàng)
sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev
隨后的編譯安裝和普通的 cmake 工程一樣,請?jiān)?make 之后,調(diào)用 sudo make install 將 OpenCV安裝到你的機(jī)器上(而不是僅僅編譯它)。
參考:https://www.cnblogs.com/Shuqing-cxw/p/9195303.html
總結(jié)
以上是生活随笔為你收集整理的视觉SLAM十四讲第五讲的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派串口通信
- 下一篇: 安装secureCRT提示sorry的解