论文解读: Learning to AutoFocus (二)

论文解读: Learning to AutoFocus (二)

前面介绍了 Learning to AutoFocus 这篇文章,这篇文章主要是基于深度学习的方式来实现自动对焦算法的,不过这篇文章的补充材料里面,也介绍了很多传统算法的自动对焦算法,总得来说,是基于反差的对焦技术和基于相位检测的对焦技术。

Contrast-Based Baseline Algorithms

基于反差的对焦算法,就是给定一组 n n n 张不同对焦距离下的图, I k , k ∈ { 1 , 2 , . . . n } I_k, k \in \{ 1,2,...n \} Ik,k{1,2,...n},这样一组图像称为 focal stack,比较这组图像中,每幅图像的 contrast score ϕ \phi ϕ,选择其中值最大的那个 focal slice 作为我们的目标,从而得到最佳的对焦距离,这篇文章列举了很多的评估 contrast score 的方法,刚好可以学习学习基于反差的对焦算法都有哪些评价方式:

Intensity Variance

最常用的一个指标是方差信息,很明显,如果对焦不清晰的话,图像会比较模糊,这个时候的方差会比较小,反之,如果图像比较清晰,那么方差会比较大:

ϕ = V a r ( I ) \phi = Var(I) ϕ=Var(I)

Intensity Coefficient of Variation

这个指标,也是考虑对焦区域的变化程度,用标准差除以图像的均值:

ϕ = V a r ( I ) μ ( I ) \phi = \frac{\sqrt{Var(I)}}{\mu(I)} ϕ=μ(I)Var(I)

Total Variation (L1)

这个 TV 项简单来说,就是看图像的梯度的绝对值,梯度越大,对焦越清晰:

ϕ = ∑ x , y ∥ I [ x + 1 , y ] − I [ x , y ] ∥ + ∥ I [ x , y + 1 ] − I [ x , y ] ∥ \phi = \sum_{x, y} \| I[x+1,y] - I[x, y] \| + \| I[x,y+1] - I[x, y] \| ϕ=x,yI[x+1,y]I[x,y]+I[x,y+1]I[x,y]

Total Variation (L2)

这个是 TV 项的 L2 范数,就是梯度的平方和:

ϕ = ∑ x , y ( I [ x + 1 , y ] − I [ x , y ] ) 2 + ( I [ x , y + 1 ] − I [ x , y ] ) 2 \phi = \sum_{x,y} (I[x+1,y] - I[x, y])^2 + (I[x,y+1] - I[x, y])^2 ϕ=x,y(I[x+1,y]I[x,y])2+(I[x,y+1]I[x,y])2

Energy of Laplacian

这个评价方法就是利用拉普拉斯算子对图像做卷积,然后再求平方和。

ϕ = ∑ x , y Δ [ x , y ] 2 , Δ = I ∗ [ 0 1 0 1 − 4 1 0 1 0 ] \phi = \sum_{x, y} \Delta[x,y]^2, \quad \Delta = I * \begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix} ϕ=x,yΔ[x,y]2,Δ=I010141010

Laplacian Variance

这个评价方法是对拉普拉斯卷积后的图像求方差:

ϕ = V a r ( Δ [ x , y ] ) , Δ = I ∗ [ 0 1 0 1 − 4 1 0 1 0 ] \phi = Var(\Delta[x, y]),\quad \Delta = I * \begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix} ϕ=Var(Δ[x,y]),Δ=I010141010

Sum of Modified Laplacian

这个也是基于拉普拉斯算子的:

ϕ = ∑ x , y Δ [ x , y ] , Δ = ∣ I ∗ L x ∣ + ∣ I ∗ L y ∣ \phi = \sum_{x,y} \Delta[x, y], \quad \Delta = |I * L_x| + | I * L_y| ϕ=x,yΔ[x,y],Δ=ILx+ILy

L x = [ 0 0 0 1 − 2 1 0 0 0 ] , L y = L x T L_x = \begin{bmatrix} 0 & 0 & 0 \\ 1 & -2 & 1 \\ 0 & 0 & 0 \end{bmatrix},\quad L_y = L_x^{T} Lx=010020010Ly=LxT

Diagonal Laplacian

ϕ = ∑ x , y Δ [ x , y ] \phi = \sum_{x, y} \Delta[x, y] ϕ=x,yΔ[x,y]

Δ = ∣ I ∗ L x ∣ + ∣ I ∗ L y ∣ + ∣ I ∗ L x y ∣ + ∣ I ∗ L y x ∣ \Delta = |I * L_x| + | I * L_y| + | I * L_{xy}| + | I * L_{yx}| Δ=ILx+ILy+ILxy+ILyx

L x y = 1 2 [ 0 0 1 0 − 2 0 1 0 0 ] , L y x = L x y T L_{xy} = \frac{1}{\sqrt{2}} \begin{bmatrix} 0 & 0 & 1 \\ 0 & -2 & 0 \\ 1 & 0 & 0 \end{bmatrix} , \quad L_{yx} = L_{xy}^T Lxy=2 1001020100,Lyx=LxyT

Mean Gradient Magnitude

这个利用 sobel 算子计算图像的梯度,然后再求平方和:

ϕ = 1 n ∑ x , y ∇ x [ x , y ] 2 + ∇ y [ x , y ] 2 \phi = \frac{1}{n} \sum_{x,y} \sqrt{\nabla_{x}[x,y]^2 + \nabla_{y}[x,y]^2} ϕ=n1x,yx[x,y]2+y[x,y]2

∇ x = I ∗ [ − 1 0 1 − 2 0 2 − 1 0 1 ] , ∇ y = I ∗ [ − 1 − 2 − 1 0 0 0 1 2 1 ] \nabla_{x} = I * \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} , \quad \nabla_{y} = I * \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} x=I121000121,y=I101202101

Gradient Count

这个评估方式是统计梯度值大于某一阈值的个数:

ϕ = 1 n ∑ x , y [ ∣ ∇ x [ x , y ] ∣ > t ] + [ ∣ ∇ y [ x , y ] ∣ > t ] \phi = \frac{1}{n} \sum_{x,y} [|\nabla_{x}[x, y]| > t] + [|\nabla_{y}[x, y]| > t] ϕ=n1x,y[x[x,y]>t]+[y[x,y]>t]

Gradient Magnitude Variance

ϕ = V a r ( ∇ x [ x , y ] 2 + ∇ y [ x , y ] 2 ) \phi = Var( \sqrt{\nabla_{x}[x, y]^2 + \nabla_{y}[x, y]^2} ) ϕ=Var(x[x,y]2+y[x,y]2 )

Percentile Range

ϕ = P e r c e n t i l e ( I , 100 − p ) − P e r c e n t i l e ( I , p ) \phi = Percentile(I, 100 - p) - Percentile(I, p) ϕ=Percentile(I,100p)Percentile(I,p)

Histogram Entropy

ϕ = ∑ i n i l o g ( n i ) \phi = \sum_{i} n_i log(n_i) ϕ=inilog(ni)

n i n_i ni 表示图像的直方图分布

DCT Energy Ratio

ϕ = ( ∑ u , v D [ u , v ] 2 ) − D [ 0 , 0 ] 2 D [ 0 , 0 ] 2 , D = D C T ( I ) \phi = \frac{(\sum_{u, v}D[u, v]^2) - D[0, 0]^2}{D[0, 0]^2}, \quad D = DCT(I) ϕ=D[0,0]2(u,vD[u,v]2)D[0,0]2,D=DCT(I)

DCT Reduced Energy Ratio

ϕ = D [ 0 , 1 ] 2 + D [ 1 , 0 ] 2 + D [ 0 , 2 ] 2 + D [ 2 , 0 ] 2 + D [ 1 , 1 ] 2 D [ 0 , 0 ] 2 \phi = \frac{D[0, 1]^2 + D[1, 0]^2 + D[0, 2]^2 + D[2, 0]^2 + D[1, 1]^2}{D[0, 0]^2} ϕ=D[0,0]2D[0,1]2+D[1,0]2+D[0,2]2+D[2,0]2+D[1,1]2

Modified DCT

ϕ = ∑ x , y ( I ∗ [ 1 1 − 1 − 1 1 1 − 1 − 1 − 1 − 1 1 1 − 1 − 1 1 1 ] ) [ x , y ] \phi = \sum_{x, y} \left( I * \begin{bmatrix} 1 & 1 & -1 & -1 \\ 1 & 1 & -1 & -1 \\ -1 & -1 & 1 & 1 \\ -1 & -1 & 1 & 1 \\ \end{bmatrix} \right) [x, y] ϕ=x,yI1111111111111111[x,y]

Wavelet Sum

ϕ = ∑ x , y ∣ W L H ( l ) [ x , y ] ∣ + ∣ W H L ( l ) [ x , y ] ∣ + ∣ W H H ( l ) [ x , y ] ∣ \phi = \sum_{x, y} | W_{LH}^{(l)}[x, y] | + | W_{HL}^{(l)}[x, y] | + | W_{HH}^{(l)}[x, y] | ϕ=x,yWLH(l)[x,y]+WHL(l)[x,y]+WHH(l)[x,y]

( W L L ( l ) , W L H ( l ) , W H L ( l ) , W H H ( l ) ) = C D F 9 / 7 ( I , l ) \left( W_{LL}^{(l)}, W_{LH}^{(l)}, W_{HL}^{(l)}, W_{HH}^{(l)} \right) = CDF9/7(I, l) (WLL(l),WLH(l),WHL(l),WHH(l))=CDF9/7(I,l)

Wavelet Variance

ϕ = V a r ( W L H ( l ) [ x , y ] ) + V a r ( W H L ( l ) [ x , y ] ) + V a r ( W H H ( l ) [ x , y ] ) \phi = Var\left(W_{LH}^{(l)}[x, y] \right) + Var\left(W_{HL}^{(l)}[x, y] \right) + Var\left(W_{HH}^{(l)}[x, y] \right) ϕ=Var(WLH(l)[x,y])+Var(WHL(l)[x,y])+Var(WHH(l)[x,y])

Wavelet Ratio

ϕ = ∑ x , y W L H ( l ) [ x , y ] 2 + W H L ( l ) [ x , y ] 2 + W H H ( l ) [ x , y ] 2 ∑ x , y W L L ( l ) [ x , y ] 2 \phi = \frac{\sum_{x,y} W_{LH}^{(l)}[x, y]^2 + W_{HL}^{(l)}[x, y]^2 + W_{HH}^{(l)}[x, y]^2}{\sum_{x,y} W_{LL}^{(l)}[x, y]^2} ϕ=x,yWLL(l)[x,y]2x,yWLH(l)[x,y]2+WHL(l)[x,y]2+WHH(l)[x,y]2

Mean Wavelet Log-Ratio

ϕ = 1 n ∑ x , y log ⁡ ( W L H ( l ) [ x , y ] 2 + W H L ( l ) [ x , y ] 2 + W H H ( l ) [ x , y ] 2 W L L ( l ) [ x , y ] 2 + 1 ) \phi = \frac{1}{n} \sum_{x,y} \log \left( \frac{ W_{LH}^{(l)}[x, y]^2 + W_{HL}^{(l)}[x, y]^2 + W_{HH}^{(l)}[x, y]^2}{ W_{LL}^{(l)}[x, y]^2 + 1} \right) ϕ=n1x,ylog(WLL(l)[x,y]2+1WLH(l)[x,y]2+WHL(l)[x,y]2+WHH(l)[x,y]2)

Dual-Pixel / Stereo Baseline Algorithms

基于 dual pixel 的方法,就是计算左右两幅视图的视差,视差的计算主要基于图像的匹配,图像的匹配,就是寻找两幅图像中相似的地方,可以利用统计信息,或者图像的特征,为了让左右两幅图像匹配的时候,不受亮度的影响,可以先对左右两幅图像的亮度做一个校正:

L ^ = L − μ ( L ) V a r ( L ) , R ^ = R − μ ( R ) V a r ( R ) \hat{L} = \frac{L - \mu(L)}{Var(L)}, \quad \hat{R} = \frac{R - \mu(R)}{Var(R)} L^=Var(L)Lμ(L),R^=Var(R)Rμ(R)

亮度校正之后,可以对左右两幅图像计算视差,也是基于不同的评价准则,几种典型的计算方式如下:

Census Transform (Hamming)

f = ∑ x , y ∣ ∣ C e n s u s ( L ) [ x , y ] − C e n s u s ( R ) [ x , y ] ∣ ∣ 0 f = \sum_{x, y} || Census(L)[x, y] - Census(R)[x, y] ||_{0} f=x,yCensus(L)[x,y]Census(R)[x,y]0

C e n s u s ( I ) [ x , y ] = [ I [ x + Δ x , y + Δ y ] > I [ x , y ] ∣ Δ x ∈ [ − 1 , 0 , 1 ] , Δ y ∈ [ − 1 , 0 , 1 ] , Δ x ≠ Δ y ≠ 0 ] Census(I)[x, y] = \left [ I[x+\Delta_x, y+\Delta_y] > I[x, y] | \Delta_x \in [-1, 0, 1], \Delta_y \in [-1, 0, 1], \Delta_x \neq \Delta_y \neq 0 \right ] Census(I)[x,y]=[I[x+Δx,y+Δy]>I[x,y]Δx[1,0,1],Δy[1,0,1],Δx=Δy=0]

Normalized Cross-Correlation

f = − ⟨ L ^ , R ^ ⟩ f = - \left \langle \hat{L}, \hat{R} \right \rangle f=L^,R^

Normalized SAD

f = ∑ x , y ∣ L ^ [ x , y ] − R ^ [ x , y ] ∣ f = \sum_{x, y} |\hat{L}[x, y] - \hat{R}[x, y]| f=x,yL^[x,y]R^[x,y]

你可能感兴趣的:(计算摄影与图像处理)