起因:

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的编译注意事项的更多相关文章

  1. ui2code中的深度学习+传统算法应用

    背景 在之前的文章中,我们已经提到过团队在UI自动化这方面的尝试,我们的目标是实现基于 单一图片到代码 的转换,在这个过程不可避免会遇到一个问题,就是为了从单一图片中提取出足够的有意义的结构信息,我们 ...

  2. AI系统——机器学习和深度学习算法流程

    终于考上人工智能的研究僧啦,不知道机器学习和深度学习有啥区别,感觉一切都是深度学习 挖槽,听说学长已经调了10个月的参数准备发有2000亿参数的T9开天霹雳模型,我要调参发T10准备拿个Best Pa ...

  3. Imu_tk算法流程及数据采集要求和标定程序参数设置

    Imu_tk算法流程 由于VIO中,普遍使用的是精度较低的imu,所以其需要一个较为准确的内参数和noise的估计.Noise大家通常使用Allan方差进行估计可以得到较为可信的结果,这里不赘述了.内 ...

  4. OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法

    1 使用普通摄像头进行深度估计 1.1 深度估计原理 这里会用到几何学中的极几何(Epipolar Geometry),它属于立体视觉(stereo vision)几何学,立体视觉是计算机视觉的一个分 ...

  5. 深度学习(一)——CNN算法流程

    深度学习(一)——CNN(卷积神经网络)算法流程 参考:http://dataunion.org/11692.html 0 引言 20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感 ...

  6. 深度估计&平面检测小结

    https://yq.aliyun.com/ziliao/582885 最近一段时间已知忙着赶图像分析与理解的项目,在三个星期内强行接触了CNN,MRF,Caffe,openCV在内的很多东西.现在项 ...

  7. 视觉SLAM中的深度估计问题

    一.研究背景 视觉SLAM需要获取世界坐标系中点的深度. 世界坐标系到像素坐标系的转换为(深度即Z): 深度的获取一共分两种方式: a)主动式 RGB-D相机按照原理又分为结构光测距.ToF相机 To ...

  8. 3D深度估计

    3D深度估计 Consistent Video Depth Estimation 论文地址:https://arxiv.org/pdf/2004.15021.pdf 项目网站:https://roxa ...

  9. 一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm)

    一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm) 2017-12-25  16:29:19   对于 A3C 算法感觉自己总是一知半解,现将其梳理一下,记录在此,也 ...

随机推荐

  1. C# 弹出确定、取消窗口

    if (MessageBox.Show("确定要退出吗?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Qu ...

  2. webpack4 坑收集:html-webpack-plugin在多页面时,无法将optimization.splitChunks提取的公共块,打包到页面中

    问题描述:  有2个页面index.html和product.html,用html-webpack-plugin和optimization.splitChunks的基本配置如下 { template: ...

  3. spring-boot 2.1.2.RELEASE bug

    不打印映射地址日志: 改用 2.0.5 RELEASE 即可

  4. 爬坑二 activiti流数据库版本错误引发的问题

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'actModelCont ...

  5. 第一章 Python程序语言简介

    第一节 Python概述 1. 什么是Python Python是一种 解释型.面向对象.动态数据类型 的高级程序设计语言.由Guido van Rossum与1989年发明,第一个公开发行版本发行于 ...

  6. 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛) H XOR

    链接:https://www.nowcoder.com/acm/contest/116/H来源:牛客网 题目描述 Once there was a king called XOR, he had a ...

  7. 1、SpringBoot bean,list,map Json返回

    1.Bean public class User { private int id; private String username; private String password; public ...

  8. 读取本地json文件,并转换为dictionary

    // 读取本地JSON文件 - (NSDictionary *)readLocalFileWithName:(NSString *)name { // 获取文件路径 NSString *path = ...

  9. jQuery Gantt Edit:(一)参数以及方法说明

    jQuery Gantt editor jQuery Gantt Edit(以下简称GE)是一款开源的基于jQuery的甘特图插件,作者:robicch. GitHub地址:https://githu ...

  10. Mac下文件的编码及修改编码

    brew install enca # Enca语法 Usage: enca [-L LANGUAGE] [OPTION]... [FILE]... enconv [-L LANGUAGE] [OPT ...