1.实验方式
通过对图像添加运动模糊模拟实际拍照的延时效应,并且利用维纳滤波方式对图像进行滤波,观察维纳滤波对运动模糊的过滤效果,并对照其他几种滤波方式对运动模糊的影响。 实验代码:
close all;clear all;clc;
i=imread('E:\Matlabimage\book.jpg');
I=rgb2gray(i);
I = im2double(I);
LEN = 21;
THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'conv', 'circular');
wnr2 = deconvwnr(blurred, PSF);
subplot(2,2,1);imshow(i);title('原图')
subplot(2,2,2);imshow(I);title('灰度图')
subplot(2,2,3);imshow(blurred);title('运动模糊图像')
subplot(2,2,4);imshow(wnr2);title('恢复图像')
代码解释:程序首先读取一幅JPG格式的彩图片,然后将此图片转化为双精度灰度图片,然后产生运动模糊算子PSF,其中参数LEN和THETA表示摄像物体逆时针方向一THETA方向运动了LEN个像素,并且通过imfilter实现运动模糊效果,将返回的结果放入blurred,然后通过deconvwnr实现滤波,并将滤波前后的图像显示出来。
实验结果:
几种滤波方式对运动模糊的滤除效果对比:
运动模糊+维纳滤波: 运动模糊+中值滤波:
运动模糊+平均值滤波
由对比结果可知维纳滤波对运动模糊有很好的处理效果。
1、频域sobel滤波
实验根据公式设计高通或低通滤波器对图像进行处理,并观察频域滤波的效果
实验代码:
close all;clear all;clc;
f=imread('cameraman.tif');
F=fft2(f); %对图像进行傅立叶变换
%对变换后图像进行对数变化,并对其坐标平移,使其中心化
S=fftshift(log(1+abs(F)));
S=gscale(S); %将频谱图像标度在0-256的范围内
figure,imshow(S) %显示频谱图像临汾地震
h=fspecial('sobel'); %产生空间‘sobel’模版
figure;freqz2(h) %查看相应频域滤波器的图像
PQ=paddedsize(size(f)); %产生滤波时所需大小的矩阵
H=freqz2(h,PQ(1),PQ(2)); %产生频域中的‘sobel’滤波器
H1=ifftshift(H); %重排数据序列,使得原点位于频率矩阵的左上角
figure,imshow(abs(H),[]),title('abs(H)'); %以图形形式显示滤波器
figure,imshow(abs(H1),[]),title('abs(H1)');
gs=imfilter(double(f),h); %用模版h进行空域滤波
gf=dftfilt(f,H1); %用滤波器对图像进行频域滤波
荣智健夫人
figure,imshow(gs,[]),title('gs');
figure,imshow(gf,[]),title('gf');
figure,imshow(abs(gs),[]),title('abs(gs)');
ntfs格式分区figure,imshow(abs(gf),[]),title('abs(gf)');
代码解释:程序先读入一幅灰度图像,然后进行傅里叶变换,在对变换后的图像进行对数变换改变频谱F的幅度范围,然后对变化后的图像进行平移,将低频部分移到频谱中心,再将频谱转化为双精度显示出来,然后利用fspecial函数产生sobel模板然后显示出频域滤波器的图像,再利用paddedsize产生滤波器所需要的矩阵,再利用此滤波器产生频域的sobel滤波器,然后绘出此频域滤波器,然后再分别对同一幅图像进行空域滤波与频域滤波,并将滤波后的图像显示出来对比滤波效果。
实验结果:
变换后的频谱: 频域滤波器图像:
频域sobel滤波器: 平移后的滤波器:
空域滤波结果: 频域滤波结果:
对空域滤波后的图像振幅: 频域滤波后的振幅:察哈尔
实验结论:由实验结果可知空域滤波与频域滤波结果相似,可以分别出图像中具有一定特征的图像的一部分,并且对滤波后的图像取振幅可以用于图像的边沿提取和锐化。
2、高斯高通滤波:
说明:利用高斯高通滤波器对图像进行处理,并分析高斯高通滤波器对图像的影响。
实验代码:
f=imread('eight.tif'); %读取图片
PQ=paddedsize(size(f)); %产生滤波时所需大小的矩阵
D0=0.05*PQ(1); %设定高斯高通滤波器的阈值
H=hpfilte('gaussian',PQ(1),PQ(2),D0); %产生高斯高通滤波器
g=dftfilt(f,H); %对图像进行滤波
figure,imshow(f) %显示原图像乐山师范学院学报
figure,imshow(g,[]) %显示滤波后图像
代码解释:实验先读入一幅灰度图像,然后产生滤波矩阵和阈值,在对图像进行高斯高通滤波,再将滤波后的图像显示出来,观察滤波效果。
实验结果:
原图: 高斯高通滤波后:
实验结论:由实验结果可知图像经过高斯高通滤波器后颜更加均衡,图像物体边沿产生了白光晕,突出了图像轮廓,有利于图像中物体轮廓信息的提取。
几种不同频域滤波结果的对比:
中南大学信息港理想低通(阈值:100): 理想高通(阈值:10):
巴特沃斯低通: 巴特沃斯高通: