[1]Loitor VI Sensor 可以通过 ROS 自自带的双目相机标定工工具 cameracalibrator.py 来标定相机内参,详细过程http://wiki.ros.org/camera_calibration/Tutorials/StereoCalibration

[2]  下载源码:  https://github.com/loitor-vis

准备工作:

  • 已知尺寸的大棋盘(8x6)棋盘(7x6) 。 (我选用的是一个7x7棋盘与250mm正方形 )

  • 明亮的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.htmlimage_geometry

[3]如果对校准感到满意,请单击提交 (在上面的图片上是按钮具有旧名称UPLOAD ),以将校准参数发送到相机进行永久存储。

如果要保存校准中使用的校准参数和图像,请单击“ 保存” 。 一切都将在压缩文件夹/如果您对校准感到满意,请单击提交 (在上面的图片上是按钮具有旧名称UPLOAD ),以将校准参数发送到相机进行永久存储。

如果要保存校准中使用的校准参数和图像,请单击“ 保存” 。 一切都将在压缩文件夹/tmp/calibrationdata.tar.gz中提供。

Loitor_产品(二)校准立体摄像机的更多相关文章

  1. 用友yonsuite产品二开之简单的yonsql查询小工具

    和以往的用友产品不同,yonsuite产品开发了低代码平台,满足客户的个性化开发需求.嗯~,一句话不知当讲不当讲,那就讲:所谓低代码平台就是开发不想用实施不会用系列.让我一个开发感受到了憋屈.

  2. Loitor_产品(一)

    源码:https://github.com/loitor-vis/vi_sensor_sdk 注意:以下要一直在管理员权限 1.C++ 示例程序的编译步骤 先确认你的系统已经成功安装了OpenCV. ...

  3. opencv 61篇

    (一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报  分类: OpenCV ...

  4. TOF摄像机可以替代Flash激光雷达吗?

    TOF摄像机可以替代Flash激光雷达吗? 一.基于ToF技术的Flash激光雷达 基本成像原理上ToF Camera与LiDAR相同,都采用飞行时间测距技术(包括利用APD或SPAD的直接测距法,和 ...

  5. OpenCV读写视频文件解析(二)

    OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++:bool VideoCapture::set(int propId, double value) ...

  6. 好推二维码如何通过应用宝微下载支持微信自动打开APP下载?

    好推二维码 官网 http://www.hotapp.cn 1. 为什么使用应用宝微下载? APP下载二维码,通过微信扫描下载的时候,微信目前只支持应用宝微下载,才能在微信里直接打开下载,否则就需要在 ...

  7. 产品列表页分类筛选、排序的算法实现(PHP)

    一.简单的单条件查询 工作都是从简单的开始,先从最简单的单表查询开始,这个一般用在首页以及一些比较独立的页面,只需要查找几个符合条件的产品展示出来即可,可以使用分页或者不使用分页.下面这个是产品控制器 ...

  8. 新手立体四子棋AI教程(1)——基础扫盲

    一.引言 最近身边好几个朋友开始玩立体四子棋,激起了我的好奇心.那么首先来说什么是[立体四子棋],规则又是如何呢? 上图即为立体四子棋,规则类似于五子棋四子连在一起,但是四子棋更加多样.丰富.不仅可以 ...

  9. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之二 || 后端项目搭建

    前言 至于为什么要搭建.Net Core 平台,这个网上的解释以及铺天盖地,想了想,还是感觉重要的一点,跨平台,嗯!没错,而且比.Net 更容易搭建,速度也更快,所有的包均有Nuget提供,不再像以前 ...

随机推荐

  1. Linux命令详解-用户管理

    1. 用户管理 1.Linux用户管理 linux有三类用户: (1.)超级用户 : root用户具有操作系统的一切权限 uid=0 (2.)普通用户: 具有操作系统有限的权限  uid=500-60 ...

  2. idea配置(卡顿、开发环境等配置),code style template

    Tomcat配置VM Options:    -XX:PermSize=512m -XX:MaxPermSize=1024m 1.IDEA卡顿,修改IDEA使用内存 修改idea配置文件 在IDEA的 ...

  3. metaq架构原理

      原创文章,转载请注明出处:http://jameswxx.iteye.com/blog/2034111 本来只是想看下metaq的文档,结果发现好乱,现在metaq其实有两个大分支了,一个是庄晓丹 ...

  4. selenium+python自动化95-弹出框死活定位不到

    前言 部分小伙伴学了selenium的alert后,就不管啥弹出框都去用alert,这是行不通的,看到弹出框,先要确定是不是alert,是才能用,不是的话肯定不能用. 有些弹出框是div层,这种跟平常 ...

  5. 模拟Vue之数据驱动1

    一.前言 Vue有一核心就是数据驱动(Data Driven),允许我们采用简洁的模板语法来声明式的将数据渲染进DOM,且数据与DOM是绑定在一起的,这样当我们改变Vue实例的数据时,对应的DOM元素 ...

  6. mysql 修改用户密码

    修改mysql用户密码   目录 mysqladmin命令 UPDATE user 语句 SET PASSWORD 语句 root密码丢失的情况(待验证) mysqladmin命令(回目录) 格式如下 ...

  7. 在linux中运行main方法所在的java类(亲测有效!!!)

    本人是用SecureCRTPortable连接linux终端的.其他工具连接linux终端应该是一样的操作! 一.首先到移动到java工程所在的bin目录. 二.在bin目录下执行javac -cp ...

  8. Django模型的filed type总结

    1)AutoField:如果没有指明主键,就会产生一个自增的主键 2)BigIntegerField:64位的整形数值,从 -2^63 (-9223372036854775808) 到 2^63-1( ...

  9. javascript事件之鼠标滚轮(mousewheel)和DOMMouseScroll事件

    javascript事件之鼠标滚轮(mousewheel)和DOMMouseScroll事件 发布时间:2015-02-07   编辑:www.jquerycn.cn 本文学习下,javascript ...

  10. python中带下划线的变量和函数的意义

    表示私有属性,只能在自己的实例方法里面访问. self.__name会被编译成self._Bar__name以达到“不被外部访问”的效果 示例如下: 变量: 1.  前带_的变量:  标明是一个私有变 ...