均值滤波matlab函数代码
时间: 2023-09-09 11:10:00 浏览: 53
下面是一个简单的均值滤波的 Matlab 函数代码:
```matlab
function img_filtered = mean_filter(img, kernel_size)
% img: 输入图像
% kernel_size: 滤波器大小,如3表示3x3的滤波器
% 取得输入图像的大小
[height, width] = size(img);
% 初始化输出图像
img_filtered = zeros(height, width);
% 计算滤波器的半径
radius = floor(kernel_size / 2);
% 遍历输入图像的每个像素
for i = 1:height
for j = 1:width
% 取得以该像素为中心的滤波器窗口
window = img(max(i-radius,1):min(i+radius,height), max(j-radius,1):min(j+radius,width));
% 对窗口内的所有像素求平均值
img_filtered(i,j) = mean(window(:));
end
end
```
使用方法:
```matlab
img = imread('lena.bmp'); % 读入图像
img_filtered = mean_filter(img, 3); % 对图像进行3x3的均值滤波
imshow(uint8(img_filtered)); % 显示滤波后的图像
```
相关问题
算术均值滤波matlab代码实现
以下是算术均值滤波的 Matlab 代码实现:
``` matlab
function filteredImage = arithmeticMeanFilter(inputImage, filterSize)
% inputImage: 输入图像
% filterSize: 滤波器大小(奇数)
% filteredImage: 经过算术均值滤波后的图像
% 处理边界,使用镜像边缘处理方式
inputImage = padarray(inputImage, [(filterSize-1)/2 (filterSize-1)/2], 'symmetric');
% 初始化滤波后的图像
filteredImage = zeros(size(inputImage));
% 算术均值滤波
for i = 1:size(inputImage,1) - filterSize + 1
for j = 1:size(inputImage,2) - filterSize + 1
filteredImage(i + (filterSize-1)/2, j + (filterSize-1)/2) = ...
mean(mean(inputImage(i:i+filterSize-1,j:j+filterSize-1)));
end
end
% 去掉边界
filteredImage = filteredImage((filterSize-1)/2+1:end-(filterSize-1)/2, ...
(filterSize-1)/2+1:end-(filterSize-1)/2);
end
```
该函数的参数有两个:输入图像和滤波器大小。输入图像为需要进行滤波处理的灰度图像。滤波器大小为奇数,例如 3、5、7 等。
该函数使用镜像边缘处理方式来避免边界像素问题。滤波后的图像使用算术均值滤波的方式实现,遍历每个像素点,并计算以此为中心的滤波器内的像素值的均值。最后,去掉边界的部分并返回滤波后的图像。
中值滤波与均值滤波matlab
中值滤波和均值滤波是图像处理中常用的两种滤波方法,它们可以去除图像中的噪声。
在Matlab中,可以使用medfilt2函数进行中值滤波,使用imfilter函数进行均值滤波。
中值滤波示例代码:
``` matlab
I = imread('lena.png'); % 读取图像
J = medfilt2(I); % 中值滤波
imshowpair(I, J, 'montage'); % 显示原图和滤波后的图像
```
均值滤波示例代码:
``` matlab
I = imread('lena.png'); % 读取图像
h = fspecial('average', [3 3]); % 创建3x3的均值滤波模板
J = imfilter(I, h); % 均值滤波
imshowpair(I, J, 'montage'); % 显示原图和滤波后的图像
```
其中,imread函数用于读取图像,fspecial函数用于创建滤波模板,imshowpair函数用于显示原图和滤波后的图像。