给我一个算术均值滤波器 几何均值滤波器 谐波均值滤波器 逆谐波均值滤波器这4个滤波器同时处理同一张图片的MATLAB代码
时间: 2023-08-30 14:05:25 浏览: 197
可直接运行 MATLAB实现图像中值 均值 维纳滤波 源程序代码 含测试图片.rar
5星 · 资源好评率100%
以下是MATLAB代码示例:
```matlab
% 读取图片
img = imread('test.jpg');
% 算术均值滤波器
arithmetic_mean_filter = ones(3,3)/9;
img_arithmetic = imfilter(img, arithmetic_mean_filter);
% 几何均值滤波器
geometric_mean_filter = fspecial('average', [3,3]);
img_geometric = exp(imfilter(log(double(img)), geometric_mean_filter));
% 谐波均值滤波器
harmonic_mean_filter = @(x) numel(x) / sum(1 ./ double(x));
img_harmonic = nlfilter(img, [3,3], harmonic_mean_filter);
% 逆谐波均值滤波器
q = 1.5;
img_niharmonic = nlfilter(img, [3,3], @(x) mean(double(x).^(q+1)) / mean(double(x).^q));
% 显示结果
figure;
subplot(2,3,1); imshow(img); title('Original Image');
subplot(2,3,2); imshow(img_arithmetic); title('Arithmetic Mean Filter');
subplot(2,3,3); imshow(img_geometric); title('Geometric Mean Filter');
subplot(2,3,4); imshow(img_harmonic); title('Harmonic Mean Filter');
subplot(2,3,5); imshow(img_niharmonic); title('Inverse Harmonic Mean Filter');
```
代码中,我们使用了以下函数:
- `imread`:读取图片。
- `imfilter`:对图片进行滤波处理。
- `fspecial`:生成均值滤波器。
- `exp` 和 `log`:对图片进行指数和对数运算。
- `nlfilter`:对图片进行非线性滤波处理。
其中,算术均值滤波器和几何均值滤波器使用了 `imfilter` 函数,谐波均值滤波器和逆谐波均值滤波器使用了 `nlfilter` 函数。
阅读全文