基于Python進行相機校準
點擊上方“AI算法與圖像處理”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達

總覽
為了校準相機,我們對3D對象(例如圖案立方體)成像,并使用3D對象與其2d圖像之間的3D-2D點對應關(guān)系來查找相機參數(shù)。
我們需要找到兩組參數(shù):內(nèi)在參數(shù)和外在參數(shù)。固有參數(shù)是攝像機內(nèi)部的那些參數(shù),例如焦距,主要點等,而固有參數(shù)是規(guī)定攝像機相對于攝像機的位置t(平移矢量)和方向R(旋轉(zhuǎn)矩陣)的參數(shù)。外部坐標系(通常稱為世界坐標系)。在第一部分中,我們將僅計算內(nèi)部參數(shù)(假設(shè)外部參數(shù)是已知的),而在第二部分中,我們將共同計算內(nèi)部參數(shù)和外部參數(shù)。
內(nèi)部參數(shù)計算
我們使用的校準對象是魔方。
我們對立方體進行成像,如下圖所示。然后,我們獲得許多3D-2D點對應關(guān)系。在這一部分中,我們已經(jīng)計算了點對應關(guān)系,您要做的就是從它們中計算出固有參數(shù)。3D-2D對應關(guān)系在數(shù)據(jù)文件“ pt_corres.mat”中給出。該文件包含“ pts_2D”,2D點和“ cam_pts_3D”以及所有對應的3D點。現(xiàn)在,我們必須找到K矩陣

K矩陣
使3D與2D點相關(guān)的矩陣K是具有以下形狀的上三角矩陣。

其中αx,αy表示以x和y像素尺寸表示的焦距,px和py是主要點,s是偏斜參數(shù)。
2D點(x,y)與相應3D點(X,Y,Z)之間的關(guān)系由下式給出
1. x =αx(X / Z)+ s(Y / Z)+ px
2. y =αy(Y / Z)+ py
內(nèi)部和外部參數(shù)計算
在上一部分中,我們假設(shè)已知外部參數(shù),然后計算了內(nèi)部參數(shù),即假設(shè)我們知道了相機坐標系中的3D點對應關(guān)系。但是這種情況很少發(fā)生。幾乎總是我們僅在世界坐標系中知道3D點的對應關(guān)系,因此我們需要估算內(nèi)在和外在參數(shù)。但是在此之前,我們需要獲取3D-2D點對應關(guān)系。如圖1所示,相對于世界坐標系描述了3D點。該圖顯示了世界坐標系的x,y和z軸以及一些示例3D點,它們是正方形的角。有28點。
1. 世界坐標系中的3D點在rubik_3D_pts.mat中提供,圖像上相應的2D點在rubik_2D_pts.mat中提供
2. 接下來,我們要計算相機投影矩陣P = K [R t],其中K是內(nèi)部/本征校準矩陣,R是旋轉(zhuǎn)矩陣,用于指定相機坐標系與世界坐標系的方向,而t是轉(zhuǎn)換向量,可以確定攝影機中心在世界坐標系中的位置。
3. 為了計算P,我們使用“直接線性變換(DLT)”。DLT是要理解的重要算法,下面將對其進行詳細說明。
離散線性變換(DLT)
離散線性變換(DLT)是一種簡單的線性算法,用于從相應的3空間和圖像實體估計攝像機投影矩陣P。相機矩陣的這種計算稱為切除。最簡單的這種對應關(guān)系是在未知相機映射下的3D點X及其圖像x之間。給定足夠多的這種對應關(guān)系,可以確定相機矩陣。
算法

通過解方程組Ap = 0來計算投影矩陣P,其中p是包含矩陣P項的向量。
計算P所需的最小點對應數(shù)量
3×4矩陣P具有12個元素,但比例是任意的,因此具有11個自由度。由于每個點的對應關(guān)系都有2個方程,因此至少需要5.5個對應關(guān)系才能求解P。0.5表示從第六個點開始僅使用一個方程,即我們選擇x坐標或y-第六個圖像點的坐標。
在此最小數(shù)量的對應關(guān)系下,該解決方案是精確的,并且可以通過求解Ap = 0來獲得,其中A在這種情況下為11x12矩陣。
如果數(shù)據(jù)不精確,則給出n≥6個點對應關(guān)系,那么將沒有精確的解決方案,我們通過最小化代數(shù)或幾何誤差來解決。
從投影矩陣P獲得參數(shù)K,R和t
通過RQ分解將P分解為K,R,t。它涉及計算分解A = RQ,其中Q為unit /正交,R為上三角。
驗證計算參數(shù)的準確性
為此,我們將計算重新投影誤差,該誤差是對2D點與通過使用計算出的相機參數(shù)投影3D點而獲得的2D點之間距離的度量。
該圖以橙色顯示了原始2D點,并以綠色顯示了重新投影的點。可以看出,重新投影的點與實際點非常匹配。

參考文獻
[1] R. Hartley and A. Zissermann, Multiview geometry, 2nd edition, Cambridge University Press.
[2] Z. Zhang. A flexible new technique for camera calibration. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330–1334, 2000.
有關(guān)詳細代碼,請訪問https://github.com/sreenithy/Camera-Calibration。
下載1:OpenCV黑魔法
在「AI算法與圖像處理」公眾號后臺回復:OpenCV黑魔法,即可下載小編精心編寫整理的計算機視覺趣味實戰(zhàn)教程
下載2 CVPR2020 在「AI算法與圖像處理」公眾號后臺回復:CVPR2020,即可下載1467篇CVPR?2020論文 個人微信(如果沒有備注不拉群!) 請注明:地區(qū)+學校/企業(yè)+研究方向+昵稱
覺得有趣就點亮在看吧


