精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SLAM的那些坑——PNP
userphoto

2018.04.23

關注



計算機視覺

1. 內參數標定   張正友標定法

2. 外參數標定即姿態估計問題。從一組2D點的映射中估計物體的3D姿態。

3. 從三個對應點中恢復姿態,需要的信息是最少的,稱為“三點透視問題”即P3P。同理,擴展到N個點,就稱為“PnP”。

4. 基于視覺的姿態估計根據使用的攝像機數目分為單目視覺和多目視覺。根據算法又可以分為基于模型的姿態估計和基于學習的姿態估計。

5. OpenCV中有solvePnP以及solvePnPRansac用來實現已知平面四點坐標確定攝像頭相對世界坐標系的平移和旋轉。cvPOSIT基于正交投影,用仿射投影模型近似透視投影模型,不斷迭代計算出估計值。此算法在物體深度相對于物體到相機的距離比較大的時候,算法可能不收斂。

6. 從世界坐標系到相機坐標系的轉換,需要矩陣[R|t],其中R是旋轉矩陣,t是位移向量。如果世界坐標系為X,相機坐標系對應坐標為X',那么X' = [R|t]*X。從相機坐標系到理想屏幕坐標系的變換就需要內參數矩陣C。那么理想屏幕坐標系L = C*[R|t]*X。如何獲得[R|t],大致是已知模板上的幾個關鍵點在世界坐標系的坐標即X已知,然后在攝像頭捕獲的幀里獲得模板上對應點在屏幕坐標系的坐標即L已知,通過求解線性方程組得到[R|t]的初值,再利用非線性最小二乘法迭代求得最優變換矩陣[R|t]。

7. 大多數情況下,背景是二維平面,識別的物體也是二維平面。對于ARToolkit,識別的Targets就是平面的(但是這種方法魯棒性不好)。如果內參數矩陣是已知的,那么知道4個或者更多共面不共線的點就可以計算出相機的姿態。

8. 相機姿態估計的問題就是尋找相機的外參數,即是最小化誤差函數的問題。誤差函數有的基于image-space,有的基于object-space。

9. RPP算法基于object-space為誤差函數提供了一種可視化的方法。誤差函數有兩個局部極小值。在無噪聲條件下,第一個局部極小值跟正確的姿態對應。另外的誤差函數的極小值就是標準姿態估計算法為什么會抖動的原因。由于姿態估計算法最小化誤差函數總是要使用迭代算法,因此需要一個初值。如果初值接近第二個局部極小值,那么迭代算法就收斂到錯誤的結果。

10. 估計第一個姿態,RPP算法使用任何已知的姿態估計算法,在這里里,使用迭代算法。從第一個姿態使用P3P算法估計第二個姿態。這個姿態跟誤差函數的第二個局部極小值接近。使用估算的第二個姿態作為初值,使用迭代算法獲得第二個姿態。最終正確的姿態是有最小誤差的那個。

11. 這類問題最終都是解線性方程組AX=b的問題。當b∈R(A)時,x=A的廣義逆*b;當b∈不R(A)時,能否是Ax接近b呢,即是否有x使||Ax-b||最小,習慣上用2-范數即歐式范數來度量。最小二乘解常存在,然后這樣的解未必是唯一的。在方程無解的情況下,要找到最優解。就是要最小化所有誤差的平方和,要找擁有最小平方和的解,即最小二乘。最小化就是把誤差向量的長度最小化。

PNP 相機位姿估計pose estimation就是通過幾個已知坐標(世界坐標)的特征點(深度圖),結合他們在相機照片中的成像(像素坐標),求解出相機所在的世界坐標以及旋轉角度(這兩個貨叫相機的外參), 用旋轉矩陣(R)和平移矩陣(t)表示. PnP, which is short for perspective n point就是其中的一種2D-3D解決上述問題的算法, 也就是說, 這個算法的輸入是一組點的三維世界坐標和二維像素坐標,輸出是相機的旋轉矩陣(R)和平移矩陣(t). OpenCV有相應的庫函數solvePnP()和solvePnPRansac(),后者利用了ransac的思想計算更加精確的結果,不過據說速度很慢,完全沒法做到實時.

問題的方案、解決思路

最小PnP問題

P3P問題中假設沒有噪聲,使用幾何約束,可以解得相機的位姿。不具有唯一解。
P4P問題中分為線性方法和基于P3P的方法。

最小二乘的觀點

  • 迭代最小化一個代價函數(平方誤差)。這些方法相對于之前的方法更加準確,在一定的噪聲的情況下,返回一個最大似然估計。
  • 直接最小二乘方法DLS

常用方法

  • NPL: The N-Point Linear (NPL) method of Ansar and Daniilidis [1].
  • EPnP: The approach of Lepitit et al. [16].
  • SDP: The Semi Definite Program (SDP) approach of Schweighofer and Pinz [23].
  • DLS: The Direct Least-Squares (DLS) solution presented in this paper. An open source implementation of DLS is available at www.umn.edu/ ?joel
  • DLS-LM: Maximum-likelihood estimate, computed using iterative Levenberg-Marquardt (LM) minimization of the sum of the squared reprojection errors, initialized with DLS.


PNP具體細分為幾種, 直接線性變換 P3P EPnP UPnP等等, OpenCV目前提供了3種方法進行PNP計算, CV_P3P, CV_ITERATIVE, CV_EPNP.


____P3P____  P3P的方法,是用非常經典的<Complete solution classification for the perspective-three-point problem> published by Gao in 2003的一篇論文,用空間中3個已知世界坐標和像素坐標的點,通過構造四個三角形的邊角關系聯立方程組,求出4組可能的解,再通過第四個已知點對四組解進行驗證,返回重投影誤差最小的點.



單純看這個圖真的會很費解,其實就是三角形三邊關系公式 a2+b2-2ab*cos∠c=c2,假如我們做特征匹配的兩幀圖是frame1和frame2,那么ABC三個點就是匹配的3對特征點的世界地圖坐標位置,即frame1上的A1.B1.C1匹配frame2上的A2B2C2. P點是frame2的相機所在位置的相機光心. 這個方程組里的已知條件是|AB||BC||AC|的長度,因為ABC三點的世界坐標已知; 和∠α.∠β,∠γ,因為A2B2C2的像素坐標已知,(通過像素坐標和內參矩陣求到光心距離然后構造三角形求角).
右側的make是一堆為了化簡式子所做的assumptions, 最后得到的二元二次方程組里,除了x,y剩下的量都是已知,解這個方程組需要用到二十世紀八十年代的一篇論文介紹的吳消元法, 簡單看了一下,大體上的思路基本都沒看懂,就交給opencv吧...反正我知道這個方程組最多有四組x,y的解, 然后用frame1和frame2上的另外一組匹配點D1D2代入四組解驗證就算重投影誤差最小的一組解,即為輸出的結果.

關于PNP問題就是指通過世界中的N個特征點與圖像成像中的N個像點,計算出其投影關系,從而獲得相機或物體位姿的問題。

 

以下討論中設相機位于點Oc,P1、P2、P3……為特征點。

 

Case1:當N=1時

當只有一個特征點P1,我們假設它就在圖像的正中央,那么顯然向量OcP1就是相機坐標系中的Z軸,此事相機永遠是面對P1,于是相機可能的位置就是在以P1為球心的球面上,再一個就是球的半徑也無法確定,于是有無數個解。

Case2:當N=2時

現在多了一個約束條件,顯然OcP1P2形成一個三角形,由于P1、P2兩點位置確定,三角形的變P1P2確定,再加上向量OcP1,OcP2從Oc點射線特征點的方向角也能確定,于是能夠計算出OcP1的長度=r1,OcP2的長度=r2。于是這種情況下得到兩個球:以P1為球心,半徑為r1的球A;以P2為球心,半徑為r2的球B。顯然,相機位于球A,球B的相交處,依舊是無數個解。

Case3:當N=3時

與上述相似,這次又多了一個以P3為球心的球C,相機這次位于ABC三個球面的相交處,終于不再是無數個解了,這次應該會有4個解,其中一個就是我們需要的真解了。

Case4:當N大于3時

N=3時求出4組解,好像再加一個點就能解決這個問題了,事實上也幾乎如此。說幾乎是因為還有其他一些特殊情況,這些特殊情況就不再討論了。N>3后,能夠求出正解了,但為了一個正解就又要多加一個球D顯然不夠"環保",為了更快更節省計算機資源地解決問題,先用3個點計算出4組解獲得四個旋轉矩陣、平移矩陣。根據公式:

將第四個點的世界坐標代入公式,獲得其在圖像中的四個投影(一個解對應一個投影),取出其中投影誤差最小的那個解,就是我們所需要的正解。


位姿估計的使用范圍非常廣泛。主要解決的問題為:在給出2D-3D若干點對以及相片的內參信息,如何求得相機中心在世界坐標系下的坐標以及相機的方向(旋轉矩陣)。




本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
論文推薦 | 季順平 : 多鏡頭組合式相機的全景SLAM
實戰 | 巧用位姿解算實現單目相機測距
自動化設計基礎講解-機械手,相機(CCD)9點標定
六自由度機械臂逆運動學算法
組合導航系統在四旋翼無人機上的實現
基于四元素法的捷聯慣導姿態更新算法
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 崇文区| 咸宁市| 临夏市| 涟水县| 固原市| 辽宁省| 阿拉尔市| 分宜县| 信宜市| 湄潭县| 本溪| 稷山县| 敦化市| 梓潼县| 韩城市| 青河县| 龙里县| 海原县| 儋州市| 绍兴市| 四子王旗| 宜兴市| 汾西县| 锦州市| 乌海市| 司法| 台中县| 金昌市| 雅安市| 六安市| 仪征市| 元朗区| 广南县| 云安县| 弋阳县| 丰县| 扶风县| 南丹县| 临沭县| 本溪市| 蓬溪县|