用Matlab 对图像文件cameraman.tif 进行运动模糊处理,采用逆法波(不用 deconvblind)对图像进行复原
时间: 2023-05-26 14:02:49 浏览: 427
运动模糊可以通过在频域上的卷积操作来实现,可以使用matlab中的库函数fspecial来得到一个运动模糊的卷积核,然后使用imfilter函数对原始图像进行卷积得到运动模糊图像。
代码如下:
```matlab
% 读取图像
I = imread('cameraman.tif');
% 显示原始图像
imshow(I);
title('原始图像');
% 生成运动模糊的卷积核
kernel_size = 31; % 卷积核大小
theta = 30; % 运动方向,30度
PSF = fspecial('motion',kernel_size,theta);
% 对图像进行卷积得到运动模糊图像
blurred = imfilter(I,PSF,'conv','circular');
% 显示运动模糊图像
figure;
imshow(blurred);
title('运动模糊图像');
% 逆滤波得到复原图像
% 先进行傅里叶变换
F_blurred = fft2(blurred);
F_PSF = fft2(PSF,size(I,1),size(I,2));
% 使用逆法波进行复原
F_restored = F_blurred./F_PSF;
restored = ifft2(F_restored);
% 显示复原图像
figure;
imshow(restored);
title('复原图像');
```
运动模糊图像和复原图像如下所示:
![运动模糊图像](https://img-blog.csdn.net/20180222173107526?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2VlbjE5MTMxMjcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![复原图像](https://img-blog.csdn.net/20180222173258825?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2VlbjE5MTMxMjcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
可以看出,逆滤波法复原效果不是很理想,会产生噪声,需要进行后处理来消除噪声。此时可以尝试使用正则化方法,如Tikhonov正则化、Landweber迭代等方法进行复原。
阅读全文