本文主要聚焦于图像滤波与边缘检测两部分。图像滤波部分分析的是线性移不变系统,将介绍两类滤波器,平滑滤波器和梯度滤波器。边缘检测部分将介绍高斯导数滤波器和Canny边缘检测器。为了更好的阅读体验,读者需要提前了解或掌握卷积、线性移不变系统、梯度、高斯函数等基本概念。
一、 图像滤波
1.1 图像滤波器
图像滤波器有两大作用,分别是图像增强、提取和重构纹理。
对于图像增强,我们一起来看看其应用(模糊,锐化,去噪等),对图像滤波有一个初步的认识:
下面这组图是对爱因斯坦生日照做图像滤波处理的输出结果:
对于提取和重构纹理来说,我们通过滤波器组,对纹理图像进行处理,提取出我们想要的纹理,甚至是重构纹理,实现结果如下:
1.2 线性移不变系统
在了解了图像滤波器的大致概念之后,我们还需要掌握数字信号处理中的一个很重要的概念,线性移不变系统(Linear Shift Invariant System,LSIS),LSIS需要满足两个特性即线性和移不变性。对于线性而言,即输入的线性组合,产生相应的输出的线性组合;对于移不变而谈,即输入产生的响应与时间无关,无论何时的输入,输出都是相应的输出,不会受到时间变化的影响。
具体数学表达式如下:
在学习了LSIS之后,我们再来简单回顾一遍卷积的概念:
卷积的性质如下所示:
卷积的概念极其重要,大家务必掌握。在深度学习中卷积神经网络的部分,就是使用卷积核进行的计算。对于卷积核来说,我们还需要了解一个概念——可分离卷积核,如下所示:
我们通过线性代数的方法,将二维的卷积核分解成两个一维的卷积核进行相乘,这样的好处是能有效降低时间复杂度,在大型神经网络模型的搭建中有效减少时间和算力消耗。
1.3 线性滤波器
在充分了解完图像滤波和LSIS的基本概念之后,我们就能正式学习到本部分的主角了——线性滤波器。我们先来看一个例子:
对于上面第一个图来说,滤波器的作用是简单弱化了最边缘,而没有起到平移之类的效果。因为卷积之后的效果是,每个点都取得是自己的中心位置,即没有发生变化。除了最边缘的一圈点,被滤波器消灭了。
对于上面第二个图来说,滤波器的作用是左移。因为卷积之后,最中心的点取值为卷积之后的结果,而这个滤波器只有右端有值,卷积之后取得值即为右端值。因此最中心的点取值即为右边点的值,可以想成是右边部分的值平移到了中心位置,即发生了左移。
对于线性滤波器而言,我们主要介绍两种滤波器,分别是平滑滤波器和梯度滤波器。
1.4 平滑滤波器
对于平滑滤波器而言,有如下性质:
- 滤波器的所有元素都为正值;
- 所有元素之和为1;
- 平滑程度和滤波器尺寸成正比;
- 相当于一个低通滤波器
下面我们将分别介绍盒氏滤波器和二项滤波器。
1.4.1 盒氏滤波器
首先是盒氏滤波器,其原理是用领域范围内的平均值替代当前位置元素,主要作用是图像平滑。盒氏滤波器的特点为所有元素均为权重,即1乘权重,乘权重的目的是保证所有元素之和为1。
举例说明:
对于尺寸为3的一维盒氏滤波器,为保证所有元素之后为1,因此权重为 ,计算如下:
下面是尺寸为3的滤波器和尺寸为5的滤波器:
对于盒氏滤波器而言,计算非常简单,类似于卷积神经网络中的卷积操作一样,盒氏滤波器就是从左往右,从上至下,依次进行对应元素相乘相加的操作,然后计算后的值作为区域中心点的值。我们以尺寸为3的二维盒氏滤波器为例,滤波器如下:
具体计算步骤如下所示:
依次往复,我们可以得到结果如下:
显然,通过盒氏滤波器之后,图像变得更加平滑了,从0,30,50,80,90,60,30这样变化,比输入图像0,90之间的变化,平滑了很多。
1.4.1 二项滤波器
对于二项滤波而言,思想来源于二项式定理,我们也可以画出杨辉三角形,来得到不同尺寸的二项滤波器,但请大家注意,滤波器各个元素需要满足求和为1。
上面是一维情况下的二项滤波器,下图为二维情况下的二项滤波器:
1.5 梯度滤波
接下来,我们将学习梯度滤波器。其具有如下特征:
- 滤波器元素有正有负
- 元素和为0
对于梯度滤波器而言,有如下公式:
一维信号:
二维信号:
我们常用的梯度滤波器有两种:一种是Sobel算子,一种是拉普拉斯算子。
1.5.1 索贝尔算子
Sobel算子是用3x3窗口计算梯度的算子,是二项滤波器和梯度滤波器的组合,常用于边缘检测。
用索贝尔算子进行边缘检测的效果如下:
1.5.1 拉普拉斯算子
相较于索贝尔算子,拉普拉斯算子能更加准确地进行边缘检测
下面让我们来看看梯度滤波器的作用,明显看到通过梯度滤波器之后,函数 f 变得更加平滑和连续,且梯度信息也更加清晰:
用拉普拉斯算子进行边缘检测的效果如下:
二、边缘检测
2.1 边缘检测是什么
在学习完图像滤波之后,我们来学习一下边缘检测,实际上,我们上面所讲述的两种梯度滤波器,即索贝尔算子和拉普拉斯算子,它们都能用于边缘检测,效果都很不错。那么边缘检测到底是什么呢,顾名思义就是检测物体的边缘,为了解释清楚这个概念,让我们从一张照片入手:
由于以上的种种原因,我们能通过这些区别和不连续性,通过滤波器检测到边缘。
常见的边缘种类如下:
一般情况下,我们通过像素值的变化,通过求导的方法即可检测出图像的边缘
但是实际上,边缘可能有噪声的污染,在这种情况下,我们对图像进行求导,就无法获取到边缘的信息了,为此,我们需要进行降噪的处理。
通过梯度滤波,对信号进行降噪处理或是消除(尽量减少)噪声的影响,然后再对滤波处理过的图像,进行求导,就能进行边缘检测啦,过程如下:
接下来,我们将分别介绍高斯导数滤波器和Canny边缘检测器。对于边缘检测的算子而言,我们有如下的分析角度:
- 边缘定位
- 边缘强度
- 边缘方向
其中,优秀的边缘算子应该满足如下的特点:
- 高检测率
- 准确定位
- 噪声鲁棒
上图表示的是我们通过计算梯度,来进行边缘检测的过程,通过一阶导数的极值来进行,也可以通过二阶导数的过零点, 高斯算子仅为一阶导数信息,而拉普拉斯算子为二阶导数信息,因此拉普拉斯算子更加精确。
因此,我们还能将二者结合,使用高斯算子进行平滑,使用拉普拉斯算子进行边缘检测。
2.2 高斯导数滤波器
高斯滤波器在GMM模型(高斯混合分布模型)中有所应用,大家可以去查阅相关资料,了解一下SIFT特征和GMM模型,通过二者的学习,了解高斯导数滤波器的应用。下面只给出高斯导数滤波器的基本概念和高斯核的影响,大家还需要自行去学习。
2.3 Canny边缘检测器
学习Canny边缘检测器,推荐大家阅读下面链接对应的论文:
A Computational Approach to Edge Detection | IEEE Journals & Magazine | IEEE Xplore
下面是该滤波器的简要介绍:
Canny边缘检测器用高斯导数滤波器卷积图像得到x和y方向梯度,其特点如下:
- 计算梯度的幅值和方向
- 对梯度幅值图像非最大值抑制
- 对梯度幅值图像进行阈值化
1、计算梯度的幅值和方向:
2、对梯度幅值图像非最大值抑制:
3、滞后阈值:先用较大阈值得到强边缘,然后用较小阈值得到部分弱边缘,使强边缘之间连续。
效果如下:
文章来源:https://www.toymoban.com/news/detail-788249.html
三、总结
本文从理论层面介绍了图像滤波和边沿检测。大家需要重点掌握平滑滤波器和梯度滤波器,以及边缘检测所使用的滤波器,高斯导数滤波器需要大家结合二维情况下的高斯函数去理解,关于Canny滤波器,希望大家读一读链接对应的论文,提升阅读CV论文的能力。文章来源地址https://www.toymoban.com/news/detail-788249.html
到了这里,关于计算机视觉基础(3)——图像滤波与边缘检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!