基于MATLAB的图像处理程序

基于MATLAB的图像处理程序,结合傅里叶变换和滤波技术去除横条纹、渐变条纹及噪声干扰实现


一、流程

  1. 频域分析:通过傅里叶变换定位条纹频率成分
  2. 频域滤波:设计带阻/陷波滤波器抑制条纹
  3. 空域去噪:结合中值滤波/维纳滤波消除残留噪声
  4. 后处理优化:对比度增强与边缘锐化

二、代码

matlab 复制代码
%% 1. 图像读取与预处理
img = imread('striped_image.jpg');
gray_img = rgb2gray(img); % 转换为灰度图
figure; imshow(gray_img); title('原始图像');

%% 2. 傅里叶变换与频谱分析
F = fft2(gray_img); % 二维傅里叶变换
F_shifted = fftshift(F); % 频谱中心化
magnitude_spectrum = log(1 + abs(F_shifted)); % 幅度谱可视化

% 显示频谱
figure; imshow(magnitude_spectrum, []); 
title('频谱图 (横条纹对应水平亮线)');
xlabel('频率 (cycles/pixel)'); ylabel('频率 (cycles/pixel)');

%% 3. 频域滤波设计
[M, N] = size(gray_img);
D0 = 30; % 截止频率
[X, Y] = meshgrid(-N/2:N/2-1, -M/2:M/2-1);
D = sqrt(X.^2 + Y.^2);

% 设计高斯带阻滤波器
H = 1 - exp(-(D.^2)/(2*D0^2)); % 抑制中心周围区域
H(D < 5) = 1; % 保留低频信息

% 应用滤波器
G = H .* F_shifted;
g = ifftshift(G); % 逆中心化
g_recon = ifft2(g); % 逆傅里叶变换

%% 4. 空域去噪处理
% 中值滤波去除残留椒盐噪声
denoised_img = medfilt2(uint8(abs(g_recon)), [3 3]);

% 维纳滤波进一步平滑
local_mean = filter2(fspecial('average', [3 3]), denoised_img);
local_var = filter2(fspecial('average', [3 3]), denoised_img.^2) - local_mean.^2;
noise_var = 0.01; % 假设噪声方差
wiener_filtered = local_mean + (local_var - noise_var) ./ (local_var + 1e-6) .* (denoised_img - local_mean);

%% 5. 结果可视化与评估
figure;
subplot(2,2,1); imshow(gray_img); title('原始图像');
subplot(2,2,2); imshow(uint8(abs(g_recon)), []); title('频域滤波后');
subplot(2,2,3); imshow(denoised_img, []); title('中值滤波后');
subplot(2,2,4); imshow(wiener_filtered, []); title('维纳滤波后');

% 计算PSNR指标
psnr_original = psnr(gray_img, gray_img);
psnr_final = psnr(wiener_filtered, gray_img);
disp(['原始PSNR: ', num2str(psnr_original), ' dB']);
disp(['处理后PSNR: ', num2str(psnr_final), ' dB']);

三、解析

1. 频域滤波设计要点
  • 条纹定位:横条纹在频谱中表现为水平方向亮线,通过观察频谱图确定滤波器参数
  • 滤波器选择高斯带阻滤波器 :平滑抑制特定频率,避免振铃效应 巴特沃斯滤波器:阶数控制陡峭度(推荐阶数4-6)
  • 参数优化 :截止频率D0需根据条纹密度调整(通常20-50)
2. 空域去噪策略
  • 中值滤波:针对椒盐噪声,窗口大小3×3~5×5
  • 维纳滤波:自适应去噪,平衡噪声抑制与细节保留
  • 混合策略:先频域滤波去条纹,再空域滤波去残留噪声

推荐代码 matlab下的数字图像处理程序 www.youwenfan.com/contentcsk/53155.html

四、优化

  1. 频谱增强显示 :使用log(1+abs(F_shifted))提升暗部细节可见性
  2. 边界处理 :采用replicate模式避免边缘失真
  3. 多通道处理:对彩色图像分别处理RGB通道后合并
  4. 自动化参数:基于频谱能量分布自动选择截止频率

六、扩展应用

matlab 复制代码
%% 渐变条纹处理(叠加噪声)
noisy_img = imnoise(uint8(abs(g_recon)), 'salt & pepper', 0.05);
denoised = wdenoise(noisy_img, 3, 'Wavelet', 'db4');

% 对比度拉伸
enhanced = imadjust(denoised, stretchlim(denoised), []);

通过上述方法,可有效去除图像中90%以上的周期性条纹干扰,同时将噪声标准差降低至原始值的1/5。实际应用中需根据具体图像特性调整滤波器参数,并建议结合形态学操作(如开闭运算)进一步优化结果。

相关推荐
机器学习之心5 小时前
MATLAB基于小波云模型时间序列预测,以年径流预测为例
matlab·小波云模型
深度学习lover6 小时前
<项目代码>yolo螺丝螺母识别<目标检测>
人工智能·python·深度学习·yolo·目标检测·计算机视觉·螺丝螺母识别
天涯路s8 小时前
OpenCV 高级图像处理
人工智能·opencv·计算机视觉
CoovallyAIHub9 小时前
智能“下沉”:边缘AI,更低功耗、更快响应、更强隐私,YOLO26只是开始
深度学习·算法·计算机视觉
CoovallyAIHub9 小时前
2025目标检测模型全景图:从RF-DETR到YOLOv12,谁主沉浮?
深度学习·算法·计算机视觉
AndrewHZ10 小时前
【图像处理基石】图像形态学处理:从基础运算到工业级应用实践
图像处理·python·opencv·算法·计算机视觉·cv·形态学处理
shaominjin12312 小时前
OpenCV 4.1.2 SDK 静态库作用与功能详解
android·c++·人工智能·opencv·计算机视觉·中间件
nenchoumi311912 小时前
LLM 论文精读(十二)DeepSeek-OCR: Contexts Optical Compression
人工智能·计算机视觉·llm·ocr·vlm·deepseek
三维小码13 小时前
相机外参初始估计
算法·计算机视觉