MRPT
2.0.4
|
Classes | |
struct | mrpt::vision::TImageCalibData |
Data associated to each image in the calibration process mrpt::vision::checkerBoardCameraCalibration (All the information can be left empty and will be filled up in the calibration method). More... | |
struct | mrpt::vision::TImageStereoCalibData |
Data associated to each stereo image in the calibration process mrpt::vision::checkerBoardCameraCalibration (All the information can be left empty and will be filled up in the calibration method). More... | |
struct | mrpt::vision::TImageStereoCallbackData |
Params of the optional callback provided by the user. More... | |
struct | mrpt::vision::TStereoCalibParams |
Input parameters for mrpt::vision::checkerBoardStereoCalibration. More... | |
struct | mrpt::vision::TStereoCalibResults |
Output results for mrpt::vision::checkerBoardStereoCalibration. More... | |
Typedefs | |
using | mrpt::vision::TCalibrationImageList = std::map< std::string, TImageCalibData > |
A list of images, used in checkerBoardCameraCalibration. More... | |
using | mrpt::vision::TSteroCalibCallbackFunctor = void(*)(const TImageStereoCallbackData &d, void *user_data) |
Prototype of optional user callback function. More... | |
using | mrpt::vision::TCalibrationStereoImageList = std::vector< TImageStereoCalibData > |
A list of images, used in checkerBoardStereoCalibration. More... | |
Functions | |
bool | mrpt::vision::checkerBoardCameraCalibration (TCalibrationImageList &images, unsigned int check_size_x, unsigned int check_size_y, double check_squares_length_X_meters, double check_squares_length_Y_meters, mrpt::img::TCamera &out_camera_params, bool normalize_image=true, double *out_MSE=nullptr, bool skipDrawDetectedImgs=false, bool useScaramuzzaAlternativeDetector=false) |
Performs a camera calibration (computation of projection and distortion parameters) from a sequence of captured images of a checkerboard. More... | |
bool | mrpt::vision::checkerBoardCameraCalibration (TCalibrationImageList &images, unsigned int check_size_x, unsigned int check_size_y, double check_squares_length_X_meters, double check_squares_length_Y_meters, mrpt::math::CMatrixDouble33 &intrinsicParams, std::vector< double > &distortionParams, bool normalize_image=true, double *out_MSE=nullptr, bool skipDrawDetectedImgs=false, bool useScaramuzzaAlternativeDetector=false) |
bool | mrpt::vision::findChessboardCorners (const mrpt::img::CImage &img, std::vector< mrpt::img::TPixelCoordf > &cornerCoords, unsigned int check_size_x, unsigned int check_size_y, bool normalize_image=true, bool useScaramuzzaMethod=false) |
Look for the corners of a chessboard in the image using one of two different methods. More... | |
void | mrpt::vision::findMultipleChessboardsCorners (const mrpt::img::CImage &img, std::vector< std::vector< mrpt::img::TPixelCoordf >> &cornerCoords, unsigned int check_size_x, unsigned int check_size_y) |
Look for the corners of one or more chessboard/checkerboards in the image. More... | |
bool | mrpt::vision::checkerBoardStereoCalibration (TCalibrationStereoImageList &images, const TStereoCalibParams ¶ms, TStereoCalibResults &out_results) |
Optimize the calibration parameters of a stereo camera or a RGB+D (Kinect) camera. More... | |
using mrpt::vision::TCalibrationImageList = typedef std::map<std::string, TImageCalibData> |
A list of images, used in checkerBoardCameraCalibration.
Definition at line 57 of file chessboard_camera_calib.h.
using mrpt::vision::TCalibrationStereoImageList = typedef std::vector<TImageStereoCalibData> |
A list of images, used in checkerBoardStereoCalibration.
Definition at line 137 of file chessboard_stereo_camera_calib.h.
using mrpt::vision::TSteroCalibCallbackFunctor = typedef void (*)(const TImageStereoCallbackData& d, void* user_data) |
Prototype of optional user callback function.
Definition at line 52 of file chessboard_stereo_camera_calib.h.
bool mrpt::vision::checkerBoardCameraCalibration | ( | TCalibrationImageList & | images, |
unsigned int | check_size_x, | ||
unsigned int | check_size_y, | ||
double | check_squares_length_X_meters, | ||
double | check_squares_length_Y_meters, | ||
mrpt::img::TCamera & | out_camera_params, | ||
bool | normalize_image = true , |
||
double * | out_MSE = nullptr , |
||
bool | skipDrawDetectedImgs = false , |
||
bool | useScaramuzzaAlternativeDetector = false |
||
) |
Performs a camera calibration (computation of projection and distortion parameters) from a sequence of captured images of a checkerboard.
input_images | [IN/OUT] At input, this list must have one entry for each image to process. At output the original, detected checkboard and rectified images can be found here. See TImageCalibData. |
check_size_x | [IN] The number of squares in the checkerboard in the X direction. |
check_size_y | [IN] The number of squares in the checkerboard in the Y direction. |
check_squares_length_X_meters | [IN] The size of each square in the checkerboard, in meters, in the X axis. |
check_squares_length_Y_meters | [IN] This will typically be equal to check_squares_length_X_meters. |
intrinsicParams | [OUT] The 3x3 intrinsic parameters matrix. See https://www.mrpt.org/Camera_Parameters |
distortionParams | [OUT] The 1x4 vector of distortion parameters: k1 k2 p1 p2. See https://www.mrpt.org/Camera_Parameters |
normalize_image | [IN] Select OpenCV flag |
out_MSE | [OUT] If set to !=nullptr, the mean square error of the reprojection will be stored here (in pixel units). |
skipDrawDetectedImgs | [IN] Whether to skip the generation of the undistorted and detected images in each TImageCalibData |
useScaramuzzaAlternativeDetector | [IN] Whether to use an alternative detector. See CImage::findChessboardCorners for more deatails and references. |
Referenced by mrpt::vision::checkerBoardCameraCalibration().
bool mrpt::vision::checkerBoardCameraCalibration | ( | TCalibrationImageList & | images, |
unsigned int | check_size_x, | ||
unsigned int | check_size_y, | ||
double | check_squares_length_X_meters, | ||
double | check_squares_length_Y_meters, | ||
mrpt::math::CMatrixDouble33 & | intrinsicParams, | ||
std::vector< double > & | distortionParams, | ||
bool | normalize_image = true , |
||
double * | out_MSE = nullptr , |
||
bool | skipDrawDetectedImgs = false , |
||
bool | useScaramuzzaAlternativeDetector = false |
||
) |
Definition at line 31 of file checkerboard_cam_calib.cpp.
References check_size_x, check_size_y, check_squares_length_X_meters, check_squares_length_Y_meters, mrpt::vision::checkerBoardCameraCalibration(), mrpt::img::TCamera::getDistortionParamsAsVector(), images, and mrpt::img::TCamera::intrinsicParams.
bool mrpt::vision::checkerBoardStereoCalibration | ( | TCalibrationStereoImageList & | images, |
const TStereoCalibParams & | params, | ||
TStereoCalibResults & | out_results | ||
) |
Optimize the calibration parameters of a stereo camera or a RGB+D (Kinect) camera.
This computes the projection and distortion parameters of each camera, and their relative spatial pose, from a sequence of pairs of captured images of a checkerboard. A custom implementation of an optimizer (Levenberg-Marquartd) seeks for the set of selected parameters to estimate that minimize the reprojection errors.
input_images | [IN/OUT] At input, this list must have one entry for each image to process. At output the original, detected checkboard and rectified images can be found here. See TImageCalibData. |
params | [IN] Mandatory: the user must provide the size of the checkerboard, which parameters to optimize and which to leave fixed to zero, etc. |
out_results | [OUT] The results of the calibration, and its uncertainty measure, will be found here upon return. |
Definition at line 44 of file chessboard_stereo_camera_calib.cpp.
References mrpt::vision::add_lm_increment(), mrpt::math::MatrixVectorBase< Scalar, Derived >::array(), mrpt::math::CVectorDynamic< T >::asEigen(), mrpt::math::CMatrixDynamic< T >::asEigen(), ASSERT_, ASSERT_EQUAL_, mrpt::vision::build_linear_system(), mrpt::vision::TImageStereoCallbackData::calibRound, mrpt::vision::TStereoCalibParams::callback, mrpt::vision::TStereoCalibParams::callback_user_param, mrpt::vision::TStereoCalibResults::cam_params, mrpt::vision::TStereoCalibParams::check_size_x, mrpt::vision::TStereoCalibParams::check_size_y, mrpt::vision::TStereoCalibParams::check_squares_length_X_meters, mrpt::vision::TStereoCalibParams::check_squares_length_Y_meters, mrpt::img::CImage::colorImage(), mrpt::math::CMatrixDynamic< T >::cols(), mrpt::vision::TImageStereoCallbackData::current_iter, mrpt::vision::TImageStereoCallbackData::current_rmse, mrpt::img::TCamera::cx(), mrpt::img::TCamera::cy(), mrpt::vision::TImageCalibData::detected_corners, mrpt::img::CImage::drawChessboardCorners(), eps, mrpt::img::FAST_REF_OR_CONVERT_TO_GRAY, mrpt::vision::TStereoCalibResults::final_iters, mrpt::vision::TStereoCalibResults::final_number_good_image_pairs, mrpt::vision::TStereoCalibResults::final_rmse, mrpt::vision::findChessboardCorners(), mrpt::format(), mrpt::img::TCamera::fx(), mrpt::img::TCamera::fy(), mrpt::img::CImage::getHeight(), mrpt::img::CImage::getSize(), mrpt::img::CImage::getWidth(), mrpt::vision::TStereoCalibResults::image_pair_was_used, images, mrpt::vision::TImageCalibData::img_checkboard, mrpt::vision::TImageCalibData::img_original, mrpt::vision::TImageCalibData::img_rectified, mrpt::img::CImage::isExternallyStored(), mrpt::img::TCamera::k1(), mrpt::img::TCamera::k2(), mrpt::img::TCamera::k3(), mrpt::vision::lm_stat_t::left_cam_params, mrpt::vision::lm_stat_t::left_cam_poses, mrpt::vision::TStereoCalibResults::left_cam_poses, mrpt::vision::TStereoCalibResults::left_params_inv_variance, mrpt::img::TStereoCamera::leftCamera, mrpt::vision::TStereoCalibParams::maxIters, mrpt::img::TCamera::ncols, mrpt::vision::TImageStereoCallbackData::nImgsProcessed, mrpt::vision::TImageStereoCallbackData::nImgsToProcess, mrpt::vision::TStereoCalibParams::normalize_image, mrpt::img::TCamera::nrows, mrpt::vision::TStereoCalibParams::optimize_k1, mrpt::vision::TStereoCalibParams::optimize_k2, mrpt::vision::TStereoCalibParams::optimize_k3, mrpt::vision::TStereoCalibParams::optimize_t1, mrpt::vision::TStereoCalibParams::optimize_t2, out, mrpt::img::TCamera::p1(), mrpt::img::TCamera::p2(), mrpt::vision::TImageCalibData::projectedPoints_distorted, mrpt::vision::pinhole::projectPoints_with_distortion(), mrpt::math::TPose3DQuat::qr, mrpt::math::TPose3DQuat::qx, mrpt::math::TPose3DQuat::qy, mrpt::math::TPose3DQuat::qz, mrpt::math::CQuaternion< T >::r(), mrpt::vision::recompute_errors_and_Jacobians(), mrpt::vision::TImageCalibData::reconstructed_camera_pose, mrpt::vision::TStereoCalibResults::right2left_camera_pose, mrpt::vision::lm_stat_t::right2left_pose, mrpt::vision::lm_stat_t::right_cam_params, mrpt::vision::TStereoCalibResults::right_params_inv_variance, mrpt::img::TStereoCamera::rightCamera, mrpt::img::TStereoCamera::rightCameraPose, mrpt::vision::TStereoCalibParams::robust_kernel_param, mrpt::vision::lm_stat_t::swap(), mrpt::vision::TStereoCalibParams::use_robust_kernel, mrpt::vision::TStereoCalibParams::verbose, mrpt::img::TPixelCoordf::x, mrpt::math::TPose3DQuat::x, mrpt::img::TPixelCoord::x, mrpt::math::CQuaternion< T >::x(), mrpt::img::TPixelCoordf::y, mrpt::math::TPose3DQuat::y, mrpt::img::TPixelCoord::y, mrpt::math::CQuaternion< T >::y(), mrpt::math::TPose3DQuat::z, and mrpt::math::CQuaternion< T >::z().
bool mrpt::vision::findChessboardCorners | ( | const mrpt::img::CImage & | in_img, |
std::vector< mrpt::img::TPixelCoordf > & | cornerCoords, | ||
unsigned int | check_size_x, | ||
unsigned int | check_size_y, | ||
bool | normalize_image = true , |
||
bool | useScaramuzzaMethod = false |
||
) |
Look for the corners of a chessboard in the image using one of two different methods.
Look for the corners of a chessboard in the image.
The search algorithm will be OpenCV's function cvFindChessboardCorners or its improved version published by M. Rufli, D. Scaramuzza, and R. Siegwart. See: http://robotics.ethz.ch/~scaramuzza/Davide_Scaramuzza_files/Research/OcamCalib_Tutorial.htm and the papers:
After detecting the corners with either method, it's called "cvFindCornerSubPix" to achieve subpixel accuracy.
cornerCoords | [OUT] The pixel coordinates of all the corners. |
check_size_x | [IN] The number of squares, in the X direction |
check_size_y | [IN] The number of squares, in the Y direction |
normalize_image | [IN] Whether to normalize the image before detection |
useScaramuzzaMethod | [IN] Whether to use the alternative, more robust method by M. Rufli, D. Scaramuzza, and R. Siegwart. |
cornerCoords | [OUT] The pixel coordinates of all the corners. |
check_size_x | [IN] The number of squares, in the X direction |
check_size_y | [IN] The number of squares, in the Y direction |
normalize_image | [IN] Whether to normalize the image before detection |
useScaramuzzaMethod | [IN] Whether to use the alternative, more robust method by M. Rufli, D. Scaramuzza, and R. Siegwart. |
Definition at line 35 of file checkerboard_find_corners.cpp.
References mrpt::img::CImage::asCvMat(), ASSERT_, check_size_x, check_size_y, cvFindChessboardCorners3(), mrpt::img::FAST_REF_OR_CONVERT_TO_GRAY, MRPT_END, MRPT_START, and mrpt::img::SHALLOW_COPY.
Referenced by mrpt::vision::checkerBoardStereoCalibration().
void mrpt::vision::findMultipleChessboardsCorners | ( | const mrpt::img::CImage & | in_img, |
std::vector< std::vector< mrpt::img::TPixelCoordf >> & | cornerCoords, | ||
unsigned int | check_size_x, | ||
unsigned int | check_size_y | ||
) |
Look for the corners of one or more chessboard/checkerboards in the image.
This method uses an improved version of OpenCV's cvFindChessboardCorners published by M. Rufli, D. Scaramuzza, and R. Siegwart. See: http://robotics.ethz.ch/~scaramuzza/Davide_Scaramuzza_files/Research/OcamCalib_Tutorial.htm and the papers:
That method has been extended in this MRPT implementation to automatically detect a number of different checkerboards in the same image.
cornerCoords | [OUT] A vector of N vectors of pixel coordinates, for each of the N chessboards detected. |
check_size_x | [IN] The number of squares, in the X direction |
check_size_y | [IN] The number of squares, in the Y direction |
This method uses an improved version of OpenCV's cvFindChessboardCorners published by M. Rufli, D. Scaramuzza, and R. Siegwart. That method has been extended in this MRPT implementation to automatically detect a number of different checkerboards in the same image.
cornerCoords | [OUT] A vector of N vectors of pixel coordinates, for each of the N chessboards detected. |
check_size_x | [IN] The number of squares, in the X direction |
check_size_y | [IN] The number of squares, in the Y direction |
Definition at line 133 of file checkerboard_find_corners.cpp.
References mrpt::img::CImage::asCvMat(), ASSERT_, mrpt::containers::begin(), check_size_x, check_size_y, mrpt::math::crossProduct3D(), mrpt::img::FAST_REF_OR_CONVERT_TO_GRAY, find_chessboard_corners_multiple(), mrpt::img::SHALLOW_COPY, mrpt::math::size(), and mrpt::math::TPoint2D_data< T >::x.
Page generated by Doxygen 1.8.14 for MRPT 2.0.4 Git: 33de1d0ad Sat Jun 20 11:02:42 2020 +0200 at sáb jun 20 17:35:17 CEST 2020 |