news 2026/5/1 7:51:59

当图像开始跳舞:用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/4/27 9:21:12

Flash download tool

from esp32 website https://docs.espressif.com/projects/esp-test-tools/zh_CN/latest/esp32c3/production_stage/tools/flash_download_tool.html note: - 必须首先进入下载模式&#xff0c; usb 模式下也要先进入下载模式 将 GPIO9 管脚下拉&#xff0c;GPIO8 管脚上拉&am…

作者头像 李华
网站建设 2026/4/24 6:17:27

COMSOL手性GST相变文章复现

COMSOL手性GST相变文章复现大家好&#xff0c;今天我想和大家分享一篇关于复现COMSOL模型的文章。这篇文章是我在学习光子ics材料时&#xff0c;复现了一篇关于手性材料 GST 相变的文章。通过这个过程&#xff0c;我不仅复习了COMSOL的基本操作&#xff0c;还对手性材料的性质有…

作者头像 李华
网站建设 2026/5/1 2:07:30

《告别无效等待:大规模第三方库项目的快速增量构建指南》

清晨提交一行简单的工具类修改,等到午餐归来屏幕上仍跳动着编译进度条;迭代阶段仅调整一个配置参数,却要触发所有第三方库的全量重编,数小时的等待让开发节奏被迫中断,那种陷入无效内耗的焦灼,足以磨平最饱满的研发热情。多数团队面对这种困境,往往会陷入“堆砌硬件”或…

作者头像 李华
网站建设 2026/4/23 9:25:49

2025信创大事件盘点:从“根基”到“生态”,自主之路迈入新纪元

从龙芯CPU性能比肩国际主流&#xff0c;到行业信创测试标准密集落地&#xff0c;一场从底层技术到上层应用的自主化革命&#xff0c;正重塑着中国数字经济的未来。2025年&#xff0c;是中国信创产业从规模化推广转向高质量发展的关键一年。这一年&#xff0c;国产CPU实现了从“…

作者头像 李华
网站建设 2026/5/1 0:50:01

leetcode 784. Letter Case Permutation 字母大小写全排列

Problem: 784. Letter Case Permutation 字母大小写全排列 解题过程 两种方案的&#xff0c;1、回溯&#xff0c;每次替换即可 2、位运算&#xff0c;整数的二进制1代表反转&#xff0c;去重即可的 Code class Solution { public:vector<string> tr;unordered_map<st…

作者头像 李华