目录

介绍

匹配

寻找最佳匹配 实战


介绍

欢迎回到计算机视觉。今天我们要讲的是立体视觉匹配(stereo correspondence)。到目前为止,我们已经定义了对极几何(epipolar geometry)它讨论了两个视图之间的关系,以及如果你在左边的图像中有一个点,那么如果你知道相机之间的关系,这就是一维搜索。一般情况下,极线可以是任意的,不是任意的,但是可以以不同的方式倾斜并定位。但是今天,为了让生活更简单,我们要假设一些,简化的假设。例如,我们假设,我们上次画出的几何,是平行的,或者说是共面(coplanar),像平面。

假设两个相机的焦距相同。我们假设它们,摄像机水平对齐在相同的高度。所以我们,这些图像被拉出来,使得极线是水平的,而且,它们实际上是对齐的,所以一幅图像中的xy位置在另一幅图像中的x位置不同,但y位置相同。看,这是很多假设,对于真正的立体,你不能那样做,你必须先对图像进行校正。我们会在以后的几节内容里讨论这个问题。但现在,我们要做的假设会让我们更容易地解决对应问题,事实上,这是你们做对应问题的方法。

匹配

匹配问题是什么? 基本上,对极约束约束了我们的解,但是它没有解决我们的解决方案,所以这里我们在左边的图像中有一些点(如图1)我们知道它们在右边的图像中沿着极线(如图2),但问题是它们的匹配是什么? 在假设(hypothesis)1 2 3中(如图3),用灰色编码,你可以看到这些是不同的可能匹配。所以对于左边图像中的每一点,我们必须决定在右边图像中的匹配是什么,反之亦然。

1 2

3 4

为了解决匹配问题,我们需要一些额外的约束条件。对极约束是一个硬约束,也就是说,它必须是真的,它是由射流,相对的相机几何来强制的。但是还有其他类型的约束,我们可以称之为软约束(soft constraints)。

相似度(Similarity),也就是说左边图像中的像素看起来应该是这样的如果你有正确的匹配,它就会修复右边的图像。

唯一性(Uniqueness)指的是,在右边图像的左像素上最多只能匹配一个匹配项。

排序(Ordering)是说如果像素在左边的图像上是abc,那么它们在右边就是abc。

视差梯度是有限的(disparity gradient is limited)意味着深度变化不会太快。

我们今天会讲到其中一些,但是我们从相似性(Similarity)开始。相似性本质上是说,左边的图像补片应该与右边的图像补片匹配。为了在图像对中找到匹配点我们假设,首先在一个视图中可见的大多数点在另一个视图中也是可见的。所以我们去找他们。并且匹配的图像区域在外观上是相似的。这里就是我们要做的密集相关(如图1)。密集相关意味着我们到处都能找到匹配。对于每一个像素,比如说在左边的图像中,我们要在这个像素周围取一个小窗口(如图2)。

1 2

我们要将它与右图像中的每个像素,斜线窗口进行比较(如图1)。我们要选择的位置要么是最相似的(如图2),要么是最不相似的,最好的匹配,这就是我们要假设的对应点。

1 2

这里有一个非常简单的例子(如图1)。我在两幅图像上都有一条扫描线,我们现在假设是平行的扫描线。左边的图像是窗口,我要把它和右边图像中的一些窗口进行比较。匹配成本在任何地方都要计算(如图2),所以这只是一个非,一个关于匹配成本作为视差函数的概念描述。所有我离第一次匹配有多远(如图3)。当然,我们要选择得分最高的值。我可以用一个叫差的平方和的东西,也就是差的平方和(如图4)。这不是一个惊喜吗? 不。你要做的就是取这两个像素窗口,重叠,相减,平方差,然后求和。

1 2

3

4

这就是衡量的标准,这就是为什么上面说的是不同之处。现在,有时,我们假设一幅图像比另一幅图像亮一点,你知道,由于某种原因,增益在相机上设置得不太好。如果我直接做减法,即使匹配的位置是正确的。由于强度的缩放,我将得到平方差误差,它可能不会让我得到最好的匹配。现在我们已经讨论了如何消除缩放问题。还记得吗,我们讲过进行归一化相关我们缩放窗口的值使其具有相同的标准差? 你也可以这样做。你可以用你的窗口滑动它(如图),做标准化的相关性而不是平方差的和。这实际上是一个相似性约束。

寻找最佳匹配 实战

好吧。我们试着用代码来做。我想让你写一个函数,find_best_match,它有两个参数,一个图像贴片和一个条带,基本上和贴片一样高,但是宽度等于图像的宽度。你的函数应该返回贴片所在的x坐标。下面是一些测试代码。

让我们从一对立体对中加载两个图像,左边和右边。这是左图(如图1),这是右图(如图2)。

1 2

如果我在两者之间切换,您可以看到一些关键元素在移动。all right,让我们把这些转换成灰度,双精度类型(如图),并把它们缩小到0,1范围。

这里是灰度版本,左边(如图1)和右边(如图2)。

1 2

okay,让我们定义我们想要匹配的片段的位置和大小(如图)。

让我们从左边的图像中提取这个(如图1)。

这是贴片的样子(如图)。

使用贴片规范,让我们从正确的图像中提取一个条带。

注意,在这里,由于我们想跨越图像的宽度,我们选择了所有的列。

这是从右边的图片中截取的(如图)。

一旦您实现了您的函数,通过传入 patch_left 和 strip_right 来调用它。您应该能够使用找到的bext_x坐标从正确的图像中提取贴片。去试试吧。

让我们用平方差的和来找到最佳匹配。让我们初始化两个需要的变量,然后运行这个程序,将贴片放在每个有效的位置。我们从每个位置的贴片中提取相同大小的第二贴片(如图)。

然后计算平方差的和,

并跟踪给出最小差值的x坐标。

就这些了。让我们看看它是如何工作的(如图1)。找到的最佳x坐标是145。上面的贴片来自左边的图像(如图2)。这是你之前看到的正确图片中的条带(如图3)。下面的贴片已经从右边的图像中提取出来了(如图4)。

1 2

4

注意,房子顶部的外观发生了一些变化,但是我们的算法仍然能够正确地找到它。现在,不用平方差的和,你也可以用互相关(cross-correlation)。请随意尝试其他方法。


算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。

17.立体匹配——介绍,匹配,寻找最佳匹配 Matlab实战_1相关推荐

  1. 17.立体匹配——匹配两个图 Matlab实战,立体效果_3

    匹配两个图 Matlab实战 让我们尝试实现一种非常简单的方法来匹配来自两个图像带的相应区域.首先,回忆一下查找最佳匹配问题.给定一个图像贴片和一个贴片,您的任务是找到贴片在贴片中的最佳x位置.您可以 ...

  2. 二分图带权匹配、最佳匹配与KM算法

    ---------------------以上转自ByVoid神牛博客,并有所省略.   [二分图带权匹配与最佳匹配] 什么是二分图的带权匹配?二分图的带权匹配就是求出一个匹配集合,使得集合中边的权值 ...

  3. Speeding up Graph Edit Distance Computation with a Bipartite Heuristic 使用二部图匹配寻找顶点的最佳映射

    文章简介 文章标题:Speeding up Graph Edit Distance Computation with a Bipartite Heuristic 文章链接 作者单位:Kaspar Ri ...

  4. matlab车牌匹配时读取,基于Matlab的车牌识别(完整版)详解.doc

    基于Matlab的车牌识别(完整版)详解.doc 基于Matlab的车牌识别 摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展.本文从预处理.边缘检测.车牌定位.字符分割.字符 ...

  5. 如何实现示波器探头的最佳匹配?

    摘要:探头是观测信号的第一个环节,主要作用是承载信号传输的链路,将待测信号完整.可靠的传输至示波器,进行测量分析.可是你知道如何实现探头的最佳匹配吗? 1. 探头分类 探头通常按测量对象进行分类,分类 ...

  6. POJ 2195 【二分图最佳匹配】.cpp

    题意: 有 n 个房子和 n 个人 每个人走一个单元你就要付 1$ 有什么办法可以让把所有人都分派到房子里 而花费最少 输入: 给出n m 表示该矩阵由n 行 m 列组成 然后给出一个n*m的图 . ...

  7. 洛谷 P2756 飞行员配对方案问题 (二分图/网络流,最佳匹配方案)

    P2756 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其 ...

  8. matlab 匹配屏幕大小写,匹配正则表达式(不区分大小写)

    正则表达式,指定为字符向量.字符向量元胞数组或字符串数组.每个表达式可包含字符.元字符.运算符.标文和用于指定在 str 中匹配的模式的标志. 下表描述了正则表达式的各元素. 元字符 元字符表示字母. ...

  9. 运动估计和最佳匹配块搜索算法

    图像与视频的区别:图像是静态的,只有一帧:视频是动态的,是由多帧连续图像组成的运动图像序列,视频具有的时间冗余是图像所没有的. 时间冗余:视频中时间上相邻图像之间的相似性,重复性称为时间冗余 帧间预测 ...

最新文章

  1. OpenCV Python教程(2、图像元素的访问、通道分离与合并)
  2. 架构师是如何炼成的?以天猫APP架构开发模式升级工程为例
  3. makefile中命令的显示
  4. sql 查询每月的销售金额
  5. [20170617]vim中调用sqlplus.txt
  6. 一张图看懂阿里云网络产品[十一]云托付
  7. CSS中的层叠性、继承性、优先级、权重
  8. VC制作类似于IE4的酷工具条
  9. ICCV2021 新增数据集汇总 | 含时序动作定位、时空行为检测、弱光目标检测等!...
  10. 自学前端开发,前端进阶阶段需要学习哪些知识?
  11. Qt4_实现自定义委托
  12. win10安全模式怎么修复系统
  13. 一个分组查询的SQL 常用算法(附源码可直接执行)
  14. PhotoShop简单案例(1)——利用时间轴功能制作简单动画
  15. 华为Mate系列平板手机安装谷歌框架
  16. python狗狗年龄换算程序_1分钟检测狗狗是否老了,还有狗年龄换算表,快看你家狗的情况...
  17. ZPL条码及参数说明
  18. 计算机科学是ei期刊吗,EI计算机期刊有哪些
  19. 左联接、右联接、内联接、自然联接
  20. 化工原理计算机辅助设计,化工原理课程设计总结与体会

热门文章

  1. 【nodejs原理源码赏析(5)】net模块与通讯的实现
  2. 《跟唐老师学习云网络》 - 什么是VLAN和VXLAN
  3. Python爬虫从入门到精通——基本库re的使用:正则表达式
  4. html table列平均,html table 列求和
  5. 浏览器显示linux桌面,如何从Web浏览器远程监视Linux服务器和桌面
  6. 使用HTTPS方式向git托管网站推送项目时输错用户名密码
  7. Java输入n个无序的整数,请编写程序,找出其中最大数所在的位置.请以以下三种情况运行你的程序.以便验证你的程序是否正确.(不得少于5个数)① 最大数在最前 ② 最大数在最后 ③ 最大
  8. 向量距离计算 java_在机器学习中扮演着极为重要角色的向量
  9. python zipfile_python zipfile模块
  10. Idea创建包以及导入jar包等操作