RL反卷积都干了些啥

RL反卷积是通过迭代的方法来优化损失函数,利用噪声性质和成像系统的点分布函数(Point Spread Function)对图像进行去噪的一种方法。 损失函数是啥样的呢?

$$ J(O) = \Sigma(O**PSF - I \cdot ln(O ** PSF)) $$

且有:

  • $J$,损失函数,为最小化的目标
  • $O(x,y)$,不受椒盐噪声和点分布函数模糊效应影响的理想原始图像
  • $PSF(x,y)$,Point Spread Function,点分布函数
  • $I(x,y)$,实际拍摄到的图像
  • $**$,二维卷积
  • $\cdot$,按元素相乘

既然要优化$J(O)$,那么就对O求导:

$$ \nabla J = [1 - \frac{I}{O**PSF}] ** PSF^{T} $$

利用迭代法,就可以使代价函数最小,如下:

$$ O_{k+1} = O_{k} - \alpha \cdot \nabla J $$

简化可得:

$$ O_{k+1} = O_{k} \cdot [\frac{I}{O_{k} ** PSF} ** PSF^{T}] $$

按照这个迭代式,一般RL反卷积算法迭代个十几次就差不多了。

但是!

为什么要这么干呢?代价函数是怎么来的呢? 这和光学设备的成像的噪声性质有关系。

数码噪点的泊松分布

由于光线具有波粒二象性,在进行数字成像时,在像素点上的光子数量在概率上呈泊松分布。

对于某个像素点而言,曝光时的光电子数量$i$满足泊松分布:

$$ p(i) = e^{-\lambda} \cdot \frac{\lambda ^{i}}{i!} $$

其中,$p(i)$表示像素接收到i个光电子的概率,而$\lambda$表示像素接收到的光电子数量的期望值(平均值)。

问题的转化:极大似然估计

考虑整个图像的联合概率为每个像素的概率的乘积:

$$ P(I) = \prod e^{-\Lambda} \cdot \frac{\Lambda^{I}}{I!} $$

且有:

  • $P(I)$:整个图像每个像素的联合概率
  • $I$:实际拍摄到的图像数据,包含噪声,M行N列
  • $\Lambda$:无泊松噪声的理想图像数据,M行N列

那么很自然的,才用极大似然估计,对上式取对数,化乘为加:

$$ ln(P(I)) = - \Sigma (\Lambda - I \cdot ln(\Lambda) + ln(I!)) $$

其中,$ln(I!)$是常数项,而对于$\Lambda$,有:

$$ \Lambda = O ** PSF $$

去掉到最大似然估计函数前面的负号以及常数项,代入上式就可以得到最小化目标的损失函数:

$$ J(O) = \Sigma(O**PSF - I \cdot ln(O ** PSF)) $$

小结

最大似然估计大法好。一些机器学习方法里面的贝叶斯方法也用到了最大似然估计来求参,真是有种触类旁通的感觉呢。

参考文献

  1. Elements of Richardson-Lucy Deconvolution
  2. The Richardson-Lucy Algorithm
  3. Photographic Sensor Simulation
  4. 入门——理解数码噪点:产生原因及对拍摄的指导意义
  5. Richardson W H. Bayesian-based iterative method of image restoration[J]. JoSA, 1972, 62(1): 55-59.