【OpenCV】张正友标定法的 OpenCV 实现

本文详细介绍了OpenCV中使用张正友方法进行相机标定的流程,包括cvProjectPoints2的三维点重投影、cvUndistort2的去畸变校正和cvFindExtrinsicCameraParams2的内外参数计算。通过SVD分解和LM迭代优化,实现图像矫正。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看到一篇文章, 把 OpenCV 中实现标定的总体流程, 每个步骤, 调用的每个函数 都讲解清楚了, 直接带路, 张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析(附标定程序和棋盘图).



以下分析, 适用于 OpenCV 3.1.0

  • 以下函数源代码在 imgproc 模块找到

  • 以下函数源代码在 calibration 模块找到 calibration.cpp

    • cvFindExtrinsicCameraParams2
    • cvProjectPoints2

cvProjectPoints2 : 三维点到相平面的重投影

//declaration
/* Projects object points to the view plane using
   the specified extrinsic and intrinsic camera parameters */
CVAPI(void) cvProjectPoints2( const CvMat* object_points, const CvMat* rotation_vector,
                              const CvMat* translation_vector, const CvMat* camera_matrix,
                              const CvMat* distortion_coeffs, CvMat* image_points,
                              CvMat* dpdrot CV_DEFAULT(NULL), CvMat* dpdt CV_DEFAULT(NULL),
                              CvMat* dpdf CV_DEFAULT(NULL), CvMat* dpdc CV_DEFAULT(NULL),
                              CvMat* dpddist CV_DEFAULT(NULL),
                              double aspect_ratio CV_DEFAULT(0));

cvUndistort2 : 去畸变校正

CVAPI(void) cvUndistort2( const CvArr* src, CvArr* dst,
                          const CvMat* camera_matrix,
                          const CvMat* distortion_coeffs,
                          const CvMat* new_camera_matrix CV_DEFAULT(0) );

cvFindExtrinsicCameraParams2 : 已知内参求外参

/* Finds extrinsic camera parameters from
   a few known corresponding point pairs and intrinsic parameters */
CVAPI(void) cvFindExtrinsicCameraParams2( const CvMat* object_points,
                                          const CvMat* image_points,
                                          const CvMat* camera_matrix,
                                          const CvMat* distortion_coeffs,
                                          CvMat* rotation_vector,
                                          CvMat* translation_vector,
                                          int use_extrinsic_guess CV_DEFAULT(0) );
  • 计算原理
  1. 将空间点和图像点齐次化,得到图像点矩阵 m m m 空间点矩阵 M M M
  2. 求取矩阵 M M M的平均值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值