% 谐波均值滤波
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形
warning off % 消除警告
feature jit off % 加速代码运行
im = imread(‘brain.bmp’); % 原图像
im = imnoise(im,‘gaussian’,0,1e-3); % 原图像 + 白噪声
im1 = harmonymean_filter(im,3,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 z = harmonymean_filter(x,m,n)
% 谐波均值滤波
% 函数输入:
% x:输入二维图像矩阵
% m,n:滤波掩膜尺寸
% 函数输出:
% z:输出图像矩阵,数据类型与输人相同
if ~isa(x,‘double’)
x = double(x)/255;
end
z = m*n./imfilter(1./(x+eps),ones(m,n),‘replicate’); % 谐波均值滤波
z = im2uint8(z); % 类型转换
end