图像去模糊(二)——Richardson–Lucy算法

1、基本模型假设
Y = Λ ∗ P
其中:
Y:退化图像,
Λ : 原始图像,
P : 点扩散函数,
∗ : 卷积操作。
  这里的点扩散函数(Point Spread Function,PSF)描述了成像系统对点光源或点状物的响应。


PSF

2、算法思想
在假设模型

Y = Λ ∗ P
中,我们有:

模型思想
简单起见,可以假设d=n,则观测图像和真实图像包含数量相同的像素点。
根据yj的物理意义知其满足泊松分布。事实上,

泊松分布

其中

参数说明

3、求解

3.1 泊松分布
泊松分布描述了一段时间内某件事发生一定次数的概率。事件需要满足以下条件:
1)每次事件之间相互独立;
2)事件发生的概率在一段时间内是稳定的。
泊松分布的概率函数为:

泊松分布概率函数

参数λ是单位时间(或单位面积)内随机事件的平均发生率,也是泊松分布的期望和方差。
进一步的理解和应用实例可以参看博文:
http://www.ruanyifeng.com/blog/2013/01/poisson_distribution.html

3.2 迭代式推导
采用高斯型点扩展函数(实际问题中扩散函数形式是多种多样的,此处以该函数模型为例):

高斯型点扩展函数

D(i,j)表示点i和j的距离。
由前面的分析知yj满足泊松分布,得:

点i映射至点j的概率

该式表示了点i在点j上的映射贡献,故yj可由下式表示:

分布式

当图像Λ已知时,z(i, j)可由下式估计:

z(i,j)估计

而当z(i,j)已知时,λ可由下式估计:

λ估计

因此最终的迭代式为:

迭代式

更详细的求解过程用到了极大似然法和EM算法,这两个概念可以参看博文:
http://blog.csdn.net/zouxy09/article/details/8537620

4、去卷积效果实例
原图:
原始图像
高斯模糊后:
高斯模糊
5次迭代恢复:
5次迭代
20次迭代恢复:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4EtsvP2m-1595927090226)(https://img-blog.csdn.net/20161017223930211)]
可以看到,迭代次数越多,图像边界区域的振铃效应越明显,但图像细节恢复越清晰。
从整体上定量来看,迭代次数在某个值附近达到最佳效果,这个值因图而异。本例定量计算信噪比(SNR)及峰值信噪比(PSNR)结果如下图所示,大约在14次迭代时结果最优。图中横坐标为迭代次数,纵坐标单位为db:

SNR

PSNR

附上实验用到的matlab代码:

clc;

I = imread('original.JPG');
figure(1);
imshow(I);
title('Original Image');

PSF = fspecial('gaussian',5,5);
Blurred = imfilter(I,PSF,'symmetric','conv');
figure(2);
imshow(Blurred);
title('Gaussian Blurred');
imwrite(Blurred,'高斯模糊.png');

lucy = deconvlucy(Blurred,PSF,5);
figure(3);
imshow(lucy);
title('Restored Image, NUMIT = 5');
imwrite(lucy,'5次迭代.png');

lucy = deconvlucy(Blurred,PSF,20);
figure(4);
imshow(lucy);
title('Restored Image, NUMIT = 20');
imwrite(lucy,'20次迭代.png');
function BestRL
    clc;
    generateImg();%
    calcPSNR();
end

function generateImg
    I = imread('original.JPG');

    PSF = fspecial('gaussian',5,5);
    Blurred = imfilter(I,PSF,'symmetric','conv');
    %imwrite(Blurred,'高斯模糊.png');

    for i=1:1:20
        rI = deconvlucy(Blurred,PSF,i);
        imwrite(rI,sprintf('%d.png',i));
    end
end

function calcPSNR
    PSNR = 1:1:20;
    SNR = 1:1:20;
    I = imread('original.JPG');
    for i=1:1:20
        Blurred = imread(sprintf('%d.png',i));
        [PSNR(i),SNR(i)] = psnr(Blurred,I);
    end
    figure(1);
    plot(PSNR);
    title('PSNR');
    
    figure(2);
    plot(SNR);
    title('SNR');
end
  • 26
    点赞
  • 199
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值