图像傅里叶变换

  傅里叶变换是一种数学工具,可用于将图像从空间域转换到频域,能够将图像表示为不同频率的正弦和余弦函数的叠加。傅里叶变换通常用于图像处理和分析,可以帮助理解图像中存在的频率信息和模式。

傅里叶变换原理:

  傅里叶变换通过将图像从空间域转换到频率域来描述图像的特征。这种变换将图像视为一系列不同频率的正弦和余弦波的加权组合。在频率域中,低频表示图像中变化缓慢的部分,而高频表示图像中变化剧烈的部分。

傅里叶变换的作用:

  • 频率分析: 傅里叶变换可以帮助分析图像中的频率信息,识别边缘、纹理等特征。
  • 滤波处理: 在频率域中进行滤波操作,例如去除图像中的高频噪声或低频信息。
  • 压缩与编码: 可以利用变换后的频域信息对图像进行压缩和编码。

适用场景:

  • 图像增强与去噪:通过滤波在频域中去除图像中的噪声。
  • 特征提取:识别图像中的纹理、边缘等特征。
  • 图像压缩:利用频域信息对图像进行压缩。
    傅里叶变换的数学表达式如下:
    F ( u , v ) = ∬ f ( x , y ) ⋅ e − 2 π i ( u x + v y )   d x   d y F(u, v) = \iint f(x, y) \cdot e^{-2\pi i (ux + vy)} \, dx \, dy F(u,v)=f(x,y)e2πi(ux+vy)dxdy
    其中, F ( u , v ) F(u, v) F(u,v)是图像在频率域中的表示, f ( x , y ) f(x, y) f(x,y) 是图像在空间域中的表示, u u u v v v 表示频率域中的频率坐标。
      在OpenCV中,可以使用函数 cv2.dft() 来进行傅里叶变换。以下是一个示例代码:
import cv2
import numpy as np

def show_images(image):
    cv2.namedWindow('image',cv2.WINDOW_KEEPRATIO)
    cv2.imshow('image',image)
    cv2.waitKey()
    cv2.destroyAllWindows()

def FT(image):
    # 进行二维傅里叶变换
    f_transform = cv2.dft(np.float32(image), flags=cv2.DFT_COMPLEX_OUTPUT)
    f_shift = np.fft.fftshift(f_transform)  # 将频率原点移到图像中心

    # 计算幅度谱
    magnitude_spectrum = 20 * np.log(cv2.magnitude(f_shift[:, :, 0], f_shift[:, :, 1]))

    return magnitude_spectrum

if __name__ == '__main__':
    # 读取图像
    img = cv2.imread('cat-dog.png', flags=0)
    re_img=FT(img)
    # # 将四张图像连接成一个大图像
    # top_row = np.hstack((img, re_img[0]))
    # bottom_row = np.hstack((re_img[1], re_img[2]))
    combined_img = np.vstack((img, re_img))

    show_images(combined_img)
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Make_magic

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值