计算机视觉基础(3)——图像滤波与边缘检测

本文主要聚焦于图像滤波与边缘检测两部分。图像滤波部分分析的是线性移不变系统,将介绍两类滤波器,平滑滤波器和梯度滤波器。边缘检测部分将介绍高斯导数滤波器和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,因此权重为 \frac{1}{3},计算如下:

 下面是尺寸为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、滞后阈值:先用较大阈值得到强边缘,然后用较小阈值得到部分弱边缘,使强边缘之间连续。

 效果如下:

 三、总结

本文从理论层面介绍了图像滤波和边沿检测。大家需要重点掌握平滑滤波器和梯度滤波器,以及边缘检测所使用的滤波器,高斯导数滤波器需要大家结合二维情况下的高斯函数去理解,关于Canny滤波器,希望大家读一读链接对应的论文,提升阅读CV论文的能力。

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪猪的超超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值