本文主要是介绍Richardson-Lucy 非盲去模糊算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
相关论文:2011-PAMI - Richardson-Lucy Deblurring for Scenes under a Projective Motion Path
空间均匀的运动模糊表示如下:
B = k ⊗ I B=k\otimes I B=k⊗I
B为模糊图像,I为清晰图像,k为模糊核。
RL算法假设 P ( B ∣ k , I ) P(B|k,I) P(B∣k,I)满足Poisson分布(传送门:如何通俗理解泊松分布):
P ( X = x ) = λ x x ! e − λ P(X=x)=\frac{\lambda^x}{x!}e^{-\lambda} P(X=x)=x!λxe−λ
其中均值 λ = k ⊗ I \lambda=k\otimes I λ=k⊗I,即:
P ( B ∣ k , I ) = ( k ⊗ I ) B B ! e − ( k ⊗ I ) P(B|k,I)=\frac{(k\otimes I)^B}{B!}e^{-(k\otimes I)} P(B∣k,I)=B!(k⊗I)Be−(k⊗I)
目标是最大化概率 P ( B ∣ k , I ) P(B|k,I) P(B∣k,I),通过 − log -\log −log转化成下面的能量最小化问题:
J = E ( I ; B , k ) = − log ( ( k ⊗ I ) B B ! e − ( k ⊗ I ) ) = − log ( ( k ⊗ I ) B B ! ) − log e − ( k ⊗ I ) = − B log ( k ⊗ I ) + k ⊗ I + log B ! ∝ − B log ( k ⊗ I ) + k ⊗ I \begin{aligned} J=E(I;B,k)=&-\log\left( \frac{(k\otimes I)^B}{B!}e^{-(k\otimes I)}\right) \\ =&-\log\left( \frac{(k\otimes I)^B}{B!}\right)-\log e^{-(k\otimes I)} \\ =&-B\log(k\otimes I)+k\otimes I+\log B! \\ \propto& -B\log(k\otimes I)+k\otimes I \end{aligned} J=E(I;B,k)===∝−log(B!(k⊗I)Be−(k⊗I))−log(B!(k⊗I)B)−loge−(k⊗I)−Blog(k⊗I)+k⊗I+logB!−Blog(k⊗I)+k⊗I
因为 J J J是一个凸函数,最小值即 ∇ J = 0 \nabla J=0 ∇J=0:
∂ J ∂ I ∝ − B k ⊗ I ⊗ k ~ + 1 ⊗ k ~ = 0 \frac{\partial J}{\partial I}\propto -\frac{B}{k\otimes I}\otimes\tilde k+1\otimes\tilde k=0 ∂I∂J∝−k⊗IB⊗k~+1⊗k~=0
其中 k ~ \tilde k k~为 k k k水平翻转180°, 因为 ∑ i k i = 1 \sum_i k_i=1 ∑iki=1,所以 1 ⊗ k ~ = 1 1\otimes\tilde k=1 1⊗k~=1,得:
1 = B k ⊗ I ⊗ k ~ 1=\frac{B}{k\otimes I}\otimes\tilde k 1=k⊗IB⊗k~
由于损失函数 J J J是凸函数,每次迭代后损失都会减小,当收敛时,恢复出的图像基本不会改变了——意味着在收敛时 I t + 1 I_{t+1} It+1实际上应该等于 I t I_t It,即:
I t + 1 I t = 1 = B k ⊗ I ⊗ k ~ \frac{I_{t+1}}{I_t}=1=\frac{B}{k\otimes I}\otimes\tilde k ItIt+1=1=k⊗IB⊗k~
I t + 1 = I t ⊙ k ~ ⊗ B k ⊗ I = I t ⊙ k ~ ⊗ B k ~ ⊗ k ⊗ I I_{t+1}=I_t\odot\tilde k\otimes\frac{B}{k\otimes I}=I_t\odot\frac{\tilde k\otimes B}{\tilde k\otimes k\otimes I} It+1=It⊙k~⊗k⊗IB=It⊙k~⊗k⊗Ik~⊗B
其中 ⊙ \odot ⊙为对应元素相乘,分数线也是对应元素相除。类似梯度下降法,不过这里是乘法更新, I 0 I_0 I0可以初始化成随机值(或者中灰色图像,或者模糊图像),迭代直到 I t {I_t} It不在变化。
参考:https://www.strollswithmydog.com/richardson-lucy-algorithm/
这篇关于Richardson-Lucy 非盲去模糊算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!