卷积核与特征提取_卷积层特征各层如何保存

卷积核与特征提取_卷积层特征各层如何保存线性滤波与卷积的基本概念线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果。做法很简单。首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

线性滤波与卷积的基本概念

      线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果。做法很简单。首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像。然后,对于图像的每一个像素点,计算它的邻域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为该像素位置的值。这样就完成了滤波过程。

卷积核与特征提取_卷积层特征各层如何保存

对图像和滤波矩阵进行逐个元素相乘再求和的操作就相当于将一个二维的函数移动到另一个二维函数的所有位置,这个操作就叫卷积或者协相关。卷积和协相关的差别是,卷积需要先对滤波矩阵进行180的翻转,但如果矩阵是对称的,那么两者就没有什么差别了。

      Correlation 和 Convolution可以说是图像处理最基本的操作,但却非常有用。这两个操作有两个非常关键的特点:它们是线性的,而且具有平移不变性shift-invariant。平移不变性指我们在图像的每个位置都执行相同的操作。线性指这个操作是线性的,也就是我们用每个像素的邻域的线性组合来代替这个像素。这两个属性使得这个操作非常简单,因为线性操作是最简单的,然后在所有地方都做同样的操作就更简单了。

      实际上,在信号处理领域,卷积有广泛的意义,而且有其严格的数学定义,但在这里不关注这个。

      2D卷积需要4个嵌套循环4-double loop,所以它并不快,除非我们使用很小的卷积核。这里一般使用3×3或者5×5。而且,对于滤波器,也有一定的规则要求:

      1)滤波器的大小应该是奇数,这样它才有一个中心,例如3×3,5×5或者7×7。有中心了,也有了半径的称呼,例如5×5大小的核的半径就是2。

      2)滤波器矩阵所有的元素之和应该要等于1,这是为了保证滤波前后图像的亮度保持不变。当然了,这不是硬性要求了。

      3)如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。

      4)对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。

神奇的卷积核

      上面说到,对图像的滤波处理就是对图像应用一个小小的卷积核,那这个小小的卷积核到底有哪些魔法。下面我们一起来领略下一些简单但不简单的卷积核的魔法。

1、啥也不做

      哈哈,大家可以看到啥了吗?这个滤波器啥也没有做,得到的图像和原图是一样的。因为只有中心点的值是1。邻域点的权值都是0,对滤波后的取值没有任何影响。

卷积核与特征提取_卷积层特征各层如何保存

下面我们动点真格的。

2、图像锐化滤波器Sharpness Filter

       图像的锐化和边缘检测很像,首先找到边缘,然后把边缘加到原来的图像上面,这样就强化了图像的边缘,使图像看起来更加锐利了。这两者操作统一起来就是锐化滤波器了,也就是在边缘检测滤波器的基础上,再在中心的位置加1,这样滤波后的图像就会和原始的图像具有同样的亮度了,但是会更加锐利。

卷积核与特征提取_卷积层特征各层如何保存

我们把核加大,就可以得到更加精细的锐化效果

卷积核与特征提取_卷积层特征各层如何保存

另外,下面的滤波器会更强调边缘:

卷积核与特征提取_卷积层特征各层如何保存

主要是强调图像的细节。最简单的3×3的锐化滤波器如下:

卷积核与特征提取_卷积层特征各层如何保存

大家应该也看出来了,锐化滤波器实际上就是计算当前点和周围点的差别,然后将这个差别加到原来的位置上。

3、边缘检测Edge Detection

      我们要找水平的边缘:需要注意的是,这里矩阵的元素和是0,所以滤波后的图像会很暗,只有边缘的地方是有亮度的。

卷积核与特征提取_卷积层特征各层如何保存

 为什么这个滤波器可以寻找到水平边缘呢?因为用这个滤波器卷积相当于求导的离散版本:你将当前的像素值减去前一个像素值,这样你就可以得到这个函数在这两个位置的差别或者斜率。下面的滤波器可以找到垂直方向的边缘,这里像素上和下的像素值都使用:

 卷积核与特征提取_卷积层特征各层如何保存

再下面这个滤波器可以找到45度的边缘:取-2不为了什么,只是为了让矩阵的元素和为0而已。

卷积核与特征提取_卷积层特征各层如何保存

那下面这个滤波器就可以检测所有方向的边缘:

卷积核与特征提取_卷积层特征各层如何保存

为了检测边缘,我们需要在图像对应的方向计算梯度。用下面的卷积核来卷积图像,就可以了。但在实际中,这种简单的方法会把噪声也放大了。另外,需要注意的是,矩阵所有的值加起来要是0.

卷积核与特征提取_卷积层特征各层如何保存

4、浮雕Embossing Filter

      浮雕滤波器可以给图像一种3D阴影的效果。只要将中心一边的像素减去另一边的像素就可以了。这时候,像素值有可能是负数,我们将负数当成阴影,将正数当成光,然后我们对结果图像加上128的偏移。这时候,图像大部分就变成灰色了。

      下面是45度的浮雕滤波器

 卷积核与特征提取_卷积层特征各层如何保存

我们只要加大滤波器,就可以得到更加夸张的效果了

卷积核与特征提取_卷积层特征各层如何保存

这种效果非常的漂亮,就像是将一副图像雕刻在一块石头上面一样,然后从一个方向照亮它。它和前面的滤波器不同,它是非对称的。另外,它会产生负数值,所以我们需要将结果偏移,以得到图像灰度的范围。

卷积核与特征提取_卷积层特征各层如何保存

卷积核与特征提取_卷积层特征各层如何保存

A:原图像。B:锐化。C:边缘检测。D:浮雕

5、运动模糊Motion Blur

      运动模糊可以通过只在一个方向模糊达到,例如下面9×9的运动模糊滤波器。注意,求和结果要除以9。

卷积核与特征提取_卷积层特征各层如何保存

这个效果就好像,摄像机是从左上角移动的右下角。

  看了一些好玩的滤波器后我们来看均值模糊:

均值模糊Box Filter (Averaging)

       我们可以将当前像素和它的四邻域的像素一起取平均,然后再除以5,或者直接在滤波器的5个地方取0.2的值即可,如下图:

卷积核与特征提取_卷积层特征各层如何保存

 可以看到,这个模糊还是比较温柔的,我们可以把滤波器变大,这样就会变得粗暴了:注意要将和再除以13.

卷积核与特征提取_卷积层特征各层如何保存

所以,如果你想要更模糊的效果,加大滤波器的大小即可。或者对图像应用多次模糊也可以。

卷积核与特征提取_卷积层特征各层如何保存

卷积核与特征提取_卷积层特征各层如何保存

高斯模糊

      其实模糊滤波器就是对周围像素进行加权平均处理,均值模糊很简单,周围像素的权值都相同,所以不是很平滑。高斯模糊就有这个优点,所以被广泛用在图像降噪上。特别是在边缘检测之前,都会用来移除细节。那么下面我们就看看高斯模糊的权值是如何分配的。

正态分布的权重
卷积核与特征提取_卷积层特征各层如何保存

  
正态分布显然是一种可取的权重分配模式。在图形上,正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小。计算平均值的时候,我们只需要将”中心点”作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值。

高斯函数
卷积核与特征提取_卷积层特征各层如何保存

  上面的正态分布是一维的,图像都是
二维的,所以我们需要二维的
正态分布

正态分布的密度函数叫做”高斯函数”(Gaussian function)。它的一维形式是:

卷积核与特征提取_卷积层特征各层如何保存

其中,μ是x的均值,σ是x的标准差。因为计算平均值的时候,中心点就是原点,所以μ等于0。即:

卷积核与特征提取_卷积层特征各层如何保存

根据一维高斯函数,可以推导得到二维高斯函数:

卷积核与特征提取_卷积层特征各层如何保存

有了这个函数 ,就可以计算每个点的权重了。

  假定中心点的坐标是(0,0),那么距离它最近的8个点的坐标如下:
卷积核与特征提取_卷积层特征各层如何保存

更远的点以此类推。下面就是5*5的高斯滤波器和平滑效果:

 卷积核与特征提取_卷积层特征各层如何保存

卷积核与特征提取_卷积层特征各层如何保存

 

转自:https://www.cnblogs.com/magic8sky/p/6104377.html 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/166459.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • python 和 java 到底该学哪个?

    python 和 java 到底该学哪个?随着互联网的高速发展,越来越多的人选择加入到IT行业,而近年来,编程语言界也可以说是百花齐放……那么,对于刚入行的小伙伴来讲,到底选择哪种编程语言学习更好呢?是一直独占鳌头的Java,还是后来居上的Python,或者近两年一直很热门的大数据、人工智能呢?在做选择前,我们首先要现有个概念认知,就是Java、Python和所谓大数据、人工智能,并不是一个同类。Java、Python是计算机的编程语…

  • phpstorm Linux 激活码【在线破解激活】「建议收藏」

    phpstorm Linux 激活码【在线破解激活】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • TIA PORTAL_Tia v17

    TIA PORTAL_Tia v17Coprocessor

  • js匿名函数传参_java 匿名函数

    js匿名函数传参_java 匿名函数varinitSample=(function(){ varwysiwygareaAvailable=isWysiwygareaAvailable(), isBBCodeBuiltIn=!!CKEDITOR.plugins.get(‘bbcode’); returnfunction(paramId){ vareditorElement=CKEDITO

  • python环境搭建和pycharm的安装配置及汉化(零基础小白版)[通俗易懂]

    python环境搭建和pycharm的安装配置及汉化(零基础小白版)[通俗易懂]前言:写这篇文章主要是介绍一下python的环境搭建和pycharm的安装配置,适合零基础的同学观看。这篇文章你会学到python的环境搭建和python比较好用的IDEpycharm的安装与基础配置。运行环境:window64位操作系统。没想到这么多的人看这篇文章,并且接连不断给我发邮箱,问问题,这篇文章不是用markdown写的,不好改,我重新写了一份,放在我的博客里面,这里是地址…

  • java json decode 中文_关于json_decode乱码及NULL的解决方法「建议收藏」

    java json decode 中文_关于json_decode乱码及NULL的解决方法「建议收藏」写接口的同学应该会经常遇到数据格式的转换,这时候必不可少的两个函数就是json_encode()和json_decode()。这两个函数使用的时候有很多的主要事项,在这里我来说一下json_decode()。json_decode():对JSON格式的字符串进行解码,接受一个JSON格式的字符串并且把它转换为PHP变量。(1)将数据转换成数组之后,打印会显示NUll:原因之一json_dec…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号