论文解读: Learning to AutoFocus (二)

2023-12-05 11:32

本文主要是介绍论文解读: 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]

这篇关于论文解读: Learning to AutoFocus (二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/457394

相关文章

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear