理想低通滤波器_matlab理想低通滤波器 - CSDN
精华内容
参与话题
  • 理想低通滤波器

    万次阅读 2010-02-20 19:09:00
    理想低通滤波器:该系统如下: H(u,v)=1 D(u,v)0 H(u,v)=0 D(u,v)>D0 其中D(u,v)=[(u-M/2)2 +(v-n/2)2 ]1/2 对一幅图像的处理,在岗萨雷斯的数字图像处理中有说明,在这里给帖出来: 一,用(-1)(x+y) 乘以输入图像...

         理想低通滤波器:该系统如下:

     

    H(u,v)=1  D(u,v)<=D0

    H(u,v)=0  D(u,v)>D0

    其中D(u,v)=[(u-M/2)2 +(v-n/2)2 ]1/2

         对一幅图像的处理,在岗萨雷斯的数字图像处理中有说明,在这里给帖出来:

    一,用(-1)(x+y) 乘以输入图像来进行中心变换;

    二,由(1)计算图像的DFT,即F(u,v);

    三,用滤波器函数H(u,v)乘以F(u,v);

    四,计算(3)中结果的反DFT;

    五,得到(4)中结果的实部;

    六,用(-1)(x+y) 乘以(5)中的结果;

    这样就把理想低通滤波器实现了;

     

    关于理想低通滤波器的时域表示,下图列出了不同截止频率时系统的空间图像以及使用相应的截止频率进行滤波时对应的结果:

    截止频率为5          

    截止频率为5          对应滤波结果

    截止           

    截止频率为15        对应滤波结果 

    截止频率为30          

    截止频率为30        对应滤波结果  

    截止频率为80           

    截止频率为80        对应滤波结果 

    截止频率为230            

    截止频率为230       对应滤波结果

     

          可以明显的看出,使用理想低通滤波,结果图像会产生较大的振铃,而且低理想滤波器通过物理器件是实现不了的;

          关于频率滤波,可以使用两种方法来实现;上面已经给出了一种;另一种方法是把滤波器的系统进行反傅里叶变换,然后将结果与图像进行卷积,关于这一块,我测试了一下,目前来说还存在一些问题,过些时日我把这一块再写出来!

          下面把代码放帖出来:

     

    .h文件 

     

     

    .cpp文件

     

    好了!

     

     


    展开全文
  • 低通滤波器  1.理想的低通滤波器  其中,D0表示通带的半径。D(u,v)的计算方式也就是两点间的距离,很...由于理想低通滤波器的过度特性过于急峻,所以会产生了振铃现象。  

    低通滤波器


            1.理想的低通滤波器


           其中,D0表示通带的半径。D(u,v)的计算方式也就是两点间的距离,很简单就能得到。

           使用低通滤波器所得到的结果如下所示。低通滤波器滤除了高频成分,所以使得图像模糊。由于理想低通滤波器的过度特性过于急峻,所以会产生了振铃现象。


            2.巴特沃斯低通滤波器

           同样的,D0表示通带的半径,n表示的是巴特沃斯滤波器的次数。随着次数的增加,振铃现象会越来越明显。

       



           3.高斯低通滤波器


           D0表示通带的半径。高斯滤波器的过度特性非常平坦,因此是不会产生振铃现象的。



    转载出处: http://blog.csdn.net/zhoufan900428/article/details/17194289


    展开全文
  • 最简单的低通滤波器是理想低通滤波器,基本思想是给定一个频率阈值,将高于该阈值的所有部分设置为0,而低于该频率的部分保持不变。 理想是指该滤波器不能用电子元器件来实现,但是可以通过计算机来模拟。 ...

    1.低通滤波器
    低通滤波是将频域图像中的高频部分滤除而通过低频部分。图像的边缘和噪声对应于频域图像中的高频部分,而低通滤波的作用即是减弱这部分的能量,从而达到图像平滑去噪的目的。

    2.理想低通滤波器
    最简单的低通滤波器是理想低通滤波器,基本思想是给定一个频率阈值,将高于该阈值的所有部分设置为0,而低于该频率的部分保持不变。

    理想是指该滤波器不能用电子元器件来实现,但是可以通过计算机来模拟。

    在VTK中定义了理想低通滤波器,下面我们来看下怎么使用该滤波器来对图像进行低通滤波:

    //理想低通滤波器
    #include <vtkSmartPointer.h>
    #include <vtkJPEGReader.h>
    #include <vtkImageFFT.h>
    #include <vtkImageIdealLowPass.h>
    #include <vtkImageData.h>
    #include <vtkImageRFFT.h>
    #include <vtkImageCast.h>
    #include <vtkImageExtractComponents.h>
    #include <vtkImageActor.h>
    #include <vtkRenderer.h>
    #include <vtkRenderWindow.h>
    #include <vtkRenderWindowInteractor.h>
    
    int main()
    {
    	vtkSmartPointer<vtkJPEGReader> reader = vtkSmartPointer<vtkJPEGReader>::New();
    	reader->SetFileName("data\\lena.jpg");
    	reader->Update();
    
    	vtkSmartPointer<vtkImageFFT> fftFilter = vtkSmartPointer<vtkImageFFT>::New();
    	fftFilter->SetInputConnection(reader->GetOutputPort());
    	fftFilter->Update();
    
    	vtkSmartPointer<vtkImageIdealLowPass> lowPassFilter = vtkSmartPointer<vtkImageIdealLowPass>::New();
    	lowPassFilter->SetInputConnection(fftFilter->GetOutputPort());
    	lowPassFilter->SetXCutOff(0.05); //设置x\y方向上的截断频率
    	lowPassFilter->SetYCutOff(0.05);
    	lowPassFilter->Update();
    
    	vtkSmartPointer<vtkImageRFFT> rfftFilter = vtkSmartPointer<vtkImageRFFT>::New();//将处理后的频域图像转换至空域图像,
    	rfftFilter->SetInputConnection(lowPassFilter->GetOutputPort());              //注意:转换后的图像每个像素值都是一个复数;
    	rfftFilter->Update();
    
    	vtkSmartPointer<vtkImageExtractComponents> ifftExtractReal = vtkSmartPointer<vtkImageExtractComponents>::New();
    	ifftExtractReal->SetInputConnection(rfftFilter->GetOutputPort());
    	ifftExtractReal->SetComponents(0);//提取实部分量
    
    	vtkSmartPointer<vtkImageCast> castFilter = vtkSmartPointer<vtkImageCast>::New();//数据类型转换为unsigned char类型
    	castFilter->SetInputConnection(ifftExtractReal->GetOutputPort());
    	castFilter->SetOutputScalarTypeToUnsignedChar();
    	castFilter->Update();
    
    	vtkSmartPointer<vtkImageActor> originalActor = vtkSmartPointer<vtkImageActor>::New();
    	originalActor->SetInputData(reader->GetOutput());
    
    	vtkSmartPointer<vtkImageActor> erodedActor = vtkSmartPointer<vtkImageActor>::New();
    	erodedActor->SetInputData(castFilter->GetOutput());
    
    	double leftViewport[4] = { 0.0, 0.0, 0.5, 1.0 };
    	double rightViewport[4] = { 0.5, 0.0, 1.0, 1.0 };
    	vtkSmartPointer<vtkRenderer> leftRenderer = vtkSmartPointer<vtkRenderer>::New();
    	leftRenderer->AddActor(originalActor);
    	leftRenderer->ResetCamera();
    	leftRenderer->SetViewport(leftViewport);
    	leftRenderer->SetBackground(1.0, 0, 0);
    
    	vtkSmartPointer<vtkRenderer> rightRenderer = vtkSmartPointer<vtkRenderer>::New();
    	rightRenderer->AddActor(erodedActor);
    	rightRenderer->SetViewport(rightViewport);
    	rightRenderer->ResetCamera();
    	rightRenderer->SetBackground(1.0, 1.0, 1.0);
    
    	vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
    	renderWindow->AddRenderer(rightRenderer);
    	renderWindow->AddRenderer(leftRenderer);
    	renderWindow->SetSize(540, 320);
    	renderWindow->SetWindowName("Frequency_IdealLowPassFilter");
    
    	vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    	interactor->SetRenderWindow(renderWindow);
    	renderWindow->Render();
    	interactor->Start();
    
    	return 0;
    }

    运行结果如下:

    从结果看,在过滤掉图像的高频部分后,图像变得模糊,丢失了许多细节,另外还可以看到图像会存在一定的振铃效应,这也是理想低通滤波的特点

    首先读入一副图像,通过vtkImageFFT将图像转换到频域空间。vtkImageIdealLowPass对频域图像做理想低通滤波,需要用户设置每个方向的截断频率,相应的设置函数SetXCutOff()和SetYCutOff()。执行完毕后,需要通过vtkImageRFFT将处理后的频域图像转换至空域图像。需要注意的是,转换后的图像每个像素都是一个复数,需要vtkImageExtractComponents将该图像的第一个分量提出出来显示,否则图像不能正确显示。由于傅里叶变换输入输出的数据类型都是double,为了方便显示,还需要将其转换为Unsigned char类型,这里vtkImageCast负责类型转换。
    3.巴特沃兹低通滤波器

    在实际中经常使用的是巴特沃斯滤波器。巴特沃斯滤波器对应的转移函数(可以看做是一个系数矩阵)是:

                                                      

    其中D(u,v)表示频域点(u,v)到频域图像原点的距离,称为截止频率,当D(u,v) = 时,H(u,v)=0.5,即对应的频域能量将为原来的一半。因为巴特沃斯低通滤波器在高低频间的过渡平滑,因此不会出现明显的振铃效应。VTK中实现巴特沃斯低通滤波器的类是vtkImageButterworthLowPass.

    /***********************巴特沃兹低通滤波器*****************************************/
    #include <vtkSmartPointer.h>
    #include <vtkJPEGReader.h>
    #include <vtkImageFFT.h>
    #include <vtkImageButterworthLowPass.h>
    #include <vtkImageRFFT.h>
    #include <vtkImageExtractComponents.h>
    #include <vtkImageCast.h>
    #include <vtkImageActor.h>
    #include <vtkRenderer.h>
    #include <vtkRenderWindow.h>
    #include <vtkRenderWindowInteractor.h>
    #include <vtkInteractorStyleImage.h>
    
    int main()
    {
    	vtkSmartPointer<vtkJPEGReader> reader = vtkSmartPointer<vtkJPEGReader>::New();
    	reader->SetFileName("data\\lena-gray.jpg");
    	reader->Update();
    
    	vtkSmartPointer<vtkImageFFT> fftFilter = vtkSmartPointer<vtkImageFFT>::New();
    	fftFilter->SetInputConnection(reader->GetOutputPort());
    	fftFilter->Update();
    
    	vtkSmartPointer<vtkImageButterworthLowPass> lowPassFilter = vtkSmartPointer<vtkImageButterworthLowPass>::New();
    	lowPassFilter->SetInputConnection(fftFilter->GetOutputPort());
    	lowPassFilter->SetXCutOff(0.05);
    	lowPassFilter->SetYCutOff(0.05);
    	lowPassFilter->Update();
    
    	vtkSmartPointer<vtkImageRFFT> rfftFilter = vtkSmartPointer<vtkImageRFFT>::New();
    	rfftFilter->SetInputConnection(lowPassFilter->GetOutputPort());
    	rfftFilter->Update();
    
    	vtkSmartPointer<vtkImageExtractComponents> ifftExtractReal = vtkSmartPointer<vtkImageExtractComponents>::New();
    	ifftExtractReal->SetInputConnection(rfftFilter->GetOutputPort());
    	ifftExtractReal->SetComponents(0);
    
    	vtkSmartPointer<vtkImageCast> castFilter = vtkSmartPointer<vtkImageCast>::New();
    	castFilter->SetInputConnection(ifftExtractReal->GetOutputPort());
    	castFilter->SetOutputScalarTypeToUnsignedChar();
    	castFilter->Update();
    	
    	vtkSmartPointer<vtkImageActor> originalActor = vtkSmartPointer<vtkImageActor>::New();
    	originalActor->SetInputData(reader->GetOutput());
    
    	vtkSmartPointer<vtkImageActor> erodedActor = vtkSmartPointer<vtkImageActor>::New();
    	erodedActor->SetInputData(castFilter->GetOutput());
    	///
    	double leftViewport[4] = { 0.0, 0.0, 0.5, 1.0 };
    	double rightViewport[4] = { 0.5, 0.0, 1.0, 1.0 };
    	vtkSmartPointer<vtkRenderer> leftRenderer =	vtkSmartPointer<vtkRenderer>::New();
    	leftRenderer->AddActor(originalActor);
    	leftRenderer->SetViewport(leftViewport);
    	leftRenderer->SetBackground(1.0, 1.0, 1.0);
    	leftRenderer->ResetCamera();
    
    	vtkSmartPointer<vtkRenderer> rightRenderer = vtkSmartPointer<vtkRenderer>::New();
    	rightRenderer->AddActor(erodedActor);
    	rightRenderer->SetViewport(rightViewport);
    	rightRenderer->SetBackground(1.0, 1.0, 1.0);
    	rightRenderer->ResetCamera();
    	
    	vtkSmartPointer<vtkRenderWindow> rw = vtkSmartPointer<vtkRenderWindow>::New();
    	rw->AddRenderer(leftRenderer);
    	rw->AddRenderer(rightRenderer);
    	rw->SetSize(640, 320);
    	rw->SetWindowName("ButterworthLowPassExample");
    
    	vtkSmartPointer<vtkRenderWindowInteractor> rwi = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    	vtkSmartPointer<vtkInteractorStyleImage> style = vtkSmartPointer<vtkInteractorStyleImage>::New();
    	rwi->SetInteractorStyle(style);
    	rwi->SetRenderWindow(rw);
    	rwi->Start();
    
    	return 0;
    }

    运行结果如下:

    vtkImageButterworthLowPass与理想低通滤波器的使用一样。为了便于比较,这里设置X和Y方向的截止频率时,与理想低通滤波器设置一致,从结果来看,巴特沃斯低通滤波器产生的图像更为平滑,不会出现振铃现象。

     

    参考资料:

    1.《The Visualization Toolkit – AnObject-Oriented Approach To 3D Graphics (4th Edition)》
    2. 张晓东, 罗火灵. VTK图形图像开发进阶[M]. 机械工业出版社, 2015.

    所用软件:vtk7.0+visual studio 2013


    注:此文知识学习笔记,仅记录完整程序和实现结果,具体原理参见:

    https://blog.csdn.net/www_doling_net/article/details/8541534

    https://blog.csdn.net/shenziheng1/article/category/6114053/4

    展开全文
  • 1、实验要求:对如下图像使用半径分别为5, 15, 30的理想低通滤波器进行处理,并分别显示结果图像。 2、实验过程:代码如下 %频率域滤波  clc;close all;  img=imread('1.tif');  img=im2double(img);    Fimg...

    1、实验要求:对如下图像使用半径分别为5, 15, 30的理想低通滤波器进行处理,并分别显示结果图像。


    2、实验过程:代码如下

    %频率域滤波 

    clc;close all; 

    img=imread('1.tif'); 

    img=im2double(img); 

     

    Fimg=fft2(double(img));%傅里叶变换 

     

    Fimg=fftshift(Fimg);%将变换的原点移到频率矩形的中心 

    [M,N]=size(img); 

     

     %半径为5的理想低通滤波处理

    dist1=5;

    z1=zeros(M,N); 

    for i=1:M 

        for j=i:N 

           if(sqrt(((i-M/2)^2+(j-N/2)^2))<dist1) 

               z1(i,j)=1; 

            end 

        end 

    end 

    g1=Fimg.*z1; 

    g1=ifftshift(g1); 

    img1=real(ifft2(g1)); 

     

     %半径为15的理想低通滤波处理

    dist2=15;

    z2=zeros(M,N); 

    for i=1:M 

        for j=i:N 

           if(sqrt(((i-M/2)^2+(j-N/2)^2))<dist2) 

               z2(i,j)=1; 

            end 

        end 

    end 

    g2=Fimg.*z2; 

    g2=ifftshift(g2); 

    img2=real(ifft2(g2)); 

     

     %半径为30的理想低通滤波处理

    dist3=20;

    z3=zeros(M,N); 

    for i=1:M 

        for j=i:N 

           if(sqrt(((i-M/2)^2+(j-N/2)^2))<dist3) 

               z3(i,j)=1; 

            end 

        end 

    end 

    g3=Fimg.*z3; 

    g3=ifftshift(g3); 

    img3=real(ifft2(g3));

     

     %图像显示

    subplot(2,2,1);imshow(img);title('原图'); 

    subplot(2,2,2);imshow(img1);title('半径5的理想低通滤波'); 

    imwrite(img1,'./半径5的理想低通滤波.png');

    subplot(2,2,3);imshow(img2);title('半径15的理想低通滤波'); 

    imwrite(img2,'./半径5的理想低通滤波.png');

    subplot(2,2,4);imshow(img3);title('半径30的理想低通滤波'); 

    imwrite(img3,'./半径5的理想低通滤波.png');


    3、实验结果如下:


     

    展开全文
  • 理想低通滤波器 f = imread('Fig0441.tif'); f = im2double(f); % 计算填充图像大小 [M,N] = size(f); M2 = 2*M; N2 = 2*N; % 傅里叶变换 F = fftshift(fft2(f,M2,N2)); figure;imshow(mat2gray(log(1+abs(F))))...
  • 低通滤波器  1.理想的低通滤波器  其中,D0表示通带的半径。D(u,v)的计算方式也就是两点间的距离,很简单就能...由于理想低通滤波器的过度特性过于急峻,所以会产生了振铃现象。  
  • 一、简介我们知道,在一幅图像中,其低频成分对应者图像变化缓慢的部分,对应着图像大致的相貌和轮廓。而其高频成分则对应着图像变化剧烈的部分,对应着图像的细节(图像的噪声也属于高频成分)。...理想低通滤波器...
  • 常见低通滤波器

    千次阅读 2018-03-29 17:04:50
    转载自:https://blog.csdn.net/tianrolin/article/details/44084317 ... 1.理想低通滤波器 其中,D0表示通带的半径。D(u,v)的计算方式也就是两点间的距离,很简单就能得到。 使用低通滤波器所得到的结...
  • matlab低通滤波

    万次阅读 多人点赞 2018-04-16 21:02:49
    低通滤波器的功能是让低频率通过而滤掉或衰减高频,其作用是过滤掉... 理想低通滤波器产生公式为:其中Do为理想低通滤波器的截止频率。理想低通滤波器具有平滑图像的作用,但是有很严重的振铃现象。利用理想低通滤波...
  • 理想低通滤波器(ILPF) 理想低通滤波器有下面的函数确定: H(u,v)={1D(u,v)≤D00公式3条件3 H(u,v)=\begin{cases} 1 &amp; D(u,v) \leq D_0 \\ 0 &amp; \\ 公式3 &amp; 条件3 \end{cases}H(u,v)=⎩⎪...
  • 最近做课设的时候遇到了低通滤波器的问题。翻阅了下书籍,得到了一些收获,想来分享下。如有不对的地方,请大神斧正。 首先要清楚的概念是,图像(假设是灰度图,便于描述,或者是单个channel的图)在时域和频域中的...
  • 低通,高通,带通,带阻滤波器

    千次阅读 2017-04-14 10:31:52
    低通滤波器容许低频信号通过, 但减弱(或减少)频率高於截止频率的信号的通过。高通滤波器容许高频信号通过, 但减弱(或减少)频率低于於截止频率的信号的通过。带通滤波器容许一定频率范围信号通过, 但减弱(或减少)频率...
  • 频率域滤波器

    千次阅读 2016-04-21 16:27:29
    从滤波器处理效果的尖锐程度,可以将他们分为三种类型:理想滤波器、...理想低通滤波器: 理想高通滤波器: 理想带阻滤波器: 这里: 巴特沃斯低通滤波器: 巴特沃斯高通滤波器: 巴特沃斯带阻滤波器:
  • 数字 一阶低通滤波器 详细分析 作者:冰三点水 原创内容,转帖请注明出处:http://blog.csdn.net/u013608300/article/details/78814693 事件的起因是下图1,朋友偶然说到一阶低通滤波器,借此来详细介绍一阶低通...
  • matlab设计低通滤波器

    万次阅读 2019-05-21 15:38:19
    教你如何使用matlab中的FDATOOL来设计滤波器 转自:https://blog.csdn.net/liusandian/article/details/52332498 输入:被白噪声污染的正弦信号,fs=100khz,信号频率为10khz,噪声信号为20khz,现在要滤掉20khz的...
  • 二阶有源滤波器设计

    万次阅读 多人点赞 2019-12-14 11:36:58
    对于无源二阶低通滤波器: 其幅頻方程为: 我们从中可以看出其通带截止频率为 有其品质因子为0.372。 我们根据上图得到二阶无源低通滤波器的品质因子只有0.372,如果希望Q大于0.5,就需要在ω=ωo附近...
  • matlab进行简单的滤波处理

    万次阅读 2017-04-07 14:21:42
    本篇文章是超级简单的matlab进行图像滤波的程序,采用常用的频域滤波器进行简单的滤波操作,当然有时候空域效果较好。
  • matlab用傅里叶变换实现图像的低通滤波

    万次阅读 多人点赞 2017-07-21 23:45:37
    要求  可以使用 MATLAB 的傅里叶变换函数和反变换函数。 原理部分 低通滤波器指去除图像中的高频成分,而低通滤波器指...理想低通滤波器:以原点为圆心,D为半径的圆内, 无衰减地通过所有频率,在圆外截断所有频率。
  • 理想低通滤波器 巴特沃斯低通滤波器 高斯低通滤波器 频域锐化滤波器 理想高通滤波器 巴特沃斯高通滤波器 高斯高通滤波器 频域拉普拉斯算子 高频提升滤波 同态滤波器 低通滤波器通过过滤掉频域的高频成分达到平滑目的...
  • 频域低通滤波器(MATLAB 含代码)

    万次阅读 2016-10-27 10:40:44
    因此图像平滑可以通过衰减图像频谱中的高频部分来实现,这就建立了空间域图像平滑和频域低通滤波之间的对应关系。 理论基础 最容易想到的衰减高频成分方法是在一个称为‘截止频率’的位置截断所有的高频成分,将...
1 2 3 4 5 ... 20
收藏数 5,143
精华内容 2,057
关键字:

理想低通滤波器