中值滤波 matlab代码
时间: 2023-05-15 21:07:34 浏览: 112
以下是中值滤波的 Matlab 代码:
function [output_image] = median_filter(input_image, filter_size)
%中值滤波函数
%input_image: 输入图像
%filter_size: 滤波器大小
%output_image: 输出图像
%获取输入图像的大小
[row, col] = size(input_image);
%计算滤波器的半径
radius = floor(filter_size / 2);
%初始化输出图像
output_image = zeros(row, col);
%遍历输入图像的每个像素
for i = 1:row
for j = 1:col
%获取当前像素周围的像素值
neighbor_pixels = [];
for m = i-radius:i+radius
for n = j-radius:j+radius
%判断是否越界
if m>=1 && m<=row && n>=1 && n<=col
neighbor_pixels = [neighbor_pixels, input_image(m,n)];
end
end
end
%对邻域像素进行排序
sorted_pixels = sort(neighbor_pixels);
%取中间值作为当前像素的值
output_image(i,j) = sorted_pixels(floor(length(sorted_pixels)/2)+1);
end
end
%将输出图像转换为 uint8 类型
output_image = uint8(output_image);
end
阅读全文