双目深度估计传统算法流程及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 算法感觉自己总是一知半解,现将其梳理一下,记录在此,也 ...
随机推荐
- C# 弹出确定、取消窗口
if (MessageBox.Show("确定要退出吗?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Qu ...
- webpack4 坑收集:html-webpack-plugin在多页面时,无法将optimization.splitChunks提取的公共块,打包到页面中
问题描述: 有2个页面index.html和product.html,用html-webpack-plugin和optimization.splitChunks的基本配置如下 { template: ...
- spring-boot 2.1.2.RELEASE bug
不打印映射地址日志: 改用 2.0.5 RELEASE 即可
- 爬坑二 activiti流数据库版本错误引发的问题
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'actModelCont ...
- 第一章 Python程序语言简介
第一节 Python概述 1. 什么是Python Python是一种 解释型.面向对象.动态数据类型 的高级程序设计语言.由Guido van Rossum与1989年发明,第一个公开发行版本发行于 ...
- 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛) H XOR
链接:https://www.nowcoder.com/acm/contest/116/H来源:牛客网 题目描述 Once there was a king called XOR, he had a ...
- 1、SpringBoot bean,list,map Json返回
1.Bean public class User { private int id; private String username; private String password; public ...
- 读取本地json文件,并转换为dictionary
// 读取本地JSON文件 - (NSDictionary *)readLocalFileWithName:(NSString *)name { // 获取文件路径 NSString *path = ...
- jQuery Gantt Edit:(一)参数以及方法说明
jQuery Gantt editor jQuery Gantt Edit(以下简称GE)是一款开源的基于jQuery的甘特图插件,作者:robicch. GitHub地址:https://githu ...
- Mac下文件的编码及修改编码
brew install enca # Enca语法 Usage: enca [-L LANGUAGE] [OPTION]... [FILE]... enconv [-L LANGUAGE] [OPT ...