MATLAB均值滤波

MATLAB均值滤波_第1张图片
% 中值滤波
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形
warning off % 消除警告
feature jit off % 加速代码运行
[filename ,pathname]=…
uigetfile({‘.bmp’;'.jpg’;},‘选择图片’); % 选择图片路径
str = [pathname filename]; % 合成路径+文件名
im = imread(str); % 原图像
im = imnoise(im,‘gaussian’,0,1e-3); % 原图像 + 白噪声

im1 = med_filt2(im, 3 ); % 应用中值滤波
figure(‘color’,[1,1,1])
subplot(121),imshow(im,[]),title(‘original image’)
colormap(jet) % 颜色
shading interp % 消隐
subplot(122),imshow(im1,[]),title(‘中值滤波’)
colormap(jet) % 颜色
shading interp % 消隐
function b = med_filt2(a,mn)
% 中值滤波
% 输入:
% a:输入二维图像局长呢
% mn:为[m,n]滤波模板
% 输出:
% b:中值滤波图像

domain = ones(mn); % 模板
if (rem(prod(mn), 2) == 1)
order = (prod(mn)+1)/2; % 中值
b = ordfilt2(a, order, domain, ‘zeros’); % 排序滤波
else
order1 = prod(mn)/2;
order2 = order1+1;
b = ordfilt2(a, order1, domain, ‘zeros’); % 排序滤波
b2 = ordfilt2(a, order2, domain, ‘zeros’); % 排序滤波
if islogical(b) % 逻辑运算
b = b | b2; % 或运算
else
b = imlincomb(0.5, b, 0.5, b2); % 0.5b + 0.5b2
end
end

你可能感兴趣的:(MATLAB可视化,数据可视化,可视化,matlab)