OpenCV  4.10.0
开源计算机视觉
加载中...
搜索中...
无匹配
命名空间 | | | 枚举 | 函数
3D重构的自定义校准模式

详细说明

命名空间

命名空间  cv::omnidir::internal
 

类  cv::ccalib::CustomPattern
 
类  cv::multicalib::MultiCameraCalibration
 这是一个用于支持针孔相机和全向相机的多摄像头校准的类。对于全向相机模型,请参考ccalib模块中的omnidir.hpp文件的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, 瑜}));
 从一对图像中重建立体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

枚举类型文档

◆ 匿名枚举

匿名枚举

包含头文件 <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

◆ 匿名枚举

匿名枚举

包含头文件 <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

◆ 匿名枚举

匿名枚举

包含头文件 <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

包含头文件 <opencv2/ccalib/omnidir.hpp>

执行全向相机校准,输出默认深度为CV_64F。

参数
objectPoints包含世界(图案)坐标中点对象的 Vector 或三维向量 Vec3f 的 Vector。也可以是大小为 1xN/Nx1 类型 CV_32FC3 的 Mat 向量。数据深度为 64_F 也同样可以接受。
imagePoints包含 objectPoints 的 corresponding image points 的 Vector 或二维向量 Vec2f 的 Vector。它必须与 objectPoints_SIZE 相同,类型也相同。
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 ( 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

包含头文件 <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 1通道,或向量: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

包含头文件 <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

包含头文件 <opencv2/ccalib/omnidir.hpp>

使用 CMei 的模型对全息相机进行点位投影。

本模块被接受为2015年GSoC OpenCV项目,由Lai Baisheng编写,由Bo Li指导。

参数
objectPoints世界坐标系中的对象点,向量向量 Vec3f 或 1xN/Nx1 3通道的 Mat,类型为 CV_32F,N 为点的数量。64F 也可接受。
imagePoints输出图像点数组,向量向量 Vec2f 或 1xN/Nx1 2通道的 CV_32F。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 jacobian 矩阵,包含图像像素点相对于参数的导数,包括 \(om, T, f_x, f_y, s, c_x, c_y, xi, k_1, k_2, p_1, p_2\)。此矩阵将在优化过程中用于校准。

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

◆ 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

包含头文件 <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第一台相机梅模型输出参数 xi。
D1第一台相机输出畸变参数 \((k_1, k_2, p_1, p_2)\)。
K2第一台相机的输出相机矩阵。
xi2第二台相机梅模型输出参数 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

包含头文件 <opencv2/ccalib/omnidir.hpp>

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

参数
image1第一个输入图像
image2第二个输入图像
K1第一台相机的输入相机矩阵
D1第一台相机的输入畸变参数 \((k_1, k_2, p_1, p_2)\)
xi1第一台相机梅模型输入参数 xi
K2第二台相机的输入相机矩阵
D2第二台相机的输入畸变参数 \((k_1, k_2, p_1, p_2)\)
xi2第二台相机梅模型输入参数 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  R1,
OutputArray  R2 
)
Python
cv.omnidir.stereoRectify(R, T[, R1[, R2]]) -> R1, R2

包含头文件 <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

包含头文件 <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

包含头文件 <opencv2/ccalib/omnidir.hpp>

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

参数
distorted畸变图像点的数组,Vec2f 向量或 1xN/Nx1 2通道 Mat,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