OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
用于3D重建的自定义标定模式

详细描述

命名空间

命名空间  cv::omnidir::internal
 

类  cv::ccalib::CustomPattern
 
类  cv::multicalib::MultiCameraCalibration
 支持针孔相机和全向相机的多相机标定类。关于全向相机模型,请参考ccalib模块中的omnidir.hpp。它首先对每个相机进行单独标定,然后应用类似于光束平差法的优化来细化外部参数。到目前为止,它只支持“随机”模式进行标定,详情请参见ccalib模块中的randomPattern.hpp。使用的图像应按“cameraIdx-timestamp.*”命名,具有相同时间戳的多个图像表示它们是同一模式在同一时间拍摄的。cameraIdx应从0开始。更多...
 
类  cv::randpattern::RandomPatternCornerFinder
 用于查找“随机”模式特征点及其在世界坐标系中对应3D点的类,可用于标定。当标定模式部分被遮挡或在多相机标定中只能观察到部分模式时,此功能很有用。该模式可通过此文件中描述的RandomPatternGenerator类生成。更多...
 
类  cv::randpattern::RandomPatternGenerator
 

#define HEAD   -1
 
#define INVALID   -2
 

枚举

枚举  {
  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
}
 
枚举  {
  cv::omnidir::RECTIFY_PERSPECTIVE = 1 ,
  cv::omnidir::RECTIFY_CYLINDRICAL = 2 ,
  cv::omnidir::RECTIFY_LONGLATI = 3 ,
  cv::omnidir::RECTIFY_STEREOGRAPHIC = 4
}
 
枚举  {
  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)
 从一对图像进行立体3D重建。
 
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模型对全向相机的2D图像点进行去畸变。
 

宏定义文档

◆ HEAD

#define HEAD   -1

◆ INVALID

#define INVALID   -2

枚举类型文档

◆ 匿名枚举

匿名枚举

#include <opencv2/ccalib/omnidir.hpp>

枚举器
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

◆ 匿名枚举

匿名枚举

#include <opencv2/ccalib/omnidir.hpp>

枚举器
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

◆ 匿名枚举

匿名枚举

#include <opencv2/ccalib/omnidir.hpp>

枚举器
XYZRGB 
Python: cv.omnidir.XYZRGB
XYZ 
Python: cv.omnidir.XYZ

函数文档

◆ calibrate()

double cv::omnidir::calibrate ( InputArrayOfArrays objectPoints,
InputArrayOfArrays imagePoints,
Size size,
InputOutputArray 输入的相机内参矩阵。,
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世界(模式)坐标系中的Vec3f对象点向量的向量。它也可以是Mat向量,大小为1xN/Nx1,类型为CV_32FC3。深度为64F的数据也接受。
imagePoints与objectPoints对应的图像点Vec2f向量的向量。它必须与objectPoints的大小和类型相同。
size标定图像的尺寸。
输入的相机内参矩阵。输出已标定相机矩阵。
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 输入的相机内参矩阵。,
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 = \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 输入的相机内参矩阵。,
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 输入的相机内参矩阵。,
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 2015 GSoC项目被接受,作者为Baisheng Lai,导师为Bo Li。

参数
objectPoints世界坐标系中的对象点,Vec3f向量的向量或类型为CV_32F的1xN/Nx1三通道Mat,N为点数。64F也接受。
imagePoints图像点的输出数组,Vec2f向量的向量或类型为CV_32F的1xN/Nx1双通道。64F也接受。
rvec世界坐标系与相机坐标系之间的旋转向量,即om
tvec模式坐标系与相机坐标系之间的平移向量
输入的相机内参矩阵。相机矩阵\(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\))的导数。此矩阵将用于优化标定。

此函数将世界坐标系中的3D对象点投影到图像像素,通过内参和外参进行参数化。此外,它还可选地计算一个副产品:包含图像像素点相对于内参和外参导数的雅可比矩阵。

◆ 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<vector<Vec3f> >。它也可以是Mat向量,大小为1xN/Nx1,类型为CV_32FC3。深度为64F的数据也接受。
imagePoints1第一个相机的对应图像点,类型为vector<vector<Vec2f> >。它必须与objectPoints的大小和类型相同。
imagePoints2第二个相机的对应图像点,类型为vector<vector<Vec2f> >。它必须与objectPoints的大小和类型相同。
imageSize1第一个相机的标定图像尺寸。
imageSize2第二个相机的标定图像尺寸。
K1第一个相机的输出相机矩阵。
xi1第一个相机的Mei模型输出参数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控制stereoCalibrate的标志
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 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 )
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>

从一对图像进行立体3D重建。

参数
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第一个和第二个相机之间的平移向量
flag校正类型标志,RECTIFY_PERSPECTIVE 或 RECTIFY_LONGLATI
numDisparitiesStereoSGBM中的参数'numDisparities',详情请参见StereoSGBM
SADWindowSizeStereoSGBM中的参数'SADWindowSize',详情请参见StereoSGBM
disparity立体匹配生成的视差图
image1Rec第一个图像的校正图像
image2Rec第二个图像的校正图像
newSize校正图像的尺寸,参见omnidir::undistortImage
Knew校正图像的新相机矩阵,参见omnidir::undistortImage
pointCloud3D重建的点云,类型为CV_64FC3
pointType点云类型,可以是XYZRGB或XYZ

◆ stereoRectify()

void cv::omnidir::stereoRectify ( InputArray R,
InputArray T,
OutputArray 一个可能的旋转矩阵。,
OutputArray R2 )
Python
cv.omnidir.stereoRectify(R, T[, R1[, R2]]) -> R1, R2

#include <opencv2/ccalib/omnidir.hpp>

全向相机模型的立体校正。它计算两个相机的校正旋转矩阵。

参数
R第一个和第二个相机之间的旋转矩阵
T第一个和第二个相机之间的平移向量
一个可能的旋转矩阵。第一个相机的输出3x3旋转矩阵
另一个可能的旋转矩阵。第二个相机的输出3x3旋转矩阵

◆ undistortImage()

void cv::omnidir::undistortImage ( InputArray distorted,
OutputArray undistorted,
InputArray 输入的相机内参矩阵。,
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 = \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 输入的相机内参矩阵。,
InputArray D,
InputArray xi,
InputArray R )
Python
cv.omnidir.undistortPoints(distorted, K, D, xi, R[, undistorted]) -> undistorted

#include <opencv2/ccalib/omnidir.hpp>

使用CMei模型对全向相机的2D图像点进行去畸变。

参数
distorted畸变图像点数组,Vec2f向量或类型为CV_32F的1xN/Nx1双通道Mat,64F深度也接受
输入的相机内参矩阵。相机矩阵\(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三通道
undistorted归一化对象点数组,Vec2f/Vec2d向量或1xN/Nx1双通道Mat,其深度与畸变点相同。