主要内容

imfilter

N-D滤波多维图像

描述

例子

B= imfilter (一个h过滤多维数组一个使用多维过滤器h并返回结果B

例子

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

例子

全部收缩

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

originalRGB = imread ('peppers.png');imshow(workingRGB)

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

使用该运动模糊滤波器fspecial.函数。

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

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

filteredrgb = Imfilter(OricalitRGB,H);图,imshow(filteredrgb)

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

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

边界replicatergb = imfilter(OricalitRGB,H,'复制');图中,imshow (boundaryReplicateRGB)

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

默认,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 18 14 -16 -16 -2

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

imfilter (A, h,'conv'
ans =5×55、16、16、16、16、16、16、16、16、16、16、16、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 18 14 -16 -16 -2

请注意,结果具有负值。为避免输出图像中的负值,将输入图像转换为uint8在执行过滤之前。自输入以来imfilter是课堂uint8,输出也是类的uint8, 和imfilter截断负值0

a = uint8(魔术(5));imfilter (A, h)
ans =5 x5 uint8矩阵24 0 0 14 0 5 0 9 9 0 6 9 14 9 0 12 9 0 0 1 18 14 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)

    例如,四元滤镜的中心[0.25 0.75 -0.75 -0.25]是第二个元素,0.75.此滤波器将相同的结果与5元滤波器的过滤提供相同的结果[0 0.25 .75 -0.75]

扩展功能

在R2006A之前介绍