图像知识分享

来源:互联网 发布:淘宝店怎么推广最有效 编辑:程序博客网 时间:2024/06/05 18:00

1.图像是什么?
图像是像素组成的矩阵,根据图像类别的不同:彩色图像的像素是由RGB三个颜色分量组成,灰度图像的像素是由灰度值的大小来表示,二值图像是每个像素只取0和1两个值。在图像分类和识别等研究领域一般只关心物体的形状并不关心其颜色,因此通常将彩色图像转化为转化为灰度图像进行处理,从而减少计算量。
这里写图片描述
从上图可以看出:对于图像分类和识别而言,灰度图同彩色图像相比只是丢掉了颜色信息,对于目标的细节信息的丢失并不十分严重。因此对于一般类别间差别较大的图像分类和识别,可以将其转化灰度图像进行处理,从而减少图像处理的时间和空间复杂度。
2. 图像特征
理想图像特征一般具有可重复性、可区分性、稳定性和高效性的特点,并且能够对图像的亮度变化、尺度变化、旋转变化和仿射变换等具有不变性的特点。其中最常用的图像特征点有角点、边缘等。我们可以发现对于不同的物体间一般都具有不同的角点和边缘,同时角点和边缘对于图像的亮度变化、尺度变化、旋转变化等具有不变性,并且更加的稳定,因此通常选取这样的特征点作为图像的特征。
这里写图片描述
其中根据特征点检测算子的作用范围和特征提取的范围,将图像特征分为全局特征和局部特征。
2.1 全局图像特征
全局特征是指特征点检测算子和特征提取范围作用于整个图像上而得到的一种统计特征量,其中最常用的全局特征有:颜色特征(颜色直方图)、纹理特征(共生矩阵)、边缘特征等。
颜色直方图:颜色直方图是用于描述不同色彩在整幅图像中所占的比例,其对图像的旋转变化、平移变化和尺度变化具有不变性。然而,由于其对图像的区域方向、形状、大小和空间位置不敏感,因此无法描述图像的目标和物体。
这里写图片描述
如上图:两幅图像具有相同的颜色直方图却具有不同的语义,其主要原因是颜色直方图并没有考虑图像的语义信息。
在图像分类和识别过程中,一般采取统计量来表达直方图。
这里写图片描述
灰度共生矩阵:灰度共生矩阵是用于描述图像的纹理特征的方式,其是计算两个位置的像素的联合概率密度分布,其反映出图像灰度关于方向、相邻关系、变化幅度的综合信息,其用于分析像素的局部模式和排列规则。其一般考虑0°、45°、90°、135°、180°、225°、270°、315°这8个方向的像素联合分布。如下图所示,其描述的是0°方向,图像I的灰度共生矩阵GLCM的结果(其是将图像的灰度量化为8个level).
这里写图片描述
根据得到的灰度共生矩阵可以求得像素间的归一化共生频率(Pij),最终可以通过归一化频率得到上面7个统计量。
边缘特征:边缘检测旨在发现一副图像中有明显变化的边缘或者不连续的区域,而这些边缘通常是决定一个物体或者目标的区域,其也是我们识别和分类物体所关注的。边缘检测其目的过滤掉不需要的图像信息,而保留图像重要的结构信息,使得图像的分类和识别工作大大的简化。实际情况是:边缘检测的结果往往会因为噪音等原因,使得检测出来的边缘有冗余或者断裂。
canny算子边缘检测:canny边缘检测的原理是:首先通过一个高斯滤波模板对图像进行轻微的平滑,从而过滤掉图像中存在的噪音,然后对平滑后的图像进行水平和垂直方向的边缘检测,其原理是使用差分算子作用于平滑图像上得到图像的边缘,在检测边缘的时候其采用了高低阈值法:1.如果某个中心像素的亮度变化超过高阈值则保留作为边缘像素。2.如果某个中心像素的亮度变化低于低阈值则丢弃。3.如果某个中心像素的变化介于低阈值与高阈值之间,只有该像素临界一个高像素时才被保留作为一个边缘像素。最终根据高低阈值法,可以得到一个二值的边缘图像。
这里写图片描述
这样的边缘特征一般不用于直接分类,多用于图像的匹配,其通过两幅图像间边缘的匹配率来发现两幅图像的相似性。(其主要原因:边缘图像其含有的边缘像素任然较多,如果通过提取其纹理或者颜色这样的全局特征会丢失大量的信息,如果对每个边缘像素提取领域信息来构造局部图像特征,特征点有太多,对于局部图像特征,一般采用图像中的角点)
小波图像特征(wavelet transform):首先对图像进行归一化处理,然后对归一化的图像进行平移不变的小波变化,计算每个子段系统的小波能量特征,并降序排序这些特征,最后取前M个能量特征作为目标图像的特征向量。(其本质上还是去提取图像的纹理特征,并且已经证明小波变化特征对于处理中英文字符识别具有很高的准确率)
2.2 局部图像特征
局部图像特征是指通过特征点检测算子作用于整幅图像或局部分块图像上,从而发现图像上的稳定的极值点,并通过提取极值点领域范围内的纹理梯度大小和方向,作为图像的局部特征。其中常见的局部图像特征有:HOG、SIFT、SURF。
HOG特征(Histogram of Oriented Gradient):HOG(方向梯度直方图特征)是通过计算和统计图像局部区域的梯度方向来构成的特征。其在行人检测中获得了巨大的成功(HOG+SVM)。其主要思想是局部目标的表象和形状可以通过梯度或边缘的方向密度分布很好地描述。其通过将图像分为相同大小的块,并将块分为细胞单元(及更小的块),对细胞单元统计各个像素的梯度方向和大小,构成梯度直方图,最后通过对每个分块提取HOG局部特征来表达图像。
HOG的具体提取过程:
1.标准化gamma空间和颜色空间。
为了减少光照因素的影响,首先整个图像进行归一化。
这里写图片描述
2.计算像素的梯度方向和大小。(一般采用水平差分算子和垂直差分算子对图像进行模板运算)
这里写图片描述
最常用的方法是:首先用[-1,0,1]梯度算子对原图像做卷积运算,得到x方向(水平方向,以向右为正方向)的梯度分量gradscalx,然后用[1,0,-1]T梯度算子对原图像做卷积运算,得到y方向(竖直方向,以向上为正方向)的梯度分量gradscaly。然后再用以上公式计算该像素点的梯度大小和方向。
3.为每个细胞单元构建梯度方向直方图
我们将图像分为若干个细胞单元,例如每个cell为6*6个像素。假设我们采用9个bin的直方图来统计这6*6个像素的梯度信息(180/9=20)。例如:如果这个像素的梯度方向是20-40度,则这个像素落在第二个bin中,在这bin中加上梯度的大小。最终这个cell将产生一个9维的特征向量。
这里写图片描述
由于局部光照的变化以及前景-背景对比度的变化,使得梯度强度的变化范围非常大。这就需要对梯度强度做归一化。归一化能够进一步地对光照、阴影和边缘进行压缩。
4.把细胞单元组合成大的块(block),块内归一化梯度直方图。例如:我们将3*3的细胞单元合成一个细胞块,最终可以得到一个3*3*9的block局部HOG特征。
同时我们将对3*3*9的特征进行归一化,最后归一化的图像特征就是HOG图像特征。
这里写图片描述
5.得到图像的最终HOG特征。
例如:一个64*128的图像特征,以8*8的像素为一个块,2*2的像素为一个细胞单元,并且扫描宽度为8个像素(实际上一般都小于8,使得一个cell可以出现在多个块中),那么最终图像的HOG特征为:单个HOG特征的维数为4*4*9=144维,总共有:8*16=128个144的HOG特征。HOG使得cell重复的目的是使得,一个cell可以出现在多个block中,使得图像的分割更有容错性。

SIFT(Scale-invariant feature transform):尺度不变特征变换是通过提取一副图像中的兴趣点,并提取该兴趣点及其scale(尺度)、orientation(主方向)邻域范围内的梯度直方图,该特征取得较好的效果。其对图像的位置、尺度、旋转具有不变性。
1. 构建尺度空间
尺度空间极值的检测:为了使得提取的SIFT局部特征具有尺度缩放不变性的特点,首先通过对原始图像进行不同尺度的高斯卷积核运行得到不同尺度的高斯卷积图像,然后通过不同尺度高斯卷积图像的对应像素之差得到不同尺度的高斯差分图像,并在高斯差分图像的相邻尺度和邻域范围内发现图像的极值点。
这里写图片描述
其中 G(x,y,σ) 是尺度可变高斯函数
这里写图片描述
(x,y)是空间坐标,是尺度坐标。σ大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的σ值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。
这里写图片描述
不同σ下面的尺度图像:
这里写图片描述

为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点,如图所示。
这里写图片描述
2.关键点定位:检测到的极值点可能是由于噪音和图像边缘引起的,因此为了去除不稳定的极值点,通过将具有低对比度的噪音点和具有小主曲率的边缘响应点去掉,使得SIFT特征更加具有稳定性和抗噪性。消去低对比度的点可通过计算DOG的极值点处D(x)前两项取值,若D>=0,03,该特征点就保留下来,否则丢弃。
这里写图片描述
不稳定的边缘响应点,可以利用主曲率去区别。横跨边缘的地方有较大的主曲率,垂直边缘的方向有较小的主曲率。因此我们保留主曲率大的极值点,消去主曲率小的极值点。
这里写图片描述
这里写图片描述
这里写图片描述
3.方向确定:为了使得生成的SIFT描述子具有旋转不变性,可以将图像邻域方向坐标轴旋转到关键点的方向,再统计关键点邻域范围的主方向作为SIFT描述子的方向。
这里写图片描述
至此,图像的关键点已经检测完毕,每个关键点有三个信息:位置,所处尺度、方向,由此可以确定一个SIFT特征区域。
4.关键点描述子的生成:通过以关键点为中心16×16的邻域为采样窗口,并将横纵坐标的方向旋转为关键点方向,从而生成SIFT特征描述子。对4×4的采样窗口为一个单位统计每个像素点的梯度方向和大小,并将梯度方向以每45度为一柱归一化8个方向柱其中一个柱。最终可以生成一个4×4×8维向量,并加上关键点的尺度和位置作为SIFT关键字描述子。
这里写图片描述
最终一副图像中的SIFT特征的数量和发现的稳定特征点的数量相同,其中每一个特点都是4*4*8维的SIFT特征。
2.3 深度学习产生的图像特征
深度学习(deep learning)的目的并不是为了提取图像的特征,其目的是为了对图像进行分类,但在实验的过程中可以发现最后一层隐层输出的结果,直接用于传统的分类算法(即使很简单的线性分类器),其效果也非常的好,并且将其转化为用户可见的图像时,发现其是带有人类可以理解的语义信息,如深度学习产生的人脸识别特征其就是一些人脸可区分的轮廓图,并且基于深度学习的人脸识别的准确率已经达到了98%的准确率,其识别的效果已经超过人类对于人脸的识别能力。PS:本人也没有研究过深度学习,只是有些片面的理解,不对之处欢迎各位大神指正。
深度学习是最近十多年一直热议的话题。其本质上是想通过数据在节点之间的卷积和加权,来模拟人类大脑对于信息的处理过程。专家研究发现,大脑不同的神经细胞对于不同的信号有不同的反应,有一些细胞会对信号进行增益,有些细胞会对信号进行压制,因此专家就通过添加多层的隐层和隐层中的节点来模拟神经细胞处理信号的过程(大脑有神经细胞分区域的,每个区域有很多神经细胞或者叫做神经元)。
深度学习方法与传统的机器学习方法的区别在于传统的机器学习算法可以看作是只有一层隐层节点(如Support Vector Machine, SVM)和没有隐层节点(如Logistic Regression, LR)的机器学习方法,而深度学习方法的隐层数目至少是5层,甚至能够达到10层以上。由于隐层数目的限制造成传统的机器学习方法在逼近复杂函数时会出现过拟合现象,使得泛化能力受到严重限制。对于深度学习方法而言,其每层都是一个非线性函数,因此可以通过多层之间表示的非线性函数来逼近复杂的函数,其多种非线性函数带来的直接好处就是可以使用较少的参数来模拟复杂函数,从而使得深度学习方法可以从相对较少的样本数据中学习到数据集中的本质特征。
PS:复杂的函数是可以通过一些简单多项式函数的进行加权和的,好像是泰勒展开式,例如:

这里写图片描述

人工神经网络被SVM、Adaboost等机器学习方法取代的原因在于其理论分析困难,训练方法又需要很多经验和技巧,从而严重限制了人工神经网络的发展。深度学习方法与人工神经网络在分层结构上都采用了相似的分层结构,系统由输入层、隐层(多层)、输出层组成,但是深度学习方法在训练的过程中采用自下而上的非监督学习方法和自顶而下的监督学习方法相结合,从而避免了Back Propagation,BP方法在校准误差信号回传衰减、收敛到局部最优值和需要大量标注数据的问题。深度学习方法训练方法如下:
自下而上的非监督学习方法:采用无标注数据,分层次的训练每一个层次的参数,使得输入数据与重建数据之间的误差最小。如图2.8所示,其学习过程中通过隐层的编码器编码输入数据得到第一层隐层的输出数据code,在该层通过调整隐层参数使得解码器解码code的重建数据与输入数据误差保持足够小。重复该过程直到最后一个隐层。
这里写图片描述
无标签数据的特征学习过程
自顶而下的监督学习方法:通过类似BP过程的方法,将标签数据的误差,自顶而下的传递,从而微调每一层的参数,使得参数更加符合全局最优解。
这里写图片描述
标签数据的微调过程
其中深度学习算法的性能绝大部分由自下而上的特征学习过程决定。同时在深度学习模型中每一隐层的输出都是图像特征更高一层的抽象,输入的是没有语义信息的像素,最后一层隐层输出的是带有语义信息的属性或者特征。并且大量的实验已经证明对于深度学习模型最终得到的特征通过简单的分类模型取得的效果比其他的图像特征通过复杂分类模型得到的效果还要好。
深度学习模型根据隐层的不同又分为限制波曼机、深信度网络、卷积神经网络等深度学习方法。
本人的理解深度学习的特征比传统特征效果好的原因有以下几点:
1.深度学习是将整个图像的像素作为输入,因此其不存在语义信息的丢失,而传统的特征提取方法都是发现图像中稳定的角点、边缘等,其丢失了大量的信息。
2.深度学习是通过大量的数据训练的过程,其花费大量的时间和训练数据去从图像中发现高层的语义,传统的特征提取方法其主要还是去统计稳定点附近的梯度大小、方向等,其本质上并没有去发现图像中存在的语义,而且对于图像分类的特征一般都会丢失大量的角点的空间关系。
3.图像分类其本质是发现目标的基本语义单元和语义单元间的空间关系(如人是由头部+身体+四肢,并且其带有上下关系,如果输入的是这样的特征,并且带有这样的关系,我们可以认为这样一个东西就是一个人)。从上面的全局图像特征和局部图像特征而言,并没有带有语义信息的单元。深度学习算法其由于具有大量的数据,其能够发现类别之间的本质区别,其实不同类别之间的本质区别,就是语义单元的组成概率和空间关系不同。图像处理比自然语言处理难的地方就在于图像是由像素组成,而像素是不带有语义信息的,相对而言自然语言处理中的单词和词汇是带有语义的。
2.4 局部图像特征编码产生用于图像分类的局部特征

0 0