matlab傅里叶图像复原代码
时间: 2024-09-23 20:02:56 浏览: 91
MATLAB中进行傅里叶图像复原通常涉及到逆傅立叶变换,这个过程用于从频域信号恢复出原始的图像数据。以下是一个简单的步骤和代码示例,假设你已经有了处理二维离散傅里叶变换(DFT)的图像:
```matlab
% 加载或创建一个测试图像
img = imread('test_image.jpg'); % 替换为你实际的图片路径
% 对图像进行灰度处理(如果彩色)
if size(img, 3) == 3
img = rgb2gray(img);
end
% 计算图像的DFT
dft_img = fft2(img);
% 求取DFT的幅度和相位部分
amplitude = abs(dft_img);
phase = angle(dft_img); % 注意角度范围从0到2π
% 设定频率域滤波(例如低通滤波,去除高频噪声)
cutoff_freq = size(amplitude)/4; % 可以自定义滤波阈值
filtered_amplitude = amplitude;
filtered_amplitude(abs(phase) > cutoff_freq*pi) = 0;
% 进行逆傅立叶变换以复原图像
reconstructed_img = real(ifft2(filtered_amplitude.*exp(1i*phase)));
% 显示原始图像和复原后的图像
subplot(1, 2, 1), imshow(img), title('Original Image');
subplot(1, 2, 2), imshow(reconstructed_img), title('Restored Image');
%
阅读全文