运动模糊图像复原(三)
Reference:
Deblurring Text Images via L0 -Regularized Intensity and Gradient Prior
在运动模糊图像复原(一)中有涉及到模糊模型的估计,这是一个难点,但是没有细说。这篇文章主要记录一下第四点的内容:使用latent image和blurred image预估当前层级的模糊模型。
在估计模糊模型之前,输入的latent image和blurred image两张图像,使用2*2的初始梯度核进行卷积之后的结果作为最终输入Bx,By(blurred image对应的水平垂直方向梯度),Lx,Ly(Latent image对应的水平垂直方向梯度),充分利用梯度信息进行模糊核的估计。
1 | 0 |
-1 | 0 |
1 | -1 |
0 | 0 |
在论文中,作者只给出了梯度空间下的模糊核估计公式,但并未给出该最小二乘最小化问题的闭环解。那么下面我结合代码给出闭环解公式。
论文中的梯度空间估计的模糊核k公式如下,其中x表示latent image,y表示blurred image:
,
那么,它的最小二乘最小化问题的闭环解如下,为了跟下文内容统一,使用L表示x,B表示y,
那么,选择迭代方式计算时,推出k的计算公式为:
首次迭代时,核函数设置数值全为1/(kernel_height*kernel_width),大小等于(kernel_width,kernel_height)的矩阵,设为x。
那么按照如下公式进行:
此处设置。
首次迭代时,上述公式中的k使用x代替,那么x即为我要的最终结果;
每次迭代时(从第二次迭代开始),上述公式中的被减数用Ap表示;
每次迭代时(从第二次迭代开始),上述公式中的输入k即为上一次的结果k’,我用p表示;
每次迭代的结果都用r表示;
设置最大迭代次数为20.通过多次迭代产生最终的模糊核函数k。
那么现在的问题是,每次迭代时,如何更新上述变量Ap,r,p呢?
我设置一个权重alpha来更新x和r: x=x+alpha*p, r=r-alpha*Ap。
, 其中变量,
当更新变量r之后,可以重新计算变量rsold为rsnew,
此时可更新变量p=r+(rsnew/rsold)*p,最后再更新rsold<-rsnew.
在这里可以设置一个迭代终止的条件:rsnew的开方小于阈值1e-5。
最后当迭代结束,归一化模糊核函数x。