首页 > 其他分享 >Depth Camera-based 3D Modeling

Depth Camera-based 3D Modeling

时间:2023-10-03 20:35:46浏览次数:48  
标签:模型 距离 Depth Camera 视图 深度 点云 Modeling 3D

基于深度相机的3D建模

受到夏同学和王希同学的启发,我这几天看了下深度相机这一块,用于三维重建

三维重建的pipeline是:深度图采集(主动式和被动式)->深度图预处理(噪音)->场景表示(立体/表面表示)->深度图像融合(相邻帧,涉及到点对匹配和位姿联合优化)->纹理重建。trade-offs有:基于体素的重建方法的分辨率/精度和计算成本;基于点云的重建方法连接性的高精度和不能高效处理复杂拓扑结构;基于网格的重建的低计算成本和精度损失;

关键词:动作捕捉/姿势重建、旋转表示、三维

如何基于深度相机进行3D建模?

基本流程:深度图->去噪->位姿融合,找到点对应关系,估计变换矩阵->模型融合->颜色及纹理信息的渲染

三维重建领域主要的数据格式有四种

• 深度图(depth map),2D图片,每个像素记录从视点到物体的距离,以灰度图表示,越近越黑;

• 体素(voxel),体积像素概念,类似于2D之于像素定义;

• 点云(point cloud),每个点逗含有三维坐标,乃至色彩、反射强度信息;

• 网格(mesh),即多边形网格,容易计算。

Reference:

ECCV 2016: 基于体素 适用单/多视图 -> 缺点:分辨率和精度之间的trade-off

img

img

img

CVPR 2017: 基于点云 单视图

img

img

img

本文还系统地探讨了体系结构中的问题点生成网络的损失函数设计:

ECCV 2018: 三角网格 单图 -> 端到端的神经网络,粒度上coarse-to-fine,

Dataset: ShapeNet

Mask R-CNN

  • Mask RCNN可以看做是一个通用实例分割架构,以Faster RCNN原型,增加了一个分支用于分割任务;比Faster RCNN速度慢一些,达到了5fps。

应用:可用于人的姿态估计等其他任务;

img

img

img

img

CVPR 2019: 对不可见部分(不确定性)进行建模 适用单/多视图 -> 提出了条件生成模型

实现逻辑: training with diversity constraints(introduce noise by sampling technology) -> predictor voting ensemble for inference with consistency constraints

img

img

pipeline:

  1. single-view形状生成:模型通过条件生成网络,将输入的RGB图像 I 和随机输入向量 r作为条件,生成预测的形状S。为了模拟单视图重建的不确定性,模型采用部分监督的架构,其中前部分的点云是通过视角采样得到的,而后部分的点云是通过条件生成模型生成的。模型使用前部分的点云作为监督信号,使用Chamfer距离或EMD距离作为损失函数来引导生成模型的预测。 -> 视角采样 -> 避免(病态)

  2. single-view合成:模型将单视图形状生成扩展到多视图形状合成。对于每个单视图图像I,模型使用条件生成网络生成多个可能的形状预测。然后,模型通过在线优化来最小化多视图一致性损失,以获得最终的形状预测。最后,模型将多个视图的点云结果进行拼接,得到最终的预测结果。 -> 多视图一致性 -> 后部分点云

  3. 前部约束:模型引入了前部约束,通过视角采样层从特定视角获取形状的前部分。这样可以使生成模型更加关注形状的前部分,并使用Chamfer距离或EMD距离来引导生成模型的预测。 -> 前部分形状

  4. 多样性约束:为了使生成模型能够生成多个合理的形状预测,模型引入了多样性约束。通过使用两个不同的输入向量r1和r2,模型生成两个预测的点云S1和S2,并使用EMD距离来衡量它们之间的距离。通过最大化两个点云之间的距离与输入向量之间的距离的差值,模型可以生成多个满足前部约束的形状预测。 -> 多样性

  5. latent space discriminator:为了更好地学习形状的先验知识,模型引入了潜空间鉴别器。模型首先在点云域上训练一个自编码器,然后将解码器固定在模型的末端,并在潜空间上应用WGAN-GP。这样可以通过鉴别器来学习形状的先验知识,并提高生成模型的性能。 -> 一致性

3D建模与深度相机简介

常见的深度相机

  • 结构光

    • 光源 + 投影仪 + 多个相机(形成三角结构)

    • 结构光->目标对象表面->接收反射光的图案->根据位置角度等,得到每个像素点的深度值等空间信息

      • 像素点 -> 物体 -> 三维模型
    • 优势:高精度、高速度、无需接触

    • 劣势:易受室外强光和镜面反射影响

  • ToF: Time of Flight

    • 发射光->接收反射的光-> 检测光飞行往返时间->计算距离
    • 优势:快速、精确、低功耗
    • 劣势:获取的深度图分辨率不高,当测量较短距离时误差相对其他深度相机较大

三维模型表示方法及数据结构

立体表示方法:Volumetirc representation

  • TSDF:Truncated Signed Distance Function

    • 带截断的

    • 带符号距离场(函数):连续场((x,y,z)->NN->SDF:任意高分辨率)

      • TSDF主要用于表示和融合三维空间中的点云数据。对于每个三维空间的网格单元(voxel),TSDF存储了该单元内距离表面的有符号距离值。有符号距离表示点云点相对于表面的距离,如果点在表面上方,则距离为正;如果点在表面下方,则距离为负。(二维连续场-整个模型的一个场,包络思想) KinectFusion:RGB-D-static-3D reconstruction; DynamicFusion:movement
      • 通过遍历点云数据,将每个点映射到对应的网格单元,并更新该单元内的TSDF值。通常情况下,要对TSDF进行截断操作,将距离超过某个阈值的值截断为固定的最大或最小值,以限制距离函数的范围。SDF-3P-SDF-UDF
    • SDF: 3D信息(拓扑->3D,形状的刻画(表示=显式表示-点云...->分辨率bottleneck + 隐式表示-SDF(闭合曲面-内外,SDF变体-非闭合) + UDF-离空间表面最近的点,零等值面表面的提取精度不同,只有梯度信息,计算量up,精度不高)+颜色:传统渲染管线->2D上颜色比较多)

  • Octree 八叉树:将初始的三维空间划分为八个相等大小的子立方体。每个子立方体可以使用边界框(bounding box)或中心点和边长来表示;八叉树常用于碰撞检测领域,可以通过遍历树的节点来寻找可能的碰撞候选项,并进行详细的碰撞检测。遍历可以使用深度优先搜索(DFS)或广度优先搜索(BFS)等算法来实现。 -> 局部依赖关系 -> 异常检测 -> 真实场景

  • 体素哈希结构

表面表示方法:Surfel-surface element

  • Surfel面片要素
    • 空间点坐标:面片位置
    • 空间法向量:面片方向
    • 颜色信息
    • 权重/置信度:用于判断当前面片的是否稳定,以及后续的加权平均等运算。根据当前点到相机的距离进行初始化,距离越远,权重越小,越不可信
    • 半径:由当前表面到相机光心的距离决定,距离越大,半径越大
    • 时间戳
  • 八叉树表示面片 -> 优化面片的表示方法

方法的对比

  1. 立体:当前帧的TSDF和全局的TSDF进行加权求和即可
  2. 表面:当前帧的每个顶点和法向量以及半径,其步骤为:
    • 3D->2D projection
    • P2P matching
    • Not matches, as outliers, add into global graph
    • Mitigate the outliers by global graph(filter)

img

基于深度相机的三维重建

深度图像预处理

  • 通常采用双边滤波去噪

    • 去噪之后,KinectFusion通过降采样得到三层的深度图金字塔,用于后续估计相机位姿。
  • 深度图的噪声可分为三类

    • 深度缺失:太近或太远、表面不连续、高光或阴影等原因
    • 深度错误:深度测量具有一定的准确率
    • 深度不一致:随着时间变化,对同一点的测量的深度可能不一致

相机跟踪

  • ICP是相对位姿估计中非常重要的算法,主要用于3D形状的配准。通过计算相邻帧的****点云的匹配关系,然后最小化点对之间的欧氏距离,从而计算得出一个刚体变换(A点云->仿射变换->B点云:点对匹配(解一个最小二乘优化问题,R+T)+贪心算法(迭代优化))。这样会有一个问题,就是相邻帧的误差会在扫描过程中不断累积,也就是常说的累计误差

  • 消除位姿估计累积误差

    • frame-to-model
    • 全局位姿联合优化
  • 点对匹配问题

    • 稀疏点对匹配
    • 稠密点对匹配
  • Objective:距离之和尽可能小,不同距离定义

    • 点点距离:欧式
    • 点面距离:法向量,求解复杂,迭代次数少
    • ICP变体

深度图像的融合

  • 立体表示i的模型融合

    • 当前帧的TSDF和全局的TSDF进行加权求和即可
  • 表面表示i的模型融合

    • 当前帧的每个顶点和法向量以及半径,要融入全局的模型中

      • 将当前3D模型中的顶点投影到当前帧相机的图像平面中,寻找匹配点对关系
      • 如果找到了匹配点对,那么最可靠的点和新的点进行加权平均
      • 如果没找到,那么新的点将加入全局模型,作为一个不稳定点
      • 随着处理的帧数越来越多,全局模型会清理外点

动态场景的三维重建

  • 基于立体表示
  • 基于表面表示
  • 基于移动估计或语义信息

场景理解

  • 考虑事内场景平面的几何特征的三维重建
  • 基于物体检测的物体三维重建
  • 基于2D语义分割的三位重建

纹理重建

在线

离线

未来工作及研究空间

长距离、大范围重建

  • 反射表面可能镜面反射,使得深度计算变得复杂甚至不可行

动态移动物体的处理

适应移动端的重建框架

遮挡的场景可能会产生挑战

标签:模型,距离,Depth,Camera,视图,深度,点云,Modeling,3D
From: https://www.cnblogs.com/shunliu01/p/17741602.html

相关文章

  • linux 中 find命令 -maxdepth 和 -mindepth 选项
     001、[root@pc1dir001]#lstest01test02ww.txtxx.map[root@pc1dir001]#tree.├──test01│  ├──cc.csv│  └──kk.txt├──test02│  ├──dirxx│  │  └──diryy│  │  ├──rr.ped│  │  └......
  • 双路CameraLink Base/ HPC 接口 单宽FMC 子卡模块
    概要QT7420是一款双路CameraLinkBase/HPC接口的单宽FMC子卡模块,它提供工业标准的摄像机链路接口,为用户提供了利用FPGA解决大运算量处理的能力。这些应用利用兼容的摄像机进行诸如帧抓取、数字视频通信和图像处理等。QT7420的PCB采用兼容设计,如果需要支持CameraLinkMediu......
  • 全功能双CameraLink SDR接口 FMC子卡
    QT7421使用LPC接口作为标准FMC接口,该板卡可应用于几乎全部的Xilinx开发板中及其他标准FMCFPGA载板。 QT7421的电气与机械设计依据FMC标准(ANSI/VITA57.1),支持风冷,能够满足用户在标准使用环境下的需求。原理框图技术指标CameraLink采用2个3MSDR0.8mm间距的连接器,分别作......
  • Adobe Camera Raw 15.5最新版download for free支持最新相机
    AdobeCameraRaw中文版是一款Adobe增效工具滤镜,AdobeCameraRaw插件采用强大的图像处理技术,可以导入增强数字负片(DNG)格式的原始文件及编辑RAW文件,并提供最新型号相机和镜头配置文件支持.新版变化支持AdobeCameraRaw增效工具的CreativeCloud应用程序包括:AdobeBridge、P......
  • Lnton 羚通视频分析算法平台【OpenCV-Python】教程: Depth Map from Stereo Images 立
    立体图像的深度图(DepthMap)是表示图像中每个像素点距离相机的深度或距离信息的二维灰度图。它提供了场景中物体的三维结构和距离信息,对于三维重建、增强现实、虚拟现实等应用具有重要意义。深度图可以通过以下方式获取:1.双目视觉方法:使用两个相机(左右摄像机)同时拍摄同一场景,通过计......
  • Camera | 12.瑞芯微摄像头自动焦距马达驱动移植
    本为你主要讲解如何让摄像头ov13850支持自动对焦功能。摄像头的对角主要通过VCM马达驱动芯片DW9714来实现的。一、环境soc:rk3568board:EVB1-DDR4-V10软件:Android11Linux:4.19.232Camera:ov13850二、DW97141.DW9714简介DW9714专为自动对焦和光学变焦照相手机......
  • Unity3D下如何采集camera场景数据并推送RTMP服务?
    Unity3D使用场景Unity3D是非常流行的游戏开发引擎,可以创建各种类型的3D和2D游戏或其他互动应用程序。常见使用场景如下:游戏开发:Unity3D是一个广泛用于游戏开发的环境,适用于创建各种类型的游戏,包括动作游戏、角色扮演游戏、策略游戏、冒险游戏等。虚拟现实:Unity3D也常用于虚拟现实(VR......
  • Unity RenderTexture 当作为 Camera.targetTexture 时,在某些安卓手机或模拟器无法显示
    今天打包的时候遇到一个坑,就是用RenderTexture的时候,在某些手机上会显示黑屏,一查发现这是某些安卓设备才会出现的BUG(奇怪的是那台测试机是鸿蒙系统,懂的都懂)解决方法也很简单,就是不能用RenderTexture资源,而改成动态代码创建即可解决这个BUG同时解决了另一个RenderTexture的BUG,就......
  • FakeCamera虚拟摄像头实时拍摄教程
    FakeCamera虚拟摄像头实时拍摄教程简介说明:虚拟摄像头实时拍摄可以替换一些app需要实时拍摄,但不能选择本地相册图片的应用,当使用该应用的时候,可以做到将相册中的照片替换成实时拍摄的照片,以做到某些条件下无法实时拍摄的要求。一、适用机型及系统1、机型:iphone6、6s、6p、7、7p......
  • VirtualCamera虚拟相机实时拍照教程
    VirtualCamera虚拟相机实时拍照教程简介说明:虚拟相机实时拍照可以替换一些app需要实时拍照,但不能选择本地相册图片的应用,当使用该应用的时候,可以做到将相册中的照片替换成实时拍照的照片,以做到某些条件下无法实时拍照的要求。一、适用机型及系统1、机型:iphone6、6s、6p、7、7p、......