MATLAB图像滤波实验报告

1图像处理实验

实验报告

院(系1 实验目的

利用MATLAB实现图像滤波,边界检测,从空间域与频域上加深对图像滤波的理解。

2 实验内容

1. 对lena.bmp分别添加高斯、椒盐、泊松噪声,并比较高斯滤波与中值滤波的效果。(使用matlab自带函数即可)

2. 对lena.bmp实现laplace算子、Sobel算子、Kirch算子、Canny算子等边界检测算子中的任何两个;(不使用matlab自带函数)

3. 通过观察rect.bmp和rect-45度.bmp的傅立叶频谱,了解图像傅立叶变换的旋转、平移等特性;

4. 对grid.bmp实现理想低通;

5. 对cave.jpg实现同态滤波算法,观察光照校正的效果(使用高斯型高通滤波器的离散化结果作为模板)。

3 实验步骤及算法流程

4 实验结果分析

4.1 空间域滤波

图1 加高斯噪声与滤波

图2 密度为0.1的椒盐噪声与滤波

图3 密度为0.5的椒盐噪声与滤波

图4 加泊松噪声与滤波

高斯滤波是构造一个高斯卷积掩膜,对每一个点的邻域进行卷积达到滤波的效果,中值滤波是用邻域中像素的中值代替当前像素,是非线性的。分析以上三幅图,知高斯滤波的效果对每种噪声差不多;中值滤波对椒盐噪声来说效果非常好,在椒盐密度不大的情况下几乎可以完全去除噪声。以以上四幅图来说,中值滤波的效果要比高斯滤波的效果好。

4.2 边界检测

图5 Laplace算子检测边界

图6 Sobel算子检测边界

4.3 频域转换

图7 旋转前的频域(经fftshift处理)

图8 旋转45°后的频域(经fftshift处理)

经上图可知,当图像旋转45°后,相应的频域也旋转45°。

4.4 频域低通滤波

图9 原始图像grid.bmp的频域(经fftshift处理)

中心尖峰的两侧出现两个次尖峰,对应正弦噪声的频率,需将其滤掉。

图10 处理后的频域

进行频域的处理后,空间域上的图像如下所示:

图11 对grid.bmp低通滤波

4.5 同态滤波

图12 原始图像cave.jpg

选择合适的高通滤波器进行同态滤波的效果如下:

图13 同态滤波后的图像

5 思考题

1. 依次给出“高斯平滑滤波器、中值滤波器、laplace滤波器”是线性还是非线性的。

只有中值滤波为非线性。

2. 简述Laplace算子产生双重响应的原因。

因为有些边缘在用Laplace检测时起始处和终点两处出现非零值。(这一点不确定)

3. 如何实现彩色图像的边缘检测?

可用多通道分别检测然后综合。

4. 傅里叶变换有哪些重要的性质,讨论图像的边缘与频率的关系?

(1)线性性质

(2)位移性质

(3)微分性质

(4)积分性质

(5)卷积定理:空间域的卷积对应频域的乘积,空间域的乘积对应时域的卷积;

(6)旋转特性:空间域旋转某一角度,频域跟着旋转相同的角度。

图像的边缘处频率很大。

6 总结:收获及感想

通过此次实验,掌握了图像滤波的一些基本算法并能利用MATLAB简单地实现;加深了对图像空间域与频域之间的对应关系的理解。

7 附录(程序主要代码)

加椒盐噪声与滤波:(部分代码)

im=imread('lena.bmp');
im=im2double(im);
outsalt=imnoise(im,'salt & pepper',0.5);
hsize=10;
sigma=5;
h=fspecial('gaussian',hsize,sigma);
imagesc(h);
fgauss=imfilter(outsalt,h);
outmed=medfilt2(outsalt,[3,3]);

Laplace检测边缘:(部分代码,以下同)

for i=2:x-1
for j=2:y-1 imlaplace(i,j)=im(i-1,j-1)+im(i-1,j)+im(i-1,j+1)+im(i,j-1)-8*im(i,j)+im(i,j+1)+im(i+1,j-1)+im(i+1,j)+im(i+1,j+1);
if(imlaplace(i,j)<0)
imlaplace(i,j)=0;
elseif(imlaplace(i,j)>1)
imlaplace(i,j)=1;
end
imlaplace(i,j)=1-imlaplace(i,j);
end
end

Sobel检测边缘:

for i=2:x-1
for j=2:y-1 xx=im(i-1,j-1)+2*im(i-1,j)+im(i-1,j+1)-im(i+1,j-1)-2*i