数字图像基础——傅里叶变换

该代码示例展示了如何使用Python的numpy、scikit-image和opencv库进行傅里叶变换,将图像转换为其频率分布。首先,读取并转换图像为灰度,然后应用快速傅里叶变换(fft2),接着使用fftshift移动中心,并对结果取对数和绝对值以可视化频谱。最后,用matplotlib和opencv显示原始图像及其傅里叶频谱。
摘要由CSDN通过智能技术生成

傅里叶变换代码:

from skimage import data,io,color
import numpy as np
from matplotlib import pyplot as plt
import cv2 as cv
"""中文显示工具函数"""
def set_ch():
    from pylab import mpl
    mpl.rcParams['font.sans-serif']=['FangSong']
    mpl.rcParams['axes.unicode_minus']=False
set_ch()
# img = data.camera()
#img = io.imread('D:\shuzi_image\cat.jpg')
img = cv.imread('./cat/cat1.png')
img=color.rgb2gray(img)
f = np.fft.fft2(img) # 快速傅里叶变换算法得到频率分布
fshift = np.fft.fftshift(f) # 默认结果中心点位置是在左上角,转移到中间位置
fimg = np.log(np.abs(fshift)) # fft 结果是复数,求绝对值结果才是振幅
# 展示结果
plt.subplot(121), plt.imshow(img, 'gray'), plt.title('原始图像')
plt.subplot(122), plt.imshow(fimg, 'gray'), plt.title('傅里叶频谱')
plt.subplot(122)
fimg=fimg.astype(np.uint8)
cv.namedWindow('image')
cv.imshow("image",fimg*23)
cv.waitKey()
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值