空间域图像处理(spatial processing)主要分为灰度变换(intensity transformations)和空间滤波(spatial filtering)两类。
空间滤波(Spatial Filtering)是图像处理领域应用广泛的主要工具之一,充分理解相关基本概念对于图像处理非常必要。
在《《数字图像处理》第三章学习总结感悟1:灰度变换与空间滤波概念及常用灰度变换方法介绍》介绍了空间滤波的概念及基本的原理,本节进一步据介绍空间滤波的详细机理。
图像处理中既可以使用空间滤波来增强图像,也可以应用于其他方面。
滤波(filter)一词借用于频域处理(frequency domain processing),在频率域处理中。“滤波”是指接受(accepting)和通过(passing)或拒绝一定的频率分量(frequency components)。例如,通过低频的滤波器称为低通滤波器(lowpass filter)。低通滤波器的最终效果是模糊(blur)或平滑(smooth))一幅图像。我们可以用空间滤波器(spatial filters ,也称为空间掩模spatial masks、核kernels、模板templates和窗口windows)直接作于图像本身而完成类似的平滑。
事实上,线性空间滤波与频率域滤波之间存在一一对应的关系。空间滤波可提供频率域滤波一样多的功能,但空间滤波还可用于非线性滤波,而这在频率域中是做不到的。
在《《数字图像处理》第三章学习总结感悟1:灰度变换与空间滤波概念及常用灰度变换方法介绍》中简单解释过,空间滤波器由
(1)一个邻域(典型地是一个较小的矩形);
(2)对该邻域包围的图像像素执行的预定义操作(predefined operation)组成。
滤波产生一个新像素,新像素的坐标等于邻域中心的坐标(coordinates of the center of the neighborhood),像索的值是滤波操作(operation filtering)的结果。滤波器的中心访问输人图像中的每个像素,就生成了处理(滤波)后的图像。
如果在图像像素上执行的是线性操作(linear),则该滤波器称为线性空间滤波器(linear spatial filter)。否则,滤波器就称为非线性空间滤波器(nonlinear spatial filter)。
老猿理解上图表述的几层含义如下:
很明显,滤波器的中心系数 w(0,0)对准位置(x,y)的像素。对于一个大小为m×n的模板。我们假设m=2a+1且n=2b+1,其中a、b为正整数。这意味着在后续的讨论中,我们关注的是奇数尺寸的滤波器,其最小尺寸为3×3。
注意:滤波后的新像素值一般是赋值给输出图像中的对应位置,用滤波后的像素值替换输入图像中的对应位置的情形很少见,因为这会在执行滤波操作同时改变输入图像的内容。
本文介绍了空间滤波的原理,空间滤波器由一个邻域和对该邻域包含的图像像素执行的预定义操作组成。空间滤波产生一个新像素,新像素的坐标等于邻域中心的坐标,像索的值是滤波操作的结果。通过滤波器的中心访问输人图像中的每个像素,就生成了处理(滤波)后的图像。
更多图像处理请参考专栏《OpenCV-Python图形图像处理》及《图像处理基础知识》的介绍。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《 专栏:Python基础教程目录》从零开始学习Python。
如对文章内容存在疑问,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询:
也可以扫描博客左边栏目的微信公号二维码咨询。
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。