编写Matlab程序,完成下面任务: (1)读取一幅图像,转换为灰度图像,显示该图像的频谱图。 (2)对灰度图像进行频率域滤波,滤波器为高斯低通滤波器,显示滤波后的图像。
时间: 2024-10-16 13:14:13 浏览: 31
在MATLAB中,你可以按照以下步骤编写程序来完成这两个任务:
1. **读取并转换为灰度图像**:
```matlab
% 读取彩色图像
img = imread('example.jpg'); % 替换 'example.jpg' 为你要处理的图片文件名
% 转换为灰度图像
gray_img = rgb2gray(img);
```
2. **显示原图像及频谱图**:
```matlab
% 显示原图像
imshow(gray_img);
title('Original Gray Image');
% 计算并显示频谱图 (使用fft2函数)
specgram = fft2(gray_img);
specgram_abs = abs(specgram); % 取绝对值,便于观察
specgram_mag = sqrt(real(specgram_abs).^2 + imag(specgram_abs).^2); % 求复数模
figure;
imagesc(log(specgram_mag));
colormap hsv; % 使用对数尺度,并设置颜色映射
title('Spectrum of the Gray Image');
```
3. **高斯低通滤波**:
```matlab
% 定义高斯核大小
kernel_size = 5; % 可调整
sigma = kernel_size / 6; % 确定标准差,用于生成高斯滤波器
% 创建高斯滤波器
h = fspecial('gaussian', [kernel_size, kernel_size], sigma);
% 进行滤波
filtered_gray_img = imfilter(gray_img, h, 'conv');
```
4. **显示滤波后的图像**:
```matlab
% 显示滤波后的图像
figure;
imshow(filtered_gray_img);
title('Filtered Gray Image');
```
记得替换上述代码中的`'example.jpg'`为你实际的图片路径。运行以上代码后,你会看到原始灰度图像、其频谱图以及经过高斯低通滤波后的图像。
阅读全文