主要内容

imfilter

多维图像的N-D滤波

描述

例子

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

例子

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

例子

全部折叠

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

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

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

创建一个动作模糊过滤器使用fspecial函数。

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

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

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

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

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

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

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

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

创建一个样本矩阵。

=魔法(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 9 -20 12 9 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.还可以将图像转换为有符号整数类型。

=魔法(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 9 -20 12 9 9 9 -16 -21 18 14 -16 -16 -16 -2

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

一个= 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 9 0 0 18 14 0 0 0

输入参数

全部折叠

要过滤的图像,指定为维度的数字数组。

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

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

数据类型:

控制筛选操作的选项,指定为字符向量、字符串标量或数字标量。下表列出了所有支持的选项。金宝app

边界的选择

选项

描述

填充选项

数字标量,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 0.75 -0.75 -0.25]

扩展功能

之前介绍过的R2006a