Class cv::multicalib::MultiCameraCalibration#

Class for multiple camera calibration that supports pinhole camera and omnidirection camera. For omnidirectional camera model, please refer to omnidir.hpp in ccalib module. It first calibrate each camera individually, then a bundle adjustment like optimization is applied to refine extrinsic parameters. So far, it only support "random" pattern for calibration, see randomPattern.hpp in ccalib module for details. Images that are used should be named by "cameraIdx-timestamp.*", several images with the same timestamp means that they are the same pattern that are photographed. cameraIdx should start from 0. View details

Collaboration diagram for cv::multicalib::MultiCameraCalibration:

Public Types#

enum cv::multicalib::MultiCameraCalibration {
    cv::multicalib::PINHOLE,
    cv::multicalib::OMNIDIRECTIONAL
}

Detailed Description#

Class for multiple camera calibration that supports pinhole camera and omnidirection camera. For omnidirectional camera model, please refer to omnidir.hpp in ccalib module. It first calibrate each camera individually, then a bundle adjustment like optimization is applied to refine extrinsic parameters. So far, it only support “random” pattern for calibration, see randomPattern.hpp in ccalib module for details. Images that are used should be named by “cameraIdx-timestamp.*”, several images with the same timestamp means that they are the same pattern that are photographed. cameraIdx should start from 0.

For more details, please refer to paper B. Li, L. Heng, K. Kevin and M. Pollefeys, “A Multiple-Camera System

Calibration Toolbox Using A Feature Descriptor-Based Calibration

Pattern”, in IROS 2013.

Member Enumeration Documentation#

enum MultiCameraCalibration

PINHOLE

OMNIDIRECTIONAL

Constructor & Destructor Documentation#

MultiCameraCalibration()#

cv::multicalib::MultiCameraCalibration::MultiCameraCalibration(
int cameraType,
int nCameras,
const std::string & fileName,
float patternWidth,
float patternHeight,
int verbose = 0,
int showExtration = 0,
int nMiniMatches = 20,
int flags = 0,
TermCriteria criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 200, 1e-7),
Ptr< FeatureDetector > detector = xfeatures2d::AKAZE::create(xfeatures2d::AKAZE::DESCRIPTOR_MLDB, 0, 3, 0.006f),
Ptr< DescriptorExtractor > descriptor = xfeatures2d::AKAZE::create(xfeatures2d::AKAZE::DESCRIPTOR_MLDB, 0, 3, 0.006f),
Ptr< DescriptorMatcher > matcher = DescriptorMatcher::create(“BruteForce-L1”) )

Member Function Documentation#

initialize()#

void cv::multicalib::MultiCameraCalibration::initialize()

loadImages()#

void cv::multicalib::MultiCameraCalibration::loadImages()

optimizeExtrinsics()#

double cv::multicalib::MultiCameraCalibration::optimizeExtrinsics()

run()#

double cv::multicalib::MultiCameraCalibration::run()

writeParameters()#

void cv::multicalib::MultiCameraCalibration::writeParameters(const std::string & filename)

compose_motion()#

void cv::multicalib::MultiCameraCalibration::compose_motion(
InputArray _om1,
InputArray _T1,
InputArray _om2,
InputArray _T2,
Mat & om3,
Mat & T3,
Mat & dom3dom1,
Mat & dom3dT1,
Mat & dom3dom2,
Mat & dom3dT2,
Mat & dT3dom1,
Mat & dT3dT1,
Mat & dT3dom2,
Mat & dT3dT2 )

computeJacobianExtrinsic()#

void cv::multicalib::MultiCameraCalibration::computeJacobianExtrinsic(
const Mat & extrinsicParams,
Mat & JTJ_inv,
Mat & JTE )

computePhotoCameraJacobian()#

void cv::multicalib::MultiCameraCalibration::computePhotoCameraJacobian(
const Mat & rvecPhoto,
const Mat & tvecPhoto,
const Mat & rvecCamera,
const Mat & tvecCamera,
Mat & rvecTran,
Mat & tvecTran,
const Mat & objectPoints,
const Mat & imagePoints,
const Mat & K,
const Mat & distort,
const Mat & xi,
Mat & jacobianPhoto,
Mat & jacobianCamera,
Mat & E )

computeProjectError()#

double cv::multicalib::MultiCameraCalibration::computeProjectError(Mat & parameters)

dAB()#

void cv::multicalib::MultiCameraCalibration::dAB(
InputArray A,
InputArray B,
OutputArray dABdA,
OutputArray dABdB )

findRowNonZero()#

void cv::multicalib::MultiCameraCalibration::findRowNonZero(
const Mat & row,
Mat & idx )

getPhotoVertex()#

int cv::multicalib::MultiCameraCalibration::getPhotoVertex(int timestamp)

graphTraverse()#

void cv::multicalib::MultiCameraCalibration::graphTraverse(
const Mat & G,
int begin,
std::vector< int > & order,
std::vector< int > & pre )

JRodriguesMatlab()#

void cv::multicalib::MultiCameraCalibration::JRodriguesMatlab(
const Mat & src,
Mat & dst )

parameters2vector()#

void cv::multicalib::MultiCameraCalibration::parameters2vector(
const std::vector< Vec3f > & rvecVertex,
const std::vector< Vec3f > & tvecVertex,
Mat & parameters )

readStringList()#

std::vector< std::string > cv::multicalib::MultiCameraCalibration::readStringList()

vector2parameters()#

void cv::multicalib::MultiCameraCalibration::vector2parameters(
const Mat & parameters,
std::vector< Vec3f > & rvecVertex,
std::vector< Vec3f > & tvecVertexs )

Member Data Documentation#

_cameraMatrix#

std::vector< cv::Mat > cv::multicalib::MultiCameraCalibration::_cameraMatrix

_camType#

int cv::multicalib::MultiCameraCalibration::_camType

_criteria#

TermCriteria cv::multicalib::MultiCameraCalibration::_criteria

_descriptor#

Ptr< DescriptorExtractor > cv::multicalib::MultiCameraCalibration::_descriptor

_detector#

Ptr< FeatureDetector > cv::multicalib::MultiCameraCalibration::_detector

_distortCoeffs#

std::vector< cv::Mat > cv::multicalib::MultiCameraCalibration::_distortCoeffs

_edgeList#

std::vector< edge > cv::multicalib::MultiCameraCalibration::_edgeList

_error#

double cv::multicalib::MultiCameraCalibration::_error

_filename#

std::string cv::multicalib::MultiCameraCalibration::_filename

_flags#

int cv::multicalib::MultiCameraCalibration::_flags

_imagePointsForEachCamera#

std::vector< std::vector< cv::Mat > > cv::multicalib::MultiCameraCalibration::_imagePointsForEachCamera

_matcher#

Ptr< DescriptorMatcher > cv::multicalib::MultiCameraCalibration::_matcher

_nCamera#

int cv::multicalib::MultiCameraCalibration::_nCamera

_nMiniMatches#

int cv::multicalib::MultiCameraCalibration::_nMiniMatches

_objectPointsForEachCamera#

std::vector< std::vector< cv::Mat > > cv::multicalib::MultiCameraCalibration::_objectPointsForEachCamera

_omEachCamera#

std::vector< std::vector< Mat > > cv::multicalib::MultiCameraCalibration::_omEachCamera

_patternHeight#

float cv::multicalib::MultiCameraCalibration::_patternHeight

_patternWidth#

float cv::multicalib::MultiCameraCalibration::_patternWidth

_showExtraction#

int cv::multicalib::MultiCameraCalibration::_showExtraction

_tEachCamera#

std::vector< std::vector< Mat > > cv::multicalib::MultiCameraCalibration::_tEachCamera

_verbose#

int cv::multicalib::MultiCameraCalibration::_verbose

_vertexList#

std::vector< vertex > cv::multicalib::MultiCameraCalibration::_vertexList

_xi#

std::vector< cv::Mat > cv::multicalib::MultiCameraCalibration::_xi

Source file#

The documentation for this class was generated from the following file: