美文网首页
傅里叶变换

傅里叶变换

作者: 原上的小木屋 | 来源:发表于2020-05-30 21:12 被阅读0次

图像可以看作许多点冲击函数的累加,图像通过系统的效果就是每一点冲激函数通过系统的响应之和

傅里叶变换只是图像正交变换的一种,正交变换同时还包括方波型变换,基于特征向量的变换等等

图像可以使用离散二维傅立叶变换,将灰度化的图像表示为频谱图。然后用二维离散傅立叶逆变换将图像复原。在这里先引一下B站up主会飞的吴克对此总结的数学公式方面的推导

首先引出傅里叶级数

1.png

对三角函数系正交性的证明

2.png

根据三角函数正交性推出各个频率ak与bk的推出法则

3.png

利用欧拉公式将傅里叶级数推至复数域

4.png

进一步化简之后得到

5.png 6.png
10.png

推出傅里叶变换对,正变换与逆变换

7.png

介绍DFT与FFT

8.png

对DFT公式进一步简化

9.png
11.png 12.png

一维傅里叶正变换

def FFT_1d(Img,axis):
    Wr = np.zeros(Img.shape,dtype=complex)
    if axis == 0:
        Wr = np.zeros((Img.shape[0]//2,Img.shape[1]), dtype=complex)
        temp = np.array([
            np.cos(2*np.pi*i/Img.shape[0]) - 1j*np.sin(2*np.pi*i/Img.shape[0]) for i in range(Img.shape[0]//2)])
        for i in range(Wr.shape[1]):
            Wr[:,i] = temp
    elif axis == 1:
        Wr = np.zeros((Img.shape[0], Img.shape[1]//2), dtype=complex)
        temp = np.array([
            np.cos(2 * np.pi * i / Img.shape[1]) - 1j * np.sin(2 * np.pi * i / Img.shape[1]) for i in
            range(Img.shape[1] // 2)])
        for i in range(Wr.shape[0]):
            Wr[i,:] = temp
    return rawFFT(Img, Wr,axis)

一维傅里叶逆变换

def iFFT_1d(Img,axis):
    Wr = np.zeros(Img.shape,dtype=complex)
    if axis == 0:
        Wr = np.zeros((Img.shape[0]//2,Img.shape[1]), dtype=complex)
        temp = np.array([
            np.cos(2*np.pi*i/Img.shape[0]) + 1j*np.sin(2*np.pi*i/Img.shape[0]) for i in range(Img.shape[0]//2)])
        for i in range(Wr.shape[1]):
            Wr[:,i] = temp
    elif axis == 1:
        Wr = np.zeros((Img.shape[0], Img.shape[1]//2), dtype=complex)
        temp = np.array([
            np.cos(2 * np.pi * i / Img.shape[1]) + 1j * np.sin(2 * np.pi * i / Img.shape[1]) for i in
            range(Img.shape[1] // 2)])
        for i in range(Wr.shape[0]):
            Wr[i,:] = temp
    return rawFFT(Img, Wr,axis)*(1.0/Img.shape[axis])

二维傅里叶正变换

def FFT_2d(Img):
    '''
    only for gray scale 2d-img. otherwise return 0 img with the same size of Img
    :param Img: img to be fourior transform
    :return: img been transformed
    '''
    imgsize = Img.shape
    pic = np.zeros(imgsize, dtype=complex)
    if len(imgsize) == 2:
        N = 2
        while N < imgsize[0]:
            N = N << 1
        num1 = N - imgsize[0]
        N = 2
        while N < imgsize[1]:
            N = N << 1
        num2 = N - imgsize[1]
        pic = FFT_1d(np.pad(Img, ((num1 // 2, num1 - num1 // 2), (0, 0)), 'edge'), 0)[
              num1 // 2:num1 // 2 + imgsize[0], :]
        pic = FFT_1d(np.pad(pic, ((0, 0), (num2 // 2, num2 - num2 // 2)), 'edge'), 1)[:,
              num2 // 2:num2 // 2 + imgsize[1]]
    return pic

二维傅里叶逆变换

def iFFT_2d(Img):
    '''
    only for gray scale 2d-img. otherwise return 0 img with the same size of Img
    :param Img: img to be fourior transform
    :return: img been transformed
    '''
    imgsize = Img.shape
    pic = np.zeros(imgsize, dtype=complex)
    if len(imgsize) == 2:
        N = 2
        while N < imgsize[0]:
            N = N << 1
        num1 = N - imgsize[0]
        N = 2
        while N < imgsize[1]:
            N = N << 1
        num2 = N - imgsize[1]
        pic = iFFT_1d(np.pad(Img,((num1//2,num1-num1//2),(0,0)),'edge'),0)[num1//2:num1//2+imgsize[0],:]  # ,constant_values=(255,255)
        pic = iFFT_1d(np.pad(pic,((0,0),(num2//2,num2-num2//2)),'edge'),1)[:,num2//2:num2//2+imgsize[1]]  # ,constant_values=(255,255)
    return pic

相关文章

  • 无标题文章

    傅里叶变换的本质是什么? 傅里叶变换的公式为 可以把傅里叶变换也成另外一种形式: 可以看出,傅里叶变换的本质是内积...

  • 2018Android实验室CV培训总结

    Android实验室CV培训 傅里叶变换(空间域 -> 频率域) 什么是傅里叶变换? 维基百科: 傅里叶变换(法语...

  • 离散傅里叶变换 DFT

    离散傅里叶变换 DFT 周期 离散信号 (离散时间傅里叶变换:非周期,离散;傅里叶变换:非周期,连续;傅里叶级数:...

  • 快速傅里叶变换和离散傅里叶变换

    快速傅里叶变换(FFT) 离散傅里叶变换(DFT) 基础理论是傅里叶变换的分离形式,和采样定理(香菜定理) 采样定...

  • Scipy

    通过傅里叶变换实现图片降噪 scipy.fftpack模块用来计算快速傅里叶变换速度比传统傅里叶变换更快,是对之前...

  • 基础-小波傅里叶变换

    https://www.zhihu.com/question/22864189 傅里叶变换-频率信息短时傅里叶变换...

  • 快速傅里叶变换——理论

    本文公式较多,欢迎大家勘误 1.周期离散信号的傅里叶变换 离散信号傅里叶变换的公式如下所示: 离散傅里叶变换的原理...

  • 11 MRI图像分析--连续离散傅里叶变换

    前言 连续傅里叶变换和离散傅里叶变换经常用于MRI 图像分析之中,第11块主要讲MRI 图像和傅里叶变换的细节,涉...

  • openCV:傅里叶变换

    傅里叶变换 概念 https://zhuanlan.zhihu.com/p/19763358 傅里叶变换的作用 高...

  • OpenCV 离散傅里叶变换

    离散傅里叶变换(DFT) 定义 离散傅里叶变换(Discrete Fourier Transform,缩写为DFT...

网友评论

      本文标题:傅里叶变换

      本文链接:https://www.haomeiwen.com/subject/mgofzhtx.html