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