图像处理 正交滤波器_正交镜像滤波器组 - CSDN
  • 内容来自于刘定生老师的数字图像处理课和课件,如有侵权,联系删除。 频域变换意义:滤波,增强,去相关 图像处理主要看做线性系统 若x1(t)-->y1(t) x2(t)-->y2(t) 当且仅当 x1(t)+x2(t)-->y1(t)+...

    内容来自于刘定生老师的数字图像处理课和课件,如有侵权,联系删除。

     

    频域变换意义:滤波,增强,去相关

    图像处理主要看做线性系统

    若x1(t)-->y1(t)

    x2(t)-->y2(t)

    当且仅当

    x1(t)+x2(t)-->y1(t)+y2(t)

     

    卷积、相关的概念

    正交性:基轴正交

    完备性:(个人认为不需要花过多时间在这个性质的证明上)

     

    正交变换---》酉变换

     

    在图像处理中,正交变换引申出基图像的概念。

     

     

     

     

     

    图像变换

    p11

    傅里叶变换

    正交变换保证图像变换后的紧凑性

     

    其他变换:

    离散余弦变换

    是简化傅里叶变换的一种方法

     

    用于压缩编码

     

    沃尔什-哈达玛变换

    找到计算更简单的变换?

    构建更简单的正交函数集

     

    一维

    8个函数满足正交性和完备性

     

    二维

    递推关系

     

     

     

    应用:电话布线消除串音

     

    斜(slant)变换

     

    K-L变换

     

     

     

     

     

    哈尔变换

    正交稀疏矩阵,可实现快速计算

     

     

    p14

    小波变换

     

    由傅里叶变换引入小波变换:

    为了克服上述缺点,使用有限宽度基函数的方法,即时域加窗,首先产生了Gabor变换(1946年)又叫短时傅里叶变换。

     

    进一步发展为使用频率不同、位置不同、宽度有限的基函数进行变换。即小波变换。

    小波是具有有限区间和均值为0 的波。

     

     

    小波变换定义了一组由尺度因子a规范的连续滤波器组。(滤波器解释)

     

     

    几何典型的小波基:

     Mexican Hat Wavelet

     Haar Wavelet

     Morlet Wavelet

     Daubechies

     

     

     

     

     

     

    小波分解树:

     

    分解与重构:

     

     

     

    展开全文
  • 数字图像处理与Python实现笔记摘要绪论1 数字图像处理基础知识2 彩色图像处理初步3 空间滤波4 频域滤波4.1 傅里叶变换4.1.1 一维傅里叶变换4.1.2 二维傅里叶变换4.2 傅里叶变换的性质4.2.1 傅里叶变换的基本性质...

    摘要

    1. 简要介绍数字图像处理涉及的一些基本概念、基本运算、基本类型,以及如何通过Python对数字图像进行读取和简单操作。
    2. 以彩色图像为例对数字图像处理的基本操作进行介绍,熟悉数字图像处理的基本过程,主要包括颜色空间的基本概念、伪彩色图像处理操作,彩色图像处理简单操作。
    3. 瞄准在空间域中对图像进行增强,介绍空间滤波的机理、基本概念以及使用的基本技术。本章内容包括空间滤波基本概念、基于空间滤波的图像平滑处理、基于空间滤波的锐化操作以及混合空间增强。
    4. 从频域角度入手对图像处理及增强方法展开介绍。因为频域滤波所需的数学知识较多,所以本章采取由浅入深的策略,首先介绍一维傅里叶变换,其次介绍二维傅里叶变换和快速傅里叶变换,最后介绍图像频域滤波中出现的各种技术,其大体可分为低通滤波和高通滤波两大类。
    5. 从全局特征提取和局部特征提取两方面入手,分别介绍颜色特征、纹理特征、形状特征、边缘特征、点特征的提取方法。本章内容是目前机器视觉和图像处理领域的学者关注较多的内容,通过穿插较多的实例,帮助读者理解图像特征提取的基本技术。
    6. 瞄准如何减少图像传输及存储数据大小,介绍主要使用的压缩技术,包括有损压缩和无损压缩等,并使用JPEG压缩技术串讲全章知识点。
    7. 介绍图像的小波域表示及多分辨率表示。

    绪论

    • 人工智能是引领未来发展的战略性技术,是新一轮科技革命和产业变革的重要驱动力量,将深刻地改变人类社会生活。

    • 促进人工智能和实体经济的深度融合,构建数据驱动、人机协同、跨界融合、共创分享的智能经济形态,更是推动质量变革、效率变革、动力变革的重要途经。

    • 进年来,我国人工智能新技术、新产品、新业态持续涌现,与农业、制造业、服务业等行业的融合步伐明显加快,在技术创新、应用推广、产业发展等方面成效初显。

    • 人工智能技术并不是一个新生事物,它在最近几年引起全球性关注并得到飞速发展的主要原因,在于它的三个基本要素(算法、数据、算力)的迅猛发展,其中又以数据和算力的发展尤为重要。

    • 物联网技术的蓬勃发展使得数据累计的难度越来越低,而芯片算力的不断提升,使得过去只能通过云计算才能完成的人工智能运算,现在可以下沉到最普通的设备上完成。

    • 物联网技术为机器带来感知能力,而人工智能则通过计算算力为机器带来了决策能力,正如感知和大脑对自然生命进化所起到的必然性作用。

    1 数字图像处理基础知识

    https://hulin.blog.csdn.net/article/details/107570020

    2 彩色图像处理初步

    https://hulin.blog.csdn.net/article/details/107578369

    3 空间滤波

    https://hulin.blog.csdn.net/article/details/107589248

    4 频域滤波

    • 法国数学家傅里叶在《热分析理论》中指出:任何周期函数都可以分解为不同频率的正弦或余弦级数的形式,即傅里叶级数。该方法从本质上完成了空间信息到频域信息的变换,通过变换将空间域信号处理问题转换成频域信号处理问题。
    • 傅里叶变换可以将任何周期函数,分解为不同频率的信号成分。
    • 频域变换为信号处理提供了不同的思路,有时在空间域无法处理的问题,通过频域变换却非常容易。
    • 为了更加有效的对数字图像进行处理,常常需要将原始图像,以某种方式变换到另一个空间,并利用图像在变换空间中特有的性质,对图像信息进行加工,然后再转换回图像空间,就可以得到所需的效果。
    • 图像变换是双向的,一般将从图像空间转换到其他空间的操作称为正变换,由其他空间转换到图像空间称为逆变换。
      在这里插入图片描述
    • 傅里叶变换将图像看作二维信号,其水平方向和垂直方向作为二维空间的坐标轴,将图像本身所在的域称为空间域。
    • 图像灰度值随空间坐标变换的节奏可以通过频率度量,称为空间频率或者频域。
    • 针对数字图像的傅里叶变换是将原始图像通过傅里叶变换转换到频域,然后再频域中对图像进行处理的方法。
    • 基于傅里叶变换的数字图像频域处理过程:首先通过正向傅里叶变换将原始图像从空间域转换到频域,然后使用频域滤波器将某些频率过滤,保留某些特定频率,最后使用傅里叶逆变换将滤波后的频域图像重新转换到空间域,得到处理后的图像。
      在这里插入图片描述
    • 相对于空间域图像处理,频域图像处理有以下优点。
      ① 频域图像处理可以通过频域成分的特殊性质,完成一些空间域图像处理难以完成的任务。
      ② 频域图像处理更有利于图像处理的解释,可以对滤波过程中产生的某些效果做出比较直观的解释。
      ③ 频域滤波器可以作为空间滤波器设计的指导,通过傅里叶逆变换可以将频域滤波器转换为空间域变换的操作。通过频域滤波做前期设计,然后在实施阶段,用空间域滤波实现。

    4.1 傅里叶变换

    • 傅里叶变换是一种常见的正交数学变换,可以将一维信号或函数分解为具有不同频率、不同幅度的正弦信号或余弦信号的组合
    • 傅里叶变换的核心贡献在于:如何求出每种正弦波或余弦波的比例或频率,给定每种正弦波或余弦波的频率可以恢复原始信号。
      在这里插入图片描述

    4.1.1 一维傅里叶变换

    • 傅里叶变换中,一般要求要求函数f(x)满足狄力克雷条件(在周期内存在有限个间断点)、有限极值条件、绝对可积条件,只有满足这3个条件,函数的傅里叶变换才是存在的。
    from matplotlib import pyplot as plt
    import numpy as np
    
    
    # 中文显示工具函数
    def set_ch():
        from pylab import mpl
        mpl.rcParams['font.sans-serif'] = ['FangSong']
        mpl.rcParams['axes.unicode_minus'] = False
    
    
    set_ch()
    
    
    def show(ori_func, sampling_period=5):
        n = len(ori_func)
        interval = sampling_period / n
        # 绘制原始函数
        plt.subplot(2, 1, 1)
        plt.plot(np.arange(0, sampling_period, interval), ori_func, 'black')
        plt.xlabel('时间'), plt.ylabel('振幅')
        plt.title('原始信号')
        # 绘制变换后的函数
        plt.subplot(2, 1, 2)
        frequency = np.arange(n / 2) / (n * interval)
        nfft = abs(ft[range(int(n / 2))] / n)
        plt.plot(frequency, nfft, 'red')
        plt.xlabel('频率(Hz)'), plt.ylabel('频谱')
        plt.title('傅里叶变换')
        plt.show()
    
    
    # 生成频率为1,角速度为2*pi的正弦波
    time = np.arange(0, 5, .005)
    x = np.sin(2 * np.pi * 1 * time)
    y = np.fft.fft(x)
    show(x, y)
    
    
    • 单一正弦波傅里叶变换结果
      在这里插入图片描述

    4.1.2 二维傅里叶变换

    • 二维傅里叶变换本质上是将一维傅里叶变换情形向二维进行简单扩展。
      在这里插入图片描述
    • 对应二维傅里叶变换的逆变换可以表示为:
      在这里插入图片描述
    from matplotlib import pyplot as plt
    import numpy as np
    from skimage import data
    
    
    # 中文显示工具函数
    def set_ch():
        from pylab import mpl
        mpl.rcParams['font.sans-serif'] = ['FangSong']
        mpl.rcParams['axes.unicode_minus'] = False
    
    
    set_ch()
    img = data.camera()
    # 快速傅里叶变换得到频率分布
    f = np.fft.fft2(img)
    # 默认结果中心点的位置是左上角,转移到中间位置
    fshift = np.fft.fftshift(f)
    # fft结果是复数,求绝对值结果才是振幅
    fimg = np.log(np.abs(fshift))
    # 展示结果
    plt.subplot(1, 2, 1), plt.imshow(img, 'gray'), plt.title('原始图像')
    plt.subplot(1, 2, 2), plt.imshow(fimg, 'gray'), plt.title('傅里叶频谱')
    plt.show()
    
    

    在这里插入图片描述

    • 棋盘图像对应的傅里叶变换
      在这里插入图片描述
    • 图像经傅里叶变换后,直流分量与图像均值成正比,高频分量则表明了图像中目标边缘的强度及方向。

    4.2 傅里叶变换的性质

    4.2.1 傅里叶变换的基本性质

    ① 线性特性。
    傅里叶变换的线性特性可以表示为:若f1(t)↔F1(Ω)f2(t)↔F2(Ω),则 af1(t)+bf2(t)↔aF1(Ω)+bF2(Ω)。其中ab为任意常数,利用傅里叶变换的线性特性,可以将待求信号分解为若干基本信号之和。
    ② 时延特性。
    时延(移位)特性说明波形在时间轴上时延,并不会改变信号幅度,仅使信号增加-Ωt0线性相位。

    • 时延移位对傅里叶频谱的影响。
      在这里插入图片描述

    ③ 频移特性。
    频移(调制)特性表明信号在时域中与复因子相乘,则在频域中将使整个频谱搬移Ω0
    ④ 尺度变换。
    尺度特性说明,信号在时域中压缩,在频域中扩展;反之,信号在时域中扩展,在频域中就一定压缩,即信号的脉宽与频宽成反比。一般来说,时宽有限的信号,其频宽无限,反之亦然。

    • 针对门限函数的尺度变换及其傅里叶变换结果。
      在这里插入图片描述
      ⑤ 时域微分特性。
      ⑥ 频域微分特性。
      ⑦ 对称性。
      ⑧ 时域卷积定理。
      ⑨ 频域卷积定理。

    4.2.2 二维傅里叶变换的性质

    相较于一维傅里叶变换,二维傅里叶变换还具有可分离性,平移特性,旋转特性等。
    ① 可分离性。
    二维离散傅里叶变换(DFT),可视为由沿着x、y方向的两个一维傅里叶变换所构成。这一性质可有效降低二维傅里叶变换的计算复杂性。

    from matplotlib import pyplot as plt
    import numpy as np
    from skimage import data, color
    
    
    # 中文显示工具函数
    def set_ch():
        from pylab import mpl
        mpl.rcParams['font.sans-serif'] = ['FangSong']
        mpl.rcParams['axes.unicode_minus'] = False
    
    
    set_ch()
    img_rgb = data.coffee()
    img = color.rgb2gray(img_rgb)
    # 在X方向实现傅里叶变换
    m, n = img.shape
    fx = img
    for x in range(n):
        fx[:, x] = np.fft.fft(img[:, x])
    for y in range(m):
        fx[y, :] = np.fft.fft(img[y, :])
    # 默认结果中心点位于左上角,转移到中间位置
    fshift = np.fft.fftshift(fx)
    # fft结果是复数,求绝对值结果才是振幅
    fimg = np.log(np.abs(fshift))
    # 展示结果
    plt.subplot(121), plt.imshow(img_rgb, 'gray'), plt.title('原始图像')
    plt.subplot(122), plt.imshow(fimg, 'gray'), plt.title('两次一维傅里叶变换的图像')
    plt.show()
    
    

    在这里插入图片描述
    ② 平移特性。
    f(x,y)在空间平移了,相当于把傅里叶变换与一个指数相乘。f(x,y)在空间与一个指数项相乘,相当于平移其傅里叶变换。
    ③ 旋转特性。
    f(x,y)旋转一定角度,相当于将其傅里叶变换F(u,v)旋转一定角度。

    4.3 快速傅里叶变换

    • 离散傅里叶变换已成为数字信号处理的重要工具,然而其计算量大,运算时间长,使用不够广泛。
    • 快速算法大大提高了其运算速度,在某些应用场合已经可以做实时处理,并且应用在控制系统中。
    • 快速傅里叶变换不是一种新的变换,是离散傅里叶变换的一种算法,是在分析离散傅里叶变换多余运算的基础上,消除这些重复工作的思想指导下得到的。

    4.3.1 快速傅里叶变换的原理

    • 离散傅里叶变换的计算时间主要由乘法决定,分解后所需的乘法次数大大减少。
    • 利用周期性和分解运算,从而减少乘法运算次数是实现快速运算的关键。

    4.3.2 快速傅里叶变换的实现

    • 快速傅里叶变换的基本思想:快速傅里叶变换(FFT)基于逐次倍乘法(Successive Doubling Method)
    • 这个方法的主要思想是利用傅里叶变换(基底)的性质,将2M个数据的傅里叶变换转化为2组M个数据的傅里叶变换。这样,原来4*M*M的运算量就降低到2*M*M的运算量了。
    • 这样就可以将原来比较复杂的傅里叶运算,分解为两个计算较简单的傅里叶运算。且还可以继续分解,如此循环推到下去,直到最后剩下若干组两个点对。

    4.4 图像的频域滤波

    • 图像变换是对图像信息进行变换,使能量保持但重新分配,以利于加工处理,滤除噪声等不必要的信息,加强、提取感兴趣的部分或特征。
    • 傅里叶变换在图像分析、滤波、增强、压缩等处理中有非常重要的应用。
    • 假定原图像f(x,y)经傅里叶变换为F(u,v),频域增强就是选择合适的滤波器函数H(u,v)F(u,v)的频谱成分进行调整,然后经傅里叶逆变换得到增强的图像g(x,y)
      在这里插入图片描述
    • 可以选择合适的频域传递函数H(u,v)突出f(x,y)某方面的特征,从而得到需要的图像g(x,y).例如,利用传递函数突出高频分量,以增强图像的边缘信息,即高通滤波。如果突出低频分量,就可以使图像显得比较平滑,即低通滤波。
    • 频域滤波的基本步骤如下。
      (1)对原始原图像f(x,y)进行傅里叶变换得到F(u,v)
      (2)将F(u,v)与传递函数H(u,v)进行卷积运算得到G(u,v)
      (3)将G(u,v)进行傅里叶逆变换得到增强图像g(x,y)
    • 频域滤波的核心在于如何确定传递函数。
      在这里插入图片描述

    4.4.1 低通滤波

    • 图像从空间域变换到频域后,其低频分量对应图像中灰度值变化比较缓慢的区域,高频分量表征物体的边缘和随机噪声等信息。
    • 低频滤波是指保留低频分量,而通过滤波器函数H(u,v)减弱或抑制高频分量,在频域进行滤波。
    • 低通滤波与空间域中的平滑滤波器一样,可以消除图像中的随机噪声,减弱边缘效应,起到平滑图像的作用。

    第一种 理想低通滤波器

    • 二维理想低通滤波器的传递函数如下。
      在这里插入图片描述
    • 理想低通滤波器及其图像
      在这里插入图片描述
    from matplotlib import pyplot as plt
    import numpy as np
    from skimage import data, color
    
    
    # 中文显示工具函数
    def set_ch():
        from pylab import mpl
        mpl.rcParams['font.sans-serif'] = ['FangSong']
        mpl.rcParams['axes.unicode_minus'] = False
    
    
    set_ch()
    D = 10
    new_img = data.coffee()
    new_img = color.rgb2gray(new_img)
    # 傅里叶变换
    f1 = np.fft.fft2(new_img)
    # 使用np.fft.fftshift()函数实现平移,让直流分量输出图像的重心
    f1_shift = np.fft.fftshift(f1)
    # 实现理想低通滤波器
    rows, cols = new_img.shape
    crow, ccol = int(rows / 2), int(cols / 2)  # 计算频谱中心
    mask = np.zeros((rows, cols), dtype='uint8')  # 生成rows行,从cols列的矩阵,数据格式为uint8
    # 将距离频谱中心距离小于D的低通信息部分设置为1,属于低通滤波
    for i in range(rows):
        for j in range(cols):
            if np.sqrt(i * i + j * j) <= D:
                mask[crow - D:crow + D, ccol - D:ccol + D] = 1
    f1_shift = f1_shift * mask
    # 傅里叶逆变换
    f_ishift = np.fft.ifftshift(f1_shift)
    img_back = np.fft.ifft2(f_ishift)
    img_back = np.abs(img_back)
    img_back = (img_back - np.amin(img_back)) / (np.amax(img_back) - np.amin(img_back))
    
    plt.figure()
    plt.subplot(121)
    plt.imshow(new_img, cmap='gray')
    plt.title('原始图像')
    
    plt.subplot(122)
    plt.imshow(img_back, cmap='gray')
    plt.title('滤波后的图像')
    plt.show()
    
    
    • 二维图像的理想低通滤波
      在这里插入图片描述

    第二种 Butterworth低通滤波器

    • Butterworth低通滤波器的传递函数为
      在这里插入图片描述
    • D0为截止频率,n为函数的阶。一般取使H(u,v)最大值下降到最大值的一半时的D(u,v)为截止频率D0
    • Butterworth低通滤波器的截面
      在这里插入图片描述
    • 与理想低通滤波器相比,高低频之间过度较为平滑,用此滤波器后的输出图像振铃现象不明显。
    • n=1时,过度最平滑,即尾部包含大量的高频成分,所以一阶Butterworth低通滤波器没有振铃现象;但随着n的增加,振铃现象会越来越明显。
    from matplotlib import pyplot as plt
    import numpy as np
    from skimage import data, color
    
    
    # 中文显示工具函数
    def set_ch():
        from pylab import mpl
        mpl.rcParams['font.sans-serif'] = ['FangSong']
        mpl.rcParams['axes.unicode_minus'] = False
    
    
    set_ch()
    img = data.coffee()
    img = color.rgb2gray(img)
    f = np.fft.fft2(img)
    fshift = np.fft.fftshift(f)
    # 取绝对值后将复数变化为实数
    # 取对数的目的是将数据变换到0~255
    s1 = np.log(np.abs(fshift))
    
    
    def ButterworthPassFilter(image, d, n):
        """
        Butterworth低通滤波器
        """
        f = np.fft.fft2(image)
        fshift = np.fft.fftshift(f)
    
        def make_transform_matrix(d):
            transform_matrix = np.zeros(image.shape)
            center_point = tuple(map(lambda x: (x - 1) / 2, s1.shape))
            for i in range(transform_matrix.shape[0]):
                for j in range(transform_matrix.shape[1]):
                    def cal_distance(pa, pb):
                        from math import sqrt
                        dis = sqrt((pa[0] - pb[0]) ** 2 + (pa[1] - pb[1]) ** 2)
                        return dis
    
                    dis = cal_distance(center_point, (i, j))
                    transform_matrix[i, j] = 1 / (1 + (dis / d) ** (2 * n))
            return transform_matrix
    
        d_matrix = make_transform_matrix(d)
        new_img = np.abs(np.fft.ifft2(np.fft.ifftshift(fshift * d_matrix)))
        return new_img
    
    
    plt.subplot(221)
    plt.axis('off')
    plt.title('Original')
    plt.imshow(img, cmap='gray')
    
    plt.subplot(222)
    plt.axis('off')
    plt.title('Butter D=100 n=1')
    butter_100_1 = ButterworthPassFilter(img, 100, 1)
    plt.imshow(butter_100_1, cmap='gray')
    
    plt.subplot(223)
    plt.axis('off')
    plt.title('Butter D=30 n=1')
    butter_30_1 = ButterworthPassFilter(img, 30, 1)
    plt.imshow(butter_30_1, cmap='gray')
    
    plt.subplot(224)
    plt.axis('off')
    plt.title('Butter D=30 n=5')
    butter_30_5 = ButterworthPassFilter(img, 30, 5)
    plt.imshow(butter_30_5, cmap='gray')
    
    plt.show()
    
    

    在这里插入图片描述

    4.4.2 高通滤波

    • 图像的边缘、细节主要在高频,图像模糊的原因是高频成分较弱。
    • 为了消除模糊,突出边缘,可以采取高通滤波的方法,使低频分量得到抑制,从而达到增强高频分量,使图像的边缘或线条变得清晰,实现图像的锐化。

    第一种 理想高通滤波

    • 理想高通滤波器的形状与低通滤波器的形状正好相反。
      在这里插入图片描述
    • 理想高通滤波器及其图像
      在这里插入图片描述
    from matplotlib import pyplot as plt
    import numpy as np
    from skimage import data, color
    
    
    # 中文显示工具函数
    def set_ch():
        from pylab import mpl
        mpl.rcParams['font.sans-serif'] = ['FangSong']
        mpl.rcParams['axes.unicode_minus'] = False
    
    
    set_ch()
    D = 10
    new_img = data.coffee()
    new_img = color.rgb2gray(new_img)
    # numpy 中的傅里叶变换
    f1 = np.fft.fft2(new_img)
    f1_shift = np.fft.fftshift(f1)
    """
    实现理想高通滤波器 start
    """
    rows, cols = new_img.shape
    # 计算频谱中心
    crow, ccol = int(rows / 2), int(cols / 2)
    # 生成rows,cols列的矩阵,数据格式为uint8
    mask = np.zeros((rows, cols), dtype='uint8')
    # 将距离频谱中心距离小于D的低通信息部分设置为1,属于低通滤波
    for i in range(rows):
        for j in range(cols):
            if np.sqrt(i * i + j * j) <= D:
                mask[crow - D:crow + D, ccol - D:ccol + D] = 1
    
    mask = 1 - mask
    f1_shift = f1_shift * mask
    """
    实现理想高通滤波器 end
    """
    # 傅里叶逆变换
    f_ishift = np.fft.ifftshift(f1_shift)
    img_back = np.fft.ifft2(f_ishift)
    img_back = np.abs(img_back)
    img_back = (img_back - np.amin(img_back)) / (np.amax(img_back) - np.amin(img_back))
    
    plt.figure()
    plt.subplot(121)
    plt.axis('off')
    plt.imshow(new_img, cmap='gray')
    plt.title('原始图像')
    
    plt.subplot(122)
    plt.axis('off')
    plt.imshow(img_back, cmap='gray')
    plt.title('过滤后的图像')
    plt.show()
    
    • 二维图像的理想高通滤波
      在这里插入图片描述

    第二种 Butterworth高通滤波

    • Butterworth高通滤波器的形状与Butterworth低通滤波器的形状相反,因为高低频率间平滑过渡,因此振铃现象不明显。
      在这里插入图片描述
    from matplotlib import pyplot as plt
    import numpy as np
    from skimage import data, color
    
    
    # 中文显示工具函数
    def set_ch():
        from pylab import mpl
        mpl.rcParams['font.sans-serif'] = ['FangSong']
        mpl.rcParams['axes.unicode_minus'] = False
    
    
    set_ch()
    img = data.coffee()
    img = color.rgb2gray(img)
    f = np.fft.fft2(img)
    fshift = np.fft.fftshift(f)
    # 取绝对值后将复数变化为实数
    # 取对数的目的是将数据变换到0~255
    s1 = np.log(np.abs(fshift))
    
    
    def ButterworthPassFilter(image, d, n):
        """
        Butterworth 高通滤波器
        """
        f = np.fft.fft2(image)
        fshift = np.fft.fftshift(f)
    
        def make_transform_matrix(d):
            transform_matrix = np.zeros(image.shape)
            center_point = tuple(map(lambda x: (x - 1) / 2, s1.shape))
            for i in range(transform_matrix.shape[0]):
                for j in range(transform_matrix.shape[1]):
                    def cal_distance(pa, pb):
                        from math import sqrt
                        dis = sqrt((pa[0] - pb[0]) ** 2 + (pa[1] - pb[1]) ** 2)
                        return dis
    
                    dis = cal_distance(center_point, (i, j))
                    transform_matrix[i, j] = 1 / (1 + (dis / d) ** (2 * n))
            return transform_matrix
    
        d_matrix = make_transform_matrix(d)
        d_matrix = 1 - d_matrix
        new_img = np.abs(np.fft.ifft2(np.fft.ifftshift(fshift * d_matrix)))
        return new_img
    
    
    plt.subplot(221)
    plt.axis('off')
    plt.title('Original')
    plt.imshow(img, cmap='gray')
    
    plt.subplot(222)
    plt.axis('off')
    plt.title('Butter D=100 n=1')
    butter_100_1 = ButterworthPassFilter(img, 100, 1)
    plt.imshow(butter_100_1, cmap='gray')
    
    plt.subplot(223)
    plt.axis('off')
    plt.title('Butter D=30 n=1')
    butter_30_1 = ButterworthPassFilter(img, 30, 1)
    plt.imshow(butter_30_1, cmap='gray')
    
    plt.subplot(224)
    plt.axis('off')
    plt.title('Butter D=30 n=5')
    butter_30_5 = ButterworthPassFilter(img, 30, 5)
    plt.imshow(butter_30_5, cmap='gray')
    
    plt.show()
    
    

    在这里插入图片描述

    第三种 高频增强滤波器

    • 高频滤波将低频分量滤掉,导致增强图像中的边缘得到加强,但平坦区域灰度很暗,接近黑色。
    • 高频增强滤波器对频域里的高通滤波器的转移函数加一个常数,将一些低频分量加回去,保持光滑区域的灰度,又改善边缘区域的对比度。
    • 高频增强转移函数为He(u,v)=k*H(u,v)+c
    • 这样就可以做到在原始图像的基础上叠加一些高频成分,既保留了原图的灰度层次,又锐化了边缘
    from matplotlib import pyplot as plt
    import numpy as np
    from skimage import data, color
    
    
    # 中文显示工具函数
    def set_ch():
        from pylab import mpl
        mpl.rcParams['font.sans-serif'] = ['FangSong']
        mpl.rcParams['axes.unicode_minus'] = False
    
    
    set_ch()
    img = data.coffee()
    img = color.rgb2gray(img)
    f = np.fft.fft2(img)
    fshift = np.fft.fftshift(f)
    # 取绝对值后将复数变化为实数
    # 取对数的目的是将数据变换到0~255
    s1 = np.log(np.abs(fshift))
    
    
    def ButterworthPassFilter(image, d, n):
        """
        Butterworth 高通滤波器
        """
        f = np.fft.fft2(image)
        fshift = np.fft.fftshift(f)
    
        def make_transform_matrix(d):
            transform_matrix = np.zeros(image.shape)
            center_point = tuple(map(lambda x: (x - 1) / 2, s1.shape))
            for i in range(transform_matrix.shape[0]):
                for j in range(transform_matrix.shape[1]):
                    def cal_distance(pa, pb):
                        from math import sqrt
                        dis = sqrt((pa[0] - pb[0]) ** 2 + (pa[1] - pb[1]) ** 2)
                        return dis
    
                    dis = cal_distance(center_point, (i, j))
                    transform_matrix[i, j] = 1 / (1 + (dis / d) ** (2 * n))
            return transform_matrix
    
        d_matrix = make_transform_matrix(d)
        d_matrix = d_matrix+0.5
        new_img = np.abs(np.fft.ifft2(np.fft.ifftshift(fshift * d_matrix)))
        return new_img
    
    
    plt.subplot(221)
    plt.axis('off')
    plt.title('Original')
    plt.imshow(img, cmap='gray')
    
    plt.subplot(222)
    plt.axis('off')
    plt.title('Butter D=100 n=1')
    butter_100_1 = ButterworthPassFilter(img, 100, 1)
    plt.imshow(butter_100_1, cmap='gray')
    
    plt.subplot(223)
    plt.axis('off')
    plt.title('Butter D=30 n=1')
    butter_30_1 = ButterworthPassFilter(img, 30, 1)
    plt.imshow(butter_30_1, cmap='gray')
    
    plt.subplot(224)
    plt.axis('off')
    plt.title('Butter D=30 n=5')
    butter_30_5 = ButterworthPassFilter(img, 30, 5)
    plt.imshow(butter_30_5, cmap='gray')
    
    plt.show()
    
    
    • 二维图像的高频增强滤波结果
      在这里插入图片描述

    4.5 小结

    • 本章主要介绍频域图像处理,首先介绍了傅里叶变换及其基本性质,其次介绍了快速傅里叶变换,最后介绍了频域滤波相关技术。
    展开全文
  • 使用模板处理图像相关概念:   模板:矩阵方块,其数学含义是一种卷积运算。   卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相 乘,

    参考自:http://blog.csdn.net/yangtrees/article/details/8740933 等

    1.图像卷积(模板)

    (1).使用模板处理图像相关概念:     

         模板:矩阵方块,其数学含义是卷积运算。      

         卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积(权矩阵)的每个元素对应相 乘,所有乘积之和作为区域中心像素的新值。
         卷积核:卷积时使用到的权用一个矩阵表示,该矩阵一个权矩阵。
         卷积示例:
                  3 * 3 的像素区域R与卷积G卷积运算:
                  R5(中心像素)=R1G1 + R2G2 + R3G3 + R4G4 + R5G5 + R6G6 + R7G7 + R8G8 + R9G9
                

    (2).使用模板处理图像的问题(越界问题):
           边界问题:当处理图像边界像素时,卷积与图像使用区域不能匹配,卷积核的中心边界像素点对应,卷积运算将出现问题。
           处理办法:
                  A. 忽略边界像素,即处理后的图像将丢掉这些像素。
                  B. 保留原边界像素,即copy边界像素到处理后的图像

    (3).常用模板


    我们来看卷积的概念.
    连续空间的卷积定义:  f(x)g(x)的卷积是 f(t-x)g(x) 在t从负无穷到正无穷的积分值. t-x要在f(x)定义域内,所以看上去很大的积分实际上还是在定范围的. 实际的过程就是f(x) 先做一个Y轴的反转,然后再沿X轴平移t就是f(t-x),然后再把g(x)拿来,两者乘积的值再积分.想象下如果g(x)或者f(x)是个单位的阶越函数. 那么就是f(t-x)g(x)相交部分的面积.这就是卷积了.
    把积分符号换成求和就是离散空间的卷积定义了.那么在图像卷积卷积地是什么意思呢,就是图像就是图像f(x),模板是g(x),然后将模版g(x)在模版中移动,每到一个位置,就把f(x)g(x)的定义域相交的元素卷积定义上是线性系统分析经常用到的.线性系统就是一个系统的输入和输出的关系是线性关系.就是说整个系统可以分解成N多的无关独立变化,整个系统就是这些变化的累加. 如 x1->y1, x2->y2; 那么A*x1 + B*x2 -> A*y1 + B*y2 这就是线性系统. 表示一个线性系统可以用积分的形式 

    ,

    就是f(t,x)表示的是A B之类的线性系数.看上去很像卷积呀,对,如果f(t,x) = F(t-x) 不就是了吗.从f(t,x)变成F(t-x)实际上是说明f(t,x)是个线性移不变,就是说变量的差不变化的时候, 那么函数的值不变化. 实际上说明一个事情就是说线性移不变系统的输出可以通过输入和表示系统线性特征的函数卷积得到.


    卷积示例:

    A =
         1     3     3     5     2
         2     4     1     1     3
         3     5     5     2     4
         4     4     2     3     1
         5     6     3     4     2

    G =

         1     2     3
         4     5     6
         7     8     9

    首先对卷积模板G旋转180°。matlab代码:rot90(G,2) 即 将a逆时针转2次90度。




    依次对full,same,value进行解释:


    K>> B=conv2(A,G,'full'); OR B=conv2(A,G);
    B =
         1     5    12    20    21    19     6
         6    25    48    68    59    49    21
        18    66   114   146   127    96    48
        30    91   142   133   107    76    54
        42   111   184   173   139    89    48
        48   109   154   140    95    69    21
        35    82   114   106    73    52    18

    K>> B=conv2(A,G,'same')
    B =
        25    48    68    59    49
        66   114   146   127    96
        91   142   133   107    76
       111   184   173   139    89
       109   154   140    95    69

    K>> B=conv2(A,G,'valid')

    B =
       114   146   127
       142   133   107
       184   173   139


    2.图像滤波

    (1)图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接响到后续图像处理和分析的有效性和可靠性。(滤波就是要去除没用的信息,保留有用的信息,可能是低频,也可能是高频)

    (2)滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式;  另一个是为适应图像处理的要求,消除图像数字化时所混入的噪声。

    对滤波处理的要求有两条:一是不能损坏图像的轮廓及边缘等重要信息;二是使图像清晰视觉效果好。

    (3)图像的滤波方法: 

    (一)图像的滤波方法很多,主要可以分为频率域法和空间域法两大类。频率域法的处理是在图像的某种变换域内,对图像的变换系数值进行运算,然后通过逆变换获得增强图像。这是一种间接的图像滤波方法。空间滤波方法是一类直接的滤波方法,它在处理图像时直接对图像灰度作运算。

         <1>频率域滤波:是将图像从空间或时间域转换到频率域,再利用变换系数反映某些图像特征的性质进行图像滤波的方法。傅立叶变换是一种常用的变换。在傅立叶变换域,频谱的直流分量正比于图像的平均亮度,噪声对应于频率较高的区域,图像实体位于频率较低的区域。图像在变换具有的这些内在特性可被用于图像滤波。可以构造一个低通滤波器,使低频分量顺利通过而有效地阻于高频分量,即可滤除图像的噪声,再经过反变换来取得平滑的图像。

              低通的数学表达式如下式所示:
                                          

              式中F (u, v)一含有噪声的原图像的傅立叶变换;
              H (u, v)一为传递函数,也称转移函数(即低通滤波器);
              G (u, v)一为经低通滤波后输出图像的傅立叶变换。
              H滤波滤去高频成分,而低频信息基本无损失地通过。滤波后,经傅立叶变换反变换可得平滑图像,即
             
     选择适当的传递函数H (u, v),对频率域低通滤波关系重大。常用的传递函数有梯形函数、指数函数、巴特沃思函数等。
              频域常用的几种低通滤波器为理想低通滤波器(Ideal  circular Iow-passfilter)、巴特沃思(Butterworth)低通滤波器、指数低通滤波器及梯形低通滤波器。这些低通滤波器,都能在图像内有噪声干扰成分时起到改善的作用。
          <2>常用的平面空间域滤波法有两类:  

              一类是拟合图像的方法,包括n阶多项式拟合、离散正交多项式拟合、二次曲面拟合等多种方法; 

              另一类是平滑图像的方法,包括领域平均法、中值滤波法、梯度倒数加权法、选择式掩模法等。

    (二)按频率高低

          <1>高通滤波:边缘提取与增强。边缘区域的灰度变换加大,也就是频率较高。所以,对于高通滤波,边缘部分将被保留,非边缘部分将被过滤;

          <2>低通滤波:边缘平滑,边缘区域将被平滑过渡。

             附: 高斯滤波高斯滤波是一种线性平滑滤波,即低通滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由本身和邻域内的其他像素值经过加权平均后得到。高斯平滑滤波器对于抑制服从正态分布的噪声非常有效。3×3的掩模如下:

    3*3掩模×1/16 

    从结构化掩模中可以看到,处于掩模中心的位置比其他任何像素的权值都大,因此在均值计算中给定的这一像素显得更为重要。而距离掩模中心较远的像素就显得不太重要,这样做是为了减小平滑处理中的模糊。

    (三)线性与非线性滤波

            <1>线性滤波:线性滤波器的原始数据与滤波结果是一种算术运算,即用加减乘除等运算实现,如(1)均值滤波器(模板内像素灰度值的平均值)、(2)高斯滤波器(高斯加权平均值)等。由于线性滤波器是算术运算,有固定的模板,因此滤波器的转移函数是可以确定并且是唯一的(转移函数即模板的傅里叶变换)。

             <2>非线性滤波:非线性滤波器的原始数据与滤波结果是一种逻辑关系,即用逻辑运算实现,如最大值滤波器、最小值滤波器、中值滤波器等,是通过比较一定邻域内的灰度值大小来实现的,没有固定的模板,因而也就没有特定的转移函数(因为没有模板作傅里叶变换),另外,膨胀和腐蚀也是通过最大值、最小值滤波器实现的。五种常见的非线性滤波算子,这五种滤波算子对不同的图像都会有不同的作用,最常用的是中值滤波,因为它的效果最好且信息损失的最少。

    (1).极大值滤波

        极大值滤波就是选取像素点领域的最大值作为改点的像素值,有效率去了灰度值比较低的噪声,也可作为形态学里面的膨胀操作。

        极大值滤波可以表示为: Maximum(A)=max[A(x+i,y+j)]      (x,y)属于M

        注:(x+i,y+j)是定义在图像上的坐标,(i,j)是定义在模板M上的坐标。M即为运算的模板。

    (2).极小值滤波(与极大值滤波相反)

    (3).中点滤波

         中点滤波常用于去除图像中的短尾噪声,例如高斯噪声和均匀分布噪声。终点滤波器的输出时给定窗口内灰度的极大值和极小值的平均值;

        Midpoint(A)=(max[A(x+i,y+j)]+min[A(x+i,y+j)])/2          (x,y)属于M

       注:(x+i,y+j)是定义在图像上的坐标,(i,j)是定义在模板M上的坐标。M即为运算的模板。

    (4).中值滤波

       中值滤波可以消除图像中的长尾噪声,例如负指数噪声和椒盐噪声。在消除噪声时,中值滤波对图像噪声的模糊极小(受模板大小的影响),中值滤波实质上是用模板内所包括像素灰度的中值来取代模板中心像素的灰度。中值滤波在消除图像内椒盐噪声和保持图像的空域细节方面,其性能优于均值滤波。

           Median(A)=Median[A(x+i,y+j)]              (x,y)属于M

    注:(x+i,y+j)是定义在图像上的坐标,(i,j)是定义在模板M上的坐标。M即为运算的模板。

    (5).加权中值滤波(中值滤波的改进)

        加权中值滤波是在中值滤波的基础上加以改进,其性能在一定程度上优于中值滤波。

         下面是自己在算法上的改进:以例子说明

         若说选模板的大小为5,那么这个模板就唯一确定为:

                 1  1  5   1   1   

                 1  1  5   1   1  

                 5  5  5   5   5   

                 1  1  5   1   1  

                 1  1  5   1   1   

        上图中的数字表式改点像素在序列中出现的次数。然后根据模板平滑图像。实验证明该方法好于传统中值滤波。当然还有其他方法;

    
    
    附:噪声
              (高斯噪声:是指噪声服从高斯分布,即某个强度的噪声点个数最多,离这个强度越远噪声点个数越少,且这个规律服从高斯分布。高斯噪声是一种加性噪声,即噪声直接加到原图像上,因此可以用线性滤波器滤除。
                  椒盐噪声:类似把椒盐撒在图像上,因此得名,是一种在图像上出现很多白点或黑点的噪声,如电视里的雪花噪声等。椒盐噪声可以认为是一种逻辑噪声,用线性滤波器滤除的结果不好,一般采用中值滤波器滤波可以得到较好的结果。)
    
    
    图像滤波相对比较容易理解,在这里就不一一作图说明了。


    3.图像平滑

    图像平滑 image smoothing: 压制、弱化或消除图像中的细节、突变、边缘和噪声,就是图像平滑化。图像平滑是对图像作低通滤波,可在空间域或频率域实现。空间域图像平滑方法主要用低通卷积滤波、中值滤波等;频率域图像平滑常用的低通滤波器有低通梯形滤波器、低通高斯滤波器、低通指数滤波器、巴特沃思低通滤波器等。



    关系:

    图像卷积:一种实现手段,不管是滤波还是别的什么,可以说是数学在图像处理的一种延伸。

    图像滤波:一种图像处理方法,来实现不同目的。

    图像平滑:实际上就是低通滤波。




    尾话:转自http://blog.csdn.net/haoji007/article/details/53911940

    图像处理中滤波(filtering)与卷积(convolution)的区别

    图像处理中滤波和卷积是常用到的操作。很多人认为卷积就是滤波,两者并无区别,其实不然。两者在原理上相似,但是在实现的细节上存在一些区别。这篇博文主要叙述这两者之间的区别。

    1、滤波

    简单来说,滤波操作就是图像对应像素与掩膜(mask)的乘积之和。

    比如有一张图片和一个掩膜,如下图:



    那么像素(i,j)的滤波后结果可以根据以下公式计算:

    其中G(i,j)是图片中(i,j)位置像素经过滤波后的像素值。

    当掩膜中心m5位置移动到图像(i,j)像素位置时,图像(i,j)位置像素称为锚点

    滤波步骤:

    1. 对原始图像的边缘进行某种方式的填充(一般为0填充)。
    2. 将掩膜划过整幅图像,计算图像中每个像素点的滤波结果。
    依照这个步骤,假设我们有一个二维矩阵I,掩膜M,则滤波的结果如下:


    滤波后的图像大小不变。



    2、卷积

    卷积的原理与滤波类似。但是卷积却有着细小的差别。
    卷积操作也是卷积核与图像对应位置的乘积和。但是卷积操作在做乘积之前,需要先将卷积核翻转180度,之后再做乘积。

    卷积步骤:
    1. 180度翻转卷积核。
    2. 不做边界填充,直接对图像进行相应位置乘积和。
    从以上步骤可以看出,如果卷积核不是中心对称的,那么卷积和滤波操作将会得到完全不一样的结果。另外,卷积操作会改变图像大小!

    由于卷积操作会导致图像变小(损失图像边缘),所以为了保证卷积后图像大小与原图一致,经常的一种做法是人为的在卷积操作之前对图像边缘进行填充。

    最后,关于卷积后图像尺寸的计算:假设原始图像为M*M,卷积核大小为N*N,边缘填充像素个数为pad,步长为stride。则卷积后图像的尺寸变为:m =(M-N+2*pad)/sride+1。


    自我总结一下:

    一、滤波其实也是对图像进行平滑操作,滤波后的图像与原图像大小相同。【适当的话,进行边界扩充,得到滤波后的效果会比没有进行边界扩充得到的效果好一些】。

    二、卷积操作首先是将卷积模板进行旋转180度,之后进行卷积操作。其卷积后的结果与原图像大小不一致,如上文我自己整理的那样。







    展开全文
  • 使用模板处理图像相关概念:   模板:矩阵方块,其数学含义是一种卷积运算。   卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相乘,所有乘积之和作为...

     

    1.图像卷积(模板)

    (1).使用模板处理图像相关概念:     

         模板:矩阵方块,其数学含义是一种卷积运算。      

         卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相乘,所有乘积之和作为区域中心像素的新值。
         卷积核:卷积时使用到的权用一个矩阵表示,该矩阵是一个权矩阵。
         卷积示例:
                  3 * 3 的像素区域R与卷积核G的卷积运算:
                  R5(中心像素)=R1G1 + R2G2 + R3G3 + R4G4 + R5G5 + R6G6 + R7G7 + R8G8 + R9G9
                

    (2).使用模板处理图像的问题(越界问题):
           边界问题:当处理图像边界像素时,卷积核与图像使用区域不能匹配,卷积核的中心与边界像素点对应,卷积运算将出现问题。
           处理办法:
                  A. 忽略边界像素,即处理后的图像将丢掉这些像素。
                  B. 保留原边界像素,即copy边界像素到处理后的图像。

    (3).常用模板:


        我们来看一下一维卷积的概念.
        连续空间的卷积定义:  f(x)与g(x)的卷积是 f(t-x)g(x) 在t从负无穷到正无穷的积分值. t-x要在f(x)定义域内,所以看上去很大的积分实际上还是在一定范围的. 实际的过程就是f(x) 先做一个Y轴的反转,然后再沿X轴平移t就是f(t-x),然后再把g(x)拿来,两者乘积的值再积分.想象一下如果g(x)或者f(x)是个单位的阶越函数. 那么就是f(t-x)与g(x)相交部分的面积.这就是卷积了.
        把积分符号换成求和就是离散空间的卷积定义了.那么在图像中卷积卷积地是什么意思呢,就是图像就是图像f(x),模板是g(x),然后将模版g(x)在模版中移动,每到一个位置,就把f(x)与g(x)的定义域相交的元素卷积定义上是线性系统分析经常用到的.线性系统就是一个系统的输入和输出的关系是线性关系.就是说整个系统可以分解成N多的无关独立变化,整个系统就是这些变化的累加. 如 x1->y1, x2->y2; 那么A*x1 + B*x2 -> A*y1 + B*y2 这就是线性系统. 表示一个线性系统可以用积分的形式 

    ,

        就是f(t,x)表示的是A B之类的线性系数.看上去很像卷积呀,对,如果f(t,x) = F(t-x) 不就是了吗.从f(t,x)变成F(t-x)实际上是说明f(t,x)是个线性移不变,就是说变量的差不变化的时候, 那么函数的值不变化. 实际上说明一个事情就是说线性移不变系统的输出可以通过输入和表示系统线性特征的函数卷积得到.


     

    2.图像滤波

     

    (1)图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接响到后续图像处理和分析的有效性和可靠性。(滤波就是要去除没用的信息,保留有用的信息,可能是低频,也可能是高频)

    (2)滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式;  另一个是为适应图像处理的要求,消除图像数字化时所混入的噪声。

    对滤波处理的要求有两条:一是不能损坏图像的轮廓及边缘等重要信息;二是使图像清晰视觉效果好。

    (3)图像的滤波方法: 

    (一)图像的滤波方法很多,主要可以分为频率域法和空间域法两大类。频率域法的处理是在图像的某种变换域内,对图像的变换系数值进行运算,然后通过逆变换获得增强图像。这是一种间接的图像滤波方法。空间滤波方法是一类直接的滤波方法,它在处理图像时直接对图像灰度作运算。

         <1>频率域滤波:是将图像从空间或时间域转换到频率域,再利用变换系数反映某些图像特征的性质进行图像滤波的方法。傅立叶变换是一种常用的变换。在傅立叶变换域,频谱的直流分量正比于图像的平均亮度,噪声对应于频率较高的区域,图像实体位于频率较低的区域。图像在变换具有的这些内在特性可被用于图像滤波。可以构造一个低通滤波器,使低频分量顺利通过而有效地阻于高频分量,即可滤除图像的噪声,再经过反变换来取得平滑的图像。

              低通的数学表达式如下式所示:
                                          

              式中F (u, v)一含有噪声的原图像的傅立叶变换;
              H (u, v)一为传递函数,也称转移函数(即低通滤波器);
              G (u, v)一为经低通滤波后输出图像的傅立叶变换。
              H滤波滤去高频成分,而低频信息基本无损失地通过。滤波后,经傅立叶变换反变换可得平滑图像,即
              选择适当的传递函数H (u, v),对频率域低通滤波关系重大。常用的传递函数有梯形函数、指数函数、巴特沃思函数等。
              频域常用的几种低通滤波器为理想低通滤波器(Ideal  circular Iow-passfilter)、巴特沃思(Butterworth)低通滤波器、指数低通滤波器及梯形低通滤波器。这些低通滤波器,都能在图像内有噪声干扰成分时起到改善的作用。
          <2>常用的平面空间域滤波法有两类:  

              一类是拟合图像的方法,包括n阶多项式拟合、离散正交多项式拟合、二次曲面拟合等多种方法; 

              另一类是平滑图像的方法,包括领域平均法、中值滤波法、梯度倒数加权法、选择式掩模法等。

    (二)按频率高低

          <1>高通滤波:边缘提取与增强。边缘区域的灰度变换加大,也就是频率较高。所以,对于高通滤波,边缘部分将被保留,非边缘部分将被过滤;

          <2>低通滤波:边缘平滑,边缘区域将被平滑过渡。

             附: 高斯滤波:高斯滤波是一种线性平滑滤波,即低通滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由本身和邻域内的其他像素值经过加权平均后得到。高斯平滑滤波器对于抑制服从正态分布的噪声非常有效。3×3的掩模如下:

    3*3掩模×1/16 

    从结构化掩模中可以看到,处于掩模中心的位置比其他任何像素的权值都大,因此在均值计算中给定的这一像素显得更为重要。而距离掩模中心较远的像素就显得不太重要,这样做是为了减小平滑处理中的模糊。

    (三)线性与非线性滤波

            <1>线性滤波:线性滤波器的原始数据与滤波结果是一种算术运算,即用加减乘除等运算实现,如(1)均值滤波器(模板内像素灰度值的平均值)、(2)高斯滤波器(高斯加权平均值)等。由于线性滤波器是算术运算,有固定的模板,因此滤波器的转移函数是可以确定并且是唯一的(转移函数即模板的傅里叶变换)。

             <2>非线性滤波:非线性滤波器的原始数据与滤波结果是一种逻辑关系,即用逻辑运算实现,如最大值滤波器、最小值滤波器、中值滤波器等,是通过比较一定邻域内的灰度值大小来实现的,没有固定的模板,因而也就没有特定的转移函数(因为没有模板作傅里叶变换),另外,膨胀和腐蚀也是通过最大值、最小值滤波器实现的。五种常见的非线性滤波算子,这五种滤波算子对不同的图像都会有不同的作用,最常用的是中值滤波,因为它的效果最好且信息损失的最少。
    
     

    (1).极大值滤波

        极大值滤波就是选取像素点领域的最大值作为改点的像素值,有效率去了灰度值比较低的噪声,也可作为形态学里面的膨胀操作。

        极大值滤波可以表示为: Maximum(A)=max[A(x+i,y+j)]      (x,y)属于M

        注:(x+i,y+j)是定义在图像上的坐标,(i,j)是定义在模板M上的坐标。M即为运算的模板。

    (2).极小值滤波(与极大值滤波相反)

    (3).中点滤波

         中点滤波常用于去除图像中的短尾噪声,例如高斯噪声和均匀分布噪声。终点滤波器的输出时给定窗口内灰度的极大值和极小值的平均值;

        Midpoint(A)=(max[A(x+i,y+j)]+min[A(x+i,y+j)])/2          (x,y)属于M

       注:(x+i,y+j)是定义在图像上的坐标,(i,j)是定义在模板M上的坐标。M即为运算的模板。

    (4).中值滤波

       中值滤波可以消除图像中的长尾噪声,例如负指数噪声和椒盐噪声。在消除噪声时,中值滤波对图像噪声的模糊极小(受模板大小的影响),中值滤波实质上是用模板内所包括像素灰度的中值来取代模板中心像素的灰度。中值滤波在消除图像内椒盐噪声和保持图像的空域细节方面,其性能优于均值滤波。

           Median(A)=Median[A(x+i,y+j)]              (x,y)属于M

    注:(x+i,y+j)是定义在图像上的坐标,(i,j)是定义在模板M上的坐标。M即为运算的模板。

    (5).加权中值滤波(中值滤波的改进)

        加权中值滤波是在中值滤波的基础上加以改进,其性能在一定程度上优于中值滤波。

         下面是自己在算法上的改进:以例子说明

         若说选模板的大小为5,那么这个模板就唯一确定为:

                 1  1  5   1   1   

                 1  1  5   1   1  

                 5  5  5   5   5   

                 1  1  5   1   1  

                 1  1  5   1   1   

        上图中的数字表式改点像素在序列中出现的次数。然后根据模板平滑图像。实验证明该方法好于传统中值滤波。当然还有其他方法;

    附:噪声 (高斯噪声:是指噪声服从高斯分布,即某个强度的噪声点个数最多,离这个强度越远噪声点个数越少,且这个规律服从高斯分布。高斯噪声是一种加性噪声,即噪声直接加到原图像上,因此可以用线性滤波器滤除。 椒盐噪声:类似把椒盐撒在图像上,因此得名,是一种在图像上出现很多白点或黑点的噪声,如电视里的雪花噪声等。椒盐噪声可以认为是一种逻辑噪声,用线性滤波器滤除的结果不好,一般采用中值滤波器滤波可以得到较好的结果。)

    3.图像平滑

    图像平滑 image smoothing: 压制、弱化或消除图像中的细节、突变、边缘和噪声,就是图像平滑化。图像平滑是对图像作低通滤波,可在空间域或频率域实现。空间域图像平滑方法主要用低通卷积滤波、中值滤波等;频率域图像平滑常用的低通滤波器有低通梯形滤波器、低通高斯滤波器、低通指数滤波器、巴特沃思低通滤波器等。

    关系:

    图像卷积:一种实现手段,不管是滤波还是别的什么,可以说是数学在图像处理的一种延伸。

    图像滤波:一种图像处理方法,来实现不同目的。

    图像平滑:实际上就是低通滤波。

    展开全文
  • 傅里叶变换是一种将时域信号转换到频域的方式,其在图像处理和分析方面有很多优势。 对于一幅图像,图像中灰度变化缓慢的区域对应于较低的频率,而灰度变化较快的区域对应高频信息。因此,在频域图像中能量主要集中...
  • 图像处理滤波器

    2016-09-01 11:01:18
    图像处理滤波器 经过前期的一番准备和学习,我的地盘终于到了我做主的时候。由于我们组的项目和图像处理(运动物体检测与跟踪)有关,和我同组的iamfrankie同学将在FPGA方面对该项目发表一些好的博文,前段时间...
  • 正交变换 与图像压缩 傅里叶变换 时域连续—>频域非周期 时域的非周期—>频域连续 ​ 图像的频率—>图像中灰度变化的剧烈程度的指标。 傅里叶频谱图上看到的亮点实际是图像上某一点与领域点差异的...
  • 图像正交变换

    2016-05-22 11:38:59
    正交变换时数字图像处理的一种有效工具。图像不仅可以在空间域表示,也可以对其进行正交变换到频域进行分析处理。在图像增强、图像复原、图像特征处理、图像编码中都经常采用图像变换技术。离散傅里叶变换 一维离散...
  • 经过前期的一番准备和学习,我的地盘终于到了我做主的时候。由于我们组的项目和图像...由于我们组内有分工,他主要负责FPGA技术,我主要负责图像处理算法这块,所以我的文章会以图像处理相关的主题为主。前期我会介绍
  • 由于我们组的项目和图像处理(运动物体检测与跟踪)有关,和我同组的iamfrankie同学将在FPGA方面对该项目发表一些好的博文,前段时间他的博文也受到各位的好评,其中不乏好的文章,而且有的还被推荐为精品,这里先...
  • 针对分布式数据库中发生待处理的事务流提出一种动态可串行调度算法。通过执行此算法,能够高效地处理源源不断的事务流,使之尽可能串行调度地执行,从而提高并发度,以及分布式数据库各站点的并行处理度。
  • 完全重建QMF滤波器

    2020-05-31 10:14:35
    完全重建QMF滤波器组最大的优点是在对信号进行抽取后,可以根据每个子带的不同特征分别进行处理,而插值和合成环节又能消除信号失真的各种因素,因此被广泛用于语音处理、图像处理、国防通信和小波变换中。...
  • Gabor滤波器学习

    2014-01-03 21:19:21
     在图像处理中,Gabor函数是一个用于边缘提取的线性滤波器。Gabor滤波器的频率和方向表达同人类视觉系统类似。研究发现,Gabor滤波器十分适合纹理表达和分离。在空间域中,一个二维Gabor滤波器是一个由正弦平面波...
  • 例如:步骤:1、构造函数DWT% 程序作者:沙威,香港大学电气电子工程学系,wsha@eee.hku.hk% 构造正交小波变换矩阵,图像大小N*N,N=2^P,P是整数。function ww=DWT(N)[h,g]=wfilters('haar','d'); % 分解低通和...
  • 1、数字图像: ...2、数字图像处理包括内容: 图像数字化;图像变换;图像增强;图像恢复;图像压缩编码;图像分割;图像分析与描述;图像的识别分类。 3、数字图像处理系统包括部分: 输入(采集);存储
  • MATLAB图像处理

    2020-06-09 09:19:29
    一、图像处理预备知识1、图像处理(image processing)用计算机对...2、图像处理常用方法1)图像变换为了用正交函数或正交矩阵表示图像而对原图像所作的二维线性可逆变换。一般称原始图像为空间域图像,称变换后的图...
  • 小波指的是一种能量在时域非常集中的波,它的能量有限,都集中在某一点附近,而且积分的值为零... 小波在图像处理里被称为图像显微镜,原因在于它的多分辨率分解能力可以将图片信息一层一层分解剥离开来。剥离的手...
  • 第 1 章 基本的图像操作和处理本章讲解操作和处理图像的基础知识,将通过大量...1.1 PIL:Python图像处理类库PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图...
  • 非线性相位滤波器图像处理过程中容易引起失真,而无理系数滤波器给小波变换的应用尤其是在算法的硬件实现方面带来不便。借助完全重构滤波器思想,进行了具有线性相位的双正交小波滤波器设计,同时通过添加消失矩...
  • 图像的频域变换 图像频域变换的意义 卷积: 相关: 正交变换及其特征 正交函数集合完备性的物理意义 任何数量的奇函数累加仍为奇函数 任何数量的偶函数累加仍为偶函数 因此.为了能用累加展开式...
1 2 3 4 5 ... 20
收藏数 2,397
精华内容 958
关键字:

图像处理 正交滤波器