[关闭]
@Bruce1Tone 2020-05-22T08:52:59.000000Z 字数 5596 阅读 652

菜鸡的计算机视觉与模式识别

计算机视觉 模式识别

课程基本信息

授课教师:
徐行 副教授;xing.xu@uestc.edu.cn
沈复民 特聘研究员 fumin.shen@gmail.com
办公室:主楼b1-204
实验室:创新中心3楼

课程包括
7个coding projects+期末
期末考察为课题报告30%

参考资料
- SVM支持向量机


[教材]数字图像处理与机器视觉Visual C++与Mat lab实现.张铮.人民邮电出版社

第0章 数字图像处理概述

数字图像

定义

数字图像即位图,其坐标离散,且表示该图像的函数f(x,y),其中f,x,y都为非负有限离散
一般分为两类:

位图:数字阵列来表示,如bmp jpg gif
矢量图:矢量数据库表示

分类

二值图像

仅有黑白像素的图,0表示黑色,1表示白色

灰度图像

每个像素点用L表示灰度值,可能有256种或种取值,k=1时退化为二值图像

RGB图像

Red Green Blue
一般的8位颜色深度的图像,用8位二进制数据表示一个原色,但是为了书写方便,一般用2位16进制数表示,按RGB的顺序依次书写。

例如:
 0x00FF00:表示纯绿色
 0x000000:表示纯黑色
其中bmp就是未经压缩的原始文件,直接存储RGB数据,也成为了24位真彩色图像

还有采用YCbCr格式存储颜色的方式,即

Y:亮度
Cb:蓝色偏移
Cr:红色偏移

其中这三个参数是非对称的,Y的信息最多

索引图像

将各种颜色的RGB值存储在调色板(Palette)/颜色查找表(LUT,Look Up Table)中,使每个像素存储的不是实际的RGB值,而是该种颜色在调色板中的索引位置。
当调色板的颜色数量没有减少时,该压缩为无损压缩

空间和灰度级分辨率

图像的空间分辨率Spatial Resolution

单位:ppi: pixels per inch

灰度级/辐射剂量分辨率Radiometric Resolution

灰度级分辨率又称为色阶,即L,表示可分辨的灰度级数目

数字图像处理预备知识

1. 邻接性Adjacent

邻域:对于像素P
 它的4邻域:
 它的8邻域:
 它的对角邻域(4个):

2. 连通性Contiguous

通路Path:P到Q有两两邻接的一系列像素连在一起,即称该像素序列为通路。如果P=Q则成为闭合通路,这里有4通路和8通路。
连通分量:像素集S中有任意像素P,S中连通到该像素的像素集叫做S的连通分量
连通集:如果S中仅有一个连通分量,则S成为连通集

3. 区域和边界

区域Region:如果R是一个像素集,且它还是一个连通集,则称R为一个区域
边界Boundary:(这里还没完全搞清楚概念)

距离度量

距离的定义:
如果函数D满足以下三个条件,则D可以被称为距离函数或度量:

  1. D(P,Q) ≥ 0,当且仅当P=Q时有D(P,Q)=0
  2. D(P,Q) = D(Q,P)
  3. D(P,Q) ≤ D(P,R) + D(R,Q)

常见的几种距离函数:

基本的图像操作

点运算和邻域运算

点运算:对图像中的每一个像素点逐个进行同样的灰度变换运算。
邻域运算/邻域滤波;对图像中的每一个小范围(邻域)内的像素进行灰度变换运算

线性和非线性操作

如果算子H对于任意两幅图像、和任意两个标量a和b都满足:


则称H为线性算子。一般来说,线性操作相对稳定,例如滤波中的平均平滑 高斯平滑 梯度锐化等都是线性运算,线性运算用途最广。


[教材]计算机视觉——算法与应用 Richard Szeliski.清华大学出版社

第二章 图像形成

几何基元和变换


课堂笔记

图像滤波Image Filter

教材3-2章节

三种滤波

空域的图像滤波

 将滤波器/滤波算子/核函数加到对应位置计算得到输出图像:
  将滤波器与像素点一一对应,分别相乘,最后相加,得到一个值返回中心位置
滤波器原理
correlation滤波函数:


其中f[k,l]就是滤波算子

图像坐标系是以左上角为原点(0,0)
滤波器坐标系是以中心点为原点(0,0)

盒式滤波器box filter

即方框滤波器,

作用是使画面亮度平均,可以用于图像平滑化

mean filter/均值滤波是特殊的box filter
所有点的权重相等的盒式滤波器,就成了均值滤波器

左平移算子

Sobel算子

效果是得到Vertical Edge(竖直边缘检测),横向移动,最后要求绝对值

另外还有一种Sobel算子,纵向移动,最后得到Horizontal Edge(横向边缘检测)

所有元素的和为0

锐化的滤波算子

sharpening filter

所有元素的和为1

凹凸滤波算子

效果为凹版/凸版的浮雕

算子是指向性、非对称的

运动模糊算子

算子具有方向性

correlation协相关 and convolution卷积

卷积函数

correlation协相关操作时,对于滤波算子是相加
convolution卷积操作时,对于滤波算子是相减

高斯滤波器Gaussian

高斯滤波器

效果是高斯模糊,实际上是过滤了图像中的高频分量,相当于一个low-pass filter/低通滤波器

高斯滤波器具有separability/分离性,如下图所示:
separability
分离出来的x轴和y轴两个滤波器可以分别进行滤波,得出的结果和单独的高斯滤波器结果一致

  • 在2D卷积中,因为需要4个循环嵌套,所以速度较慢。
    而利用滤波核的分离性,将之变成1D的滤波核,速度则会快的多
  • 一般滤波核为奇数×奇数,例如5×5的滤波核,半径就为2

频域的图像滤波

图像的频率

图像频域中的分量:
高频:指图像当中亮度/灰度变化剧烈的地方,比如轮廓边缘等
低频:指图像中变化小的地方,比如大块的色块等

中值滤波器Median Filter

非线性滤波器,取领域的中值而非平均值

 作用:祛除椒盐噪声Salt and Pepper,即不规则的雪花点

图像混叠Aliasing

即将图像A的高频部分和图像B的低频部分混叠在一起,远看是图像B(低频部分),近看是图像A(高频部分)

图像混叠问题Aliasing Problem
在直接降采样subsampling的时候,会导致图像的混叠问题,如下图所示
降采样问题

根据奈奎斯特采样定律:采样频率至少为最高频率的两倍以上

所以,在降采样的时候,需要过滤掉多余的高频信息。
因此,解决方法是:

图像的傅里叶变换Fourier Transform

频谱图

频谱图定义:

频谱图的每一个点,对应一条正弦/余弦函数,且一张图像为整个重复的周期函数中的一个周期
频谱图中,分为原始图像中心化图像

  • 原始图像:中心为高频信号,四周为低频信号,亮度值代表振幅
  • 中心化图像:将1-3、2-4象限对换之后,得到中心化的图像。
      中心为低频信号,四周为高频信号,亮度值代表振幅,原点处为直流DC信号

在之后的叙述中,如果未说明,默认都是中心化后的频谱图

频谱图的能量分布

  频谱图的能量主要分布在低频部分,而高频的能量较少

频谱图的方向分布

  原始图像的变化方向体现在频谱图就为法线方向

频谱图的变化性与不变性

  无论原始图像的位置如何平移频谱图相位图都不会有任何变化
  当原始图像进行旋转时,两个图像都要发生改变

离散傅里叶变换 DFT, Discrete Fourier Transform

傅里叶级数Fourier Series
 所有的数据都可以用一系列正弦、余弦波叠加得到。而傅里叶级数就是他们一系列的系数(振幅)
二维傅里叶分解
 先对每一做傅里叶分解,得到一系列长度相同的傅里叶系数向量。再将每一个向量的系数进行傅里叶变化即可
DFT与频谱图
 上一步得到的矩阵就是未中心化频谱图


边缘检测

边缘的定义是:亮度值的变化的一阶导数幅值最大的地方(但注意,如果局部内还有更大的,则不是边缘)

但是,由于图像当中存在噪声,会存在假边缘,解决方法是:

先进行高斯模糊,将噪声过滤掉。
再查找亮度函数的波峰,即为边缘

以x方向查找边缘为例:
方法一

查找边缘

上图中f原始图像g高斯核函数
1. 先构建高斯核函数 g
2. 对图像进行卷积滤波,计算出滤波后的函数f*g
3. 将滤波降噪后的函数对x轴求导数,得到
4. 找到导数的波峰就是边缘所在位置

方法二
简化后的操作方式

查找边缘2

根据方法一进行改进,将高斯核函数先对x求导,得到新的核函数,再进行滤波
1. 将高斯函数 gx轴进行求导,得到新的核函数
2. 利用新的核函数进行滤波,直接得到卷积滤波后的图像
3. 找到导数的波峰就是边缘所在位置

pB边缘检测器 pB Boundary Detector

原理:
 对亮度brightness颜色color纹理texure三个层面进行边缘查找,最后合成得到最终结果

Canny边缘检测器

特征点与角点

角点

三类区域的定义

在检测过程中,我们使用滑窗作为检测单位


Projects

project1

实验要求:
将不同图像进行高通滤波低通滤波,然后进行图像混叠

PIL图像处理库

基本操作

  1. from PIL import Image
  2. img = Image.open(xxx.bmp) #打开文件
  3. img = Image.open(xxx.bmp).convert('L') #转换成灰度图像(L)
  4. img.show() #显示图像
  5. img.save(xxx.jpg) #存储图像

滤波函数

  1. from PIL import ImageFilter
  2. img_blur = img_filter(ImageFilter.BLUR) #模糊滤波
  3. #高通滤波
  4. def HighPass(self,size):
  5. crow = int(self.rows/2)
  6. ccol = int(self.cols/2)
  7. self.fshift[crow-size:crow+size, ccol-size:ccol+size] = 0

傅里叶变换

  1. #对图像傅里叶变换
  2. def FT(self):
  3. f = np.fft.fft2(self.img)
  4. self.fshift = np.fft.fftshift(f)
  5. #对图像傅里叶逆变换
  6. def IFT(self):
  7. ishift = np.fft.ifftshift(self.fshift)
  8. iimg = np.fft.ifft2(ishift)
  9. self.iimg = np.abs(iimg)

project2 SIFT特征点提取


灵感记录
原始图像+随机噪声=加密图像
加密图像-随机噪声=原始图像
【混沌加密】

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注