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提供,不再像以前 ...
随机推荐
- dubbo 官方参考手册~备案(防止哪天阿里一生气把dubbo给删除了)
首页 || 下载 || 用户指南 || 开发者指南 || 管理员指南 || 培训文档 || 常见问题解答 || 发布记录 || 发展路线 || 社区 E ...
- cmd命令总结
1.进入d盘 2.命令运行D:\mongodb\bin中的mongod.exe 显示安装成功!(命令行下运行 MongoDB 服务器)
- MongoDB——更新操作(Update)c#实现
c#实现 Mongodb存储[文档局部更新] 如下: 递归更新字段 ,构建UpdateDefinition /// <summary> /// 构建更新操作定义 /// &l ...
- 图解http pdf
扫加公众号,回复“图解HTTP”,免费获取此书.
- 查看shell环境下,网络是否连通-curl/ping
检查网络是否可用 curl www.baidu.com <!--STATUS OK--><html>...</html> ping www.baidu.com注意: ...
- 本地yum源快速创建
1.建立挂载目录mkdir /rui 2.挂载iso到新建的/rui目录
- sun 证书问题解决
1.下载的需要的证书: sudo ./$JAVA_HOME/jre/bin/keytool -import -alias WOSt03 -keystore $JAVA_HOME/jre/lib/sec ...
- centos配置DNS和ip
Centos6.5 永久修改DNS地址的方法 1.配置ip地址文件 /etc/sysconfig/network-scripts/ifcfg-eth0添加一行 DNS1=8.8.8.8 #手动添 ...
- 关于Nginx的负载均衡
一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器.详情请查看我的另一篇博客. 二.Ng ...
- 迭代器iter()
from collections import Iterable print(isinstance({},iterable)) # 判断是否可迭代 from collections import It ...