基于图像分割的立体匹配方法

1.绪论

立体匹配是三维重建系统的关键步骤,并且作为一种非接触测量方法在工业以及科研领域具有重要的应用价值。为了完成匹配工作以及获取场景的稠密视差图,可以通过构建能量函数对应立体匹配的约束条件。复杂能量函数的全局最优解通常是NP难问题。相对于其他全局优化算法相比如模拟退火、梯度下降、动态规划等,图割算法不仅精度高,收敛速度快,并且对于光照变化、弱纹理等区域的匹配效果也比其他算法好。

2.图割算法

计算机视觉领域的大部分问题可以转换为标号问题,在立体匹配中视差的求解就是对图像的像素在视察范围内的离散标号问题。离散标号的最优解问题可以采用能量函数的最小化来求解,图割做为一种可以求解能量最小化问题的算法,在计算机视觉领域的应用非常广泛,如图像分割,图像恢复,立体匹配等。

Kolmogorov指出了如何将能量函数最小化问题与立体视差计算联系起来。通常使用图割算法进行立体匹配分为三个步骤,建立网络图,图割算法求解,生成视差图。图割算法由于其全局优化的特性能够获取效果良好的稠密视差图,但是对于处理高分辨率图像其运算量过大,为了降低运算量,一般思路都是采用分割后的图像缩小网络图的规模从而降低计算量。然而由于采用自动化非交互的彩色图像分割方法会把相同视差的区域分开或隐去了图像的部分细节信息,导致分割误差,而消除误差需要引入其他方法,如通过引入初试视差估计等方法,但这些方法增加了立体匹配算法的整体复杂度,而且没有有效利用分割信息。

在实际应用场景中为了获取感兴趣区域的精细视差图,针对于以往基于图像分割的立体匹配算法复杂、计算量大,没有充分利用分割结果的信息等缺点,本文提出了一种基于图像分割的立体匹配方法。该方法在图像分割时采用可交互的图割方法获得感兴趣目标,只针对感兴趣目标进行立体匹配,因此运算量大大减少,同时保留了原有图割算法具有的全局最优特性。

2.1 能量函数

使用图割算法进行立体匹配的过程中,需要将图割中的网络图和能量函数对应起来。能量函数定义为:
这里写图片描述
该能量函数的四项分别为数据项,遮挡项,平滑项,唯一项。每一项都表征匹配时待处理的问题。

  • 1)数据项
    数据项是为了让算法获取最佳的像素匹配,像素之间的色彩相似度越高,数据项的值越小。
    这里写图片描述
    其中函数D(a)用来表征匹配像素p,q之间的不相似性,a = (p,q)表示如果p,q像素匹配,数据项约束生效并可以按照下式:进行展开计算。
    这里写图片描述
  • 2)遮挡项
    遮挡项的作用依然是为了将匹配像素个数最大化,对于存在遮挡无法匹配的像素按照下式乘以惩罚系数,由公式可知遮挡像素越少,遮挡项的值越小。
    这里写图片描述
  • 3)平滑项
    平滑项主要衡量的内容是对于临近像素一般具有相似性特别是色彩相似这一特点,对于像素p而言其邻接像素p1和p2应该具有相同的视差分配。
    这里写图片描述
    平滑项一般采用分段函数。其中可以按照距离度量展开成分段函数。平滑项的值越低意味着临近像素的视差越相近。
  • 4)唯一项
    唯一项专注于立体匹配的唯一性约束,若待匹配点出现了不止一个匹配的情况则将惩罚值设置为无穷大。下式为其数学表达
    这里写图片描述

2.2 网络流

(一)最大流
对于带有源点S和汇点T的有向图,称为网络图。在网络图中设f是定义在集合E上的非负函数。用fij表示f在弧e = (vi,vj)上的值,即为弧e上从vi到vj的流量称为网络流。网络流fij满足下列两个条件:

  • 1.流量Fij不超过弧的容量Cij,这里写图片描述

  • 2.对于任意顶点vi,从vi留出的流量等于从vi流入的流量。即:
    这里写图片描述
    满足上述条件的所有网络流中流量最大的一个,称为最大流。

(二)最小割
网络图中一个S-T的割意味着将顶点集分为两部分,这里写图片描述。割的代价为顶点集到所有割边的容量和,容量和最小的割称为最小割。设x 和y 是顶点集V中的两个顶点,(x,y)表示从x 到y 的一条边,其边的权值表示为c(x,y)。因此对于图G=(v,e)其一个割可以表示为:

这里写图片描述

Ford 和 Fulkerson 早在1962年证明了最大流和最小割的等价对应关系。通过求网络图的最大流来等价其最小割,进而可以获取此最小割对应能量函数的全局最小值。一个值得注意的工作为Boykov等人提出的基于图割理论有效的能量函数优化方法。在该方法中,作者提出标号函数的两种比较大的移动,扩张移动
(expansion moves)和交换移动(swap moves),并证明了其扩张算法所获得的局部小和全局小相差一个已知的常数,而交换算法可以处理更一般的能量函数形式。本文使用扩张移动算法。

3.立体匹配网络图的构造

在使用图割算法进行立体匹配过程中首先需要构建网络图,对于上文提到的网格图由节点和连接节点的有向边组成。源点S,汇点T为两个特殊节点。边分为两种,一种视差边,一种是平滑边。视差边对应于能量函数(公式(1))第1项,平滑边对应于能量函数第2项。
网格图的具体构建过程如下:

  • 1.建立3维坐标系O-XYZ,把图像置于OXY平面,得的原点,X轴、Y轴与OXY平面的原点以及相应的轴重合。

  • 2.在Z轴的正半轴上,从原点开始等距离的放置向量了l1,l2,…ln,在l1即原点O的地方放置q0,对于i=1,2,…n-1在li和li+1的中点放置点qi,最后在ln处放置qn。

至此,由OXY平面中像素点p=(px,py)以及Z的正半轴上点q0,q1,…qn构成了一个立方体网格。我们可以知道,对i=1,2,…n-1,在Z轴上的每个区间[qi,qi+1]恰好包含一个li+1。记(p,qi)=:(px,py,qi)为立方体网格上的节点,N(P)为像素点P的邻域。在网络图两端分别添加两个节点,即源点S,汇点T。并在S到I1中每个属于左视图分割模版(图(1))中标记为前景的像素点之间添加一个边,在T到集合这里写图片描述即立方体网络上与OXY平面相对的另一个面上的节点,添加到汇点的边。由此,获得一个无向图G=< v,e >即:

这里写图片描述

则网络图中各边的容量为:

  • (1)源点,汇点连接边的容量为:汇点链接边的容量

这里写图片描述

  • (2)视差边的容量为:对任意,边的容量为:
    这里写图片描述
    在对视差边的处理上,视差边对应能量函数的数据项,既(1)式的第一项,在彩色图像中我们对RGB三通道分开处理,再求加权平均,这样保留了颜色信息,结果更加精准,特别的,为了更进一步的准确,本文采用线性最近邻插值算法添加了亚像素信息。上式可以扩展为:

这里写图片描述
为彩色图像各个通道的权值,可取0.29,0.11,0.58,或者0.33。

  • (3)光滑边的容量:p, q为衣服图像中相邻两像素:
    这里写图片描述
    于是网络图构建完成,如图所示:
    这里写图片描述

4.基于图割算法的图像分割

本文以图割算法为基本框架,采用基于图像分割的办法来实现对于感兴趣物体的立体匹配。由于彩色图像分割算法会影响到后期立体匹配的结果,所以选取合适的分割算法非常重要。

基于自动化非交互的分割方法可能会把相同视差的区域分开或者隐去了图像的部分细节信息,这就造成了误差,而消除误差需要引入其他方法,如通过引入局部匹配算法为分割模版提供初试视差估计等方法,但这些方法提升了立体匹配算法的整体复杂度,而且没有有效利用分割信息。所以本文采用基于图割算法的图像分割,在构建立体匹配网络图的同时进行图像分割。

在图像分割问题中我们定义如下的能量函数形式:
这里写图片描述

传统基于图割算法的图像分割将上式映射为求解对应加权图的最大流/最小割问题,对于低分辨率的简单图像交互分割效果良好但是计算复杂度较高,内存开销大。为了提高分割速度并且适用于高分辨率图像,将图像分割融入立体匹配的流程中。本文采用文献[22]中的方法,通过添加辅助索引节点,并使用新的能量函数形式:
这里写图片描述

加速分割并减少运算量。公式(5)数据项中跟表示前景物体跟背景的非归一直方图,平滑项中
这里写图片描述,为图像中所有⊿I的均值。该方法简化了图割计算时间,并且得到了非常精准的分割结果。如下所示(蓝色种子点用来标记背景,红色种子点用来标记前景):

这里写图片描述这里写图片描述
baby1左视图种子点设置左视图分割结果
这里写图片描述这里写图片描述
baby1右视图种子点设置右视图分割结果

5.图割算法立体匹配

在立体匹配问题中,视差图的标号问题可以等价为全局能量函数的最小化求值问题,通常表示为Greig能量函数形式
这里写图片描述
在图1中,点表示源点,点表示汇点,视差边对应于能量函数式(1)中的第一项,平滑边对应于能量函数第二项。求解式(1)的能量函数的最小值可以等价为求解图的最小割问题,获得全局最优的视差图。

为了减少立体匹配的运算量,本文根据图像分割的结果得到感兴趣物体与分割模版,由分割模版构建网络图,使用图割算法进行立体匹配,有效利用了分割信息。综上所述本文算法可以概括为两大步骤:1感兴趣目标的提取,2利用网络图进行立体匹配。算法流程图如图2所示:

这里写图片描述
Figure 2 Flow chart of the Algorithm

本文相对于传统方法,根据每个像素构建网络图的算法有所不同。对于图,在两端分别添加源点,汇点之后,只在到中每个属于左视图分割模版中标记为目标的像素点之间添加边,在T到集合即立方体网络上与平面相对的另一个面上的节点,添加对应到汇点的边。通过上述方法,可以大大减少计算量。

为了进一步优化匹配结果,本文在对网络图中视差边的处理上,针对彩色图像采用RGB三通道分开处理,用线性最近邻插值算法在图像的横坐标方向添加了亚像素信息。即将(2)式扩展为:
这里写图片描述
式中为彩色图像各个通道的权值。

按照上述的方法法构造网络图,并给各个边赋相应的权值,采用基于增广路的最大流算法求解,得到全局最小值,即为最优视差匹配。

参考文献

[16]Boykov Y, Kolmogorov V. An experimental comparison of min-cut/max-flow algorithms for energy minimization in vision[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2004, 26(9): 1124-1137.
[19]Roy S, Cox I J. A maximum-flow formulation of the n-camera stereo correspondence problem[A]// IEEE International Conference on Computer Vision[A], 1998 January 4-7, Bombay India:492-499.
[20]Hong L, Chen G. Segment-based stereo matching using graph cuts[A]// IEEE Conference on Computer Vision and Pattern Recognition[C],2004 June 27-July 2,Washington DC USA:74-81.
[23]Tang M, Gorelick L, Veksler O, et al. GrabCut in One Cut[A]// IEEE International Conference on Computer Vision[C], 2013 Dec 01 - 08, Sydney, Australia 1769-1776.
[24]王年, 范益政, 鲍文霞等. 基于图割的图像匹配算法[J]. 电子学报, 2006, 34(2):232-236.
[25]Scharstein D, Szeliski R. A taxonomy and evaluation of dense two-frame stereo correspondence algorithms[C]// Stereo and Multi-Baseline Vision, 2001. (SMBV 2001). Proceedings. IEEE Workshop on. IEEE, 2001:131-140.
[28]Deng Y, Yang Q, Lin X, et al. A symmetric patch-based correspondence model for occlusion handling[C]// Proceedings / IEEE International Conference on Computer Vision. IEEE International Conference on Computer Vision. 2005:1316-1322 Vol. 2.
[29]Freeman W T. Comparison of graph cuts with belief propagation for stereo, using identical MRF parameters[C]// Computer Vision, 2003. Proceedings. Ninth IEEE International Conference on. IEEE, 2003:900.
[30]Kolmogorov V. Graph based algorithms for scene reconstruction from two or more views[D]. Cornell University, 2004.
[31]Kolmogorov V, Zabih R. Multi-camera scene reconstruction via graph cuts[M]//Computer Vision—ECCV 2002. Springer Berlin Heidelberg, 2002: 82-96.

论文资源合集

立体匹配综合论文集 : http://download.csdn.net/detail/wangyaninglm/9591251

基于图像分割的立体匹配论文合集 : http://download.csdn.net/detail/wangyaninglm/9591253

并行立体匹配论文合集 : http://download.csdn.net/detail/wangyaninglm/9591255

基于置信传播的立体匹配论文合集 : http://download.csdn.net/detail/wangyaninglm/9591256

基于稠密匹配的论文合集: http://download.csdn.net/detail/wangyaninglm/9591259

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度相机之TOF原理详解

/*******************************************************************************************************************本文转载源链接没有找到&#xff0c;若有幸被原创作者访问到&#xff0c;请留下原出处&#xff0c;我会更新&#xff0c;谢谢&#xff0c;转载至我的博…

nodejs npm常用命令

npm是一个node包管理和分发工具&#xff0c;已经成为了非官方的发布node模块&#xff08;包&#xff09;的标准。有了npm&#xff0c;可以很快的找到特定服务要使用的包&#xff0c;进行下载、安装以及管理已经安装的包。 1、npm install moduleNames&#xff1a;安装Node模块安…

centos 7 /etc/rc.local 开机不执行的问题

最近发现centos7 的/etc/rc.local不会开机执行&#xff0c;于是认真看了下/etc/rc.local文件内容的就发现了问题的原因了 1234567891011#!/bin/bash# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES## It is highly advisable to create own systemd services or udev rules# …

深度相机(二)--结构光深度测距

原文&#xff1a; http://blog.sina.com.cn/s/blog_80ce3a550100wg5j.html http://blog.csdn.net/u013360881/article/details/51395427 网上资源&#xff1a;http://eia.udg.es/~qsalvi/recerca.html 结构光编码&#xff1a; 在3D 的深度获取上&#xff0c;最为常见的方法是类…

几种特别的颜色参数

switch (buttonIndex) { case 0: aColor [UIColor redColor]; bColor [UIColor colorWithRed:0.97 green:0.68 blue:0.75 alpha:1.0];// 鸨色 break; case 1: aColor [UIColor orangeColor]; bColor [UIColor colorWithRed:1.0 green:0.87 blue:0.72 alpha:1.0];// 肌色 br…

linux 程序包管理5 编译安装

1.二进制程序的访问方法vim /etc/profile.d/apache.shPATH/usr/local/apache/bin:/usr/local/apache/sbin$PATHexport PATH2.头文件输出给系统ln -sv /sur/local/apache/include /usr/include/httpd3.库文件输出vim /etc/ld.so.conf.d/httpd.conf/usr/local/apache/binldconfig…

用python实现模拟登录人人网

用python实现模拟登录人人网 字数4068 阅读1762 评论19 喜欢46我决定从头说起。懂的人可以快速略过前面理论看最后几张图。 web基础知识 从OSI参考模型&#xff08;从低到高&#xff1a;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;会话层&a…

双目相机--双目视差与深度距离关系推导详解

相机成像的模型如下图所示&#xff1a; P为空间中的点&#xff0c;P1和P2是点P在左右像平面上的成像点&#xff0c;f是焦距&#xff0c;OR和OT是左右相机的光心。由下图可见左右两个相机的光轴是平行的。XR和XT是两个成像点在左右两个像面上距离图像左边缘的距离。 -----------…

SQL Server有这些属性吗

2019独角兽企业重金招聘Python工程师标准>>> Navicat for SQL Server是一个全面的图形化方式管理数据库&#xff0c;可进行创建、编辑和删除全部数据库对象&#xff0c;例如表、视图、函数、索引和触发器&#xff0c;或运行SQL查询和脚本&#xff0c;查看或编辑BLOB…

Android中常见功能包描述

在Android中&#xff0c;各种包写成android.*的方式&#xff0c;重要包的描述如下所示&#xff1a;android.app &#xff1a;提供高层的程序模型、提供基本的运行环境android.content&#xff1a;包含各种的对设备上的数据进行访问和发布的类android.database &#xff1a;通过…

【立体视觉】双目立体标定与立体校正

from&#xff1a;https://blog.csdn.net/u011574296/article/details/73826420 参考&#xff1a; 机器视觉学习笔记&#xff08;6&#xff09;——双目摄像机标定参数说明 机器视觉学习笔记&#xff08;8&#xff09;——基于OpenCV的Bouguet立体校正 双摄像头立体成像(三)-畸变…

bootstrap .col-md-6 文字居中问题处理

转载于:https://www.cnblogs.com/benbenfishfish/p/5672520.html

使用jd-gui+javassist修改已编译好的class文件

1.原因&#xff1a;因为公司代码管理不当导致源码丢失&#xff0c;只好已编译好的class文件进行修改 2.首先先在myeclipse中新建java项目并导入javassist 3.将需要修改的文件放到指定文件夹下 4..在项目中添加以下代码 package dtj;import javassist.ClassPool; import javassi…

机器视觉学习笔记(4)——单目摄像机标定参数说明

from&#xff1a;https://blog.csdn.net/xuelabizp/article/details/50314633机器视觉学习笔记&#xff08;4&#xff09;——单目摄像机标定参数说明 标签&#xff1a; 机器视觉1.针孔摄像机模型 在介绍摄像机标定参数之前&#xff0c;需要先简单说一下针孔摄像机的原理。投影…

mysql 5.6 binlog组提交

mysql 5.6 binlog组提交实现原理http://blog.itpub.net/15480802/viewspace-1411356 Redo组提交 Redo提交流程大致如下 lock log->mutex write redo log buffer to disk unlock log->mutex fsync Fsync写磁盘耗时较长且不占用log->mutex&#xff0c;也就是其执行期间其…

python基础(正则表达式)

http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 转载于:https://www.cnblogs.com/wanderingzj/p/5253325.html

LinuxShell脚本之利用rsync+ssh实现Linux文件系统远程备份

功能介绍&#xff1a;该脚本用于定期&#xff08;结合crontab一起使用&#xff09;将本地目录通过rsyncssh传输到远程服务器&#xff0c;每次执行都生成一个带有以时间命名的目录&#xff0c;并且当前最新版本的数据链接到一个名字叫current的符号链接上&#xff0c;便于查找和…

张正友相机标定Opencv实现以及标定流程标定结果评价图像矫正流程解析(附标定程序和棋盘图)

from&#xff1a;https://blog.csdn.net/dcrmg/article/details/52939318使用Opencv实现张正友法相机标定之前&#xff0c;有几个问题事先要确认一下&#xff0c;那就是相机为什么需要标定&#xff0c;标定需要的输入和输出分别是哪些&#xff1f;相机标定的目的&#xff1a;获…

软件测试技术 homework2

Code 1 1.fault是迭代的条件应该是 i > 0 而不是 i > 0 2.当测试用例是 [3,2,1],1 时。 3.当测试用例是 [2,3,4],1 。 4.当测试用例是 [2],1 。 Code 2 1.fault是应该逆序迭代&#xff0c;正确为for(int i x.length-1;i>0;i--) 2.当测试用例是&#xff3b;0,1&#x…

header的安全配置指南

0x00 背景 在统计了Alexa top 100万网站的header安全分析之后&#xff08;2012年11月 - 2013年3月 - 2013年11月&#xff09;&#xff0c;我们发现其实如何正确的设置一个header并不是一件容易的事情。尽管有数不胜数的网站会使用大量有关安全方面的header&#xff0c;但 并没有…