当前位置: 首页 > article >正文

二维DFT图像频域分析:从基础原理到实战应用

前言一维DFT我们已经玩明白了知道它能把复杂信号拆成一堆正弦波。那二维DFT呢简单说就是把这个“拆解魔法”搬到了图像上。一张图片其实也可以看作是二维信号二维DFT就能把它拆解成无数个不同方向、不同频率的二维正弦波。这篇就带大家从原理、公式、代码、实验一次性把二维DFT吃透看完你就能看懂图像的频域谱还能自己动手做滤波、去噪、锐化。一、二维DFT是什么1.1 核心思想一维DFT是把一维信号时间序列拆成不同频率的正弦波二维DFT是把二维信号图像拆成不同频率、不同方向的二维正弦波。通俗解释就像把一张复杂的“油画”拆成无数个不同粗细、不同方向的“条纹”这些条纹的频率、强度就是图像的频域信息。1.2 数学公式二维DFT的公式F ( u , v ) ∑ x 0 M − 1 ∑ y 0 N − 1 f ( x , y ) ⋅ e − j 2 π ( u x M v y N ) F(u, v) \sum_{x0}^{M-1} \sum_{y0}^{N-1} f(x, y) \cdot e^{-j2\pi\left(\frac{ux}{M} \frac{vy}{N}\right)}F(u,v)x0∑M−1​y0∑N−1​f(x,y)⋅e−j2π(Mux​Nvy​)每个字母的含义f ( x , y ) f(x,y)f(x,y)原始图像x xx是行号y yy是列号( x , y ) (x,y)(x,y)是像素坐标M MM图像的高度行数N NN图像的宽度列数F ( u , v ) F(u,v)F(u,v)频域谱u uu是水平频率v vv是垂直频率e − j 2 π ( u x M v y N ) e^{-j2\pi(\frac{ux}{M}\frac{vy}{N})}e−j2π(Mux​Nvy​)复指数函数负责把图像从时域空间域转换到频域j jj虚数单位j 2 − 1 j^2-1j2−1逆二维DFT公式把频域转回去f ( x , y ) 1 M N ∑ u 0 M − 1 ∑ v 0 N − 1 F ( u , v ) ⋅ e j 2 π ( u x M v y N ) f(x, y) \frac{1}{MN} \sum_{u0}^{M-1} \sum_{v0}^{N-1} F(u, v) \cdot e^{j2\pi\left(\frac{ux}{M} \frac{vy}{N}\right)}f(x,y)MN1​u0∑M−1​v0∑N−1​F(u,v)⋅ej2π(Mux​Nvy​)二、二维DFT的频域谱怎么看2.1 频域谱的分布规律直接做二维DFT得到的频域谱低频部分在四个角落高频在中间看起来很别扭。所以通常会用fftshift把频谱中心化让低频在中心高频在四周。图 1 二维 DFT 频域谱中心化示意图中心化后中心低频成分对应图像的整体亮度、大的轮廓四周高频成分对应图像的边缘、纹理、噪声对角线斜向的纹理信息通俗解释频域谱的亮度越高说明这个频率/方向的成分越强。比如一张有很多水平线条的图频域谱上垂直方向的点会很亮。2.2 常见图像的频域谱示例表1 不同图像的频域谱特征图像类型频域谱特征通俗解释纯色图像只有中心一个亮点没有任何纹理只有低频亮度水平条纹垂直方向有一排亮点水平纹理对应垂直方向的频率斜向条纹对角线方向有亮点斜向纹理对应对角线方向的频率带噪声图像频域谱四周均匀发亮噪声都是高频分布在所有方向三、核心代码二维DFT实战下面是Python实现二维DFT的完整代码包含频域谱生成、中心化、低通/高通滤波。importcv2importnumpyasnpimportmatplotlib.pyplotasplt# 解决中文显示 plt.rcParams[font.family][SimHei,WenQuanYi Micro Hei,Heiti TC]plt.rcParams[axes.unicode_minus]False# 负号正常显示# # 1. 读取彩色图像 预处理defload_image(path):imgcv2.imread(path)# 读取彩色图returnimg# shape (H, W, 3)# 2. 对 单通道 做二维DFT 中心化defdft_channel(channel):img_floatnp.float32(channel)dftcv2.dft(img_float,flagscv2.DFT_COMPLEX_OUTPUT)dft_shiftnp.fft.fftshift(dft)magnitude20*np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1])1e-8)returndft_shift,magnitude# 3. 彩色图像 DFT三通道分别处理defdft_image(img):b,g,rcv2.split(img)dft_b,mag_bdft_channel(b)dft_g,mag_gdft_channel(g)dft_r,mag_rdft_channel(r)return(dft_b,dft_g,dft_r),(mag_b,mag_g,mag_r)# 4. 单通道低通滤波deflow_pass_channel(dft_shift,radius30):rows,colsdft_shift.shape[:2]crow,ccolrows//2,cols//2masknp.zeros((rows,cols,2),np.float32)cv2.circle(mask,(ccol,crow),radius,(1,1),-1)filtered_dftdft_shift*mask filtered_dft_shiftnp.fft.ifftshift(filtered_dft)img_backcv2.idft(filtered_dft_shift)img_backcv2.magnitude(img_back[:,:,0],img_back[:,:,1])cv2.normalize(img_back,img_back,0,255,cv2.NORM_MINMAX)returnnp.uint8(img_back)# 5. 彩色低通滤波deflow_pass_filter(dft_tuple,radius30):dft_b,dft_g,dft_rdft_tuple blow_pass_channel(dft_b,radius)glow_pass_channel(dft_g,radius)rlow_pass_channel(dft_r,radius)returncv2.merge((b,g,r))# 6. 单通道高通滤波defhigh_pass_channel(dft_shift,radius30):rows,colsdft_shift.shape[:2]crow,ccolrows//2,cols//2masknp.ones((rows,cols,2),np.float32)cv2.circle(mask,(ccol,crow),radius,(0,0),-1)filtered_dftdft_shift*mask filtered_dft_shiftnp.fft.ifftshift(filtered_dft)img_backcv2.idft(filtered_dft_shift)img_backcv2.magnitude(img_back[:,:,0],img_back[:,:,1])cv2.normalize(img_back,img_back,0,255,cv2.NORM_MINMAX)returnnp.uint8(img_back)# 7. 彩色高通滤波defhigh_pass_filter(dft_tuple,radius30):dft_b,dft_g,dft_rdft_tuple bhigh_pass_channel(dft_b,radius)ghigh_pass_channel(dft_g,radius)rhigh_pass_channel(dft_r,radius)returncv2.merge((b,g,r))# 主函数defmain():img_pathD:/datasets/test/cat.png# 你的彩色图路径imgload_image(img_path)dft_tuple,mag_tupledft_image(img)low_pass_imglow_pass_filter(dft_tuple,radius50)high_pass_imghigh_pass_filter(dft_tuple,radius50)# 合并频域幅度谱取平均显示mag_show(mag_tuple[0]mag_tuple[1]mag_tuple[2])/3# 画图中文正常显示plt.figure(figsize(12,8))plt.subplot(221),plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)),plt.title(原图)plt.subplot(222),plt.imshow(mag_show,cmapgray),plt.title(中心化频域谱)plt.subplot(223),plt.imshow(cv2.cvtColor(low_pass_img,cv2.COLOR_BGR2RGB)),plt.title(低通滤波去噪/模糊)plt.subplot(224),plt.imshow(cv2.cvtColor(high_pass_img,cv2.COLOR_BGR2RGB)),plt.title(高通滤波边缘提取)plt.show()if__name____main__:main()四、实验分析滤波效果对比4.1 低通滤波效果图2 低通滤波前后对比原图清晰但有噪声/细节低通滤波后图像变模糊噪声消失保留了整体轮廓原理去掉了频域四周的高频噪声只保留中心低频通俗解释低通滤波就是“去噪模糊”适合去除图像中的颗粒噪声。4.2 高通滤波效果图3 高通滤波前后对比原图包含丰富纹理和边缘高通滤波后只保留了边缘和纹理整体亮度消失原理去掉了频域中心的低频亮度只保留四周高频通俗解释高通滤波就是“边缘提取锐化”适合检测图像的轮廓和细节。表2 不同半径的低通滤波效果对比滤波半径效果适用场景20轻微模糊保留细节轻度去噪50中等模糊噪声去除明显常规去噪100严重模糊只剩大轮廓图像简化五、常见问题与注意事项5.1 为什么频域谱要中心化原始DFT的低频在四个角落不便于观察和滤波。中心化后低频在中心高频在四周滤波时直接在中心画圆即可操作更直观。5.2 为什么要对频域谱取对数频域谱的动态范围很大直接显示会导致中心过亮、四周过暗看不清细节。取对数可以压缩动态范围让高低频的差异更明显。5.3 滤波时掩码的半径怎么选半径越小保留的低频越少低通滤波效果越强图像越模糊半径越大保留的高频越少高通滤波效果越强边缘越明显。一般可以通过调试找到适合的半径。六、二维DFT的应用场景图像去噪用低通滤波去除高频噪声边缘检测用高通滤波提取图像边缘图像压缩保留低频信息丢弃高频冗余信息图像增强通过频域处理提升图像对比度纹理分析通过频域谱判断图像的纹理方向和频率七、总结二维DFT把图像从空间域转换到频域让我们能更直观地分析和处理图像的频率成分。低通滤波去噪、高通滤波提取边缘都是二维DFT最经典的应用。这篇博客从原理、公式、代码到实验完整覆盖了二维DFT的核心内容大家可以用上面的代码跑一遍亲自感受一下频域处理的神奇效果。

相关文章:

二维DFT图像频域分析:从基础原理到实战应用

前言 一维DFT我们已经玩明白了,知道它能把复杂信号拆成一堆正弦波。那二维DFT呢?简单说,就是把这个“拆解魔法”搬到了图像上。一张图片,其实也可以看作是二维信号,二维DFT就能把它拆解成无数个不同方向、不同频率的二…...

2026口碑靠前的备考增强记忆品牌榜单

这份口碑靠前的备考增强记忆品牌榜单是结合成分合规性、市场口碑、权威认证、场景适配性多个维度整理得出,能给备考人群选择脑营养补充产品提供清晰可靠的参考方向。这份口碑靠前的备考增强记忆品牌榜单的评选维度是什么?本次评选围绕三个核心指标筛选&a…...

【仅限持牌机构内部流通】:Docker 27金融隔离黄金配置矩阵(含Kubernetes 1.30+PodSecurity Admission适配表、FIPS 140-3认证路径)

第一章:Docker 27金融交易数据容器隔离概览在高并发、低延迟的金融交易系统中,数据隔离不仅是安全合规的核心要求,更是防止跨业务线干扰、保障交易一致性与审计可追溯性的基础设施能力。Docker 27(即 Docker Engine v27.x&#xf…...

谷歌Next年度大会智能体登场,OpenAI/微美全息构筑“AI芯片+智能体”生态受瞩目

北京时间周四,美国云服务巨头谷歌(GOOG.US)举行2026 Next大会,发布了旨在推动企业工作流程全面转向智能体的“代理式企业”(Agentic Enterprise)技术栈,涵盖第八代TPU、智能体软件平台等一系列前…...

Hive 技术文章大纲

Hive 技术文章大纲1. Hive 简介Hive 的定义及其在大数据生态系统中的角色Hive 与关系型数据库的区别Hive 的主要特点(如 SQL 兼容性、扩展性、批处理能力)2. Hive 架构与核心组件Hive 的整体架构(Metastore、Driver、Compiler、Executor 等&a…...

打破次元壁:在华为Pura X Max上体验华为阅读独家AI动态漫画力量!

作为一名长期混迹数码圈的科技博主,我本以为屏幕折叠、刷新率卷到头后,手机的阅读体验很难再有质的飞跃。但4月20日发布的华为Pura X Max,配合新升级的华为阅读最新独家技术,确实给了我一点小小的“鸿蒙震撼”。大家平时看漫画&am…...

别再手动配环境了!用CMake+VS2022一键搞定PCL点云库(附完整项目模板)

现代C点云开发实战:基于CMake与VS2022的PCL高效配置指南 点云处理已成为计算机视觉、自动驾驶和三维重建领域的核心技术之一。对于C开发者而言,Point Cloud Library (PCL)提供了强大的工具集,但传统的配置方式往往令人望而生畏——手动设置包…...

广州海珠智能体案例中的“咨询+干预+随访”多智能体协作:医疗AI从“单点工具”到“执行系统”的范式转移

引言:从“工具”到“系统”的范式转移在过去的几年中,人工智能在医疗领域的应用取得了显著进展。从辅助医生识别肺结节的影像系统,到自动生成电子病历的自然语言处理工具,AI技术正逐步渗透到诊疗的各个环节。然而,这些…...

千问3.5-9B在C语言教学中的应用:代码分析与调试助手

千问3.5-9B在C语言教学中的应用:代码分析与调试助手 1. 引言:编程教学的新帮手 "老师,我这个程序为什么运行不了?"——这句话可能是每个C语言课程助教最常听到的提问。传统编程教学中,教师需要面对大量基础…...

3分钟解决C盘爆红问题:WindowsCleaner终极清理指南

3分钟解决C盘爆红问题:WindowsCleaner终极清理指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为Windows系统越用越慢而烦恼吗?当…...

Phi-3.5-mini-instruct开源可部署指南:自主可控的轻量级AI代码助手

Phi-3.5-mini-instruct开源可部署指南:自主可控的轻量级AI代码助手 1. 项目介绍 Phi-3.5-mini-instruct是微软推出的轻量级开源指令微调大模型,在代码理解和多语言任务上表现优异。这个模型特别适合作为本地AI代码助手使用,能够在单张RTX 4…...

智慧树自动刷课插件终极指南:3分钟解放双手,高效完成在线课程

智慧树自动刷课插件终极指南:3分钟解放双手,高效完成在线课程 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台的繁琐视频播放流…...

Qwen3.5-9B-GGUF实战教程:llama-cpp-python参数调优全解析

Qwen3.5-9B-GGUF实战教程:llama-cpp-python参数调优全解析 1. 模型与项目概述 Qwen3.5-9B-GGUF是阿里云通义千问3.5系列中的90亿参数稠密模型,经过GGUF格式量化后,可以在消费级硬件上高效运行。该模型采用创新的Gated Delta Networks架构和…...

Java 面试:从微服务到数据库的幽默探讨

Java 面试:从微服务到数据库的幽默探讨 在这篇文章中,我们将通过一个幽默而又严肃的面试场景来探讨 Java 求职者在互联网大厂面试中可能遇到的技术问题。面试官将提出与微服务、数据库、测试框架等相关的问题,而搞笑的水货程序员燕双非则在回…...

UHMWPE板有哪些厂家

在众多的土工材料中,UHMWPE板(超高分子量聚乙烯板)凭借其优异的耐磨性、耐冲击性和自润滑性等特点,广泛应用于防弹服、合成溜冰场、各种耐磨机械零件及食品机械等领域。今天,山东龙翔新材料有限公司就为大家带来一份UH…...

Weka集成学习实战:Boosting、Bagging与Stacking对比

1. 使用Weka进行集成学习实验的完整指南作为一名长期使用Weka进行机器学习研究和教学的从业者,我发现集成学习方法在实际项目中能显著提升模型性能。本文将带你一步步在Weka Experimenter中设计并运行一个完整的集成学习实验,比较Boosting、Bagging和Ble…...

macOS虚拟机解锁神器:让VMware ESXi也能运行苹果系统

macOS虚拟机解锁神器:让VMware ESXi也能运行苹果系统 【免费下载链接】esxi-unlocker VMware ESXi macOS 项目地址: https://gitcode.com/gh_mirrors/es/esxi-unlocker 你是否曾经想过在VMware ESXi虚拟化平台上运行macOS系统?对于开发者和IT管理…...

不同水质检测标准不同

一、生活饮用水检测标准(核心常用)执行标准:《生活饮用水卫生标准》(GB 5749-2022),配套检验方法为《生活饮用水标准检验方法》(GB/T 5750-2023),自2023年4月1日起实施&a…...

DeepPCB:如何用1500对工业级图像彻底解决PCB缺陷检测难题?

DeepPCB:如何用1500对工业级图像彻底解决PCB缺陷检测难题? 【免费下载链接】DeepPCB A PCB defect dataset. 项目地址: https://gitcode.com/gh_mirrors/de/DeepPCB 还在为PCB缺陷检测项目找不到高质量训练数据而烦恼吗?还在担心你的深…...

VNC如何同步粘贴复制

1、右击控制的桌面图标2、点击 Properties,找到 Expert3、在 Filter 里搜索 clipboard下面三个改成图示就可以了4、jetson端开启 clipboard bridge在 Jetson 终端运行:sudo apt update sudo apt install autocutsel然后运行:autocutsel -fork…...

2026 GEO优化必备,AI搜索监测工具推荐

随着生成式AI技术的快速发展,AI搜索正在成为用户获取信息的主要渠道。GEO(生成式引擎优化)作为一种全新的营销方式,正在受到越来越多企业的重视。近日,有行业机构发布了2026年GEO工具市场报告,对全球范围内…...

2026AI搜索优化必看:这几款GEO监测工具亲测有效

背景随着生成式AI的普及,AI搜索正在成为用户获取信息的主要渠道之一。传统的SEO已经无法满足品牌在AI时代的曝光需求。AI搜索优化(GEO,Generative Engine Optimization)应运而生。从2026年1月到4月,我们团队对市面上主…...

算法训练营第十一天--删除有序数组的重复项||

​题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/ 视频讲解:https://www.bilibili.com/video/BV18G5UzzE8c/ 解题思路如下: 因为数组是有序的,重复元素一定是连续出现的。我们可以用快慢双指针…...

从一次线上OOM崩溃复盘说起:我是如何用Android Studio Profiler揪出Bitmap加载的“隐形杀手”

从一次线上OOM崩溃复盘说起:我是如何用Android Studio Profiler揪出Bitmap加载的"隐形杀手" 那天凌晨3点,我被急促的报警短信惊醒——我们团队负责的电商App在促销活动中突然出现大面积OOM崩溃。用户反馈页面滑动时频繁闪退,而崩溃…...

Phi-3.5-Mini-Instruct效果展示:Markdown格式输出+代码块高亮真实截图

Phi-3.5-Mini-Instruct效果展示:Markdown格式输出代码块高亮真实截图 1. 项目概述 基于微软 Phi-3.5-Mini-Instruct 轻量级大模型开发的本地对话工具,采用官方推荐Pipeline架构、BF16半精度推理,自动分配显卡资源,内置对话记忆与…...

神经渲染三维重建:从NeRF到产业落地,一篇讲透

神经渲染三维重建:从NeRF到产业落地,一篇讲透 引言 想象一下,仅凭几张手机拍摄的照片,几分钟内就能生成一个可360度浏览、光影逼真的三维模型。这不再是科幻,而是神经渲染(Neural Rendering)技…...

Cogito-v1-preview-llama-3B部署教程:Ollama模型热更新与A/B测试配置

Cogito-v1-preview-llama-3B部署教程:Ollama模型热更新与A/B测试配置 想快速体验一个在编码、多语言和推理能力上都表现出色的轻量级大模型吗?今天要介绍的Cogito-v1-preview-llama-3B,就是一个能让你眼前一亮的3B参数模型。它不仅支持128K的…...

告别闪烁!优化ESP32+ST7789滚屏效果的3个关键技巧(SPI时序与双缓冲)

告别闪烁!优化ESP32ST7789滚屏效果的3个关键技巧 在嵌入式显示应用中,流畅的滚屏效果往往能显著提升用户体验。当开发者成功驱动ST7789屏幕并实现基础滚屏功能后,常会遇到画面撕裂、闪烁或滚动不流畅等问题。本文将深入探讨三个关键优化技巧&…...

万象视界灵坛一文详解:像素风UI如何降低多模态分析认知负荷

万象视界灵坛一文详解:像素风UI如何降低多模态分析认知负荷 1. 多模态分析的认知挑战 现代多模态分析系统面临一个核心矛盾:技术越强大,界面往往越复杂。传统视觉识别平台通常采用专业术语密集的仪表盘和数据表格,这种设计虽然精…...

从论文到实践:阿里云XRDMA通信库如何重塑大规模RDMA应用生态

1. RDMA技术为何需要"中间件"? RDMA技术就像给数据中心装上了高速公路,但这条路上却缺少交通指示灯和导航系统。我第一次接触RDMA时,被它的性能数据震撼到了——200Gbps带宽、0.6微秒延迟,这比传统TCP快了整整一个数量级…...