精华内容
下载资源
问答
  • MVSNet

    千次阅读 2019-05-14 16:49:03
    MVSNet 摘要 MVSNet的大致流程 先根据网络提取特征 通过单应性根据照相机的锥形体构建3D的cost volume 用3D的卷积去回归初始深度图,然后根据参考的图片去生成最终的结果 (适合任意的输入数目) 介绍 传统方法在...

    MVSNet

    摘要

    MVSNet的大致流程

    1. 先根据网络提取特征
    2. 通过单应性根据照相机的锥形体构建3D的cost volume
    3. 用3D的卷积去回归初始深度图,然后根据参考的图片去生成最终的结果
      (适合任意的输入数目)

    介绍

    1. 传统方法在**朗博情景(Lambertian scenarios,理想反射面,不吸收任何光,都反射掉)**下有很好的结果,但是对于镜面反射、纹理等难以处理,在重建的完成性有很大的提升空间
    2. 基于CNN的重建,可以引入全局的语义信息,例如反射的先验信息,有更强的匹配能力。在两个视角的立体匹配中,有了很好的尝试,优于传统方法。将匹配问题变成了水平方向的像素的视差估计(disparity estimation什么意思,定义)
    3. 目前多视角立体重建的两种方法
      SurfaceNet、
      Learned Stereo Machine (LSM)
      适合小尺寸的,耗时过长
    4. MVSNet(将重建 ===> 深度估计的问题)
      输入:一个参考图+n个源图像
      输出:参考图的深度图(一张)
      1. 先根据网络提取特征
      2. 通过单应性(key)根据照相机的锥形体构建3D的cost volume
      3. 用3D的卷积去回归初始深度图,然后根据参考的图片去生成最终的结果
      4. 基于方差的度量方法,maps multiple features into one cost feature in the volume
        (适合任意的输入数目)
      5. 后处理,重建点云

    相关的工作

    1. MVS重建:点云,体素、深度图重建
      深度图==》 点云或体素(体素可以是球吗??一般是正方体?
    2. studies on stereo apply the deep learning

    MVSNet

    1. training
      1. 数据准备(图片的大小必须是32的倍数)
        1. images [None, 3, None, None, 3]
        2. cam [None, 3, 2, 4, 4] (相机参数具体的形式
        3. depth_img [None, None, None, 1]
          (None会动态的设定shape)
        4. depth_start = tf.reshape(
          tf.slice(cams, [0, 0, 1, 3, 0], [1, 1, 1, 1, 1]), [1])
          depth_interval = tf.reshape(
          tf.slice(cams, [0, 0, 1, 3, 1], [1, 1, 1, 1, 1]), [1])
          在这里插入图片描述
      2. 网络结构
        1. Image Features+ Differentiable Homography
          1. Image Features-----UNetDS2GN

            1. 定义
              ref_image = tf.squeeze(tf.slice(images, [0, 0, 0, 0, 0], [-1, 1, -1, -1, 3]), axis=1)
              ref_cam = tf.squeeze(tf.slice(cams, [0, 0, 0, 0, 0], [-1, 1, 2, 4, 4]), axis=1)
              ref_tower = UNetDS2GN({‘data’: ref_image}, is_training=True, reuse=True)
              view_towers = []
              view_tower = UNetDS2GN({‘data’: view_image}, is_training=True, reuse=True)
              view_towers.append(view_tower)
            2. 结构
              UNetDS2GN:unet+uniNetDS2GN(7conv_gn+1conv[kerner:3,3,5,3,3,5,3,3],stride:[1,1,2,1,1,2,1,1])
          2. Differentiable Homography

            1. 定义
              depth_end = depth_start + (tf.cast(depth_num, tf.float32) - 1) * depth_interval
              depth_num = 192
            2. 程序
              view_homographies = []
              for view in range(1, FLAGS.view_num):
              view_cam = tf.squeeze(tf.slice(cams, [0, view, 0, 0, 0], [-1, 1, 2, 4, 4]), axis=1)
              homographies = get_homographies(ref_cam, view_cam, depth_num=depth_num,
              depth_start=depth_start, depth_interval=depth_interval)
              view_homographies.append(homographies)
            3. get_homographies
              depth = depth_start + tf.cast(tf.range(depth_num), tf.float32) * depth_interval(一维数组)
              R(3x3) T(3x1) depth_mat(1x192x3x3)
              计算公式 KiRi((1 - (RiTi - RT)*fronto_direction)/depth_mat)RtK-1
              结果的大小 (1X192X3X3)
              对于192个不同的depth都对应一个3x3的矩阵(单应性)
              view_homographies的大小 [2(num_view-1),192,3,3]
          3. cost Metric — cost volume

            1. 定义
              feature_c = 32
              feature_h = FLAGS.max_h / 4
              feature_w = FLAGS.max_w / 4
              ave_feature = ref_feature = ref_tower.get_output()
              ave_feature = ref_feature2 = tf.square(ref_feature)
              view_features = tf.stack(view_features, axis=0)
            2. 过程
              根据计算的单应性的矩阵,将其他视角的照片变为参考图片的视角的图片
              根据各个视角,计算Cost Volumes(公式)
          4. cost volume regularization
            filtered cost volume, size of (B, D, H, W, 1)
            网络 RegNetUS0
            output filtered_cost_volume

          5. depth map and probability map
            网络的结果-> softmax() x-1 --> 分别乘以不同的深度,得出 depth map

            根据depth map在深度[0,192]的那一个位置来抽取filtered_cost_volume中的4张图,求和,得出probability map

          6. refinde-depth_map

          7. loss

    重建后的度量标准

    1. f-score https://www.tanksandtemples.org/tutorial/
    2. accuracy
    3. completeness

    相机的参数

    cam [2,4,4]
    1[4,4] R + T
    [[r1,r2,r3,t1]
    [r4,r5,r6,t2]
    [r7,r8,r9,t3]
    [0,0,0,1]]
    2[4,4] K内参矩阵
    [[fx,s,x0,0]
    [0,fy,y0,0]
    [0,0,1,0]
    [depth_start,depth_interval,0,1]]

    视差

    tenserflow

    1. tf.slice(input_, begin, size, name=None):按照指定的下标范围抽取连续区域的子集
      input = [[[1, 1, 1], [2, 2, 2]],
      [[3, 3, 3], [4, 4, 4]],
      [[5, 5, 5], [6, 6, 6]]]
      tf.slice(input, [1, 0, 0], [1, 1, 3]) ==> [[[3, 3, 3]]]
      tf.slice(input, [1, 0, 0], [1, 2, 3]) ==> [[[3, 3, 3],
      [4, 4, 4]]]

    2. tf.set_shape()
      shape里面可以有None,会根据输入的大小自动调整

    3. tf.tile(input ,multiples,name=None)
      tensorflow中的tile()函数是用来对张量(Tensor)进行扩展的,其特点是对当前张量内的数据进行一定规则的复制。最终的输出张量维度不变。
      a = tf.constant([[1, 2], [3, 4], [5, 6]], dtype=tf.float32)
      a1 = tf.tile(a,[2,3])
      [[1,2,1,2,1,2],[3,4,3,4,3,4],[5,6,5,6,5,6],
      [1,2,1,2,1,2],[3,4,3,4,3,4],[5,6,5,6,5,6]]

    4. squeeze(input,axis=None,name=None,squeeze_dims=None)

    ‘t’ is a tensor of shape [1, 2, 1, 3, 1, 1]

    tf.shape(tf.squeeze(t)) # [2, 3]

    1. Variable
      在TensorFlow中,变量(Variable)是特殊的张量(Tensor),它的值可以是一个任何类型和形状的张量。
      v = tf.Variable([1,2,3]) #创建变量v,为一个array

    2. tf.stack
      tf.stack(values, axis=0, name=‘stack’)以指定的轴axis,将一个维度为R的张量数组转变成一个维度为R+1的张量。即会在新的张量阶上合并,张量的阶数也会增加
      a = tf.constant([[1,1],[2,2]]) #2x2
      b = tf.constant([[3,3],[4,4]]) #2x2
      c = tf.stack([a,b],axis=0) # 2x2x2
      [[[1,1],[2,2]],[[3,3],[4,4]]]

    3. tf.linspace(start,stop,num,name=None)
      返回一个tensor,该tensor中的数值在start到stop区间之间取等差数列

    4. tf.reduce_sum() 求和 axis=0 ,axis=1

    5. tf.clip_by_value(A, min, max):输入一个张量A,把A中的每一个元素的值都压缩在min和max之间。小于min的让它等于min,大于max的元素的值等于max

    6. tf.gather_nd
      同上,但允许在多维上进行索引

    网站

    https://www.eth3d.net/view_multi_view_result?dataset=12&tid=1 (球)
    http://zhyan.tk/2017/07/03/mvs-learn-1-middlebury/
    (A Comparison and Evaluation of Multi-View Stereo Reconstruction Algorithms)
    https://www.cnblogs.com/gemstone/archive/2011/12/19/2293806.html 视差 Disparity / Parallax

    问题

    1. 点云重建成网格是不是很难
    2. the Poisson reconstruction
      看论文 poisson surface reconstruction以及screened poisson reconstruction
      为了便于理解可以先阅读marching cubes reconstrution
    展开全文
  • MVSNet 关于 是用于从非结构化多视图图像推断深度图的深度学习体系结构。 如果您发现此项目对您的研究有用,请引用: @article{yao2018mvsnet, title={MVSNet: Depth Inference for Unstructured Multi-view ...
  • MVSNet和R-MVSNet [新闻] BlendedMVS数据集发布!!! ()。 关于 是一种深度学习体系结构,用于从非结构化多视图图像推断深度图, 是其扩展,用于基于可伸缩学习的MVS重建。 如果您发现此项目对您的研究有用,请...
  • MVSNet & R-MVSNet [News] BlendedMVS dataset is released!!! (project link). About MVSNet is a deep learning architecture for depth map inference from unstructured multi-view images, and R-MVSNet ...
  • MVSNet的非官方Pytorch实现 。 姚瑶,罗子欣,李世伟,田芳,龙泉。 ECCV2018。MVSNet是一种深度学习体系结构,用于从非结构化多视图图像推断深度图。 这是MVSNet的非官方Pytorch实现 如何使用 环境 python 3.6...
  • MVSNet系列

    千次阅读 2020-05-26 10:02:31
    FastMVSNet–CVPR2020 添加链接描述 添加链接描述 速度真快,但是有的场景点太稀疏了吧,应该是最快的方法。 CVP-MVSNet–CVPR2020(Oral) 很慢的方法,精度很高 R-MVSNet --CVPR2019 DeepMVS

    背景介绍

    Multi-image stereo reconstruction 就是利用multiple,overlap的图像来重建3D场景,并且这些图片使用透视相机并知道内外参数。
    Stereo reconstruction一般可以分成三步:

    1. Rectification
    2. Stereo matching
    3. Triangulation
      在这里插入图片描述
      其中最重要的就是获得视差图,得到了视差图其实也就得到了深度图。得到视差图就是要计算左右两张图中,匹配点在对应图中的视差;最直接也是最慢的就是逐点计算对应匹配,但是实在是太耗时了,因此往往构建损失立方(cost volume)来计算视差。
      在这里插入图片描述
      cost volume就是在给定的深度中,在左右两张图极线上搜索;比如左侧的p点,在右侧的极线对应地方有D_min ~ D_max范围存在对应的正确匹配点,那么计算所有d的损失值并叠加在一起就是volume了。在最终的视差图p点的视差就是cost volume中损失最小的层(就是最匹配的)。
      在这里插入图片描述
      Cost Volume在所有MVSNet方法中都使用到了,其实是传统Multi-view Stereo、Stereo Matching和光流中借鉴过来的思想,早期的DL直接使用2D CNN预测深度但是精度都不高,自MVSNet开始使用CostVolume之后普遍接受了这种思想。

    For stereo matching the labels l correspond to vectors (u, v) which define the displacement in x and y direction. In the x direction, the displacement corresponds to the disparity d (u = d) and there is no shift in y direction (v = 0). Cost computation: The cost volume expresses how well a pixel i in image I matches the same pixel in the second image I shifted by vector l
    1
    2
    A taxonomy and evaluation of dense two-frame stereo correspondence algorithms
    4

    目前已知方法在DTU Benchmark的得分,分别是精度,完整度和综合得分,数据来源各自论文。

    MethodsAcc.Comp.Overall(mm)
    Furu0.6130.9410.777
    Tola0.3421.1900.766
    Camp0.8350.5540.695
    Gipuma0.2830.8730.578
    Colmap0.4000.6640.532
    SurfaceNet0.4501.0400.745
    MVSNet0.3960.5270.462
    P-MVSNet0.4060.4340.420
    R-MVSNet0.3830.4520.417
    MVSCRF0.3710.4260.398
    Point-MVSNet0.3420.4110.376
    CVP-MVSNet0.2960.4060.351
    Fast-MVSNet0.3360.4030.370
    CasMVSNet0.3460.3510.348

    MVSNet(ECCV18)

    MVSNet
    在这里插入图片描述

    DeepMVS(CVPR18)

    Unsupervised MVSNet(CVPR19)

    Learning Unsupervised Multi-View Stereopsis via Robust Photometric Consistency
    论文代码

    R-MVSNet(CVPR19)

    Point-MVSNet(ICCV19)

    Point-based Multi-view Stereo Network
    论文代码

    P-MVSNet(ICCV2019)

    P-MVSNet: Learning Patch-wise Matching Confidence Aggregation for Multi-View Stereo
    在这里插入图片描述

    MVS^2(3DV 19)

    MVS^2: Deep Unsupervised Multi-view Stereo with Multi-View Symmetry

    Fast-MVSNet(CVPR20)

    论文地址
    论文代码
    速度真快,但是有的场景点太稀疏了吧,应该是最快的方法。
    在这里插入图片描述

    CVP-MVSNet(CVPR20)

    Cost Volume Pyramid Based Depth Inference for Multi-View Stereo
    论文代码
    很慢的方法,如果单看精度,应该是目前最高的
    在这里插入图片描述

    Cascade-MVSNet(CVPR20)

    Cascade Cost Volume for High-Resolution Multi-View Stereo and Stereo Matching
    延续MVSNet,使用串行操作逐渐得到高精度的深度图,但是精度真的高。

    PVA-MVSNet(未投)

    M^3VSNet(未投)

    M^3VSNet: Unsupervised Multi-metric Multi-view Stereo Network

    展开全文
  • 理解MVSnet

    2021-05-11 09:48:08
    尽管网络上有很多关于MVSnet的文章,但一些细节部分还是让人很难理解,在这里给出自己的理解,如有错误,敬请指正

    MVSnet:从非结构化多视角立体中推断深度
    网络输入:1张参考图像+N张原图像(从其他视角观察同一物体的图像),每张图像对应的相机内参和外参
    网络输出:概率图+优化深度图,在后处理中使用概率图对优化深度图进行过滤

    一、训练数据处理

    1.数据准备

    使用dtu数据集,因为其GT为点云或网格格式,采用SPSR(Poisson surface reconstruction,筛选的泊松表面重建)+网格渲染将原GT转化为深度图GT

    2.视图选择

    每个原图像分别与参考图像计算得分,取得分高的前N张图像作为网络输入原图像。
    同时缩小图像尺寸至800×600,然后从中心裁剪W=640、H=512的图像块作为训练输入,输入的相机参数会相应地更改。
    深度假设:[425,935]mm均匀取样,分辨率为2mm(D=256)或[425,902.5],分辨率为2.5mm(D=192)

    二、特征提取

    在这里插入图片描述
    在这里插入图片描述

    目标:提取每幅输入图像的特征,输入1个参考图像+N个原图像,输出N+1个32通道的特征图。
    1.参数共享:与常见的匹配任务类似,参数在所有特征图间共享。
    2.每个输入图像输出一个1/4原尺寸,32通道的特征图:将每个剩余像素的原始邻域信息编码到32通道的像素描述符中,与直接对原始图像稠密匹配相比,在特征空间中进行稠密匹配提高了重建质量。

    三、构建代价空间

    在这里插入图片描述

    目标:将所有特征图变换到参考相机的锥形立体空间,形成N+1个代价空间Vi。

    这里的空间是四维的,首先对四维空间有一个抽象的认知:
    三维空间是一本书,书页的大小用长W和宽H来表示,书的每一页是一个Channel(通道),W、H、Channel三个维度构成了三维空间
    四维空间是一摞书,每一本书构成第四个维度,用Depth(深度)来表示

    在这里,使用单应性矩阵对每个特征图进行变换
    1.首先,每个特征图Fi对应D(深度采样数)个单应性矩阵,把每张特征图看成一本书,那么每个深度经单应性变换得到一本书,D个深度,会得到一摞书,书有D本。
    2.不同深度的单应变换确定了变换后书的位置和书页大小(由Hi(d)计算公式决定)
    3.书的位置为参考相机的锥形立体空间,可以理解为拍摄参考图像的相机所在的相机坐标系,沿Z轴方向由Z的范围(深度假设范围)确定的一个立体空间。
    4.同时,由于单应性变换得到的每本书的书页大小不同,可以看成一摞书,从上往下,书的书页大小逐渐增大,由此形成了锥形空间。
    5.最终,每个特征图得到了一摞呈锥形分布的书,书页大小逐渐增加(代表W,H两个维度),每本书代表一个深度(同一深度内书页尺寸相同,因为由同一个单应性变换矩阵得到),每本书的每一页代表一个通道,每本书的通道数相同,都为32(原特征图的通道数)。

    N+1个特征图,会在参考相机锥形空间的同一空间位置同时产生N+1个锥形空间(也可以称为代价空间),这里实际上已经5维了,下一步将这同一空间位置的的N+1的代价空间合并为一个代价空间,降回4维。
    在这里插入图片描述
    在这里插入图片描述

    这里的单应性变换是可微的,即可以实现反向传播,进行端到端训练。

    四、代价度量

    在这里插入图片描述

    目标:将N+1个代价空间聚合为一个统一的代价空间C(将N+1摞书合并为一摞书)
    C.shape:(D,W,H,F),D、W、H、F为深度采样数、输入图像的宽度,高度的1/4和特征图的通道数。

    实现过程:
    N+1个代价空间是重叠在同一空间位置的,对同一空间位置的点计算方差
    比如说,将每摞书第一页左上角的点都取出来,然后计算方差,得到输出的那摞书的第一页左上角的点。对每个空间点都进行这样的计算,得到输出的一摞书,即最终的代价空间。

    在最后,因为每本书的大小还是不同的,即还是锥形空间,对其进行可微双线性插值,将每本书的大小都变换为(W,H)大小,得到一个方形的代价空间。

    现在代价空间是一摞页面大小相同的书,同样,页面大小为W、H,每一页代表一个通道,每一本代表一个深度。

    使用方差的好处:
    1.可以适应任意数量的原图像输入
    2.显式的度量了多视图特征的差异
    在这里插入图片描述

    五、代价空间正则化

    在这里插入图片描述

    目标:根据代价空间C得到概率空间P(将一摞书合并为一本书)

    抽象理解:
    在这一步做了三件事
    1.通过三维卷积对代价空间正则化,即将深度的取值集中起来,尽可能变成单峰分布。
    2.三维卷积的最后将通道降为1,也就是把每本书都变成一页纸,一张纸代表一个深度。
    这个时候可以把这些纸按序纸合并为一本书(W,H,D),页面大小为(W,H),页数为D,这就是最终的代价空间,对于书页((W,H)平面)上的每一个点,若它在第三页的值最大,那么这个点的深度就为第三页的取值(例如,[425,935]mm均匀取样,分辨率为2mm(D=256),那么第三页的深度为425+3x2=431mm)。
    3.沿页数方向用softmax进行归一化,即对于(W,H)平面上的每个点,沿D方向的概率合为1.,这便得到最终的概率空间P.
    下一步将从概率空间P获取初始深度图和概率图。

    网络:类似于3D-UNet,使用编码器-解码器结构,以相对较低的内存和计算成本,从一个大的感受野聚集相邻的信息。

    简单说一下三维卷积和二维卷积的区别:
    二维卷积:卷积核在每个channnel上2d移动,每个channel使用不同的参数,每个channel得到的值相加.
    三维卷积:由于每个channl存在deepth,卷积核在每个channel上3d移动(卷积核的deepth<channel的deepth),每个channel使用不同的参数,每个channel得到的值相加.

    六、深度图初始估计

    在这里插入图片描述

    目标:从概率空间P中获取深度图(将一本书变成一页纸,(W,H,1))

    方法:
    对(W,H)平面每个点,沿书页D方向计算期望,期望值即为该点的深度估计。

    使用期望的优势:
    1.相比于argmax,过程可微
    2.可以产生连续的深度估计

    七、概率图

    在这里插入图片描述

    目标:由概率空间P获取深度质量的估计d(也是一张纸(W,H,1)),对深度图进行过滤。
    深度估计的质量d:估计值在真实值附近一个小范围的概率。
    计算方式:由于深度假设是沿着摄像机视锥截取的,只需对四个最高概率的深度假设取概率和(前4的概率值相加?)。
    概率图:每个点的值表示该位置深度估计的有效性,概率越高,越可能为正确的深度估计(或该点的深度估计有效,不是背景等)。

    八、优化深度图

    在这里插入图片描述

    目标:利用参考图像的边界信息优化深度图。
    初始深度图是一个不错的深度图,但由于正则化时感受野较大,重建的边界可能过度平滑,而自然场景中的参考图像包含边界信息。

    具体做法:
    1.将参考图像(RGB3通道)缩小1/4,使其和初始深度图尺寸相同(W,H,3)。同时,将深度图归一化[0,1],防止在某个深度比例上产生偏差(W,H,1)。将处理过的两个图进行通道拼接(W,H,4)
    2.将拼接后的4通道图像放入 4层残差结构的卷积网络进行信息融合
    3.将残差网络输出的单通道特征图(W,H,1)与初始深度图逐元素相加,并将归一化的值映射到深度假设的区间,由此得到优化后的深度图。

    九、损失计算

    在这里插入图片描述
    在这里插入图片描述

    1.使用L1损失,分别对初始深度图和优化深度图进行损失计算,再以权重系数λ相加,λ一般设置为1.0。
    2.只考虑GT中有深度信息的像素点(除过图中蓝色背景的区域)。

    十、后处理

    1.深度图过滤

    1.光度一致性度量匹配质量。用网络得到概率图来衡量深度估计的质量。在实验中,将概率低于0.8的像素视为漏光像素。
    2.几何约束度量多个视图之间的深度一致性,类似于立体图像的左右视差检查。

    几何约束可以用视差原理图来理解:
    在这里插入图片描述
    假设上图右相机为参考相机(左右相机共用深度图),通过像素点PR和它的深度d1,可以得到它在相机坐标系的实际位置(射线O2 PR上到线段O1 O2距离为d1的点),连接该点和O1,即可得到PR在左相机成像平面的对应点PL,将PL通过它的深度d2用同样的方式投影回右相机成像平面,因为深度使用的是估计值,因此投影回右相机成像平面的点会与PR产生位置偏差,假设投影点为P reproj,该点的深度估计为d reproj,如果重投影坐标P reproj和重投影点深度d reproj满足
    在这里插入图片描述
    则认为p1的深度估计d1是两视图一致的。在实验中,所有深度至少应为三视图一致性。

    2.深度图融合

    将不同视点的深度图融合到统一的点云表示中,使用基于可见性的融合算法,把遮挡,光照等影响降到了最低,使得不同视点之间的深度遮挡和冲突最小化。
    为了进一步抑制重建噪声,在滤波步骤中确定每个像素的可见视图,并将所有重投影深度的平均值作为像素的最终深度估计。
    融合后的深度图直接投影到空间,生成三维点云。

    展开全文
  • MVSNet 论文概要

    2021-04-16 17:21:37
    MVSNet 论文全称(MVSNet: Depth Inference for Unstructured Multi-view Stereo) Abstract 作者提出一个端到端即一个架构就可以直接从多张图片中推断深度图。整体流程是: 提取图像特征(卷积生成特征图) 构建 3D ...

    MVSNet

    论文全称(MVSNet: Depth Inference for Unstructured Multi-view Stereo)

    Abstract

    作者提出一个端到端即一个架构就可以直接从多张图片中推断深度图。整体流程是:

    1. 提取图像特征(卷积生成特征图)
    2. 构建 3D cost volume,用到的方法是根据已知的拍摄点相机位姿进行单应性变换,后面细讲。
    3. 根据3D cost volume 生成深度图

    Introduction

    传统的MVS有很多缺点,例如因为他们是基于朗伯体的,对低纹理、镜面、反光区域无法重建,而且虽然精度高,但是完整性差。最近的基于深度学习的方法也有这样那样的问题,作者提出的CNN网络能达到好的效果。

    MVSNet

    在这里插入图片描述
    先上图,根据图和 Abstract 中描述的步骤,一步步看。

    特征提取

    作者用一张图作为 reference image,多张图作为 source image,用这 N 张图得到reference image的深度图。对这N张图进行卷积,提取特征。

    Cost Volume

    先理解几个概念:

    • 视锥:就是指相机的拍摄范围,我们知道相机的拍摄范围是一个锥形,沿视锥方向的点在成像上是一个点,与笛卡尔坐标系不同,这对计算深度方便。
    • 单应性变换(Homography):两张拍摄的图片不会是你把图片上下放,就点点重合的,因为有视差和旋转的存在。单应性变换就是根据相机的内参、外参,把一张图片中的点映射到,如果在另一个相机位姿下拍摄,应该成像的位置。

    继续说Cost Volume,它是基于视锥计算的。把特征提取步骤计算的 *N *张图片–一张 reference image的特征图,多张 source image(不是全部图片的特征图,而是选取几张,例如2、3张图片)使用单应性变换,变换到与reference image平行的成像平面,把变换后的特征图转为特征向量V,Cost Volume就是这些V的方差。

    我们可以相想一下,V是一个三维向量DWH,存储的是经过单应性变换后每个图片的特征。把他们做方差,即每个V减去平均值,每个V的成像平面平行,它们相减就应该是同一视锥方向、同一深度、同一像素坐标的特征值相减,如果越小,那么表示特征越接近。Cost Volume每个元素存储的就是这 N 张图相同视锥方向、深度、像素坐标下的匹配程度,称为置信度。

    经过Regularization后,Cost Volume变为概率体P,每个元素与原先意思相同,只不过Regularization后剔除噪音。

    Depth Map

    根据概率体P包含多个图片的拍摄点相机位姿信息,还计算了特征匹配信息,因此能够用来计算深度图,这个深度图是 reference image 的深度图,计算公式看原论文。

    上面就是论文主要内容,后面还有深度图融合生成点云等。还是要看原论文。

    展开全文
  • 接下来,我会为大家无死角的解析MVSNet(R-MVSNet)-多视角立体深度推到,之前的文章,如下(以下是我工作的所有项目,每一个项目都是,我都做了百分百的详细解读,随着项目增多,为了方便不臃肿,所以给出以下链接) ...
  • DTU训练集测试集, MVSNET
  • AACVP-MVSNet理解

    2021-08-08 18:11:36
    AACVP-MVSNet:基于注意力感知代价体金字塔的多视图立体网络 创新点: 1)引入自注意力层提高特征提取能力,它可以捕获深度推理任务的重要信息; 2)引入了相似性度量来聚合参考图像和所有源图像之间的代价,而...
  • Fast-MVSNet解读

    2021-05-14 14:20:34
    Fast-MVSNet一、概览二、稀疏高分辨率深度图预测三、深度图扩展四、Gauss-Newton 精细化五、损失函数六、实现细节1.train2.test七、网络结构1.稀疏高分辨率深度图预测2.深度图扩展3.Gauss-Newton精细化八、深度图...
  • 以下链接是个人关于MVSNet(R-MVSNet)-多视角立体深度推导重建 所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:a944284742相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是...
  • 以下链接是个人关于MVSNet(R-MVSNet)-多视角立体深度推到 所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:a944284742相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我...
  • MVSNet笔记

    千次阅读 2020-06-14 12:33:58
    为此, 作者提出端到端的多视图深度预测网络 MVSNet, 和其他基于深度图的 MVS 方法类似, MVSNet 将一张参考图像和多张源图像作为输入, 为参考图像预测深度图,而不是整个 3D 场景。 网络的关键之处在于可微分的...
  • 论文题目:Fast-MVSNet: Sparse-to-Dense Multi-View Stereo with Learned Propagation and Gauss-Newton ...
  • MVSNet提出了一种基于多视角图像和相机参数重建出目标深度图的有效方法。利用可微的单应性矩阵架起了二维图像特征和三维代价空间的桥梁,实现了端到端的多视角立体视觉。
  • MVSNet: Depth Inference for Unstructured Multi-view Stereo 摘要 MVSNet是深度学习多视立体匹配的开山之作(我个人认为),虽然其在网络结构上与双目立体匹配并没有太大的改进,但是其解决了如何进行多视下怎么可...
  • 点击上方“计算机视觉工坊”,选择“星标”干货第一时间送达论文题目:P-MVSNet: Learning Patch-wise Matching Confidence Aggregation...
  • MVSNet通过将相机几何参数编码到网络中,实现了端到端的多视角三维重建,并在性能和视觉效果上超越了先前算法,并在eccv2018 oral中发表。 模型主要包含四个主要步骤:图像特征抽取、多视角可微单应性变换、cost ...
  • 论文题目:MVSNet: Depth Inference for Unstructured Multi-view Stereo, (ECCV2018 Oral)开源代码(tensorflo...
  • 以下链接是个人关于MVSNet(R-MVSNet)-多视角立体深度推导重建 所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:a944284742相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是...
  • 【三维深度学习】基于GRU递归方法对cost volum进行处理的R-MVSNet,实现更为精确的多视角深度估计。
  • 以下链接是个人关于MVSNet(R-MVSNet)-多视角立体深度推导重建 所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:a944284742相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是...
  • CVP-MVSNet紧凑,轻巧,运行时间快,并且可以处理高分辨率图像以获得用于3D重建的高质量深度图。 如果您发现此项目对您的研究有用,请引用: @InProceedings{Yang_2020_CVPR, author = {Yang, Jiayu and Mao, ...
  • MVSNet:Depth Inference for Unstructured Multi-view Stereo.(ECCV2018) 摘要 1 Introduction 2 Related work MVSNet:Depth Inference for Unstructured Multi-view Stereo.(ECCV2018) Yao Yao1, Zixi.....
  • 点击上方“计算机视觉工坊”,选择“星标”干货第一时间送达上期文章介绍了用于三维重建的深度学习框架MVSNet[1],这也是如今比较主流的深度估计的神经网络框架。框架的原理按照双目立体匹配框...
  • 点击上方“3D视觉工坊”,选择“星标”干货第一时间送达MVSNet在2018年提出后,在估计深度图的应用中取得了非常好的结果。应用CNN于立体匹配的技术也使得传统的匹配效率整体提高。但是...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 311
精华内容 124
关键字:

MVSnet