一)认识imfilter函数
imfilter函数叫做实现线性空间滤波函数,主要功能可以实现多维数组的滤波,在图像领域就是对图像进行滤波。
滤波是一个统一的概念,在图像领域,图像的去除噪声点,图像提取边缘,图像平滑、模糊、增强等等都可以看成滤波。
用法:B = imfilter(A,H)
B = imfilter(A,H,option1,option2,…)
或写作 :
B = imfilter(f, w, filtering_mode, boundary_options, size_options);
(更详细的在matlab环境下help查询imfilter函数)这里贴出来help的文件如下:
二)认识模板H
可以说imfilter函数的精髓就是对于模板H的构造,H的不同决定了你的实现效果不同,那么什么是模板呢?举个例子,假如现在要提取图像的噪声点,我们知道,既然是噪声点,那么噪声点的像素值与其周围的点的像素值都应该相差很远才对,这里选取噪声点的上下左右四个方向,每个方向上用噪声点的值减去对应方向的值,将这四个差的绝对值相加起来,如果这个值越大,是不是说明这个点越是噪声点了,那么上述的这个过程可以用一个模板来计算,这个模板就是:
| 0 | -1 | 0 |
| -1 | 4 | -1 |
| 0 | -1 | 0 |
用这个模板去对图像滤波就可以得到噪声(当然也可以得到边缘,因为边缘也符合这个特性吧),比如下图所示:
该图就是经过模板H = [0 -1 0;-1 4 -1;0 -1 0]滤波而来的,相应的matlab代码就是imfilter(I,H);
其实这个滤波函数的操作方式很简单,对于一个图像的一个像素点的操作,首先看看模板大小,比如3*3,然后提取出这个像素点附近的3*3领域的9个像素点,将这9个像素点依次对应的与模板中的数字相乘,在把乘的所有值相加(很显然就会出现正负了,不一定都是正值),把这个和作为该像素点滤波后的值,那么图像中每个像素点都进行这个操作后,就得到一副与原始图像大小相同的滤波图像了

本文深入探讨MATLAB中的imfilter函数,解释其如何通过模板构造实现图像滤波,并详细展示了模板H在提取图像噪声点、边缘等特征的功能。同时,文章进一步阐述了imfilter在复杂图像处理任务中的应用,例如通过构造模板快速计算图像特征值,如灰度值、梯度等,从而提高处理效率。此外,文章还讨论了边界处理问题及其解决方案,以及imfilter函数在非图像处理领域的潜在应用。
9万+

被折叠的 条评论
为什么被折叠?



