system: [SYSTEM]

user: 2. 几类图像修复的数值模型 2.1. 改进的TV模型图像修复方法 CHAN和SHEN建立了基于能量最小化原则的统一修复模型，该模型能量函数的解是利用变分原理转化的，因此被称为整体变分(TV)模型 [ 10 ]，被应用于图像修复领域，并取得了良好效果。随后Chan等人在此基础上，建立起基于TV模型的图像修复模型。因此，TV模型是图像修复领域中最经典、应用最广泛的模型之一。首先引入一个以梯度模值作为参数的扩散函数，此类函数在小梯度区域，扩散函数取值较大，增强图像的平滑度；在大梯度区域，扩散函数取值较小，降低图像的平滑度，保护了图像的边缘信息，也提高了图像的修复速度。基于TV模型的代价函数为 R ( u ) = ∫ Ω r | ∇ u ( x ， y ， t ) | d x d y ， (1) 其中D为图像的待修补区域； Ω 为图像的全区域； u 0 = u ( x ， y ， 0 ) 为待修复图像的初始值； u ( x ， y ， t ) 为t时刻修复后图像的像素值； ∇ 是梯度算子；r为非负实数。需要选择一个恰当的r的函数，使得待修复区域以及修补边缘尽可能平滑。该式在修复过程中为保证修补区域及其边缘尽可能平滑并对噪声有良好处理效果，应满足下式： 1 | Ω \ D | ∫ Ω \ D | u − u 0 | 2 d x d y = σ 2 ， (2) 其中 | Ω \ D | 表示有效信息区域， σ 表示噪声的标准差。运用Lagrange乘子法将以上两个式子转化为无约束条件的极值问题，其新代价函数为 E ( u ) = ∫ Ω | ∇ u | d x d y + λ 2 ∫ Ω | u − u 0 | 2 d x d y ， (3) 其中 λ 是拉格朗日乘子。第一项保证去噪后图像尽可能的平滑，第二项则尽可能地维持去噪后图像的相似性。用梯度下降法求解 E ( u ) 取得极小值所满足的Euler-Lagrange方程，即 ∂ u ∂ t = div ( ∇ u | ∇ u | ) − λ ( u − u 0 ) . (4) 解得的u即为所求的最终修复图像。 最初的TV图像修复模型由去噪模型发展而来，TV模型能在修复的过程中去除噪声的同时又保持图像边缘，且数值PDE实现方便，能较好的实现图像划痕的修复，但原始算法的修复结果易产生明显的阶梯效应。针对此，提出一个结合各向异性和各向同性的非线性扩散修复方程，即 { ∂ u ∂ t = g ( | G ∇ | ) ( Δ u ) = 0 ，     | ∇ I P < 0.25 | ， ∂ u ∂ t = g ( | G ∇ | ) ( div ( ∇ u | ∇ u | ) − λ e ( u − u 0 ) ) = 0 ，     | ∇ I P ≥ 0.25 | ， (5) 其中 ( x ， y ) ∈ D 时 λ e = λ ， ( x ， y ) ∈ Ω \ D 时 λ e = 0 ； g ( | G ∇ | ) = 1 / G x 2 + G y 2 用于加强迭代的速度； G x 2 + G y 2 表示图像在点 ( x ， y ) 梯度向量的模值。式中的 ∇ I P 表示图像待修复点的梯度值，即其像素值变化的程度。该文献先将图像进行归一化处理，再用Sobel算子计算 ∇ I P ，因此可以通过统一的梯度阈值划分使用的修复迭代方程，进而提高选择迭代方程的准确性。接下来，在计算方法过程中，采用半点差分法，对扩散算子 div ( ∇ u / | ∇ u | ) 以及拉普拉斯算子 Δ u 进行离散化，使用Sobel算子计算点的梯度向量模值，结合Gauss-Jacobi迭代算法对图像进行扩散迭代，根据给定阙值结合新旧图像的像素值判断迭代状态，停止迭代后，用新像素值代替对应像素点，进而完成图像修复(参见文献 [ 11 ] )。 而基于TV模型的图像修补算法，是由Tony Chan等人根据Rudin等人提出的图像去噪模型推广来的。主要是通过建立图像模型，根据整体变分原理，将图像建立的模型转化为约束最优化问题，进而利用Lagrange乘子法求解。本文介绍的算法在其基础上进行了改进，改进后的TV模型有效避免了TV模型算法在平滑区域造成的阶梯效应。同时，通过提高扩散速度，改进了原算法修复过程中只对图像边缘进行扩散造成的效率低的问题，提高了修复效率，减少了计算量。 2.2. 基于偏微分方程的图像修复方法 偏微分方程的主要思想可以追溯到Bertalmio等人最初对于数字图像修复的研究 [ 12 ]，他们的模型基于非线性偏微分方程，旨在模仿专门从事修复艺术家的技术。他们认为一个好的修复算法应该将周围区域的尖锐边缘扩散到需要填充的受损部分。并且，利用损伤区域的边缘信息来确定扩散信息和扩散方向。 由于TV算法输出的修复图像不满足视觉连通性，且TV图像修复算法在一些破损面积较大的图像修复中具有修复局限性。因此文献 [ 13 ] 在传统TV模型的基础上，结合非线性扩散的思想，提出了一种新的数值算法。并通过数值实验结果表明，这种针对参数的自适应迭代函数图像修复算法在修复过程中，结合扩散系数和自适应迭代函数的共同作用，消除了阶梯效应，完成了修复的图像自然过渡，将图像的边缘信息保存良好。文献 [ 14 ] 在其基础上对扩散函数进行修改，得到新的扩散函数如下： g ( | ∇ u | ) = { 1 ，   | ∇ u | = 0 ， 1 / ( 1 + K ∇ u ) 2 ，   其 他 ， (6) 其中，正常数K是调整保护梯度的范围。该扩散函数可以增强小梯度区域的平滑，减少大梯度区域的平滑。使图像边缘清晰，过渡自然。并引入随迭代时间变化的参数 β 的自适应函数 β ( t ) = 1 / ( ε + t / K ) 。其中 ε 为保证 β ( t ) 分母不为零的任意正实数。随着迭代次数的增加，与扩散系数函数作用保证了图像的边缘特性。进一步得到修复方程为 − g ( | ∇ u | ) ⋅ div ( ∇ u β ( t ) 2 + | ∇ u | 2 ) + λ e ( u − u 0 ) = 0     . (7) 采用偏导数近似算法对散度算子项进行离散化处理，在目标像素点O周围增加4个点，构造更髙阶的差分格式。结合水平分量 v 1 与垂直分量 v 2 定义单位向量 v = ( v 1 ， v 2 ) = ( ∇ u / β ( t ) 2 + | ∇ u | 2 ) 。选定目标像素点O为中心点和待修复点， Q = { N ， E ， S ， W } 为四邻域的参考点，以及步长为h，并设步长 h = 1 ，并引入 q = { n ， e ， s ， w } 为半像素点以保证稳定性，即可得到 div ( v ) = ∂ v 1 ∂ x + ∂ v 2 ∂ y ≅ ( v 1 e − v 1 w ) + ( v 2 n − v 2 s ) ， (8) 其中 U i ( i ∈ Q ) 为各点的像素值； U j ( j ∈ q ) 为各中间点像素值； U o 为目标像素点像素值。估算半像素点的梯度值，以e点为例，即 v 1 e = 1 | ∇ U e | β [ ∂ U ∂ x ] = 1 | ∇ U e | β U E − U O h = U E − U O | ∇ U e | β ，梯度模值为 | ∇ U e | β = 1 h ( U E − U O ) 2 + [ ( U N E + U N − U S − U S E ) / 4 ] 2 。依次算出其余半像素点梯度模值，代入(8)式，得到 div ( v ) = ( v 1 e − v 1 w ) + ( v 2 n − v 2 s ) = U E − U O | ∇ U e | β − U O − U W | ∇ U w | β + U N − U O | ∇ U n | β − U O − U S | ∇ U s | β = ∑ i ∈ Q j ∈ q U i − U o | ∇ U j | β (9) 将上式代入对应的定常方程，则得到离散化的修复方程为 ∑ i ∈ Q j ∈ q g ( | ∇ U j | ) | ∇ U j | β ( U o − U i ) + λ o ( 0 ) ( U o − U o 0 ) = 0 ， (10) 其中， U o 0 表示待修复图像在O点的像素值。采用Gauss-Jacobi迭代法将(10)式简化为 U o n = ( ∑ i ∈ Q j ∈ q g ( | ∇ U j | ) | ∇ U j | β ∑ i ∈ Q j ∈ q g ( | ∇ U j | ) | ∇ U j | β + λ o ( 0 ) ) ( n − 1 ) U i ( n − 1 ) + ( λ o ( 0 ) ∑ i ∈ Q j ∈ q g ( | ∇ U j | ) | ∇ U j | β + λ o ( 0 ) ) ( n − 1 ) U o 0 ， (11) (11)式即为最终得到离散方程的差分格式，取 λ o ( 0 ) = 0 ，将各像素值统一带入(10)式并进行迭代，模型的稳定性分析请参考文献 [ 15 ]。 该种数值方法是一种对待修复区域实现不同权值的办法，即在TV模型中引入一个以梯度模值作为参数的扩散函数，此类函数在小梯度区域，扩散函数取值较大，增强图像的平滑度。能够有效避免TV模型算法在平滑区域造成的阶梯效应。不仅对小区域破损图像有明显修复效果，对大区域破损同样有效。并且，随着迭代次数不断增加，则与扩散系数函数进一步作用保证图像的边缘特性。同时，通过对峰值信噪比、迭代时间及迭代次数进行比较发现，该算法修复效果更好，提高了修复效率，减少了计算量。 2.3. 基于偏微分方程的CDD图像修复方法 文献 [ 16 ] 通过对TV模型的分析后可知，该算法的优点是数值实现简单，对破损图像的边缘有很好的保护作用，特别是对有划痕或者破损区域小的图像有很好的修复效果。但在图像梯度较小的区域易产生阶梯效应，修复效果不好。Chan等人为了解决TV模型的不足，提出了曲率驱动扩散模型。曲率驱动扩散模型在TV模型扩散项的基础上，将曲率项 g ( k ) 引入扩散项中 [ 17 ]。 g ( k ) 是一个关于等照度线的曲率函数，假设图像的待修复区域为D，图像的已知像素区域为E，此时的修复方程为 ∂ u ∂ t = − ∇ [ g ( | k | ) | ∇ u | ∇ u ] + λ ( u − u 0 ) . (12) 当 ( x ， y ) ∈ E 时， λ = λ ，   g ( | k | ) = 1 ；当 ( x ， y ) ∈ D 时， λ = 0 ，   g ( | k | ) = g ( | k | ) 。 g ( | k | ) 是关于k的单调递增函数，在区域E中取值为1，此时模型退化为TV模型。对于函数 g ( | k | ) 中的k定义为 k = ∇ ⋅ [ ∇ u | ∇ u | ] = u y 2 u x x + u x 2 u y y − 2 u x u y u x y ( u x x 2 + u y y 2 ) 3 2 . (13) 在区域D中， g ( | k | ) 通常表示为 g ( | k | ) = | k | p = k p ， k > 0 ， p ≥ 1 ， (14) 该模型中的扩散系数为 g ( | k | ) / | ∇ u | ；在TV模型扩散项的基础上引入了 g ( | k | ) ，使得在图像修复的过程中，扩散强度在和图像待修复点的梯度建立关系的同时，与图像像素点的特征信息也有关 [ 18 ]。在图像的平坦区域中，图像的信息同时和梯度以及平坦区域中的曲率面有关。根据函数的性质可知引入的 g ( | k | ) 是关于梯度的增函数，在待修复图像的破损区域边缘处梯度较大，因此边缘处的曲率大，进而保证了图像边缘信息能够得到充分的扩散；而在图像破损区域的平坦区域，梯度的模值很小，此时为了保证像素信息的准确扩散，应该在这个方向上获得较弱的扩散。从扩散系数中也可以看出，在梯度变化较大的某些区域，梯度和曲率对扩散系数的影响形成反比。CDD模型的数值实现和BSCB模型一样，求出相应的 u x ， u y ， u x x ， u y y ， u x y ，带入到(12)式中，通常先对(14)式中的P进行取值，再结合(12)式对有划痕或有小破损的图像进行修复。CDD模型在TV模型的基础上，在扩散项中引入了曲率函数，使得图像的扩散和待修复点的梯度以及曲率建立联系，保证在像素信息的特征区域能够准确的扩散。为了方便计算对(14)式中P取值为0.5后，对有划痕的图像进行修复。从文献 [ 16 ] 的模型实验结果中可以看出，该模型能够对具有小破损区域的图像进行很好的修复。 该图像修复方法可以有效地对有划痕或者破损区域小的图像进行修复。与其他数值方法相比，该数值模型采用的技术对具有小破损区域的图像可以进行专业的修复，弥补了其他数值模型的不足，提高图像处理水平，一定程度上有助于完善图像修复效果，也是进行数字图像修复问题的一类有效的方法。 2.4. 基于Allen-Cahn方程算子分裂法的图像修复方法 继Li等人 [ 19 ] 提出一种快速局部图像修复方法，用算子分裂法求解Allen-Cahn模型后，文献 [ 20 ] 提出一种基于Allen-Cahn方程的算子分裂法得图像修复方法，并通过对合成图像和真实图像的数值实验，验证了该方法的准确性、稳定性和有效性。其核心思想是利用算子分裂法将原问题分解为线性方程和非线性方程。分别用有限差分Crank-Nicolson格式和解析法求解线性方程和非线性方程。 考虑具有如下边值条件的Allen-Cahn方程： ∂ u ( x ， y ， t ) ∂ t = { Δ u ( x ， y ， t ) − 1 ε 2 F ′ ( u ( x ， y ， t ) ) ，     ( x ， y ) ∈ Ω D 0 ，   ( x ， y ) ∉ Ω D (15) ∂ u ( x ， y ， 0 ) ∂ t = { 0.5 ，     ( x ， y ) ∈ Ω D g ( x ， y ) − g min g max − g min ，   ( x ， y ) ∉ Ω D (16) ∇ u ( x ， y ， t ) ⋅ n Ω = 0 ，   ( x ， y ) ∈ ∂ Ω D (17) 其中 ε 为给定图像， g max 和 g min 分别为图像的最大值和最小值； ∂ Ω D 为图像的边界；n表示有界域和域边界上的单位外法向量；参数 ε 为与界面能量相关的梯度能量系数。 F ( u ) = ( u 2 ( u − 1 ) 2 ) / 4 为图像修复中常用函数；选取二维领域 Ω = [ 1 ， N x ] × [ 1 ， N y ] 和网格大小为h，对图像区域进行剖分，即有 Ω h = { ( x i ， y j ) | x i = ( i − 0.5 ) h ， y j = ( j − 0.5 ) h ， 1 ≤ i ≤ N x ， 1 ≤ j ≤ N y } . (18) 令 u i j n = u ( x i ， y j ， n τ ) ，其中，时间步长为 τ = T / M t 。Allen-Cahn方程的数值格式如下： { u t = − F ′ ( u ) ε 2 ，   t ∈ [ t n ， t n + 1 / 2 ] ， u t = Δ u ，                       t ∈ [ t n ， t n + 1 ] ， u t = − F ′ ( u ) ε 2 ，   t ∈ [ t n + 1 / 2 ， t n + 1 ] . (19) 根据初始条件 u n 和Crank-Nicolson方法以及五点差分格式可得到第一个子问题 u ∗ 以及第二个子问题 u ∗ ∗ ，最后，用解决第一个子问题的方法来解决第三个子问题，综上即为 { u ∗ = 1 2 + ( u n − 0.5 ) / e − τ 2 ε 2 + ( 2 u n − 1 ) 2 ( 1 − e − τ 2 ε 2 ) ， u i j ∗ ∗ − u i j ∗ τ = u i + 1 ， j ∗ ∗ + u i − 1 ， j ∗ ∗ − 4 u i ， j ∗ ∗ + u i ， j + 1 ∗ ∗ + u i ， j − 1 ∗ ∗ 2 h 2 + u i + 1 ， j ∗ + u i − 1 ， j ∗ − 4 u i ， j ∗ + u i ， j + 1 ∗ + u i ， j − 1 ∗ 2 h 2 ， u n + 1 = 1 2 + ( u ∗ ∗ − 0.5 ) / e − τ 2 ε 2 + ( 2 u ∗ ∗ − 1 ) 2 ( 1 − e − τ 2 ε 2 ) . (20) 该算法首先确定图像需要修复的区域为 Ω D 。同时，令最接近修复区域的边界 Ω D 作为修复区域计算时的边界条件。接下来，引入控制函数f，当 ( x i ， y j ) ∈ Ω D 时，将其定义为 f i j = 1 ，对于其他情况，则定义 f i j = 0 。最后通过(19)式当且仅当 f i j = 1 时更新 u n + 1 。 采用基于Allen-Cahn方程算子分裂法用于图像修复，不仅保证修复过程的有效性、准确性以及稳定性，而且相对于含有四阶微分算子的Cahn-Hilliard方程计算得更加精简，其时间和空间精度都可以达到二阶。并且，在计算过程中选择五点差分法，减少了计算量。由于该方法只应用于修复域，其余区域的像素值与原始输入图像的像素值保持一致，因此大大提高了计算效率。