Main Content

imgaussfilt

图像的二维高斯滤波

说明

B = imgaussfilt(A) 使用标准差为 0.5 的二维高斯平滑核对图像 A 进行滤波,并在 B 中返回滤波后的图像。

示例

B = imgaussfilt(A,sigma) 使用由 sigma 指定标准差的二维高斯平滑核对图像 A 进行滤波。

B = imgaussfilt(___,Name,Value) 使用名称-值参量来控制滤波的各个方面。

示例

全部折叠

读取要滤波的图像。

I = imread('cameraman.tif');

用标准差为 2 的高斯滤波器对图像进行滤波。

Iblur = imgaussfilt(I,2);

以蒙太奇方式显示原始图像和滤波后的图像。

montage({I,Iblur})
title('Original Image (Left) Vs. Gaussian Filtered Image (Right)')

输入参数

全部折叠

要滤波的图像,指定为任意维度的数值数组。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

高斯分布的标准差,指定为正数或由正数组成的二元素向量。如果指定标量,则 imgaussfilt 使用方高斯核。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量后,但对各个参量对组的顺序没有要求。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 'FilterSize',3

高斯滤波器的大小,指定为正奇数或由正奇数组成的二元素向量。如果指定标量,则 imgaussfilt 使用方滤波器。默认滤波器大小为 2*ceil(2*sigma)+1

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

图像填充,指定为下列值之一。

描述
数值标量用常量值元素填充图像。
'circular'

通过循环重复维度内的元素来填充。

'replicate'

通过重复数组的边界元素来填充。

'symmetric'

用自身的镜面反射填充图像。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

要在其中执行滤波的域,指定为下列值之一:

描述
'auto'基于内部启发式方法,在空间域或频域中执行卷积。
'frequency'在频域中执行卷积。
'spatial'在空间域中执行卷积。

数据类型: char | string

输出参量

全部折叠

滤波后的图像,返回为与输入图像 A 具有相同的类和大小的数值数组。

提示

  • 如果图像 A 包含值为 InfNaN 的元素,则频域滤波的 imgaussfilt 的行为会是未定义状态。如果将 'FilterDomain' 名称值参量设置为 'frequency',或将其设置为 'auto' 并且 imgaussfilt 使用频域滤波,就会发生这种情况。要以类似于 imfilter 的方式限制输出中 InfNaN 的传播,请考虑将 'FilterDomain' 名称值参量设置为 'spatial'

  • 如果将 'FilterDomain' 名称值参量设置为 'auto',则 imgaussfilt 使用内部启发式方法来确定是空间域更快还是频域滤波更快。这种启发式方法依赖于机器,可能因不同配置而异。为了获得最优性能,请尝试两个选项 'spatial''frequency',以确定适合您的图像和核大小的最佳滤波域。

  • 如果未指定 'Padding' 名称值参量,则 imgaussfilt 默认使用 'replicate' 填充,这与 imfilter 使用的默认填充不同。

扩展功能

版本历史记录

在 R2015a 中推出

全部展开