imfilter函数---MATLAB
1 imfilter函数简介
函数名称:imfilter :
函数语法:g=imfilter(f,w,filtering_mode,boundary_options,size_optinos)
函数功能:对任意类型数组或多维图像进行滤波
参数介绍:f是输入图像,w为滤波模板,g为滤波结果;表1-1总结了其他参数的含义。
举 例:
originalRGB = imread('peppers.png');
imshow(originalRGB)
h = fspecial('motion', 50, 45);%创建一个滤波器
filteredRGB = imfilter(originalRGB, h);
figure, imshow(filteredRGB)
h = fspecial('motion', 50, 45);%创建一个滤波器
filteredRGB = imfilter(originalRGB, h);
figure, imshow(filteredRGB)
操作说明:在执行线性空间滤波函数imfilter时,我们必须清晰的理解两个意义相近的概念。一个是相关 (corr);另一个是卷积(conv)。下面分别介绍一维函数和二维函数在模板w下的相关操作和卷积操作。
2 imfilter函数操作说明
2.1 一维相关与卷积
图2-1(a)显示了一维函数f和模板w。假设f的原点定为最左侧的点。为执行两个函数的相关,可移动w使其最右侧的点与f的原点重合,如图2-1(b)所示。需要注意的是,这两个函数之间有一些点未重叠。为处理该问题,最普遍的方法是在f中填充足够多的0(对应表1-1中边界选项boundary_options的默认值P),以保证在w通过f的整个过程中,始终存在对应的点。如图2-1(c)所示。
现在准备执行相关操作。相关操作结果第一个值是在图2-1(c)所示位置上两个函数对应位置乘积的累加和。接着将w向右移动一个位置并重复上述过程,如图2-1(d)所示。经过4次移动后,如图2-1(e)所示。以此类推,直至w全部通过f,最终得到如图2-1(f)所示。得到的w与f的相关如图2-1(g)所示。
在图2-1(g)所示的相关中,符号’full’是由MATLAB图像处理工具箱使用的标记,用来指示相关操作按上述方式计算时使用了经过充零后的图像。同样,工具箱还提供了另一个’same’选项,可以产生大小与f相同的相关。这种计算同样也使用经过充零后的图像,但开始位置位于与f的原点对准的模板的中线点。最后的计算时使f的最后一个点与模板的中心点对准。
为了执行卷积,将w旋转180度,使其最右侧的点与f的原点重叠,如图2-2(b)所示。然后重复在相关操作中使用的滑动计算过程,如图2-2(c)到图2-2(f)所示。’full’和’same’卷积结果分别如图2-2(g)和图2-2(h)所示。
2.2 二维相关与卷积
上述情况很容易推广到二维图像中,如图2-3所示。原点位于图像f(x,y)的左上角。为了执行相关计算,设置w(x,y)的最右下角点,使之与f(x,y)的原点重合,如图2-3(c)所示。与一维情况类似,这里我们使用了零填充。然后在所有可能的位置上移动w(x,y),使得它的至少一个像素会与原始图像f(x,y)中的某个像素重叠。这个’full’相关的结果如图2-3(d)所示。为得到图2-3(e)中所示的’same’相关,我们要求w(x,y)的所有偏移都能实现中心像素覆盖原始的f(x,y)。
对于卷积,我们将w(x,y)旋转180度,其他处理方式与相关操作相同,参见图2-4(a)到图2-4(c)。