Loitor_产品(二)校准立体摄像机
[1]Loitor VI Sensor 可以通过 ROS 自自带的双目相机标定工工具 cameracalibrator.py 来标定相机内参,详细过程http://wiki.ros.org/camera_calibration/Tutorials/StereoCalibration
[2] 下载源码: https://github.com/loitor-vis
准备工作:
- 明亮的5米x 5米区域无障碍物和检查板图案
- 一个立体相机通过ROS发布左右图像(如果要使用两个独立的相机作为立体相机,必须确保图像具有相同的时间戳)
注意 :棋盘大小指的是内部角的数量。
1.安装标定工工具(首先获取依赖关系并编译驱动程序。)
$ rosdep install camera_calibration
$ rosmake camera_calibration
2. 启动VI-Sensor的ROS驱动程序
参考http://www.cnblogs.com/Jessica-jie/p/6582720.html中的 [2.ROS Package的编译]
[3.ROS Package的启动]
3.Camera Publishing
确保您的立体相机正在通过ROS发布左图像和右图像。 让我们列出要检查图像是否已发布的主题:
$ rostopic list
这将显示所有发布的主题,检查是否有一个左右image_raw主题:
wj@wj-Inspiron-5437:~$ rostopic list
/camera/left/image_raw
/camera/left/image_raw/compressed
/camera/left/image_raw/compressed/parameter_descriptions
/camera/left/image_raw/compressed/parameter_updates
/camera/left/image_raw/compressedDepth
/camera/left/image_raw/compressedDepth/parameter_descriptions
/camera/left/image_raw/compressedDepth/parameter_updates
/camera/left/image_raw/theora
/camera/left/image_raw/theora/parameter_descriptions
/camera/left/image_raw/theora/parameter_updates
/camera/right/image_raw
/camera/right/image_raw/compressed
/camera/right/image_raw/compressed/parameter_descriptions
/camera/right/image_raw/compressed/parameter_updates
/camera/right/image_raw/compressedDepth
/camera/right/image_raw/compressedDepth/parameter_descriptions
/camera/right/image_raw/compressedDepth/parameter_updates
/camera/right/image_raw/theora
/camera/right/image_raw/theora/parameter_descriptions
/camera/right/image_raw/theora/parameter_updates
/image
/imu0
/rosout
/rosout_agg
4.Running the Calibration Node运行校准节点
要开始校准,需要加载要校准的图像主题,输入以下命令:
(如果使用多个棋盘,请为其他棋盘提供多个--size和--square选项)
下面红色部分需要自己修改,将标定棋盘的单元格大大小小转化为单位米。
wj@wj-Inspiron-5437:~$ cd workspace/catkin_ws
wj@wj-Inspiron-5437:~/workspace/catkin_ws$ sudo -s
[sudo] password for wj:
root@wj-Inspiron-5437:~/workspace/catkin_ws# source devel/setup.sh
root@wj-Inspiron-5437:~/workspace/catkin_ws# rosrun camera_calibration cameracalibrator.py --size 7x7 --square 0.025 --no-service-check --approximate=0.1 right:=/camera/right/image_raw left:=/camera/left/image_raw right_camera:=/camera/right left_camera:=/camera/left
命令会打开校准窗口,要突出显示棋盘。(在棋盘存在之前,您将不会在校准窗口中看到任何图像):
注意事项:
1.拿着棋盘:确保水平地保持棋盘(更多的棋子水平而不是垂直)。
2.移动棋盘:为了获得良好的校准,您需要在相机框架中移动棋盘使得:
- 在视场的左右边缘检测棋盘(X校准)
- 在视场的顶部和底部边缘检测棋盘(Y校准)
- 以相对于照相机的各种角度检测棋盘(“倾斜”)
- 棋盘填充整个视野(尺寸校准)
- 棋盘格向左,右,上和下倾斜(X,Y和尺寸校准)
5. 判断标定数据已经采集完成
当您移动周围的棋盘时,会看到校准侧边栏上的三个条形的长度增加。
当"CALIBRATE"按钮亮起时,就意味着采集完成。
终端中的显示:
6.校准结果
采集完成后,可以进行行内参计算。点击一次CALIBRATE按钮,等待1分钟左右就会出现标定结果:
校准完成后,您将在终端中看到校准结果,并在校准窗口中看到校准的图像。
侧边栏将显示棋盘方块的测量精度和尺寸,在上述情况下,棋盘方块为111mm,精度为0.31像素。
成功的校准将导致真实世界的直边在校正的图像中直线出现。
校准失败通常会导致空白或无法识别的图像,或者不保存直边的图像。
通常,低于0.25像素的极线误差被认为是可接受的,并且低于0.1极好。
还可以使用校准窗口顶部的滑块更改校正图像的大小,如下所示。 尺度为0.0意味着图像的大小被设置为使得整形图像中的所有像素都是有效的。 整形图像没有边界,但是丢弃了来自原始图像的一些像素。 1.0的标度意味着原始图像中的所有像素都是可见的,但是校正后的图像具有黑色边界,其中原始图像中没有输入像素。 推荐的滑块值为0.0。
7.后续处理
[1]此时的标定GUI界面面会显示示实时畸变矫正之后的图像,您可以根据显示示图像的矫正效果来评
估当前标定参数的准确性(如果矫正效果不满意可以重新标定)。
[2]有关立体相机模型的更多详细信息(包括这些结果的解释),请参见http://opencv.willowgarage.com/documentation/python/camera_calibration_and_3d_reconstruction.html和image_geometry 。
[3]如果对校准感到满意,请单击提交 (在上面的图片上是按钮具有旧名称UPLOAD ),以将校准参数发送到相机进行永久存储。
如果要保存校准中使用的校准参数和图像,请单击“ 保存” 。 一切都将在压缩文件夹/如果您对校准感到满意,请单击提交 (在上面的图片上是按钮具有旧名称UPLOAD ),以将校准参数发送到相机进行永久存储。
如果要保存校准中使用的校准参数和图像,请单击“ 保存” 。 一切都将在压缩文件夹/tmp/calibrationdata.tar.gz中提供。
Loitor_产品(二)校准立体摄像机的更多相关文章
- 用友yonsuite产品二开之简单的yonsql查询小工具
和以往的用友产品不同,yonsuite产品开发了低代码平台,满足客户的个性化开发需求.嗯~,一句话不知当讲不当讲,那就讲:所谓低代码平台就是开发不想用实施不会用系列.让我一个开发感受到了憋屈.
- Loitor_产品(一)
源码:https://github.com/loitor-vis/vi_sensor_sdk 注意:以下要一直在管理员权限 1.C++ 示例程序的编译步骤 先确认你的系统已经成功安装了OpenCV. ...
- opencv 61篇
(一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报 分类: OpenCV ...
- TOF摄像机可以替代Flash激光雷达吗?
TOF摄像机可以替代Flash激光雷达吗? 一.基于ToF技术的Flash激光雷达 基本成像原理上ToF Camera与LiDAR相同,都采用飞行时间测距技术(包括利用APD或SPAD的直接测距法,和 ...
- OpenCV读写视频文件解析(二)
OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++:bool VideoCapture::set(int propId, double value) ...
- 好推二维码如何通过应用宝微下载支持微信自动打开APP下载?
好推二维码 官网 http://www.hotapp.cn 1. 为什么使用应用宝微下载? APP下载二维码,通过微信扫描下载的时候,微信目前只支持应用宝微下载,才能在微信里直接打开下载,否则就需要在 ...
- 产品列表页分类筛选、排序的算法实现(PHP)
一.简单的单条件查询 工作都是从简单的开始,先从最简单的单表查询开始,这个一般用在首页以及一些比较独立的页面,只需要查找几个符合条件的产品展示出来即可,可以使用分页或者不使用分页.下面这个是产品控制器 ...
- 新手立体四子棋AI教程(1)——基础扫盲
一.引言 最近身边好几个朋友开始玩立体四子棋,激起了我的好奇心.那么首先来说什么是[立体四子棋],规则又是如何呢? 上图即为立体四子棋,规则类似于五子棋四子连在一起,但是四子棋更加多样.丰富.不仅可以 ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之二 || 后端项目搭建
前言 至于为什么要搭建.Net Core 平台,这个网上的解释以及铺天盖地,想了想,还是感觉重要的一点,跨平台,嗯!没错,而且比.Net 更容易搭建,速度也更快,所有的包均有Nuget提供,不再像以前 ...
随机推荐
- JedisCluster模式尝试进行批量操作
搭建完redis集群后,可以通过jedis的JedisCluster来访问Redis集群,这里列出使用jedisCluster的spring bean配置方式: <bean id=" ...
- 【Unix网络编程】chapter2传输层:TCP,UDP和SCTP
2.1 概述 TCP:复杂,可靠的字节流协议 UDP:简单的,不可靠的数据包协议 SCTP:流控制传输协议 2.2 总图 2.3 用户数据报协议2.4 传输控制协议2.5 流控制传输协议(SCTP)2 ...
- 在docker中运行jenkins实现代码自动发布到测试服务器
在docker中运行jenkins 用的镜像是apline版:lts-alpine,并设置正确的时区. docker run --name jenkins_master -d \ -p 8081:80 ...
- 微软SMB 3.0文件共享协议新特性介绍
SMB(*nix平台和Win NT4.0又称CIFS)协议是Windows平台标准文件共享协议.Linux平台通过samba来支持.SMB最新版本v3.0,在v2.0基础上针对WAN和分布式有改进.详 ...
- 原型模式(ProtoType)
用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象. 原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节. .Net 在 system 命名空间中提供了I ...
- 练手THINKPHP5过程和bootstrap3.3.7
1 在GIT上下载了最新版的源码,同时安装composer 用composer更新 git地址https://github.com/top-think/think 2 搭建本地开发环境,开启url重写 ...
- linux 下常用部分命令
关机 (系统的关机.重启以及登出 ) shutdown -h now 关闭系统() init 关闭系统() shutdown -h hours:minutes & 按预定时间关闭系统 shut ...
- linux查看磁盘占用常用的两个命令
1.查看总容量.已使用.未使用容量:df -hl -h:以kb以上单位显示 -l:仅显示本地文件系统 2.查看当前路径下,每个文件/夹占用空间大小:du -sh *
- Mysql 索引优化 - 2
永远小表驱动大表(小数据驱动大数据) in exists区别, SELECT * FROM A WHERE A.id in (SELECT id FORM B) 若A表数据大于B表数据用in SELE ...
- python之内置函数:map ,filter ,reduce总结
map函数: #处理序列中的每个元素,得到的结果是一个'列表',该列表元素个数及位置与原来一样 filter函数: #遍历序列中的每个元素,判断每个元素得到一个布尔值,如果是true,则留下来 peo ...