用MATLAB对图像进行以下操作:灰度线性变换、直方图均衡化、均值滤波、中值滤波和拉普拉斯锐化操作; 添加噪声,重复上述过程观察处理结果,加入椒盐噪声,使用3×3模板分别进行中值滤波和均值滤波。,给出一套完整代码,以1.jpg为图像例子
时间: 2024-02-03 14:15:10 浏览: 96
以下是MATLAB代码实现:
```matlab
% 读取图像
img = imread('1.jpg');
subplot(2, 3, 1);
imshow(img);
title('原图');
% 灰度线性变换
img_gray = rgb2gray(img);
img_linear = imadjust(img_gray, [0.3, 0.7], []);
subplot(2, 3, 2);
imshow(img_linear);
title('灰度线性变换');
% 直方图均衡化
img_histeq = histeq(img_gray);
subplot(2, 3, 3);
imshow(img_histeq);
title('直方图均衡化');
% 均值滤波
img_mean = imfilter(img_gray, fspecial('average', [3, 3]));
subplot(2, 3, 4);
imshow(img_mean);
title('均值滤波');
% 中值滤波
img_median = medfilt2(img_gray, [3, 3]);
subplot(2, 3, 5);
imshow(img_median);
title('中值滤波');
% 拉普拉斯锐化
laplacian = [0, -1, 0; -1, 5, -1; 0, -1, 0];
img_lap = imfilter(img_gray, laplacian);
subplot(2, 3, 6);
imshow(img_lap);
title('拉普拉斯锐化');
% 添加噪声
img_noise = imnoise(img_gray, 'gaussian', 0, 0.01);
figure;
subplot(2, 3, 1);
imshow(img_noise);
title('添加高斯噪声');
% 中值滤波
img_median_noise = medfilt2(img_noise, [3, 3]);
subplot(2, 3, 2);
imshow(img_median_noise);
title('中值滤波');
% 均值滤波
img_mean_noise = imfilter(img_noise, fspecial('average', [3, 3]));
subplot(2, 3, 3);
imshow(img_mean_noise);
title('均值滤波');
% 添加椒盐噪声
img_saltpepper = imnoise(img_gray, 'salt & pepper', 0.05);
subplot(2, 3, 4);
imshow(img_saltpepper);
title('添加椒盐噪声');
% 中值滤波
img_median_saltpepper = medfilt2(img_saltpepper, [3, 3]);
subplot(2, 3, 5);
imshow(img_median_saltpepper);
title('中值滤波');
% 均值滤波
img_mean_saltpepper = imfilter(img_saltpepper, fspecial('average', [3, 3]));
subplot(2, 3, 6);
imshow(img_mean_saltpepper);
title('均值滤波');
```
注意:以上代码中使用了子图(subplot)函数,可以将多个图像显示在同一窗口中,方便比较不同处理方法的效果。
阅读全文