Plane Sweeping | 平面扫描
作者:互联网
- 输入:一系列经过校准的照片以及拍摄相机对应的投影矩阵
- 假设(定义):所有物体只有漫反射,有一个虚拟相机cam x,定义一个近平面和一个远平面,在这之间物体被一系列密集的平行平面划分
核心思想
如果平行平面足够密集,物体表面的任意一点p一定位于某平面Di上,可以看到p的相机看到点p必定是同一颜色;假设与p在同一平面的另一点p’,不位于物体表面,则投影到每个相机上呈现的颜色不同, 于是Plane Sweeping算法假设:
对于平面上任意一点p,其如果投影到每个相机上的颜色均相同,那么可以说这个点很大概率是物体表面上的点
核心步骤
对于平行平面Di上的每个点p,将其投影到所有相机上,之后根据投影的颜色进行匹配计算,得到点p对应的分数以及其对应的深度,p得分越高,代表其投影在各相机上的颜色越接近
p计算之后,将其投影到虚拟相机cam x上,从后向前扫描,如果某一个平面Dj上的点q投影到cam x后,发现得分高于之前该点的分数,则更新该点的分数和深度,直至平面扫描结束
数学建模
Homography
相机C看
x
π
x_\pi
xπ和C’看
x
π
x_\pi
xπ存在单应关系
省略公式和推导
Cost Function
有了点的对应关系,接下来就是找到cost function对其优化。由于噪声的影响,不能只利用颜色信息,需要结合窗口信息进行比较
C ( x , y , Π k ) = ∑ k = 0 N − 1 ∑ ( i , j ) ∈ W ∣ I r e f ( x − i , y − j ) − β k r e f I k ( x k − i , y k − j ) ∣ \begin{aligned} C\left(x, y, \Pi_{k}\right) &=\sum_{k=0}^{N-1} \sum_{(i, j) \in W} \mid I_{r e f}(x-i, y-j)-\beta_{k}^{r e f} I_{k}\left(x_{k}-i, y_{k}-j\right) \mid \end{aligned} C(x,y,Πk)=k=0∑N−1(i,j)∈W∑∣Iref(x−i,y−j)−βkrefIk(xk−i,yk−j)∣
- W W W:以x,y为中心的窗口
- β \beta β:增益因子,计算光照变化后转换为增益因子
在得到了cost function后只需计算个点最小值即为对应的平面:
Π
~
(
x
,
y
)
=
argmin
Π
m
C
(
x
,
y
,
Π
m
)
\tilde{\Pi}(x, y)=\underset{\Pi_{m}}{\operatorname{argmin}} C\left(x, y, \Pi_{m}\right)
Π~(x,y)=ΠmargminC(x,y,Πm)
有了对应平面该点的深度如下计算:
Z
m
(
x
,
y
)
=
−
d
m
[
x
y
1
]
K
r
e
f
−
T
n
m
Z_{m}(x, y)=\frac{-d_{m}}{\left[\begin{array}{cc} x & y & 1 \end{array}\right] K_{r e f}^{-T} n_{m}}
Zm(x,y)=[xy1]Kref−Tnm−dm
- 局限性:基于窗口的匹配,窗口内像素与中心像素极可能不在一个平面(阶梯状、不连续性),因此会干扰中心像素的匹配
- 改进之一
- photo consistency:直接估计窗口内平面方程,有了平面方程直接带入该点坐标即是深度值
Reference
- Plane-sweeping - 代码天地
- Multi-resolution real-time stereo on commodity graphics hardware
- Real-time Plane-sweeping Stereo with Multiple Sweeping Directions
标签:right,投影,扫描,相机,Plane,该点,Sweeping,平面,Pi 来源: https://blog.csdn.net/double_ZZZ/article/details/112577320