精华内容
下载资源
问答
  • PMVS算法的CPU多线程和GPU两级粒度并行策略.pdf
  • 三维重建(四)PMVS算法 the patch-based MVS algorithm 通过前面的介绍,已经获得了相机的参数,我们可以利用这些参数使用基于面片的三维多视角立体视觉算法(PMVS)重建出稠密的点云。下面详细介绍一下PMVS算法。 ...

    三维重建(四)PMVS算法 the patch-based MVS algorithm
    通过前面的介绍,已经获得了相机的参数,我们可以利用这些参数使用基于面片的三维多视角立体视觉算法(PMVS)重建出稠密的点云。下面详细介绍一下PMVS算法。
    一、基本概念介绍
    1、面片(patch)
    面片p是一个近似的正切与重建物体表面的一个小矩形,他的一边平行于参考相机的x轴。对于一个面片p,他的几何特征如下:
    中心点:c§;
    单位法向:n§,该向量指向相机的光心;
    面片p对应一个参考图像R§,在R§中p是可见的。针对p有扩展矩形,p在R§中的投影是μ×μ大小的,在原论文中μ=5 or 7

    2、灰度一致性函数(Photometric Discrepancy Function)
    首先,我们另图像集合V(p)是所有在自身图像中可见面片p的图像集合(显然这里有R(p)∈V(p),将在后面介绍V(p)的获得已经R(p)的确定)那么,灰度一致性函数定义如下:![在这里插入图片描述](https://img-blog.csdnimg.cn/20201216134220411.png)在这里, V(p)−R(p)是指出去 R(p)的 V(p)的其他元素; h(p,I1,I2)是指 I和R(p)的灰度一致性函数,计算过程如下:

    在这里插入图片描述
    在这里插入图片描述
    3、面片的优化面片优化的目的就是恢复那些g∗(p)较小的面片,每个面片的重建过程分为以下两步:4. 初始化面片的相关参数c(p),n(p),V∗(p)和R(p);5. 优化c(p)和n(p)这里的第一步初始化的过程在后面用到,这里先讲以下c(p)和n(p)的优化。几何参数c(p)和n(p)的优化是通过最小化g∗(p)而得到的。为了简化计算,将c(p)约束在某一条光线上,这样p在其对应的可视图集V∗(p)中某个图像的投影位置就不会变,因此降低了p的自由度。n(p)是由欧拉角(yaw and pitch)决定的,可以用共轭梯度法求解这个优化问题。(这一段我没有懂这些方法)

    在这里插入图片描述

    二、面片的重构
    基于面片的多视角三维立体视觉算法的目的就是保证在每个图像块Ci(x,y)上至少有一个面片的的投影。主要分为以下三步:

    1. 初始化特征匹配(initial feature matching);
    2. 面片生成(patch expansion);
    3. 面片筛选(patch filtering);
      初始化特征匹配的目的就是生成一系列稀疏的面片,面片的生成和筛选都要执行n次使得面片足够稠密,同时去除不好的面片。下面依次进行介绍。

    1、初始化特征匹配

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

    面片生成的目的就是保证每个图像块至少对应一个面片。通过上面生成的面片,重复的生成新的面片,具体来说就是给定一个面片p,首先获得一个满足一定条件的邻域图像块集合C(p),然后进行面片生成的过程。下面是面片p的两个相关概念:图像块邻域C(p):

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

    CMVS算法概述:

    CMVS目的
    任务是将SFM的稀疏点聚类到不同的影像集(image cluster),每个影像集分别进行MVS算法。
    这样做的好处是根据SFM稀疏点的信息对浩大的影像分块成多个小块,分别进行MVS,分治思想,减少MVS算法的资源峰值。

    CMVS影像聚类的特点
    1.删除多余影像(质量极差的影像)
    2.保证cluster的size(保证每个cluster内影像数量小于某一size)
    3.保证完整性和质量
    完整性由每个特征点都会被cluster覆盖来保证
    4.cluster之间有重叠

    目标方程
    为实现保证质量的目的,给出目标方程:
    在这里插入图片描述
    目标方程中包含了:

    1)最小化影像数量;
    2)保证cluster大小;
    3)保证收敛。
    在这里插入图片描述
    1、点收敛;
    2、影像收敛;

    在这里插入图片描述
    衡量质量的标准(measurement):
    一个点P对应于一个影像集C
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    方法步骤
    1.SFM滤波—融合SFM点
    2.除去质量不好的影像
    3.使用normalized cut初始分割
    在这里插入图片描述

    边权:在这里插入图片描述
    4.贪心的向初始分割中添加影像
    在这里插入图片描述

    展开全文
  • 三维重建(四)PMVS算法 the patch-based MVS algorithm

    万次阅读 多人点赞 2016-07-12 09:14:43
    下面详细介绍一下PMVS算法。一、基本概念介绍1、面片(patch)面片pp是一个近似的正切与重建物体表面的一个小矩形,他的一边平行于参考相机的x轴。对于一个面片pp,他的几何特征如下: 中心点:c(p)c(p); 单位法...

    通过前面的介绍,已经获得了相机的参数,我们可以利用这些参数使用基于面片的三维多视角立体视觉算法(PMVS)重建出稠密的点云。下面详细介绍一下PMVS算法。

    一、基本概念介绍

    1、面片(patch)

    面片 p 是一个近似的正切与重建物体表面的一个小矩形,他的一边平行于参考相机的x轴。对于一个面片p,他的几何特征如下:
    中心点: c(p)
    单位法向: n(p) ,该向量指向相机的光心;
    面片 p 对应一个参考图像R(p),在 R(p) p 是可见的。针对p有扩展矩形, p R(p)中的投影是 μ×μ 大小的,在原论文中 μ= 5 or 7

    2、灰度一致性函数(Photometric Discrepancy Function)

    首先,我们另图像集合 V(p) 是所有在自身图像中可见面片 p 的图像集合(显然这里有R(p)V(p),将在后面介绍 V(p) 的获得已经 R(p) 的确定)那么,灰度一致性函数定义如下:

    g(p)=1|V(p)R(p)|I(V(p)R(p))h(p,I,R(p)
    在这里, V(p)R(p) 是指出去 R(p) V(p) 的其他元素; h(p,I1,I2) 是指 IR(p) 的灰度一致性函数,计算过程如下:
    1. 首先把面片 p 划分为μ×μ的小格;
    2. 通过双线性差值的方法,对 p Ii的图像上的投影进行差值,得到像素灰度 q(p,Ii)
    3. 用1减去 q(p,I1) q(p,I1) 的NCC(normalized cross correlation)值。
    过程如下图所示:


    这里写图片描述

    由于 g(p) 对于图像中出现高光或者有障碍物的情况下的效果不好,因此在实际情况下,我们需要保证图像 I 和图像R(p)的灰度一致性函数大于一定的值 α (后面将会介绍如何选择这个阈值)。因此有:
    V(p)=I|IV(p),h(p,I,R(p)α)
    g(p)=1|V(p)R(p)|I(V(p)R(p))h(p,I,R(p)

    3、面片的优化

    面片优化的目的就是恢复那些 g(p) 较小的面片,每个面片的重建过程分为以下两步:
    4. 初始化面片的相关参数 c(p),n(p),V(p)R(p)
    5. 优化 c(p)n(p)
    这里的第一步初始化的过程在后面用到,这里先讲以下 c(p)n(p) 的优化。几何参数 c(p)n(p) 的优化是通过最小化 g(p) 而得到的。为了简化计算,将 c(p) 约束在某一条光线上,这样 p 在其对应的可视图集V(p)中某个图像的投影位置就不会变,因此降低了 p 的自由度。n(p)是由欧拉角(yaw and pitch)决定的,可以用共轭梯度法求解这个优化问题。(这一段我没有懂这些方法)

    4、图像模型

    基于面片的物体表面的表示的优势是他的灵活性,然而却不容易找到面片的连续性。为了解决这个问题进行了如下的操作,把图像 Ii 分成了许多 β1×β1 像素的的小块 Ci(x,y) ,这里 x,y 表示图像块的下标, i 表示这是第i张图像的。给定一个面片 p 和对应的V(p),把p投影到 V(p) 的图像中,以得到面片p对应的图像块,每个图像块 Ci(x,y) 用一个集合 Qi(x,y) 记录了所有投影到这个图像块的面片。同理,我们用 Qi(x,y) 来表示用 V(p) 得到的结果。如下图所示:


    这里写图片描述

    二、面片的重构

    基于面片的多视角三维立体视觉算法的目的就是保证在每个图像块 Ci(x,y) 上至少有一个面片的的投影。主要分为以下三步:
    1. 初始化特征匹配(initial feature matching);
    2. 面片生成(patch expansion);
    3. 面片筛选(patch filtering);
    初始化特征匹配的目的就是生成一系列稀疏的面片,面片的生成和筛选都要执行n次使得面片足够稠密,同时去除不好的面片。下面依次进行介绍。

    1、初始化特征匹配

    首先用DOG和Harris来提取图像的角点特征,即为每幅图像的特征点。对于图像 Ii ,以及其对应的光心 O(Ii) ,该图像中的特征点 f ,通过允许有两个像素误差的极线约束找到它在其他图像中的同种类型的特征点f,构成匹配点对 (f,f) 。然后用这些匹配点对使用三角化的方法生成一系列三维空间点,然后将这些点按照距离 O(Ii) 从小到大顺序进行排列,然后依次尝试生成面片,直到成功。
    尝试生成面片的方法如下所示:首先初始化候选面片的 c(p),n(p)R(p) ,如下所示:


    这里写图片描述

    由于生成的面片可能有很多错误的情况,因此我们认为在图像 Ii 中可见的面片是面片的法向量与面片中心到相机光心的连线夹角小于一定角度 α 的图像,即满足:
    这里写图片描述
    同样 V(p) 的获得与前面所讲的方法相同。这样面片的信息都已经初始化过了,然后根据前面所讲的对 c(p)n(p) 进行优化,并将优化过后的 c(p)n(p) 带入
    V(p)=I|IV(p),h(p,I,R(p)α)
    这里写图片描述中对 V(p)V(p) 进行更新。如果 |V(p)|r ,集认为面片 p 的可视图像至少为r幅,即接受面片 p ,重建成功。并将面片p存储到对应的可视图像的图像块中(即更新Qi(x,y)Qi(x,y))。
    具体的算法描述和图示如下图所示,过程就是我上面说的过程,懒得翻译了,很好理解。

    这里写图片描述

    2、面片生成(patch expansion)

    面片生成的目的就是保证每个图像块至少对应一个面片。通过上面生成的面片,重复的生成新的面片,具体来说就是给定一个面片 p ,首先获得一个满足一定条件的邻域图像块集合C(p),然后进行面片生成的过程。
    下面是面片p的两个相关概念:
    图像块邻域 C(p)


    这里写图片描述

    面片 p p的临近关系:
    |(c(p)c(p))n(p)|+|(c(p)c(p))n(p)|<2ρ1
    即当面片 p p满足上式时,即判定两者为临近关系,上式中的 ρ1 R(p) c(p)c(p) 中的深度决定。
    当存在一个面片 p 其所属的图像块 Ci(x,y) 满足 Ci(x,y)C(p) ,同时 pp 属于近邻关系时,此时将 Ci(x,y) C(p) 中删除,不对他进行面片生成。同时,即使这个条件没有满足,只要 Qi(x,y) 不为空,也不需要再此图像块上执行生成操作。
    对于 C(p) 中其余的图像块,将会执行面片生成的操作流程以生成新的面片 p 。首先用 p 的相应变量初始化p n(p)R(p)V(p) c(p’)的初始值为穿过 Ci(x,y) 的可视光线与面片 p 所在平面的交点。使用
    V(p)=I|IV(p),h(p,I,R(p)α)
    V(p) 得到 V(p) ,再由上面提到的方法对 c(p)n(p) 进行优化。在优化的过程中,将 c(p) 约束在一条直线上,使得 p 在图像 Ii 上的位置不会改变,始终对应的是 Ci(x,y) 。优化完成后,给 V(p) 加上一组图像,这些图像块些根据深度测试判断为 p 对其应该是可见的,并根据此更新 V(p)
    最终如果 |V(p)|r ,则判定 p 是可接受的,即生成成功,同时更新 Qi(x,y) Qi(x,y) 。具体的参数设置参见原论文。
    面片生成的算法流程如图所示:

    这里写图片描述

    3、面片过滤(patch filtering)

    在面片的重建过程中,可能会生成一些误差较大的面片,因此需要过滤来确保面片的准确性。
    第一个过滤器是通过可视一致性进行过滤,另 U(p) 表示与当前可视信息不连续的面片集合,所谓的不连续就是 p p两个面片不属于近邻关系,但是却存在于同一个 Qi(x,y) 中。对于 U(p) 中的面片 p ,如果满足下列条件,则将其过滤掉。

    |V(p)|(1g(p))<piU(p)1g(p)
    直观上来讲,如果 p 是一个异常值,那么1g(p) |V(p)| 都会比较小,这样 p 一般都会被过滤掉。
    第二个过滤器同样也是考虑可视一致性,不过会更加严格,对于每个面片p,我们计算他通过深度测试得到的可视图像的总数,如果数目小于 r ,那么则认为p是异常值,从而过滤掉。
    第三个过滤器,对于每个面片 p ,在V(p)中,收集这样的一组面片,他们的映射到面片 p 自己所在的图像块以及所有相邻的图像块,如果p的八邻域内的面片数量占收集所得面片数量的比例小于0.25,则任务 p <script type="math/tex" id="MathJax-Element-15479">p</script>是异常值,将其过滤掉。

    展开全文
  • PMVS算法原理总结

    千次阅读 2020-10-14 09:48:07
    这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...

    一、理论基础
    表面切片模型:
    在计算机视觉领域,我们可以用场景的局部切平面来描述场景的表面,这些局部切平面被称为表面切片。
    我们可以用一个矩形来描述表面切片,每个表面切片都附带有中心坐标c§以及一个单位法向量n§来表征表面切片的位置和朝向。
    对于每个表面切片p都赋予一个参考图像R§,一个可见图像集合V§以及真正可见图像集合T§,参考图像为相机光轴与表面切片法向量夹角最小的图像,并且表面切片的法向量指向该参考图像,可见图像集合V§表示那些理论上看到表面切片p的图像集合,但实际上由于遮挡等原因可能看不到表面切片,所以T§的作用就是记录真正可以看到表面切片p的图像集合。
    另外,令参考图像的x轴与表面切片p的x轴近似平行。表面切片的几何结构如图所示:
    表面切片的几何结构
    二、PMVS算法描述
    PMVS算法中将每张图像分成许多𝛽1× 𝛽1像素大小的图像块𝐶(𝑥, 𝑦),每个图像块用一个集合𝑄(𝑥, 𝑦)来记录所有投影到这个图像块的表面切片。基于表面切片的PMVS算法目的就是保证每个图像块𝐶(𝑥, 𝑦)上都至少有一个表面切片的投影。
    其过程主要分为三个步骤:
    (1)初始化特征匹配
    (2)表面切片的生成
    (3)表面切片的过滤
    通过特征匹配并三角化后既可以初始化得到稀疏表面切片,之后生成更多的表面切片并对错误的表面切片进行过滤,这两个过程迭代多次来生成更多的表面切片并对错误的表面切片进行过滤。
    PMVS 算法中使用 DoG 算子和 Harris 角点提取算子来提取图像的特征,之后对特征点进行匹配,通过三角化的方式可以根据匹配点对生成稀疏空间点云,然后将这些点按照点到对应相机光心的距离从小到大排序,依次尝试生成表面切片直到成功为止,初始化后得到初始表面切片。
    之后根据这些表面切片重复生成新的表面切片,具体来说就是对每一个表面切片,首先定义其满足一定条件的邻域图像集合,在此集合中尝试生成新的表面切片。
    最后是对表面切片进行过滤来剔除错误的表面切片PMVS 算法中使用了三个过滤器,一个是通过 可见一致性标准来过滤,剔除掉不满足可视一致性标准的表面切片;另一个过滤器也考虑了可见一致性,对于每个表面切片计算其通过深度测试的可见图像总数,剔除那些总数没有超过一定阈值的表面切片;最后的过滤器过滤掉那些孤立的表面切片。

    展开全文
  • 下面详细介绍一下PMVS算法。 一、基本概念介绍 1、面片(patch) 面片p是一个近似的正切与重建物体表面的一个小矩形,他的一边平行于参考相机的x轴。对于一个面片p,他的几何特征如下:中心点:c(p);单位法向:n...

    通过前面的介绍,已经获得了相机的参数,我们可以利用这些参数使用基于面片的三维多视角立体视觉算法(PMVS)重建出稠密的点云。下面详细介绍一下PMVS算法。

    一、基本概念介绍

    1、面片(patch)

    面片p是一个近似的正切与重建物体表面的一个小矩形,他的一边平行于参考相机的x轴。对于一个面片p,他的几何特征如下: 
    中心点:c(p); 
    单位法向:n(p),该向量指向相机的光心; 
    面片p对应一个参考图像R(p),在R(p)p是可见的。针对p有扩展矩形,pR(p)中的投影是μ×μ大小的,在原论文中μ=5 or 7

    2、灰度一致性函数(Photometric Discrepancy Function)

    首先,我们定义图像集合V(p)表示所有在自身图像中可见面片p的图像集合(显然这里有R(p)V(p),将在后面介绍V(p)的获得已经R(p)的确定)那么,灰度一致性函数定义如下:

    g(p)=1\|V(p)\R(p)|I(V(p)\R(p))h(p,I,R(p)

    在这里,V(p)\R(p)是指除去R(p)V(p)的其他元素;h(p,I1,I2)是指IR(p)的灰度一致性函数,计算过程如下: 
    1. 首先把面片p划分为μ×μ的小格; 
    2. 通过双线性差值的方法,对pIi的图像上的投影进行差值,得到像素灰度q(p,Ii); 
    3. 用1减去q(p,I1)q(p,I1)的NCC(normalized cross correlation)值。 
    过程如下图所示: 

     


    这里写图片描述 


    由于g(p)对于图像中出现高光或者有障碍物的情况下的效果不好,因此在实际情况下,我们需要保证图像I和图像R(p)的灰度一致性函数大于一定的值α(后面将会介绍如何选择这个阈值)。因此有:

    V(p)={I|IV(p),h(p,I,R(p)α)}
    g(p)=1\|V(p)\R(p)|I(V(p)\R(p))h(p,I,R(p)

     

    3、面片的优化

    面片优化的目的就是恢复那些g(p)较小的面片,每个面片的重建过程分为以下两步: 
    4. 初始化面片的相关参数中心点c(p),法向量n(p),可视化图像集V(p)和参考图像R(p); 
    5. 优化几何参数c(p)n(p) 
    这里的第一步初始化的过程在后面用到,这里先讲以下c(p)n(p)的优化。几何参数c(p)n(p)的优化是通过最小化光度一致性分数(the photometric discrepancy score)g(p)而得到的。为了简化计算,将c(p)约束在某一条光线上,这样p在其对应的可视图集V(p)中某个图像的投影位置就不会变,因此降低了p的自由度和只能求出一个深度。n(p)是由欧拉角(yaw and pitch)决定的,可以用共轭梯度法求解这个优化问题。

    4、图像模型

    基于面片的物体表面的表示的优势是他的灵活性,然而却不容易找到面片的连续性。为了解决这个问题进行了如下的操作,把图像Ii分成了许多β1×β1像素的的小块Ci(x,y),这里x,y表示图像块的下标,i表示这是第i张图像的。给定一个面片p和对应的V(p),把p投影到V(p)的图像中,以得到面片p对应的图像块,每个图像块Ci(x,y)用一个集合Qi(x,y)记录了所有投影到这个图像块的面片。同理,我们用Qi(x,y)来表示用V(p)得到的结果。如下图所示: 


    这里写图片描述 

     

    二、面片的重构

    基于面片的多视角三维立体视觉算法的目的就是保证在每个图像块Ci(x,y)上至少有一个面片的的投影。主要分为以下三步: 
    1. 初始化特征匹配(initial feature matching); 
    2. 面片生成(patch expansion); 
    3. 面片筛选(patch filtering); 
    初始化特征匹配的目的就是生成一系列稀疏的面片,面片的生成和筛选都要执行n次使得面片足够稠密,同时去除不好的面片。下面依次进行介绍。

    1、初始化特征匹配

    首先用DOG和Harris来提取图像的角点特征,即为每幅图像的特征点。对于图像Ii,以及其对应的光心O(Ii),该图像中的特征点f,通过允许有两个像素误差的极线约束找到它在其他图像中的同种类型的特征点f,构成匹配点对(f,f)。然后用这些匹配点对使用三角化的方法生成一系列三维空间点,然后将这些点按照距离O(Ii)从小到大顺序进行排列,然后依次尝试生成面片,直到成功。 
    尝试生成面片的方法如下所示:首先初始化候选面片的c(p),n(p)R(p),如下所示: 


    这里写图片描述 


    由于生成的面片可能有很多错误的情况,因此我们认为在图像Ii中可见的面片是面片的法向量与面片中心到相机光心的连线夹角小于一定角度α的图像,即满足: 
    这里写图片描述 
    同样V(p)的获得与前面所讲的方法相同。这样面片的信息都已经初始化过了,然后根据前面所讲的对c(p)n(p)进行优化,并将优化过后的c(p)n(p)带入

    V(p)=I|IV(p),h(p,I,R(p)α)

    这里写图片描述中对V(p)V(p)进行更新。如果|V(p)|r,集认为面片p的可视图像至少为r幅,即接受面片p,重建成功。并将面片p存储到对应的可视图像的图像块中(即更新Qi(x,y)Qi(x,y))。 
    具体的算法描述和图示如下图所示,过程就是我上面说的过程,懒得翻译了,很好理解。 


    这里写图片描述 

     

    2、面片生成(patch expansion)

    面片生成的目的就是保证每个图像块至少对应一个面片。通过上面生成的面片,重复的生成新的面片,具体来说就是给定一个面片p,首先获得一个满足一定条件的邻域图像块集合C(p),然后进行面片生成的过程。 
    下面是面片p的两个相关概念: 
    图像块邻域C(p): 


    这里写图片描述 


    面片pp的临近关系:

    |(c(p)c(p))n(p)|+|(c(p)c(p))n(p)|<2ρ1

    即当面片pp满足上式时,即判定两者为临近关系,上式中的ρ1R(p)c(p)c(p)中的深度决定。 
    当存在一个面片p其所属的图像块Ci(x,y)满足Ci(x,y)C(p),同时pp属于近邻关系时,此时将Ci(x,y)C(p)中删除,不对他进行面片生成。同时,即使这个条件没有满足,只要Qi(x,y)不为空,也不需要再此图像块上执行生成操作。 
    对于C(p)中其余的图像块,将会执行面片生成的操作流程以生成新的面片p。首先用p的相应变量初始化pn(p)R(p)V(p)c(p’)的初始值为穿过Ci(x,y)的可视光线与面片p所在平面的交点。使用

    V(p)=I|IV(p),h(p,I,R(p)α)

    V(p)得到V(p),再由上面提到的方法对c(p)n(p)进行优化。在优化的过程中,将c(p)约束在一条直线上,使得p在图像Ii上的位置不会改变,始终对应的是Ci(x,y)。优化完成后,给V(p)加上一组图像,这些图像块些根据深度测试判断为p对其应该是可见的,并根据此更新V(p)。 
    最终如果|V(p)|r,则判定p是可接受的,即生成成功,同时更新Qi(x,y)Qi(x,y)。具体的参数设置参见原论文。 
    面片生成的算法流程如图所示: 


    这里写图片描述 

     

    3、面片过滤(patch filtering)

    在面片的重建过程中,可能会生成一些误差较大的面片,因此需要过滤来确保面片的准确性。 
    第一个过滤器是通过可视一致性进行过滤,另U(p)表示与当前可视信息不连续的面片集合,所谓的不连续就是pp两个面片不属于近邻关系,但是却存在于同一个Qi(x,y)中。对于U(p)中的面片p,如果满足下列条件,则将其过滤掉。

    |V(p)|(1g(p))<piU(p)1g(p)

    直观上来讲,如果p是一个异常值,那么1g(p)|V(p)|都会比较小,这样p一般都会被过滤掉。 
    第二个过滤器同样也是考虑可视一致性,不过会更加严格,对于每个面片p,我们计算他通过深度测试得到的可视图像的总数,如果数目小于r,那么则认为p是异常值,从而过滤掉。 
    第三个过滤器,对于每个面片p,在V(p)中,收集这样的一组面片,他们的映射到面片p自己所在的图像块以及所有相邻的图像块,如果p的八邻域内的面片数量占收集所得面片数量的比例小于0.25,则任务p是异常值,将其过滤掉。

    三 多边形网格重建

    这一章主要讲的是仍然希望将它们的面片集合应用到基于图像的建模应用的表面网格。主要是是两个初始化多边形网格模型的算法:

    4.1 网格初始化

    1简单使用泊松表面重建软件直接将一组定向点转换为三角化的网格模型。

    2从分割信息中计算可视化外壳,然后迭代变形成重构的面片,其中网格中所有顶点的三维坐标模型是通过梯度体方法优化成最小化每个顶点的两个能量函数的总和。

    Es(Vi)=|-ζ1Δvi+ζ2Δ^2vi|^2/τ^2

    其中Δ表示离散拉普拉斯算子相对到Vi中的切平面的局部参数化,τ是网格模型平均边缘长度,Vi表示一个顶点Vi的位置(ζ1=0.6,ζ2=0.4)

    使重构面片的连续性(光度一致性项)

    Es(vi)=max(-0.2,min(0.2,d(vi)*n(vi)/τ))^2

    n(vi)是在vi处表面的外单位法线,d(vi)是vi和重构面片n(vi)之间的符号距离。

    d(vi)=∑p∈∏(vi)w(p)[n(vi)*c(p)-vi]

    面片p的法向n(p)与vi方向一致,计算中心点C(P)和由vi和n(vi)定义的线的距离,然后集合π=10,设置∏(vi)的最近面片集,最后计算从vi到∏(vi)沿n(vi)的加权平均距离, 权重n(p)是C(p)和线距离的高斯函数标准偏差ρ1定义在3.2.1中,归一化总和为1.8

    4.2 网格细化

    所有顶点的是三维坐标被优化和关于每个顶点光度一致性和几何平滑能量函数总和

    1)一个表面的深度和方向被估计,它的每对可视化图像集相对每个顶点通过用面片优化过程

    2)评估深度和方向信息被联合计算能量函数

    V(vi)表示一组图像集,其中vi是可视化的图像,从一个标准深度图测试集评估的当前网格模型

    E'p(vi)=ζ3∑p∈P(vi)1-exp(-(d'(vi,p)/τ/4)^2)

    d'(vi,p)=n(p)*(c(p)-vi)

    其中d‘(vi,p)是面片p和顶点vi沿着单位面片的符号距离,τ是网格平均加权长度,ζ3是线性组合权重。

     

    (以上是我的修改和补充的部分,如有错误请指正,我会继续修改直到最好。。。。。。)

    转载于:https://www.cnblogs.com/yuan328/p/6430023.html

    展开全文
  • 针对PMVS算法在多视倾斜影像密集匹配中的不足,结合城市三维建模的物方特点,将高程约束条件、聚类分析方法和候选影像排序策略引入其中,并用格网扩散代替原算法中的六方向扩散,从而形成了一种适合大倾斜影像的PMVS改进...
  • PMVS三维重建

    2015-04-07 16:46:51
    基于PMVS算法的三维重建实现,使用c++编写,简练直观,可得到较好的3D图像
  • PMVS学习中学习c++

    千次阅读 2014-02-16 20:51:39
    最近忙于PMVS算法的优化,在这个过程中把这个写下来。仿照已有PMVS源程序,给出自己的一个实现过程。 1、fstream的使用 2、c++中的初始化 3、new创建对象与不用new的区别   我们学习这个c++的时候,一般用...
  • 下面这个方法适用于那些只想对稠密重建算法CMVS-PMVS进行研究,而不想在前期bundler、cygwin的配置操作上浪费时间的学者 ======================================================================================...
  • PMVS详细讲解

    热门讨论 2014-01-13 10:52:39
    pmvs是基于面片的三维立体重建算法,有具体的源代码。
  • PMVS-2.PPT

    2020-12-08 17:47:39
    介绍目前精度和完整性较高的多视角三维重建算法,(patch-based multi-view stere0,PMVS
  • 基于面片的多视图稠密重建方法(PMVS)能够自动忽略外部点和障碍点,相比较于其他三维稠密重建算法算法更准确,简单,高效.但是在纹理稀疏的区域会出现孔洞残缺等问题,且现有的匹配候选点选取策略会使得局部细节...
  • PMVS的ppt讲解

    2014-07-24 17:49:26
    PMVS的中文讲解ppt(原文Accurate, Dense, and Robust Multiview Stereopsis)讲解很详细,易懂
  • 最近花了两三个星期左右的时间看PMVS的东西,第一遍看原始论文感觉完全串不起来流程,就是翻译了一遍英文。然后被老师训了两个星期没成果(其中一个星期十一假期在玩>.<),下来后又开始啃论文,理了一遍流程...
  • 基于SfM和PMVS的序列图像三维重建

    千次阅读 2016-01-28 23:34:44
    运用SIFT算法进行特征提取,通过匹配图像之间的特征点,利用SfM算法对匹配结果进行光束法平差,得到相机的姿态和稀疏点云,最终采用多视密集匹配方法PMVS实现场景目标的密集重建。 实现软件为VisualSFM+PMVS。 ...
  • Bundler,CMVS,PMVS
  • CMVS-PMVS 知识库链接

    千次阅读 2017-08-27 19:53:05
    三维重建(四)PMVS算法 the patch-based MVS algorithm 特征点检测——BRISK算法 特征点匹配——FREAK算法介绍 特征点匹配——使用基础矩阵、单应性矩阵的RANSAC算法去除误匹配点对 特征点匹配应用——图像...
  • PMVS算法源程序 VS2008下实现

    千次阅读 2014-02-16 20:50:57
    首先构建一个空的项目pmvs,控制台应用程序,然后加pmvs2下的base下的三个文件夹拷贝到项目下,然后对应头文件及源文件添加到项目中。改写新建项目中的pmvs.cpp,将pmvs2中main里面的pmvs2.cc里面的部分内容添加到...
  • Windows下使用VisualSFM + CMVS/PMVS + MeshLab进行三维重建

    万次阅读 多人点赞 2017-11-06 10:05:27
    Windows下使用VisualSFM + CMVS/PMVS +MeshLab进行三维重建 参考文档: VisualSFM和Meshlab实现三维重建过程:http://planckscale.info/tag/visualsfm/(十分感谢) 数据集: 三维重建数据集:...
  • PMVS NCC(Normalized Cross Correlation)归一化互相关 一:基本原理 NCC是一种基于统计学计算两组样本数据相关性的算法,其取值范围为[-1, 1]之间,而对图像来说,每个像素点都可以看出是RGB数值,这样整幅图像就...
  • 基于面片的多视角立体(PMVS)算法只需要输入一组图片及摄像机参数便可生成稠密的带有颜色的三维点云,它无需任何的初始信息。但该算法仍有一些不足,一方面重建出的表面不够光滑和连续,特别是在大场景重建时经常碰到的...
  • 参考博文: 1.https://www.jianshu.com/p/ef3ef6fdf354 2.https://blog.csdn.net/u013358387/article/details/71576660 3.https://blog.csdn.net/zouyu1746430162/article/details/78639469 ...
  • 论文整理

    2016-12-13 15:17:30
    pmvs算法组织清晰明了,原创作者的论文《Accurate, Dense, and Robust Multi-View Stereopsis》对该算法的原理介绍的十分清楚,该算法分为三个阶段:特征匹配,扩散,过滤,这三个阶段涉及的有patch模型,image模型...
  • 单目三维重建

    2017-11-19 23:04:00
    研究三维重建相关的课题,记录一些内容在这儿 通用的体验流程: visualSFM + pmvs + meshlab visualSFM通过找到一些列的图像的特征,重构出3D模型的稀疏点云 ...pmvs算法组织清晰明了,原创作者的论文...
  • 使用 OpenMVG+PMVS实现视觉三维重建

    千次阅读 2020-11-27 07:00:00
    pmvs2----------") pRecons = subprocess.Popen( [os.path.join(PMVS_BIN, "pmvs2"), reconstruction_dir+"/PMVS/", "pmvs_options.txt"] ) # 注:不要修改pmvs_options.txt文件名 pRecons.wait() #*注:执行后会在...
  • 接着,通过实时优化调整原始PMVS算法密集匹配中的面片法向,并采用分层重建的策略,提高了重建密集点云的法向一致性与时间效率;最后,通过一定的网格简化策略,获得H维城市场景的Poisson网格表面模型。...
  • 三维计算机视觉在计算机视觉是偏基础的方向,随着2010年阿凡达在全球热映以来,三维计算机视觉的应用从传统工业领域逐渐走向生活、娱乐、服务等,比如AR/VR,SLAM,...图 1基于图像的三维重建算法SfM(Structure Fr...
  • 使用openMVG+PMVS实现视觉三维重建 一、什么是视觉三维重建? 我们知道,照相机的原理是将一个三维场景投影到二维平面。所谓视觉三维重建,顾名思义就是从已有的二维图像中恢复原始三维场景。 三维重建的原理大致...

空空如也

空空如也

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

pmvs算法