L-R算法去模糊

来源:互联网 发布:oa协同软件 编辑:程序博客网 时间:2024/05/17 23:54

LR算法起源于极大似然,图像是用泊松统计建模的。当下面这个迭代收敛时,模型极大似然得到令人满意方程式:

f^k+1(x,y)=f^k(x,y)[x,y]g(x,y)h(x,y)f^k(x,y)

在MATLAB中L-R算法用deconvlucy实现基本语法:

f=deconvlucy(g,PSF,NUMIT,DAMPAR,WEIGHT)

其中f表示复原图像,g表示退化图像,PSF是点扩散函数,NUMIT为迭代次数,DAMPAR是标量,指定了结果图像和原始图像的偏离阈值,当像素偏离原值DAMPAR范围内就不再迭代,既抑制了噪声,又保留了图像细节。默认为0。WEIGHT是数组,大小与g相同,它为每个像素施于权重以反映图像质量,例如,从某个有缺陷的成像数组中得到不良像素都会被赋值为零,从而排出不良像素的影响。另一个作用根据平坦区域修正总量来调节像素权重。
如果复原图像呈现由算法所用的离散傅里叶变换引入的振铃,那么调用函数deconvluvcy之前,先利用edgeaper是由帮助的。

close all;clear all;clc;% Display the original image.I = imread('1.jpg'); [d1,d2,d3] = size(I); if(d3 > 1) I = rgb2gray(I);endI = im2double(I);[hei,wid,~] = size(I);subplot(1,4,1),imshow(I);title('Original Image ');% Simulate a motion blur.LEN = 100;THETA = 11;PSF = fspecial('motion', LEN, THETA);blurred = imfilter(I, PSF, 'conv', 'circular');subplot(1,4,2), imshow(blurred); title('Blurred Image');% Simulate additive noise.noise_mean = 0;noise_var = 0.00001;blurred_noisy = imnoise(blurred, 'gaussian', ...                        noise_mean, noise_var);subplot(1,4,3), imshow(blurred_noisy)title('Simulate Blur and Noise')DAMPAR=10*noise_var;LIM=ceil(size(PSF,1)/2);WEIGHT=zeros(size(blurred_noisy));WEIGHT(LIM+1:end-LIM,LIM+1:end-LIM)=1;NUMIT=5;f5=deconvlucy(blurred_noisy,PSF,NUMIT,DAMPAR,WEIGHT);subplot(1,4,4),imshow(f5);title('L_R算法')

这里写图片描述
数字图像处理的MATLAB实现

原创粉丝点击