<補充>
(1)由於(u,v)(#像素座標系#)只代表像素的列數和行數,還需建立以物理單位(如毫米)表示的(x,y)(#圖像座標系#)
(2)
1.內參:
<資料>:
注:opencv含有4個內參 -> fx、fy、v0、u0 ( fx = f / dx ; fy = f / dy )
2.外參:表示將一個全局座標系下的P變換到相機座標系下
@具體參數數量和要求解的目標有關,比如畸變參數如果要全部估計的話就會比較多,如果不估計畸變參數,那內參:fx、fy、u0、v0,外參:偏移x、y、z,旋轉角:roll、yaw、pitch@
注:圖片引用自
- dx\dy:一個像素代表的物理長度
- f:焦距(似乎還有個r)
- u0\v0:圖像的中心像素座標和圖像原點像素座標之間相差的像素數(參見下圖)
注:引用自:
(3)角點:
1、圖像中的特殊位置,點的局部特徵也可叫做“關鍵特徵點”、“角點”
2、關於角點的具體描述可有幾種:
- 一階導數(即灰度梯度)的局部最大所對應的像素點。
- 兩條及兩條以上邊緣的交點。
- 圖像中梯度值和梯度方向的變化速率都很高的點。
- 角點處的一階導數最大,二階導數為零,指示物體邊緣變化不連續的方向。
@至少需要四個角點才能求解出內外參(需要八個方程求解八個參數),一般採用多組角點@
(4)畸變
<資料>
徑向畸變:光線在遠離透鏡中心的地方比靠近中心的地方更加彎曲
切向畸變:透鏡不完全平行於圖像平面
一、標定
<資料>:
- 目的:獲取相機內參和外參矩陣,幫助還原空間物體
- 輸入:標定圖像上所有內角點的圖像座標,標定板圖像上所有內角點的空間三維座標(一般假定z=0)
- 輸出:相機內、外參、畸變係數。
2017.3.9 22:31
1)標定技術
注:圖片引用自
2017.3.10 22:19
2)OpenCV標定模塊常用的標定函數:
引用自:
double calibrateCamera(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints,Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags=0)
其中
objectPoints為世界座標系中的點。在使用時,應該輸入一個三維點的vector的vector,即vector < vector < Point3f > > objectPoints。
imagePoints為其對應的圖像點。和objectPoints一樣,應該輸入std::vector < std::vector < cv::Point2f > > imagePoints型的變量。
imageSize為圖像的大小,在計算相機的內參數和畸變矩陣需要用到;
cameraMatrix為內參數矩陣。輸入一個cv::Mat cameraMatrix即可。
distCoeffs為畸變矩陣。輸入一個cv::Mat distCoeffs即可。
rvecs為旋轉向量;應該輸入一個cv::Mat的vector,即vector< cv::Mat> rvecs因為每個vector< Point3f>會得到一個rvecs。
tvecs為位移向量;和rvecs一樣,也應該為vector< cv::Mat> tvecs。
flags為標定是所採用的算法。可如下某個或者某幾個參數:
CV_CALIB_USE_INTRINSIC_GUESS:使用該參數時,在cameraMatrix矩陣中應該有fx,fy,cx,cy的估計值。否則的話,將初始化(cx,cy)圖像的中心點,使用最小二乘估算出fx,fy。如果內參數矩陣和畸變居中已知的時候,應該標定模塊中的solvePnP()函數計算外參數矩陣。
CV_CALIB_FIX_PRINCIPAL_POINT:在進行優化時會固定光軸點。當CV_CALIB_USE_INTRINSIC_GUESS參數被設置,光軸點將保持在中心或者某個輸入的值。
CV_CALIB_FIX_ASPECT_RATIO:固定fx/fy的比值,只將fy作為可變量,進行優化計算。當CV_CALIB_USE_INTRINSIC_GUESS沒有被設置,fx和fy將會被忽略。只有fx/fy的比值在計算中會被用到。
CV_CALIB_ZERO_TANGENT_DIST:設定切向畸變參數(p1,p2)為零。
CV_CALIB_FIX_K1,…,CV_CALIB_FIX_K6:對應的徑向畸變在優化中保持不變。如果設置了CV_CALIB_USE_INTRINSIC_GUESS參數,
CV_CALIB_RATIONAL_MODEL:計算k4,k5,k6三個畸變參數。如果沒有設置,則只計算其它5個畸變參數。
3)張正友相機標定
<資料>
1.補充
- 單應性(tomography):一個平面到另一個平面的投影映射
2. 標定不需要特殊的標定物,只需要一張打印出來的棋盤格
3.流程
- 從不同角度拍攝若干張模版圖像(棋盤格) -> 檢測圖像特徵點 -> 求出相機內外參 -> 求出畸變係數
| 2017.3.11 17:27
4.具體流程
- 檢測角點
- findChessboardCorners
- 精確角點座標(亞像素級別)
- find4QuadCornerSubpix
- 初始化標定板三維座標(z=0)
- 標定(包括相機內參、畸變係數、旋轉向量、平移向量)
- calibrateCamera
- 重投影計算誤差
- projectPoints
- 利用標定結果矯正棋盤圖
- remap
|2017.3.14 21:22
補充:相機原理
-
- 越靠近中軸線的光束聚焦得越遠,越靠近透鏡邊緣的光聚焦得越近
- 近軸焦點:聚焦在最遠處
- 邊緣光線焦點:聚焦在最近處
- 相機座標系與世界座標系
-
O為攝像機光心,
Zc為攝像機的光軸,和圖像平面垂直;
OO1為攝像機焦距
二、配準(深度圖與彩色圖< Kinect >)
資料:
1、具體流程
(1)利用內參求(深度\RGB)攝像頭座標系下世界座標到像平面座標(透視變換)
(2)利用外參求聯繫兩個座標系的R、T
|2017.3.15 23:10