导读:本文共3480字符,通常情况下阅读需要12分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 1. 相机标定根据张正友校正算法,利用棋盘格数据校正对车载相机进行校正,计算其内参矩阵,外参矩阵和畸变系数。标定的流程是:准备棋盘格数据,即用于标定的图片对每一张图片提取角点信息在棋盘上绘制提取到的角点(非必须,只是为了显示结果)利用提取的角点对相机进行标定获取相机的参数信息2.关于相机校正用到的几个API:1、寻找棋盘图中的棋盘角点rect,corners=c... ...
目录
(为您整理了一些要点),点击可以直达。根据张正友校正算法,利用棋盘格数据校正对车载相机进行校正,计算其内参矩阵,外参矩阵和畸变系数。
标定的流程是:
准备棋盘格数据,即用于标定的图片
对每一张图片提取角点信息
在棋盘上绘制提取到的角点(非必须,只是为了显示结果)
利用提取的角点对相机进行标定
获取相机的参数信息
1、寻找棋盘图中的棋盘角点
参数:
Image: 输入的棋盘图,必须是8位的灰度或者彩色图像
Pattern_size:棋盘图中每行每列的角点个数(内角点)。
flags: 用来定义额外的滤波步骤以有助于寻找棋盘角点。所有的变量都可以单独或者以逻辑或的方式组合使用。取值主要有:
CV_CALIB_CB_ADAPTIVE_THRESH :使用自适应阈值(通过平均图像亮度计算得到)将图像转换为黑白图,而不是一个固定的阈值。
CV_CALIB_CB_NORMALIZE_IMAGE :在利用固定阈值或者自适应的阈值进行二值化之前,先使用cvNormalizeHist来均衡化图像亮度。
CV_CALIB_CB_FILTER_QUADS :使用其他的准则(如轮廓面积,周长,方形形状)来去除在轮廓检测阶段检测到的错误方块。
返回:
Corners:检测到的角点
rect: 输出是否找到角点,找到角点返回1,否则返回0
2、检测完角点之后可以将测到的角点绘制在图像上,使用的API是:
参数:
Img: 预绘制检测角点的图像
pattern_size : 预绘制的角点的形状
corners: 角点矩阵
rect: 表示是否所有的棋盘角点被找到,可以设置为findChessboardCorners的返回值
注意:如果发现了所有的角点,那么角点将用不同颜色绘制(每行使用单独的颜色绘制),并且把角点以一定顺序用线连接起来。
3、利用定标的结果计算内外参数
参数:
Object_points:世界坐标系中的点,在使用棋盘的场合,令z的坐标值为0,而x,y坐标用里面来度量,选用英寸单位,那么所有参数计算的结果也是用英寸表示。最简单的方式是定义棋盘的每一个方块为一个单位。
image_points:在图像中寻找到的角点的坐标,包含object_points所提供的所有点
image_size: 图像的大小,以像素为衡量单位
返回:
ret: 返回值
mtx: 相机的内参矩阵,大小为3*3的矩阵
dist: 畸变系数,为5*1大小的矢量
rvecs: 旋转变量
tvecs: 平移变量
2.1 图像去畸变
上一步中得到相机的内参及畸变系数,利用其进行图像的去畸变,最直接的方法就是调用opencv中的函数得到去畸变的图像:
求畸变的API:
参数:
Img: 要进行校正的图像
mtx: 相机的内参
dist: 相机的畸变系数
返回:
dst: 图像校正后的结果