双目深度估计传统算法流程及OpenCV的编译注意事项
起因:
1. 双目立体视觉中双目深度估计是非常重要且基础的部分,而传统的立体视觉的算法基本上都在opencv中有相对优秀的实现。同时考虑了性能和效率。因此,学习使用opencv接口是非常重要的。
2. 但对一个工具使用到一定程度后,有时候需要进行内置算法的改进,此时需要对opencv及外部依赖模块进行重编译。
双目深度估计传统算法流程:
A. 固定相机对(严格固定!),制作高精度棋盘格,挑选合适光源,选择合适的拍摄角度对棋盘格进行拍摄取样
B. 使用matlab或opencv单目标定两个相机,采用如张正友相机标定算法。得到相机各自内参。
C. 使用matlab或opencv双目标定相机对,评估重投影误差是否符合要求,检测角点的提取正确性。保存所有标定结果。
D. 使用标定结果对同一组相机拍摄的图片对进行双目矫正,包含单目矫正以及ROI区域裁剪,得到行对齐的左右视图。
E. 使用上述矫正后的图像(rectified views)采用BM,SGBM等算法进行深度估计,得到disparity map(视差图)。
F. 视差图的倒数(注意除零错误)就是深度图。
OpenCV及其附加模块的编译:
(前置条件:安装对应Opencv支持的版本的visual studio)
1. 下载cmake,免安装绿色版
2. 下载opencv对应平台的版本,运行解压得到对应平台的源码
3. 创建build文件夹
4. 运行cmake,点击configure,指定编译器与平台,如VS2015就选择VC14 visual studio 2015 x64.
5. 等待第一遍配置完成反馈结果,对于cpu平台,取消勾选所有包含cuda,cublas,cufft这些gpu加速相关模块。
6. 在EXTRA_MODULES选项中选择opencv-contrib的modules文件夹
7. 再次点击configure,等待所有的红色(错误)选项消失
8. 点击generate,生成待编译项目,对于VS2015,则生成.sln解决方案文件。
9. 点击open project进入visual studio
10. 在VS中: 生成(build) -> 管理项目配置 -> Debug改为Release(因为一般的系统上都只有python模块的release版,编译debug模式会出错)
11. 在VS中:项目资源中选择ALL_BUILDS右键单击选择【生成】,等待约20分钟。
12. 在VS中,项目资源中选择INSTALL右键单击选择【生成】,等待10秒。
13. 完成opencv及其附加库的编译。
14. 将build文件夹下的install文件夹下的vc14/bin/整个绝对路径添加到电脑的系统环境变量(%PATH%)的末尾。
15. 在使用opencv的项目中,项目属性-> c++库目录配置 -> include目录 & lib 目录
16. 如果发现部分lib找不到链接库,那表明在configure阶段就因为平台不支持而没有进行加入待编译模块列表。注意初次出现红色的那一步,查看错误信息,按照信息提示安装相应的依赖项,重新configure即可。
双目深度估计传统算法流程及OpenCV的编译注意事项的更多相关文章
- ui2code中的深度学习+传统算法应用
背景 在之前的文章中,我们已经提到过团队在UI自动化这方面的尝试,我们的目标是实现基于 单一图片到代码 的转换,在这个过程不可避免会遇到一个问题,就是为了从单一图片中提取出足够的有意义的结构信息,我们 ...
- AI系统——机器学习和深度学习算法流程
终于考上人工智能的研究僧啦,不知道机器学习和深度学习有啥区别,感觉一切都是深度学习 挖槽,听说学长已经调了10个月的参数准备发有2000亿参数的T9开天霹雳模型,我要调参发T10准备拿个Best Pa ...
- Imu_tk算法流程及数据采集要求和标定程序参数设置
Imu_tk算法流程 由于VIO中,普遍使用的是精度较低的imu,所以其需要一个较为准确的内参数和noise的估计.Noise大家通常使用Allan方差进行估计可以得到较为可信的结果,这里不赘述了.内 ...
- OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法
1 使用普通摄像头进行深度估计 1.1 深度估计原理 这里会用到几何学中的极几何(Epipolar Geometry),它属于立体视觉(stereo vision)几何学,立体视觉是计算机视觉的一个分 ...
- 深度学习(一)——CNN算法流程
深度学习(一)——CNN(卷积神经网络)算法流程 参考:http://dataunion.org/11692.html 0 引言 20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感 ...
- 深度估计&平面检测小结
https://yq.aliyun.com/ziliao/582885 最近一段时间已知忙着赶图像分析与理解的项目,在三个星期内强行接触了CNN,MRF,Caffe,openCV在内的很多东西.现在项 ...
- 视觉SLAM中的深度估计问题
一.研究背景 视觉SLAM需要获取世界坐标系中点的深度. 世界坐标系到像素坐标系的转换为(深度即Z): 深度的获取一共分两种方式: a)主动式 RGB-D相机按照原理又分为结构光测距.ToF相机 To ...
- 3D深度估计
3D深度估计 Consistent Video Depth Estimation 论文地址:https://arxiv.org/pdf/2004.15021.pdf 项目网站:https://roxa ...
- 一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm)
一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm) 2017-12-25 16:29:19 对于 A3C 算法感觉自己总是一知半解,现将其梳理一下,记录在此,也 ...
随机推荐
- 【DOM练习】淘宝购物车
HTML: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...
- fusioncharts的3D饼图固定大小和角度
3D饼图的pieRadius和startingAngle属性 pieRadius:饼图的半径 startingAngle:饼图的角度(旋转) 在固定大小的div里面,饼图上如果显示label或者val ...
- 【SparkStreaming学习之三】 SparkStreaming和kafka整合
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- web开发前端面试知识点目录整理
web开发前端面试知识点目录整理 基本功考察 关于Html 1. html语义化标签的理解; 结构化的理解; 能否写出简洁的html结构; SEO优化 2. h5中新增的属性; 如自定义属性data, ...
- KVO的使用二:常用方法及小技巧
(文章及代码接上一篇) options详解: KVO的注册方法中有一个options枚举,用来确定观察者的接收消息方法接收的信息,那么具体有什么关联呢?下面通过一段代码来验证是如何关联的.依次选择op ...
- 小米5查看设备号信息及验证type-c数据线
首先,下载adb软件. 接着打开系统的开发者模式和调试模式. 打开cmd软件,切换到adb软件文件夹所在路径,输入命令:adb devices,则能看到设备的设备号信息. 如果设备号是00000001 ...
- List、Set、Map的区别
(图一) 1.面试题:你说说collection里面有什么子类. (其实面试的时候听到这个问题的时候,你要知道,面试官是想考察List,Set) 正如图一,list和set是实现了collection ...
- input框输入金额显示千分位
比如输入:1000000,则显示为1,000,000(或者是保留3位小数:1,000,000.000) 知识点: 1)JavaScript parseFloat() 函数: 定义:parseFloat ...
- JDK一键部署, 新添加进度条
JDK部署, 脚本与JDK安装包放在同一目录 然后执行 source ./jdk.sh 稍等进度条100%即可 #******************************************* ...
- Java中BufferedReader、InputStreamReader、Scanner和System.in区别
Java中获取键盘输入值的方法以前写算法都是C/C++写的,现在用Java写,虽然算法是独立于语言的,但是Java从键盘获取输入确实有些不一样.在C/C++中我们可以用scanf和cin来获取用户从键 ...