主要内容

imfilter

多维图像的N-D滤波

描述

例子

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

例子

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

例子

全部折叠

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

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

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

方法创建运动模糊过滤器fspecial函数。

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

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

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

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

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

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

图中包含一个axes对象。坐标轴对象包含一个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 -20 12 9 9 -16 -21 18 14 -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 2

在本例中,的输出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 -20 12 9 9 -16 -21 18 14 -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 0 0

输入参数

全部折叠

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

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

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

数据类型:

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

边界的选择

选项

描述

填充选项

数字标量,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.这个过滤器给出了与五元过滤器相同的结果[0 0.25 0.75 -0.75 -0.25]

扩展功能

版本历史

之前介绍过的R2006a

全部展开

Baidu
map