用matlab编写一个实现高斯滤波的代码
时间: 2024-05-06 22:15:55 浏览: 81
下面是一个使用MATLAB实现高斯滤波的示例代码:
```
function [output_img] = gaussian_filter(input_img, sigma)
% 高斯滤波函数
% input_img: 输入图像
% sigma: 高斯核标准差
% 创建高斯核
ksize = ceil(sigma*3)*2 + 1; % 高斯核大小
kernel = zeros(ksize, ksize); % 初始化高斯核
center = floor(ksize/2)+1; % 中心点
for i=1:ksize
for j=1:ksize
kernel(i,j) = exp(-((i-center)^2+(j-center)^2)/(2*sigma^2));
end
end
kernel = kernel/sum(sum(kernel)); % 将高斯核归一化
% 对输入图像进行高斯滤波
output_img = conv2(double(input_img), kernel, 'same');
output_img = uint8(output_img); % 将输出图像转为uint8类型
end
```
使用方法:
1. 将上述代码保存为.m文件,如gaussian_filter.m;
2. 在MATLAB中调用该函数,输入待滤波图像和高斯核标准差即可。
示例:
```
input_img = imread('lena.bmp');
sigma = 1.5;
output_img = gaussian_filter(input_img, sigma);
imshow(output_img);
```
其中,'lena.bmp'为待滤波图像的文件名,sigma取1.5作为高斯核标准差,输出结果通过imshow函数展示。
阅读全文