【卷积和图像滤波器】计算机视觉学习笔记知识点总结,简单易懂入门

发布于:2022-11-04 ⋅ 阅读:(787) ⋅ 点赞:(0)

Convolutions&Image denoising

(卷积和图像去噪)


卷积贯穿着很多计算机视觉的任务,包括现在热门的深度学习网络——卷积神经网络。

在这篇文章中,主要介绍卷积的线性操作,通过理解卷积在图像去噪的应用,引出高斯函数,深入理解卷积。

(一)Types of Images

(图像类型)
在这里插入图片描述

1.Binary

(二进制图像)
在一个分辨率为pq(宽度高度)的图像中,每一个元素要么是0(黑色),要么是1(白色),每一个点用1bit表示
在这里插入图片描述

2.Gray Scale

(灰度图像)
在一个分辨率为p*q的图像中,每个像素点的取值有256种,每一个点用1byte表示
在这里插入图片描述

3.Color

(彩色图像)
在一个分辨率为p*q的图像中,一个点有三个通道,分别是R、G、B,每个通道上元素的取值有256种,因此每个点用3byte表示
在这里插入图片描述

(二)Convolution

(卷积操作)
噪声点指该点相比周围的像素点而言比较突兀

去除噪声点的一种最直接的思想就是把该点和周围的点平均一下,即用周围点的加权平均值作为该点的值。权值称为卷积核,也成为滤波核。我们通过卷积核可以得知该点周围的点所占的权重是多少。

卷积核模板一般是奇数的,33、55、7*7

具体是如何做的呢?
在这里插入图片描述

假设现在有一个图像f和一个卷积核g。

首先卷积核需要进行翻转(图像上的卷积核已经完成了翻转),然后放到图像当中,从左上角开始对这个点进行运算。

具体运算方法就是将卷积核模板的值(权值)跟对应位置的图像的像素值进行相乘,将相乘的结果累加起来我们就得到了新的图像(去噪后的图像)上这个点的值,这就是一个点的卷积操作的全过程。对于整个图像的卷积操作就是将卷积核平移,让每个点都进行一次卷积操作。

解释公式各符号的含义:k,l的取值有-1、0、1;[m,n]为卷积核的中心点在图像上的坐标;f[x,y]为该点的图像的像素值;m-k与n-l实现卷积核的翻转;g[x,y]为该点的卷积核的值,g[0,0]为卷积核的中心点的值。

(三)Properties

(卷积操作的性质)

1.Linearity

(线性)
f1,f2两张图像,先求和再卷积与每张图像卷积之后再求和是一样的。

2.Shift invariance

(平移不变性)
先对图像平移再卷积与先对图像卷积再平移是一样的,因为卷积操作是对周围小邻域进行操作,平移并没有改变周围点的值。

推导出结论:任何平移不变的操作都可以用卷积操作

3.Else Properties

(其他性质)
在这里插入图片描述

(四)Annoying details

(头疼的问题):图像填充
对图像的边缘进行卷积时,卷积核的点并没有全部在图像里面,所以在真实运算时,我们就算不了图像边缘的值。

在这里插入图片描述

因此在计算前,如果要保证卷积的图像和原图像一样大,就要将图像扩大一圈,填充后卷积核的每个点都存在了对应的像素值,如果不填充卷积的图像就比原来的图像小。

如何让卷积输入和输出有一个固定的大小,防止多处理几次卷积后图像就没了。

1.clip filter(black)

最常用的方法就是给边缘的周围都补上0,这种方法在深度学习的卷积神经网络常用。但由于填充的是0,边缘周围和0进行平均都会接近于黑色

2.wrap aroud

园筒状,把图片绕成一个环状。

3.copy edge

直接把图像边缘的像素拉伸

4.reflect across edge

填充边缘的镜像

(五)Practice with linear filters

(图像滤波器练习)
1.原图
在这里插入图片描述
2.左移:右边的点移到自身
在这里插入图片描述
3.平滑(去噪):该点与周围的点形成一体,整个图像就没有那么突兀了,所以就显得很模糊(马赛克)
在这里插入图片描述
4.锐化:棱角更加分明
在这里插入图片描述
锐化的原理:

在这里插入图片描述

(六)Gaussian Kernel

(高斯函数)

如果卷积核模板每个点的值是一样的,卷积核是个方形,就会产生振铃效果,即卷积后的图像种存在一些不像原图的纹理。

在这里插入图片描述

想要去除振铃效果,就要使卷积核中心的点权重最高,离中心越远的点权重越小,使用高斯函数
在这里插入图片描述

1.性质

(1)要求卷积核模板所有的权重之和为1。

高斯函数构成的图像的面积为1

设想如果卷积核的所有点的值相加不等于0,比如一个灰度图像的所有点的值都是255,去噪后该图像的值应该保持不变,但是如果33卷积核的每个点的值都是0.1(相加为0.9),经过滤波后,图像上每个点的值为2550.9。

(2)卷积核的窗口大小是5*5且σ的值为1,这两个值是指定的。

有了这两个值之后才可以计算卷积核每个点的值

(3)计算完之后,要对所有的值进行归一化。

比如在上图中,实际卷积核某点的值=(G/G1+G2+…+Gn)* 1/5*5。

(4)高斯核可以分解,分解后计算更加简单
在这里插入图片描述

在这里插入图片描述
分解前,图像每一个点计算的复杂度O( m 2 {m^2} m2),整个图像的复杂度就是( n 2 m 2 {n^2m^2} n2m2

分解后,m×m的卷积核变成1×m和m×1两个,那么每一个点计算的复杂度是O(m+m),整个图像的复杂度就是( n 2 m {n^2m} n2m

(4)用方差为σ的高斯核进行两次卷积,与用方差为√2σ的核进行一次卷积是一样的。

但是用标准差为σ的高斯核进行两次卷积复杂度更低,计算更快

2.标准差σ

等于方差(每个样本值与全体样本值的平均数之差的平方值的平均数)的算数平方根

σ越小表示数据越集中,图像呈现出来越细长—>窗口大小一定,σ越小中间点的权重越大,滤波后平滑的效果弱

σ越大图像越扁—>窗口大小一定,σ越大中间点的权重越小,滤波后平滑的效果强,图像越模糊
在这里插入图片描述

3.窗口大小

窗口越大,归一化时分母越大,靠近中心的点的权重越小,滤波后平滑的越厉害

窗口越小,归一化时分母越小,靠近中心的点的权重越大,滤波后平滑结果就没那么明显
在这里插入图片描述

4.两者默认关系

窗口大小=3σ*2+1

如果σ=1,窗口大小设置为7*7

如果σ=2,窗口大小设置为13*13
在这里插入图片描述
值得一提的是,在计算机视觉中卷积和高斯贯穿始终,高斯一旦放在卷积里,就可以拓展出好多东西,包括卷积神经网络

(七)Noise

(噪声)

1.Gaussian noise

(高斯噪声)

(1)图像实际点的值等于该点像素值+高斯噪声(随机采样出来的值)

(2)在噪声标准差比较小的时候有效

高斯噪声比较小,高斯滤波器的标准差小的就可以去噪;高斯噪声比较大,高斯滤波器的标准差也要变大才能很好的去噪

(3)不同噪声点之间是独立的,互不影响

用高斯滤波器解决高斯噪声的问题

在这里插入图片描述

2.Salt and pepper noise

(椒盐噪声)

3.Impulse noise

(脉冲噪声)

这两种噪声点的产生是随机的,就是突然出现一个白点或黑点,把原来的像素点覆盖。

用高斯滤波器并不能很好的去噪,使用中值滤波器

在这里插入图片描述

(八)Median filter

(中值滤波器)

相比高斯滤波器模板,中值滤波器模板没有权值,那如何计算呢?

将图像的像素点的值从小到大排序,选择中间的点作为该点滤波后的值

中值滤波没有产生新的像素值

在这里插入图片描述
显然中值滤波不是线性操作,中值滤波器不是线性滤波器

中值滤波器vs高斯滤波器

在这里插入图片描述
如果中值滤波器的窗口变大,在更大范围的值之间去选择,就会导致图像变模糊

中值滤波vs加权平均求和
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到