我是靠谱客的博主 暴躁服饰,最近开发中收集的这篇文章主要介绍产生高斯白噪声的matlab代码_机器视觉学习(二)高斯卷积,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


一、图像类型

二、图像去噪

三、卷积的三种模式

四、高斯卷积


一、图像类型

1、二值图像(Binary Image)

一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。

二值图像

2、灰度图像(Gray Image)

灰度图像矩阵元素的取值范围通常为[0,255]。因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像。“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。在某些软件中,灰度图像也可以用双精度数据类型(double)表示,像素的值域为[0,1],0代表黑色,1代表白色,0到1之间的小数表示不同的灰度等级。二值图像可以看成是灰度图像的一个特例。

灰度图像

3、RGB彩色图像(Color Image)

RGB图像分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。RGB图像的数据类型一般为8位无符号整形,通常用于表示和存放真彩色图像,当然也可以存放灰度图像。

RGB图像

二、图像去噪

噪声点,其实在视觉上看上去让人感觉很难受,直观理解就是它跟周围的像素点差异比较大,显得比较突兀,视觉看起来很不舒服,这就是噪声点。那如何去除噪声点呢?

一个自然而然的想法就是把每个像素点与周围其他像素点加权平均一下。而这个权重就叫做卷积核。当然也可以直接求平均,如下图所示。

均值滤波(卷积核)

那么对图像卷积(滤波)是如何进行的呢?加入现在有一个卷积核g,在对图像进行卷积操作时首先要对卷积核进行一个翻转操作,先水平翻转,再进行竖直翻转。

然后,将卷积核覆盖区域与卷积核对应位置相乘,最后相加,即得到卷积核中心位置对应的像素值。如图中就是当前位置的卷积核与覆盖区域相乘相加后得到e所在位置的像素值,这就是一个点的卷积操作。而对于一张图像的卷积操作就是将卷积核以窗口的形式在图像上进行左左到右,从上到下进行滑动,由此就会得到一张新的图像。这就是卷积(滤波)操作完成去噪的过程。

那么卷积操作有什么特性呢?

  • 线性:
    就是
    两张图像先求和再卷积核先卷积再求和最终的结果是一样的。
  • 平移不变形:

1、噪声的分类

  • 椒盐噪声,就是黑点,白点。处理方式:中值滤波

  • 脉冲噪声,只有白点
  • 高斯噪声

这里主要介绍高斯噪声,高斯噪声数学模型是一个独立的加和模型

即认为图像是由真实图像+高斯噪声组成的,高斯噪声的产生一个是由于采集器附加的噪声,另一个是由于光学问题带来的噪声。将两者合起来就是最终看到的带有噪声的图像。因此对于高斯噪声就有了这样的假设:首先噪声的产生是相互独立的,而且服从均值为0的正态分布。

在应对高斯的噪声的处理时,自然就会想到高斯滤波,但是它也是有成本有代价,虽然它可能滤除噪声,但是它也会衰减部分信号,比如轮廓信息。

三、卷积的三种模式

1、full

橙色部分为image, 蓝色部分为filter。full模式的意思是,从filter和image刚相交开始做卷积,白色部分为填0。

2、same

当filter的中心(K)与image的边角重合时,开始做卷积运算,可见filter的运动范围比full模式小了一圈。注意:这里的same还有一个意思,卷积之后输出的feature map尺寸保持不变(相对于输入图片)。当然,same模式不代表完全输入输出尺寸一样,也跟卷积核的步长有关系。same模式也是最常见的模式,因为这种模式可以在前向传播的过程中让特征图的大小保持不变,不需要精准计算其尺寸变化(因为尺寸根本就没变化)。

那么既然为了保持跟原图一样大小,那么周围的填充方式:

  • 在深度学习中,经常使用的是用0填充。
  • 常数填充
  • 镜像填充
  • 复制填充...等

3、valid

当filter全部在image里面的时候,进行卷积运算,可见filter的移动范围较same更小了。

四、高斯卷积

首先介绍几种卷积(滤波):

恒等变换

平移变换

均值滤波(模糊)

锐化

那么接下来,使用原图-平滑之后的图=边缘图,如果再把得到的边缘图加到原图上就会得到一个锐化图。其实下面这两幅图就是对上面锐化过程的分解。

原图-平滑图=边缘图

原图+边缘图=锐化图

对于这样的锐化结果使用数学表达式进行解读:

其中

表示原图,
表示平滑的卷积核,
表示单位脉冲卷积核,就是周围一圈都是0,中间是1。有上述公式可以看出锐化其实就是将原图与一个卷积核进行卷积得到的结果,对应的卷积核如下,通过一个单位脉冲卷积核与一个高斯卷积核相减约等于得到拉普拉斯卷积核。

原图可以看做是卷积做了恒等变换,平滑可以看做是均值滤波,所以锐化可以看做:

其实对于平滑来说,卷积核中权重全都是

,显然这是不合理的。在这个过程中会损失图像的高频信息产生
振铃效应。也就是卷积后的图像产生了一些水平和竖直方向的条状。图像处理中,对一幅图像进行滤波处理,若选用的 滤波器具有陡峭的变化,则会使滤波图像 产生“振铃”,所谓“振铃”,就是指输出图像的灰度剧烈变化处产生的震荡,就好像钟被敲击后产生的空气震荡。

产生这种现象的原因在于由于卷积过程中引入了本来图像上没有的信息,所以这并不是我们想要的结果,产生这种原因的根源就是因为卷积的模板是方的,也就是卷积核中的权重都是一样的,想要出除这种效应,就需要对卷积的模板进行更换,也即是将卷积核模板调整的更加平滑一些。比如下面这张图,距离中心位置越远相应的权重就应该更小。这样的设置也更加合理一些。这就是高斯核。

二维高斯函数公式

这里需要注意的是在高斯核中,约束条件是所有权重相加和为1,这样做的目的是防止卷积后数据溢出,因为无论RGB还是灰度图都在

内。当然也不希望所有权重的和小于
,假如是一张全白的图也即是像素值全为255,经过一个
,权重都为
的卷积核,得到输出结果却是
,显然这也不是想要的结果。因此添加限制条件为权重和为

在高斯核里有这样几个参数:1窗口大小,2

决定每个位置的权重,3归一化。这就是产生高斯模板的过程。接下来理解一下
,其实就是方差,越大就会散布的越开,也即是
越大越扁,
越小越突出,因为总面积要为1。

同理,也可以通过固定方差

去改变窗口大小,当方差固定时,也就是说这个突出的最高点位置是相同的,而总面积又是相同的,因此对于图像的影响显然是不言而喻的。也就是说当方差固定时,窗口越小平滑的就越不明显,就会导致图像比较模糊。

这样一来,就会涉及到两个参数的选取问题,一般来说有个经验性的值。窗口大小为

  • 高斯滤波,非常重要,贯穿整个计算机视觉,甚至现在的神经网络提取到的某些特征跟高斯滤波输出的结果都十分相似。其实高斯滤波就是滤除高频信息,是一个低通滤波器。
  • 高斯卷积的另外一个特性就是对一副图像进行连续两次
    的高斯卷积输出结果等价于使用
    的高斯卷积一次的输出结果。这个满足勾股定理的,比如连续的两次高斯卷积核大小为
    可以使用
    高斯卷积核代替。大致意思就是两个小高斯核的连续卷积可以用一个大的高斯核代替。
  • 高斯核还可以分解。

现在就举个例子解释高斯核分解,假设有一个高斯卷积核与一个3x3大小的图像卷积得到应该是一个点。那么此时将高斯核拆解为两个一维向量,分别与图像进行卷积操作。它的主要作用就是加速。

如果使用一个mxm的卷积核对一副nxn大小的图像进行卷积,它的算法复杂度是

而使用分解卷积算法复杂度
【其实这是x或者y一个方向上的复杂度】,也就是说如果对核进行分离,那么复杂度就能够降低一个等级,这是一件很有意义的事情。从这里也可以看出来如果使用小核进行卷积也能够加速运算。

这些东西在深度神经网络中也会遇到,但是这里高斯卷积是完全等价的,在深度学习中不一定保证是等价的。

我是尾巴~

每日一句毒鸡汤:你全力做到的最好,可能还不如别人随便搞搞。

本次推荐:获取Emoji的在线网站

Home of Emoji Meanings ​emojipedia.org

继续加油~

最后

以上就是暴躁服饰为你收集整理的产生高斯白噪声的matlab代码_机器视觉学习(二)高斯卷积的全部内容,希望文章能够帮你解决产生高斯白噪声的matlab代码_机器视觉学习(二)高斯卷积所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部