文档

imguidedfilter

图像引导滤波

语法

B =无导滤波器(A,G)
B = imguidedfilter(A)
B = imguidedfilter(__,名称,值,…)

描述

B= imguidedfilter (一个G过滤二进制,灰度,或RGB图像一个使用引导滤波器,其中滤波过程是由图像引导的GG可以是二进制,灰度或RGB图像,必须有相同的行数和列数一个

例子

B= imguidedfilter (一个过滤输入图像一个在自我指导下,使用一个本身作为引导图像。这可以用于图像的边缘保持平滑一个

B= imguidedfilter (__名称,值,……)过滤图像一个使用名称-值对来控制引导筛选的各个方面。参数名可以缩写。

例子

全部折叠

这个例子展示了如何使用引导滤波器执行边缘保持平滑。

将图像读入工作区。显示图像。

A = imread(“pout.tif”);imshow(一个);

平滑图像使用imguidedfilter.在这种语法中,imguidedfilter使用图像本身作为引导图像。

guided = imguidedfilter(A);

为了进行比较,使用定义的高斯滤波器平滑原始图像imgaussfilt.将滤波器的标准差设置为2.5,使其平滑程度与引导滤波器的平滑程度大致匹配。

Igaussian = imgaussfilt(A,2);

显示引导滤波结果和高斯滤波结果。

imshowpair (Iguided Igaussian,“蒙太奇”);

观察两个过滤图像的平坦区域,如夹克和面部,具有相似的平滑量。然而,引导滤波图像更好地保留了边缘的清晰度,如网格周围和白衬衫的领子。

输入参数

全部折叠

要过滤的图像,指定为非稀疏、二进制、灰度或RGB图像。

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

在过滤过程中用作指南的图像,指定为非稀疏、二进制、灰度或RGB图像。

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

名称-值对参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在单引号内(' ').您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:Ismooth = imguidedfilter(A,'NeighborhoodSize',[4 4]);

全部折叠

用于引导滤波的每个像素周围的矩形邻域的大小,指定为标量或两元向量,(mn),是正整数。如果指定一个标量值,例如在美国,这个社区的面积是一个正方形[Q Q]

例子:Ismooth = imguidedfilter(A,'NeighborhoodSize',[4 4]);

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

输出图像中的平滑量,指定为正标量。如果你指定一个小的值,只有方差小的邻域(均匀区域)会被平滑,而方差大的邻域(比如边缘周围)不会被平滑。如果指定更大的值,除了相对均匀的邻域之外,高方差邻域(例如更强的边缘)也会被平滑。从默认值开始,检查结果,并向上或向下调整默认值以达到您想要的效果。

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

输出参数

全部折叠

过滤后的图像,作为大小和类型相同的数组返回一个

提示

  • 的参数DegreeOfSmoothing为给定的邻域指定方差的软阈值。如果一个像素的邻域的方差远低于阈值,它将看到一些平滑。如果一个像素的邻域的方差远远高于阈值,它将几乎没有平滑。

  • 输入的图像一个而且G可以是不同的类别。如果任何一一个G是整数类或逻辑类,imguidedfilter将它们转换为用于内部计算的浮点精度。

  • 输入的图像一个而且G可以有不同数量的通道。

    • 如果一个是一个RGB图像和G是灰度或二值图像,imguidedfilter使用G为所有渠道的指导一个独立。

    • 如果两个一个而且G为RGB图像,imguidedfilter使用G为相应通道的指导一个,即逐平面行为。

    • 如果一个是灰度图像还是二值图像G为RGB图像,imguidedfilter使用所有的三个通道G用于过滤的指导(颜色统计)一个

参考文献

[1]何开明,孙健,唐晓欧,引导图像滤波。IEEE模式分析与机器智能汇刊,第35卷,第6期,第1397-1409页,2013年6月

在R2014a中引入

这个话题有用吗?