实验五_图像频域高通和低通滤波变换
频域滤波器设计(数字图像处理实验报告)
数字图像处理作业——频域滤波器设计摘要在图像处理的过程中,消除图像的噪声干扰是一个非常重要的问题。
本文利用matlab软件,采用频域滤波的方式,对图像进行低通和高通滤波处理。
低通滤波是要保留图像中的低频分量而除去高频分量,由于图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓;高通滤波是要保留图像中的高频分量而除去低频分量,所以高通滤波可以保留较多的边缘轮廓信息。
本文使用的低通滤波器有巴特沃斯滤波器和高斯滤波器,使用的高通滤波器有巴特沃斯滤波器、高斯滤波器、Laplacian高通滤波器以及Unmask高通滤波器。
实际使用中应该根据实际图像中包含的噪声情况灵活地选取适当的滤波算法。
1、频域低通滤波器:设计低通滤波器包括 butterworth and Gaussian (选择合适的半径,计算功率谱比),平滑测试图像test1和2。
实验原理分析根据卷积定理,两个空间函数的卷积可以通过计算两个傅立叶变换函数的乘积的逆变换得到,如果f(x, y)和h(x, y)分别代表图像和空间滤波器,F(u, v)和H(u, v)分别为响应的傅立叶变换(H(u, v)又称为传递函数),那么我们可以利用卷积定理来进行频域滤波。
在频域空间,图像的信息表现为不同频率分量的组合。
如果能让某个范围内的分量或某些频率的分量受到抑制,而让其他分量不受影响,就可以改变输出图的频率分布,达到不同的增强目的。
频域空间的增强方法的步骤:(1)将图像从图像空间转换到频域空间;(2)在频域空间对图像进行增强;(3)将增强后的图像再从频域空间转换到图像空间。
低通滤波是要保留图像中的低频分量而除去高频分量。
图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓。
理想低通滤波器具有传递函数:其中D0为制定的非负数,D(u,v)为点(u,v)到滤波器中心的距离。
7.图像增强—频域滤波 - 数字图像处理实验报告
计算机与信息工程学院验证性实验报告一、实验目的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)具有传递函数:01(,)(,)0(,)ifD u v D H u v ifD u v D ≤⎧=⎨>⎩其中,0D 为指定的非负数,(,)D u v 为(u,v )到滤波器的中心的距离。
0(,)D u v D =的点的轨迹为一个圆。
n 阶巴特沃兹低通滤波器(BLPF)(在距离原点0D 处出现截至频率)的传递函数为201(,)1[(,)]nH u v D u v D =+与理想地通滤波器不同的是,巴特沃兹率通滤波器的传递函数并不是在0D 处突然不连续。
高斯低通滤波器(GLPF)的传递函数为222),(),(σv u D ev u H =其中,σ为标准差。
相应的高通滤波器也包括:理想高通滤波器、n 阶巴特沃兹高通滤波器、高斯高通滤波器。
给定一个低通滤波器的传递函数(,)lp H u v ,通过使用如下的简单关系,可以获得相应高通滤波器的传递函数:1(,)hp lp H H u v =-利用MATLAB 实现频域滤波的程序f=imread('room.tif');F=fft2(f); %对图像进行傅立叶变换%对变换后图像进行队数变化,并对其坐标平移,使其中心化 S=fftshift(log(1+abs(F)));S=gscale(S); %将频谱图像标度在0-256的范围内 imshow(S) %显示频谱图像h=fspecial('sobel'); %产生空间‘sobel’模版 freqz2(h) %查看相应频域滤波器的图像 PQ=paddedsize(size(f)); %产生滤波时所需大小的矩阵 H=freqz2(h,PQ(1),PQ(2)); %产生频域中的‘sobel’滤波器H1=ifftshift(H); %重排数据序列,使得原点位于频率矩阵的左上角 imshow(abs(H),[]) %以图形形式显示滤波器 figure,imshow(abs(H1),[])gs=imfilter(double(f),h); %用模版h 进行空域滤波gf=dftfilt(f,H1); %用滤波器对图像进行频域滤波 figure,imshow(gs,[]) figure,imshow(gf,[])figure,imshow(abs(gs),[]) figure,imshow(abs(gf),[])f=imread('number.tif'); %读取图片PQ=paddedsize(size(f)); %产生滤波时所需大小的矩阵 D0=0.05*PQ(1); %设定高斯高通滤波器的阈值H=hpfilter('gaussian',PQ(1),PQ(2),D0); %产生高斯高通滤波器 g=dftfilt(f,H); %对图像进行滤波 figure,imshow(f) %显示原图像figure,imshow(g,[]) %显示滤波后图像三、实验步骤:1.调入并显示所需的图片;2.利用MATLAB 提供的低通滤波器实现图像信号的滤波运算,并与空间滤波进行比较。
频域滤波
一、频域滤波(低通滤波、高通滤波)(一)频域低通滤波器1.实验目的:通过低通滤波器函数模板来处理图像,牺牲图像清晰度为代价来减少干扰效果的修饰过程。
2.实验内容:用不同的低通滤波器对原始图像进行处理并比较。
3.实验原理:1)理想低通滤波器最容易想到的衰减高频成分方法是在一个称为‘截止频率’的位置截断所有的高频成分,将图像频谱中所有高于这一截止的频谱成分设为0,低于截止频率的成分设为保持不变。
能够达到这种效果的滤波器我们称之为理想低通滤波器。
其中,D0表示通带的半径。
滤波器的频率域原点在频谱图像的中心处,在以截止频率为半径的圆形区域之内的滤镜元素值全部为1,而该圆之外的滤镜元素值全部为0.理想低通滤波器的频率特性在截止频率处十分陡峭,无法用硬件实现,这也是我们称之为理想的原因,但其软件编程的模拟实现较为简单。
2)巴特沃斯低通滤波器同样的,D0表示通带的半径,n表示的是巴特沃斯滤波器的次数。
3)高斯低通滤波器D0表示通带的半径。
4.过程与结果:1)对一幅图像用理想低通滤波器结果如图:原图及其频谱图D0=60时理想低通滤波器转移函数的平面图及剖面图D0=160时理想低通滤波器转移函数的平面图及剖面图D0=60时理想低通滤波器的处理结果2) 对一幅图像用巴特沃斯低通滤波器处理,结果如图:D0=100,n=1时理想低通滤波器转移函数的平面图及剖面图D0=100,n=3时理想低通滤波器转移函数的平面图及剖面图D0=100,n=1时理想低通滤波器转移函数的频谱图及结果。
作业2_图像低通与高通滤波资料
实验报告课程名称:指导老师:成绩:实验名称:实验类型:同组学生姓名:一、实验目的和要求(必填)二、实验内容和原理(必填)三、主要仪器设备(必填)四、操作方法和实验步骤五、实验数据记录和处理六、实验结果与分析(必填)七、讨论、心得一、简述频域法实现高通和低通滤波的过程频域滤波一般都将信号变换到频域,再同所设计的窗函数项乘,然后反变换到时域。
窗函数是根据所需滤除的频率分量所决定的。
低通滤波器容许低频信号通过,但减弱频率高于截止频率的信号的通过。
对于不同滤波器而言,每个频率的信号的减弱程度不同。
高通滤波器则相反。
通过高通滤波器进行滤波后,再和原图像叠加,可以增强图像中灰度级变化较快的部分,即锐化。
二、低通滤波器图像的处理原图像:专业:姓名:学号:日期:地点:[作者][备注]2设计型无装订线P.2 / 8 [标题]实验名称:___________________姓名:____________学号:____________低通滤波截止频率:50 滤波器阶数:0.2:截止频率:40 滤波器阶数:0.2:装订线P.3 /8实验名称:___________________姓名:____________学号:____________ 截止频率:50 滤波器阶数:0.4:对比分析图:P.4 / 8 [标题]实验名称:___________________姓名:____________学号:____________ 结果分析:本程序采用巴特沃斯低通滤波器。
低通滤波器使低频分量顺利通过而有效地阻于高频分量,即可滤除图像的噪声,再经过反变换来取得平滑的图像。
图像损失了高频信息,可以实现对图像信息的一种压缩处理,但是在压缩的同时,原图像也会有一些信息丢失导致模糊。
滤波器截止频率越低,阶数越高,保留的信息越少,图像越模糊,反之同理。
三、高通滤波器图像的处理高通滤波截止频率:50 滤波器阶数:0.2:装订线P.5 / 8 实验名称:___________________姓名:____________学号:____________ 高通滤波截止频率:60 滤波器阶数:0.2:高通滤波截止频率:50 滤波器阶数:0.4:P.6 / 8 [标题]实验名称:___________________姓名:____________学号:____________截止频率:50滤波器阶数:0.2与原图像叠加(锐化):对比分析图:装订线P.7 / 8实验名称:___________________姓名:____________学号:____________结果分析:本程序采用巴特沃斯高通滤波器。
实验五 图像的频域增强
实验五 图像的频域增强一、实验目的1、了解图像滤波的基本定义及目的;2、了解频域滤波的基本原理及方法;3、掌握用MA TLAB 语言进行图像的频域滤波的方法。
二、实验原理1、低通滤波一般来说,图像的边缘和噪声都对应于傅立叶变换中的高频部分,所以能够 让低频信号畅通无阻而同时滤掉高频分量的低通滤波器能够平滑图像,去除噪声.常用的几种有,理想的低通滤波器,巴特沃斯低通滤波器,指数滤波器等.传递函数形式如下所示.理想的低通滤波器:001(,)(,)0(,)D u v D H u v D u v D ≤⎧=⎨>⎩巴特沃斯低通滤波器201(,)1[(,)/]n H u v D u v D =+ 指数滤波器 0[(,)/](,)n D u v D H u v e -=(,)D u v 表示(,)u v 到原点的距离,0D 表示截止频率点到原点的距离。
傅立叶变换的主要能量集中在频谱的中心,合理的选择截止频率对保留图象的能量至关重要。
理想的低通滤波后的图象将会出现一种“振铃”特性,造成图象不同程度的模糊,0D 越小,模糊的程度越明显。
造成这种模糊的原因在于理想的低通滤波器的传递函数在0D 处有1突变为0,经傅立叶反变换后在空域中表现为同心圆的形式。
2、高通滤波与图像中灰度发生骤变的部分与其频谱的高频分量相对应,所以采用高通滤波器衰减或抑制低频分量,是高频分量畅通并对图象进行锐化处理。
常用的高通滤波器有理想的高通滤波器、巴特沃斯高滤波器,指数高通滤波等。
传递函数如下。
理的高通滤波器:001(,)(,)0(,)D u v D H u v D u v D ≥⎧=⎨<⎩巴特沃斯低通滤波器201(,)1[/(,)]nH u v D D u v =+指数滤波器0[/(,)](,)nD D u v H u v e -=由于经过高通滤波后图像丢失了许多低频信息,所以图像平滑区基本会消失。
为此,需要采用高频加强滤波来弥补。
实验五--图像频域变换
实验五图像频域变换一、实验目的1.了解傅里叶变换在图像处理中的应用2.利用Matlab语言编程实现图像的频域变换。
二、实验内容1. 打开并显示一幅图像,对其进行Fourier变换,观察其频谱图像。
2. 用两种方法将图像的频域中心移动到图像中心,然后观察其Fourier变换后的频谱图像。
(见Fourier变换的性质:f(x,y) (-1)x+y F(u-N/2,v-N/2))对图像的Fourier变换频谱进行滤波,如:将频谱超过某个给定的值(均值或2/3均值)的变换值变为0,然后再求其Fourier逆变换,比较所得图像与原图像的差别。
3.对图像进行离散余弦变换,并观察其变换域图像。
要求:用Matlab语言进行编程实现上述功能,同时也应该熟悉用Matlab中现有的函数来实现。
傅里叶变换A)傅里叶变换基本操作I = imread(你的图像);imshow(I);title('源图像');J = fft2(I);figure, imshow(J);title('傅里叶变换');%频移JSh = fftshift(J);figure, imshow(JSh);title('傅里叶变换频移');%直接傅里叶反变换Ji = ifft2(J);figure, imshow(Ji/256);title('直接傅里叶反变换');%幅度JA = abs(J);iJA = ifft2(JA);figure, imshow(iJA/256);title('幅度傅里叶反变换');%相位JP = angle(J);iJP = ifft2(JP);figure, imshow(abs(iJP)*100);title('相位傅里叶反变换');B)利用MATLAB软件实现数字图像傅里叶变换的程序I=imread(‘原图像名.gif’); %读入原图像文件imshow(I); %显示原图像fftI=fft2(I); %二维离散傅里叶变换sfftI=fftshift(fftI); %直流分量移到频谱中心RR=real(sfftI); %取傅里叶变换的实部II=imag(sfftI); %取傅里叶变换的虚部A=sqrt(RR.^2+II.^2);%计算频谱幅值A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;%归一化figure; %设定窗口imshow(A); %显示原图像的频谱C)绘制一个二值图像矩阵,并将其傅里叶函数可视化。
频域滤波器设计(数字图像处理实验报告)
数字图像处理作业——频域滤波器设计摘要在图像处理的过程中,消除图像的噪声干扰是一个非常重要的问题。
本文利用matlab软件,采用频域滤波的方式,对图像进行低通和高通滤波处理。
低通滤波是要保留图像中的低频分量而除去高频分量,由于图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓;高通滤波是要保留图像中的高频分量而除去低频分量,所以高通滤波可以保留较多的边缘轮廓信息。
本文使用的低通滤波器有巴特沃斯滤波器和高斯滤波器,使用的高通滤波器有巴特沃斯滤波器、高斯滤波器、Laplacian高通滤波器以及Unmask高通滤波器。
实际应用中应该根据实际图像中包含的噪声情况灵活地选取适当的滤波算法。
1、频域低通滤波器:设计低通滤波器包括 butterworth and Gaussian (选择合适的半径,计算功率谱比),平滑测试图像test1和2。
实验原理分析根据卷积定理,两个空间函数的卷积可以通过计算两个傅立叶变换函数的乘积的逆变换得到,如果f(x, y)和h(x, y)分别代表图像与空间滤波器,F(u, v)和H(u, v)分别为响应的傅立叶变换(H(u, v)又称为传递函数),那么我们可以利用卷积定理来进行频域滤波。
在频域空间,图像的信息表现为不同频率分量的组合。
如果能让某个范围内的分量或某些频率的分量受到抑制,而让其他分量不受影响,就可以改变输出图的频率分布,达到不同的增强目的。
频域空间的增强方法的步骤:(1)将图像从图像空间转换到频域空间;(2)在频域空间对图像进行增强;(3)将增强后的图像再从频域空间转换到图像空间。
低通滤波是要保留图像中的低频分量而除去高频分量。
图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓。
理想低通滤波器具有传递函数:其中D0为制定的非负数,D(u,v)为点(u,v)到滤波器中心的距离。
基于的matlab对图像的进行高通、低通、带通滤波
数字图像处理三级项目—咼通、低通、带通滤波命摘要在图像处理的过程中,消除图像的噪声干扰是一个非常重要的问题。
利用matlab软件,采用频域滤波的方式,对图像进行低通和高通滤波处理。
低通滤波是要保留图像中的低频分量而除去高频分量,由于图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓;高通滤波是要保留图像中的高频分量而除去低频分量,所以高通滤波可以保留较多的边缘轮廓信息。
低通滤波器有巴特沃斯滤波器和高斯滤波器等等,本次设计使用的低通滤波器为****。
高通滤波器有巴特沃斯滤波器、高斯滤波器、Laplacian高通滤波器以及Unmask高通滤波器等等,本次设计使用巴特沃斯高通滤波器。
1、频域低通滤波器:设计低通滤波器包括butterworth and Gaussian ( 选择合适的半径,计算功率谱比),平滑测试图像test1和2。
实验原理分析根据卷积定理,两个空间函数的卷积可以通过计算两个傅立叶变换函数的乘积的逆变换得到,如果f(x, y)和h(x, y)分别代表图像与空间滤波器,F(u, v)和H(u, v)分别为响应的傅立叶变换(H(u, v)又称为传递函数),那么我们可以利用卷积定理来进行频域滤波。
在频域空间,图像的信息表现为不同频率分量的组合。
如果能让某个范围内的分量或某些频率的分量受到抑制,而让其他分量不受影响,就可以改变输出图的频率分布,达到不同的增强目的。
频域空间的增强方法的步骤:(1) 将图像从图像空间转换到频域空间;(2) 在频域空间对图像进行增强;(3) 将增强后的图像再从频域空间转换到图像空间低通滤波是要保留图像中的低频分量而除去高频分量。
图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓。
理想低通滤波器具有传递函数:其中DO为制定的非负数,D(u,v)为点(u,v)到滤波器中心的距离P g (u,v) P f (u,v)其中,P f (u,v )为滤波前图像的功率谱,P g (u, V )为滤波后图像的功率谱。
数字图像处理技术-图像增强--空域、频域滤波
实验五图像增强--空域、频域滤波课程名称:数字图像处理技术实验日期:2015-11-03 成绩:班级:姓名:学号:一、实验目的1.了解图像空域滤波、频域滤波的基本操作;2.掌握噪声模拟和图像滤波函数的使用方法3. 实现彩色图像的增强。
二、实验内容1. (基础题)制作自己的GUI用户界面,实现图像在空域中的均值滤波、中值滤波、锐化滤波;(提高题)定义自己的过滤器实现锐化滤波。
2. (基础题)在GUI中,实现图像的频域滤波:低通滤波、高通滤波。
3. (基础题)在GUI中,实现彩色图像增强:伪彩色增强、假彩色增强、真彩色增强。
三、实验代码function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)clear;figureA=imread('1.jpg');B=rgb2gray(A);h1=ones(7,7)/49;B2=imfilter(B,h1);h2=ones(9,9)/81;B3=imfilter(B,h2);subplot(2,2,1);imshow(B);title('灰度图像');subplot(2,2,3);imshow(B2);title('7*7均值滤波');subplot(2,2,4);imshow(B3);title('9*9均值滤波');% --- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)clear;figureA=imread('1.jpg');B=rgb2gray(A);B2=medfilt2(B,[5 5]);B3=medfilt2(B,[9 9]);subplot(2,2,1);imshow(B);title('灰度图像');subplot(2,2,3);imshow(B2);title('5*5中值滤波');subplot(2,2,4);imshow(B3);title('9*9中值滤波');% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clear;figureA=imread('1.jpg');B=rgb2gray(A);h1=[1 2 1;0 0 0;-1 -2 -1];B2=imfilter(B,h1);h2=[1 0 -1;2 0 -2;1 0 -1];B3=imfilter(B,h2);subplot(2,2,1);imshow(B);title('灰度图像');subplot(2,2,3);imshow(B2);title('水平锐化');subplot(2,2,4);imshow(B3);title('竖直锐化');% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clear;figureA=imread('1.jpg');f=rgb2gray(A);subplot(2,2,1);imshow(f);f=im2double(f);F=fftshift(fft2(f));[M,N]=size(F);n = 30;D0 = 40;u0=floor(M/2);v0=floor(N/2);for u=1:Mfor v=1:ND=sqrt((u-u0)^2+(v-v0)^2);H=1/(1+(D/D0)^(2*n));G(u,v)=H*F(u,v);endendg=ifft2(ifftshift(G));g=im2uint8(real(g));subplot(2,2,4);imshow(g);% --- Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clear;figureA=imread('1.jpg');f=rgb2gray(A);subplot(2,2,1);imshow(f);f=im2double(f);F=fftshift(fft2(f));[M,N]=size(F);n = 30;D0 = 40;u0=floor(M/2);v0=floor(N/2);for u=1:Mfor v=1:ND=sqrt((u-u0)^2+(v-v0)^2);H=1/(1+(D0/D)^(2*n));G(u,v)=H*F(u,v);endendg=ifft2(ifftshift(G));g=im2uint8(real(g));subplot(2,2,4);imshow(g);% --- Executes on button press in pushbutton6.function pushbutton6_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clear;figureA=imread('1.jpg');B=rgb2gray(A);subplot(1,2,1);imshow(B);title('灰度图像');Y=floor(B/64);[M,N]=size(Y);for i=1:Mfor j=1:Nswitch Y(i,j)case 0Y1(i,j,1:3)=[0 0 255];case 1Y1(i,j,1:3)=[200 0 200];case 2Y1(i,j,1:3)=[255 150 0];case 3Y1(i,j,1:3)=[255 255 0];otherwiseY1(i,j,1:3)=[255 255 255];endendendsubplot(1,2,2);imshow(Y1);% --- Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, eventdata, handles)% hObject handle to pushbutton7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clear;figureA=imread('1.jpg');f=rgb2gray(A);subplot(1,2,1);imshow(f);title('灰度图像');[M,N]=size(f);L=255;f=double(f);f1=floor(f/64);R=f1;G=f1;B=f1;for i=1:Mfor j=1:Nswitch f1(i,j)case 0R(i,j)=0;G(i,j)=4*f(i,j);B(i,j)=L;case 1R(i,j)=0;G(i,j)=L;B(i,j)=-4*f(i,j)+2*L;case 2R(i,j)=4*f(i,j)-2*L;G(i,j)=L;B(i,j)=0;case 3R(i,j)=L;G(i,j)=-4*f(i,j)+4*L;B(i,j)=0;endendendg(:,:,1)=R;g(:,:,2)=G;g(:,:,3)=B;g=uint8(g);subplot(1,2,2);imshow(g);% --- Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbutton8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clear;figureRGB=imread('1.jpg');RGB = im2double(RGB);R = RGB(:, :, 1);G = RGB(:, :, 2);B = RGB(:, :, 3);subplot(1,2,1),imshow(RGB)title('原始图像');c=R.*1.26d=G.*1.03e=B.*1.15enhance=cat(3, c, d, e);subplot(1,2,2),imshow(enhance)title('RGB手动增强的图像')四、实验结果截图五、实验体会经过很长时间学会应用这些东西。
R理想低通滤波及高通滤波实现信号增强实验报告
R理想低通滤波及高通滤波实现信号增强
实验报告
概述
本实验旨在通过R理想低通滤波和高通滤波技术进行信号增强,提高信号的质量和清晰度。
实验步骤
1. 准备实验所需的信号源和滤波器。
2. 将信号源接入滤波器,并调整滤波器的参数以实现滤波效果。
3. 进行低通滤波实验:通过滤波器将高频部分的信号削弱,保
留低频部分的信号。
4. 进行高通滤波实验:通过滤波器将低频部分的信号削弱,保
留高频部分的信号。
5. 对滤波后的信号进行观察和比较,评估滤波效果。
实验结果
经过R理想低通滤波和高通滤波处理后,信号的质量和清晰度
得到了提高。
在低通滤波实验中,高频噪声被滤除,信号变得更加
平滑和稳定。
在高通滤波实验中,低频噪声被滤除,高频信号更加明显和突出。
结论
R理想低通滤波和高通滤波是常用的信号处理技术,能有效提高信号的质量和清晰度。
通过滤除不需要的频率成分,滤波器能够增强感兴趣的频率成分,使信号更加准确和可靠。
延伸实验
1. 尝试其他滤波器类型(如巴特沃斯滤波器、切比雪夫滤波器等)进行信号增强实验。
2. 探索不同频率范围的信号进行滤波实验,观察滤波效果的差异。
参考文献
[1] 信号处理与滤波器设计,xxx,xxx出版社,20xx年。
[2] 数字信号处理原理及应用,xxx,xxx出版社,20xx年。
实验5 图像频域增强
试验5 图像频域增强一.试验目的通过本实验使学生掌握使用MATLAB的二维傅里叶变换进行频域增强的方法。
二.试验内容(一)dftuv函数:function [U,V]=dftuv(M,N)u=0:(M-1);v=0:(N-1);idx=find(u>M/2);u(idx)=u(idx)-M;idy=find(v>N/2);u(idy)=v(idy)-N;[V,U]=meshgrid(v,u);低通滤波器函数:function [H,D]=lpfilter(type,M,N,D0,n)[U,V]=dftuv(M,N);D=sqrt(U.^2+V.^2);switch typecase'ideal'H=double(D<=D0);case'btw'if nargin==4n=1;endH=1./(1+(D./D0).^(2*n));case'gaussian'H=exp(-(D.^2)./(2*(D0^2)));otherwiseerror('Unknown filter type')end教材程序:%====================¶ÁÈëÔ-ͼÏñ====================================== lena=imread('d:\test_images\lena_gray_1.tif','tif');figure(1);subplot(1,2,1);imshow(lena);title('origin');size(lena);%===ÁãÑÓÍØ===lena_B=padarray(lena,[512,512],'post');%0 padd fp 2subplot(1,2,2);imshow(lena_B);title('lena_B');%====°áÒÆ====for i=1:1024for j=1:1024lena_B_2(i,j)=(-1).^(i+j).*lena_B(i,j);endendfigure(2);subplot(1,2,1);imshow(lena_B_2);title('banyi');S=abs(fft2(lena_B));%δ°áÒƵÄƵÆ×Fc_lena=fftshift(fft2(lena_B));subplot(1,2,2);imshow(abs(Fc_lena),[]);title('Spectum lena');%4[H1,D1]=lpfilter('gaussian',1024,1024,50,1);F=fft2(lena_B,size(H1,1),size(H1,2));G=real(ifft2(H1.*F));Gf=G(1:size(lena_B,1),1:size(lena_B,2));figure(3);subplot(1,2,1);imshow(uint8(Gf));title('δ²Ã¼ôµÄͼÏñ'); Gf1=G(1:size(lena,1),1:size(lena,2));subplot(1,2,2);imshow(uint8(Gf1));;title('»Ö¸´µÄͼÏñ');origin lenaBbanyi Spectum lena未裁剪的图像恢复的图像(二)频域低通滤波器(白条)f1=zeros(64,64);f1(12:52,24:40)=255;subplot(1,3,1);imshow(f1);title('origin');F1=padarray(f1,[64,64],'post');%==理想滤波器=======H=lpfilter('ideal',128,128,60);F=fft2(F1,size(H,1),size(H,2));G=real(ifft2(H.*F));GF=G(1:size(f1,1),1:size(f1,2));subplot(1,3,2);imshow(GF);title('ideallp');%==巴特沃斯滤波器===========[H1,D1]=lpfilter('btw',128,128,70);F1=fft2(F1,size(H1,1),size(H1,2));G1=real(ifft2(H1.*F1));GF1=G1(1:size(f1,1),1:size(f1,2));subplot(1,3,3);imshow(GF1);title('btwlp');origin ideallp btwlp频域低通滤波器(lena)lena_gray=imread('lena_gray.tif','tif');lena_gauss=imnoise(lena_gray,'gauss',0.03);subplot(1,3,1);imshow(lena_gauss);title('origin');LENA=padarray(lena_gauss,[512,512],'post');%==理想滤波器=========H=lpfilter('ideal',1024,1024,80);F=fft2(LENA,size(H,1),size(H,2));G=real(ifft2(H.*F));GF=G(1:size(lena_gauss,1),1:size(lena_gauss,2));subplot(1,3,2);imshow(uint8(GF));title('ideallp');%==巴特沃斯滤波器=======H1=lpfilter('btw',1024,1024,100);F1=fft2(LENA,size(H1,1),size(H1,2));G1=real(ifft2(H1.*F1));GF1=G1(1:size(lena_gauss,1),1:size(lena_gauss,2));subplot(1,3,3);imshow(uint8(GF1));title('btwlp');origin ideallp btwlp(3)低通滤波器函数:function [H,D]=hpfilter(type,M,N,D0,n)[U,V]=dftuv(M,N);D=sqrt(U.^2+V.^2);switch typecase'ideal'H=double(D>=D0);case'btw'if nargin==4n=1;endH=1-1./(1+(D./D0).^(2*n));case'gaussian'H=1-exp(-(D.^2)./(2*(D0^2)));otherwiseerror('Unknow filter type')end频域低通滤波器(白条)f1=zeros(64,64);f1(12:52,24:40)=255;subplot(1,3,1);imshow(f1);title('origin');F1=padarray(f1,[64,64],'post');%==理想滤波器=========H=hpfilter('ideal',128,128,50);F=fft2(F1,size(H,1),size(H,2));G=real(ifft2(H.*F));GF=G(1:size(f1,1),1:size(f1,2));subplot(1,3,2);imshow(GF);title('ideallp'); %==巴特沃斯滤波器=============[H0,D]=hpfilter('btw',128,128,50);F0=fft2(F1,size(H0,1),size(H0,2));G0=real(ifft2(H0.*F0));GF0=G0(1:size(f1,1),1:size(f1,2));subplot(1,3,3);imshow(GF0);title('btwlp');origin ideallp btwlp频域低通滤波器(lena)lena_gray=imread('lena_gray.tif','tif');lena_gauss=imnoise(lena_gray,'gauss',0.02);subplot(1,3,1);imshow(lena_gauss);title('origin');LENA=padarray(lena_gauss,[512,512],'post');%==H=hpfilter('ideal',1024,1024,150);F=fft2(LENA,size(H,1),size(H,2));G=real(ifft2(H.*F));GF=G(1:size(lena_gauss,1),1:size(lena_gauss,2));subplot(1,3,2);imshow(uint8(GF));title('ideallp');%==H0=hpfilter('btw',1024,1024,50);F0=fft2(LENA,size(H0,1),size(H0,2));G0=real(ifft2(H0.*F0));GF0=G0(1:size(lena_gauss,1),1:size(lena_gauss,2));subplot(1,3,3);imshow(uint8(GF0));title('btwlp');origin ideallp btwlp三.思考理想低通滤波器会产生振铃现象,巴特沃斯不会,但高阶的滤波器会产生振铃;低通滤波器会保留大部分信息,即低频成分,而高通滤波器会滤掉低频成分,剩下图像的大体形状。
数字图像处理频域滤波与图像变换
实验四频域滤波与图像变换编码实验目的通过实验了解频域高频和低频滤波器对图像处理的效果,了解离散余弦变换在图像变换编码中的作用。
1.载入图像’cameraman.tif’,加入椒盐噪声,编程设计一阶巴特沃斯低通滤波器,改变滤波器的参数,观察并比较滤波效果。
close all;clear all;I1=imread('pout.tif');subplot(2,3,1),imshow(I1);title('原始图像')I2=imnoise(I1,'salt & pepper');subplot(2,3,2)imshow(I2);title('加噪图像');f=double(I2);g=fft2(f);g=fftshift(g);[N1,N2]=size(g);n=1;d0=5;n1=fix(N1/2);n2=fix(N2/2);for i=1:N1for j=1:N2d=sqrt((i-n1)^2+(j-n2)^2);h=1/(1+0.414*(d/d0)^(2*n));result(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));subplot(2,3,3),imshow(X3);title('Butterworth 低通滤波器,d0=5');d0=11;n1=fix(N1/2);n2=fix(N2/2);for i=1:N1for j=1:N2d=sqrt((i-n1)^2+(j-n2)^2);h=1/(1+0.414*(d/d0)^(2*n));result(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));subplot(2,3,4),imshow(X3);title('d0=11');d0=25n1=fix(N1/2);n2=fix(N2/2);for i=1:N1for j=1:N2d=sqrt((i-n1)^2+(j-n2)^2);h=1/(1+0.414*(d/d0)^(2*n));result(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));subplot(2,3,5),imshow(X3);title('d0=25');d0=50n1=fix(N1/2);n2=fix(N2/2);for i=1:N1for j=1:N2d=sqrt((i-n1)^2+(j-n2)^2);h=1/(1+0.414*(d/d0)^(2*n));result(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));subplot(2,3,6),imshow(X3);title('d0=50');由图可知,由于对噪声模型的估计不准确,使用巴特沃斯滤波器在平滑了噪声的同时,也使图像模糊了,随着截断频率的增加,图像的模糊程度减小,滤除噪声的效果也越来越差。
图像处理分析-FFT
cvReleaseMat( &src_lm);cvReleaseMat (& sum_src);cvReleaseMat (& sum_dst);return fourier;}〃DFT反变换Ipllmage *IDFT(lpllmage * fourier){IplImage* dst = cvCreatelmage(cvGetSize(fourier),IPL_DEPTH_8U,1);int dft_H, dft_W;dft_H = fourier->height;dft_W = fourier->width;CvMat *dst_Re = cvCreateMat(dft_H,dft_W, CV_64FC1); // double Re, Im;CvMat *dst_lm = cvCreateMat(dft_H,dft_W, CV_64FC1); //Imagin ary partCvMat *sum_dst =cvCreateMat(dft_H,dft_W, CV_64FC2); //2 chann els (dst_Re, dst_lm) CvMat *sum_src = cvCreateMat(dft_H,dft_W, CV_64FC2 );cvCon vert(fourier, sum_src);cvDFT(sum_src,sum_dst,CV_DXT_INV_SCALE,O);cvSplit(sum_dst,dst_Re,dst_lm,O,O);cvCo nvert(dst_Re, dst);cvReleaseMat( &dst_Re);cvReleaseMat (& dst_lm);cvReleaseMat (& sum_src);cvReleaseMat (& sum_dst);return dst;}//归一化,将灰度映射到0~255之间,并将能量最高的四角移到中心,生成图片频域能量图void BuildDFTImage(IplImage *fourier, Ipllmage *dst){Ipllmage *image_Re = 0, *image_lm = 0;image_Re = cvCreatelmage(cvGetSize(fourier), IPL_DEPTH_64F, 1);image_lm = cvCreatelmage(cvGetSize(fourier), IPL_DEPTH_64F, 1); //Imagi nary part cvSplit(fourier, image_Re, image_lm, 0, 0 );// Compute the magn itude of the spectrum Mag = sqrt(Re A2 + Im A2)cvPow( image_Re, image_Re, 2.0);cvPow( image_lm, image_lm, 2.0);cvAdd( image_Re, image_lm, image_Re);cvPow( image_Re, image_Re, 0.5 );cvReleaseImage(&im age」m);cvAddS(image_Re, cvScalar(1.0), image_Re); // 1 + MagcvLog(image_Re, image_Re ); // log(1 + Mag)〃重新安排傅里叶图像中心// Rearrange the quadrants of Fourier image so that the origin is at// the image cen terdouble minVal = 0, maxVal = 0;H_mat = cvCreateMat(fourier->height,fourier->width, CV_64FC2);for(i = 0; i < height; i++){for(j = 0; j < width; j++){ if(i > y &&j > x){ state = 3;}else if(i > y){state = 1;}else if(j > x){state = 2;}else{state = 0;} switch(state){ case 0:tempD = (double)sqrt(1.0*i * i + j * j);break;case 1:tempD = (double)sqrt(1.0*(height - i) * (height - i) + j * j);break;case 2:tempD = (double)sqrt(1.0*i * i + (width - j) * (width - j));break;case 3:tempD = (double)sqrt(1.0*(height - i) * (height - i) + (width - j) * (width - j));break; default:break;} switch(FLAG){case IDEAL_LOW: if(tempD <= D0){((double*)(H_mat->data.ptr + H_mat->step * i))[j * 2] = 1.0; ((double*)(H_mat->data.ptr+ H_mat->step * i))[j * 2 + 1] = 0.0;}else{((double*)(H_mat->data.ptr + H_mat->step * i))[j * 2] = 0.0; ((double*)(H_mat->data.ptr+ H_mat->step * i))[j * 2 + 1] = 0.0;} break;case IDEAL_HIGH: if(tempD <= D0){ ((double*)(H_mat->data.ptr + H_mat->step * i))[j * 2] = 0.0;((double*)(H_mat->data.ptr + H_mat->step * i))[j * 2 + 1] = 0.0;}else{((double*)(H_mat->data.ptr + H_mat->step * i))[j * 2] = 1.0; ((double*)(H_mat->data.ptr+ H_mat->step * i))[j * 2 + 1] = 0.0;} break;case BW_LOW:tempD = 1 / (1 + pow(tempD / D0, 2 * n));((double*)(H_mat->data.ptr + H_mat->step * i))[j * 2] = tempD; ((double*)(H_mat->data.ptr +H_mat->step * i))[j * 2 + 1] = 0.0; break;问题:DFT 变换后图像全为黑色。
数字图像处理-频域滤波-高通低通滤波
数字图像处理-频域滤波-⾼通低通滤波频域滤波频域滤波是在频率域对图像做处理的⼀种⽅法。
步骤如下:滤波器⼤⼩和频谱⼤⼩相同,相乘即可得到新的频谱。
滤波后结果显⽰,低通滤波去掉了⾼频信息,即细节信息,留下的低频信息代表了概貌。
常⽤的例⼦,⽐如美图秀秀的磨⽪,去掉了脸部细节信息(痘坑,痘印,暗斑等)。
⾼通滤波则相反。
⾼通/低通滤波1.理想的⾼/低通滤波顾名思义,⾼通滤波器为:让⾼频信息通过,过滤低频信息;低通滤波相反。
理想的低通滤波器模板为:其中,D0表⽰通带半径,D(u,v)是到频谱中⼼的距离(欧式距离),计算公式如下:M和N表⽰频谱图像的⼤⼩,(M/2,N/2)即为频谱中⼼理想的⾼通滤波器与此相反,1减去低通滤波模板即可。
部分代码:# 定义函数,显⽰滤波器模板def showTemplate(template):temp = np.uint8(template*255)cv2.imshow('Template', temp)return# 定义函数,显⽰滤波函数def showFunction(template):row, col = template.shaperow = np.uint16(row/2)col = np.uint16(col/2)y = template[row, col:]x = np.arange(len(y))plt.plot(x, y, 'b-', linewidth=2)plt.axis([0, len(x), -0.2, 1.2])plt.show()return# 定义函数,理想的低通/⾼通滤波模板def Ideal(src, d0, ftype):template = np.zeros(src.shape, dtype=np.float32) # 构建滤波器 r, c = src.shapefor i in range(r):for j in range(c):distance = np.sqrt((i - r/2)**2 + (j - c/2)**2)if distance < d0:template[i, j] = 1else:template[i, j] = 0if ftype == 'high':template = 1 - templatereturn templateIdeal2. Butterworth⾼/低通滤波Butterworth低通滤波器函数为:从函数图上看,更圆滑,⽤幂系数n可以改变滤波器的形状。
《数字图象处理》实验指导书
《数字图象处理》实验和大作业指导书计算机科学与工程学院目录目录 (1)实验一:数字图像读取及色彩、亮度、对比度变化 (2)实验二:数字图像变换与伽马校正 (3)实验三:数字图像的噪声去除 (4)实验四:图像的空间域锐化(拉普拉斯算子) (5)实验五:频率域低通和高通滤波 (6)实验六:数字图像复原 (7)实验七:人脸皮肤颜色分层 (8)大作业 (9)实验一:数字图像读取及色彩、亮度、对比度变化一、实验目的:了解数字图像的存储格式,并学会对图像的某些视觉特征作简单处理。
二、实验要求:1.从最常用的“.BMP”图像格式中读取图像数据;2.对数字图像的表示方式(如RGB、YUV)及各种表示方式之间的转换有初步了解;3.根据输入参数改变数字图像的色彩、亮度、对比度。
三、实验步骤:1.根据BMP格式,将图像内容读入内存数组;2.通过访问数字图像RGB三个通道的对应矩阵,改变数字图像的色彩;3.将数字图像的RGB表示转换为YUV表示;Y=0.30R+0.59G+0.11BU=0.70R-0.59G-0.11BV=-0.30R-0.59G+0.89B4.通过访问Y(亮度)通道,改变数字图像的亮度;5.通过Y(亮度)通道作灰度的线性变换,改变数字图像的对比度。
四、实验图像:实验二:数字图像变换与伽马校正一、实验目的:了解数字图像的灰度反变换和γ(0.4,0.6,0.8)校正。
二、实验要求:1. 对图像进行灰度变换。
2. 对图像进行γ校正。
三、实验步骤:1. 将BMP图像内容读入内存数组。
2. 调整图像的灰度,对图像进行灰度变换(反变换)。
3. 对图像进行γ较正,分别取值为0.4,0.6,0.8.四、实验图像:灰度变换γ较正实验三:数字图像的噪声去除一、实验目的:学会用滤波器去除图像中的噪声。
二、实验要求:1.用均值滤波器去除图像中的噪声; 2.用中值滤波器去除图像中的噪声; 3.比较两种方法的处理结果三、实验步骤:1.根据BMP 格式,将图像内容读入内存数组; 2.用均值滤波器去除图像中的噪声;3.用中值滤波器去除图像中的噪声;将两种处理方法的结果与原图比较; 4.注意两种处理方法对边缘的影响。
实验五图像高通和低通滤波处理
实验五、图像高通和低通滤波处理实验内容:1.对数字图象进行低通滤波处理2.对数字图象进行高通滤波处理3,比较和分析所得到的结果。
要求:1、实验之前要预习2、独立完成程序的编写3、写出实验报告4、实验每组1人实验设备:每组计算机一台实验原理:原理●频域技术的基础是卷积理论,设函数f(x,y)与线性位不变算子h(x,y)的卷积结果是g(x,y),即g(x,y)=h(x,y)*f(x,y),那么根据卷积定理在频域有:●G(u,v)=H(u,v)F(u,v)●取逆变换为:●g(x,y)=F-1[H(u,v)F(u,v)]在频域中进行增强是相当直观的,其主要步骤:(1)计算需增强图的傅立叶变换;(2)计算其与1个(根据需要设计的)转移函数相乘;(3)再将结果傅立叶反变换以得到增强的图。
●常用频率增强方法有:●(1)低通滤波;(2)高通滤波;(3)带通滤波和带阻滤波;(4)同态滤波。
以低通滤波为例,做图像平滑的频域增强处理1.图像平滑的概念图像平滑是数字图像处理的一个重要内容。
我们所涉及的图像中,相邻像素的灰度之间大多具有很高的相关性,换句话说,一幅图像中大多数像素的灰度与其相邻像素的灰度差别不大。
因为这种灰度相关性的存在,一般图像的能量主要集中在低频区域中,只有图像的细节部分的能量才处于高频区域中。
但因为在图像的数字化和传输过程中经常有噪声和假轮廓出现,这部分信息也集中于高频区域内。
图像平滑的主要目的就是去除或衰减图像上的噪声和假轮廓,即衰减高频分量,增强低频分量,或称低通滤波。
由前面的介绍可以得知,图像平滑处理在消除或减弱图像噪声和假轮廓的同时,对图像细节也有一定的衰减作用。
因此,图像平滑的直观效果是图像噪声和假轮廓得以去除或衰减,但同时图像将变得比处理前模糊了,模糊的程度要看对高频成份的衰减程度而定。
就同一种平滑方法而言,去除或衰减噪声和假轮廓的效果越好,图像就越模糊,因而图像细节损失越多。
因此,在对图像作平滑处理的过程中,要二者兼顾。
数字图像的低通滤波和高通滤波
实验5 数字图像的低通滤波实习目的:了解低通滤波的操作过程及其对图像产生的效果。
低通滤波实习步骤:1 用2%的饱和度将m901w图像进行带饱和的线性拉伸到test1;2 在test1上人为地画2条黑线;3 将test1用3X3模板mean平滑到test2;4 将test1用5X5模板mean平滑到test3;5 将test1用3X3模板加权mean平滑到121232121外面乘以1/156 将test1用5X5模板加权mean123212711723111711327117212321前面实际上要乘以1217 将test1用3X3模板median平滑到test6;8 将test1用5X5模板median平滑到test7;9 将test1用3X3模板mode平滑到test8;10将test1用5X5模板mode平滑到test9;11 分析上述平滑带来的图像变化。
思考题比较相同或不同低通虑波方法采用同一或不同大小模板滤波效果的差异,并解释其成因。
实验6 数字图像的高通滤波实习目的:了解高通滤波的操作过程及其对图像产生的效果。
高通滤波实习步骤:1 将test1用high pass模板进行高通滤波到test10;2 将test1用edge enhancement模板进行边缘增强到test12;3 检验test12 = test1 + test10;[test11]4 将test1用edge detection 模板进行边缘提取到test13;5 将test1进行横向高通滤波(模板有正有负)到test14;-1-1-1000111 6 将test1进行纵向高通滤波到test15-101-01-0117 将test14和test15进行取绝对值到test16和test17;8 将test16和test17进行灰度级压缩到test18和test19;9 将test18和test19与test1叠加成test20。
图像的频域处理(低通、高通)
一.实验目的:理解图像傅立叶变换,掌握二维FFT函数的调用方法。
理解图像频谱的物理意义。
二.实验内容及步骤:1. 在菜单中添加一选项,然后建立消息映射函数,在函数中调用一维傅立叶变换函数,实现二维傅立叶变换,并计算图像的频谱。
2. 在菜单中添加一选项实现低通滤波。
3. 在菜单中添加一选项实现高通滤波。
四. 实验结果及代码:DFFT的正反变化巴特沃斯低通理想高通程序代码:void CYdcView::OnDfft(){// TODO: Add your command handler code herelong w,h;long i,j;w=m_DibHead->biWidth;h=m_DibHead->biHeight;int *lpsrc=new int [w*h];int flag=0;for(i=0;i<h;i++)for(j=0;j<w;j++){if((i+j)%2==0)flag=1;elseflag=-1;*(lpsrc+i*w+j)=*(m_Image+i*w+j)*flag;}zjbh bh;complex<double> *FD=new complex<double>[w*h];complex<double> *TD=new complex<double>[w*h];//反变换bh.DFFT(FD,lpsrc,w,h);// bh.move(FD,w,h);bh.DIFFT(TD,FD,w,h);//反变换memcpy(FD,TD,sizeof(complex<double>)*w*h);//反变换for(i=0;i<h;i++)for(j=0;j<w;j++){*(m_Image+i*w+j)=(unsigned char)(sqrt(FD[i*w+j].real()*FD[i*w+j].real()+ FD[i*w+j].imag()*FD[i*w+j].imag())/200);}Invalidate();delete []FD;delete []lpsrc;}void CYdcView::OnDfft2(){// TODO: Add your command handler code herelong w,h;long i,j;w=m_DibHead->biWidth;h=m_DibHead->biHeight;int *lpsrc=new int [w*h];//int flag=0;for(i=0;i<h;i++)for(j=0;j<w;j++){/*if((i+j)%2==0)flag=1;elseflag=-1;*/*(lpsrc+i*w+j)=*(m_Image+i*w+j);}zjbh bh;complex<double> *FD=new complex<double>[w*h];// complex<double> *TD=new complex<double>[w*h];//反变换bh.DFFT(FD,lpsrc,w,h);bh.move(FD,w,h);// bh.DIFFT(TD,FD,w,h);//反变换// memcpy(FD,TD,sizeof(complex<double>)*w*h);//反变换for(i=0;i<h;i++)for(j=0;j<w;j++){*(m_Image+i*w+j)=(unsigned char)(sqrt(FD[i*w+j].real()*FD[i*w+j].real()+ FD[i*w+j].imag()*FD[i*w+j].imag())/250);}Invalidate();delete []FD;delete []lpsrc;}void CYdcView::OnBlpf(){// TODO: Add your command handler code herelong w,h,i,j;w=m_DibHead->biWidth;h=m_DibHead->biHeight;complex<double> *FD=new complex<double>[w*h];complex<double> *TD=new complex<double>[w*h];int *lpsrc=new int [w*h];for(i=0;i<h;i++)for(j=0;j<w;j++){lpsrc[i*w+j]=*(m_Image+i*w+j);}zjbh bh;bh.DFFT(FD,lpsrc,w,h);bh.move(FD,w,h);int d0=20;for(i=0;i<h;i++)for(j=0;j<w;j++){//if((i-h/2)*(i-h/2)+(j-w/2)*(j-w/2)>d0*d0)//理想低通// FD[i*w+j]=0;//理想低通if((i!=h/2)&&(j!=w/2))FD[i*w+j]*=1.0/(1+(sqrt((i-h/2)*(i-h/2)+(j-w/2)*(j-w/2)))*(d0/sqrt((i-h/2)*(i-h/2)+(j-w/2)*(j-w/2))/d0));}bh.move(FD,w,h);bh.DIFFT(TD,FD,w,h);for(i=0;i<h;i++)for(j=0;j<w;j++){*(m_Image+i*w+j)=unsigned char(abs(TD[i*w+j].real()));}Invalidate();}void CYdcView::OnIhpf(){// TODO: Add your command handler code herelong w,h,i,j;w=m_DibHead->biWidth;h=m_DibHead->biHeight;complex<double> *FD=new complex<double>[w*h];complex<double> *TD=new complex<double>[w*h];int *lpsrc=new int [w*h];for(i=0;i<h;i++)for(j=0;j<w;j++){lpsrc[i*w+j]=*(m_Image+i*w+j);}zjbh bh;bh.DFFT(FD,lpsrc,w,h);bh.move(FD,w,h);int d0=50;for(i=0;i<h;i++)for(j=0;j<w;j++){//if((i!=h/2)&&(j!=w/2))//巴特沃斯高通// FD[i*w+j]*=1.0/(1+(d0*1.0/sqrt((i-h/2)*(i-h/2)+(j-w/2)*(j-w/2)))//*(d0/sqrt((i-h/2)*(i-h/2)+(j-w/2)*(j-w/2))));if((i-h/2)*(i-h/2)+(j-w/2)*(j-w/2)<=d0*d0)FD[i*w+j]=0;}bh.move(FD,w,h);bh.DIFFT(TD,FD,w,h);for(i=0;i<h;i++)for(j=0;j<w;j++){*(m_Image+i*w+j)=unsigned char(abs(TD[i*w+j].real())*6);}Invalidate();}五.实验总结:1. 巴特沃斯低通滤波器;2. 理想高通滤波器以上二式中:。
实验五_图像频域高通和低通滤波变换
实验三 图像频域高通和低通滤波变换一、 实验目的1了解图像变换的意义和手段;2熟悉低通滤波的基本性质;3熟悉高通滤波的基本性质;4通过本实验掌握编程实现数字图像的高通滤波及低通滤波的变换二、 实验内容设计程序,分别实现理想低通滤波器,高通滤波器对图像的滤波处理。
观察处理前后图像效果,分析实验结果。
三、 实验原理二维理想低通滤波器的传递函数为:001.(,)(,)0.(,)D u v D H u v D u v D ≤⎧=⎨>⎩D0是指定非负数值,D (u ,v )是(u ,v )点距频率中心的距离。
如果要研究的图像尺寸为M X N ,则它的变换也有相同的尺寸。
在半径为D0的圆内,所有频率无衰减地通过滤波器,而在此半径之外的所有频率完全被衰减掉。
巴特沃斯高通滤波器的传递函数为: 201(,)(,)1[]n H u v D u v D =+ 式中D0为截止频率距远点距离。
一阶巴特沃斯滤波器没有振铃。
在二阶中振铃通常很微小,但在阶数增高时振铃便成为一个重要因素。
高斯高通滤波器传递函数为:220(,)/2(,)D u v D H u v e -=D (u ,v )是距傅立叶变换中心原点的距离。
D0是截止频率。
高斯低通滤波器的傅立叶变换也是高斯的。
二维理想高通滤波器的传递函数为:000.(,)(,) 1.(,)D u v D H u v D u v D ≤⎧=⎨>⎩ D0是从频率矩形中点测得的截止频率长度,它将以D0为半径的圆周内的所有频率置零,而毫不衰减地通过圆周外的任何频率。
但其物理上是不可实现的。
巴特沃斯高通滤波器的传递函数为: 201(,)1[](,)n H u v D D u v =+ 式中D0为截止频率距远点距离。
与低通滤波器的情况一样,可认为巴特沃斯高通型滤波器比IHPF 更平滑。
高斯高通滤波器传递函数为:220(,)/2(,)1D u v D H u v e -=-高通滤波器能够用高斯型低通滤波器的差构成。
图像高通和低通滤波处理.
实验五图像高通和低通滤波处理一、实验目的掌握常用频域高通滤波器和低通滤波器的设计。
进一步加深理解和掌握图像频谱的特点和频域高通滤波及频域低通滤波的原理。
理解图象高通滤波和低通滤波的处理过程和特点。
二、实验要求1. 实验之前要预习2. 独立完成程序的编写3. 写出实验报告4. 实验每组1人实验设备:每组计算机一台三、实验原理低通滤波器:容许低频信号通过,但减弱(或减少)频率高於截止频率的信号的通过。
用在绘制长期走势或均化。
高通滤波器:容许高频信号通过、但减弱(或减少)频率低於截止频率信号通过的滤波器。
强调细节。
二维理想高通滤波器的传递函数为:00. (, (, 1. (, Du v D H u v D u v D ≤⎧=⎨>⎩D0是从频率矩形中点测得的截止频率长度,它将以D0为半径的圆周内的所有频率置零,而毫不衰减地通过圆周外的任何频率。
但其物理上是不可实现的。
巴特沃斯高通滤波器的传递函数为: 201(, 1[](,nH u v D u v =+式中D0为截止频率距远点距离。
与低通滤波器的情况一样,可认为巴特沃斯高通型滤波器比IHPF 更平滑。
高斯高通滤波器传递函数为:22(, /2(, 1D u v D H u v e -=-高通滤波器能够用高斯型低通滤波器的差构成。
这些不同的滤波器有更多的参数,因此能够对滤波器的形状进行更多的控制。
四、实验内容1. 对数字图象进行低通滤波处理2. 对数字图象进行高通滤波处理3. 比较和分析所得到的结果。
五、实验过程 1. 流程图2. 试验程序%----------------------------选择图片路径及显示---------------------------% global f %选择图片路径[filename,pathname]= ... %...表示与下行连接uigetfile({'*.bmp';'*.jpg';'*gif';'*tif'},'选择图片';%打开文件类型,对话框名称f=imread([pathname filename];axes(handles.axes1; %在axes1显示原图像imshow(f ;title('原始图像';% --- Executes on selection change in popupmenu1.function popupmenu1_Callback(hObject, eventdata, handles% hObject handle to popupmenu1 (see GCBO% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA% Hints: contents = get(hObject,'String' returns popupmenu1 contents as cell array % contents{get(hObject,'Value'} returns selected item from popupmenu1 global fva=get(handles.popupmenu1,'Value';val=get(hObject,'Value';switch val %用switch 语句设置选项case 1 %巴特沃斯高通滤波器g=fft2(f; % 傅立叶变换g=fftshift(g; % 转换数据矩阵[M,N]=size(g;nn=2; % 二阶Butterworth 高通滤波器d0=20; %截止频率为10m=fix(M/2;n=fix(N/2;for i=1:Mfor j=1:Nd=sqrt((i-m^2+(j-n^2;h=1/(1+d0/(0.414*d^(2*nn;% 计算高通滤波器传递函数result(i,j=h*g(i,j;endendresult=ifftshift(result;y2=ifft2(result;y3=uint8(real(y2;axes(handles.axes2;imshow(y3; % 显示滤波处理后的图像title('巴特沃斯高通滤波';case 2 %巴特沃斯低通滤波g=fft2(f; % 傅立叶变换g=fftshift(g; % 转换数据矩阵nn=2; % 二阶巴特沃斯(Butterworth低通滤波器d0=30; %截止频率为10 m=fix(M/2;n=fix(N/2;for i=1:Mfor j=1:Nd=sqrt((i-m^2+(j-n^2;h=1/(1+0.414*(d/d0^(2*nn;% 计算低通滤波器传递函数result(i,j=h*g(i,j; endendresult=ifftshift(result;y2=ifft2(result;y3=uint8(real(y2;axes(handles.axes3;imshow(y3; % 显示滤波处理后的图像title('巴特沃斯低通滤波'case 3 %理想高通滤波k=fft2(f; % 傅立叶变换g=fftshift(k; % 转换数据矩阵[M,N]=size(g;d0=10; %截止频率为10m=fix(M/2;n=fix(N/2;for i=1:Mfor j=1:Nd=sqrt((i-m^2+(j-n^2; % 计算高通滤波器传递函数if d<=d0 h=0;else h=1;endresult(i,j=h*g(i,j;endendresult=ifftshift(result;y2=ifft2(result;y3=uint8(real(y2;axes(handles.axes4;imshow(y3;title('理想高通滤波'case 4 %理想低通滤波k=fft2(f; % 傅立叶变换g=fftshift(k; % 转换数据矩阵d0=30; %截止频率为30 m=fix(M/2;n=fix(N/2;for i=1:Mfor j=1:Nd=sqrt((i-m^2+(j-n^2; % 计算高通滤波器传递函数if d<=d0 h=1;else h=0;endresult(i,j=h*g(i,j;endendresult=ifftshift(result;y2=ifft2(result;y3=uint8(real(y2;axes(handles.axes5;imshow(y3;title('理想低通滤波'end;3. 实验结果六、实验总结通过这次实验进一步加深了对图像高通和低通滤波的原理的理解和认识,运用 MATLAB 语言加以实现,锻炼了自己以程序语言实现内容的能力,并提高了解决问题的能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 图像频域高通和低通滤波变换一、 实验目的1了解图像变换的意义和手段;2熟悉低通滤波的基本性质;3熟悉高通滤波的基本性质;4通过本实验掌握编程实现数字图像的高通滤波及低通滤波的变换二、 实验内容设计程序,分别实现理想低通滤波器,高通滤波器对图像的滤波处理。
观察处理前后图像效果,分析实验结果。
三、 实验原理二维理想低通滤波器的传递函数为:001.(,)(,)0.(,)D u v D H u v D u v D ≤⎧=⎨>⎩D0是指定非负数值,D (u ,v )是(u ,v )点距频率中心的距离。
如果要研究的图像尺寸为M X N ,则它的变换也有相同的尺寸。
在半径为D0的圆内,所有频率无衰减地通过滤波器,而在此半径之外的所有频率完全被衰减掉。
巴特沃斯高通滤波器的传递函数为: 201(,)(,)1[]n H u v D u v D =+ 式中D0为截止频率距远点距离。
一阶巴特沃斯滤波器没有振铃。
在二阶中振铃通常很微小,但在阶数增高时振铃便成为一个重要因素。
高斯高通滤波器传递函数为:220(,)/2(,)D u v D H u v e -=D (u ,v )是距傅立叶变换中心原点的距离。
D0是截止频率。
高斯低通滤波器的傅立叶变换也是高斯的。
二维理想高通滤波器的传递函数为:000.(,)(,) 1.(,)D u v D H u v D u v D ≤⎧=⎨>⎩ D0是从频率矩形中点测得的截止频率长度,它将以D0为半径的圆周内的所有频率置零,而毫不衰减地通过圆周外的任何频率。
但其物理上是不可实现的。
巴特沃斯高通滤波器的传递函数为: 201(,)1[](,)n H u v D D u v =+ 式中D0为截止频率距远点距离。
与低通滤波器的情况一样,可认为巴特沃斯高通型滤波器比IHPF 更平滑。
高斯高通滤波器传递函数为:220(,)/2(,)1D u v D H u v e -=-高通滤波器能够用高斯型低通滤波器的差构成。
这些不同的滤波器有更多的参数,因此能够对滤波器的形状进行更多的控制。
四、 实验结果及分析低通滤波:实验结果分析:(1)对于理想的低通滤波器,当截止频率D0较低的时候,图像严重模糊,被滤去的高频部分的能量包含了图像的主要的边缘信息,同时振铃效应也非常的明显。
随着截止频率的增加,模糊地程度减少,这是因为保留的边缘信息增加了。
(2)巴特沃思滤波器和高斯滤波器滤去的频率和通过的频率之间没有明显的不连续性,图像的模糊程度降低,而且也没有振铃效应,这是由于在低频和高频之间,滤波器平滑过渡的缘故。
高通滤波器:实验结果分析:(1)理想的高通滤波器把半径为D0的圆内的所有频率完全衰减掉,却使圆外的所有的频率无损的通过。
图像整体变得模糊,边缘和细节比较清晰。
(2)巴特沃思高通滤波器和高斯高通滤波器处理后的图像中只显现边缘,边缘的强度不同,而灰度平滑的区域都变暗了。
五、实验主要代码/****************************************************ILPF(HDIB hDIB,double stopfre)参数:hDIB为输入的DIB句柄stopfre为截止频率****************************************************/BOOL ILPF(HDIB hDIB,double stopfre){if (hDIB == NULL)return FALSE;// start wait cursorWaitCursorBegin();HDIB hDib = NULL;HDIB hNewDib = NULL;// we only convolute 24bpp DIB, so first convert DIB to 24bppWORD wBitCount = DIBBitCount(hDIB);if (wBitCount != 24){hNewDib = ConvertDIBFormat(hDIB, 24, NULL);hDib = CopyHandle(hNewDib);}else{hNewDib = CopyHandle(hDIB);hDib = CopyHandle(hDIB);}if (hNewDib == NULL && hDib == NULL){WaitCursorEnd();return FALSE;}// process!LPBYTE lpSrcDIB = (LPBYTE)GlobalLock(hDib); LPBYTE lpDIB = (LPBYTE)GlobalLock(hNewDib); LPBYTE lpInput = FindDIBBits(lpSrcDIB); LPBYTE lpOutput = FindDIBBits(lpDIB);int nWidth = DIBWidth(lpSrcDIB);int nHeight = DIBHeight(lpSrcDIB);int w=1,h=1,wp=0,hp=0;while(w*2<=nWidth){w*=2;wp++;}while(h*2<=nHeight){h*=2;hp++;}int x,y;BYTE *lpPoints=new BYTE[nWidth*nHeight]; GetPoints(nWidth,nHeight,lpInput,lpPoints);COMPLEX *TD=new COMPLEX[w*h];COMPLEX *FD=new COMPLEX[w*h];COMPLEX *FTD=new COMPLEX[w*h];COMPLEX *TTD=new COMPLEX[w*h];for(y=0;y<h;y++){for(x=0;x<w;x++){TD[x+w*y].re=Point(x,y);TD[x+w*y].im=0;}}/////FFT()for(y=0;y<h;y++){FFT(&TD[w*y],&FD[w*y],wp);}for(y=0;y<h;y++){for(x=0;x<w;x++){TD[y+h*x]=FD[x+w*y];TD[x+w*y]=FD[x*h+y];}}for(x=0;x<w;x++){FFT(&TD[x*h],&FD[x*h],hp);}memset(lpPoints,0,nWidth*nHeight);double m,d,H,mid1;for(y=0;y<h;y++){for(x=0;x<w;x++){FTD[x+w*y]=FD[y+x*h];}}for(y=0;y<h;y++){for(x=0;x<w;x++){FD[(x<w/2?x+w/2:x-w/2)+w*(y<h/2?y+h/2:y-h/2)]=FTD[x+w*y]; }}//////ILPFfor(y=0;y<h;y++){for(x=0;x<w;x++){mid1=(x-w/2)*(x-w/2)+(y-h/2)*(y-h/2);d=sqrt(mid1);if(d<=stopfre)H=1;elseH=0;FD[x+w*y].re*=H;FD[x+w*y].im*=H;}}for(y=0;y<h;y++){for(x=0;x<w;x++){FTD[(x<w/2?x+w/2:x-w/2)+w*(y<h/2?y+h/2:y-h/2)]=FD[x+w*y]; }}for(y=0;y<h;y++){IFFT(&FTD[w*y],&TD[w*y],wp);}for(y=0;y<h;y++){for(x=0;x<w;x++){FTD[y+h*x]=TD[x+w*y];TD[x+w*y]=FD[x*h+y];}}for(x=0;x<w;x++){IFFT(&FTD[x*h],&TD[x*h],hp);}for(y=0;y<h;y++){for(x=0;x<w;x++){TTD[x+w*y]=TD[y+x*h];}}for(y=0;y<h;y++){for(x=0;x<w;x++){m=TTD[x+w*y].re;Point(x,y)=(BYTE)(m);}}delete TD;delete FD;delete FTD;delete TTD;PutPoints(nWidth,nHeight,lpOutput,lpPoints);delete lpPoints;DWORD dwSize = GlobalSize(hDib);memcpy(lpSrcDIB, lpDIB, dwSize);GlobalUnlock(hDib);GlobalUnlock(hNewDib);if (wBitCount != 24){hNewDib = ConvertDIBFormat(hDib, wBitCount, NULL);lpSrcDIB = (LPBYTE)GlobalLock(hDIB);lpDIB = (LPBYTE)GlobalLock(hNewDib);dwSize = GlobalSize(hNewDib);memcpy(lpSrcDIB, lpDIB, dwSize);GlobalUnlock(hDIB);GlobalUnlock(hNewDib);}else{lpSrcDIB = (LPBYTE)GlobalLock(hDIB);lpDIB = (LPBYTE)GlobalLock(hDib); dwSize = GlobalSize(hDib);memcpy(lpSrcDIB, lpDIB, dwSize); GlobalUnlock(hDIB);GlobalUnlock(hDib);}GlobalFree(hDib);GlobalFree(hNewDib);WaitCursorEnd();return TRUE;}。