news 2026/6/4 19:27:45

当图像开始跳舞:用Matlab玩转频率域滤镜

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
当图像开始跳舞:用Matlab玩转频率域滤镜

标题:基于matlab的理想滤波器和巴特沃斯滤波器设计 关键词:一阶巴特沃斯滤波器 理想滤波器 二维傅里叶变换 fft2 描述:对任意图像进行灰度化,然后进行二维傅里叶变化,设定一个阈值,对高频或者低频信号进行滤波操作。 通过设置阈值,选择类型可设置理想低通,理想高通滤波器和一阶巴特沃斯高通和一阶巴特沃斯低通滤波器。 基于matlab的图像处理小实验,

最近在折腾图像处理的时候发现,频率域滤波像给照片开了上帝视角——原本藏在像素背后的高频细节和低频轮廓突然变得可控。今天咱们拿Matlab当画笔,试试怎么用理想滤波器和巴特沃斯滤波器给图像做"美颜"。

先抓张图进来折腾:

% 灵魂画手的第一步 img = imread('lena.jpg'); gray_img = rgb2gray(img); figure(1), imshow(gray_img), title('原图:等待滤镜的素颜照')

!图1:原图

接下来要进入核心环节——二维傅里叶变换。这时候图像会变成频域里的一团星云:

% 施展空间魔法 f_img = fft2(double(gray_img)); f_shift = fftshift(f_img); magnitude = log(abs(f_shift)+1); figure(2), imshow(magnitude,[]), title('频域星云图')

!图2:频域分布

重点来了,咱们先做个理想低通滤波器试试。这玩意儿就像个暴君,对超出阈值的频率直接封杀:

% 专制型滤镜生成器 [M,N] = size(gray_img); D0 = 30; % 试试把这个值调到15看看会发生什么 u = 0:(M-1); v = 0:(N-1); [V,U] = meshgrid(v,u); D = sqrt((U-floor(M/2)).^2 + (V-floor(N/2)).^2); ideal_LP = double(D <= D0);

!图3:理想低通效果

看这个滤镜模板,边缘锋利得像菜刀切出来的。这种简单粗暴的方式虽然有效,但处理后的图像边缘总带着奇怪的振铃,就像给照片套了个劣质相框。

这时候就该巴特沃斯滤波器出场了。一阶的设计让它像个温和的管家,对频率成分的过渡处理得更圆滑:

% 温柔版滤镜配方 n = 1; % 一阶设计 butter_HP = 1./(1 + (D./D0).^(2*n)); figure(4), mesh(butter_HP), title('巴特沃斯曲面')

!图4:巴特沃斯模板

把这两个滤镜往频域信号上一套,效果立竿见影:

% 理想低通实战 filtered_ideal = f_shift .* ideal_LP; f_ishift_ideal = ifftshift(filtered_ideal); img_back_ideal = real(ifft2(f_ishift_ideal)); % 巴特沃斯高通表演 butter_HP = 1 - butter_HP; % 秒变高通 filtered_butter = f_shift .* butter_HP; f_ishift_butter = ifftshift(filtered_butter); img_back_butter = real(ifft2(f_ishift_butter));

最后对比看看处理效果:

% 作品展示环节 figure(5) subplot(121),imshow(img_back_ideal,[]),title('理想低通:柔光效果') subplot(122),imshow(img_back_butter,[]),title('巴特沃斯高通:边缘提取')

!图5:对比效果

玩的时候注意几个关键点:

  1. fftshift就像个搬运工,把低频部分搬到频谱图中心
  2. 恢复图像时用real()是因为计算时可能残留微小虚部
  3. D0这个阈值相当于滤镜的力度旋钮,调太小会丢失细节

下次想更刺激的话,可以试试把巴特沃斯的阶数调高,看看会不会出现类似理想滤波器的效果。或者做个滑块交互界面,实时看滤镜变化——不过那就是另一个故事了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 21:42:33

PMP学习笔记--环境

01&#xff0c;组织运行环境包含事业环境因素和资质过程资产组织结构类型&#xff08;1&#xff09;职能型组织&#xff08;2&#xff09;矩阵型组织&#xff08;3&#xff09;项目型组织项目管理者在不同组织中的特征组织治理框架法约尔原则与治理要素企业文化与发展战略企业所…

作者头像 李华
网站建设 2026/5/29 0:52:38

@valid的坑

尝试1如果需要参数校验&#xff0c;我们就在controller的参数前添加valid&#xff0c;像下面一样RequestBody Valid List<PlatProjectItemAndVerionVo> itemAndVersionVoList参数属性上添加注解NotBlank(message "dataType参数不能为空") private String data…

作者头像 李华
网站建设 2026/5/30 22:15:38

4 倍扩容 + 700 + 流程图极速展示!ProDB×TDengine 赋能泰州石化

小T导读&#xff1a;中海油泰州石化原有 AspenTech InfoPlus.21 实时数据库系统建设至今已有十余年&#xff0c;随着企业的逐步发展&#xff0c;原有采集点数已达上限&#xff0c;相关应用取数效率下降&#xff0c;限制了企业新需求的增长&#xff0c;借助该国产化项目汉中诺 P…

作者头像 李华
网站建设 2026/5/30 22:13:54

【电动汽车响应率】考虑的是针对电动汽车充放电调度问题,由于放电奖励不同导致部分车主不愿参与放电,设计出响应率计算方法附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/5/30 22:12:45

从数据瓶颈到ROAS飙升21%!Skygo牵手热力引擎,按下游戏增长快进键

在游戏行业全球化竞争日趋激烈的市场环境下&#xff0c;如何依托高效的移动营销合作伙伴&#xff08;MMP&#xff09;破解数据短板、优化广告投放效能&#xff0c;不仅是必修课&#xff0c;更是游戏厂商实现规模化增长的破局关键。越南游戏开发与发行公司 Skygo&#xff0c;凭借…

作者头像 李华
网站建设 2026/5/30 23:10:27

需求接口人与研发接口人的职责分别是什么

需求接口人与研发接口人是连接“业务价值”与“技术实现”的两个核心枢纽。需求接口人&#xff08;通常是产品经理或业务分析师&#xff09;的核心职责是“定义”&#xff0c;即明确“做什么”和“为什么做”&#xff0c;他们对业务价值、需求优先级和用户体验负责。研发接口人…

作者头像 李华