| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 基于图像的三维重建——深度图计算方法1-SGM/tSGM(9) -> 正文阅读 |
|
[人工智能]基于图像的三维重建——深度图计算方法1-SGM/tSGM(9) |
作者:recommend-item-box type_blog clearfix |
文章目录立 体 算 法 流 程 介 绍>全局立体匹配算法??全局立体匹配算法主要是采用了全局的优化理论方法估计视差,建立全局能量函数,通过最小化全局能量函数得到最优视差值。通过二维相邻像素视差之间的约束(如平滑性约束)而得到更好的匹配效果,但是对内存的占用量大,速度慢不适合实时运行。主要的算法有图割(graph cuts)、置信传播(belief propagation)、动态规划等算法。 >局部立体匹配算法??主要是采用局部优化方法进行视差值估计,局部立体匹配算法有SAD,SSD等算法,与全局立体匹配算法一样,也是通过能量最小化方法进行视差估计,但是在能量函数中,只有数据向,而没有平滑项。该算法由于每个像素计算互不干扰可以并行计算,所以可以实时。但由于所基于的局部窗口视差相同的假设在很多情况下并不成立导致匹配效果较差。 >半全局立体匹配算法SGM??综合上述局部和全局算法的优缺点,半全局算法依旧采用全局框架,但是在计算能量函数最小化的步骤时使用高效率的一维路径聚合方法来代替全局算法中的二维最小化算法,使用一维最优来近似二维最优,得到的视差图在效果上和全局算法没有太大的差别,但是算法效率却有非常大的提升。 SGM 算 法 原 理 详 解>深度图初始化??深度图初始化主要有两种方法:1.Delaunay三角剖分;2.稀疏点投影到对应帧,得到稀疏深度图,然后三角化,将三角化内平面插值得到完整的深度图。 ??接下来介绍Delaunay三角化的三个重要特性:空圆特性、最大化最小角、对偶性。空圆特性是指点集P的Delaunay三角剖分满足P内任意一个点都不在P内任意一个三角面片的外接圆内。其中任意三个点的外接圆不包含第4个点即任意三个点的外接圆是空的;Delaunay三角剖分中的所有三角形都满足空圆特性;若四边形中的一个三角形不满足空圆特性,则将对角线互换之后构成的新的三角形一定满足空圆特性。空圆特性表现形式如下图所示: ??最大化最小角指的是Delaunay三角剖分最大化三角面片内三角形的最小角,Delaunay三角剖分中所有三角形的内角中最小角大于任何其他剖分的最小角,具体表现形式如下图所示: ??对偶性指的是Delaunay 三角剖分与Voronoi Diagram是互为对偶的关系,关系如下图所示: ??以Bowyer-Waston算法为例简单介绍一下Delaunay三角剖分的原理。Bowyer-Waston算法是一种增量算法,它的工作原理是向所需点子集的有效Delaunay三角剖分添加点,一次添加一个点。每次插入后,其外接圆包含新点的所有三角形都会被删除,留下一个星形多边形孔,然后使用新点重新对其进行三角剖分。通过利用三角剖分的连通性来有效定位要删除的三角形,该算法可以采用时间复杂度为O(N logN)的操作来对N个点进行三角剖分,尽管存在特殊的退化情况,在这种情况下,这会上升到O(N2)。下图是它的图形化解释: C++代码实现网址:https://github.com/Bl4ckb0ne/delaunay-triangulation,伪代码如下所示:
??2.稀疏点投影到对应帧,得到稀疏深度图,然后三角化,将三角化内平面插值得到完整的深度图(具体形式如下图所示) >匹配代价计算??文献[1]中介绍的SGM的代价计算是基于互信息(Mutual Information,MI)的匹配测度计算算法来计算匹配代价,互信息是一种影像明暗变化不敏感的相关性测度。但由于原理复杂且计算需要迭代效率比较低,在实际应用中,更有效的方法如Census变换,故在此不再介绍MI。 >代价聚合??采用全局立体匹配算法,即找到每个像素的最优视差使得整体能量最小。能量方程如下: ??为了处理这种情况,我们对P2进行调整,公式如下所示,如果像素和它的邻域像素亮度差很大,那么该像素很可能是位于视差非连续区域,则一定程序上允许其和邻域像素的视差差值超过1个像素,对应超过1个像素的惩罚力度就适当减小一点。 ??某一维路径r代价计算公式如下: >视差计算??代价聚合后,每个像素直接找聚合代价最小对应的视差值就是我们所要求的视差值。 >视差优化??视差一致性检查 ??亚像素计算 tSGM 原 理 介 绍??与SGM的区别主要是在代价聚合的时候:1.使用金字塔图像计算视差(由粗糙到精即从低分辨率到高分辨率计算匹配代价);2.每个像素的视差范围都不同,只在真值附近搜索大大减少了搜索范围和内存占用,如下图: ??每个像素的视差范围计算方法:如果当前像素值d(x)无效,搜索窗口win=31,反之win=7;以当前像素为中心,窗口大小win搜索所有有效视差都存储在disps中,disps的大小是numdisp,中值是disp,最大值是max,最小值min:
参 考 文 献 与 代 码 整 体 框 架??参考文献:[1]. Stereo Processing by Semi-global Matching and Mutual Information 文章参考: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:20:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |