读入 lena_color.tif 图像,进行下列操作: (1) 采用 7×7 均值滤波器对彩色图像的所有分量进行相同的平滑运算,同屏显示 原图像和平滑后图像 (2) 采用 7×7 均值滤波器对彩色图像的红分量进行平滑,其他分量不变,同屏显 示原图像和平滑后图像 (3) 采用直方图均衡方法,对彩色图像的三个分量进行增强,同屏显示原图像和 增强后图像 (4) 在图像中加入椒盐噪声, A_noised=imnoise(A, ‘salt & pepper’, 0.02),选择合 适的滤波器进行滤波,观察滤波效果; (5) 在图像中加入高斯噪声, A_noised=imnoise(A, ‘gauss’, 0.02),选择合适的滤 波器进行滤波,观察滤波效果
时间: 2024-02-28 13:52:24 浏览: 83
好的,我可以帮您解决这个问题。以下是代码实现:
```matlab
% 读取图像
img = imread('lena_color.tif');
% (1) 7x7均值滤波器对彩色图像所有分量进行平滑
smoothed = imfilter(img, ones(7)/49, 'symmetric');
figure;
subplot(121); imshow(img); title('Original Image');
subplot(122); imshow(smoothed); title('Smoothed Image');
% (2) 7x7均值滤波器对彩色图像红分量进行平滑
red = img;
red(:,:,2:3) = 0;
red_smoothed = imfilter(red, ones(7)/49, 'symmetric');
figure;
subplot(121); imshow(img); title('Original Image');
subplot(122); imshow(red_smoothed); title('Smoothed Red Component Image');
% (3) 直方图均衡化对彩色图像三个分量进行增强
enhanced_R = histeq(img(:,:,1));
enhanced_G = histeq(img(:,:,2));
enhanced_B = histeq(img(:,:,3));
enhanced = cat(3, enhanced_R, enhanced_G, enhanced_B);
figure;
subplot(121); imshow(img); title('Original Image');
subplot(122); imshow(enhanced); title('Enhanced Image');
% (4) 加入椒盐噪声并使用中值滤波器平滑
noised = imnoise(img, 'salt & pepper', 0.02);
denoised = medfilt3(noised, [5, 5, 3]);
figure;
subplot(121); imshow(noised); title('Noised Image');
subplot(122); imshow(denoised); title('Denoised Image');
% (5) 加入高斯噪声并使用高斯滤波器平滑
noised = imnoise(img, 'gaussian', 0.02);
denoised = imgaussfilt3(noised, 2);
figure;
subplot(121); imshow(noised); title('Noised Image');
subplot(122); imshow(denoised); title('Denoised Image');
```
需要注意的是,这些滤波器的参数是需要根据具体情况进行调整的,这里的参数可能不是最佳的。另外,中值滤波器和高斯滤波器的选择也要根据噪声类型进行选择。
阅读全文