高斯滤波器matlab代码
时间: 2023-10-03 08:07:28 浏览: 82
下面是一个简单的高斯滤波器的 MATLAB 代码:
```matlab
function [filtered_img] = gaussian_filter(img, sigma)
% img: 输入图像
% sigma: 高斯核的标准差
% 创建高斯核
kernel_size = 2 * ceil(3 * sigma) + 1;
kernel = fspecial('gaussian', kernel_size, sigma);
% 对图像进行滤波
filtered_img = imfilter(img, kernel, 'replicate');
end
```
使用方法:
```matlab
img = imread('example.jpg');
sigma = 3;
filtered_img = gaussian_filter(img, sigma);
```
其中,`img`是输入图像,`sigma`是高斯核的标准差。`filtered_img`是滤波后的结果。
这里使用了 MATLAB 自带的 `fspecial` 函数来创建高斯核,`imfilter` 函数来进行滤波操作。注意,`'replicate'` 表示在边界处进行复制填充。
相关问题
高斯滤波器的matlab代码
高斯滤波器是一种常用的线性平滑滤波器,可以有效地去除图像中的高斯噪声。其matlab代码如下:
```matlab
function [output_image] = gaussian_filter(input_image, sigma)
% input_image: 输入图像
% sigma: 高斯核的标准差
% 构造高斯核
size = 2 * ceil(3 * sigma) + 1; % 核的大小
[x, y] = meshgrid(-(size-1)/2:(size-1)/2, -(size-1)/2:(size-1)/2);
gaussian_kernel = exp(-(x.^2+y.^2)/(2*sigma^2)) / (2*pi*sigma^2);
% 归一化
gaussian_kernel = gaussian_kernel / sum(gaussian_kernel(:));
% 进行卷积
output_image = conv2(input_image, gaussian_kernel, 'same');
end
```
其中,`input_image`为输入图像,`sigma`为高斯核的标准差,`output_image`为输出图像。
高斯滤波器matlab
高斯滤波器是一种常用的图像滤波器,用于平滑图像并减少噪声。在MATLAB中,可以使用函数`imgaussfilt`来实现高斯滤波。
下面是一个示例代码,演示如何在MATLAB中应用高斯滤波器:
```matlab
% 读取图像
image = imread('image.jpg');
% 将图像转换为灰度图像
grayImage = rgb2gray(image);
% 定义高斯滤波器的标准差
sigma = 2;
% 应用高斯滤波器
filteredImage = imgaussfilt(grayImage, sigma);
% 显示原始图像和滤波后的图像
subplot(1, 2, 1);
imshow(grayImage);
title('原始图像');
subplot(1, 2, 2);
imshow(filteredImage);
title('滤波后的图像');
```
在这个示例中,我们首先读取了一个彩色图像,并将其转换为灰度图像。然后,定义了高斯滤波器的标准差 `sigma`。最后,使用`imgaussfilt`函数将高斯滤波器应用到灰度图像上,并显示原始图像和滤波后的图像。
请注意,你需要将`image.jpg`替换为你自己的图像文件路径。此外,你可以根据需要调整`sigma`的值来改变滤波效果。