主要内容

imfilter

多维图像的N-D滤波

描述

例子

B= imfilter (一个h筛选多维数组一个用多维滤波器h并返回结果B

例子

B= imfilter (一个h选项,……)根据一个或多个指定选项执行多维过滤。

例子

全部折叠

将彩色图像读入工作区并显示它。

originalRGB = imread(“peppers.png”);imshow (originalRGB)

图中包含一个轴对象。axis对象包含一个image类型的对象。

属性创建一个运动模糊滤镜fspecial函数。

H = fspecial(“运动”, 50, 45);

将滤镜应用于原始图像以创建具有运动模糊的图像。请注意,imfilter比其他一些过滤函数更节省内存,因为它输出与输入图像数组具有相同数据类型的数组。在本例中,输出为数组uint8

filteredRGB = imfilter(originalRGB, h);图中,imshow (filteredRGB)

图中包含一个轴对象。axis对象包含一个image类型的对象。

再次过滤图像,这一次指定复制边界选项。

boundaryReplicateRGB = imfilter(originalRGB, h,“复制”);图中,imshow (boundaryReplicateRGB)

图中包含一个轴对象。axis对象包含一个image类型的对象。

默认情况下,imfilter使用相关性是因为工具箱过滤器设计函数产生相关性内核。使用可选参数来使用卷积。

创建一个样本矩阵。

A =魔术(5)
一个=5×517 24 18 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

创建一个过滤器。

H = [-1 0 1];

过滤器使用相关性,默认值。

imfilter (A, h)
ans =5×524 -16 -16 14 -8 5 -16 9 9 -14 6 9 14 9 -20 12 9 9 -16 -21 18 14 -16 -16 -16 -2

滤波器使用卷积,指定imfilter使用可选参数。

imfilter (A, h,“conv”
ans =5×5-24 16 16 -14 8 -5 16 -9 -9 14 -6 -9 -14 -9 20 -12 -9 -9 16 21 -18 -14 16 16

在本例中,的输出imfilter当输入为类时,值为负值.要避免为负值,请在调用之前将图像转换为不同的数据类型imfilter.例如,当输入类型为uint8imfilter将输出值截断为0.将图像转换为有符号整数类型也可能是合适的。

A =魔术(5)
一个=5×517 24 18 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

使用imfilter

H = [-1 0 1];imfilter (A, h)
ans =5×524 -16 -16 14 -8 5 -16 9 9 -14 6 9 14 9 -20 12 9 9 -16 -21 18 14 -16 -16 -16 -2

注意,结果为负值。若要避免输出图像中的负值,请将输入图像转换为uint8在进行过滤之前。因为输入imfilter是一流的uint8,输出也是一流的uint8,imfilter将负值截断为0

A = uint8(magic(5));imfilter (A, h)
ans =5x5 uint8矩阵24 0 0 14 0 5 0 9 9 0 6 9 14 9 0 12 9 9 0 0 18 14 0 0 0 0 0 0

输入参数

全部折叠

要过滤的图像,指定为尺寸的数字数组。

数据类型:||int8|int16|int32|uint8|uint16|uint32|逻辑

多维过滤器,指定为数据类型的N-D数组

数据类型:

控制筛选操作的选项,该操作指定为字符向量、字符串标量或数字标量。下表列出了所有支持的选项。万博1manbetx

边界的选择

选项

描述

填充选项

数字标量,X

超出数组边界的输入数组值将被赋值X.当没有指定填充选项时,默认值为0

“对称”

数组边界之外的输入数组值通过在数组边界上镜像反射数组来计算。

“复制”

假定超出数组边界的输入数组值等于最近的数组边界值。

“圆”

在数组边界之外的输入数组值通过隐式假设输入数组是周期性的来计算。

输出的大小

“相同”

输出数组与输入数组大小相同。这是没有指定输出大小选项时的默认行为。

“全部”

输出数组是完全过滤的结果,因此比输入数组大。

相关和卷积选项

“相关系数”

imfilter使用相关性执行多维过滤,这与filter2执行过滤。当没有指定相关或卷积选项时,imfilter使用相关。

“conv”

imfilter使用卷积执行多维过滤。

输出参数

全部折叠

过滤后的图像,作为与输入图像大小和类别相同的数字数组返回,一个

提示

  • 此函数可以利用数据类型的硬件优化uint8uint16int16,跑得更快。

算法

  • imfilter函数使用双精度浮点算法计算每个输出像素的值。如果结果超出了数据类型的范围,则imfilter将结果截断为数据类型允许的范围。如果是整数数据类型,则imfilter小数值四舍五入。

  • 如果您指定一个均匀大小的内核h,则核的中心为地板((尺寸(h) + 1)/2)

    例如,4元滤波器的中心[0.25 0.75 -0.75 -0.25]是第二个元素,0.75.该滤波器与5元滤波器的滤波结果相同[0 0.25 0.75 -0.75 -0.25]

扩展功能

版本历史

R2006a之前介绍

全部展开