OpenCV 4.13.0
開源計算機視覺庫 (Open Source Computer Vision)
正在載入...
正在搜尋...
未找到匹配項
自定義標定圖案用於三維重建

詳細說明

名稱空間

名稱空間  cv::omnidir::internal
 

類  cv::ccalib::CustomPattern
 
類  cv::multicalib::MultiCameraCalibration
 用於多相機標定的類,支援針孔相機和全向相機。對於全向相機模型,請參考ccalib模組下的omnidir.hpp。該類首先單獨標定每個相機,然後應用類似Bundle Adjustment的最佳化來精煉外參。目前,它僅支援“隨機”圖案進行標定,詳情請參見ccalib模組下的randomPattern.hpp。使用的影像應命名為“cameraIdx-timestamp.*”,具有相同時間戳的幾張影像表示它們是同一時間拍攝的同一圖案。cameraIdx應從0開始。更多...
 
類  cv::randpattern::RandomPatternCornerFinder
 用於查詢“隨機”圖案的特徵點及其在世界座標系中對應點的類,可用於標定。當圖案部分遮擋或在多相機標定中僅能觀察到圖案的一部分時,該類非常有用。圖案可以透過檔案中描述的RandomPatternGenerator類生成。更多...
 
類  cv::randpattern::RandomPatternGenerator
 

#define HEAD   -1
 
#define INVALID   -2
 

列舉

enum  {
  cv::omnidir::CALIB_USE_GUESS = 1 ,
  cv::omnidir::CALIB_FIX_SKEW = 2 ,
  cv::omnidir::CALIB_FIX_K1 = 4 ,
  cv::omnidir::CALIB_FIX_K2 = 8 ,
  cv::omnidir::CALIB_FIX_P1 = 16 ,
  cv::omnidir::CALIB_FIX_P2 = 32 ,
  cv::omnidir::CALIB_FIX_XI = 64 ,
  cv::omnidir::CALIB_FIX_GAMMA = 128 ,
  cv::omnidir::CALIB_FIX_CENTER = 256
}
 
enum  {
  cv::omnidir::RECTIFY_PERSPECTIVE = 1 ,
  cv::omnidir::RECTIFY_CYLINDRICAL = 2 ,
  cv::omnidir::RECTIFY_LONGLATI = 3 ,
  cv::omnidir::RECTIFY_STEREOGRAPHIC = 4
}
 
enum  {
  cv::omnidir::XYZRGB = 1 ,
  cv::omnidir::XYZ = 2
}
 

函式

double cv::omnidir::calibrate (InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, Size size, InputOutputArray K, InputOutputArray xi, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags, TermCriteria criteria, OutputArray idx=noArray())
 執行全向相機標定,輸出的預設深度為CV_64F。
 
void cv::omnidir::initUndistortRectifyMap (InputArray K, InputArray D, InputArray xi, InputArray R, InputArray P, const cv::Size &size, int m1type, OutputArray map1, OutputArray map2, int flags)
 計算全向相機影像變換(由旋轉R引起)的去畸變和校正對映。它輸出兩個用於cv::remap()的對映。如果D為空,則使用零畸變;如果R或P為空,則使用單位矩陣。
 
void cv::omnidir::projectPoints (InputArray objectPoints, OutputArray imagePoints, const Affine3d &affine, InputArray K, double xi, InputArray D, OutputArray jacobian=noArray())
 
void cv::omnidir::projectPoints (InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, InputArray K, double xi, InputArray D, OutputArray jacobian=noArray())
 使用CMei模型投影全向相機點的三維座標到影像畫素。
 
double cv::omnidir::stereoCalibrate (InputOutputArrayOfArrays objectPoints, InputOutputArrayOfArrays imagePoints1, InputOutputArrayOfArrays imagePoints2, const Size &imageSize1, const Size &imageSize2, InputOutputArray K1, InputOutputArray xi1, InputOutputArray D1, InputOutputArray K2, InputOutputArray xi2, InputOutputArray D2, OutputArray rvec, OutputArray tvec, OutputArrayOfArrays rvecsL, OutputArrayOfArrays tvecsL, int flags, TermCriteria criteria, OutputArray idx=noArray())
 全向相機模型的立體標定。它計算兩個相機的內參以及兩個相機之間的外參。輸出的預設深度為CV_64F。
 
void cv::omnidir::stereoReconstruct (InputArray image1, InputArray image2, InputArray K1, InputArray D1, InputArray xi1, InputArray K2, InputArray D2, InputArray xi2, InputArray R, InputArray T, int flag, int numDisparities, int SADWindowSize, OutputArray disparity, OutputArray image1Rec, OutputArray image2Rec, const Size &newSize=Size(), InputArray Knew=cv::noArray(), OutputArray pointCloud=cv::noArray(), int pointType=XYZRGB)
 從一對影像進行立體三維重建。
 
void cv::omnidir::stereoRectify (InputArray R, InputArray T, OutputArray R1, OutputArray R2)
 全向相機模型的立體校正。它計算兩個相機的校正旋轉矩陣。
 
void cv::omnidir::undistortImage (InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray xi, int flags, InputArray Knew=cv::noArray(), const Size &new_size=Size(), InputArray R=Mat::eye(3, 3, CV_64F))
 將全向相機影像去畸變以得到透檢視像。
 
void cv::omnidir::undistortPoints (InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray xi, InputArray R)
 使用CMei模型去畸變全向相機的二維影像點。
 

宏定義文件

◆ HEAD

#define HEAD   -1

◆ INVALID

#define INVALID   -2

列舉型別文件 (Enumeration Type Documentation)

◆ anonymous enum

匿名列舉

#include <opencv2/ccalib/omnidir.hpp>

列舉值 (Enumerator)
CALIB_USE_GUESS 
Python: cv.omnidir.CALIB_USE_GUESS
CALIB_FIX_SKEW 
Python: cv.omnidir.CALIB_FIX_SKEW
CALIB_FIX_K1 
Python: cv.omnidir.CALIB_FIX_K1
CALIB_FIX_K2 
Python: cv.omnidir.CALIB_FIX_K2
CALIB_FIX_P1 
Python: cv.omnidir.CALIB_FIX_P1
CALIB_FIX_P2 
Python: cv.omnidir.CALIB_FIX_P2
CALIB_FIX_XI 
Python: cv.omnidir.CALIB_FIX_XI
CALIB_FIX_GAMMA 
Python: cv.omnidir.CALIB_FIX_GAMMA
CALIB_FIX_CENTER 
Python: cv.omnidir.CALIB_FIX_CENTER

◆ anonymous enum

匿名列舉

#include <opencv2/ccalib/omnidir.hpp>

列舉值 (Enumerator)
RECTIFY_PERSPECTIVE 
Python: cv.omnidir.RECTIFY_PERSPECTIVE
RECTIFY_CYLINDRICAL 
Python: cv.omnidir.RECTIFY_CYLINDRICAL
RECTIFY_LONGLATI 
Python: cv.omnidir.RECTIFY_LONGLATI
RECTIFY_STEREOGRAPHIC 
Python: cv.omnidir.RECTIFY_STEREOGRAPHIC

◆ anonymous enum

匿名列舉

#include <opencv2/ccalib/omnidir.hpp>

列舉值 (Enumerator)
XYZRGB 
Python: cv.omnidir.XYZRGB
XYZ 
Python: cv.omnidir.XYZ

函式文件 (Function Documentation)

◆ calibrate()

double cv::omnidir::calibrate ( InputArrayOfArrays objectPoints,
InputArrayOfArrays imagePoints,
Size size (大小),
InputOutputArray K,
InputOutputArray xi,
InputOutputArray D,
OutputArrayOfArrays rvecs,
OutputArrayOfArrays tvecs,
int flags (標誌),
TermCriteria criteria,
OutputArray idx = noArray() )
Python
cv.omnidir.calibrate(objectPoints, imagePoints, size, K, xi, D, flags, criteria[, rvecs[, tvecs[, idx]]]) -> retval, K, xi, D, rvecs, tvecs, idx

#include <opencv2/ccalib/omnidir.hpp>

執行全向相機標定,輸出的預設深度為CV_64F。

引數
objectPoints世界(圖案)座標系中的三維點物件,為`vector>`。也可以是`Mat`型別,大小為1xN/Nx1,CV_32FC3。也接受CV_64F型別的資料。
imagePoints對應的二維影像點,與`objectPoints`的大小和型別必須相同。
size (大小)標定影像的尺寸。
K輸出的標定相機矩陣。
xiCMei模型輸出引數xi。
D輸出畸變引數 \((k_1, k_2, p_1, p_2)\)。
rvecs輸出每個標定影像的旋轉向量。
tvecs輸出每個標定影像的平移向量。
flags (標誌)控制標定的標誌。
criteria最佳化的終止條件。
idx (索引)透過初始化檢查的影像索引,這些影像將被實際用於標定。因此,`rvecs`的大小與`idx.total()`相同。

◆ initUndistortRectifyMap()

void cv::omnidir::initUndistortRectifyMap ( InputArray K,
InputArray D,
InputArray xi,
InputArray R,
InputArray P,
const cv::Size & size (大小),
int m1type,
OutputArray map1,
OutputArray map2,
int flags (標誌) )
Python
cv.omnidir.initUndistortRectifyMap(K, D, xi, R, P, size, m1type, flags[, map1[, map2]]) -> map1, map2

#include <opencv2/ccalib/omnidir.hpp>

計算全向相機影像變換(由旋轉R引起)的去畸變和校正對映。它輸出兩個用於cv::remap()的對映。如果D為空,則使用零畸變;如果R或P為空,則使用單位矩陣。

引數
K相機矩陣 \(K = \vecthreethree{f_x}{s}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\),深度為CV_32F或CV_64F。
D輸入畸變係數向量 \((k_1, k_2, p_1, p_2)\),深度為CV_32F或CV_64F。
xiCMei模型的引數xi。
R原始空間與物體空間之間的旋轉變換:3x3單通道,或向量:3x1/1x3,深度為CV_32F或CV_64F。
P新的相機矩陣(3x3)或新的投影矩陣(3x4)。
size (大小)去畸變影像的大小。
m1type第一個輸出對映的型別,可以是CV_32FC1或CV_16SC2。詳情請參見convertMaps()
map1第一個輸出對映。
map2第二個輸出對映。
flags (標誌)標誌指示校正型別,支援RECTIFY_PERSPECTIVE、RECTIFY_CYLINDRICAL、RECTIFY_LONGLATI和RECTIFY_STEREOGRAPHIC。

◆ projectPoints() [1/2]

void cv::omnidir::projectPoints ( InputArray objectPoints,
OutputArray imagePoints,
const Affine3d & affine,
InputArray K,
double xi,
InputArray D,
OutputArray jacobian = noArray() )
Python
cv.omnidir.projectPoints(objectPoints, rvec, tvec, K, xi, D[, imagePoints[, jacobian]]) -> imagePoints, jacobian

#include <opencv2/ccalib/omnidir.hpp>

這是一個過載的成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數不同。

◆ projectPoints() [2/2]

void cv::omnidir::projectPoints ( InputArray objectPoints,
OutputArray imagePoints,
InputArray rvec,
InputArray tvec,
InputArray K,
double xi,
InputArray D,
OutputArray jacobian = noArray() )
Python
cv.omnidir.projectPoints(objectPoints, rvec, tvec, K, xi, D[, imagePoints[, jacobian]]) -> imagePoints, jacobian

#include <opencv2/ccalib/omnidir.hpp>

使用CMei模型投影全向相機點的三維座標到影像畫素。

該模組是作為OpenCV的GSoC 2015專案被接受的,作者是Baisheng Lai,導師是Bo Li。

引數
objectPoints世界座標系中的三維點物件,為`vector>`或`Mat`型別,大小為1xN/Nx1,3通道,CV_32F型別,N為點的數量。CV_64F也可用。
imagePoints輸出的二維影像點,為`vector>`或1xN/Nx1,2通道,CV_32F型別。CV_64F也可用。
rvec世界座標系到相機座標系的旋轉向量陣列,即om。
tvec圖案座標系到相機座標系的平移向量陣列。
K相機矩陣 \(K = \vecthreethree{f_x}{s}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\)。
D輸入畸變係數向量 \((k_1, k_2, p_1, p_2)\)。
xiCMei模型的引數xi。
jacobian可選的輸出2Nx16的CV_64F雅可比矩陣,包含影像畫素點相對於引數(包括 \(om, T, f_x, f_y, s, c_x, c_y, xi, k_1, k_2, p_1, p_2\))的導數。該矩陣將用於最佳化標定。

該函式透過內參和外參將世界座標系的三維點投影到影像畫素。此外,它還可選地計算一個副產品:包含影像畫素點相對於內參和外參的導數的雅可比矩陣。

◆ stereoCalibrate()

double cv::omnidir::stereoCalibrate ( InputOutputArrayOfArrays objectPoints,
InputOutputArrayOfArrays imagePoints1,
InputOutputArrayOfArrays imagePoints2,
const Size & imageSize1,
const Size & imageSize2,
InputOutputArray K1,
InputOutputArray xi1,
InputOutputArray D1,
InputOutputArray K2,
InputOutputArray xi2,
InputOutputArray D2,
OutputArray rvec,
OutputArray tvec,
OutputArrayOfArrays rvecsL,
OutputArrayOfArrays tvecsL,
int flags (標誌),
TermCriteria criteria,
OutputArray idx = noArray() )
Python
cv.omnidir.stereoCalibrate(objectPoints, imagePoints1, imagePoints2, imageSize1, imageSize2, K1, xi1, D1, K2, xi2, D2, flags, criteria[, rvec[, tvec[, rvecsL[, tvecsL[, idx]]]]]) -> retval, objectPoints, imagePoints1, imagePoints2, K1, xi1, D1, K2, xi2, D2, rvec, tvec, rvecsL, tvecsL, idx

#include <opencv2/ccalib/omnidir.hpp>

全向相機模型的立體標定。它計算兩個相機的內參以及兩個相機之間的外參。輸出的預設深度為CV_64F。

引數
objectPoints世界(圖案)座標系中的三維點物件,型別為`vector>`。也可以是`Mat`型別,大小為1xN/Nx1,CV_32FC3。也接受CV_64F型別的資料。
imagePoints1第一個相機的對應影像點,型別為`vector>`。它的大小和型別必須與`objectPoints`相同。
imagePoints2第二個相機的對應影像點,型別為`vector>`。它的大小和型別必須與`objectPoints`相同。
imageSize1第一個相機的標定影像尺寸。
imageSize2第二個相機的標定影像尺寸。
K1第一個相機的輸出相機矩陣。
xi1第一個相機的CMei模型輸出引數xi。
D1第一個相機的輸出畸變引數 \((k_1, k_2, p_1, p_2)\)。
K2第一個相機的輸出相機矩陣。
xi2第二個相機的CMei模型輸出引數xi。
D2第二個相機的輸出畸變引數 \((k_1, k_2, p_1, p_2)\)。
rvec第一個相機與第二個相機之間的輸出旋轉矩陣。
tvec第一個相機與第二個相機之間的輸出平移向量。
rvecsL第一個相機每個影像的輸出旋轉向量。
tvecsL第一個相機每個影像的輸出平移向量。
flags (標誌)控制立體標定的標誌。
criteria最佳化的終止條件。
idx (索引)透過初始化檢查的影像對索引,這些影像對將被實際用於標定。因此,`rvecs`的大小與`idx.total()`相同。@

◆ stereoReconstruct()

void cv::omnidir::stereoReconstruct ( InputArray image1,
InputArray image2,
InputArray K1,
InputArray D1,
InputArray xi1,
InputArray K2,
InputArray D2,
InputArray xi2,
InputArray R,
InputArray T,
int 標誌,
int numDisparities,
int SADWindowSize,
OutputArray disparity,
OutputArray image1Rec,
OutputArray image2Rec,
const Size & newSize = Size(),
InputArray Knew = cv::noArray(),
OutputArray pointCloud = cv::noArray(),
int pointType = XYZRGB )
Python
cv.omnidir.stereoReconstruct(image1, image2, K1, D1, xi1, K2, D2, xi2, R, T, flag, numDisparities, SADWindowSize[, disparity[, image1Rec[, image2Rec[, newSize[, Knew[, pointCloud[, pointType]]]]]]]) -> disparity, image1Rec, image2Rec, pointCloud

#include <opencv2/ccalib/omnidir.hpp>

從一對影像進行立體三維重建。

引數
image1第一張輸入影像。
image2第二張輸入影像。
K1第一個相機的輸入相機矩陣。
D1第一個相機的輸入畸變引數 \((k_1, k_2, p_1, p_2)\)。
xi1第一個相機的CMei模型輸入引數xi。
K2第二個相機的輸入相機矩陣。
D2第二個相機的輸入畸變引數 \((k_1, k_2, p_1, p_2)\)。
xi2第二個相機的CMei模型輸入引數xi。
R第一個相機與第二個相機之間的旋轉矩陣。
T第一個相機與第二個相機之間的平移向量。
標誌校正型別的標誌,RECTIFY_PERSPECTIVE或RECTIFY_LONGLATI。
numDisparitiesStereoSGBM中的引數`numDisparities`,詳情請參見StereoSGBM
SADWindowSizeStereoSGBM中的引數`SADWindowSize`,詳情請參見StereoSGBM
disparity立體匹配生成的視差圖。
image1Rec第一個影像的校正後影像。
image2Rec第二個影像的校正後影像。
newSize校正後影像的尺寸,參見omnidir::undistortImage
Knew校正後影像的新相機矩陣,參見omnidir::undistortImage
pointCloud三維重建的點雲,型別為CV_64FC3。
pointType點雲型別,可以是XYZRGB或XYZ。

◆ stereoRectify()

void cv::omnidir::stereoRectify ( InputArray R,
InputArray T,
OutputArray R1,
OutputArray R2 )
Python
cv.omnidir.stereoRectify(R, T[, R1[, R2]]) -> R1, R2

#include <opencv2/ccalib/omnidir.hpp>

全向相機模型的立體校正。它計算兩個相機的校正旋轉矩陣。

引數
R第一個相機與第二個相機之間的旋轉矩陣。
T第一個相機與第二個相機之間的平移向量。
R1第一個相機的輸出3x3旋轉矩陣。
R2第二個相機的輸出3x3旋轉矩陣。

◆ undistortImage()

void cv::omnidir::undistortImage ( InputArray distorted,
OutputArray undistorted,
InputArray K,
InputArray D,
InputArray xi,
int flags (標誌),
InputArray Knew = cv::noArray(),
const Size & new_size = Size(),
InputArray R = Mat::eye(3, 3, CV_64F) )
Python
cv.omnidir.undistortImage(distorted, K, D, xi, flags[, undistorted[, Knew[, new_size[, R]]]]) -> undistorted

#include <opencv2/ccalib/omnidir.hpp>

將全向相機影像去畸變以得到透檢視像。

引數
distorted輸入的畸變全向影像。
undistorted輸出的去畸變影像。
K相機矩陣 \(K = \vecthreethree{f_x}{s}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\)。
D輸入畸變係數向量 \((k_1, k_2, p_1, p_2)\)。
xiCMei模型的引數xi。
flags (標誌)標誌指示校正型別,RECTIFY_PERSPECTIVE、RECTIFY_CYLINDRICAL、RECTIFY_LONGLATI和RECTIFY_STEREOGRAPHIC。
Knew畸變影像的相機矩陣。如果未指定,則為K。
new_size新影像尺寸。預設為畸變影像的尺寸。
R輸入影像與輸出影像之間的旋轉矩陣。預設為單位矩陣。

◆ undistortPoints()

void cv::omnidir::undistortPoints ( InputArray distorted,
OutputArray undistorted,
InputArray K,
InputArray D,
InputArray xi,
InputArray R )
Python
cv.omnidir.undistortPoints(distorted, K, D, xi, R[, undistorted]) -> undistorted

#include <opencv2/ccalib/omnidir.hpp>

使用CMei模型去畸變全向相機的二維影像點。

引數
distorted畸變的影像點陣列,為`vector`或1xN/Nx1,2通道`Mat`,CV_32F型別,CV_64F深度也可用。
K相機矩陣 \(K = \vecthreethree{f_x}{s}{c_x}{0}{f_y}{c_y}{0}{0}{_1}\)。
D畸變係數 \((k_1, k_2, p_1, p_2)\)。
xiCMei模型的引數xi。
R原始空間與物體空間之間的旋轉變換:3x3單通道,或向量:3x1/1x3單通道或1x1 3通道。
undistorted歸一化的物體點陣列,為`vector`/`Vec2d`或1xN/Nx1,2通道`Mat`,與畸變點的深度相同。