基于图像的多视角立体视觉三维重建(四)——基于MVS算法的稠密点云重建

基础知识

  稠密点云重建的目的是在相机位姿已知的前提下,逐像素的计算图像中每一个像素点对应的三维点,得到场景物体表面密集的三维点云。
  稠密点云重建的前提相机的姿态已知,且待重建的三维点具有图像一致性,即三维点位于物体的表面上而非物体内部,那么这个三维点根据相机的内外参投影到不同视角的图像上,以投影点为中心取出两个方形的小patch,那么它们所包含的场景应该是比较类似的.

极线搜索

  两个视角的图像中,A视角中的一点在不同的深度的三维点投影到B视角中形成一条线,称为极线。当三维点的坐标未知,A图像中的一点,在B图像中可能匹配上对应的极线上的某点,在极线上找到B点的具体位置与相机的姿态之后,可以利用三角量量测的得到三位点的深度信息。

在这里插入图片描述

  如何判断极线上的某点是否为A点的同名点,主要利用以下约束:光度一致性约束、可视性约束。


光度一致性约束

  同一个空间的点在不同的视角的投影应当具有相同的光度,重建的核心在于恢复空间中具有光度一致性的点。(要求物体的表面为朗伯面,玻璃、镜子、水面不属于朗伯面)

光度一致性假设的度量方法
Sum of squared Differences(SSD):
ρ S S D ( f , g ) = ∣ ∣ f − g ∣ ∣ 2 \rho_{SSD}(f, g)=||f-g||^{2} ρSSD(f,g)=∣∣fg2
Sum of Absolute Differences(SAD):
ρ S A D ( f , g ) = ∣ ∣ f − g ∣ ∣ 1 \rho_{SAD}(f,g)=||f-g||_{1} ρSAD(f,g)=∣∣fg1
Normalized Cross Correlation(NCC):
ρ N C C ( f , g ) = ( f − f ‾ ) ( g − g ‾ ) δ f δ g \rho_{NCC}(f,g)=\frac{(f-\overline f)(g-\overline g)}{\delta_{f}\delta_{g}} ρNCC(f,g)=δfδg(ff)(gg)
其中f代表以A视图中某点的领域的像素组成的向量,g代表B视图中对应同名点邻域像素组成的向量


可视性约束

  1、图像上的点不能被遮挡。 2、重建的点前面不能出现点。 3、不能出现在物体的内部。
在这里插入图片描述


多视角立体技术


基于体素的方法

规则划分

  基于体素的方法等价于3D空间中的像素标定问题,在物体内部的点标记为1,在物体外部的点,标记为0,介于0-1之间的点就是物体的表面。
  标记完之后,使用光度一致性约束和可视性约束来对物体表面的点进行计算,评估标定质量。基于体素的方法的缺点是计算量大,在分辨率很大的时候,计算量会增长很多。

在这里插入图片描述

不规则划分

在点云较为稀疏的区域采用分辨率较小的体素,在点云较为稠密与细节比较精确的的区域采用分辨率较高的体素,可以保证物体重建的精度,另一方面可以自适应调整四面体的大小,减少计算量。

在这里插入图片描述

基于体素的方法的优化

典型的MRF离散化优化问题

参考图像上的每个像素都分配一个标签(内部或者外部)(无向图的优化)
E ( f ) = E d a t a ( f ) + E s m o o t h n e s s ( f ) + E v i s i b i l i t y ( f ) E(f)=E_{data}(f) + E_{smoothness}(f) + E_{visibility}(f) E(f)=Edata(f)+Esmoothness(f)+Evisibility(f)
其中 E ( f ) E(f) E(f)代表能量模型。
f表示无向图的所有顶点的向量,需要对每个顶点赋值
E d a t a E_{data} Edata是光度一致性假设,在不同视图上观察到该点的纹理或者光度尽量相似。
E s m o o t h n e s s E_{smoothness} Esmoothness平滑项约束,相邻的体素(四面体)的标签趋于一致。
E v i s i b i l i t y E_{visibility} Evisibility不能被别的东西遮挡,不能遮挡别的体素。

基于体素的方法的优小结

在这里插入图片描述

优点:1、生成规则的点云
   2、便于提取物体的平面

缺点:1、精度受到空间划分分辨率的影响
   2、难以处理精度高、规模大的场景


基于空间patch扩散的方法(pmvs)

1、假设空间中的3d矩形patch
2、通过一定规则的扩张方法,使得pathch覆盖物体表面

在这里插入图片描述

过程:

  1. 初始种子点生成采用sift、HOG等稀疏特征点,对这些点进行深度和法向量的重建
  2. 扩张过程对已重建三维点的邻域进行匹配
  3. 滤波过程采用光度一致性约束和可视性约束来去除噪点

在这里插入图片描述

3D patch定义:
位置、法向量(每个patch具有25个点, pathch的中心为点的位置,法向量为三维点邻域的法向量)

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

对三维空间上的一个pathch投影到不同视角中,计算NCC
1.在图像上均匀计算HOG/Harris特征
2.沿极线进行搜索找到匹配特征点
3.对匹配对进行三角化建立patch,
  中心: 三角化确定
  法向量: 指向参考图像
  可视图像 V ( p ) V(p) V(p): 法向量和视角的夹角足够小,通过光度一致性约束对可视图像进行筛选 V ∗ ( p ) = { I ∣ I ∈ V ( P ) , h ( p , I , R ( P ) ) ≤ a } V^{*}(p)=\{I|I\in V(P), h(p,I,R(P))\le a\} V(p)={IIV(P),h(p,I,R(P))a}
4.对patch位置和法向量进行优化 m a x c ( p ) , n ( p ) g ∗ ( p ) = 1 ∣ V ∗ ( p ) \ R ( p ) ∣ ∑ I ∈ V ∗ ( p ) \ R ( p ) h ( p , I , R ( p ) ) \mathop{max}\limits_{c(p), n(p)} g^{*}(p) = \frac{1}{|V^{*}(p) \backslash R(p)|}\sum_{I\in V^{*}(p) \backslash R(p)}h(p,I,R(p)) c(p),n(p)maxg(p)=V(p)\R(p)1IV(p)\R(p)h(p,I,R(p))

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


深度图融合(重点)

基本步骤:

  1. 为图像选择邻域图像构成立体图像对(通过图像pair进行深度图重建)
  2. 计算每一幅参考图像的深度图,得到每幅参考图像的点云
  3. 对所有深度图进行融合

全局视角的选择(建立候选视角池)

初步筛选出一些适合用于重建的图像,局部视角从全局视角中选择.
1、图像具有相同的内容、外观和尺度
2、图像具有较大的视差(宽基线)

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

其中, F V F_{V} FV表示V视角, F R F_{R} FR表示R视角, w N ( f ) w_{N}(f) wN(f)代表相机的三角测量夹角大小, w s ( f ) w_{s}(f) ws(f)代表两幅图像的尺度相似性。

图像分辨率的估计

用于衡量图像的分辨率,图像的一个像素的宽度对应的三维空间中的物体尺寸。

在这里插入图片描述

相关视角的选择(针对每个像素)

  全局视角的选择时固定的,局部视角的选择是针对每个像素的,每个像素在重建过程中不需要用到全部的全局视角,有些视角存在遮挡。局部视角选择是从全局视角中再一次进行筛选得到。一般从全局视角中选择四个当作局部视角进行优化。

局部视角的选择:
1、NCC值确定候选视角
2、实现要足够分散(不共面)
l R ( V ) = g R ∗ ∏ V ′ ∈ A w e ( V , V ′ ) l_{R}(V)=g_{R}*\prod_{V^{'}\in A} w_{e}(V, V^{'}) lR(V)=gRVAwe(V,V)

深度图融合算法整体思路

区域生长法扩张(宽度优先搜索):

1、根据重建的置信度(NCC)建立优先级队列(排序)
2、从初始的稀疏特征点开始深度估计
3、对每个种子点进行非线性深度优化(核心
4、每次优化完成判断两种情况,满足的话将邻域像素添加到队列中当作种子点,并将当前像素patch的信息作为邻域像素的初始值:(1)邻域没有深度值(2)当前像素的置信度高于邻域像素一定范围(当前点因为重建优化完,置信度得到提升,和邻域拉开很大差距,说明这个区域很需要优化,有很大的优化空间

在这里插入图片描述

  新建patch的可视图像和法向量的初始值等同于邻域patch
n ( p ′ ) = n ( p ) V ( p ′ ) = V ( P ) n(p^{'})=n(p)\\V(p^{'})=V(P) n(p)=n(p)V(p)=V(P)

深度值非线性优化

  假设参考视角为 R , k ∈ N R, k\in N R,kN为与参考视角相关的局部邻域视角, P k P_{k} Pk为三维点投影到第k个视角的投影矩阵. 每个像素提供了一个初始的深度和法向量和局部视角后,对深度值进行非线性优化。建立几何模型如下:

在这里插入图片描述

  其中, o R o_{R} oR表示参考视角的相机中心,(s, t)表示参考视角像素点,其初始深度为 h ( s , t ) h(s,t) h(s,t),已知相机姿态, 则对应的三维空间中的射线的单位向量为 r → R ( s , t ) \overrightarrow{r}_{R}(s, t) r R(s,t), 则该像素对应的三维空间的点为:
X R ( s , t ) = O R + h ( s , t ) r → R ( s , t ) X_{R}(s, t)=O_{R}+h(s,t)\overrightarrow{r}_{R}(s, t) XR(s,t)=OR+h(s,t)r R(s,t)

为了对像素点 ( s , t ) (s,t) (s,t)的深度和三维中的法向量进行优化,以该像素为中心,建立nxn的patch, pathch对应三维中间中的一个很小的平面.同时引入两个变量来帮助表示patch中每个像素的三维坐标. 则像素 ( s + i , t + j ) (s+i, t+j) (s+i,t+j)对应的深度为:
h ( s + i , t + j ) = h ( s , t ) + i ∗ h s ( s , t ) + j ∗ h t ( s , t ) h(s+i, t+j)=h(s,t)+i*h_{s}(s,t)+j*h_{t}(s,t) h(s+i,t+j)=h(s,t)+ihs(s,t)+jht(s,t)

假设 ( s + i , t + j ) (s+i, t+j) (s+i,t+j)处的射线方向近似为 r → R ( s , t ) \overrightarrow{r}_{R}(s, t) r R(s,t),则像素 ( s + i , t + j ) (s+i, t+j) (s+i,t+j)对应的三维坐标为:
X R ( i , j ) = O R + r → R ( s , t ) ( h ( s , t ) + i ∗ h s + j ∗ h t ) X_{R}(i,j)=O_{R}+\overrightarrow{r}_{R}(s, t)(h(s,t)+i*h_{s}+j*h_{t}) XR(i,j)=OR+r R(s,t)(h(s,t)+ihs+jht)

光度模型

  对朗伯反射进行简单假设,以提升颜色匹配的准确度. 为邻域内的每个视角K分配一个颜色尺度 c k = [ c k r , c k g , c k b ] T ∈ R 3 × 1 c_{k}=[c_{k}^{r}, c_{k}^{g}, c_{k}^{b}]^{T} \in{R^{3\times 1}} ck=[ckr,ckg,ckb]TR3×1,如果深度 h ( s , t ) h(s,t) h(s,t)估计准确,则有:
I R ( s + i , t + j ) = c k ⋅ I k ( P k ( X R ( s + i , t + j ) ) ) I_{R}(s+i,t+j)=c_{k}\centerdot I_{k}(P_{k}(X_{R}(s+i, t+j))) IR(s+i,t+j)=ckIk(Pk(XR(s+i,t+j)))

对所有的邻域视角和所有的patch中的patch中的三维点成立,其中 I R ( . ) I_{R}(.) IR(.)表示取参考视角对应像素处的颜色(3通道,为向量形式), I k ( . ) I_{k}(.) Ik(.)表示取第k个视角中图像上对应像素处的颜色,表示参考视角的一点和其他视角在对应同一点上的颜色一致.

结合几何模型和光度模型,可以得到深度值和法向量的优化数学模型如下:
E = ∑ k ∈ N ∑ i = − n − 1 2 n − 1 2 ∑ j = − n − 1 2 n − 1 2 [ I R ( s + i , t + j ) − c k . I k ( P k ( X R ( s + i , t + j ) ) ) ] 2 E=\sum_{k\in N} \sum_{i=-\frac{n-1}{2}}^{\frac{n-1}{2}} \sum_{j=-\frac{n-1}{2}}^{\frac{n-1}{2}}[I_{R}(s+i,t+j)-c_{k}.I_{k}(P_{k}(X_{R}(s+i, t+j)))]^{2} E=kNi=2n12n1j=2n12n1[IR(s+i,t+j)ck.Ik(Pk(XR(s+i,t+j)))]2
  其中 X R ( s + i , t + j ) X_{R}(s+i, t+j) XR(s+i,t+j)表示将参考图像中的 ( s + i , t + k ) (s+i, t+k) (s+i,t+k)映射到三维空间中的坐标,乘以 P k P_{k} Pk表示将该点的三维坐标投影到第k个视角图像上的像素坐标,对这个像素坐标取 I k I_{k} Ik表示将第k个视角图像上这个点的像素颜色值取出来,再乘以前面的 c k c_{k} ck,表示一个调节因子,增加鲁棒性

  为了书写方便 I R ( s + i , t + j ) I_{R}(s+i,t+j) IR(s+i,t+j)简记为 I R ( i , j ) I_{R}(i,j) IR(i,j), 将 I k ( P k ( X ( s + i , t + j ) ) ) I_{k}(P_{k}(X(s+i,t+j))) Ik(Pk(X(s+i,t+j)))简记为 I k ( i , j ) I_{k}(i,j) Ik(i,j),将 h s ( s , t ) , h t ( s , t ) h_{s}(s,t), h_{t}(s,t) hs(s,t),ht(s,t)分别简记为 h s , h t h_{s}, h_{t} hs,ht于是,上式可以简记为:
E = ∑ i j k [ I R ( i , j ) − c k . I k ( i , j ) ] 2 E=\sum_{ijk}[I_{R}(i,j)-c_{k}.I_{k}(i,j)]^{2} E=ijk[IR(i,j)ck.Ik(i,j)]2
i , j ∈ [ − n − 1 2 , n − 1 2 ] i,j\in[-\frac{n-1}{2}, \frac{n-1}{2}] i,j[2n1,2n1]是patch中的采样点,k表示视角的个数,需要优化的变量为三维坐标的深度 h ( s , t ) , h s , h t h(s,t), h_{s},h_{t} h(s,t),hs,ht和颜色尺度因子 { c k } \{c_{k}\} {ck}

颜色尺度的优化:

∂ E ∂ c k r = ∑ i j r k r ( i , j ) I R r ( i , j ) + c k r ∑ i j ( I k r ( i , j ) ) 2 ∂ E ∂ c k g = ∑ i j r k g ( i , j ) I R g ( i , j ) + c k g ∑ i j ( I k g ( i , j ) ) 2 ∂ E ∂ c k b = ∑ i j r k b ( i , j ) I R r ( i , j ) + c k b ∑ i j ( I k b ( i , j ) ) 2 c k = [ ∑ i j I K r ( i , j ) I R r ( i , j ) ∑ i j ( I K r ( i , j ) ) 2 , ∑ i j I K g ( i , j ) I R g ( i , j ) ∑ i j ( I K g ( i , j ) ) 2 , ∑ i j I K b ( i , j ) I R b ( i , j ) ∑ i j ( I K b ( i , j ) ) 2 ] T \frac{\partial E}{\partial c_{k}^{r}} = \sum_{ij}r_{k}^{r}(i,j)I_{R}^{r}(i,j) + c_{k}^{r}\sum_{ij}(I_{k}^{r}(i,j))^{2} \\\frac{\partial E}{\partial c_{k}^{g}} = \sum_{ij}r_{k}^{g}(i,j)I_{R}^{g}(i,j) + c_{k}^{g}\sum_{ij}(I_{k}^{g}(i,j))^{2} \\\frac{\partial E}{\partial c_{k}^{b}} = \sum_{ij}r_{k}^{b}(i,j)I_{R}^{r}(i,j) + c_{k}^{b}\sum_{ij}(I_{k}^{b}(i,j))^{2} \\c_{k}=[\frac{\sum_{ij}I_{K}^{r}(i,j)I_{R}^{r}(i,j)}{\sum_{ij}(I_{K}^{r}(i,j))^2}, \frac{\sum_{ij}I_{K}^{g}(i,j)I_{R}^{g}(i,j)}{\sum_{ij}(I_{K}^{g}(i,j))^2}, \frac{\sum_{ij}I_{K}^{b}(i,j)I_{R}^{b}(i,j)}{\sum_{ij}(I_{K}^{b}(i,j))^2}]^{T} ckrE=ijrkr(i,j)IRr(i,j)+ckrij(Ikr(i,j))2ckgE=ijrkg(i,j)IRg(i,j)+ckgij(Ikg(i,j))2ckbE=ijrkb(i,j)IRr(i,j)+ckbij(Ikb(i,j))2ck=[ij(IKr(i,j))2ijIKr(i,j)IRr(i,j),ij(IKg(i,j))2ijIKg(i,j)IRg(i,j),ij(IKb(i,j))2ijIKb(i,j)IRb(i,j)]T

颜色尺度的优化:

  分别对上式求三个偏导,并令结果为0,得:
c k r = ∑ i j I K r ( i , j ) I R r ( i , j ) ∑ i j ( I K r ( i , j ) ) 2 c k g = ∑ i j I K g ( i , j ) I R g ( i , j ) ∑ i j ( I K g ( i , j ) ) 2 c k b = ∑ i j I K b ( i , j ) I R b ( i , j ) ∑ i j ( I K b ( i , j ) ) 2 ] T c_{k}^{r} = \frac{\sum_{ij}I_{K}^{r}(i,j)I_{R}^{r}(i,j)}{\sum_{ij}(I_{K}^{r}(i,j))^2} \\c_{k}^{g}= \frac{\sum_{ij}I_{K}^{g}(i,j)I_{R}^{g}(i,j)}{\sum_{ij}(I_{K}^{g}(i,j))^2} \\c_{k}^{b}=\frac{\sum_{ij}I_{K}^{b}(i,j)I_{R}^{b}(i,j)}{\sum_{ij}(I_{K}^{b}(i,j))^2}]^{T} ckr=ij(IKr(i,j))2ijIKr(i,j)IRr(i,j)ckg=ij(IKg(i,j))2ijIKg(i,j)IRg(i,j)ckb=ij(IKb(i,j))2ijIKb(i,j)IRb(i,j)]T

h ( s , t ) , h s , h t h(s,t), h_{s},h_{t} h(s,t),hs,ht的优化:

  待优化的模型为最小二乘的非线性优化问题,无法得到该函数的解析解,采用迭代的方式求取其近似解。首先引入 I R ( i , j ) I_{R}(i,j) IR(i,j)关于 h ( s , t ) , h s , h t h(s, t), h_{s}, h_{t} h(s,t),hs,ht的线性表达式:
I R ( i , j ) ≈ c k ⋅ I k ( P k ( O R + r → R ( s , t ) ( h ( s , t ) + i ∗ h s + j ∗ h t ) ) ) + c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ( d h ( s , t ) + i ∗ d h s + j ∗ d h t ) = c k ⋅ I k ( i , j ) + c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ( d h ( s , t ) + i ∗ d h s + j ∗ d h t ) \begin{aligned} \boldsymbol{I}_{R}(i, j) \approx \boldsymbol{c}_{k} \cdot & \boldsymbol{I}_{k}\left(\boldsymbol{P}_{k}\left(\boldsymbol{O}_{R}+\overrightarrow{\boldsymbol{r}}_{R}(s, t)\left(h(s, t)+i * h_{s}+j * h_{t}\right)\right)\right)+\boldsymbol{c}_{k} \cdot \frac{\partial \boldsymbol{I}_{k}(i, j)}{\partial h(s, t)}\left(d h(s, t)+i * d h_{s}+j * d h_{t}\right) \\ =& \boldsymbol{c}_{k} \cdot \boldsymbol{I}_{k}(i, j)+\boldsymbol{c}_{k} \cdot \frac{\partial \boldsymbol{I}_{k}(i, j)}{\partial h(s, t)}\left(d h(s, t)+i * d h_{s}+j * d h_{t}\right) \end{aligned} IR(i,j)ck=Ik(Pk(OR+r R(s,t)(h(s,t)+ihs+jht)))+ckh(s,t)Ik(i,j)(dh(s,t)+idhs+jdht)ckIk(i,j)+ckh(s,t)Ik(i,j)(dh(s,t)+idhs+jdht)
由此,我们可以得到能量函数E的近似表达式为:
E = ∑ i j k ( I R ( i , j ) − c k ⋅ I k ( i , j ) + c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ( d h ( s , t ) + i ∗ d h s + j ∗ d h t ) ) 2 E=\sum_{i j k}\left(\boldsymbol{I}_{R}(i, j)-\boldsymbol{c}_{k} \cdot \boldsymbol{I}_{k}(i, j)+\boldsymbol{c}_{k} \cdot \frac{\partial \boldsymbol{I}_{k}(i, j)}{\partial h(s, t)}\left(d h(s, t)+i * d h_{s}+j * d h_{t}\right)\right)^{2} E=ijk(IR(i,j)ckIk(i,j)+ckh(s,t)Ik(i,j)(dh(s,t)+idhs+jdht))2

令:
b i j k = I R ( i , j ) − c k ⋅ I k ( i , j )    ∇ x = [ d h ( s , t ) , d h s , d h t ] T A i j k = ( c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ) [ 1 i j ] T \boldsymbol{b}_{i j k}=\boldsymbol{I}_{R}(i, j)-\boldsymbol{c}_{k} \cdot \boldsymbol{I}_{k}(i, j)\\\;\\ \nabla \boldsymbol{x}=\left[d h(s, t), d h_{s}, d h_{t}\right]^{T}\\ \boldsymbol{A}_{i j k}=\left(\boldsymbol{c}_{k} \cdot \frac{\partial \boldsymbol{I}_{k}(i, j)}{\partial h(s, t)}\right)\left[\begin{array}{l} 1 \\ i \\ j \end{array}\right]^{T} bijk=IR(i,j)ckIk(i,j)x=[dh(s,t),dhs,dht]TAijk=(ckh(s,t)Ik(i,j)) 1ij T

则上式可以表达为:
E = ∑ i j k ( A i j k ∇ x + b i j k ) 2 E=\sum_{i j k}\left(A_{i j k} \nabla x+b_{i j k}\right)^{2} E=ijk(Aijkx+bijk)2

E E E关于 ∇ x \nabla x x的梯度,可以得到:
∂ E ∂ ∇ x = ∑ i j k A i j k T ( A i j k x + b i j k ) \frac{\partial E}{\partial \nabla \boldsymbol{x}}=\sum_{i j k} \boldsymbol{A}_{i j k}^{T}\left(\boldsymbol{A}_{i j k} \boldsymbol{x}+\boldsymbol{b}_{i j k}\right) xE=ijkAijkT(Aijkx+bijk)

∂ E ∂ ∇ x = 0 \frac{\partial E}{\partial \nabla x}=0 xE=0得:
( ∑ i j k A i j k T A i j k ) ∇ x + ∑ i j k A i j k T b i j k ) = 0 \left.\left(\sum_{i j k} A_{i j k}^{T} A_{i j k}\right) \nabla x+\sum_{i j k} A_{i j k}^{T} b_{i j k}\right)=0 ijkAijkTAijk x+ijkAijkTbijk =0

A = ∑ i j k A i j k T A i j k , b = ∑ i j k A i j k b i j k A=\sum_{ijk}A^{T}_{ijk}A_{ijk}, b=\sum_{ijk}A_{ijk}b_{ijk} A=ijkAijkTAijk,b=ijkAijkbijk,则有:
∇ x = A − 1 b \nabla x=A^{-1}b x=A1b

补充:
A i j k = ( c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ) [ 1 i j ] T    A i j k T A i j k = [ 1 i j ] ( c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ) T ( c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ) [ 1 i j ] T = ∥ c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ∥ 2 [ 1 , i , j i , i 2 , i j j , i j , j 2 ]    A i j k T b i j k = [ 1 i j ] ( c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ) T ( I R ( i , j ) − c k ⋅ I k ( i , j ) ) = s i j k [ 1 i j ] \begin{array}{c} \boldsymbol{A}_{i j k}=\left(\boldsymbol{c}_{k} \cdot \frac{\partial I_{k}(i, j)}{\partial h(s, t)}\right)\left[\begin{array}{l} 1 \\ i \\ j \end{array}\right]^{T}\\\;\\ \boldsymbol{A}_{i j k}^{T} \boldsymbol{A}_{i j k}=\left[\begin{array}{l} 1 \\ i \\ j \end{array}\right]\left(\boldsymbol{c}_{k} \cdot \frac{\partial \boldsymbol{I}_{k}(i, j)}{\partial h(s, t)}\right)^{T}\left(\boldsymbol{c}_{k} \cdot \frac{\partial \boldsymbol{I}_{k}(i, j)}{\partial h(s, t)}\right)\left[\begin{array}{l} 1 \\ i \\ j \end{array}\right]^{T}=\left\|\boldsymbol{c}_{k} \cdot \frac{\partial \boldsymbol{I}_{k}(i, j)}{\partial h(s, t)}\right\|^{2}\left[\begin{array}{ccc} 1, & i, & j \\ i, & i^{2}, & i j \\ j, & i j, & j^{2} \end{array}\right]\\\;\\ \boldsymbol{A}_{i j k}^{T} \boldsymbol{b}_{i j k}=\left[\begin{array}{l} 1 \\ i \\ j \end{array}\right]\left(\boldsymbol{c}_{k} \cdot \frac{\partial \boldsymbol{I}_{k}(i, j)}{\partial h(s, t)}\right)^{T}\left(\boldsymbol{I}_{R}(i, j)-\boldsymbol{c}_{k} \cdot \boldsymbol{I}_{k}(i, j)\right)=s_{i j k}\left[\begin{array}{l} 1 \\ i \\ j \end{array}\right] \end{array} Aijk=(ckh(s,t)Ik(i,j)) 1ij TAijkTAijk= 1ij (ckh(s,t)Ik(i,j))T(ckh(s,t)Ik(i,j)) 1ij T= ckh(s,t)Ik(i,j) 2 1,i,j,i,i2,ij,jijj2 AijkTbijk= 1ij (ckh(s,t)Ik(i,j))T(IR(i,j)ckIk(i,j))=sijk 1ij

其中 s i j k = ( c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ) T ( I R ( i , j ) − c k ⋅ I k ( i , j ) ) s_{i j k}=\left(c_{k} \cdot \frac{\partial I_{k}(i, j)}{\partial h(s, t)}\right)^{T}\left(I_{R}(i, j)-c_{k} \cdot I_{k}(i, j)\right) sijk=(ckh(s,t)Ik(i,j))T(IR(i,j)ckIk(i,j))是标量,因此可以得到:
A = ∑ i j k A i j k T A i j k = ∑ i j k ∥ c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ∥ 2 [ 1 , i , j i , i 2 , i j j , i j , j 2 ] b = ∑ i j k A i j k T b i j k = ∑ i j k ( c k ⋅ ∂ I k ( i , j ) ∂ h ( s , t ) ) T ( I R ( i , j ) − c k ⋅ I k ( i , j ) ) [ 1 i j ] \begin{array}{l} \boldsymbol{A}=\sum\limits_{i j k} \boldsymbol{A}_{i j k}^{T} \boldsymbol{A}_{i j k}=\sum\limits_{i j k}\left\|\boldsymbol{c}_{k} \cdot \frac{\partial \boldsymbol{I}_{k}(i, j)}{\partial h(s, t)}\right\|^{2}\left[\begin{array}{ccc} 1, & i, & j \\ i, & i^{2}, & i j \\ j, & i j, & j^{2} \end{array}\right]\\ \boldsymbol{b}=\sum \limits_{i j k} \boldsymbol{A}_{i j k}^{T} \boldsymbol{b}_{i j k}=\sum\limits_{i j k}\left(\boldsymbol{c}_{k} \cdot \frac{\partial \boldsymbol{I}_{k}(i, j)}{\partial h(s, t)}\right)^{T}\left(\boldsymbol{I}_{R}(i, j)-\boldsymbol{c}_{k} \cdot \boldsymbol{I}_{k}(i, j)\right)\left[\begin{array}{l} 1 \\ i \\ j \end{array}\right] \end{array} A=ijkAijkTAijk=ijk ckh(s,t)Ik(i,j) 2 1,i,j,i,i2,ij,jijj2 b=ijkAijkTbijk=ijk(ckh(s,t)Ik(i,j))T(IR(i,j)ckIk(i,j)) 1ij

算法流程:

  1. 只进行 h ( s , t ) h(s,t) h(s,t)的优化(迭代4次)
  2. While(iteration <20)
  3.   每间隔5次迭代,进行 h ( s , t ) , h s , h t h(s,t), h_{s}, h_{t} h(s,t)hs,ht的优化,否则仅仅优化深度
  4.   优化完成后跟踪判断每个视角的置信度
  5.   如果视角的置信度太小,或者超过迭代14次尚未收敛,则从局部视角中移除该视角,并重新进行视角选择

  • 13
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 视觉几何三维重建是指利用摄像机拍摄的多个视角下的图像,通过计算机图形学算法获得三维模型的过程。其中,openmvs是一种基于MVS(多视角几何重建)实现的三维重建工具。 OpenMVS是一个开源的三维重建工具,基于MVS算法,可以实现从多个图像中生成高精度的三维模型。OpenMVS的几何重建算法主要是采用光束法,通过对图像进行矩阵重建来计算相机位置和三角形点云。OpenMVS的几何重建方法相对于其他算法具有较高的稳定性和精度。 在OpenMVS的源码分析中,主要包括三个部分:几何重建点云和网格处理。几何重建是基于多视角几何的,通过将多个图像视角转化到同一个坐标系中,可以计算出三角形的点云点云处理主要包括点云优化和稠密重建。网格处理则是在点云的基础上生成三角形网格模型。 OpenMVS的优势在于能够充分利用多视图几何的信息,提高三维重建的精度和效率。而且该工具具有良好的可扩展性和适应性,可以在不同场景下应用。同时,OpenMVS的开源代码也为研究者提供了一个可靠的研究平台,进行更深入的算法研究和开发。 总之,视觉几何三维重建是一项非常复杂的任务,而OpenMVS作为一个优秀的三维重建工具,通过独特的几何重建算法和优秀的可扩展性,加速了三维重建的研究和应用。 ### 回答2: 首先,视觉几何三维重建是一项重要的计算机视觉技术,其主要目的是利用多视角图像或视频序列来恢复场景的三维结构。在该过程中,重建算法必须解决诸多技术难题,如图像匹配、相机姿态估计、点云配准、三维重建等。 而OpenMVS则是一款优秀的三维重建软件,其核心算法基于多视图几何,能够高效、精确地处理大规模三维数据。具体来说,OpenMVS采用稀疏点云表示法(Sparse Point Cloud)和密集点云表示法(Dense Point Cloud)来表示场景中的点云信息,其中稀疏点云用于初始匹配,密集点云用于表面重建。 在实现中,OpenMVS采用先进的图像流水线(Image Pipeline)来处理输入的图像序列,包括预处理(Pre-processing)、特征提取(Feature Extraction)、特征匹配(Feature Matching)等多个步骤。在此基础上,OpenMVS还提供了多种优化方法,如基于非线性优化的相机姿态估计、自适应曲率滤波等,以进一步提高重建效果。 值得指出的是,OpenMVS作为一款开源软件,其源代码也是完全开放的。此外,OpenMVS还具有友好的用户界面和丰富的文档,能够帮助用户快速上手并实现高质量的三维重建

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CV科研随想录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值