单目稠密深度图(vins mono可用)
在本文中,我们提出了一种新的机器人导航建图方法。通过使用单目局部移动相机 ,高质量的稠密深度图被实时估计及融合到3D重建中。 光强图像的四叉树结构用于通过以多种分辨率估计深度图来减少计算负担。 提出了基于四叉树的像素选择和动态置信传播以加速建图过程:根据四叉树中的水平,利用计算资源选择和优化像素。 求解的深度估计被进一步插值并在时间上融合到全分辨率深度图中,并使用截断的带符号距离函数(TSDF)融合到密集的3D图中。我们使用公共数据集将我们的方法与其他最先进的方法进行比较。 板载无人机自主飞行还用于进一步证明我们的方法在便携式设备上的可用性和效率。 为了大众的利益,该算法开源发布在“ https://github.com/ HKUST-Aerial-Robotics /open_quadtree_mapping”。
摄像机广泛用于机器人系统,因为它们提供有关环境的信息数据,同时保持低功耗并产生小的占地面积。具体来说,我们对单目视觉惯性系统[1] [2]感兴趣,因为它们可以使用单个摄像机和惯性测量单元(IMU)的最小传感器组为机器人提供导航所需的信息。然而,为定位而构建的稀疏或半密集地图不足以完成诸如避障等任务。为了感知周围环境,通常使用RGB-D相机,激光雷达或立体相机等附加传感器。然而,这些传感器的重量,尺寸和功耗使得它们不适用于有效载荷和功率有限的机器人。在本文中,我们提出了一种单目稠密建图方法,可以使用单个局部移动摄像机实时估计高质量深度图并实时建立稠密3D模型,如图1所示。
生成高质量稠密深度图是单目稠密建图系统的关键步骤。 为了应用于机器人,深度图估计必须在时间上有效并且密集地覆盖包括低纹理区域的图像。 我们的方法受到单目深度估计的两个观察的启发:
(1)考虑到块匹配成本和深度图平滑度,通常需要通过最小化一个能量函数来估计低纹理区域的深度并平滑深度图的全局优化[5],[6]。然而,昂贵的计算使它们无法在实时应用中广泛使用。
(2)在强度图像的相同四叉树块内的像素共享相似的光强和深度值。四叉树结构被广泛使用(例如,在图像编码[7]中),像素根据其局部纹理以树结构组织:具有相似强度值的像素可以通过将它们分配到相同的四叉树块并且在相应的决议。如图2所示,在大多数情况下,强度图像中的像素的四叉树水平等于或者比深度图像中的更高。这意味着在强度图像中共享相同四叉树块的像素也属于深度图像中的相同块,因此共享相似的深度值,但反之亦然。换句话说,像素的深度可以以与强度图像中的四叉树水平相对应的分辨率来表示。
受这两个观察的启发,我们提出了一种新颖的单目稠密建图方法,该方法使用单个局部移动摄像机估计稠密深度图并构建3D重建。 通过全局优化改善了深度密度和精度,并且通过估计与强度图像的四叉树结构相对应的多个分辨率中的深度图来减少计算负担。 具体而言,根据它们的四叉树水平选择像素,其密度与它们需要估计的分辨率成比例。 动态置信传播(Dynamic belief propagation)用于以粗到细的方式估计所选像素的深度,其中以相应的分辨率提取深度以获得效率。 所有深度估计都被内插到完整的密集深度图中,并在时间上与前深度图融合。 最后,深度图融合成高质量的全局3D地图。
我们使用公共数据集将我们的工作与其他最先进的单目稠密建图方法进行比较。 不同环境下的机载自主飞行也用于证明我们的方法在无人机应用中的可用性。 我们的方法的贡献如下:
①一种新颖的像素选择方法,根据图像的四叉树结构中的水平选择像素来估计深度。 所选像素分布在整个图像上,并引起对高纹理区域的更多关注。
②动态信任传播,以粗略到精细的方式估计所选像素的深度。 像素根据其四叉树水平利用计算资源进行优化。 优化产生高质量深度估计,同时通过跳过粗分辨率像素来保持效率。
③一种单目稠密建图系统,仅使用局部移动摄像机即可实时生成高质量的密集深度图。 如实验和补充视频所示,深度图可以直接融合到3D地图中,用于3D重建和无人机自主飞行。 该系统也作为社区的开源发布。
已经提出了许多方法来解决单目稠密建图问题。
在计算机视觉中,使用图像重建环境的问题也称为运动结构(SfM)。 给定一系列图像,SfM重建环境结构并估计相机运动。 虽然取得了令人瞩目的成果,但结果通常很少,需要离线处理。 另一方面,我们的方法使用图像和相应的相机运动来实时地密集地重建环境。
DTAM [8],VI-MEAN [9]和REMODE [10]是使用全局或半全局信息解决稠密建图问题的方法。 DTAM [8]通过累积多个帧来构建成本量,并使用总变差优化来提取深度图。 VI-MEAN [9]使用半全局匹配[11](SGM)来规范成本量。 然而,4路径优化导致VI-MEAN估计深度图中的“条纹”伪像[9]。 REMODE [10]使用总变差来平滑通过概率更新估计的深度图像。 由于优化不像DTAM [8]那样在成本量中搜索深度,因此REMODE [10]无法很好地处理低纹理区域。
MonoFusion [12],MobileFusion [13]和3D建模[14]从双视图立体匹配构建稠密地图。 将每个输入图像与选定的测量帧进行比较。 尽管双视图匹配很快,但这些方法在单目情况下包含许多异常值。 后处理技术,例如左右一致性检查,大量成本消除,随时间的一致性,用于处理问题。
多级映射(Multi-level mapping)[15]是与我们的工作最相似的方法。 在多级映射[15]中,四叉树结构用于增加补丁的局部纹理,以便可以使用本地信息估计更多像素。 然后执行总变差优化以从多分辨率平滑深度图。 该方法是有效的并且增加了深度图的密度。 多级映射[15]和我们的方法之间最重要的区别是估计深度图的密度。 使用全局优化,我们的方法可以恢复纹理低,甚至没有纹理的区域的深度。 另一方面,多级映射[15]使用局部强度信息估计像素的深度。 因此,仅可以估计具有足够梯度的像素的深度。 估计的深度图的密度对于机器人应用的安全性和3D重建的完整性是重要的。
受到图像的四叉树结构与相应深度图之间的关系的启发,我们的方法解决了多分辨率的深度估计,并将它们融合成高质量的全分辨率深度图和稠密网格。
定义T w,k ∈SE(3)为世界坐标系w下拍摄第k张图像时相机的位置(pose)。
定义第k张光强图像为I k :Ω⊂R 2 →R
通过相机投影公式π(x c )=u,一个相机坐标系下的3D点x c =(x,y,z) T 可以投影成图像上的一个像素u:=(u,v) T ∈Ω
一个像素可以反投影回相机坐标系c到点x c =π -1 (u,d),其中d是像素的深度(depth)
在接下来的部分中,T w,k 由单目-惯性系统或数据集提供,我们假设相机姿势是准确的并且对于每个帧都是固定的,将来不会改变,这是典型的视觉测距系统的情况。 用闭环系统重建环境超出了本文的范围。
系统的输入为I i 及其对应的相机位置T w,i ,对于每张输入图像I k ,使用I k 作为参考图像和多个之前输入的图像来估计深度图(depth map)。
我们使用四叉树为每个像素找到最合适的分辨率表示。 对于每个输入图像I k ,我们计算3级四叉树结构,其中最精细的级别对应于4×4像素块,最粗糙的级别对应于16×16像素块。 如图2所示,四叉树的同一块中的像素共享相似的强度,因此可以一起估计深度值。 选择四叉树块中的第一个像素以构建匹配成本向量并使用动态置信传播来估计深度(construct the matching cost vector and estimate the depth using dynamic belief propagation)。 图4示出了基于图像的四叉树结构选择像素的示例。
对于在该步骤中未选择的像素,将通过第IV-E部分中的内插和融合来获得它们的深度估计。 根据强度图像的四叉树结构选择像素使我们能够以高效率求解深度图而不会牺牲很多精度。
计算四叉树选择像素的匹配成本向量以用于动态置信传播。 我们的方法选择五个先前的附近帧作为测量帧。 在这项工作中,我们采样均匀分布在逆深度空间上的N d 深度值。 采样深度d和相应的深度索引l具有以下关系:
P1和P2控制深度图的平滑度,如SGM中所示。 注意,虽然公式6与SGM [11]中的公式相同,但消息更新和传递是不同的。 SGM沿着几个预定义的1D路径迭代成本,而我们的方法在2D图像网格上传递消息。 2D全局优化使我们的方法能够在SGM中生成没有“条纹”伪像的平滑深度图。 在并行缩减操作的帮助下,将消息从像素p更新到像素q可以加速到O(log(Nd))时间。 算法1显示了在O(log(Nd))时间内更新像素消息的方法。 使用算法1并行更新消息。
尽管四叉树选择像素的深度估计在图像上扩散,但它不是完全密集深度估计。 在本节中,我们首先将估计内插到完整的密集深度图中,然后以概率方式将它们与之前的结果在时间上融合。
1)深度插值:在插值期间,为了进一步利用包含高梯度纹理但不是四叉树采样的像素,我们使用类似于Eigen等人的方法估计这些像素的深度[16]。 高梯度估计在GPU上完全并行化,并且需要大约2ms来更新一帧。
来自动态置信传播和来自高梯度估计的深度估计被组合并在空间上内插到对应于输入帧Ik的全分辨率深度图Dk中。 通过动态置信传播和高梯度估计估计的深度覆盖整个图像并且更多地关注纹理丰富的区域。 插值估计得到完全密集的结果是解决光流的常用方法[17]。 在这里,我们通过最小化least-square cost来提取全密集深度图。
最小化成本E在计算上是昂贵的。 在这里,我们采用Min等人的方法。 [18]近似于两个一维插值问题中的问题。 通过高斯消元可以有效地解决一维中的深度插值。 我们首先在行方向上插入深度,然后在列方向上插入深度。
2)时间融合:全密集深度图以概率方式与先前的估计进一步融合,以拒绝异常值估计。 使用由Vogiatzis等人提出的异常值鲁棒模型对每个像素的估计进行建模[19]。
使用Klingensmith等人提出的方法将过滤的深度融合到全局图中。[20]。 由于动态可信度传播,插值和时间深度融合,我们的深度估计包含非常少的异常值,因此我们直接融合输出而无需任何额外的滤波器。
我们的方法与GPU加速完全并行化。 即使对于便携式设备,例如Nvidia Jetson TX1,效率也使得3D重建能够实时运行。 下面列出的参数值是根据经验找到的,我们发现它们在所有实验中都能很好地工作。 这可以解释为使用对不同图像内容稳健的全局优化来估计深度图。
输入图像强度在0和1之间缩放,以避免潜在的数字问题。 在IV-C部分中计算匹配成本矢量期间,计算Nd = 64深度值,dmin = 0.5m,dmax = 50.0m。 在第IV-D节中,P1和P2分别设置为0:003和0:01,以平衡估计的深度图的平滑度和不连续性。
毕业设计——品牌VI设计的思路
毕业设计——品牌VI设计的实践与深度解析 品牌VI设计是一个集策略与艺术于一体的复杂过程,旨在通过明确的品牌概念、文化内涵和视觉表现,构建出品牌形象的统一识别系统。它涵盖了品牌定位、视觉识别和传播策略,其中,VI手册中的80-100项内容如LOGO规范、色彩体系、图形应用等,都是品牌信息的精准传达工具。
VI设计意义如何
vi设计的意义 vi设计是打造品牌形象的重要方法之一,vi设计不仅仅只是表面工程,他更多的是展示企业的内在形象,在为企业打造vi视觉设计的时候,通常是要根据企业的不同性质量身打造出符合市场的需要的企业形象设计,来实现公司的视觉和品牌的全球统一性。
新手入门VI设计,需要学习哪些东西
图形中是以其中一种图形为主体,另一种为辅助的图形,叫辅助图。这主要是用于图形查询时的一种鉴别. VI设计的困扰 所谓VI设计,是指将以标志为核心的所有视觉识别要素,运用统一的整体传达系统,传达给组织内部和外部人群,从而实现良性认同和沟通。 VI设计的作用,一方面使得旧形象获得更新或升级,使其更具美感和时代感,...
立体视觉与场景流?
用作立体视觉研究的图像在时间、视点、方向上有很大的变动范围,直接受所应用领域的影响。立体视觉的研究主要集中在三个应用领域中,即自动测绘中的航空图片的解释,自主车的导引及避障,人类立体视觉的功能模拟。在立体视觉的应用领域中,一般都需要一个稠密的深度图。场景流是空间中场景运动形成的三维运动...
品牌全套VI设计包括哪些内容,做一整套报价多少算合理?
在确定品牌全套VI设计的报价合理性时,需考虑你的具体需求深度。a、无需深入市场调查 b、无需详尽的设计检测与反馈 c、减少应用设计项目数量这些因素会影响成本。如果需求基础且时间紧迫,三人团队在一个月内完成,预算可能在三五万左右。而如果需求专业且时间充裕,涉及市场调查、多轮设计迭代等,则至少...
一款vi设计需要注意什么?
中汇设计(专业VI设计公司)解答:VI设计是指企业视觉识别系统的设计,它包括了企业在商业活动中使用的各种形象标识、品牌标志、文字字体、配色等一系列要素。下面是VI设计需要注意的几个方面:品牌定位:VI设计是企业品牌建设的重要组成部分,因此,在进行VI设计之前,必须明确企业的品牌定位和定位目标,以...
旅游景点VI设计 是什么意思?希望了解的朋友解释下
具备独特的整体风格和鲜明的个性特征,以使它所代表的企业从众多的可比较对象中脱颖而出,另人过目不...一套完整的VI目录一、VI基础设计项目1.企业标志设计企业标志及标志创意说明标志墨稿标志反白效果图标志...但在如何把握旅游文化基调、市场理念、深度扩展上,许多景区没有概念,宣传的目的性、功能性、艺术性需要...
整套vi设计可以从什么方面创新
在工作中,当我们黔驴技穷,为找不出一个好的创意解决方案而挠头时,可以吸取日常工作、生活中的所见所闻,从其中的一个点,或者一个表现出发,借鉴其成功之处,拓宽创意思路,结合项目现状,给出优质的创意设计。创意方法之二——思维导图创意 特点:要求有较好的视觉表现力,有思想深度、延展度的...
SfM+MVS重建
MVS(Multi-View Stereo)技术建立在SfM基础上,利用多个视角的图像信息,从不同角度对场景进行立体重建。MVS主要步骤为深度图计算、深度融合、点云生成,可选进行表面重建。MVS通过计算不同视角图像的深度图,融合后生成一致的深度图和稠密点云表示。SfM与MVS结合,利用SfM估计的相机参数,进一步计算深度图...
LOGO和VI的区别是什么?
二者在包含内容、作用上、设计深度上有所区别。一、包含内容不同 logo只是一个标志,可以是图形,可以是文字,可以是字母,也可以是其结合体,最终形成的只是一个平面图案。VI则不同,它是一整套识别系统,包括标志、基础办公用品和导向元素。可以说,logo只是VI的一部分,VI包含logo。二、作用上的区别 ...
晁琛消炎: //两个算法使用的全局变量 --- bool visited[MAX_VERTEX_NUM]; // 访问标志数62616964757a686964616fe59b9ee7ad9431333264663039组 Status (* VisitFunc)(int v); // 函数变量 void DFSTraverse(Graph G, Status (*Visit)(int v)) {// 对图G作...
瓜州县17749153203: 什么是帷幕注浆 - ?
晁琛消炎: 帷幕注浆是一种注浆技术,注浆技术是用液压或气压将能凝固的浆液按设计的浓度通过特设的注浆钻孔,压送到规定的岩土层中,填补岩土体中的裂缝或孔隙,旨在改善注浆对象的物理力学性质,以满足各类工程的需要.按其功能不同可分为防渗注浆和加固注浆,防渗注浆是为增强各种基础抗渗能力而被广泛采用的一种方法,它是在具有合理孔距的钻孔中,注入浆液,使各孔中注浆体相互搭接以形成一道类似帷幕的混凝土防渗墙,以此截断水流,从而达到防渗堵漏的目的,也称为帷幕注浆.
瓜州县17749153203: 基于深度学习的单目图像深度估计有哪些比较 - ?
晁琛消炎: 1、单目视觉是无法准确获得深度信息的,即只能得到平面信息.不能得到立体信息.深度信息,不一定指目标到相机之间的距离,也可以反应其它的信息,如某个物体的信息、相对位置之类的.不过一定都是跟光轴方向的深度有关.单目视觉可以测量距离,...3601
瓜州县17749153203: 要求采用邻接矩阵作为无向图的存储结构,邻接表作为有向图的存储结构,完成无向图和有向图的建立,并对建 - ?
晁琛消炎: #include"utility.h" #include"adj_matrix_undir_graph.h" #include"adj_list_dir_graph.h" #include"dfs.h" #include"bfs.h" int main(void) { int n,j=0,i=0; int m,e,b=0; char vexs[20],c; char nums[20]; cout<<"输入无向图的顶点个数n:"<<endl; ...
瓜州县17749153203: 编写一个程序实现图的遍历运算,出图的深度优先遍历序列(递归算法) - ?
晁琛消炎: lz 问的也太easy了 其实这样的代码 度娘那 何止千万? 随便写个深搜: //如果是按邻接表存放 void dfs(graph G,int i) {if(G.vertices[i].firstarc==NULL) return;//下面开始搜ArcNode *p;//弧指针for(p=G.vertices[i].firstarc;p;p=p->nextarc){//如果访问过则置真if(!isvisited()){.............h=下一个要搜的点// 写一个定位函数就ok了访问函数;dfs(G,h);// 不需要恢复了...}} }
瓜州县17749153203: 维氏硬度如何测量渗碳深度 - ?
晁琛消炎: 这是根据有效渗碳层深度的对应硬度梯度关系的一种确定方法,不同的含碳两对应不同的硬度值.做法是按随炉渗碳淬火的试样的沿渗碳层深度方向的不同截面测量其硬度值,依此绘制坐标图:垂直坐...
瓜州县17749153203: 图的深度优先遍历c语言算法 - ?
晁琛消炎: #include <stdio.h> int m,n; bool w[100][100],visited[100]; void dfs(int i){ visited[i] = true; printf("%d ",i); for(int j = 0;j<n;j++) if(w[i][j] && !visited[j]) dfs(j); } int main(){ scanf("%d%d",&m,&n); int a,b; for(int i = 0;i<m;i++){ scanf("%d%d,&a,&b); w[a][b...
瓜州县17749153203: 数据结构图的深度遍历 - ?
晁琛消炎: 图的深度优先遍历类似于树的前序遍历.首先访问出发点a,并将其标记为已访问过;然后依次从a出发搜索a的每个邻接点b,c,e.若b未曾访问过,则以b为新的出发点继续进行深度优先遍历,直至图中所有和源点a有路径相通的顶点(亦称为从...
瓜州县17749153203: 求助 matlab 矩阵 一列x一列y 一列z 怎么深度画图 - ?
晁琛消炎: 可以用scatter绘制散点图.如果想画整个平面,可以先用griddata或interp2插值后用pcolor或contourf绘制伪彩色图或等高线图例子【matlab版本7.2】 load seamount%一列...