相机内参标定简单教程
简介
摄像头属于对光学器件要求较高的精密仪器,图像采集过程中可能会鉴于其内部或外部环境某些因素的影响,导致生成物件图像产生畸变,为排除数据源对最后结果产生的误差,必须在图像采集前对摄像头参数进行标定。

标定方法
使用 ROS 自带的 camera_calibration 功能包即可标定摄像头。通过采集的数据可确定空间物件轮廓上某一点的三维几何位置和它在图像中相应点之间的彼此联系,建立摄像机成像的几何模型,获得几何模型的对应参数即是所需要的摄像机参数。
1)安装相机ROS包和依赖,放置在工作空间的src文件夹下编译;
2)启动标定工具箱
启动color彩色相机的标定工具箱:
rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.015 image:=/camera/color/image_raw
启动ir红外线相机的标定工具箱:
rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.015 image:=/camera/ir/image_raw
在启动文件launch中更改calibration_info_url为标定文件的路径
<arg name="ir_info_uri" default="file:///you_ir_camera_calib_path/depth_camera.yaml"/>
<arg name="color_info_uri" default="file:///you_depth_camera_calib_path/rgb_camera.yaml"/>
启动相机节点,这里以Realsense为例:
roslaunch realsense2_camera rs_camera.launch
一般深度相机出厂自带官方标定参数,如RealSenseD415,可通过ROS命令查询相机参数信息:
rostopic echo /camera/color/camera_info
参数含义
D:相机的畸变系数矩阵,大小为1x5
D
=
[
k
1
k
2
t
1
t
2
k
3
]
D=\begin{bmatrix} k1&k2&t1&t2&k3 \end{bmatrix}
D=[k1k2t1t2k3]
其中:
k1、k2、k3 是径向畸变系数(radial distortion coefficients) ;
p1、p2 是切向畸变系数(tangential distortion coefficients)。
K:内参矩阵,大小为3x3
K
=
[
f
x
0
c
x
0
f
y
c
y
0
0
1
]
K=\begin{bmatrix} fx&0&cx\\ 0&fy&cy\\ 0&0&1 \end{bmatrix}
K=
fx000fy0cxcy1
其中:
fx和fy是焦距(focal length)参数;
cx和cy是图像平面原点(principal point)的坐标。
R: 3*3的旋转矩阵,表示相机的旋转姿态,仅对双目相机有效,使左右极线平行。
P: 投影矩阵P=K · [R|T]
P
=
[
f
x
’
0
c
x
’
T
x
0
f
y
’
c
y
’
T
y
0
0
1
0
]
P=\begin{bmatrix} fx’&0&cx’&Tx\\ 0&fy’&cy’&Ty\\ 0&0&1&0 \end{bmatrix}
P=
fx’000fy’0cx’cy’1TxTy0
其中:
左侧的3x3矩阵是矫正图像后的相机内参矩阵;
T是相机平移向量,表示相机位移,在单目相机中Tx = Ty= 0。
通过投影矩阵,可以将三维空间中的点映射到相机图像上,用于图像处理、目标检测等任务中的坐标变换。
2万+

被折叠的 条评论
为什么被折叠?



