唐山丰南建设局网站,南京网络科技公司,怎么做属于自己的网站,企业的oa管理系统相机标定 文章目录 相机标定1 ROS标定1.1安装标定程序1.2 下载标定板1.3 标定1.4 标定结果 2 Kalibr相机标定2.1 下载官方提供的标定板2.2 自定义标定板2.3 cam数据录制2.4 标定2.5 输出结果 3 MATLAB标定3.1 打开工具3.2 添加标定板图片3.3 设置标定参数3.4 生成标定结果3.5 标…相机标定 文章目录 相机标定1 ROS标定1.1安装标定程序1.2 下载标定板1.3 标定1.4 标定结果 2 Kalibr相机标定2.1 下载官方提供的标定板2.2 自定义标定板2.3 cam数据录制2.4 标定2.5 输出结果 3 MATLAB标定3.1 打开工具3.2 添加标定板图片3.3 设置标定参数3.4 生成标定结果3.5 标定结果 1 ROS标定
这里使用了OpenCV camera calibration
1.1安装标定程序
sudo apt install ros-$ROS_DISTRO-camera-calibration# https://github.com/ros-perception/image_pipeline/tree/melodic源码安装 选择对应的ROS版本新建一个工作空间把camera-calibration拖进去编译即可。 1.2 下载标定板
可以自己生成生成标定板网站也可以直接用这个
1.3 标定
打开相机标定节点并指定话题
rosrun camera_calibration cameracalibrator.py --size 9x6 --square 0.02 image:/camera2/camera/color/image_raw–size 9x6 表示棋盘格按照角点两个黑色块相接的地方为9列6行 –square 0.02 表示每个黑白块的边长为2cm image:/camera/rgb/image_raw 设置接收的rgb图像话题 更多参数参考http://wiki.ros.org/camera_calibration calibration file应该类似如下
image_width: 640
image_height: 480
# The camera name is fixed. The color camera is rgb_camera, the depth/IR camera name is ir_camera
camera_name: rgb_camera
camera_matrix:rows: 3cols: 3data: [517.301, 0, 326.785, 0, 519.291, 244.563, 0, 0, 1]
distortion_model: plumb_bob
distortion_coefficients:rows: 1cols: 5data: [-0.41527, 0.31874, -0.00197, 0.00071, 0]
rectification_matrix:rows: 3cols: 3data: [0.999973, 0.00612598, -0.00406652, -0.00610201, 0.999964, 0.00588094, 0.0041024, -0.00585596, 0.999974 ]
projection_matrix:rows: 3cols: 4data: [517.301, 0, 326.785, -25.3167, 0, 519.291, 244.563, 0.282065, 0, 0, 1, 0.0777703]1.4 标定结果
生成压缩包/tmp/calibrationdata.tar.gz其中的 ost.yaml就是标定结果。
[image]width:800height:600[narrow_stereo]camera matrix
375.192406 0.000000 400.541492
0.000000 376.253860 317.513124
0.000000 0.000000 1.000000distortion
0.131676 -0.094047 0.004399 -0.004491 0.000000rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000projection
786.365845 0.000000 -8.585413 0.000000
0.000000 862.199036 -9.969647 0.000000
0.000000 0.000000 1.000000 0.0000002 Kalibr相机标定
Kalibr安装参考官网下载好依赖即可安装过程可能会出现内存不足情况且编译时间很久。
2.1 下载官方提供的标定板
标定板下载–Aprilgrid 6x6 0.8x0.8 m (A0 page)
标定前, 注意测量格子的尺寸信息填入yaml文件 target_type: aprilgrid #gridtype
tagCols: 6 #number of apriltags---6列
tagRows: 6 #number of apriltags---6行
tagSize: 0.088 # size of apriltag, edge to edge [m]--a
tagSpacing: 0.3 #ratio of space between tags to tagSize--a/b
codeOffset: 0 #code offset for the first tag in the aprilboard2.2 自定义标定板 可以使用下面命令自定义一个Aprilgrid标定板前提安装好kalibr rosrun kalibr kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT]报错kalibr_create_target_pdf: command not found因为执行ROS命令没有加rosrun kalibr # 这样子实际大小在一张A4左右
rosrun kalibr kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.025 --tspace 0.3参考
2.3 cam数据录制
将ros topic的频率降低到4hz左右进行采集
ROS 提供了改变 topic 发布频率的节点throttle, 指令如下
# 使用方法rosrun topic_tools throttle messages intopic msgs_per_sec [outtopic]rosrun topic_tools throttle messages /mynteye/left/image_raw 4.0 /leftrosrun topic_tools throttle messages /mynteye/right/image_raw 4.0 /right 录制数据 rosbag record -O stereo_calibra.bag /left /right-2.4 标定
官网给了这个示例可以先跑下这个看看对不对
source ros_ws/kalibr/devel/setup.bash# 径向和切向畸变
rosrun kalibr kalibr_calibrate_cameras --bag stereo_calibra.bag --topics /left /right --models pinhole-radtan pinhole-radtan --target april_6x6_80x80cm_A0.yaml# 或者采用 pinhole-equi 模型对畸变大的相机效果不错----全景畸变
rosrun kalibr kalibr_calibrate_cameras --bag stereo_calibra.bag --topics /left /right --models pinhole-equi pinhole-equi --target april_6x6_80x80cm_A0.yaml
该工具必须提供以下输入
–bag filename.bag 包含数据的 ROS 包–topics TOPIC_0 … TOPIC_N 包中所有相机主题的列表。匹配 --models 的顺序–models MODEL_0 … MODEL_N 要安装的相机/畸变模型列表。与 --topics 的顺序匹配请参阅支持的型号–target target.yaml 校准目标配置请参阅校准目标
关于支持的相机型号模型 Kalibr支持以下投影模型 pinhole camera model (pinhole)1-针孔相机模型 (intrinsics vector: [fu fv pu pv])omnidirectional camera model (omni)2-全向相机模型 (intrinsics vector: [xi fu fv pu pv])double sphere camera model (ds)3 (intrinsics vector: [xi alpha fu fv pu pv])extended unified camera model (eucm)4 (intrinsics vector: [alpha beta fu fv pu pv])
The intrinsics vector contains all parameters for the model:
fu, fv: focal-length焦距pu, pv: principal point主点xi: mirror parameter (only omni)镜像参数xi, alpha: double sphere model parameters (only ds)双球模型参数alpha, beta: extended unified model parameters (only eucm) Distortion models畸变模型 radial-tangential (radtan)*-径向切向畸变 (distortion_coeffs: [k1 k2 r1 r2])equidistant (equi)** (distortion_coeffs: [k1 k2 k3 k4])fov (fov)5 (distortion_coeffs: [w])none (none) (distortion_coeffs: [])
请注意主题 (–topics) 和相机/畸变模型 (–model) 的顺序必须匹配并确定输出中的内部相机编号。
可以使用以下方式运行校准
kalibr_calibrate_cameras --bag [filename.bag] --topics [TOPIC_0 ... TOPIC_N] --models [MODEL_0 ... MODEL_N] --target [target.yaml]由于对焦距的初始猜测错误在处理前几张图像后优化可能会出现偏差。在这种情况下只需尝试重新启动校准因为初始猜测是基于随机选择的图像。
使用 help 参数可以获得有关选项的更多信息
kalibr_calibrate_cameras --h示例包文件的示例命令在此处下载
# 就是要给出配置文件yaml和bag的路径
rosrun kalibr kalibr_calibrate_cameras \--target april_6x6.yaml \--models pinhole-radtan pinhole-radtan \--topics /cam0/image_raw /cam1/image_raw \--bag cam_april.bag \--bag-freq 10.02.5 输出结果
大车没电了下次补下
3 MATLAB标定
参考
3.1 打开工具 命令行窗口输入 cameraCalibrator 或在APP中找到图像处理和计算机视觉点击Camera Calibrator 3.2 添加标定板图片
若标定图为棋盘格 更改参数因为这里是20mm的标定板 3.3 设置标定参数
CAMERA MODEL 栏中 Camera Model选择 Standard Options 选择 2 Coefficients3 Coefficients 一般用于鱼眼相机工业相机一般不选择此项 勾选 Tangential Distortion用以计算切向畸变 不勾选 Skew若勾选标定相机内参结果将出现参数 s 即内参的第一行是 [fx, s, u0] 这将会与我们使用的 OpenCV 进行测距的参数不同
然后点击校准 3.4 生成标定结果
拖拽红线让误差尽可能小抛弃哪些大于红线的图像 最后输出标定结果 3.5 标定结果 Camera Intrinsics # 相机内参IntrinsicMatrix: [3×3 double]焦距 FocalLength: [fx、fy] PrincipalPoint: [cx、cy] Skew: 0 # 倾斜系数描述了图像的x轴和y轴之间的角度偏差一般情况下为0RadialDistortion: [k1、k2] #径向畸变参数TangentialDistortion: [p1、p2] # 切向畸变参数ImageSize: [600 800]Camera Extrinsics # 相机外参RotationMatrices: [3×3×52 double]TranslationVectors: [52×3 double]Accuracy of EstimationMeanReprojectionError: xxx # 平均重投影误差 最终校准结果 Camera IntrinsicsIntrinsicMatrix: [3×3 double]FocalLength: [371.4645 372.0877]PrincipalPoint: [402.1875 313.9287]Skew: 0RadialDistortion: [0.1160 -0.0816]TangentialDistortion: [0.0026 -0.0053]ImageSize: [600 800]Camera ExtrinsicsRotationMatrices: [3×3×19 double]TranslationVectors: [19×3 double]Accuracy of EstimationMeanReprojectionError: 0.1345ReprojectionErrors: [54×2×19 double]ReprojectedPoints: [54×2×19 double]Calibration SettingsNumPatterns: 19WorldPoints: [54×2 double]WorldUnits: millimetersEstimateSkew: 0NumRadialDistortionCoefficients: 2EstimateTangentialDistortion: 1
estimationErrors cameraCalibrationErrors - 属性:IntrinsicsErrors: [1×1 intrinsicsEstimationErrors]ExtrinsicsErrors: [1×1 extrinsicsEstimationErrors]