高斯噪声和泊松噪声的最大后验模型去噪


1. 高斯噪声的最大后验去噪模型

1.1 退化模型

高斯噪声的数学模型如(1)式所示
y = x + n (1) y=x+n \tag{1} y=x+n(1)
其中 y y y是噪声图像, x x x是清晰图像, n n n为加性高斯噪声服从独立同分布(i.i.d.)均值为0的高斯分布, n ∼ N ( 0 , σ 2 ) n \sim N(0,\sigma^2) nN(0,σ2)

1.2 最大后验建模

x ^ = arg max ⁡ x p ( x ∣ y ) = arg max ⁡ x p ( y ∣ x ) + p ( x ) = arg min ⁡ x − log ⁡ ( p ( y ∣ x ) ) − log ⁡ ( p ( x ) ) (2) \begin{aligned} \hat{x}&=\argmax_{x}p(x|y)=\argmax_{x}p(y|x)+p(x) \\ &=\argmin_{x}-\log(p(y|x))-\log(p(x))\\ \end{aligned} \tag{2} x^=xargmaxp(xy)=xargmaxp(yx)+p(x)=xargminlog(p(yx))log(p(x))(2)
接下来要将第一项由概率形式表示的最大似然估计项改写为数据精度项的形式。
已知: x ∼ N ( x , 0 ) x\sim N(x,0) xN(x,0),这里显然自然图像的方差不可能为0,之所以取0我的理解是:类似于最小二乘和最大似然推导的过程,这个x表示一个确定的不会改变的量而不是随机变量,因此也没有误差方差就是0。

噪声n的分布: n ∼ N ( 0 , σ 2 ) n \sim N(0,\sigma^2) nN(0,σ2)。将两项叠加: y ∼ N ( x , σ 2 ) y\sim N(x,\sigma^2) yN(x,σ2),即: p ( y ∣ x , σ ) = 1 2 π σ 2 e − ( y − x ) 2 2 σ 2 p(y|x,\sigma)=\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(y-x)^2}{2\sigma^2}} p(yx,σ)=2πσ2 1e2σ2(yx)2。此时可以直接将此式带入(2)式中。
x ^ = arg min ⁡ x − log ⁡ ( p ( y ∣ x ) ) − log ⁡ ( p ( x ) ) = arg min ⁡ x 1 2 σ 2 ∣ ∣ y − x ∣ ∣ 2 2 − l o g ( p ( x ) ) \begin{aligned} \hat{x}&=\argmin_{x}-\log(p(y|x))-\log(p(x))\\ &=\argmin_{x}\frac{1}{2\sigma^2}||y-x||_2^2-log(p(x)) \end{aligned} x^=xargminlog(p(yx))log(p(x))=xargmin2σ21yx22log(p(x))
完成推导。

2.泊松噪声的最大后验去噪模型

y y y属于以 x x x为变量的泊松分布:
y ∼ P ( x ) y\sim \mathcal{P}(x) yP(x)
因此其中一个测量值的似然概率为: p ( y i ∣ x ) = x i y i e − x i y i ! p(y_i|x)=\frac{x_i^{y_i}e^{-x_i}}{y_i!} p(yix)=yi!xiyiexi
将所有的M个测量值的概率组合起来:
p ( y ∣ x ) = ∏ i = 1 M p ( y i ∣ x ) = ∏ i = 1 M e log ⁡ ( x i ) y i × e − x i × 1 y i ! p(y|x)=\prod_{i=1}^Mp(y_i|x)=\prod_{i=1}^Me^{\log(x_i)y_i}\times e^{-x_i}\times \frac{1}{y_i!} p(yx)=i=1Mp(yix)=i=1Melog(xi)yi×exi×yi!1
那么它的似然概率的对数形式为:
log ⁡ ( p ( y ∣ x ) ) = ∑ i = 1 M log ⁡ ( x i ) y i − ∑ i = 1 M x i − ∑ i = 1 M l o g y i ! = log ⁡ ( x T ) y − x T 1 − ∑ i = 1 M log ⁡ ( y i ! ) \begin{aligned} \log(p(y|x))&=\sum_{i=1}^M\log (x_i)y_i-\sum_{i=1}^M x_i-\sum_{i=1}^Mlogy_i!\\ &=\log (x^T)y-x^T1-\sum_{i=1}^M\log(y_i!) \end{aligned} log(p(yx))=i=1Mlog(xi)yii=1Mxii=1Mlogyi!=log(xT)yxT1i=1Mlog(yi!)
上式很难求得解析解,可以使用Richardson-Lucy(RL)算法对上面的式子迭代求解。

或者使用Douglas-Rachford分裂算法求解。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
针对不同的噪声类型,常用的滤波器如下: 1. 椒盐噪声:可以使用中值滤波器,将每个像素的值替换为它周围像素的中值,从而去除椒盐噪声。 2. 高斯噪声:可以使用高斯滤波器,将每个像素的值替换为周围像素的加权平均值,从而去除高斯噪声。 3. 噪声:可以使用双边滤波器,将每个像素的值替换为周围像素的加权平均值,同时考虑像素之间的空间距离和灰度值差异,从而去除噪声。 下面是Python代码实现: ```python import cv2 # 读取图像 img_saltpepper = cv2.imread('saltpepper.png') img_gaussian = cv2.imread('gaussian.png') img_poisson = cv2.imread('poisson.png') # 中值滤波器去除椒盐噪声 img_saltpepper_median = cv2.medianBlur(img_saltpepper, 3) # 高斯滤波器去除高斯噪声 img_gaussian_gaussian = cv2.GaussianBlur(img_gaussian, (3, 3), 0) # 双边滤波器去除噪声 img_poisson_bilateral = cv2.bilateralFilter(img_poisson, 9, 75, 75) # 显示原始图像和去后的图像 cv2.imshow('Original Salt and Pepper', img_saltpepper) cv2.imshow('Median Filtered Salt and Pepper', img_saltpepper_median) cv2.imshow('Original Gaussian', img_gaussian) cv2.imshow('Gaussian Filtered Gaussian', img_gaussian_gaussian) cv2.imshow('Original Poisson', img_poisson) cv2.imshow('Bilateral Filtered Poisson', img_poisson_bilateral) cv2.waitKey(0) cv2.destroyAllWindows() ``` 其中,`saltpepper.png`、`gaussian.png`、`poisson.png` 分别为添加了椒盐噪声高斯噪声噪声的图像。可以根据实际情况调整滤波器的参数,以达到更好的去效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值