noise.m
上传用户:lcj80317
上传日期:2007-01-26
资源大小:625k
文件大小:1k
源码类别:

波变换

开发平台:

Matlab

  1. function nX = noise(varargin)
  2. % 图像加入噪声
  3. % 传入参数依次为:
  4. % X - 待处理的图像
  5. % type - 噪声类型
  6. % variance/density - 高斯噪声的方差/椒盐噪声的密度(optional)
  7. % M - 控制噪声区域的模板(optional)
  8. % 参数默认值
  9. variance = 0.01;                %高斯噪声的方差 默认值为0.01
  10. density = 0.05;                 %椒盐噪声的密度 默认值为0.05
  11. M = ones(size(varargin{1}));    %控制噪声区域的模板 默认对整个图像加噪声
  12. X = varargin{1};                %待处理的图像
  13. type = varargin{2};             %噪声类型
  14. % 可选参数
  15. if nargin>=3
  16.     variance = varargin{3};
  17.     density = varargin{3};
  18.     
  19.     if nargin == 4
  20.         M = varargin{4};
  21.     end
  22. end
  23. switch type
  24.     case 'gaussian'             %高斯噪声
  25.         n = randn(size(X)) * sqrt(variance);
  26.         n = n .* M;
  27.         nX = X + n;
  28.     case 'salt & pepper'        %椒盐噪声
  29.         nX = X;
  30.         n = rand(size(X));
  31.         n = n .* M;
  32.         ind = find( n>0 & n<density/2);
  33.         nX(ind) = 0;
  34.         ind = find( n>=density/2 & n<density);
  35.         nX(ind) = 1;
  36. end