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

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

    关注

    161

    文章

    7795

    浏览量

    177996
  • 图像处理
    +关注

    关注

    27

    文章

    1289

    浏览量

    56722
  • 计算
    +关注

    关注

    2

    文章

    449

    浏览量

    38787
  • 卷积
    +关注

    关注

    0

    文章

    95

    浏览量

    18507

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

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

收藏 人收藏

    评论

    相关推荐

    AI模型部署边缘设备的奇妙之旅:目标检测模型

    通道数时表现更好。 2.3 神经网络的相关知识点 2.3.1 卷积的基本概念 卷积种数学运算,在计算机视觉中被广泛应用于特征提取。它通过
    发表于 12-19 14:33

    傅立叶变换在图像处理中的作用

    ,然后利用低通滤波器滤除高频噪声,再通过逆傅里叶变换将图像转换回空间域,从而实现图像。 增强 :另
    的头像 发表于 12-06 16:55 371次阅读

    卷积神经网络的基本原理与算法

    ),是深度学习的代表算法之、基本原理 卷积运算 卷积运算是卷积神经网络的核心,用于提取
    的头像 发表于 11-15 14:47 438次阅读

    高斯卷积核函数在图像采样中的意义

    高斯卷积核函数在图像采样中的意义主要体现在以下几个方面: 1. 平滑处理与 平滑图像 :高斯卷积
    的头像 发表于 09-29 09:33 394次阅读

    高斯滤波卷积核怎么确定

    高斯滤波卷积核确定主要依赖于高斯函数的特性以及图像处理的具体需求。以下是确定高斯滤波卷积核的几个关键步骤:
    的头像 发表于 09-29 09:29 490次阅读

    图像边缘检测系统的设计流程

    图像边缘检测系统的设计流程是个涉及多个步骤的复杂过程,它旨在从图像提取出重要的结构信息,如边界、轮廓等。这些
    的头像 发表于 07-17 16:39 343次阅读

    图像识别技术的原理是什么

    值化、滤波边缘检测等操作。这些操作可以提高图像的质量,减少噪声,突出图像的特征,为后续的特征提取和分类器设计提供基础。 1.1
    的头像 发表于 07-16 10:46 912次阅读

    图像处理中的卷积运算

    卷积运算是图像处理中种极其重要的操作,广泛应用于图像滤波边缘检测、特征
    的头像 发表于 07-11 15:15 2218次阅读

    卷积神经网络实现示例

    卷积神经网络(Convolutional Neural Network,简称CNN)是种深度学习模型,主要用于处理具有网格结构的数据,如图像。CNN通过卷积层自动
    的头像 发表于 07-03 10:51 431次阅读

    卷积神经网络的实现原理

    、训练过程以及应用场景。 卷积神经网络的基本原理 1.1 卷积操作 卷积神经网络的核心是卷积操作。卷积操作是
    的头像 发表于 07-03 10:49 537次阅读

    卷积神经网络的原理与实现

    1.卷积神经网络(Convolutional Neural Networks,简称CNN)是种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。 卷积神经网络是
    的头像 发表于 07-02 16:47 565次阅读

    卷积神经网络的基本原理和应用范围

    和应用范围。 卷积神经网络的基本原理 1. 卷积层(Convolutional Layer) 卷积层是CNN的核心组成部分,其主要功能是提取
    的头像 发表于 07-02 15:30 1158次阅读

    卷积神经网络在图像识别中的应用

    卷积操作 卷积神经网络的核心是卷积操作。卷积操作是种数学运算,用于提取
    的头像 发表于 07-02 14:28 1084次阅读

    基于FPGA的实时边缘检测系统设计,Sobel图像边缘检测,FPGA图像处理

    摘要 :本文设计了种 基于 FPGA 的实时边缘检测系统 ,使用OV5640 摄像头模块获取实时的视频图像数据,提取图像
    发表于 05-24 07:45

    OpenCV图像卷积滤波详解

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