0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文吃透:图像卷积、边缘提取和滤波去噪

新机器视觉 来源:程序员阿德 作者:程序员阿德 2021-04-30 09:38 次阅读

本文通过通俗易懂的文字解释了图像卷积、边缘提取以及滤波去燥的概念及其分类。

一、图像卷积

现在有一张图片 f(x,y) 和一个kernel核 w(a,b)。

卷积(Convolution):卷积运算就是对于图像 f(x,y) 中的每个像素,将其作为中心像素,计算它及其邻域像素和kernel核 w(a,b)对应位置元素的乘积,然后把结果相加到一起,得到的值就作为该中心像素的新值,这样就完成了一次卷积运算。然后将kernel向下或向左平移一位继续计算每个像素的新值,直到遍历完整个图像。

如下图所示:

eff53566-a929-11eb-9728-12bb97331649.jpg

卷积运算的公式如下:

o4YBAGCLYKyAKJHXAAAap9wN1Vw591.png

还有一个概念是互相关(Cross-correlation),流程和卷积类似,区别在于卷积在运算前需要把kernel围绕中心旋转180度(即做一次上下翻转(filp)和一次左右翻转),而互相关则不需要。

互相关的公式如下:

pIYBAGCLYMiAWzufAAAdxUHwRHY989.png

两者的具体区别可以查看 卷积运算和相关运算的区别与物理含义。

互相关主要用于计算两个图像的相关性(主要用于图像配准)。因为我们平时接触的卷积核大都是关于x轴和y轴对称的,所以卷积和互相关在这种情况下没什么区别。

中心像素在图像的边缘时,没有足够的像素与kernel进行运算,有两个方法:

最外面的一圈像素不进行计算,如果图像非常大,丢掉图像边缘的一圈对结果影响不大。

更好的办法是人为地在图像四周插入一圈像素(比如最近邻插值)。

图像的处理结果可能超出值域范围(0-255),则小于0的值视作0,大于255的视作255就行了。

二、图像梯度

梯度的方向是函数 f(x,y) 变化最快的方向,当图像中存在边缘时,有一些相邻像素的灰度值变化比较大,即一定有较大的梯度值。所以可以求图像的梯度来确定图像的边缘。

分别对图像按照x方向和y方向进行求偏导,得到x梯度图和y梯度图。梯度是矢量,存在幅值和方向,下面这个公式表示了图像的梯度:

equation?tex=%5Cnabla+f%3D%5Cbegin%7Bbmatrix%7D+G_%7Bx%7D+%5C%5C+G_%7By%7D+%5Cend%7Bbmatrix%7D+%3D+%5Cbegin%7Bbmatrix%7D+%5Cdfrac%7B%5Cpartial+f%28x%2Cy%29%7D%7B%5Cpartial+x%7D+%5C%5C+%5Cdfrac%7B%5Cpartial+f%28x%2Cy%29%7D%7B%5Cpartial+y%7D+%5Cend%7Bbmatrix%7D

梯度的幅值(magnitude)为:

equation?tex=mag%28%5Cnabla+f%29+%3D+%5Csqrt%7BG_%7By%7D%5E%7B2%7D+%2B+G_%7Bx%7D%5E%7B2%7D%7D

梯度的方向(direction)为:

equation?tex=%5Ctheta+%3D+%5Coperatorname%7Barctan%7D+%5Cleft+%28%5Cdfrac%7BG_%7By%7D%7D%7BG_%7Bx%7D%7D+%5Cright%29

梯度方向会取绝对值,因此得到的角度范围是 [0,180°]。

导数的含义就是计算像素灰度值的变化率,对于离散图像而言,在图像上使用一阶差分来计算相邻像素之间的差值,从而得到图像的梯度。

o4YBAGCLYiOAYpmMAAAi3AdgnpU026.png

也可以使用二阶差分求梯度:

pIYBAGCLYjaAeA9nAAAwS8Cu6JY193.png

下面是一个边缘的例子:

pIYBAGCLYk-AFDMTAAD8zqCKN1U912.png

上面是对斜坡区域进行求导,斜坡区域是图像中最常见的区域,因为图片中的大部分边缘都不是突变的而是渐变的,对于斜坡区域,一阶导数将斜坡变成了平坦区域即变成了粗线,二阶导数将斜坡变成了两条中间存在平台区域的细线。

关于一阶和二阶导数总结如下:

一阶导数在图像中产生较粗的边缘

二阶导数对细节更敏感,如细线、噪声等,它提取出来的边缘更细更强(sharp)

二阶导数在灰度斜坡和灰度台阶过度处会产生双边沿响应

二阶导数的符号可以确定边缘的过渡是从亮到暗还是从暗到亮

根据导数提取边缘之前最好对图像做平滑处理,因为导数对噪声比较敏感,尤其是二阶导数

二阶导数会强化边缘和其他区域的对比度,但是也会将灰度平滑区域的噪声进行放大,使其更明显

三、边缘提取

图像梯度用于边缘检测。边缘是像素值发生跃迁的地方,是图像的显著特征之一,在图像特征提取、目标检测等方面都有重要的作用。

图像中有灰度值的变化就会有梯度,从而产生边缘,在边缘处,具有变化的强弱及方向。这时一些常见的图像识别算法的基础,比如 hog,sift,都是基于梯度的。

边缘分为三类,step edge、ramp edge和peak edge,下面是三类边缘的及其导数(一阶或者二阶)的形状:

o4YBAGCLYmSAXsj-AAN6MycJESs211.png

根据不同的图像边缘特征,来决定是使用一阶还是二阶导数来求梯度。对图像求一阶或者高阶导数,会得到一些峰值,当这些峰值超过指定阈值时,则认为这些峰值对应的像素是边缘。

前面说到在图像上可以使用一阶差分来计算相邻像素之间的变化率,我们利用卷积和特定的算子来计算相邻像素的变化率。prewitt算子和sobel算子可以计算相邻三个点之间的变化率。它们用于一阶算子的边缘检测,利用像素点上下、左右相邻点的灰度差求取边缘。

求梯度有三种卷积核(robert,prewitt,sobel算子),每种卷积核有两个,对图像分别做两次卷积,一个代表水平梯度,一个代表垂直梯度。

3.1、Prewitt算子

下面是prewitt的两个算子:

pIYBAGCLYoSAMTI-AAAKKyYYQRc588.png :计算水平梯度,检测垂直边缘

o4YBAGCLYqCAKRFTAAAKPiA60cY035.png :计算垂直梯度,检测水平边缘

(梯度方向跟边缘方向垂直)

3.2、Sobel算子

Sobel算子是在Prewitt算子的基础上进行改进,增强了中间这个位置的权重:

pIYBAGCLYrmAHZffAAAK_7GRG4Y419.png :计算水平梯度,检测垂直边缘

pIYBAGCLYtGAHK2sAAALO8R5Mzg077.png :计算垂直梯度,检测水平边缘

Sobel更强调了和边缘相邻的像素点对边缘的影响。相比较Prewitt算子,Sobel模板能够较好的抑制噪声(平滑)效果。

3.3、Laplacian算子

上述两个算子都是通过求一阶导数来计算梯度的,用于线的检测,通常用于边缘检测。在图像处理过程中,除了检测线,有时候也需要检测特殊点,这就需要用二阶导数进行检测,著名的就是拉普拉斯(Laplacian)算子。

对图像求两次导数,公式如下:

pIYBAGCLYuqAQ4xdAAIsyiE5CCg263.png

所以拉普拉斯算子为:

o4YBAGCLYv6ACU8OAAAYMzzoNVk886.png

下面这个拉普拉斯算子提取边缘更明显:

pIYBAGCLYxSAWDXIAAASKmHxQkE801.png

拉普拉斯算子在边缘检测的应用中并不局限于水平方向或垂直方向,这是Laplacian与soble的区别。

因为一阶二阶导数都能放大孤立点和孤立线(噪声)的影响,所以如果存在噪声,那么一阶二阶导数处理过后的图像将会有更多更大的噪声。所以对图像进行一阶二阶导数运算之前需要先对图像做平滑去噪处理。

四、平滑去噪

噪声的产生是因为图像中的某些像素的灰度值发生了突变,使得和周围区域不和谐。除噪其实去除高频噪声,使得图像中的噪声像素的灰度值不那么突兀。

噪声去除有基于卷积(高斯滤波,均值滤波,中值滤波等)和基于形态学(开运算、闭运算)两种方法。

用于平滑去噪和图像锐化(之后会介绍)的卷积核所有的元素之和一般要等于1,这是为了原始图像的能量(亮度)守恒。如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会完全黑,但只会突出一些边缘。

从频率域观点来看这些滤波器是一种低通滤波器,高频信号将会去掉,因此可以帮助消除图像尖锐噪声,实现图像平滑,模糊等功能。

4.1、高斯滤波

高斯滤波就是对整幅图像进行加权平均数的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波时水平和垂直方向呈现高斯分布,更突出了中心点在像素平滑后的权重。

高斯平滑中的滤波器是一个高斯核,二维零均值高斯函数为:

o4YBAGCLYy2AcFncAAAXv-E3XZo057.png

下面是高斯函数的形象表示:

pIYBAGCLY0KAYQvMAAI1s23HRhg558.png

常见的3x3高斯核(高斯核的宽和高必须是奇数)为: o4YBAGCLY16AdWu5AAANNuxBPq4754.png

可以看到高斯核里的值符合高斯分布,中心的值最大,其他值根据距离中心元素的距离递减,用高斯核对图像进行卷积运算,会使图像更模糊(平滑),而模糊的程度由高斯的标准方差 equation?tex=%5Csigma 决定, equation?tex=%5Csigma 越大,平滑程度越大。高斯滤波可以有效的从图像中去除高斯噪音。

高斯函数的值域在(0,1)之间,也就是说高斯核的九个数加起来应该等于1(也就是100%),把 1 这个数分摊到九个像素上,给了中间点更高的百分比。即高斯滤波对高斯核所覆盖的像素点的灰度值做了一个权重平均,中间的点权重大,周围的点权重小。

因为中心点是正在处理的点,也就是噪声点,给它更多的权重更能保持它自己的特性,从而使得平均运算对周围的像素影响更小。

4.2、均值滤波

使用进行均值滤波操作来模糊图像。输出图像的每一个像素灰度值是卷积核在输入图像中对应的像素的平均值( 所有像素加权系数相等)。

均值滤波卷积核所覆盖的九个像素点具有同样权重, 该卷积核的作用在于取九个值的平均值代替中间像素值,所以起到的平滑的效果。

相比于高斯滤波,它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,丢失了图像本身的一些属性,从而使图像变得模糊,不能很好地去除噪声点。

均值滤波的卷积核为: o4YBAGCLY3eAekaAAAAJeAo-pe0150.png

4.3、中值滤波

高斯滤波和均值滤波对去除高斯噪声的效果比较好,但是在噪声是椒盐噪声而不是高斯噪声,即图像偶尔会出现很大的噪声点的时候,用高斯滤波和均值滤波对图像进行平滑模糊的话,噪声像素是不会被去除的,它们只是转换为更为柔和但仍然可见的散粒。

椒盐噪声(salt & pepper noise)(散粒噪声)是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。椒盐噪声是一种因为信号脉冲强度引起的噪声,要对椒盐噪声处理就需要用中值滤波。

其他滤波器都是用计算得到的一个新值来替代中心像素的值,而中值滤波是将周围像素和中心像素九个值进行排序以后,取中间值来替代中心像素。

中值滤波在一定的条件下可以克服常见线性滤波器带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声非常有效,也常用于保护边缘信息,使得边缘不会被模糊。但是对一些细节多,特别是线、尖顶等细节多的图像不宜采用中值滤波。

总结

中值滤波器与均值滤波器的比较:在均值滤波器中,由于噪声成分被放入平均计算中,所以输出受到了噪声的影响,但是在中值滤波器中,由于噪声成分很难选上,所以几乎不会影响到输出。因此同样用3x3区域进行处理,中值滤波消除的噪声能力更胜一筹。中值滤波无论是在消除噪声还是保存边缘方面都是一个不错的方法。

上面介绍的都是低通滤波器,使用低通滤波器可以图像模糊,去除图像中的高频成分(包括噪音和边界)。有一些去滤波技术不会模糊掉边界,比如双边滤波。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    158

    文章

    7335

    浏览量

    174831
  • 图像处理
    +关注

    关注

    26

    文章

    1228

    浏览量

    55849
  • 计算
    +关注

    关注

    2

    文章

    431

    浏览量

    38480
  • 卷积
    +关注

    关注

    0

    文章

    95

    浏览量

    18412

原文标题:一文透彻理解:图像卷积、边缘提取和滤波去噪

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OpenCV图像卷积滤波详解

    图像滤波器是一种用于增强或抑制图像中特定特征的工具。它通常是一个小矩阵,定义了如何对图像中的像素进行操作。
    的头像 发表于 03-26 14:57 214次阅读
    OpenCV<b class='flag-5'>图像</b><b class='flag-5'>卷积</b>与<b class='flag-5'>滤波</b>详解

    基于卷积神经网络的双重特征提取方法

    机器学习技术已被广泛接受,并且很适合此类分类问题。基于卷积神经网络的双重特征提取方法。提出的模型使用Radon拉冬变换进行第一次特征提取,然后将此特征输入卷积层进行第二次特征
    发表于 10-16 11:30 436次阅读
    基于<b class='flag-5'>卷积</b>神经网络的双重特征<b class='flag-5'>提取</b>方法

    sTm32可以做卷积滤波图片吗?

    sTm32可以做卷积滤波图片吗
    发表于 09-21 07:17

    卷积神经网络基本结构 卷积神经网络主要包括什么

    。它的基本结构由卷积层、池化层和全连接层三部分组成,其中卷积层是核心部分,用于提取图像的特征,池化层用于降低特征图的大小,全连接层用于分类或回归。 1.
    的头像 发表于 08-21 16:57 4942次阅读

    卷积神经网络算法代码python

    广泛的应用。CNN通过卷积和池化操作实现对图像等复杂数据的特征提取和分类。 1.卷积操作 卷积操作是CNN中最为基础的操作之一。它是指将一个
    的头像 发表于 08-21 16:50 563次阅读

    卷积神经网络的介绍 什么是卷积神经网络算法

    的深度学习算法。CNN模型最早被提出是为了处理图像,其模型结构中包含卷积层、池化层和全连接层等关键技术,经过多个卷积层和池化层的处理,CNN可以提取
    的头像 发表于 08-21 16:49 1436次阅读

    卷积神经网络三大特点

    是一种基于图像处理的神经网络,它模仿人类视觉结构中的神经元组成,对图像进行处理和学习。在图像处理中,通常将图像看作是二维矩阵,即每个像素点都有其对应的坐标和像素值。
    的头像 发表于 08-21 16:49 3678次阅读

    卷积神经网络应用领域

    在不同领域的应用。 1.图像识别 卷积神经网络最早应用在图像识别领域。其核心思想是通过多层滤波器来提取
    的头像 发表于 08-21 16:49 2884次阅读

    卷积神经网络如何识别图像

    卷积神经网络如何识别图像  卷积神经网络(Convolutional Neural Network, CNN)由于其出色的图像识别能力而成为深度学习的重要组成部分。CNN是一种深度神经
    的头像 发表于 08-21 16:49 1435次阅读

    基于卷积神经网络的人脸图像美感分类案例

      摘要:针对复杂环境下人脸图像美感分类准确率低的问题,给出一种适用于人脸图像美感分类的网络模型F-Net。该模型以LeNet-5为基础网络,使用卷积提取复杂背景下的人脸
    发表于 07-19 14:38 0次下载

    基于FPGA的实时图像边缘检测系统设计(附代码)

    ;阐述了图像信息的捕获原理;详细介绍了图像边缘检测部分各模块的功能;重点介绍了具有功能的中值滤波
    发表于 06-21 18:47

    荐读:FPGA设计经验之图像处理

    ,减小噪声。 均值滤波般出现在图像处理的预处理步骤, 预处理后,根据噪声来源,例如针对椒盐噪声做中值滤波处理,针对高斯噪声做高斯滤波
    发表于 06-08 15:55

    PyTorch教程7.2之图像卷积

    电子发烧友网站提供《PyTorch教程7.2之图像卷积.pdf》资料免费下载
    发表于 06-05 10:13 0次下载
    PyTorch教程7.2之<b class='flag-5'>图像</b><b class='flag-5'>卷积</b>

    【米尔MYD-JX8MMA7开发板-ARM+FPGA架构试用体验】 十二、提取车牌

    出来,需要完成系列的滤波、色彩空间转换等操作。下面对上述操作进行简单的说明。滤波:操作的目的是去除
    发表于 06-01 20:38

    简谈卷积—幽默笑话谈卷积

    作弊中,为了让照片同时像两个人,只要把两人的图像卷积处理即可,这就是种平滑的过程,可是我们怎么才能真正把公式和实际建立起种联系呢,也就是说,我们能不能从生活中找到
    发表于 05-25 18:08