CalibrateCamera2

CalibrateCamera2,是利用定標來計算攝像機的內參數和外參數的函式。

套用,函式形式,參數,說明,

套用

利用定標來計算攝像機的內參數和外參數

函式形式

void cvCalibrateCamera2( const CvMat* object_points, const CvMat* image_points, const CvMat* point_counts, CvSize image_size, CvMat* intrinsic_matrix, CvMat* distortion_coeffs, CvMat* rotation_vectors=NULL, CvMat* translation_vectors=NULL, int flags=0 );

參數

  • object_points
  • 定標點的世界坐標,為3xN或者Nx3的矩陣,這裡N是所有視圖中點的總數。
  • image_points
  • 定標點的圖像坐標,為2xN或者Nx2的矩陣,這裡N是所有視圖中點的總數。
  • point_counts
  • 向量,指定不同視圖里點的數目,1xM或者Mx1向量,M是視圖數目。
  • image_size
  • 圖像大小,只用在初始化內參數時。
  • intrinsic_matrix
  • 輸出內參矩陣(A),如果指定CV_CALIB_USE_INTRINSIC_GUESS和(或)CV_CALIB_FIX_ASPECT_RATION,fx、 fy、 cx和cy部分或者全部必須被初始化。
  • distortion_coeffs
  • 輸出大小為4x1或者1x4的向量,裡面為形變參數[k1, k2, p1, p2]。
  • rotation_vectors
  • 輸出大小為3xM或者Mx3的矩陣,裡面為旋轉向量(旋轉矩陣的緊湊表示方式,具體參考函式cvRodrigues2)
  • translation_vectors
  • 輸出大小為3xM或Mx3的矩陣,裡面為平移向量。
  • flags
  • 不同的標誌,可以是0,或者下面值的組合:
  • CV_CALIB_USE_INTRINSIC_GUESS - 內參數矩陣包含fx,fy,cx和cy的初始值。否則,(cx, cy)被初始化到圖像中心(這兒用到圖像大小),焦距用最小平方差方式計算得到。注意,如果內部參數已知,沒有必要使用這個函式,使用cvFindExtrinsicCameraParams2則可。
  • CV_CALIB_FIX_PRINCIPAL_POINT - 主點在全局最佳化過程中不變,一直在中心位置或者在其他指定的位置(當CV_CALIB_USE_INTRINSIC_GUESS設定的時候)。
  • CV_CALIB_FIX_ASPECT_RATIO - 最佳化過程中認為fx和fy中只有一個獨立變數,保持比例fx/fy不變,fx/fy的值跟內參數矩陣初始化時的值一樣。在這種情況下, (fx, fy)的實際初始值或者從輸入記憶體矩陣中讀取(當CV_CALIB_USE_INTRINSIC_GUESS被指定時),或者採用估計值(後者情況中fx和fy可能被設定為任意值,只有比值被使用)。
  • CV_CALIB_ZERO_TANGENT_DIST – 切向形變參數(p1, p2)被設定為0,其值在最佳化過程中保持為0。

說明

函式cvCalibrateCamera2從每個視圖中估計相機的內參數和外參數。3維物體上的點和它們對應的在每個視圖的2維投影必須被指定。這些可以通過使用一個已知幾何形狀且具有容易檢測的特徵點的物體來實現。這樣的一個物體被稱作定標設備或者定標模式,OpenCV有內建的把棋盤當作定標設備方法(參考cvFindChessboardCorners)。目前,傳入初始化的內參數(當CV_CALIB_USE_INTRINSIC_GUESS不被設定時)只支持平面定標設備(物體點的Z坐標必須為全0或者全1)。不過3維定標設備依然可以用在提供初始內參數矩陣情況。在內參數和外參數矩陣的初始值都計算出之後,它們會被最佳化用來減小反投影誤差(圖像上的實際坐標跟cvProjectPoints2計算出的圖像坐標的差的平方和)。

相關詞條

熱門詞條

聯絡我們