【OpenCV】立体匹配算法SSD、NCC、ASW的基础实现
要求:对给出的左右视图进行匹配,最后输出左右两张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的基础实现的更多相关文章
- OpenCV3.4两种立体匹配算法效果对比
以OpenCV自带的Aloe图像对为例: 1.BM算法(Block Matching) 参数设置如下: ) + ) & -; cv::Ptr<cv::StereoBM> b ...
- opencvSGBM半全局立体匹配算法的研究(1)
转载请说明出处:http://blog.csdn.net/zhubaohua_bupt/article/details/51866567 这段时间对opencvSGBM半全局立体匹配算法进行了比較仔细 ...
- OpenCV模板匹配算法详解
1 理论介绍 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标.OpenCV ...
- 立体视觉-opencv中立体匹配相关代码
三种匹配算法比较 BM算法: 该算法代码: view plaincopy to clipboardprint? CvStereoBMState *BMState = cvCreateStereoBMS ...
- opencv 人脸识别
背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...
- opencv 61篇
(一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报 分类: OpenCV ...
- OpenCV stereo matching 代码 matlab实现视差显示
转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/44151213, 来自:shiter编写程序的艺术 基础知识 计算机视觉是一门研究 ...
- 基于 OpenCV 的人脸识别
基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenC ...
- 【计算机视觉】基于OpenCV的人脸识别
一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...
随机推荐
- Android外派(安卓外派) — 长年提供安卓开发工程师外派业务(可签合同)
北京动点飞扬长年提供安卓工程师外派业务. 平均技术情况如下: 1.2~3年以上Android平台开发经验2.熟练掌握java技术,熟悉面向对象编程设计3.熟悉Android应用开发框架及Activit ...
- Silverlight开源框架SL提供便捷的二次开发银光框架
Silverlight开发框架SilverFrame欢迎咨询 基于Silverlight4.0开发,兼容Silverlight 5.0,SQLServer2005数据库.WCF: 本框架有清爽的前端界 ...
- LeetCode "Count of Smaller Number After Self"
Almost identical to LintCode "Count of Smaller Number before Self". Corner case needs to b ...
- SPOJ #10657. LOGIC (riddle)
1 line in Ruby(2.0), 36B: p (1..n=gets.to_i).reduce(:*)+2**n-n
- SPOJ #11 Factorial
Counting trailing 0s of n! It is not very hard to figure out how to count it - simply count how many ...
- 剑指offer系列52---约瑟夫环问题
[题目]0,1,...n排成一个圈,从0开始每次删除第m个数,求圆圈最后个数. * [思路]1 用数组模拟圆圈.当数到最后一个数即index==n时,令index==0 重头开始遍历: * 当遇到已经 ...
- 51nod1258 序列求和V4
T(n) = n^k,S(n) = T(1) + T(2) + ...... T(n).给出n和k,求S(n). 例如k = 2,n = 5,S(n) = 1^2 + 2^2 + 3^2 + 4^ ...
- 51nod1039 x^3 mod p
X*X*X mod P = A,其中P为质数.给出P和A,求<=P的所有X. Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 1000) 第2 ...
- Java事务处理全解析(二)——失败的案例
在本系列的上一篇文章中,我们讲到了Java事务处理的基本问题,并且讲到了Service层和DAO层,在本篇文章中,我们将以BankService为例学习一个事务处理失败的案例. BankService ...
- ubuntu更换源后报错:W: GPG error: (转载)
From:http://www.njava.com/njava-626.html 更换163源后,更新源时出现错误. # apt-get update W: GPG error: http://ext ...