要求:对给出的左右视图进行匹配,最后输出左右两张disparity map(视差图)

  e.g.

  左视图、右视图(两幅图像大小相同,只有水平方向上的视角变换)

   

  标准视差图如下:

   

  SSD(sum of squared differences)实现:

      

    1.把左右视图转成CV_8UC1单通道图像

      可以直接引用opencv的API实现、自己写一个对三通道取平均值或者按照下面公式转换的函数,对结果影响不大

      

    2.对每一个像素进行处理

      假设dmax=79,则有,对于每个像素的每个d值,计算patch(滑动窗口)内左右视图的像素灰度值的平方差之和,然后记录该值与其对应的d值

      此处可以用vector<pair<sum, d>>来存储结果

    3. 取最小sum值对应的d做为最终输出的disparity map对应点的灰度值

    result:5*5 窗口,坏点率分别为24,72%, 25.78%

     

  NCC(normalized cross-correlation)实现:

  

    1. 同样,先把左右视图转成单通道灰度图

    2. 然后对于每个像素做处理,对于每个对应的d值,先计算分子,在计算分母,最后把分子/分母的值与对应d值存入vector中

    3.取vector中最大值对应的d值为disparity map在该点的灰度值

    result:5*5窗口 坏点率:23.64%, 24.20% 比SSD稍微好一点

     

  ASW(Adaptive Support Weight)实现:

  

  

  

    这个就按公式实现,比较简单,如果窗口足够大的话,ASW的处理效果会比较好,但是会很慢

    但是中间计算Cpq值的时候主要要把BGR模型转换成Lab模型计算

    

    result:5*5 窗口大小,坏点率:31.33% , 31.39%

     

    33*33窗口大小,坏点率:19.44% , 20.75%(但是,跑了9242 seconds...可以自行感受一下...

     

    代码实现:https://github.com/CheerM/opencv_stereo_matching/tree/master/src

    BTW,哪位勇士跑完全部测例的ASW 33*33,能不能顺便分享一下数据给我看看,感激不尽啊>  <

    

【OpenCV】立体匹配算法SSD、NCC、ASW的基础实现的更多相关文章

  1. OpenCV3.4两种立体匹配算法效果对比

    以OpenCV自带的Aloe图像对为例:     1.BM算法(Block Matching) 参数设置如下: ) + ) & -; cv::Ptr<cv::StereoBM> b ...

  2. opencvSGBM半全局立体匹配算法的研究(1)

    转载请说明出处:http://blog.csdn.net/zhubaohua_bupt/article/details/51866567 这段时间对opencvSGBM半全局立体匹配算法进行了比較仔细 ...

  3. OpenCV模板匹配算法详解

    1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...

  4. 立体视觉-opencv中立体匹配相关代码

    三种匹配算法比较 BM算法: 该算法代码: view plaincopy to clipboardprint? CvStereoBMState *BMState = cvCreateStereoBMS ...

  5. opencv 人脸识别

      背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...

  6. opencv 61篇

    (一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报  分类: OpenCV ...

  7. OpenCV stereo matching 代码 matlab实现视差显示

    转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/44151213, 来自:shiter编写程序的艺术 基础知识 计算机视觉是一门研究 ...

  8. 基于 OpenCV 的人脸识别

    基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenC ...

  9. 【计算机视觉】基于OpenCV的人脸识别

    一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...

随机推荐

  1. windows 2003 上安装windows liver writer

    下载"resource hacker"软件,修改exe文件,找到config--config0-0 替换为: <?xml version="1.0" en ...

  2. 【Properties文件】Java使用Properties来读取配置文件

    配置文件位置及内容 执行结果 程序代码 package Utils.ConfigFile;   import java.io.BufferedInputStream; import java.io.B ...

  3. Django数据库设计中字段为空的方式

    今天在做数据库设计的时候,设计了如下User表,其中我把email和phone字段设置为允许为空: class User(models.Model): username = models.CharFi ...

  4. 黄聪:wp-setting.php文件详解

    描述:用于设置公共变量.加载 WP 的程序和类库(存储 WP 函数.类和核心内容所在文件夹的位置).用户无需修改此文件,但是可以通过修改 wp-config.php 文件来进行配置. 定义 WPINC ...

  5. 类(class)、构造函数(constructor)、原型(prototype)

    类 Class 类的概念应该是面向对象语言的一个特色,但是JavaScript并不像Java,C++等高级语言那样拥有正式的类,而是多数通过构造器以及原型方式来仿造实现.在讨论构造器和原型方法前,我可 ...

  6. Python基础09 面向对象的进一步拓展

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们熟悉了对象和类的基本概念.我们将进一步拓展,以便能实际运用对象和类. 调用类的 ...

  7. vi命令的使用

    <转:http://linux.vbird.org/linux_basic/0310vi.php> 基本上 vi 共分为三种模式,分别是『一般模式』.『编辑模式』与『指令列命令模式』. 圖 ...

  8. chrome调试js工具的使用

    Audits标签页 这个对于优化前端页面.加速网页加载速度很有用哦(相当与Yslow): 点击run按钮,就可以开始分析页面,分析完了就可以看到分析结果了: 它甚至可以分析出页面上样式表中有哪些CSS ...

  9. [Java] 使用Comparator排序对象

    package test.collections; import java.util.ArrayList; import java.util.Collection; import java.util. ...

  10. aria-expanded,aria-hidden到底做什么用?

    aria-expanded表示展开状态.默认为undefined, 表示当前展开状态未知.其它可选值:true表示元素是展开的:false表示元素不是展开的. aria-hidden字符串.可选值为t ...