数字图像的空间域滤波和频域滤波备课讲稿
- 格式:doc
- 大小:3.74 MB
- 文档页数:12
一.实验目的1.掌握图像滤波的基本定义及目的;2.理解空间域滤波的基本原理及方法;3.掌握进行图像的空域滤波的方法。
4.掌握傅立叶变换及逆变换的基本原理方法;5.理解频域滤波的基本原理及方法;6.掌握进行图像的频域滤波的方法。
二.实验结果与分析1.平滑空间滤波:a)读出eight.tif这幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中;(提示:imnoise)b)对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示;(提示:fspecial、imfilter或filter2)c)使用函数imfilter时,分别采用不同的填充方法(或边界选项,如零填充、’replicate’、’symmetric’、’circular’)进行低通滤波,显示处理后的图像采用不同的填充方式,效果略有不同。
d)运用for循环,将加有椒盐噪声的图像进行10次,20次均值滤波,查看其特点,显示均值处理后的图像;(提示:利用fspecial 函数的’average’类型生成均值滤波器)e)对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。
(提示:medfilt2)中值滤波后的图像比均值滤波后的图像更加平滑。
f)自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像;滤波后图像变得平滑。
2.锐化空间滤波a)读出blurry_moon.tif这幅图像,采用3×3的拉普拉斯算子w =[ 1, 1, 1; 1 – 8 1; 1, 1, 1]对其进行滤波;观察原图与拉普拉斯掩模滤波后的图像,滤波后的图像不再那么平滑,使图像产生锐化效果。
b)编写函数w = genlaplacian(n),自动产生任一奇数尺寸n的拉普拉斯算子,如5×5的拉普拉斯算子w = [ 1 1 1 1 11 1 1 1 11 1 -24 1 11 1 1 1 11 1 1 1 1]本函数见文件夹下genlaplacian.m文件。
数字图像的空间域平滑滤波指导老师:张朝阳院系:电子信息与电气工程学院班级:Z1003423姓名:陆加海学号:1100342091完成日期:2010.5目录数字图像的空间域平滑滤波 (1)数字图像的空间域平滑滤波 (3)1. 实验目的 (3)2. 实验原理 (3)2.1 空间域平滑滤波基本原理 (3)2.2 空间域平滑滤波器 (3)3. 实验内容及实现方案 (3)3.1 实验内容 (3)3.2 实现方案 (4)4. 实验步骤 (4)4.1 噪声加入 (4)4.2 椒盐噪声在不同领域值下的均值滤波 (4)4.3 对椒盐噪声进行均值、中值滤波 (5)4.4 对高斯噪声进行均值、中值滤波 (5)4.5 自行设计空间滤波器 (5)5. 实验结果分析 (6)5.1 噪声加入 (6)5.2 椒盐噪声在不同领域值下的均值滤波 (6)5.3 对椒盐噪声进行均值、中值滤波 (6)5.4 对高斯噪声进行均值、中值滤波 (6)5.5 自行设计空间滤波器 (7)数字图像的空间域平滑滤波1.实验目的1)掌握图像空间域平滑滤波的基本定义及目的。
2)理解空间域平滑滤波的基本原理及方法。
3)掌握进行图像空间域平滑滤波的方法。
2.实验原理2.1 空间域平滑滤波基本原理空间域滤波是在图像空间中借助模板进行领域操作,处理图像每一个都是根据模板对输入像素相应领域内的像素值进行计算得到的。
空间域滤波器根据功能主要分为平滑滤波器和锐化滤波器。
平滑可用低通来实现,平滑的目的可分为两类:一类是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小肩端连接起来;另一类是消除噪声。
2.2 空间域平滑滤波器最常用的平滑滤波器有均值滤波器和中值滤波器。
均值滤波器是线性平滑滤波器,其所有系数都是正数对3×3模板来说,最简单的是取所有系数为1,为了保持图像仍然在原来图像的灰度值范围内,模块与像素领域的乘积都要除以9。
中值滤波器是一种常用的非线性平滑滤波器,其原理与均值滤波器原理类似,但计算的不是加权求和,而是把领域中的图像的像素按灰度级进行排序,然后选择组的中间值作为输出像素值。
数字图象处理之频率滤波
频率滤波是数字图象处理中的一种常用技术,用于改变图象中不同频率的成份,以达到图象增强、去噪等目的。
频率滤波可以分为低通滤波和高通滤波。
低通滤波器允许低频成份通过,而抑制高频成份。
它可以用于去除图象中的高
频噪声,平滑图象,使图象变得含糊。
常见的低通滤波器有均值滤波器、高斯滤波器等。
高通滤波器允许高频成份通过,而抑制低频成份。
它可以用于增强图象的边缘、细节等高频特征。
常见的高通滤波器有拉普拉斯滤波器、Sobel滤波器等。
频率滤波的基本原理是将图象转换到频域,通过对频域图象进行滤波操作,再
将滤波后的频域图象转换回空域,得到滤波后的图象。
常用的频率滤波方法有傅里叶变换、小波变换等。
在实际应用中,频率滤波常用于图象增强、去噪、边缘检测等领域。
通过选择
不同的滤波器和调整滤波参数,可以实现不同的滤波效果。
但是需要注意的是,频率滤波也可能引入一些副作用,如图象含糊、失真等,因此在应用时需要根据具体情况进行选择和调整。
实验报告实验课程:光电图像处理姓名:学号:实验地点:信软楼309指导老师:实验时间:2016年 4 月 7日一.实验名称:(实验四)数字图像DFT及频域滤波二.实验目的1. 了解数字图像各种正交变换的概念、原理和用途。
2. 熟练掌握数字图像的 DFT/DCT 的原理、方法和实现流程,熟悉两种变换的性质,并能对数字图像 DFT 及 DCT 的结果进行必要解释。
3.熟悉和掌握利用 MATLAB 工具进行数字图像 FFT 及 DCT 的基本步骤、MATLAB函数使用及具体变换的处理流程,并能根据需要进行必要的频谱分析和可视化显示。
4. 熟悉利用空域滤波器构建对应的频域滤波器的方法和关键步骤。
5. 熟悉和掌握几种典型的频域低通滤波器及高通滤波器的原理、特性和作用。
6. 搞清空域图像处理与频域图像处理的异同,包括处理流程、各自的优势等。
掌握频域滤波的基本原理和基本流程,并能编写出相应的程序代码。
三.实验原理1.模型图像的FFT 实验:原理:傅里叶变换提供了另外一个角度来观察图像,可以将图像从灰度分布转化为频率分布来观察图像的特征。
FFT主要是应用公式:进行空间域与频率域的相互转换.程序流程图:2.实际图像的FFT 实验:原理:傅里叶变换提供了另外一个角度来观察图像,可以将图像从灰度分布转化为频率分布来观察图像的特征。
其中对于频谱反中心化的处理是通过I=fftshift(I)来实现的,FFT主要是应用公式:进行空域与频域的转换.程序流程图:3.数字图像的频域滤波处理:原理:图像的频域表征了图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。
图像的边缘部分是突变部分,变化较快,因此反映在频域上是高频分量;图像的大部分噪声是高频部分;而图像中大部分平缓的灰度变化部分则为低频分量,再通过构建的高通与低通滤波器与FFT变换后的频谱函数乘积的滤波处理,显示出处理后的图像.程序流程图:(1)(2)四.实验步骤1.模型图像的FFT 实验:(1)利用 MATLAB 程序自行生成一幅二值图像,分别对其分别进行离散傅立叶变换(DFT)计算;(2)对变换结果做频谱中心化处理,并分别显示出其2D频谱图以及对应的3D频谱图;(3)对以上两幅原始图像 FFT 后的频谱图进行分析,可以得出什么样的结论或验证DFT 的什么性质。
课程名称数字图像处理与分析实验序号实验七实验项目图像频域滤波实验地点实验学时实验类型指导教师实验员专业班级学号姓名年月日成绩:教师评语一、实验目的及要求1、掌握怎样利用傅立叶变换进行频域滤波2、掌握频域滤波的概念及方法3、熟练掌握频域空间的各类滤波器4、利用MATLAB 程序进行频域滤波二、实验原理与内容频域滤波分为低通滤波和高通滤波两类,对应的滤波器分别为低通滤波器和高通滤波器。
频域低通过滤的基本思想:G(u,v)=F(u,v)H(u,v)F(u,v)是需要钝化图像的傅立叶变换形式,H(u,v)是选取的一个低通过滤器变换函数,G(u,v)是通过H(u,v)减少F(u,v)的高频部分来得到的结果,运用傅立叶逆变换得到钝化后的图像。
理想地通滤波器(ILPF)具有传递函数:其中,0D 为指定的非负数,),(v u D 为(u,v)到滤波器的中心的距离。
0),(D v u D =的点的轨迹为一个圆。
n 阶巴特沃兹低通滤波器(BLPF)(在距离原点0D 处出现截至频率)的传递函数为nD v u D v u H 20]),([11),(+=与理想地通滤波器不同的是,巴特沃兹率通滤波器的传递函数并不是在0D 处突然不连续。
高斯低通滤波器(GLPF)的传递函数为222),(),(σv u D e v u H =其中,σ为标准差。
相应的高通滤波器也包括:理想高通滤波器、n 阶巴特沃兹高通滤波器、高斯高通滤波器。
给⎩⎨⎧>≤=00),(0),(1),(D v u ifD D v u ifD v u H定一个低通滤波器的传递函数),(v u H lp ,通过使用如下的简单关系,可以获得相应高通滤波器的传递函数:),(1v u H H lp hp -=三、实验软硬件环境装有MATLAB 软件的电脑四、实验过程(实验步骤、记录、数据、分析)1、%不同半径巴特沃斯低通滤波器的平滑作用代码:f=imread('ee.jpg');subplot(321);imshow(f,[]);title('原图');f=rgb2gray(f);F=fftshift(fft2(f,size(f,1),size(f,2)));u=1:size(F,1);v=1:size(F,2);[V,U]=meshgrid(v,u);D=sqrt((U-(floor(size(F,1)./2)+1)).^2+(V-(floor(size(F,2)./2)+1)).^2);H=zeros(size(f));D0=5;n=2;H=1./(1+(D./D0).^(2.*n));G=F.*H;%频域低通滤波G1=ifft2(ifftshift(G));subplot(322);imshow(real(G1),[]);title('半径小于5的巴特沃思低通滤波器');D0=15;H=1./(1+(D./D0).^(2.*n));G=F.*H;G1=ifft2(ifftshift(G));subplot(323);imshow(real(G1),[]);title('半径小于15的巴特沃思低通滤波器');D0=30;H=1./(1+(D./D0).^(2.*n));G=F.*H;G1=ifft2(ifftshift(G));subplot(324);imshow(real(G1),[]);title('半径小于30的巴特沃思低通滤波器');D0=80;H=1./(1+(D./D0).^(2.*n));分析:由实验结果可知,当滤波器的半径不同时,对应的滤波效果也不同。
数字图像的空间域滤波和频域滤波 精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢2 数字图像的空间域滤波和频域滤波
一、实验环境 Pycharm2018.2,Anaconda3-5.3
二、实验内容与要求 1. 平滑空间滤波: 1) 读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图 显示在同一图像窗口中。 2) 对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果, 要求在同一窗口中显示。 3) 进行低通滤波,显示处理后的图像。 4) 显示均值处理后的图像。 5) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处 理,要求在同一窗口中显示结果。
2. 锐化空间滤波 1) 读出blurry_moon.tif这幅图像,采用3×3的拉普拉斯算子w = [ 1, 1, 1; 1 – 8 1; 1, 1, 1]对其进行滤波。 2) 编写函数w = genlaplacian(n),自动产生任一奇数尺寸n的拉普拉斯算子,如5×5 的拉普拉斯算子 w = [ 1 1 1 1 1 1 1 1 1 1 1 1 -24 1 1 1 1 1 1 1 1 1 1 1 1] 3) 分别采用5×5,9×9,15×15和25×25大小的拉普拉斯算子对blurry_moon.tif进 行锐化滤波,并利用式2(,)(,)(,)gxyfxyfxy完成图像的锐化增强,观
察其有何不同,要求在同一窗口中显示。 4) 采用不同的梯度算子对blurry_moon.tif进行锐化滤波,并比较其效果。
3. 傅立叶变换 1) 读出woman.tif这幅图像,对其进行快速傅立叶变换,分别显示其幅度图像和相位 精品资料 仅供学习与交流,如有侵权请联系网站删除 谢谢3 图像。 仅对相位部分进行傅立叶反变换后查看结果图像。 2) 仅对幅度部分进行傅立叶反变换后查看结果图像。 3) 将图像的傅立叶变换F置为其共轭后进行反变换,比较新生成图像与原始图像的差 异。 三、实验过程
1. 平滑空间滤波: 1) 读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。 椒盐噪声: def salt_pepperNoise(src): dst = src.copy() num = 1000 # 1000个噪声点
ndim = np.ndim(src)
row, col = np.shape(src)[0:2] for i in range(num): x = np.random.randint(0, row) # 随机生成噪声点位置
y = np.random.randint(0, col)
indicator = np.random.randint(0, 2) # 灰度图像
if ndim == 2:
if indicator == 0: dst[x, y] = 0 else: dst[x, y] = 255
# 彩色图像
elif ndim == 3:
if indicator == 0: dst[x, y, :] = 0 else: dst[x, y, :] = 255 return dst 高斯噪声: def addGaussianNoise(image,sigma): mean = 0.0 row, col ,ch= image.shape gauss = np.random.normal(mean, sigma, (row, col,ch)) gauss = gauss.reshape(row, col,ch) noisy = image + gauss return noisy.astype(np.uint8) 精品资料 仅供学习与交流,如有侵权请联系网站删除 谢谢4 2) 对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果, 要求在同一窗口中显示。 加入椒盐噪声后图像的滤波:
img1 =cv2.imread("D:\\mote.jpg",0)
img=img1[100:300] src =salt_pepperNoise(img) cv2.imshow("origin",src) dst = cv2.blur(src,(3,3)) #均值滤波模板 cv2.imshow("blur",dst) dst1 = cv2.medianBlur(src,5) #中值滤波 cv2.imshow("medianBlur",dst1) dst2 = cv2.GaussianBlur(src,(3,3),0) #高斯滤波 cv2.imshow("GaussianBlur",dst2) cv2.waitKey(0) cv2.destroyAllWindows() 精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢5 3) 进行低通滤波,显示处理后的图像。
import cv2
import numpy as np def function(img): h,w=img.shape newimg=np.zeros((h,w),np.uint8) img2=np.fft.fft2(img) fshift = np.fft.fftshift(img2) st=fshift.copy() h,w=fshift.shape sh=h/2 sw=w/2 r=40 for i in range(h): for j in range(w): if ((sh - i) * (sh - i) + (sw - j) * (sw - j)) <= r * r: newimg[i, j] = 255 tmp = 1 else: tmp = 0 st[i, j] = tmp * fshift[i, j]
sl=np.fft.ifftshift(st) x2=np.fft.ifft2(sl) x3=np.uint8(np.real(x2)) return newimg,x3 img=cv2.imread('D:\\mote.jpg',0) img1,img2=function(img) cv2.imshow("image",img) cv2.imshow("low pass filtering",img2) 精品资料 仅供学习与交流,如有侵权请联系网站删除 谢谢6 cv2.waitKey(0)
4) 显示均值处理后的图像。 代码:
import cv2
import matplotlib.pyplot as plt img = cv2.imread('D:\\mote.jpg',0) #直接读为灰度图像 blur = cv2.blur(img,(3,5))#模板大小3*5 plt.subplot(1,2,1),plt.imshow(img,'gray')#默认彩色,另一种彩色bgr plt.title('img') plt.xticks([]), plt.yticks([]) plt.subplot(1,2,2),plt.imshow(blur,'gray') plt.title('blur') plt.xticks([]), plt.yticks([]) plt.show() 精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢7 5) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处 理,要求在同一窗口中显示结果。 代码: import cv2 import matplotlib.pyplot as plt img = cv2.imread('D:/img/salt.jpg',0) #直接读为灰度图像 blur = cv2.blur(img,(3,5))#模板大小3*5 mid =cv2.medianBlur(img,5) plt.subplot(1,2,1),plt.imshow(mid,'gray')
plt.title('medianBlur') plt.xticks([]), plt.yticks([]) plt.subplot(1,2,2),plt.imshow(blur,'gray') plt.title('blur') plt.xticks([]), plt.yticks([]) plt.show() 精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢8 2. 锐化空间滤波 1) 读出一幅图像,采用3×3的拉普拉斯算子w = [ 1, 1, 1; 1 – 8 1; 1, 1, 1]对其进行滤波。 # 定义函数,实现拉普拉斯算子 def Laplace(src): template = np.ones((3, 3), dtype=np.float32) # 模板
template[1, 1] = -8.0
addBorder = cv2.copyMakeBorder(src, 1, 1, 1, 1, cv2.BORDER_REFLECT_101)
row, col = src.shape
dst = np.zeros((row, col), dtype=np.int16) for i in range(row): for j in range(col): temp = addBorder [i:i+3, j:j+3] dst[i, j] = np.sum(template*temp) return dst