Have a Question?

平面扫描 | Plane Sweeping

You are here:

1 算法原理

平面扫描 (Plane Sweeping) 算法基于如下基本假设:假设空间依据深度划分成无数平面,对于某一深度 \(d\) 的平面上某一点 \(p\) 如果其投影到各个相机视角的颜色值均相同,那么该深度有很大概率就是该点的真实深度(位于物体表面上);反之如果颜色值不同,则该深度很大概率不是该点的真实深度(不在物体表面上)。

2 算法流程

2.1 变量定义

已知参考帧 \(I_{\text{ref}}\) (可视为坐标系原点)和对应的 \(N\) 个关键帧 \(I_k=I_1 \ldots I_n\),以及 \(N\) 个相机投影矩阵为:
\(
\begin{equation}
P_k=K_k\left[R_k^T-R_k^T t_k\right] \text { with } k=1, \ldots, N
\end{equation}
\)
其中 \(K_k]、[latex]R_k\) 和 \(t_k\) 分别代表内参矩阵、旋转矩阵和平移向量。

相对于参考帧在距离区间 \(\left[d_{\text {near }}, d_{\text {far }}\right]\) 划分的 \(M\) 个相机平面为:
\(
\begin{equation}
\Pi_m=\left[n_m^T-d_m\right] \text { for } m=1, \ldots, M
\end{equation}
\)
其中 \(n_m\) 和 \(d_m\) 分别代表单位法线(注意各个平面不一定平行,如果是平行划分的平面法向为 \(n_m^T=\left[\begin{array}{lll}
0 & 0 & 1
\end{array}\right]\))和相机光心到平面的距离。

2.2 单应变换

根据单应变换性质,平面 \(\Pi_m\) 上一点 \(X_{\Pi}\) 在相机 \(C\) 和 \(C^{\prime}\) 上的齐次坐标分别为 \(\mathbf{x}=\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}\) 和 \(\mathbf{x^{\prime }}=\begin{bmatrix}
x^{\prime }\\
y^{\prime }\\
1
\end{bmatrix}\),二者满足如下单应变换关系:
\(
\begin{equation}
\mathbf{x^{\prime} }=H\mathbf{x}
\end{equation}
\)
在参考图像 \(I_{ref}\) 投影单应矩阵为:
\(
\begin{equation}
H_{\Pi_m, P_k}=K_k\left(R_k^T+\frac{R_k^T C_k n_m^T}{d_m}\right) K_{r e f}^{-1}
\end{equation}
\)
具体推导可以参见 单应变换 (Homography)

因此得到:
\(
\begin{equation}
\left[\begin{array}{lll}
\tilde{x} & \tilde{y} & \tilde{w}
\end{array}\right]^T=H_{\Pi_m, P_k}\left[\begin{array}{lll}
x & y & 1
\end{array}\right]^T
\end{equation}
\)
其中 \(\left[\begin{array}{lll}
\tilde{x} & \tilde{y} & \tilde{w}
\end{array}\right]\)

2.3 Cost Function

有了同一个点在 \(N\) 个不同平面上投影回来的对应关系,我们可以设计一个代价函数来进行优化。考虑到单个像素的不稳定性,通常我们使用一个以 \(\left(x, y\right)\) 为中心的 \(W \times W\) 窗口内的像素块来定义代价(当然除此以外也可以使用类似 ZNCC 之类的公式):
\(
\begin{equation}
\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}
\end{equation}
\)

其中 \(\left(x_k, y_k\right)\) 由上面公式获得,\(\beta_k^{r e f}\) 表示增益因子与光照有关。

有了以上代价函数,一个像素点所对应的最佳的平面就是:
\(
\begin{equation}
\tilde{\Pi}(x, y)=\underset{\Pi_m}{\operatorname{argmin}} C\left(x, y, \Pi_m\right) .
\end{equation}
\)

这里使用的是 Winner-Take-All 的策略。有了对应平面后,该点的深度按照以下公式计算:
\(
\begin{equation}
Z_m(x, y)=\frac{-d_m}{[x, y \quad 1] K_{r e f}^{-T} n_m}
\end{equation}
\)

参考文献

[1] Multi-Resolution Real-Time Stereo on Commodity Graphics Hardware
[2] Real-time Plane-sweeping Stereo with Multiple Sweeping Directions
[3] Accurate Multiple View 3D Reconstruction Using Patch-Based Stereo for Large-Scale Scenes
[4] Image-Based Rendering using Plane-Sweeping Modelisation
[5] https://blog.csdn.net/xuangenihao/article/details/81392684
[6] https://blog.csdn.net/heyijia0327/article/details/53782094

Add a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

Table of Contents