Learning to Reconstruct 3D Manhattan Wireframes from a Single Image 翻译

摘要

       在本文中,我们提出了一种通过有效利用全局结构规律从单个图像获得紧凑而准确的 3D 线框表示的方法。
   我们的方法训练卷积神经网络以同时检测显着连接点和直线,并预测它们的 3D 深度和消失点。 与最先进的基于学习的线框检测方法相比,我们的网络更简单、更统一,从而实现更好的二维线框检测。 借助来自并行性的全局结构先验,我们的方法进一步重建了完整的 3D 线框模型,这是一种适用于各种高级视觉任务(如 AR 和 CAD)的紧凑矢量表示。 我们对城市场景和真实图像的大型合成数据集进行了广泛的评估。 我们的代码和数据集已在 https://github.com/zhou13/shapeunity 上公开。

1. 介绍

       从 RGB 图像中恢复场景的 3D 几何图形是计算机视觉中最基本也是最具挑战性的问题之一。 大多数现有的用于获取 3D 几何的现成商业解决方案仍然需要主动深度传感器,例如结构光(例如 Apple ARKit 和 Microsoft Mixed Realty Toolkit)或 LIDAR(在自动驾驶中很受欢迎)。 虽然这些系统可以满足特定用途的需求,但它们受到传感器的成本、范围和工作条件(室内或室外)的限制。 最终输出的表示通常是密集的点云,它们不仅内存和计算密集,而且可能包含由于透明度、遮挡、反射等引起的噪声和错误。
       另一方面,传统的基于图像的 3D 重建方法,例如运动结构(SfM)和视觉 SLAM,通常依赖于局部特征。 尽管效率和可靠性一直在提高(例如,Microsoft Hololens、Magic Leap),但它们通常需要多个带有深度传感器的摄像头 [13] 以提高准确性。 最终的场景表示仍然是准密集点云,这些点云通常不完整、嘈杂且难以存储和共享。 因此,需要复杂的后处理技术,例如平面拟合 [11] 和网格细化 [14, 19]。 这种传统的表示方式难以满足手持相机、手机甚至无人机对高级 3D 建模、内容编辑和模型共享日益增长的需求。
       与传统的 3D 几何捕捉系统不同,人类视觉系统不会将世界视为均匀分布的点。 相反,人类在利用几何显着的全局结构(例如线条、轮廓、平面和光滑表面)来感知 3D 场景方面非常有效、高效和稳健[1]。 然而,视觉算法从局部图像特征中检测和利用这种全局结构仍然具有挑战性,直到深度学习的最新进展使得从标记数据中学习高级特征成为可能。 这些示例包括检测平面 [29, 18]、表面 [9]、2D 线框 [12]、房间布局 [34]、网格拟合的关键点 [30, 28] 以及来自多个图像的稀疏场景表示 [5]。
       在这项工作中,我们从学习到的线和交汇点特征推断全局 3D 场景布局,而不是像局部角一样的特征,如 SIFT [7]、ORB [21] 或线段 [10、4、23] 用于传统的 SfM 或视觉 SLAM 系统。 我们的算法学习检测一种特殊类型的线框,该线框由表示建筑物角落和边缘的连接点和线组成。 我们将我们的表示称为几何线框,并证明与某些全局先验(例如全局或局部曼哈顿 [2, 7, 23])一起,线框表示允许有效且准确地恢复场景的 3D 几何,即使是从单个输入 图片。 我们的方法训练神经网络来估计全局线和两种类型的深度连接点,并使用估计的深度和几何约束构建完整的 3D 线框。
       以前,人们一直在努力尝试借助 SUNCG [24, 31] 等 3D 合成数据集来理解室内场景。 我们的工作针对具有各种几何形状和纹理的自然城市环境。 为此,我们构建了两个包含合成和自然城市场景的新数据集。 图 1 显示了重建的采样结果,图 2 显示了我们系统的完整管道。
       本文的贡献。 与现有的线框检测算法(如 [12])相比,我们的方法
           • 利用单个神经网络联合检测连接点、线、深度和消失点,利用这些几何结构之间的紧密关系;
           • 学会区分两种类型的连接点:线和平面的物理交叉点“C 型连接点”,以及封闭的“T 型连接点”;
           • 从单个 RGB 图像中检测到的线和连接点恢复场景的完整 3D 线框。

        图1。列(a)显示了覆盖着groundtruth线框的输入图像,其中红点和蓝点分别表示C型和T型连接。列(b)显示了我们系统中预测的三维线框,带有灰度可视化深度。(c)列显示了(b)的备选视图。请注意,我们的系统可以恢复几何上突出的线框,而不受纹理线的影响,例如大本钟正面的垂直纹理图案

2. 方法

        如图 2 所示,我们的系统从一个神经网络开始,该网络将单个图像作为输入并联合预测多个 2D 热图,从中我们矢量化线和交点,并估计它们的初始深度值和消失点。 我们称这个中间结果为 2.5D 线框。 使用从与先前相同的网络估计的深度值和消失点,然后我们将线框从 2.5D 图像空间提升到完整的 3D 世界空间。

2.1. 几何表示

       在场景的几何线框 W = (V, E) 中,V 和 E ⊆ V × V 是连接点和线。 具体来说,E 代表来自两个平面的物理交叉点的线,而 V 代表 E 之间线的(物理或投影)交叉点。 与 [10, 12] 不同,我们的 E 完全排除了平面纹理线,例如图中大本钟的垂直纹理 1. 如此定义的 W 旨在捕捉全局场景几何而不是局部纹理细节。1 通过排除平面纹理线,我们可以将连接点分为两类。 令𝐽𝒗 ∈ {𝐶, 𝑇} 是𝒗 的结类型,其中每个结可以是C 结(𝐽𝒗 = 𝐶)或T 结(𝐽𝒗 = 𝑇)。 角 C 形接头是物理平面或边缘的实际交叉点,而 T 形接头是由遮挡生成的。  T 型连接(蓝色)和 C 型连接(红色)的示例可以在图 1 中找到。我们将它们表示为两个不相交的集合 V = V𝐶 ∪V𝑇 ,其中 V𝐶 = {𝒗 ∈ V |  𝐽𝒗 = 𝐶} 和 V𝑇 = {𝒗 ∈ V |  𝐽𝒗 = 𝑇}。 我们注意到 E 中 T 形结点的线数总是 1 而不是 3,因为 T 形结点不连接到 3D 中的两个前景顶点。 结点类型对于推断 3D 线框几何形状很重要,因为不同的 3D 先验将应用于每种类型。 2 对于每个 C 结点𝒗𝑐 ∈ V𝐶,将 𝑧𝒗𝑐 定义为顶点深度 空间。 对于每个咬合 T 形连接点𝒗𝑡 ∈ V𝑇,我们将𝑧𝒗𝑡 定义为背景中被遮挡线的深度,因为前景线深度总是可以从其他连接点恢复。 使用深度信息,由 C 形接头、T 形接头和线组成的 3D 线框提供了场景几何图形的紧凑表示。从单个图像重建这样的 3D 线框是我们的目标。

2.2. 从单个图像到2.5D表示

       我们的第一步是训练一个神经网络,从标记的数据集中学习所需的连接、线、深度和消失点。我们首先简要描述了网络的期望输出和网络的体系结构。培训网络的相关损失函数将在下一节中详细说明。
给定图像𝐼 对于场景,我们的神经网络的像素级输出由五个输出组成− 连接概率𝐽, 接合偏移𝑶, 边缘概率𝐸, 接合深度D和消失点𝑽:

       其中,带hats和不带hats的符号分别表示基本事实和神经网络的预测。每个符号的含义详见第2.2.2节。
       注:1在城市场景中,来自常规纹理(如立面上的窗户)的线条确实编码了精确的场景几何体[32]。神经网络仍然可以使用它们来推断线框,但不能将它们保留在最终输出中,最终输出的目的是仅给出几何体的紧凑表示。
             2另一种类型的连接是由与图像边界相交的线引起的。为了简单起见,我们将其视为C-连接。

图2。建议方法的总体管道

2.2.1网络设计

       我们的网络结构基于堆叠沙漏网络[22]。在进入网络之前,对输入图像进行裁剪并重新缩放为512×512。特征提取模块是网络的第一部分,它包括跨步卷积层和一个最大池层,用于将特征图的采样降低到128×128。以下部分包括𝑆 沙漏模块。每个模块将逐步对特征图进行下采样,然后再进行上采样。堆叠沙漏网络将逐渐细化输出地图,以匹配来自训练数据的监控。让𝑗给定𝑖第二个图像是𝐹𝑗(𝐼𝑖). 在培训阶段,要将总损失降至最低:

       哪里𝑖 表示训练数据集中图像的索引;𝑗 表示沙漏模块的索引;𝑁 表示一批训练图像的数量;𝑆 表示神经网络中使用的堆栈数;𝐿(·,·)代表憎恨个人形象的丧失;𝑌 ( 𝑗) 𝑖 表示图像的预测中间表示形式𝐼𝑖 从𝑗th沙漏模块,以及𝑌ˆ 𝑖 表示图像的基本真实中间表示𝐼𝑖 .
       单个图像的损失是损失函数的叠加𝐿𝑘 在下一节中指定:

       超参数𝜆𝑘 表示每个子项损失的重量。在实验过程中,我们设置𝜆 因此𝜆𝑘 𝐿𝑘 它们的规模相似。

2.2.2输出图和损耗函数

       连接图𝐽 和损失𝐿𝐽 . 地面真相交接图𝐽ˆ是输入图像的下采样热图,其值表示该像素中是否存在接合点。对于每种连接类型𝑡 ∈ {𝐶, 𝑇}, 我们估计了它的结热图

       哪里𝒑 是热图上的整数坐标,并且𝒗 是类型为的连接的坐标𝑡 在图像空间中。
根据[22],结热图的分辨率比输入图像的分辨率低4倍。
       由于某些像素可能包含两种类型的结,我们将结预测视为每像素两个二元分类问题。我们使用经典的softmax交叉熵损失来预测结图:

      

       哪里𝑛 是热图的像素数。结果𝐽𝑡(𝑥, 𝑦) ∈ (0,1)表示是否存在类型为的连接的概率𝑡 在[4]处𝑥, 4.𝑥 + 4) × [4𝑦, 4.𝑦 + 4) 在输入图像中。
       偏移图𝑶 和损失𝐿𝑶. 与输入图像相比,图像的分辨率较低𝐽 可能会影响交叉点位置的精度。受[27]的启发,我们使用偏移贴图来存储𝐽ˆ以亚像素精度恢复到其原始位置:

       我们使用ℓ2-偏移贴图的损耗,并使用热图作为遮罩,仅在实际交叉点附近计算损耗。
从数学上讲,损失函数写为

       哪里𝑶𝑡( 𝒑) 通过对神经网络中偏移分支的最后一层应用sigmoid恒定平移函数来计算,以执行𝑶𝑡( 𝒑) ∈ [0,1)2.我们不会恶意攻击𝐿𝑶 按每种类型的连接数。
       边映射𝐸 和损失𝐿𝐸 . 为了估计线的位置,我们在边缘热图中表示它们。对于地面真实线,我们使用抗锯齿技术[33]在边缘图上绘制它们,以获得更高的精度。让dist(𝒑, 𝑒) 是像素之间的最短距离𝒑 和最近的线段𝑒. 我们将边映射定义为

       直觉上,𝐸( 𝒑) ∈ [0,1]表示直线接近点的概率𝒑. 由于边缘映射的范围始终在0和1之间,因此我们可以将其视为概率分布,并在边缘映射上使用sigmoid交叉熵损失𝐸 和

      结深度图D和损耗𝐿 D.估计深度𝑧𝒗 每个路口𝒗, 我们将交叉点深度贴图定义为

       在许多深度单位和相机固有矩阵未知的数据集中𝐾, 𝑧𝒗 保持相对比例,而不是ab溶质深度。为了消除全局缩放中的模糊性,我们使用了单图像深度估计文献[3]中介绍的缩放不变损失(SILog)。它通过对每个像素对之间的对数差求和来消除全局比例的影响。

       安辛点地图𝑽 和损失𝐿𝑽 . 人造室外场景中的线条通常围绕三个相互正交的方向排列。允许𝑖 ∈ {1,2,3}表示这三个方向。在透视几何学中,方向上的平行线𝑖 将在同一消失点相交(𝑉𝑖,𝑥, 𝑉𝑖,𝑦) 在图像空间中,可能在无穷远处。阻止𝑉𝑖,𝑥 或𝑉𝑖,𝑦 为了避免变得太大,我们对向量进行规格化,以便

       因为两个水平消失点𝑽1及𝑽2是从单个RGB图像中不确定顺序的,我们使用倒角ℓ双损失𝑽1及𝑽2,以及ℓ双损失𝑽3(垂直消失点):

2.3. 热图矢量化

       如图2所示,神经网络的输出基本上是所需线框的图像空间2.5D热图。需要矢量化以获得紧凑的线框表示。
       连接矢量化。从结热图恢复结V𝐽 这是直截了当的。允许𝜗𝐶 和𝜗𝑇 成为𝐽𝐶 和𝐽𝑇 . 交叉点候选集可以估计为

       线矢量化。线矢量化分为两个阶段。在第一阶段中,我们检测并构建所有拐角C-接合处的线candi  Date。这可以通过枚举所有连接对来完成𝒖, 𝒘 ∈ 五、𝐶, 连接他们,并测试他们的线路置信度得分是否大于阈值𝑐(𝒖, 𝒘) ≥ 𝜗𝐸 . 具有两个端点的直线的置信度得分𝒖 和𝒘 列为

       哪里𝑃(𝒖, 𝒘) 表示光栅化线中的像素集𝒖𝒘以及|𝒖𝒘|表示该行中的像素数。
       在第二阶段,我们构造了“T-T”和“T-C”结对之间的所有线。如果测试结果接近检测到的线,我们会反复在线框中添加T形接头。与拐角C型接头不同,T型接头的度数始终为1。因此,对于每个T型接头,我们找到与之相关的最佳边。重复此过程,直到无法添加更多行。最后,我们运行一个后期处理过程来删除太近或相互交叉的线。通过分别处理C-连接和T-连接,我们的线矢量化算法对于具有数百条线的场景既高效又鲁棒。补充材料中讨论了更详细的说明

2.4. 图像空间2.5D到世界空间3D

       到目前为止,我们已经在2.5D图像空间中获得了具有相对比例深度的矢量化连接和线。然而,在AR和3D设计等场景中,绝对深度值对于3D线框的6自由度操作是必需的。
       在本节中,我们将介绍使用网络预测的消失点来估计它们的步骤。

2.4.1从消失点校准

       在数据集中如MegaDepth[16],摄像机校准矩阵𝐾 ∈ 每个图像的r3×3是未知的,尽管它对于全三维线框重建至关重要。幸运的是,如果场景大多为Manhat tan,则可以从三个相互关联或正交消失点推断校准矩阵。根据[20],如果我们变换正交van  ishing点𝑽𝑖 到校准坐标𝑽¯ 𝑖  𝐾 −1.𝑽𝑖 , 然后𝑽¯ 𝑖 应相互正交,即

       这些方程对模型施加了三个线性独立的约束𝐾 −𝑇 𝐾 −1和将能够解决校准矩阵中最多三个未知参数,如光学中心和焦距。

2.4.2消失点深度细化

       由于估计误差,预测的深度图可能与检测到的消失点不一致𝑽𝑖 . 在实践中,我们发现神经网络在估计消失点方面比预测2.5维深度图表现更好。这可能是因为消失点有更多的几何线索,而估计深度需要从数据中获得先验信息。此外,由于数据集(例如,MegaDepth)和SILog loss的使用,深度图的单位可能未知。因此,我们使用消失点来细化接合深度并确定其绝对值。允许𝑧˜𝒗 ➥D𝐽𝒗 (𝒗) 是接头的预测深度𝒗 从我们的神经网络。我们设计了以下凸目标函数:

       哪里𝑖 表示与消失点对应的线集𝑖; 𝛼 解决深度维度上的尺度模糊;

       是校准坐标中的顶点位置。方程式(4)中第一个学期的目标是鼓励这条路线(𝑧𝒖𝒖¯, 𝑧𝒘𝒘“”)平行于vanishing点𝑽¯ 𝑖 通过惩罚这两个向量所跨越的平行四边形区域。第二项规则化𝑧𝒗 使其接近网络的估计值𝑧˜𝒗 达到一定规模。方程(5)防止了退化解𝒛 = 0 方程(6)是一个凸松弛方程

        T形连接的深度约束。

3.数据集和注释

       监督学习的瓶颈之一是用于培训和测试的inad  equale数据集。之前,[12]开发了一个用于二维线框检测的数据集。但是,它们的数据集不包含三维深度或连接类型。据我们所知,没有同时包含线框和3D信息的公共图像数据集。
为了验证我们的方法,我们创建了一个混合数据集,其中包含大量的城市场景合成图像和少量的真实图像。前者具有精确的3D geome、try和从网格边缘自动注释的地面真实3D线框,而后者则使用不太精确的3D信息手动标记。
       SceneCity城市3D数据集(SU3)。为了获得大量具有精确几何线框的图像,我们使用逐步生成的3D网格存储库SceneCity3。数据集由简单多边形和艺术家调整的材质和纹理组成。我们使用计算几何算法和OpenGL从网格顶点提取C-连接并计算T-连接。我们的数据集包括230个城市,每个城市包含8×8个城市街区。通过改变天空地图,这些城市有不同的建筑布局和照明条件。我们根据cri  teria(如拍摄的建筑物数量)为每个城市随机生成100个视点,以模拟手持和无人机摄像头。合成的室外图像然后通过Blender的全局照明进行渲染,它总共提供23000张图像。我们使用前227个城市的图像进行培训,其余3个城市进行验证。
       现实地标数据集。MegaDepth v1数据集[17]包含世界上196个地标的真实图像。它还包含这些图像的深度贴图,通过运动的结构。我们选择了大约200幅大致符合我们方法假设的图像,手动标记它们的线框,并用粗略的3D深度对它们进行配准。
       在我们的实验中,我们在SU3数据集上预训练我们的网络,然后使用2/3的真实图像对模型进行微调。剩下的1/3用于测试。

4.实验

       我们进行了大量实验,以评估我们的方法,并通过烧蚀研究验证我们的管道设计。
此外,我们还将我们的方法与最先进的二维线框提取方法进行了比较。然后,我们评估了消失点估计和深度细化步骤的性能。最后,我们展示了我们的三维线框重建的例子。

4.1. 实现细节

       我们的主干是一个两层沙漏网络[22]。每个堆栈由6个stride-2剩余块和6个最近邻上采样器组成。在堆叠沙漏特征提取器之后,我们为每个地图插入不同的“头部”模块。
       每个头部包含一个3×3卷积层以减少通道数,然后是一个1×1卷积层以计算相应的映射。对于消失点回归,我们使用具有两个连续的跨步2卷积层的不同头,然后是一个全局平均池层和一个完全连接层来回归消失点的位置。
       在培训期间,使用ADAM[15]优化器。学习率和权重衰减设置为8×10−4和1×10−5.所有实验均在四个NVIDIA GTX 1080Ti GPU上进行,每个GPU可容纳12个小批次。对于SceneCity Urban 3D数据集,我们对我们的网络进行了25个时代的培训。损失权重设置为𝜆𝐽 = 2.0, 𝜆𝑶 = 0.25,𝜆𝐸 = 3.0,以及𝜆D=0.1,因此所有损失项大致相等。对于真实数据集,我们使用在SU3数据集上训练的网络初始化网络,并使用10^−4五个时期的学习率培训。我们将水平翻转输入图像作为数据增强。除非另有说明,否则输入图像被裁剪为512×512。最终输出为步幅4,即大小为128×128。在热图矢量化过程中,我们使用hyper参数𝜗𝐶 = 0.2, 𝜗𝑇 = 0.3,以及𝜗𝐸 = 0.65.

4.2. 评估指标

       我们使用目标检测[6]的标准AP(平均精度)来评估我们的连接预测结果。我们的算法生成一组连接及其相关分数。如果预测结果正确,则认为该预测是正确的ℓ 2到最近地面真相的距离在阈值范围内。通过该方法,我们可以绘制精确回忆曲线,并计算平均AP(mAP),作为该曲线下的面积,在几个不同的连接距离阈值上求平均值。
在我们的实现中,mAP在阈值0.5、1.0和2.0上平均。在实际应用中,接合点之间的长边通常比短边更可取。
       因此,我们通过连接到该连接点的线的长度之和来加权mAP度量。我们使用AP𝐶 及美联社𝑇 分别表示C 连接和T-连接的加权映射度量。我们使用联合区间(IoU)度量来评估线路热图的质量。对于连接深度图,我们使用比例不变对数误差(SILog)对地面真值连接的位置进行评估[3,8]

表1。“监督”下的栏目表明培训期间使用了哪些损失和监督;“指标”下的列表示在评估期间给予此类监督的绩效。第二行显示要素地图的符号;第三行显示相应地图的损失函数名称。“CE”表示交叉熵损失,“SILog”损失由[3]提出,“Ord”表示[16]中的普通损失。“/”表示未生成映射,因此不可评估

4.3. 关于联合训练和损失函数

       我们进行了一系列实验,研究不同的特征设计和多任务学习策略如何影响线框检测精度。表1展示了我们针对不同任务组合的abla研究,以研究联合训练的效果。我们还评估了选择ℓ1-及ℓ2-偏移回归的损失和深度估计的普通损失[16]。我们的结论是:
       1。回归偏移对于局部交叉点(AP为7.4点)非常重要𝐶 AP得3分𝑇 ), 通过比较行(a-c)。此外ℓ2.损失总比失败好ℓ1损失,可能是由于其平滑度。
       2.联合训练交叉点和线路在这两项任务中都有所改进。
行(c-e)显示了改善,AP中的分数约为1.5分𝐶, AP为0.9分𝑇 和线头。这表明连接和线之间的紧密关系。
       3.对于深度估计,我们测试了[16]中的顺序损失。
       令我们惊讶的是,它并没有提高数据集(行(f-g))的性能。我们假设这是因为稀疏注释连接的相对顺序比[16]中的前景/背景关系更难预测。
       4.根据第(f)行和第(h)行,使用连接点和线的联合训练稍微提高了深度估计性能0.55个筒仓点。

4.4. 与二维线框提取相比

       与我们的系统相关的一项最新工作是[12],它从单个RGB图像中提取二维线框。然而,它与我们的有几个基本的区别:1)它没有区分角C型连接和闭塞T型连接。2) 它的输出只有2D线框,而我们的是3D。3) 它训练两个分离的网络来检测交叉点和线路。4) 它检测纹理线,而我们的只检测几何线框。
       在本实验中,我们将性能与[12]进行了比较。本实验的目的是验证联合训练的重要性。因此,除了统一的目标函数和网络结构外,我们遵循与[12]完全相同的训练过程和矢量化算法。图3显示了使用与[12]中相同的评估指标对测试图像上评估的精度和召回曲线进行的比较。注意,由于不同的网络设计,他们的模型有大约30M的参数,而我们的模型只有19M。在参数较少的情况下,我们的系统在2D线框检测任务上比[12]实现了4点AP改进。
       作为一种健全性检查,我们还分别针对线路和交叉点训练网络,如图3中的绿色曲线所示。结果仅略好于[12]。该实验表明,我们的性能增益来自联合训练的目标,而不是神经网络工程。

图3。在二维线框检测方面与[12]进行比较。我们将基线方法改进了4个点。

表2。在消失点检测方面,我们的方法与LSD/J  linking[4,26]的性能比较。𝐸V代表的是角误差𝑽𝑖 在程度上,,𝐸f表示恢复的相机焦距的相对误差,“故障”表示其发生的情况的百分比𝐸V>8◦

4.5. 消失点和深度细化

       在第2.4节“消失点估计和深度细化”中用于三维线框表示的最后阶段。它们的鲁棒性和精度对系统输出的最终质量至关重要。在本节中,我们将进行实验来评估这些方法的性能。
       对于消失点检测,表2显示了我们基于神经网络的方法与SU3数据集上带有LSD线检测器的J-连锁聚类算法[26,25]之间的性能比较。我们发现,我们的方法在故障率和平均误差方面更具鲁棒性,而传统的线聚类算法在不发生故障时更为准确。这是因为LSD/J连杆应用了更强的几何先验知识,而神经网络从数据中学习概念。
       我们之所以选择我们的方法是因为它的简单性和鲁棒性,因为本项目的重点更多地放在三维线框表示方面,但我们相信,通过设计混合算法或设计更好的网络结构,可以进一步提高性能。
       我们还比较了深度细化前后结合深度的误差。我们发现,在65%的测试案例中,细化后的误差更小。这表明,van  ishing点的几何约束确实有助于提高接合深度的精度。如图4所示,深度细化还提高了3D线框的视觉质量。另一方面,当消失点不够精确,或者场景过于复杂,以致线框中存在许多错误线时,深度细化可能不那么有效。在补充材料中可以找到一些失效案例

图4。(b) 显示来自的线框的渲染𝑧˜𝒗 从稍微不同的角度来看,而(c)显示了通过第2.4节中的优化改进的线框。2.

4.6. 三维线框重建结果

       我们在合成数据集和真实图像上测试了我们的三维线框重建方法。图5和图6显示了说明最终重建的视觉质量的示例。可以在中找到视频演示http://y2u.be/l3sUtddPJPY.由于真实地标数据集的深度图不完整,因此我们不显示其地面真实三维线框。
       这项工作得到了索尼美国研究中心、Adobe Research、Berkeley BAIR和Bytedance研究实验室的部分支持

图5。左组:比较地面真值(第1列)、我们的预测(第2列)和线框解析器[12]的结果(第3列)之间的2D结果。中间(第4-5列)和右侧组(第6-7列):地面真相的新颖视图和我们的重建,以演示场景的三维表示。线框的颜色显示深度

图6。MegaDepth真实图像的测试结果

### 回答1: 计算机断层扫描成像光谱仪的图像通常是由许多经过处理的平行射线投影构成的。在 Python 中,你可以使用 NumPy 和 scikit-image 库来模拟这种图像。 首先,你需要将你的 3D 高光谱立方体数据加载到 Python 中。然后,你可以使用 NumPy 的 sum 函数来计算立方体中每一个平面的和。这些平面可以看作是计算机断层扫描成像光谱仪图像中的投影。 接下来,你可以使用 scikit-image 库中的投影还原算法(例如,反投影算法)来重建立方体的图像。这样,你就可以得到一幅模拟的计算机断层扫描成像光谱仪图像。 下面是一段示例代码,假设你已经将 3D 高光谱立方体数据加载到变量 `cube` 中: ``` import numpy as np from skimage.reconstruction import inverse_projection # Calculate projections by summing along the third axis of the cube projections = np.sum(cube, axis=2) # Reconstruct the image using the inverse projection algorithm reconstructed_image = inverse_projection(projections) ``` 希望这能帮助你。 ### 回答2: 要使用Python从3D高光谱立方体模拟计算机断层成像光谱仪图像,我们可以按照以下步骤进行: 1. 导入所需的Python库,如numpy、scipy和matplotlib等。 2. 定义3D高光谱立方体的大小和光谱分辨率。这可以根据实际情况进行调整。 3. 生成一个随机的3D高光谱立方体作为模拟数据。可以使用numpy库的random模块来生成随机数据。 4. 定义计算机断层成像光谱仪的参数,如角度,光谱范围等。 5. 使用双线性插值法将3D高光谱立方体数据投影到计算机断层成像光谱仪平面。 6. 对每个投影平面进行光谱融合,生成计算机断层成像光谱仪图像。 7. 显示和保存生成的图像。 下面是一个基本的代码框架: ```python import numpy as np from scipy import ndimage import matplotlib.pyplot as plt # 定义3D高光谱立方体的大小和光谱分辨率 cube_size = (100, 100, 100) spectral_resolution = 10 # 生成一个随机的3D高光谱立方体作为模拟数据 cube = np.random.rand(*cube_size, spectral_resolution) # 定义计算机断层成像光谱仪参数 angle = 45 # 投影角度 spectral_range = (400, 700) # 光谱范围 # 将3D高光谱立方体数据投影到计算机断层成像光谱仪平面 projection = np.sum(cube, axis=-1) # 对光谱轴进行求和 # 对投影平面进行光谱融合 spectral_fusion = ndimage.zoom(projection, spectral_range[1]-spectral_range[0]) # 生成计算机断层成像光谱仪图像 plt.imshow(spectral_fusion, cmap='gray') plt.colorbar() plt.show() ``` 这段代码通过随机生成一个3D高光谱立方体模拟数据,并将其投影到计算机断层成像光谱仪平面,然后进行光谱融合并显示生成的图像。需要根据实际情况进行参数的调整和优化。 ### 回答3: 在python中通过模拟的计算机断层扫描成像光谱仪图像从一个3D高光谱数据立方体。 要想通过python模拟计算机断层扫描成像光谱仪图像,我们可以按照以下步骤进行操作: 1. 导入所需的python库,包括numpy、matplotlib和scipy等。 2. 在3D高光谱数据立方体中,每个像素都包含一个光谱向量,该向量表示该像素在各个波段上的反射率或辐射强度。因此,我们首先需要创建一个形状为(N,M,L)的3D numpy数组来表示数据立方体,其中N和M表示立方体的行数和列数,L表示立方体中的波段数。 3. 使用适当的算法或函数模拟光谱数据立方体。这可以包括根据现有的成像光谱仪数据或使用物理模型来生成模拟数据。 4. 通过将立方体中的每个像素与计算机断层扫描成像光谱仪的传感器响应函数相乘,可以获得模拟的成像光谱仪图像。传感器响应函数定义了光谱波段与成像设备的响应之间的关系。 5. 可选地,使用适当的图像处理技术(如去噪、增强和调整对比度等)对生成的图像进行后处理,以获得更好的可视化效果。 6. 最后,使用matplotlib库将模拟的成像光谱仪图像显示出来。 需要注意的是,这只是一个简单的示例,实际的代码可能会涉及更多的细节和复杂的算法。希望这个回答可以帮助您开始使用python模拟计算机断层扫描成像光谱仪图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值