matlab中值滤波

  • g6_391969
    了解作者
  • 169KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-09 03:49
    上传日期
matlab中值滤波程序,此程序主要是对二维图像进行滤波
6f874d515286.rar
  • 中值滤波
  • med2test.m
    284B
  • SGO.m
    11B
  • maytest.m
    219B
  • tyu.m
    213B
  • wmedfilt1.m
    1.9KB
  • all_medfilt2.m
    2.5KB
  • LENA.BMP
    256.9KB
  • sgomedwmedfilt.m
    1.7KB
  • test.m
    237B
  • med2simulation.m
    774B
  • testmmm.m
    88B
内容介绍
function b = all_medfilt2(varargin) %function b = all_medfilt2(A, ORDER, MN, PADOPT) % 函数all_medfilt2可实现多种二维中值滤波函数 % A表示输入二维数据 % B表示最终滤波结果,与A同型 % ORDER为排序参数 % ORDER=1 为极小滤波器, … % ….. % ORDER=(M*N) 为极大滤波器 % ORDER的默认值为0, 此时特指二维中值滤波 % [M N]表示滤波器窗口,默认值为[3 3] % PADOPT 表示原始数据A的边缘补值 % 默认值为 'zeros', 即补值为0; % 为'symmetric', 则对称补值 % 为'indexed', 如果A是double型, 补值为1, 否则补0 % 当M*N为偶数且A为uint8型时, 如果中值为小数,则舍掉分数部分 [a, order, mn, padopt] = parse_inputs(varargin{:}); % 利用子函数确定其中的四个参数 domain = ones(mn); % 确定滤波窗 if order==0 % 如果为中值滤波 if (rem(prod(mn), 2) == 1) % 如果M*N为奇数 order = (prod(mn)+1)/2; b = ordfilt2(a, order, domain, padopt); else % 如果M*N为偶数 order1 = prod(mn)/2; order2 = order1+1; b = ordfilt2(a, order1, domain, padopt); b2 = ordfilt2(a, order2, domain, padopt); idx = find(b ~= b2); b(idx) = (double(b(idx)) + double(b2(idx)))/2; % 相加取均值 end else % 如果不是中值滤波 b = ordfilt2(a, order, domain, padopt); end if (isa(a,'uint8') & islogical(a)) % 如果a为uint8型且a为实数时 b = logical(b); end %%% %%%子函数 parse_inputs %%% function [a, order, mn, padopt] = parse_inputs(varargin) if (nargin < 1) error('Too few inputs.'); end if (nargout >4) error('Too many outputs.'); end % 如果有字符参数, 首先进行判定 % 然后从参数中删掉 % a = varargin{1}; % 找到第一个参数 charLocation = []; for k = 2:nargin if (ischar(varargin{k})) charLocation = [charLocation k]; end end if (length(charLocation) > 1) error('Invalid input.'); elseif (length(charLocation) == 0) padopt = 'zeros'; else options = {'indexed', 'zeros', 'symmetric'}; idx = strmatch(lower(varargin{charLocation}), options); if (length(idx) == 0) error('Unknown option.'); elseif (length(idx) > 1) error('Ambiguous option.'); else padopt = options{idx}; end varargin(charLocation) = []; end if (strcmp(padopt, 'indexed')) if (isa(a,'double')) padopt = 'ones'; else padopt = 'zeros'; end end if (length(varargin) > 1) order = varargin{2}; else order =0; end if (length(varargin) > 2) mn = varargin{3}; else mn = [3 3]; end % 获得滤波窗口 order=min(prod(mn),order) % 限定order 最大值
评论
    相关推荐
    • Matlab合集
      冈萨雷斯数字图像处理MATLAB版.中文版+数字图像处理第二版中文版(冈萨雷斯)+MATLAB-R2014a完全自学一本通+MATLAB R2016a完全自学一本通 素材文件+[模式识别与智能计算:MATLAB技术实现(第2版)].杨淑莹.扫描版
    • Matlab教程
      MatlaB经典ppt,主要讲解了MatlaB的入门知识,图形编程以及仿真。
    • matlab 课件
      matlab 功能很强大,本课件详细的介绍了matlab在科学计算中的应用。
    • matlab编译器
      matlab编译为exe文件所需要的文件; 使用时解压,将解压后文件拖入至matlab命令行即可
    • matlab
      matlab的基础知识进行介绍
    • MatLab
      “#MatLab
    • MATLAB编译器
      基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。
    • matlab入门
      matlab的入门教程,很值得仔细看看,对提高matlab能力有帮助
    • matlab
      matlab经典课堂讲义
    • matlab
      matlab