尝试进行Kinect2.0相机进行标定

1. Color镜头标定

$(u_{rgb},v_{rgb},1)=W_{rgb}*(x,y,z)$

Calibration results after optimization (with uncertainties):

Focal Length:          fc = [ 1094.03583   1087.37528 ] +/- [ 55.02816   51.42175 ]
Principal point: cc = [ 942.00992 530.35240 ] +/- [ 13.00131 31.27892 ]
Skew: alpha_c = [ 0.00000 ] +/- [ 0.00000 ] => angle of pixel axes = 90.00000 +/- 0.00000 degrees
Distortion: kc = [ 0.06857 -0.10542 0.00233 0.00092 0.00000 ] +/- [ 0.02206 0.02884 0.00379 0.00492 0.00000 ]
Pixel error: err = [ 0.49343 0.67737 ]

2. 红外镜头标定

$(u_{ir},v_{ir},1)=W_{ir}*(x,y,z)$

Calibration results after optimization (with uncertainties):

Focal Length:          fc = [ 379.40726   378.54472 ] +/- [ 40.73354   34.75290 ]
Principal point: cc = [ 263.73696 201.72450 ] +/- [ 9.17740 30.29723 ]
Skew: alpha_c = [ 0.00000 ] +/- [ 0.00000 ] => angle of pixel axes = 90.00000 +/- 0.00000 degrees
Distortion: kc = [ 0.03377 -0.04195 0.00519 0.00734 0.00000 ] +/- [ 0.07368 0.25678 0.01111 0.00965 0.00000 ]
Pixel error: err = [ 0.88997 0.92779 ]

根据上面两个式子可以推导出两个图像像素之间的对应关系。先将RGB图像映射和depth同样大小。

3. 2个相机相对关系计算

前面两个相机都是以相机中心作为世界坐标系的原点。要建立两个相机之间的关系,需要构建以统一的世界坐标系。以深度相机中心为世界坐标的原点。

则RGB相机和相机原点存在如下关系

$(x_{w},y_{w},z_{w})=(x_{ir},y_{ir},z_{ir})=R*(x_{rgb},y_{rgb},z_{rgb})+T$

补充:两个相机的配准问题当前的好多博客里写的方法,根据color和Ir 的外参计算的说法很扯淡。

因为2个图像的分辨率不同,外参根本不在一个框架下。这应该是一个立体匹配的问题。

A Quantitative Comparison of Calibration Methods for RGB-D Sensors Using Different Technologies
https://github.com/rgbdemo/rgbdemo/blob/master/calibration/calibrate_kinect.cpp


工具包:

Matlab自带工具箱:

http://www.ilovematlab.cn/thread-267670-1-1.html

http://www.cnblogs.com/li-yao7758258/p/5929145.html

其他工具箱:

张正友标定法 Camera Calibration Toolbox for Matlab   这个工具箱使用standard可以,但是另外一个不读到内存的好像有bug。

http://www.vision.caltech.edu/bouguetj/calib_doc/index.html

http://blog.csdn.net/felix86/article/details/38401447

kinect 2.0 SDK学习笔记(四)--深度图与彩色图对齐

重点参考:Kinect深度图与摄像头RGB的标定与配

orbslam2的基础理论(一)https://blog.csdn.net/qq_18661939/article/details/51829573

Kinect2.0相机标定的更多相关文章

  1. 相机标定:关于用Levenberg-Marquardt算法在相机标定中应用

    LM算法在相机标定的应用共有三处. (1)单目标定或双目标定中,在内参固定的情况下,计算最佳外参.OpenCV中对应的函数为findExtrinsicCameraParams2. (2)单目标定中,在 ...

  2. OpenCV相机标定和姿态更新

    原帖地址: http://blog.csdn.net/aptx704610875/article/details/48914043 http://blog.csdn.net/aptx704610875 ...

  3. 相机标定 matlab opencv ROS三种方法标定步骤(2)

    二  ubuntu下Opencv的相机标定 一般直接用Opencv的源码就可以进行相机的标定,但是可能只是会实现结果,却不懂实现的过程,我也是模模糊糊的看了<计算机视觉中的多视图几何>以及 ...

  4. 相机标定 matlab opencv ROS三种方法标定步骤(3)

    三 ,  ROS 环境下 如何进行相机标定 刚开始做到的时候遇到一些问题没有记录下来,现在回头写的时候都是没有错误的结果了,首先使用ROS标定相机, 要知道如何查看节点之间的流程图  rosrun r ...

  5. 相机标定 matlab opencv ROS三种方法标定步骤(1)

    一 . 理解摄像机模型,网上有很多讲解的十分详细,在这里我只是记录我的整合出来的资料和我的部分理解 计算机视觉领域中常见的三个坐标系:图像坐标系,相机坐标系,世界坐标系,实际上就是要用矩阵来表 示各个 ...

  6. 相机标定:kalibr标定工具箱使用总结

    1 多相机标定 1.1采集图像和IMU 1.2制作Bag包 1)组织文件结构 ~/kalibr_workspace/test/stereo_calib bagsrc cam0 (1+time(0))* ...

  7. SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解

    想要从二维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM中,相机通常是提前标定好的.张正友于1998年在论文:"A Flexible New Technique fro Cam ...

  8. OpenCV相机标定

    标签(空格分隔): Opencv 相机标定是图像处理的基础,虽然相机使用的是小孔成像模型,但是由于小孔的透光非常有限,所以需要使用透镜聚焦足够多的光线.在使用的过程中,需要知道相机的焦距.成像中心以及 ...

  9. 相机标定问题-Matlab & Py-Opencv

    一.相机标定基本理论 1.相机成像系统介绍 图中总共有4个坐标系: 图像坐标系:Op    坐标表示方法(u,v)                 Unit:Dots(个) 成像坐标系:Oi      ...

随机推荐

  1. gitlab 服务器的搭建与使用全过程(一)

    公司之前用的是vpn,然后老大说让我搞一个git.于是,我开始了git的研究之路.... 概念:(说实话,看了还是有些不太理解) git         是一种版本控制系统,是一个命令,是一种工具 g ...

  2. python 闭包用法

    def make_addr(addend): def addr(augend): return augend + addend return addr p = make_addr(23) q = ma ...

  3. numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组

    numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组 import numpy as np 使用array对象 arr1=np.arange(12).reshap ...

  4. ng之自定义指令

    最近开始研究并使用angular,今天就来简单讲讲对于ng中自定义指令的一下使用心得吧! 相信用过ng的人都对ng中的指令有所了解,指令,我将其理解为AngularJS操作HTML element的一 ...

  5. php foreach

    工作半年了我一直以来至知道这样用,foreach($aa as $k=>$r){} 尔今天师父已教我还可以这样用:  foreach($aa as $r){}

  6. [No0000EC]C# 字符串(String)

    在 C# 中,可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量.string 关键字是 System.String 类的别名. 创建 String 对象 ...

  7. 【凸包板题】Gym - 101484E E. Double Fence

    http://codeforces.com/gym/101484/problem/E 题解 凸包板题 #define _CRT_SECURE_NO_WARNINGS #include<cmath ...

  8. 【紫书】Urban Elevations UVA - 221 离散化

    题意:给你俯视图,要求依次输出正视图中可以看到的建筑物 题解:任意相邻的x间属性相同,所以离散化. 坑:unique只能对数组用.下标易错 list不能找某元素的next.用了个很麻烦的处理 数组: ...

  9. nethogs 查看 Linux 进程的网络使用

    有时候我们客户会发现服务器或 VPS 网络慢,进一步发现大量带宽被占用,一些客户到这里为止就不知道怎么办了.有什么简单办法能找出哪个程序(或者进程)占用了带宽呢?Linux 监控流量的小工具不少,如 ...

  10. centos7安装Apache

    1.下载安装包wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.37.tar.gz 2.解压tar zxvf httpd-2.4.37.ta ...