OpenCV 4.11.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模型校正全向相机的二维图像点。
 

宏定义文档

◆ 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 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世界(图案)坐标系中物体点的向量,每个向量都是Vec3f。它也可以是大小为1xN/Nx1且类型为CV_32FC3的Mat向量。也接受深度为64_F的数据。
imagePoints与objectPoints对应的图像点的向量,每个向量都是Vec2f。它必须与objectPoints具有相同的大小和类型。
size校准图像的图像大小。
K输出校准后的相机矩阵。
xi输出CMei模型的参数xi。
D输出畸变参数\((k_1, k_2, p_1, p_2)\)
rvecs输出每个校准图像的旋转向量。
tvecs输出每个校准图像的平移向量。
flags控制校准的标志。
criteria优化的终止准则。
idx通过初始化的图像索引,这些图像真正用于校准。因此,rvecs的大小与idx.total()相同。

◆ initUndistortRectifyMap()

void cv::omnidir::initUndistortRectifyMap ( 输入数组 K,
输入数组 D,
输入数组 xi,
输入数组 R,
输入数组 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 ( 输入数组 objectPoints,
OutputArray imagePoints,
const Affine3d & affine,
输入数组 K,
double xi,
输入数组 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 ( 输入数组 objectPoints,
OutputArray imagePoints,
输入数组 rvec,
输入数组 tvec,
输入数组 K,
double xi,
输入数组 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项目被接受,作者是Lai Baisheng,导师是Li Bo。

参数
objectPoints世界坐标系中的物体点,Vec3f向量或大小为1xN/Nx1、3通道、类型为CV_32F的Mat,N是点的数量。也接受64F。
imagePoints图像点的输出数组,Vec2f向量或大小为1xN/Nx1、2通道、类型为CV_32F的Mat。也接受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\)的参数的导数。此矩阵将在通过优化进行校准时使用。

该函数将世界坐标系的物体3D点投影到图像像素,参数由内参和外参决定。此外,它还可以选择性地计算一个副产品:包含图像像素点关于内参和外参导数的雅可比矩阵。

◆ stereoCalibrate()

double cv::omnidir::stereoCalibrate ( 输入输出数组 objectPoints,
输入输出数组 imagePoints1,
输入输出数组 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> >。它也可以是大小为1xN/Nx1且类型为CV_32FC3的Mat向量。也接受深度为64_F的数据。
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 ( 输入数组 image1,
输入数组 image2,
输入数组 K1,
输入数组 D1,
输入数组 xi1,
输入数组 K2,
输入数组 D2,
输入数组 xi2,
输入数组 R,
输入数组 T,
int flag,
int numDisparities,
int SADWindowSize,
OutputArray disparity,
OutputArray image1Rec,
OutputArray image2Rec,
const Size & newSize = Size(),
输入数组 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)\)
xi2CMei 模型第二个摄像头的输入参数 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 ( 输入数组 R,
输入数组 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 ( 输入数组 distorted,
OutputArray undistorted,
输入数组 K,
输入数组 D,
输入数组 xi,
int flags,
输入数组 Knew = cv::noArray(),
const Size & new_size = Size(),
输入数组 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新的图像大小。默认情况下,它是 distorted 的大小。
R输入图像和输出图像之间的旋转矩阵。默认情况下,它是单位矩阵。

◆ undistortPoints()

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

#include <opencv2/ccalib/omnidir.hpp>

使用CMei模型校正全向相机的二维图像点。

参数
distorted畸变图像点的数组,Vec2f 向量或 1xN/Nx1 2 通道 Mat,也接受 CV_32F、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 1 通道,或向量:3x1/1x3 1 通道或 1x1 3 通道
undistorted归一化目标点的数组,Vec2f/Vec2d 向量或 1xN/Nx1 2 通道 Mat,与畸变点的深度相同。