
C
A
D
(
x
,
y
,
d
)
=
∣
I
L
(
x
,
y
)
−
I
R
(
x
−
d
,
y
)
∣
C_{A D}(x, y, d)=\left|I_{L}(x, y)-I_{R}(x-d, y)\right|
CAD(x,y,d)=∣IL(x,y)−IR(x−d,y)∣

d是移动像素的大小。以左图为基准。下面以左图的一个像素点P为例
🔥目的:对代价空间进行滤波,使边界平滑
C d A ( p ) = 1 N ∑ q C d ( q ) C_{d}^{A}(p)=\frac{1}{N} \sum_{q} C_{d}(q) CdA(p)=N1q∑Cd(q)
N:窗口像素个数
效果:

Bilateral filter就是输入的代价,乘以一个高斯函数,实现平滑

效果:

任意选取一个像素点,横向、纵向扩张,直到遇到颜色差异较大的地方才停下来。然后在扩张后的像素点,重复上述操作。这样,因为能及时发现边界,就能大概判断出一整块区域的视差图


能量函数
E
(
D
)
=
∑
p
(
C
(
p
,
D
p
)
+
∑
q
∈
N
p
P
1
T
[
∣
D
p
−
D
q
∣
=
1
]
+
∑
q
∈
N
p
P
2
T
[
∣
D
p
−
D
q
∣
>
1
]
)
当 D p − D q = 1 D_p-D_q = 1 Dp−Dq=1时,我们就取 ∑ q ∈ N p P 1 T [ ∣ D p − D q ∣ = 1 ] \sum_{\mathbf{q} \in N_{\mathbf{p}}} P_{1} \mathrm{~T}\left[\left|D_{\mathbf{p}}-D_{\mathbf{q}}\right|=1\right] ∑q∈NpP1 T[∣Dp−Dq∣=1]
当 D p − D q > 1 D_p-D_q > 1 Dp−Dq>1,我们就取 ∑ q ∈ N p P 2 T [ ∣ D p − D q ∣ > 1 ] \sum_{\mathbf{q} \in N_{\mathbf{p}}} P_{2} \mathrm{~T}\left[\left|D_{\mathbf{p}}-D_{\mathbf{q}}\right|>1\right] ∑q∈NpP2 T[∣Dp−Dq∣>1]
优化步骤
计算代价空间;(AD, BT, Census, MI, ….)
代价聚合
方向r上的路径代价
L
r
(
p
,
d
)
=
C
(
p
,
d
)
+
min
(
L
r
(
p
−
r
,
d
)
L
r
(
p
−
r
,
d
−
1
)
+
P
1
L
r
(
p
−
r
,
d
+
1
)
+
P
1
min
i
L
r
(
p
−
r
,
i
)
+
P
2
)
−
min
k
L
r
(
p
−
r
,
k
)
当d=0时,
L
r
(
p
,
d
)
=
C
(
p
,
d
)
−
min
k
L
r
(
p
−
r
,
k
)
L_{\mathbf{r}}(\mathbf{p}, d)= C(\mathbf{p}, d)-\min _{k} L_{\mathbf{r}}(\mathbf{p}-\mathbf{r}, k)
Lr(p,d)=C(p,d)−minkLr(p−r,k)
当|d|=1时, L r ( p , d ) = C ( p , d ) + P 1 − min k L r ( p − r , k ) L_{\mathbf{r}}(\mathbf{p}, d)= C(\mathbf{p}, d)+P_1-\min _{k} L_{\mathbf{r}}(\mathbf{p}-\mathbf{r}, k) Lr(p,d)=C(p,d)+P1−minkLr(p−r,k)
当|d|=i时, L r ( p , d ) = C ( p , d ) + P 2 − min k L r ( p − r , k ) L_{\mathbf{r}}(\mathbf{p}, d)= C(\mathbf{p}, d)+P_2-\min _{k} L_{\mathbf{r}}(\mathbf{p}-\mathbf{r}, k) Lr(p,d)=C(p,d)+P2−minkLr(p−r,k)
L r ( p − r , d ) L_r(p-r,d) Lr(p−r,d)是该像素点左侧,最优代价。即当d=i时,左侧有最优代价,那么就 C ( p , d ) + P 2 C(\mathbf{p}, d)+P_2 C(p,d)+P2
各个方向的总聚合代价
S
(
p
,
d
)
=
∑
L
r
(
p
,
d
)
S(\mathbf{p}, d)=\sum L_{\mathbf{r}}(\mathbf{p}, d)
S(p,d)=∑Lr(p,d)
例如opencv收录的sgbm算法,就是计算了下面5条路径的代价

WTA
Winner-Take-All,赢家通吃
即我们发现在这条视差方向r上,纵轴(聚合后的代价)最小,那么我们就取出视差值(d=18)

视差后处理