光度标定原理详见:

DSO之光度标定

一、项目地址

https://github.com/tum-vision/mono_dataset_code

对应论文《A Photometrically Calibrated Benchmark For Monocular Visual Odometry》

二、安装

1.下载源码

git clone https://github.com/tum-vision/mono_dataset_code.git

2.安装Eigen和OpenCV

sudo apt-get install libeigen3-dev libopencv-dev

3.安装zip文件解析库

sudo apt-get install zlib1g-devcd mono_dataset_code/thirdparty
tar -zxvf libzip-1.1.1.tar.gz
cd libzip-1.1.1/
./configure
make
sudo make install
sudo cp lib/zipconf.h /usr/local/include/zipconf.h    # (no idea why that is needed).

4.安装aruco marker dection ,用来标定渐晕

安装教程转自(科学上网):http://maztories.blogspot.de/2013/07/installing-aruco-augmented-reality.html

cd mono_dataset_code/thirdparty
tar -zxvf aruco-1.3.0.tar.gz
cd aruco-1.3.0/
mkdir build
cd build
cmake ..
make
sudo make install

5.编译主程序

cd mono_dataset_code
cmake . && make

三、准备数据

所需数据格式参考 src/BenchmarkDatasetReader.h

相机参数文件格式参考 src/FOVUndistorter.cpp

1.将图片存储于指定路径 PATH 下

数据为zip文件时,可以将文件直接放入;

数据为图像序列时,需要将建立文件夹images,将图像序列放入 PATH/images 下(注意有s)

2.将相机参数文件放入 PATH 下

(1)文件名称为camera.txt

(2)具体文件格式可以参考LSD-SLAM中的 llsd_slam_core/src/util/Undistorter.cpp

(3)原程序中相机使用PTAM的标定程序进行标定,标定过程可以参考博客《配好lsd_slam后的使用PTAM工具标定相机》

(4)camera.txt的具体格式如下:

fx/width fy/height cx/width cy/height din_width in_height"crop" / "full" / "none" / "e1 e2 e3 e4 0"out_width out_height

1)第一行 5个数据,赋值给inputCalibration[5]数组,格式为%f,数据内容表示

(fx/width fy/height cx/width cy/height d),其中第五个参数d表示视场角(field of view);

2)第二行 2个数据,分别赋值给in_width和in_height,表示输入图像的大小

3)第三行 1个字符串参数:

“none”表示不进行校正,remapX和remapY都被置为nullptr,valid置为false

“crop”表示对图像进行裁剪,根据原图(cx,cy)处上下左右的最远距离进行图像的保留,使像素均为有效像素

“full”表示保留全部图像,根据原图(cx,cy)的左上、右上、左下、右下进行图像的保留

4)第四行 2个参数表示输出图像的宽度和高度

对应的相机模型可以参考博客《PTAM算法流程介绍》

注意:该方法使用了鱼眼相机的等距投影模型(,视角和点距光心的距离成正比),具体参考文献《Straight lines have to be straight》,其公式(13)(14)如上图前两式所示。其中,参数表示畸变后相机视场角(Field of View),即物理上相机的视场角。而经过鱼眼模型的变换,相机经过畸变校正后的视场角为

假设对应于视场角(注意视场角包括左右两侧)、像素距光心的最大距离为1,即相机的焦距

球面等距投影模型如下:

*博主认为该处公式有误,按照等距投影模型,其原始的公式应为:

但687次引用的文章应该没有什么问题啊......,考虑下式

注意到,式中用,代表了OA的距离(原本的表示为),式中认为,但通过观察不难发现,正确的关系应为

综上,原文中相机模型可能将AC近似等于了AB,但也有可能使用了其它的模型。

3.将曝光时间文件放入 PATH 下

文件名称为times.txt

(注意有s)

文件内容可以使用两种格式,系统会自动加以选择:

(1)原始格式

——格式为(图片id 时间戳 曝光时间)

——数据格式为(%d %lf %lf)

(2)或者可以省略时间戳

——(图片id 曝光时间)

——数据格式为(%d %lf)

四、标定响应函数

1. 运行可执行文件

cd mono_dataset_code/bin

./responseCalib path_to_your_data/

(对于图片序列会自动添加images/在路径后边)

./responseCalib ~/Data_mao/Data_real/Data_for_calib/

2. 标定结果

标定结果存储于 mono_dataset_code/bin/photoCalibResult/ 中

E-0.png存储初始的辐照度,初值值设置为所有图片对应像素的平均值

E-%d.png 每次优化过后场景辐照度的值;E-%d16.png 归一化到255*255上的图片

G-%d.png 每次迭代后的响应曲线

pcalib.txt 响应曲线U

原始数据集,在同一场景下变换相机曝光时间(MYNTEYE S1030IR),采集不同曝光时间下的图片

标定得到的响应函数(旋转以后的图像)

五、标定渐晕

待续……

六、回放数据

待续……

DSO光度标定程序配置和使用相关推荐

  1. for根据ID去重_汽车ECU参数标定之配置Overlay RAM实现Qorivva MPC57xx系列MCU参数在线标定和代码重映射原理和方法详解...

    内容提要 引言 1. MPC5744P的Overlay RAM工作原理介绍 2 MPC5744P的Flash Overlay配置详解 2.1 平台Flash标定区域描述字寄存器配置字0--PFLASH ...

  2. 基于ROS的手眼标定程序解决方案|支持眼在手外/上

    大家好,我是小鱼.今天分享一个自己写的开源程序,欢迎大家围观~ 1.概览 如果教程对你有帮助,可以start一下~ 若需手眼标定小鱼付费-指导请添加微信:AiIotRobot 本程序支持眼在手上和眼在 ...

  3. 运行程序报“应用程序配置不正确”或者缺少运行库造成程序不可移植的问题...

    虚拟机里边是Windows server 2003的系统,本机VS2008开发的exe程序移植到虚拟机中Release版本正常,Debug版本不能正常启动报"应用程序配置不正确", ...

  4. 解决应用程序配置不正确,程序无法启动

    在使用 VC++2005环境下生成的程序,放置到未安装VC环境的机器下后,有时候会出现程序无法执行的错误,其提示是:应用程序配置不正确,程序无法启动,重新安装应用程序可能解决问题. 实际上,重装是解决 ...

  5. 解决微信小程序配置https不成功问题

    解决微信小程序配置https不成功问题 参考文章: (1)解决微信小程序配置https不成功问题 (2)https://www.cnblogs.com/ant-jmf17/p/8056989.html ...

  6. .Net 自定义应用程序配置

    .Net 自定义应用程序配置 引言 几乎所有的应用程序都离不开配置,有时候我们会将配置信息存在数据库中(例如大家可能常会见到名为Config这样的表):更多时候,我们会将配置写在Web.config或 ...

  7. 【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )

    文章目录 一.FFMPEG 源码下载 解压 二.交叉编译工具 三.configure 脚本及帮助命令 四.配置 configure 脚本 五.输出目录配置 六.函数库配置 七.程序配置选项 八.组件配 ...

  8. MFC的exe启动时提示应用程序配置不正确,应用程序未能启动错误

    MFC的exe启动时提示应用程序配置不正确,应用程序未能启动错误 老姐笔记本中毒太深于病入膏肓,无奈迫写一程序"曲线救国".刚启动自己写的程序就出现应用程序配置不正确,应用程序未能 ...

  9. QT中使用QSettings保存应用程序配置信息

    一.问题描述 今天遇到一个问题,就是想实现一个软件,我上一次开启软件时候配置的IP地址以及,打开的文件路径,能够在我下一次打开软件时候自动写入上一次配置的信息,不需要再重新设置配置了. 二.解决方法 ...

最新文章

  1. PS如何批量生成缩略图(方法可以通用其他重复劳动)
  2. javascript写计数器
  3. 线性代数之相似矩阵与二次型基础点
  4. 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
  5. Linux 命令之 ln -- 为文件创建链接
  6. python切片逆序_Python 的逆序同时切片如何操作?
  7. css3网站代码 html5_【实战HTML5与CSS3】用HTML5和CSS3制作页面(上)
  8. Intel 平台编程总结----SIMD技术
  9. C# SyncDictionary类
  10. mysql5.6怎样测试_Mysql5.6 字符集设置测试
  11. Linux视频教程在线观看Boobooke
  12. 浏览器服务器三层系统结构,简单浏览器服务器三层架构.doc
  13. Mybatis Plus 实现批量插入
  14. 数据结构-循环双链表
  15. 关于网站性能优化,一张思维导图够了
  16. 小数分频器vhdl实现_基于FPGA的小数分频器的设计与实现.doc
  17. Paddle2.0 + CPM-LM:让AI帮你写文章吧
  18. rtl8211 smi读取_TQ335x(AM335x) Uboot移植(2)–RTL8211E网卡移植 | 码农部落
  19. 【HaaS Python 硬件积木】INA219电压电流计
  20. 沃拼图游戏软件测试,拼图游戏

热门文章

  1. minipcie接口CAN卡
  2. MATLAB画图——设置轴标签不同字体
  3. 计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档)
  4. 读书札记:加拿大元因素
  5. 软件架构-单一职责原则
  6. 如何展示您的数字作品集:来自创意招聘人员的建议
  7. 怎样用c语言编程解多元方程组,C语言解多元一次方程组(矩阵法)
  8. Linux下关机命令的区别 (halt,poweroff,reboot,shutdown,init)
  9. Brightcove助力企业视频内容无缝直达中国
  10. java毫秒级别定时器