精华内容
下载资源
问答
  • 编程实现灰度图像的频域滤波算法。使用Matlab实现不延拓和延拓两个版本。对于延拓和不延拓版本,在理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器上比较两者的区别;对于延拓版本,比较不同参数设置对上述三种...
  • PAGE PAGE 4 图像平滑处理的空域算法和 频域分析 1 技术要求 对已知图像添加高斯白噪声,并分别用低通滤波器(频域法)和邻域平均法(空域法)对图像进行平滑处理(去噪处理,并分析比较两种方法处理的效果 2 基本原理 2.1 ...
  • 利用傅里叶变换得到频域,然后将不需要的频点置零,然后进行反变换,进行滤波
  • 这是数字图像处理的一些算法在halcon的实现,包括了空间滤波,频域滤波,图像增强,高斯滤波等,这是在学习冈萨雷斯的数字图像处理第三版的第三和第四章的时候,用halcon写下的一些代码,可以参考使用,或者学习...
  • 基于结构光测量系统自身的特点,提出一种新的高光去除方法——频域滤波法。该方法将高光视作噪声,通过对比分析漫反射光条和高光光条频谱分布的不同,制作合适的滤波器以滤除高光。通过3dsmax软件仿真,模拟高光效果...
  • 1.基于python的频域滤波,使用OpenCV等 2.主要设计频域滤波器 3.有丰富的图片
  • 研究小波阈值去噪算法和经验模态分解算法,对心磁信号的去噪过程
  • 利用傅里叶变换得到频域,然后将不需要的频点置零,然后进行反变换,进行滤波
  • 了解傅立叶变换在图像处理中的应用;掌握频率滤波的原理和特点;利用matlab 实现二维图像的傅里叶变换;实现图像的理想高/低通、高斯高/低通、布特沃斯高/低通滤波
  • 频域滤波 vc++ 源代码

    2016-05-10 20:32:07
    频域滤波 vc++ 源代码
  • 这是基于matlab的m文件,文件内有相关傅里叶频域滤波的资料,包括巴斯高通滤波等等。
  • 数字图象处理实验报告
  • vs上用opencv写的一个频域滤波的简单程序,包括理想,巴特沃斯,高斯滤波器
  • 频域滤波

    2020-11-20 20:35:17
    基于一篇综述《光照不均图像增强方法综述》,列出文章提到的四大类方法:直方图均衡、同态滤波、retinex增强、梯度域增强。

    1、基于傅里叶变换的同态滤波(高斯高通滤波器)

    '''
    基于傅里叶变换的同态滤波
    高斯高通滤波器
    参考:https://blog.csdn.net/m0_37661841/article/details/103716165
    
    '''
    import os
    import cv2
    from PIL import Image
    import numpy as np
    
    
    def homomorphic_filter(src, d0=10, r1=0.5, rh=2, c=0.5, h=2.0, l=0.5):#原程序c=4
        gray = src.copy()
        if len(src.shape) > 2:
            gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
        gray = np.float64(gray) 
        rows, cols = gray.shape
        gray_fft = np.fft.fft2(gray)# 傅里叶变换
        gray_fftshift = np.fft.fftshift(gray_fft)# 中心化
        #print(len(gray_fftshift[0]))
        dst_fftshift = np.zeros_like(gray_fftshift)# 创建掩膜模板
        M, N = np.meshgrid(np.arange(-cols // 2, cols // 2), np.arange(-rows//2, rows//2))
        D = np.sqrt(M ** 2 + N ** 2)#到中心点距离
        Z = (rh - r1) * (1 - np.exp(-c * (D ** 2 / d0 ** 2))) + r1#定义高斯滤波器
        dst_fftshift = Z * gray_fftshift#滤波
        dst_fftshift = (h - l) * dst_fftshift + l#对滤波后的图线性变换
        dst_ifftshift = np.fft.ifftshift(dst_fftshift)#去中心化
        dst_ifft = np.fft.ifft2(dst_ifftshift)#傅里叶反变换
        dst = np.real(dst_ifft)#获取实部
        dst = np.uint8(np.clip(dst, 0, 255))
        return dst
    
    
    
    if __name__ == '__main__':
        img = cv2.imread('./DIP3E_Original_Images_CH04/Fig0462(a)(PET_image).tif',0)
        img_new = homomorphic_filter(img)
        print("new img shape is {}".format(img_new.shape))
        cv2.imwrite('original.jpg',img)
        cv2.imwrite("3.png", img_new)
    
    

    2、基于小波变换的同态滤波

    '''
    基于小波变换的同态滤波
    读取本地图片:https://stackoom.com/question/3qAMe/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8PyWavelets%E8%AF%BB%E5%8F%96%E5%9B%BE%E5%83%8F
    源码:https://pywavelets.readthedocs.io/en/latest/
    小波变换函数选择:https://blog.csdn.net/jbb0523/article/details/42586749
    小波分析库中的一些基本使用方法:https://blog.csdn.net/qq_40587575/article/details/83154042?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160594795319195264716818%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160594795319195264716818&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-83154042.pc_search_result_no_baidu_js&utm_term=pywt.families&spm=1018.2118.3001.4449
    小波变换库常用:https://blog.csdn.net/nanbei2463776506/article/details/64124841?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160594711119725222412888%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160594711119725222412888&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-64124841.pc_search_result_no_baidu_js&utm_term=pywt.idwt2&spm=1018.2118.3001.4449
    对分量的操作:https://www.cnblogs.com/xixixing/p/5834511.html
    '''
    import numpy as np
    import matplotlib.pyplot as plt
    import cv2
    import pywt
    import pywt.data
    
    #print (pywt.families())
    bior = pywt.Wavelet('bior1.3')   #创建一个小波对象
    print(bior)
    # Load image
    original = pywt.data.camera()# 加载小波变换包中的示例图像
    original = cv2.imread('E:\Test_code\light\original.jpg',0)
    cv2.imshow('a0',original)
    original = np.float32(original)
    original /= 255
    # Wavelet transform of image, and plot approximation and details
    titles = ['Approximation', ' Horizontal detail',
              'Vertical detail', 'Diagonal detail']
    coeffs2 = pywt.dwt2(original, 'bior1.3')#离散小波变换,多尺度变换pywt.wavedec2(data, wavelet, mode=‘symmetric’, level=多少级, axes=(-2, -1))
    LL, (LH, HL, HH) = coeffs2
    coeffs2 = 1*LL,(2*LH,2*HL,2*HH)
    fig = plt.figure(figsize=(12, 3))
    for i, a in enumerate([LL, LH, HL, HH]):
        ax = fig.add_subplot(1, 4, i + 1)
        ax.imshow(a, interpolation="nearest", cmap=plt.cm.gray)
        ax.set_title(titles[i], fontsize=10)
        ax.set_xticks([])
        ax.set_yticks([])
    result = pywt.idwt2(coeffs2,'bior1.3')
    result *= 255
    result = np.uint8(result)
    a = np.concatenate([result,original,],axis=1)
    cv2.imshow('a',result)
    cv2.imwrite('2.png',result)
    cv2.waitKey(0)
    
    fig.tight_layout()
    plt.show()
    

    以上两种方法均没有体现同态的思想,知识变换到频域和时频域进行高通、高/低同滤波。因为同态滤波是基于照明-反射模型的,明显的特征是取对数,但是上述代码并未体现。

    展开全文
  • 灰度图像上频域滤波器的简单 Matlab 实现,包括 1. 高斯低通滤波器2. 巴特沃斯低通滤波器3. 高斯高通滤波器4. 巴特沃斯高通滤波器5. 使用高斯高通的高升压滤波器6. 使用巴特沃斯高通的高升压滤波器
  • 图像增强频域滤波matlab代码数字图像处理技术 使用 Matlab 创建的数字图像处理技术 空间和频域滤波 本节涉及在空间和频域中用于图像处理的不同滤波方法的实现。 低光图像对比度增强 本节涉及用于低光图像图像处理的...
  • 数字图像的频域滤波 1)设定截止频率D0 =100,试分别构建256×256的频域理想低通滤波器(ILPF)和频域理想高通滤波器(IHPF)。编写 MATLAB 代码,分别画出它们的频域滤波器响应 3D图及其对应的 2D 投影平面图。 2)...
  • 2010 2010年数字图像处理实验报告 22001100 matlab matlab 含mmaattllaabb源程序
  • 数字图像处理(matlab版)-冈萨雷斯-频域滤波书中代码,有如低通,高通滤波,傅立叶变换和反变换等等。
  • 时域滤波到频域滤波的转换,换句话说就是利用频域快速傅立叶变换来解决时域卷积的计算量问题,适用于高阶滤波器的设计 代码应该还是比较容易懂的
  • 本文提出采用频率滤波器对均衡器进行设计的方法,区别于其他的均衡器的实时滤波器的设计,既避免了IIR滤波器相位偏移的现象,又避免了FIR滤波器的延迟,因此对频率滤波具有很好的效果。
  • 实验4 频域滤波1.docx

    2019-05-29 19:43:13
    关于matlab图像处理技术的频域滤波的实验代码和结果,包括高斯低通滤波器,使用函数fspecial生成’sobel’空域滤波器;使用函数freqz2将空域滤波器转换成相应的频域滤波器;使用函数imfilter进行空域滤波;使用函数...
  • 二、 频域滤波增强及其应用 1、频域滤波增强原理 空域图像增强----线性系统滤波 空域滤波图像增强是一种基于线性系统的滤波技术,卷积定理是空域滤波的基础。 频域图像增强 2、频域滤波增强方法 1、...

    二、 频域滤波增强及其应用

    1、频域滤波增强原理

    空域图像增强----线性系统滤波

    空域滤波图像增强是一种基于线性系统的滤波技术,卷积定理是空域滤波的基础。
    在这里插入图片描述

    频域图像增强

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2、频域滤波增强方法

    1、频域低通(平滑)滤波

    定义:以D0为半径的圆内所有频率分量无损的通过,圆外所有频率分量完全衰减。
    在这里插入图片描述
    在这里插入图片描述

    (1)、理想低通滤波器效果

    在这里插入图片描述

    (2)、理想低通滤波器分析
    • 1、模糊
    • (1)、87%能量高度集中截止频率为10的圆内。
    • (2)、大部分边缘信息包含被滤去13%能量中。
    • (3)、滤波器截止频率增加,模糊程度减少。

    注意:低通滤波是一个以牺牲图像清晰度为代价来减少干扰修饰过程。

    • 2 、振铃效应
    • (1)、边缘渐变部分出现灰度值强弱震荡。
    • (2)、边缘部分出现加边效应
    (3)、sinc函数

    sinc函数,又称之为辛格函数,用sinc(x)表示。
    1、一维sinc函数
    它们都是正弦函数和单调递减函数 1/x的乘积:
    (1)、在数字信号处理和通信理论中,归一化sinc函数通常定义为:
    在这里插入图片描述
    (2)、在数学领域,非归一化sinc函数 (for sinus cardinalis)定义为:
    在这里插入图片描述
    在这两种情况下,函数在 0 点的奇异点有时显式地定义为 1,sinc 函数处处可解析。非归一化sinc函数等同于归一化sinc函数,只是它的变量中没有放大系数 π。

    • 函数图形
    • 在这里插入图片描述
      2、二维sinc函数
      二维的sinc()函数是一维sinc函数的扩展,其归一化定义为:
      在这里插入图片描述
    • 图形形状

    在这里插入图片描述

    (4)、ILPF特性原因分析

    在这里插入图片描述

    • 怎么避免振铃现象
      改变这种通过频率和截止频率间明显截断的尖锐不连续性性而采用平滑过渡的传递函数有望解决这一问题。
    (5)、 巴特沃斯低通滤波器(BLPF)

    在这里插入图片描述
    在这里插入图片描述

    • 不同于ILPF,BLPF变换函数在通过的低频与被滤除的高频之间没有明显的截断。

    当n等于2时,巴特沃斯低通滤波器效果
    在这里插入图片描述
    一、BLPF滤波器分析
    1、模糊
    (1)、模糊程度减少
    (2)、尾部包含了较多高频分量,对噪声的平滑效果不如ILPF。
    2、没有明显的振铃效应
    (1)、滤波器在高频与低频之间平滑过渡的结果。
    在这里插入图片描述
    二、不同阶数BLPF滤波分析

    当D0 = 5时
    在这里插入图片描述
    二阶BLPF处于有效低通滤波和可接受的振铃特征之间。当n = 20 的时候和理想低通滤波器效果就一样了。

    我们能不能设计一种滤波器,他一定没有振铃效应呢?
    高斯函数的傅里叶变换空域和频率域一样的。
    高斯函数的傅里叶变化仍然是高斯函数。

    (6)、高斯低通滤波器(GLPF)

    在这里插入图片描述
    在这里插入图片描述
    截止频率D0为滤波器下降到最大值的0.607处。

    3、频域低通滤波器应用

    1、字符识别实例

    在这里插入图片描述

    2、印刷出版业

    在这里插入图片描述

    3、卫星和航空

    在这里插入图片描述

    目的:尽可能模糊细节而保留大的可识别特性。

    展开全文
  • 上一小节我们介绍了图像频域变换,本小节将以此为基础,介绍图像频域滤波的相关内容,包含常见高通/低通/带通/带阻/方向滤波等频域滤波方法,同时以C语言编码实现,帮助初学者理解和掌握如何进行图像的频域滤波

            上一小节我们介绍了图像频域变换,本小节将以此为基础,介绍图像频域滤波的相关内容,包含常见高通/低通/带通/带阻/方向滤波等频域滤波方法,同时以C语言编码实现,帮助初学者理解和掌握如何进行图像的频域滤波。

    [定义与算法]

            图像频域滤波是指将图像由空间域经过傅里叶变换转换到频率域,对图像的频谱图进行滤波,然后再通过傅里叶逆变换将滤波后的图像信息还原到空间域的滤波方法。它可以解决一些在空域特征较弱,但在频域特征明显的图像信号处理问题。频域滤波同样也包含高通滤波、低通滤波、带通滤波以及方向滤波等等内容。作为初学者,我们要掌握的是频域滤波的方法,方可举一反三和学以致用。

            频域滤波的一般方法流程如下图Fig.1所示:

            对于一幅图像S,经过傅里叶变换FFT得到频谱图F,对F使用滤波器t进行滤波,也就是相乘,得到新的频谱图F’,然后对其进行傅里叶逆变换IFFT,得到结果图D。对于滤波器t的选择,根据不同的种类会得到不同的滤波效果,下面我们介绍几种常见的滤波器。

            低通滤波器:

    展开全文
  • 数字图像处理——频域滤波基础

    千次阅读 2021-07-28 21:15:07
    频域滤波基础 1、频域滤波与空域滤波的关系 傅立叶变换可以将图像从空域变换到频域,而傅立叶反变换则可以将图像的频谱逆变换为空域图像。这样一来,我们可以利用空域图像与频域之间的对应关系,尝试将空域卷积滤波...

    频域滤波基础

    1、频域滤波与空域滤波的关系

    傅立叶变换可以将图像从空域变换到频域,而傅立叶反变换则可以将图像的频谱逆变换为空域图像。这样一来,我们可以利用空域图像与频域之间的对应关系,尝试将空域卷积滤波变换为频域滤波,而后再将频域滤波处理后的图像再反变换回空间域,从而达到图像增强的目的。这样做的一个最主要的吸引力在于频域滤波的直观性特点

    根据著名的卷积定理两个二维连续函数在空间域中的卷积可由其相应的两个傅立叶变换乘积的反变换而得到;反之,在频域中的卷积可由在空间域中乘积的傅立叶变换而得到,即:
    f ( x , y ) ∗ h ( x , y )    ⟺    F ( u , v ) H ( u , v ) f(x,y)*h(x,y) \iff F(u,v)H(u,v) f(x,y)h(x,y)F(u,v)H(u,v)

    f ( x , y ) h ( x , y )    ⟺    F ( u , v ) ∗ H ( u , v ) f(x,y)h(x,y) \iff F(u,v)*H(u,v) f(x,y)h(x,y)F(u,v)H(u,v)

    其中,F(u,v) 和 H(u,v) 分别表示 f(x,y) 和 h(x,y) 的傅立叶变换,而符号表示傅立叶变换对。

    式(1) 构成了整个频域滤波的基础。


    2、频域滤波的基本步骤

    根据式(1) 进行频域滤波通常应遵循以下步骤:

    1. 计算原始图像 f(x,y) 的 DFT,得到频谱 F(u,v);
    2. 将频谱 F(u,v) 的零频点移动到频谱图的中心位置;
    3. 计算滤波器函数 H(u,v) 与 F(u,v) 的乘积 G(u,v);
    4. 将频谱 G(u,v) 的零频点移回到频谱图的左上角位置;
    5. 计算第 (4) 步计算结果的傅立叶反变换 g(x,y);
    6. 取 g(x,y) 的实部作为最终滤波后的结果图像。

    由上面叙述可知,滤波能否取得理想的关键取决于频域滤波函数 H(u,v)。常常称之为滤波器,或滤波器传递函数,因为它在滤波中抑制或滤除了频谱中某些频率的分量,而保留其他的一些频率不受影响。在这里只关心其值为实数的滤波器,这样滤波过程中 H 的每一个实数元素分别乘以 F 中对于位置的复数元素,从而使 F 中元素的实部和虚部等比例的变化,不会改变 F 的相位谱,这种滤波器也因此称为 “零相位” 滤波器。这样,最终反变换回空间域得到的滤波结果图像 g(x,y) 理论上也应当为实函数。然而由于计算舍入误差等原因,可额能会有非常小的虚部,通常将虚部直接忽略。


    3、频域滤波的 Matlab 实现

    编写了一个 imfreqfilt 函数:

    function out = imfreqfilt(I,ff)
    %imfreqfilt函数     对灰度图像进行频域滤波
    %参数I              输入的空域图像
    %参数ff             应用的与原图像等大的频域滤镜
    
    if (ndims(I)==3) && (size(I,3)==3) % RGB图像
        I = rgb2gray(I);
    end
    
    if (size(I) ~= size(ff))
        msg1 = sprintf('%s: 滤镜与原图像不等大,检查输入', mfilename);
        msg2 = sprintf('%s: 滤波操作已经取消', mfilename);
        eid = sprintf('Images:%s:ImageSizeNotEqual',mfilename);
        error(eid,'%s %s',msg1,msg2);
    end
    
    % 快速傅立叶变换
    f = fft2(double(I));
    
    % 移动原点
    s = fftshift(f);
    
    % 应用滤镜及反变换
    out = s .* ff; %对应元素相乘实现频域滤波
    out = ifftshift(out);
    out = ifft2(out);
    
    % 求模值
    out = abs(out);
    
    % 归一化以便显示
    out = out/max(out(:));
    
    end
    

    4、频率低通滤波器

    在频谱中,低频主要对应图像在平滑区域的总体灰度级分布,而高频对应图像的细节部分,如边缘和噪声。因此,图像平滑可以通过衰减图像频谱中的高频部分来实现,这就建立了空间域图像平滑和频域低通滤波之间对应关系。

    4.1、理想低通滤波器及其实现

    4.4.1、理论基础

    最容易想到的衰减高频成份的方法就是咋一个称为 “截止频率” 的位置 “截断” 所有的高频成份,将图像频谱中所有高于这一截断频率的频谱成份设为 0,低于截止频率的成份设为保持不变。能够达到这种效果的滤波器如图:

    请添加图片描述

    如果图像的宽度为 M,高度为 N,那么理想低通滤波器可形式化地描述为:
    H ( u , v ) = { 1 , [ ( u − M 2 ) 2 + ( v − N 2 ) 2 ] ≤ D 0 0 , [ ( u − M 2 ) 2 + ( v − N 2 ) 2 ] ≥ D 0 H(u,v)=\begin{cases}1,[(u-\frac{M}{2})^2+(v-\frac{N}{2})^2]\leq D_0 \\ 0,[(u-\frac{M}{2})^2+(v-\frac{N}{2})^2]\ge D_0 \end{cases} H(u,v)={1,[(u2M)2+(v2N)2]D00,[(u2M)2+(v2N)2]D0
    其中,D0 表示理想低通滤波器的截止频率,滤波器的频率域原点在频谱图像的中心处,在以截止频率为半径的圆形区域之内的滤镜元素值全部为 1,而该圆之外的滤镜元素值全部为 0。理想低通滤波器的频率特性在截止频率处十分陡峭,无法用硬件实现,这也是我们称之为理想的原因。

    理想低通滤波器可在一定程度上去除图像噪声,但由此带来的图像边缘和细节的模糊效应也是较为明显,其效果类似于均值滤波。

    4.4.2、Matlab 实现

    编写了一个 imidealflpf 函数可以得到截止频率为 freq 的理想低通滤波器:

    function ff = imidealflpf(I, freq)
     % imidealflpf函数     构造理想的频域低通滤波器
     % I参数               输入的灰度图像
     % freq参数            低通滤波器的截止频率
     % 返回值 ff           与I等大的频域滤镜   
     
     [M,N] = size(I);
     ff = ones(M, N);
     for i = 1:M
         for j = 1:N
             if (sqrt (((i-M/2)^2 + (j-N/2)^2 ))>freq)  
                 ff(i,j)=0; %高于截止频率 设为0
             end
         end
     end
    

    【例】理想低通滤波器的实现

    img = imread('lena_Rician10.bmp');
    
    %生成滤镜  截止频率为20
    ff = imidealflpf(img,20);
    out = imfreqfilt(img,ff);
    
    %生成滤镜  截止频率为40
    ff = imidealflpf(img,40);
    out1 = imfreqfilt(img,ff);
    
    %生成滤镜  截止频率为80
    ff = imidealflpf(img,80);
    out2 = imfreqfilt(img,ff);
    
    figure;
    subplot(2,4,1);
    imshow(img);
    title('原图');
    
    subplot(2,4,2);
    imshow(out);
    title('截止频域为20');
    
    subplot(2,4,3);
    imshow(out1);
    title('截止频率为40');
    
    subplot(2,4,4);
    imshow(out2);
    title('截止频率为80');
    
    %展示频域的频谱
    f = fft2(img);
    f = abs(fftshift(f)); % 频谱
    f = log(1 + f);  %压缩频率的范围
    
    f1 = fft2(out);
    f1 = abs(fftshift(f1)); % 频谱
    f1 = log(1 + f1);  %压缩频率的范围
    
    f2 = fft2(out1);
    f2 = abs(fftshift(f2)); % 频谱
    f2 = log(1 + f2);  %压缩频率的范围
    
    f3 = fft2(out2);
    f3 = abs(fftshift(f3)); % 频谱
    f3 = log(1 + f3);  %压缩频率的范围
    
    
    subplot(2,4,5);
    imshow(f,[]);
    title('原图对应的频谱');
    
    subplot(2,4,6);
    imshow(f1,[]);
    title('freq = 20 的图像对应的频谱');
    
    subplot(2,4,7);
    imshow(f2,[]);
    title('freq = 40 的图像对应的频谱');
    
    subplot(2,4,8);
    imshow(f3,[]);
    title('freq = 80 的图像对应的频谱');
    

    在这里插入图片描述

    当截止频率非常低时,只有非常靠近原点的低频成份能够通过,图像模糊严重;截止频率非常高,通过的频率成份就越多,图像模糊的程度就越小,所获得的图像也就越接近原图像。但可以看出,理想低通滤波器不能很好地兼顾噪声滤除与细节保留这两方面

    4.2、高斯低通滤波器及其实现

    4.2.1、理论基础

    高斯低通滤波器的频域二维形式由下式给出:
    H ( u , v ) = e − [ ( u − M 2 ) 2 + ( v − N 2 ) 2 ] / 2 σ 2 H(u,v)=e^{-[(u-\frac{M}{2})^2+(v-\frac{N}{2})^2]/2\sigma^2} H(u,v)=e[(u2M)2+(v2N)2]/2σ2
    高斯函数具有相对简单的形式,而且它的傅立叶变换和傅立叶反变换都是实高斯函数。为了简单起见,下面给出一个一维高斯函数的傅立叶变换和傅立叶反变换作为例子。式(5) 告诉我们一维高斯函数的傅立叶正变换和反变换仍为高斯函数。
    H ( u ) = A e − u 2 2 σ 2    ⟺    h ( x ) = 2 π σ A − 2 π 2 σ 2 x 2 H(u)=Ae^{-\frac{u^2}{2\sigma^2}} \iff h(x)=\sqrt{2\pi\sigma}A^{-2\pi^2\sigma^2x^2} H(u)=Ae2σ2u2h(x)=2πσ A2π2σ2x2
    式中:σ 是高斯曲线的标准差。

    频域和与之对应的空间域一维高斯函数的图形如下:

    在这里插入图片描述

    在这里插入图片描述

    当 σ 增大时,H(u) 的图像倾向于变窄,而 h(x) 的图像倾向于变窄和变高。这也体现了频率域和空间域的对应关系。频率域滤波器越窄,滤波的高频成份越多,图像就越平滑(模糊);而在空间域,对应的滤波器就越窄,相应的卷积模板越平坦,平滑(模糊)效果就越明显。

    下图给出了 σ 取值为 3 和 1 时的频域二维高斯滤波器的三维曲面表示,可以看出和二维高斯滤波器拥有同样的特点。

    在这里插入图片描述

    4.2.2、Matlab 实现

    编写 imgaussflpf 函数:

    function ff = imgaussflpf(I,freq,n)
     % imbutterworthflpf函数     构造布特沃斯的频域低通滤波器
     % I参数                     输入的灰度图像
     % freq参数                  低通滤波器的截止频率
     % n参数                     阶数
     % 返回值 ff                 与I等大的频域滤镜   
     
     [M,N] = size(I);
     ff = ones(M,N);
     for i = 1:M
         for j = 1:N
             ff(i,j) = 1/(1 + (sqrt((i - M/2)^2 + (j - N/2)^2)/freq)^(2*n));
         end
     end
    

    【例】实现高斯低通滤波

    img = imread('lena_Rician10.bmp');
    
    %生成滤镜  截止频率为20,阶数为2
    ff = imgaussflpf(img,20,2);
    out = imfreqfilt(img,ff);
    
    %生成滤镜  截止频率为20,阶数为5
    ff = imgaussflpf(img,20,5);
    out1 = imfreqfilt(img,ff);
    
    %生成滤镜  截止频率为80,阶数为2
    ff = imgaussflpf(img,80,2);
    out2 = imfreqfilt(img,ff);
    
    %生成滤镜  截止频率为80,阶数为5
    ff = imgaussflpf(img,80,5);
    out3 = imfreqfilt(img,ff);
    
    figure;
    subplot(2,5,1);
    imshow(img);
    title('原图');
    
    subplot(2,5,2);
    imshow(out);
    title('freq = 20,n = 2');
    
    subplot(2,5,3);
    imshow(out1);
    title('freq = 20,n = 5');
    
    subplot(2,5,4);
    imshow(out2);
    title('freq = 80,n = 2');
    
    subplot(2,5,5);
    imshow(out3);
    title('freq = 80,n = 5');
    
    %展示频域的频谱
    f = fft2(img);
    f = abs(fftshift(f)); % 频谱
    f = log(1 + f);  %压缩频率的范围
    
    f1 = fft2(out);
    f1 = abs(fftshift(f1)); % 频谱
    f1 = log(1 + f1);  %压缩频率的范围
    
    f2 = fft2(out1);
    f2 = abs(fftshift(f2)); % 频谱
    f2 = log(1 + f2);  %压缩频率的范围
    
    f3 = fft2(out2);
    f3 = abs(fftshift(f3)); % 频谱
    f3 = log(1 + f3);  %压缩频率的范围
    
    f4 = fft2(out3);
    f4 = abs(fftshift(f4)); % 频谱
    f4 = log(1 + f4);  %压缩频率的范围
    
    
    subplot(2,5,6);
    imshow(f,[]);
    title('原图对应的频谱');
    
    subplot(2,5,7);
    imshow(f1,[]);
    title('freq = 20,n = 2的频谱');
    
    subplot(2,5,8);
    imshow(f2,[]);
    title('freq = 20,n = 5的频谱');
    
    subplot(2,5,9);
    imshow(f3,[]);
    title('freq = 80,n = 2的频谱');
    
    subplot(2,5,10);
    imshow(f4,[]);
    title('freq = 80,n = 5的频谱');
    

    在这里插入图片描述


    5、频率域高通滤波器

    图像锐化可以通过衰减图像频谱中的低频成份来实现,这就建立了空间域图像锐化与频域高通滤波之间对应关系。

    5.1、高斯高通滤波器及其实现

    对应于高斯低通滤波器:
    H ( u , v ) = 1 − e − [ ( u − M 2 ) 2 + ( v − N 2 ) 2 ] / 2 σ 2 H(u,v)=1-e^{-[(u-\frac{M}{2})^2+(v-\frac{N}{2})^2]/2\sigma^2} H(u,v)=1e[(u2M)2+(v2N)2]/2σ2
    在这里插入图片描述

    5.1.1、Matlab 实现

    编写 imgaussfhpf 函数:

    function ff = imgaussfhpf(I,sigma)
     % imgaussfhpf函数     构造高斯的频域低通滤波器
     % I参数               输入的灰度图像
     % sigma参数           高斯函数的sigma
     % 返回值 ff           与I等大的频域滤镜   
     
     [M,N] = size(I);
     ff = ones(M,N);
     for i = 1:M
         for j = 1:N
             ff(i,j) = 1 - exp(-((i - M/2).^2 + (j - N/2).^2) / 2 /(sigma.^2));
         end
     end
    

    【例】实现高斯高通滤波器

    img = imread('lena_Rician10.bmp');
    
    %生成滤镜  截止频率为20
    ff = imgaussfhpf(img,20);
    out = imfreqfilt(img,ff);
    
    %生成滤镜  截止频率为40
    ff = imgaussfhpf(img,40);
    out1 = imfreqfilt(img,ff);
    
    %生成滤镜  截止频率为80
    ff = imgaussfhpf(img,80);
    out2 = imfreqfilt(img,ff);
    
    
    subplot(2,4,1);
    imshow(img);
    title('原图');
    
    subplot(2,4,2);
    imshow(out);
    title('sigma = 20');
    
    subplot(2,4,3);
    imshow(out1);
    title('sigma = 40');
    
    subplot(2,4,4);
    imshow(out2);
    title('sigma = 80');
    
    %展示频域的频谱
    f = fft2(img);
    f = abs(fftshift(f)); % 频谱
    f = log(1 + f);  %压缩频率的范围
    
    f1 = fft2(out);
    f1 = abs(fftshift(f1)); % 频谱
    f1 = log(1 + f1);  %压缩频率的范围
    
    f2 = fft2(out1);
    f2 = abs(fftshift(f2)); % 频谱
    f2 = log(1 + f2);  %压缩频率的范围
    
    f3 = fft2(out2);
    f3 = abs(fftshift(f3)); % 频谱
    f3 = log(1 + f3);  %压缩频率的范围
    
    
    subplot(2,4,5);
    imshow(f,[]);
    title('原图对应的频谱');
    
    subplot(2,4,6);
    imshow(f1,[]);
    title('sigma = 20的频谱');
    
    subplot(2,4,7);
    imshow(f2,[]);
    title('sigma = 40的频谱');
    
    subplot(2,4,8);
    imshow(f3,[]);
    title('sigma = 80的频谱');
    

    在这里插入图片描述

    高斯高通滤波器可以较好地提取图像中的边缘信息,σ 参数取值越小,边缘信息提取越不精确,会包含越多的非边缘信息;σ 参数取值越大,边缘提取越精确,但可能包含不完整的边缘信息。

    5.2、频域拉普拉斯滤波器及其实现

    5.2.1、理论基础

    频域拉普拉斯算子的推导可以从一维开始,由傅立叶变换的性质可知:
    F F T [ d n f ( x ) d x n ] = ( j u ) n F ( u ) FFT[\frac{d^nf(x)}{dx^n}]=(ju)^nF(u) FFT[dxndnf(x)]=(ju)nF(u)
    因此拉普拉斯算子的傅立叶变换计算如下:
    F F T [ ∂ 2 f ( x , y ) ∂ x 2 + ∂ 2 f ( x , y ) ∂ y 2 ] = ( j u ) 2 F ( u , v ) + ( j v ) 2 F ( u , v ) = − ( u 2 + v 2 ) F ( u , v ) FFT[\frac{\partial^2f(x,y)}{\partial x^2}+\frac{\partial^2f(x,y)}{\partial y^2}]=(ju)^2F(u,v)+(jv)^2F(u,v)=-(u^2+v^2)F(u,v) FFT[x22f(x,y)+y22f(x,y)]=(ju)2F(u,v)+(jv)2F(u,v)=(u2+v2)F(u,v)
    因此有下式成立:
    F F T [ ∇ 2 f ( x , y ) ] = − ( u 2 + v 2 ) F ( u , v ) FFT[\nabla^2f(x,y)]=-(u^2+v^2)F(u,v) FFT[2f(x,y)]=(u2+v2)F(u,v)
    也即频域的拉普拉斯滤波器为:
    H ( u , v ) = − ( u 2 + v 2 ) H(u,v)=-(u^2+v^2) H(u,v)=(u2+v2)
    根据频域图像频率原点的平移规律,将上式改写为:
    H ( u , v ) = − [ ( u − M 2 ) 2 + ( v − N 2 ) 2 ] H(u,v)=-[(u-\frac{M}{2})^2+(v-\frac{N}{2})^2] H(u,v)=[(u2M)2+(v2N)2]

    5.2.2、Matlab 实现

    编写 imlapf 函数:

    function out = imlapf(I)
    %imlapf 函数    构造频域拉普拉斯滤波器
    %I 参数         输入的灰度图像
    
    [M, N] = size(I);
    out = ones(M, N);
    for i = 1:M
        for j = 1:N
            out(i, j) = -((i-M/2)^2+(j-N/2)^2);
        end
    end
    
    end
    

    【例】拉普拉斯滤波实现

    img = imread('lena.BMP');
    
    %生成滤镜  
    ff = imlapf(img);
    out = imfreqfilt(img,ff);
    
    figure;
    subplot(2,2,1);
    imshow(img);
    title('原图');
    
    subplot(2,2,2);
    imshow(out);
    title('laplace滤波图像');
    
    %展示频域的频谱
    f = fft2(img);
    f = abs(fftshift(f)); % 频谱
    f = log(1 + f);  %压缩频率的范围
    
    f1 = fft2(out);
    f1 = abs(fftshift(f1)); % 频谱
    f1 = log(1 + f1);  %压缩频率的范围
    
    
    subplot(2,2,3);
    imshow(f,[]);
    title('原图对应的频谱');
    
    subplot(2,2,4);
    imshow(f1,[]);
    title('laplace滤波图像对应的频谱');
    

    在这里插入图片描述


    6、Matlab 综合案例——利用频域滤波消除周期噪声

    6.1、频域带阻滤波器

    所谓 “带阻” 就是阻止频谱中某一频带范围的分量通过,其他频率成份则不受影响。常见的带阻滤波器有理想带阻滤波器和高斯带阻滤波器。

    6.1.1、理想带阻滤波器

    理想带阻滤波器的表达式为:
    H ( u , v ) = { 0 , ∣ D − D 0 ∣ ≤ W 1 , ∣ D − D 0 ∣ > W H(u,v)=\begin{cases}0,|D-D_0|\leq W \\ 1,|D-D_0|>W \end{cases} H(u,v)={0,DD0W1,DD0>W
    式中:D0 是阻塞频带中心频率到频率原点的距离;W 是阻塞频带宽度;D 是 (u,v) 点到频率原点的距离。

    在这里插入图片描述

    6.1.2、高斯带阻滤波器

    H ( u , v ) = 1 − e − 1 2 [ D 2 ( u , v ) − D 0 2 D ( u , v ) W ] 2 H(u,v)=1-e^{-\frac{1}{2}[\frac{D^2(u,v)-D_0^2}{D(u,v)W}]^2} H(u,v)=1e21[D(u,v)WD2(u,v)D02]2

    式中:D0 是阻塞频带中心频率到频率原点的距离;W 是阻塞频带宽度;D 是 (u,v) 点到频率原点的距离。

    在这里插入图片描述

    6.1.3、高斯带阻滤波器的 Matlab 实现

    编写了 imgaussfbrf 函数:

    function ff = imgaussfbrf(I,freq,width)
     % imgaussbrf函数            构造高斯带阻滤波器
     % I参数                     输入的灰度图像
     % freq参数                  截止频率
     % width参数                 阻带宽度
     % 返回值 ff                 与I等大的频域滤镜   
     
     [M,N] = size(I);
     ff = ones(M,N);
     for i = 1:M
         for j = 1:N
             ff(i,j) = 1 - exp(-0.5*((((i - M/2)^2 + (j - N / 2).^2) - freq^2) / (sqrt((i - M/2)^2 + (j - N / 2)^2) * width))^2); %gauss带阻滤波器公式
         end
     end
    

    6.2、带阻滤波消除周期噪声

    6.2.1、得到周期噪声图像

    通常使用正弦平面波来描绘周期性噪声。

    img = imread('lena.BMP');
    
    [M,N] = size(img);
    I = img;
    for i = 1:M
        for j = 1:N;
            I(i,j) = I(i,j) + 20 * sin(20 * i) + 20 * sin(20 * j); %给原图像添加周期性噪声
        end
    end
    
    figure;
    subplot(3,2,1);
    imshow(img);
    title('原图');
    
    subplot(3,2,2);
    imshow(I);
    title('added noise');
    
    %得到频谱
    f = fft2(img);
    f = abs(fftshift(f));  %频谱
    f = log(1 + f);   %压缩频率范围
    
    f1 = fft2(I); 
    f1 = abs(fftshift(f1));  %频谱
    f1 = log(1 + f1);   %压缩频率范围
    
    subplot(3,2,3);
    imshow(f,[]);
    title('原图频谱');
    
    subplot(3,2,4);
    imshow(f1,[]);
    title('added noise 频谱');
    
    %带阻滤波
    ff = imgaussfbrf(I,50,5); % 构造带阻滤波器,截止频率为50,阻带宽度为5
    
    subplot(3,2,5);
    imshow(ff,[]);
    title('高斯带阻滤波器');
    
    out = imfreqfilt(I,ff);  % 带阻滤波
    
    subplot(3,2,6);
    imshow(out,[]);
    title('带阻滤波结果');
    

    在这里插入图片描述

    展开全文
  • 通过这个脚本,我假装演示了在频域中过滤图像和在时域中过滤图像之间的差异和等价性。 这是一个简单的练习,对于在该领域进行陈述的信号和图像处理学生非常有用。 一个好的信号处理工程师必须知道如何在两个域中进行...
  • 频域滤波步骤: 1.给定大小为M×NM\times NM×N的输入图像,将其填充为大小P×QP\times QP×Q的图像其中P=2M,Q=2NP=2M,Q=2NP=2M,Q=2N。填充方法为:在M,N的后面添加0(尾部加0)。设经过此步骤的图像为fp(x,y)f_p(x,...
  • 文章目录前言一、空域卷积二、频域滤波三,高斯函数四,matlab代码高斯函数空域卷积高斯函数频域卷积总结 前言 卷积:函数空间域的卷积的傅里叶变换是函数傅里叶变换的乘积。对应地,频率域的卷积与空间域的乘积...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,415
精华内容 4,966
关键字:

频域滤波