当前位置:   article > 正文

基于MATLAB对彩色图像去噪的代码,均值滤波,中值滤波,空域低通滤波。_matlab滤波代码

matlab滤波代码

本文主要为代码展示,未对所用算法进行较为详细的文字介绍,请读者见谅。如有建议,欢迎私信。

1、给图像添加噪声

  MATLAB调用格式为:

J=imnoise(I,type)或者J=imnoise(I,type,parameters)。将类型噪声添加到灰度图像。

其中,I为原始图像,J为有噪图像,参数type和parameters用于确定噪声类型和相应的参数。类型是以下字符串:

‘guassian’添加高斯噪声

‘salt&pepper’添加盐和胡椒的噪音;

‘specle’添加乘法噪声。

例:

J=imnoise(I, ‘guassian’,M,V)向图像I添加均值为M,方差为V的高斯白噪声。默认均值为0,方差为0.01的噪声。

J=imnoise(I, ‘salt&pepper’,D)向图像I添加强度为D的椒盐噪声,默认强度为0.05。

J=imnoise(I, ‘specle’,V)使用J=I+n*I将乘性噪声添加到图像I,其中n是均匀分布的随机噪声,均值为0,方差为V。均值V默认为0.04。

2、均值滤波

代码如下:

  1. close all;
  2. clear;
  3. clc;
  4. img = imread('图片'); % 读取彩色图像
  5. % 定义一个3x3的平均值滤波器
  6. h = fspecial('average', [3 3]);
  7. % 对彩色图像进行滤波
  8. filtered_img = imfilter(img, h);
  9. % 显示原始图像和滤波后的图像
  10. subplot(1,2,1), imshow(img), title('原始图像');
  11. subplot(1,2,2), imshow(filtered_img), title('滤波后的图像');

 具体效果如图所示:

 3、中值滤波

代码如下:

  1. close all;
  2. clear;
  3. clc;
  4. I = imread('图片'); % 读取彩色图像
  5. J=imnoise(I,'gaussian',0,0.01);%向图像I添加均值为0,方差为0.01的高斯白噪声。
  6. img=imnoise(J,"salt & pepper",0.05);%向图像I添加强度为0.05的椒盐噪声。
  7. % 对红、绿、蓝三个通道分别进行中值滤波
  8. r1 = medfilt2(img(:,:,1), [3 3]);%3*3窗口
  9. g1 = medfilt2(img(:,:,2), [3 3]);
  10. b1 = medfilt2(img(:,:,3), [3 3]);
  11. img1 = cat(3, r1, g1, b1);
  12. r2 = medfilt2(img(:,:,1), [5 5]);%5*5窗口
  13. g2 = medfilt2(img(:,:,2), [5 5]);
  14. b2 = medfilt2(img(:,:,3), [5 5]);
  15. img2 = cat(3, r2, g2, b2);
  16. r3 = medfilt2(img(:,:,1), [7 7]);%7*7窗口
  17. g3 = medfilt2(img(:,:,2), [7 7]);
  18. b3 = medfilt2(img(:,:,3), [7 7]);
  19. img3 = cat(3, r3, g3, b3);
  20. % 显示原始图像和滤波后的图像
  21. subplot(2,2,1), imshow(img), title('原始图像');
  22. subplot(2,2,2), imshow(img1), title('3*3滤波后的图像');
  23. subplot(2,2,3), imshow(img2), title('5*5滤波后的图像');
  24. subplot(2,2,4), imshow(img3), title('7*7滤波后的图像');

 具体效果如图所示:

 4、空间域低通滤波

代码如下:

  1. close all;
  2. clear;
  3. clc;
  4. I = imread('图片'); % 读取彩色图像
  5. I=im2double(I);
  6. J=imnoise(I,'gaussian',0,0.01);%向图像I添加均值为0,方差为0.01的高斯白噪声。
  7. x=imnoise(J,"salt & pepper",0.05);%向图像I添加强度为0.05的椒盐噪声。
  8. %%%%%%%%%%%%%对图像噪声去噪
  9. h1=[1,1,1;1,1,1;1,1,1];
  10. myfilter1=h1/9;
  11. h2=[1,1,1;1,2,1;1,1,1];
  12. myfilter2=h2/10;
  13. h3=[1,2,1;2,4,2;1,2,1];
  14. myfilter3=h3/16;
  15. % 分离出红、绿、蓝三个通道
  16. R = x(:, :, 1);
  17. G = x(:, :, 2);
  18. B = x(:, :, 3);
  19. % 对三个通道分别进行滤波
  20. R1 = imfilter(R, myfilter1);
  21. G1= imfilter(R, myfilter1);
  22. B1= imfilter(B, myfilter1);
  23. R2 = imfilter(R, myfilter2);
  24. G2= imfilter(R, myfilter2);
  25. B2= imfilter(B, myfilter2);
  26. R3 = imfilter(R, myfilter3);
  27. G3= imfilter(R, myfilter3);
  28. B3= imfilter(B, myfilter3);
  29. % 合并三个通道
  30. img1 = cat(3, R1, G1, B1);
  31. img2 = cat(3, R2, G2, B2);
  32. img3 = cat(3, R3, G3, B3);
  33. % 显示原始图像和滤波后的图像
  34. figure;
  35. subplot(2, 2, 1), imshow(x), title('原始图像');
  36. subplot(2, 2, 2), imshow(img1), title('h1滤波后的图像');
  37. subplot(2, 2, 3), imshow(img2), title('h2滤波后的图像');
  38. subplot(2, 2, 4), imshow(img3), title('h3滤波后的图像');

 具体效果如图所示:

PS:1,通过对以上运行效果的比对分析,读者可以对三种算法的特征做出一定评价。

2,文中所用图片的原图为互联网图片。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/705505
推荐阅读
相关标签
  

闽ICP备14008679号