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