绪:
OpenCV相机标定采用张正友标定法,
以棋盘格为东西,
以棋盘角点图像像素坐标和棋盘角点宿世界坐标系坐标为输入,
输出相机的内参、外参 。
本经验本家儿要介绍:
(1)棋盘角点图像像素坐标系坐标;
(2)棋盘角点宿世界坐标系坐标;
(3)相机标定;
(4)相机标定成果评价;
(5)图像畸变矫正;
(6)标定法式;
文章插图
需要这些哦
OpenCV2410
方式/
1棋盘角点图像像素坐标
如下:
①提取棋盘格图像内角点-粗角点坐标;
③对粗角点坐标进行亚像素角点提取;
④在棋盘标定图上绘制找到的亚像素内角点(仅显示内角点);
①棋盘格内角点提取函数findChessboardCorners:
bool findChessboardCorners( InputArray image,
Size patternSize, //内角点行列数
OutputArray corners,
int flags=CALIB_CB_ADAPTIVE_THRESH+CALIB_CB_NORMALIZE_IMAGE);
第一个参数image, 是8位灰度、彩色图像;
第二个参数patternSize, 每个棋盘图上内角点的行列数, 一般环境下, 行列数不要不异, 便于后续标定法式识别标定板的偏向;
第三个参数corners, 用于存储检测到的内角点图像坐标位置, 一般用元素是Point2f的标的目的量来暗示:vector<Point2f> image_points_buf;
第四个参数flags:用于界说棋盘图上内角点查找的分歧处置体例, 有默认值 。
②提取亚像素角点信息:
为了提高标定精度, 在提取的角点信息长进一步提取亚像素信息, 降低相机标定误差;
两种方式;一种方式cornerSubPix;另一种方式find4QuadCornerSubpix函数;
void cornerSubPix( InputArray image,
InputOutputArray corners,
Size winSize,
Size zeroZone,
TermCriteria criteria );
第一个参数image, 是8位灰度图像;
第二个参数corners, 输入初始的角点坐标标的目的量, 输出亚像素坐标位置, 浮点型数据, 一般用元素是Pointf2f/Point2d的标的目的量来暗示:vector<Point2f/Point2d> imagePointsBuf;
第三个参数winSize, 大小为搜刮窗口的一半;
第四个参数zeroZone, 死区的一半尺寸, 死区为不合错误搜刮区的中心位置做乞降运算的区域 。 它是用来避免自相关矩阵呈现某些可能的奇异性 。 当值为(-1, -1)时暗示没有死区;
第五个参数criteria, 迭代过程的终止前提, 可觉得迭代次数和角点精度两者的组合;
bool find4QuadCornerSubpix(InputArray img,
InputOutputArray corners,
Size region_size);
第一个参数img, 是8位灰度图像;
第二个参数corners, 输入初始的角点坐标标的目的量, 输出亚像素坐标位置, 浮点型数据, 一般用元素是Pointf2f/Point2d的标的目的量来暗示:vector<Point2f/Point2d> imagePointsBuf;
第三个参数region_size, 角点搜刮窗口的尺寸;
对比cornerSubPix和find4QuadCornerSubpix:
在标定图上别离运行cornerSubPix和find4QuadCornerSubpix寻找亚像素角点,
两者定位到的亚像素角点坐标别离为:
固然两者有必然差距, 但误差根基都节制在0.5个像素之内 。
③在图像上绘制内角点drawChessboardCorners用于绘制被当作功标定的角点
推荐阅读
- 佳能单反相机的拍摄技巧,初级入门摄影知识
- 相机三脚架的使用方法
- 小米手机相机魔镜功能怎么用
- vivo相机怎么设置微信视频聊天美颜
- 如何用数码相机拍出高反差的黑白照片
- 魅族手机怎么使用自带相机美颜
- 华为手机相机怎么样打开专业相机和设置参数
- 单反相机怎么测光
- 请在iPhone的设置选项中允许访问你的相机
- 华为荣耀9X手机的相机怎么样打开笑脸抓拍功能