对于模糊图像除了常见的维纳滤波、逆滤波、约束最小二乘方滤波还可以通过最大似然法进行图像复原。(本人这个做的不好)
步骤流程:
1.读入图像
2.从8 位型转为双精度,以便后面的运算
3.创建离散点扩散函数h
4.原图卷积是什么意思像f与点扩散函数h卷积,得散焦模卷积运算糊图像
5.按2D最大似然法公式,在空域中,通过卷积做图像复原
操作演示
左侧的图框为原图和,后续的添加噪声图和图像退化图也在这,右侧图框卷积是什么意思为图像复原图
选择图像按钮:

global img1;
[filename, pathname] = uigetfile({'*.jpg';'*.bmp';'*.gif'},'choose image pathway');
str = [pathname filename];
if (filename~=0)                          
img1=imread(str);          
axes(handles.axes1)
imshow(img1)
else    %empty file
   clear;
end

添加噪声+图像退化

%% 添加噪声
global img1;
global noise_img;
noise_img = imnoise(img1, 'gaussian', 0, 0.01 );
axes(handles.axes1)
imshow(noise_img)
%% 图像退化
global img3;
global noise_img;
PSF = fspecial('motion', 10, 60);
img3= imfilter( noise_img, PSF, 'circular' );
axes(handles.axes1)
imshow(img3)

卷积运算像复卷积核

global img3;
f=im2double(img3); % 从8 位型转为双精度,以便后面的运算
R=5;
h=fspecial('disk',R);     % 创建离散点扩散函数h
% h=fspecial('gaussian',5,1);    % 创建离散点扩散函数h
g=imfilter (f, h, 'conv', 'replicate' ); % 原图像f与点扩散函数h卷积,得散焦模糊图像g。加边界处理,所以无黑边
% 按2D最大似然法公式,在空域中,通过卷积做图像复原:
fi=g;
for i=1:200
    a=imfilter (fi, h, 'conv', 'replicate' );       %  公式中分母的卷积。
    b=g./a;                     %  a,g大小应相同,才能作点除。
    c=imfilter (b, h, 'conv', 'replicate' );       %  公式中的相关。    
    fi=fi.*c;                    %  最大似然法公式。点乘时,f,c应大小相同。 
end
axes(handles.axes3)
imshow(fi);

最大似然法复原图像-Matlab

最大似然法复原图像-Matlab

最大似然法复原图像-Matlab

最大似然法复原图像-Matlab