编写Matlab程序,完成下面任务: (1)读取一幅图像,转换为灰度图像,显示该图像的频谱图。 (2)对灰度图像进行频率域滤波,滤波器为高斯低通滤波器,显示滤波后的图像。 具体代码如下
时间: 2024-10-20 15:13:53 浏览: 40
在MATLAB中,你可以按照以下步骤编写代码来完成这两个任务:
```matlab
% (1)读取图像并转换为灰度
img = imread('your_image_file.jpg'); % 替换 'your_image_file.jpg' 为你需要处理的图片路径
gray_img = rgb2gray(img); % 转换为灰度图像
% 显示原始图像
figure;
imshow(gray_img);
title('Original Gray Image');
% 计算频谱图
[freq, mag] = periodogram(gray_img, [], [], 1); % 使用periodogram函数获取频谱数据
plot(freq, mag, 'b'); % 绘制频谱图
xlabel('Frequency');
ylabel('Magnitude');
title('Spectrum of the Gray Image');
% (2)高斯低通滤波
sigma = 2; % 高斯核的标准差,可以根据需要调整
h = fspecial('gaussian', size(gray_img, 1), sigma); % 创建高斯滤波器
filtered_img = imfilter(gray_img, h, 'conv'); % 应用滤波器
% 显示滤波后的图像
figure;
imshow(filtered_img);
title('Filtered Image (Gaussian Lowpass)');
```
在这个代码段中,`imread`用于读取图像,`rgb2gray`将彩色图像转换为灰度,`periodogram`计算并绘制频谱图,`fspecial`创建高斯滤波器,`imfilter`应用滤波器到图像上。记得替换`'your_image_file.jpg'`为实际的图像文件名。
阅读全文