1 打开图片

  所有的滤波原始图片均使用下面的操作方式打开(只处理灰度图像):

    % 读取图像 可以处理彩色多通道图片(转化为灰度图像)       [FileName,PathName,FilterIndex] = uigetfile({'*.png;*.jpg;*.jpeg';'*.*'},'选择一幅待处理图片');filename = fullfile(PathName, FileName) ;    SrcImg = imread(filename);     % setappdata(0,'SrcData',SrcImg);% 获取图像的信息    [m n channels] = size(SrcImg); if(channels > 1)% 将彩色图象转为灰度图像SrcImg = rgb2gray(SrcImg);% 将灰度图像数据保存到SrcImg变量中,即后面滤波需要用到的原始数据,此时没有加噪声setappdata(0,'SrcImg',SrcImg);imshow(SrcImg);        else% 将灰度图像数据保存到SrcImg变量中,即后面滤波需要用到的原始数据,此时没有加噪声setappdata(0,'SrcImg',SrcImg);imshow(SrcImg);        end       

2 创建我们需要的噪声

  对原始图像进行加噪声处理,即操作SrcImg

    % 获取原始图像数据SrcImg = getappdata('SrcImg');% 变换f = mat2gray(SrcImg,[0 255]);% 获取图像大小信息[M,N] = size(f);%% 高斯噪声a = 0;b = 0.08;n_gaussian = a + b .* randn(m,n);g_gaussian = f + n_gaussian;  % show imagefigure();    imshow(g_gaussian,[0 1]);% 保存图片imwrite(g_gaussian,'gaussianNoise.jpg','jpg');xlabel('Ruselt of Gaussian noise');     %% 瑞利噪声a = -0.2;  b = 0.03;  n_rayleigh = a + (-b .* log(1 - rand(M,N))).^0.5;   g_rayleigh = f + n_rayleigh; % show imagefigure();    imshow(g_rayleigh,[0 1]);imwrite(g_rayleigh,'rayleighNoise.jpg','jpg');xlabel('Ruselt of rayleigh noise');        %% 伽马噪声a = 25;  b = 3;  n_Erlang = zeros(M,N);   for j=1:b  n_Erlang = n_Erlang + (-1/a)*log(1 - rand(M,N));  end    g_Erlang = f + n_Erlang; % show imagefigure();    imshow(g_Erlang,[0 1]);imwrite(g_Erlang,'erlangNoise.jpg','jpg');xlabel('Ruselt of erlang noise');     %% 均匀噪声a = 0;  b = 0.3;  n_Uniform = a + (b-a)*rand(M,N); g_Uniform = f + n_Uniform;% show imagefigure();    imshow(g_Uniform,[0 1]);imwrite(g_Uniform,'uniformNoise.jpg','jpg');xlabel('Ruselt of uniform noise');         %% 椒盐噪声a = 0.05;  b = 0.05;  x = rand(M,N);  g_sp = zeros(M,N);  g_sp = f;  g_sp(find(x<=a)) = 0;  g_sp(find(x > a & x<(a+b))) = 1;    % show imagefigure();    imshow(g_sp,[0 1]);imwrite(g_sp,'saltNoise.jpg','jpg');xlabel('Ruselt of salt pepper noise');     

  加噪结果:

原始图像:

椒盐噪声:

高斯噪声:

均匀噪声:

伽马噪声:

瑞利噪声:

3 开始滤波处理(空域和频域)

  开始滤波了,通过上面的创建噪声并保存下了各种噪声的图像,接下来要用各种滤波方式将各种噪声降低,显然先要打开各个噪声图像,打开方式同第一节,这里不对各个滤波方式和原理讲解。

低通滤波:f为加噪图像
    f = mat2gray(f,[0 255]);[M,N] = size(f);P = 2*M;Q = 2*N;fc = zeros(M,N);for x = 1:1:Mfor y = 1:1:Nfc(x,y) = f(x,y) * (-1)^(x+y);endendF = fft2(fc,P,Q);H_1 = zeros(P,Q);H_2 = zeros(P,Q);for x = (-P/2):1:(P/2)-1for y = (-Q/2):1:(Q/2)-1D = (x^2 + y^2)^(0.5);D_0 = 100;H_1(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^2);   H_2(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^6);endendG_1 = H_1 .* F;G_2 = H_2 .* F;g_1 = real(ifft2(G_1));g_1 = g_1(1:1:M,1:1:N);g_2 = real(ifft2(G_2));g_2 = g_2(1:1:M,1:1:N);         for x = 1:1:Mfor y = 1:1:Ng_1(x,y) = g_1(x,y) * (-1)^(x+y);g_2(x,y) = g_2(x,y) * (-1)^(x+y);endend%% 显示图像figure();imshow(g_2,[0 1]);
高斯平滑:f为加噪图像
    f=double(f);f=fft2(f);f=fftshift(f);[m,n]=size(f);d0=80;m1=fix(m/2);n1=fix(n/2);for i=1:mfor j=1:nd=sqrt((i-m1)^2+(j-n1)^2);h(i,j)=exp(-d^2/2/d0^2);endendg=f.*h;g=ifftshift(g);g=ifft2(g);g=mat2gray(real(g));%% 显示图像figure();imshow(g);
自适应中值滤波:f为噪声图像
    f = mat2gray(f,[0 255]);[M,N] = size(f);g_sp = f;x = linspace(-0.2,1.2,358);h = hist(g_sp,x)/(M*N);Histogram = zeros(358,1);for y = 1:256Histogram = Histogram + h(:,y);end%% S_max = 7;w = zeros(S_max,S_max);w(round(S_max/2),round(S_max/2)) = 1;g_Ex = imfilter(g_sp,w,'symmetric','full');g_Admf = zeros(M,N);S = 3;for x = 4:M+3for y = 4:N+3%  Afor S = 3:2:S_maxS_xy = zeros(S,S);for s = 1:1:Sfor t = 1:1:SS_xy(s,t) = g_Ex(x+s-round(S/2),y+t-round(S/2));endend z_min = min(S_xy(:));z_max = max(S_xy(:));z_med = median(S_xy(:));A_1 = z_med - z_min;A_2 = z_med - z_max;if ((A_1>0)&&(A_2<0)) % B B_1 = g_Ex(x,y) - z_min;B_2 = g_Ex(x,y) - z_max;if((B_1>0)&&(B_2<0)) g_Admf(x-3,y-3) = z_med;break;else g_Admf(x-3,y-3) = z_med; break;end  endif(S >= S_max)  g_Admf(x-3,y-3) = z_med; break;endend    endend%% 显示结果figure();imshow(g_Admf,[0,1]);
维纳滤波:
    afterFilter = wiener2(f,[7 7]);    figure();imshow(afterFilter);
最大值滤波、中值滤波、最小值滤波:调节参数即可,5相当于中值滤波
    afterFilter = ordfilt2(f,5,ones(3,3));figure();imshow(afterFilter);    复合滤波:
```matlabafterFilter1 = ordfilt2(f,5,ones(3,3));h_gaosi1=fspecial('gaussian',3,1);afterFilter2 = imfilter(afterFilter1,h_gaosi1);afterFilter3 = wiener2(afterFilter2,[7 7]);figure();imshow(afterFilter3);

部分结果:

Matlab---图像滤波之各种滤波器汇总实现相关推荐

  1. matlab soble滤波,MATLAB 图像滤波去噪分析及其应用

    MATLAB 图像滤波去噪分析及其应用 第1章 图像颜色空间相互转换与MATLAB实现 1.1 图像颜色空间原理 1.1.1 RGB颜色空间 1.1.2 YCbCr颜色空间 1.1.3 YUV颜色空间 ...

  2. matlab图像滤波

    转自:http://hi.baidu.com/wang%5Fpw/blog/item/36354a637ac87b48eaf8f879.html clc;     clear all;     I=i ...

  3. matlab高斯滤波跟中值滤波区别,matlab图像滤波处理代码讲解 均值滤波 中值滤波 高斯滤波...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 (1)均值滤波 function imres = averageFilter(im,N) % imres为均值滤波后的矩阵,参数im为图像的路径,N为滤波 ...

  4. 【Matlab 图像】滤波器原理使用及测试效果

    滤波器使用及测试效果 滤波器1:低通滤波 原理 代码 效果 滤波器2:高斯平滑 原理 代码 效果 滤波器3:自适应中值滤波 原理 代码 效果 滤波器4:维纳滤波 原理 代码 效果 滤波器5:最大值滤波 ...

  5. 【老生谈算法】matlab实现图像滤波处理算法源码——图像滤波处理算法

    matlab图像滤波处理算法详解 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab图像滤波处理.doc 2.算法详 ...

  6. python图像滤波

    python图像滤波 预备知识 滤波器 低通滤波器的主要作用可以消除噪声, 高通滤波器的作用可以提取边缘 核函数 如果我们想要将这两类数据进行分类,那么分类的边界将会是一个椭圆: 但是如果我们可以通过 ...

  7. Matlab图像处理创新实践-实验2【图像滤波基础(2)】

    Matlab图像处理创新实践-实验1[图像滤波基础(1)] Matlab图像处理创新实践-实验2[图像滤波基础(2)] Matlab图像处理创新实践-实验3[图像锐化] Matlab图像处理创新实践- ...

  8. Matlab图像处理创新实践-实验1【图像滤波基础(1)】

    Matlab图像处理创新实践-实验1[图像滤波基础(1)] Matlab图像处理创新实践-实验2[图像滤波基础(2)] Matlab图像处理创新实践-实验3[图像锐化] Matlab图像处理创新实践- ...

  9. Matlab 频域滤波处理周期噪声图像(带阻滤波器滤波)

    带阻滤波器的传递函数为: D0为截止半径(或是截止宽度) D1.D2由下式确定,表示与(u0,v0)和(-u0,v0)点的距离,此时(u0,v0)是在频域中心为坐标原点表示的,所以是对称关系. 使用二 ...

最新文章

  1. 关于算法的时间复杂度和空间复杂度的总结
  2. 你可能没看懂Supercell的新游戏
  3. 第一章 java多线程
  4. 高性能流媒体服务器EasyDSS前端重构(二) webpack + vue + AdminLTE 多页面提取共用文件, 优化编译时间...
  5. 传播时延、发送时延、处理时延和排队时延各自的物理意义是什么?
  6. js隐藏和显示div
  7. BERT源码分析(二)
  8. 2010.11.13网规论文关注点
  9. 学成在线官网首页完整版(含psd源文件)
  10. Open_source_tools
  11. 那些年我们感到不可思议的数据恢复
  12. Linux复制文件到某路径并重命名
  13. 2007年日历带农历表_2007年农历阳历表 2007年农历表 2007年日历表
  14. centos xfs硬盘扩容
  15. python发行版是什么意思_致 Python 初学者
  16. Proteus仿真-步进电机
  17. 新款「超大杯」iPhone遭爆料!不止大镜头,还有1TB储存,但却不能叫iPhone13
  18. 幅相曲线渐近线_开环幅相曲线绘制.ppt
  19. 【Tyvj1922】Freda的迷宫
  20. 非常详细的详谈struct sk_buff

热门文章

  1. 小程序原生 详解实现腾讯地图标点和路线规划和距离计算
  2. WEIXIN day_04(8.19)小程序的事件处理、传参、常用API、生命周期、网络通信
  3. 男人们实用的:电脑族的护肤秘籍
  4. CrashPad在Windows下的使用
  5. 科幻字体_您可以免费获得40种科幻字体
  6. 山村婆婆说的十大忌[必看!]
  7. Vue中export和export default的区别和用法
  8. VS2019如何关闭逗号句号等符号的自动代码补全(C/C++)
  9. R实现K均值算法,层次聚类算法与DBSCAN算法
  10. uniapp 电商app进度条组件的使用(砍价进度条处理)