基于蓝桥杯省赛一等奖选手的实验报告整理 适用:数字图像处理(DIP)课程复习
傅里叶变换:将图像从空域(像素位置)转换到频域(频率成分)
空域图像 f(x,y) --傅里叶变换--> 频域 F(u,v) ↑ ↓ 像素值 频率成分 (空间位置) (高低频分布)
| 频率类型 | 对应图像特征 | 在频谱中的位置 |
|---|---|---|
| 低频 | 平滑区域、整体轮廓、缓慢变化 | 频谱中心 |
| 高频 | 边缘、细节、噪声、快速变化 | 频谱四周 |
matlab% 1. 二维傅里叶变换 F = fft2(f); % f 是输入图像,F 是频域表示 % 2. 频谱中心化(将低频移到中心) Fshift = fftshift(F); % 3. 显示频谱(取对数增强可视化) S = log(1 + abs(Fshift)); imshow(S, []); % 4. 逆傅里叶变换(回到空域) f_back = ifft2(ifftshift(Fshift));
fft2 输出: fftshift 后: 低频在四角 低频在中心 高频在中心 高频在四周 [高 低] [低 高] [低 高] --> [高 低]
便于观察:人眼习惯看中心为原点的图像
原理:只允许低频通过,高频全部阻断
其中 是到中心的距离
效果:
效果:
改进:平滑过渡,减少振铃效应
| 参数 | 含义 |
|---|---|
| 截止频率 | |
| 阶数,控制过渡带陡峭程度 |
特点:
最优:完全没有振铃效应
特点:
| 特性 | 理想滤波器 | 巴特沃斯滤波器 | 高斯滤波器 |
|---|---|---|---|
| 过渡带 | 突变(阶跃) | 平滑过渡 | 最平滑 |
| 振铃效应 | 严重 | 中等(n小则小) | 无 |
| 边缘保留 | 差 | 较好 | 最好 |
| 计算复杂度 | 低 | 中 | 中 |
| 推荐使用 | 教学演示 | 一般应用 | 高质量要求 |
步骤1: 读入图像 f ↓ 步骤2: 傅里叶变换 F = fft2(f) ↓ 步骤3: 频谱中心化 Fshift = fftshift(F) ↓ 步骤4: 构建滤波器 H(与Fshift同尺寸) ↓ 步骤5: 频域相乘 G = H .* Fshift ↓ 步骤6: 逆变换 g = ifft2(ifftshift(G)) ↓ 步骤7: 取实部 result = real(g)
高通滤波会丢失低频信息 → 图像整体变暗
或空域处理:
效果:在保留边缘的同时,保持图像整体亮度
| 截止频率 | 效果 |
|---|---|
| 小(如30) | 非常模糊,只剩轮廓 |
| 中(如60) | 适度平滑,噪声减少 |
| 大(如120) | 轻微平滑,细节保留 |
| 参数 | 效果 |
|---|---|
| 小 | 更多高频通过,边缘增强明显 |
| 大 | 较少高频通过,效果温和 |
理想低通: 巴特沃斯(n=2): 高斯低通: 边缘有波纹 边缘较平滑 边缘最自然 ████ ████ ████ █ █ █ █ █ █ █ █ █ █ █ █
| 滤波器 | 低通公式 | 高通公式 |
|---|---|---|
| 理想 | if | if |
| 巴特沃斯 | ||
| 高斯 |
matlabfunction H = ideal_lowpass(M, N, D0) % 创建频率网格 u = 0:(M-1); v = 0:(N-1); idx = find(u > M/2); u(idx) = u(idx) - M; idy = find(v > N/2); v(idy) = v(idy) - N; [V, U] = meshgrid(v, u); D = sqrt(U.^2 + V.^2); % 理想低通滤波器 H = double(D <= D0); end
matlabfunction H = butterworth_lowpass(M, N, D0, n) % 创建频率网格 u = 0:(M-1); v = 0:(N-1); idx = find(u > M/2); u(idx) = u(idx) - M; idy = find(v > N/2); v(idy) = v(idy) - N; [V, U] = meshgrid(v, u); D = sqrt(U.^2 + V.^2); % 巴特沃斯低通滤波器 H = 1 ./ (1 + (D./D0).^(2*n)); end
matlabfunction H = gaussian_lowpass(M, N, D0) % 创建频率网格 u = 0:(M-1); v = 0:(N-1); idx = find(u > M/2); u(idx) = u(idx) - M; idy = find(v > N/2); v(idy) = v(idy) - N; [V, U] = meshgrid(v, u); D = sqrt(U.^2 + V.^2); % 高斯低通滤波器 H = exp(-(D.^2) ./ (2*D0^2)); end
matlab% 读取图像 f = imread('image.jpg'); f = rgb2gray(f); f = im2double(f); % 傅里叶变换 F = fft2(f); Fshift = fftshift(F); % 构建滤波器(以高斯低通为例) [M, N] = size(f); D0 = 50; % 截止频率 H = gaussian_lowpass(M, N, D0); % 频域滤波 G = H .* Fshift; % 逆变换 g = ifft2(ifftshift(G)); g = real(g); % 显示结果 figure; subplot(1,2,1), imshow(f), title('原图'); subplot(1,2,2), imshow(g), title('滤波后');
为什么 fftshift 后低频在中心?
三种滤波器的振铃效应对比?
高通滤波后图像为什么变暗?
频域滤波 = 在频域用滤波器 H 乘以频谱 F,再逆变换回空域
低通 = 保留低频(平滑),高通 = 保留高频(锐化)
高斯最优无振铃,理想最差有振铃,巴特沃斯居中可调
文档整理:2026年4月27日 整理者:蓝桥杯省赛一等奖选手
本文作者:Deshill
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!