
3.2 图像的特征概述
在正式学习图像特征之前,我们可以先简单思考下,什么样的特征可以区分这些照片呢?例如在下面的表格中,我们将“有没有翅膀”作为一个特征,就可以区分小鸟和小猫,也可以区分汽车和飞机。再将“有没有眼睛”作为另一个特征,我们就可以完美地区分这四类照片了。
表3-1可以区分四类照片的特征。
表3-1 四类照片特征

知道要判断什么特征还远远不够,因为在确定了特征之后,我们还要有获得和提取这些特征的方法。对于人类而言,这个过程非常简单,我们只要看一眼图片,大脑就可以获取这些特征。但是对于计算机而言,一幅图片就是以特定方式存储的一串数据。让计算机通过一系列计算,从这些数据中提取类似“有没有翅膀”这样的特征是一件极其困难的事情。
在深度学习(deep learning)出现之前,图像特征的设计一直是计算机视觉领域中一个重要的研究课题。在这个领域发展的初期,人们手工设计了各种图像特征,这些特征以描述图像的颜色、边缘(edge)、纹理(texture)等基本性质,结合机器学习技术,能解决物体识别(object recognition)和物体检测等实际问题,下面简单介绍一下图像的特征。
3.2.1 主要的图像特征
颜色特征
颜色特征是图像检索中应用最为广泛的视觉特征,颜色直方图是在许多图像检索系统中被广泛采用的颜色特征(图3-6)。它所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体,颜色直方图特别适于描述那些难以进行自动分割的图像。直方图中的数值都是统计而来,描述了该图像中关于颜色的数量特征,可以反映图像颜色的统计分布和基本色调。直方图只包含了该图像中某一颜色值出现的频数,而丢失了某像素所在的空间位置信息;任一幅图像都能唯一地给出一幅与它对应的直方图,但不同的图像可能有相同的颜色分布,从而就具有相同的直方图,因此直方图与图像是一对多的关系。

图3-6 颜色直方图
边缘特征
边缘是图像最基本的特征之一,往往携带着一幅图像的大部分信息,而这些信息对于人们对图像进行高层次的特征描述、识别和理解具有重要的实用价值。我们需要通过一些图像处理的手段,将图中图像的轮廓提取出来,结果类似于图3-7。

图3-7 边缘特征提取

扫描二维码可查看彩色图像
边缘特征又是图像的几何特征,往往出现在像素明显变化的区域,具有丰富的语义信息,常用于物体识别和几何、视角的变换。边缘的定义是像素明显变化的区域或一阶导数的极值区域。
纹理特征
纹理是一种反映图像中同质现象的视觉特征,它体现了物体表面的具有缓慢变化或者周期性变化的表面结构组织排列属性。纹理具有三大标志:某种局部序列性不断重复、非随机排列、纹理区域内大致为均匀的统一体。纹理不同于灰度、颜色等图像特征,它通过像素及其周围空间邻域的灰度分布来表现,即局部纹理信息。局部纹理信息不同程度的重复性,即全局纹理信息。
如图3-8所示,纹理特征刻画了图像中重复出现的局部模式与它们的排列规则,常用于图像分类和场景识别。其只能反映物体表面的特性,无法完全反映出物体的本质属性,所以仅仅利用纹理特征无法获得图像的高层次内容。其优点是具有旋转不变性和良好的抗噪性能,但是当图像的分辨率变化的时候,所计算出来的纹理可能会有较大偏差,而且有可能受到光照、反射情况的影响,有时从二维图像中反映出来的纹理不一定是三维物体表面真实的纹理。

图3-8 图像的纹理特征
3.2.2 卷积运算
张量是数学、物理及工程等学科中的一个基本概念,我们之前遇到的许多概念都是张量的特殊形式,例如标量属于零阶张量,向量是一阶张量,而矩阵是二阶张量。既然图像在计算机中可以表示成三阶张量,那么从图像中提取特征便是对这个三阶张量进行运算的过程。其中非常重要的一种运算是卷积(convolution),卷积运算在图像处理以及其他许多领域有着广泛的应用,卷积和加减乘除一样,是一种数学运算。参与卷积运算的可以是向量、矩阵或三阶张量,我们先从向量的卷积入手,讲解卷积的基本步骤,再将其推广到矩阵和三阶张量。
两个向量卷积的结果仍然是一个向量。它的计算过程如图3-9所示。我们首先将两个向量的第一个元素对齐,并截去长向量中多余的元素,然后,我们计算这两个维数相同的向量的内积,并将算得的结果作为结果向量的第一个元素。接下来,我们将短向量向下滑动一个元素,从原始的长向量中截去不能与之对应的元素,并计算内积。重复“滑动、截取、计算内积”这个过程,直到短向量的最后一个元素与长向量的最后一个元素对齐为止。最后就可以得到这两个向量卷积的结果。作为一种特殊情形,当两个向量的长度相同时,不需要进行滑动操作,卷积结果是长度为1的向量,结果向量中这个元素就是两个向量的内积。

图3-9 卷积运算
类似地,我们可以定义矩阵的卷积。在此之前,我们首先需要将内积运算拓展到矩阵上。图3-10给出了一个两个矩阵卷积运算的例子。假设有一个3×3的矩阵h,有一个待处理的矩阵x,h*x的计算分为三步。

图3-10 矩阵h和x
第一步,将h翻转180°如图3-11所示。

图3-11 第一步
第二步,将卷积核h的中心对准x的第一个元素,然后对应元素相乘后相加,没有元素的地方补0,如图3-12所示。

图3-12 第二步
这样结果Y中的第一个元素Y11值为Y11=1*0+2*0+1*0+0*0+0*1+0*2+(-1)*0+(-2)*5+(-1)*6=-16
像这样计算其他元素的值,可以得到结果如图3-13所示。

图3-13 结果
向量的卷积到矩阵的卷积的转变实质上是从一维卷积到二维卷积的转变,所以在进行向量的卷积时,我们只需要沿着一个方向进行滑动;而在进行矩阵之间的卷积时,较小矩阵形成的窗口就需要沿着横向和纵向两个方向进行滑动了。
3.2.3 卷积提取特征
卷积运算在图像处理中应用十分广泛,许多图像特征提取方法都会用到卷积。以灰度图为例,我们知道在计算机中灰度图像被表示为一个整数的矩阵。如果我们用一个形状较小的矩阵和这个图像矩阵做卷积运算,就可以得到一个新的矩阵,这个新的矩阵可以看作是一幅新的图像。换句话说,通过卷积运算,我们可以将原图像变换为一幅新图像。这幅新图像有时候比原图像更清楚地表示了某些性质,我们就可以把它当作原图像的一个特征。这里用到的小矩阵就称为卷积核(convolution kernel)。通常,图像矩阵中的元素都是介于0~255的整数,但是卷积核中的元素可以是任意实数。如图3-14所示。

图3-14 卷积核
通过卷积,我们可以从图像中提取边缘特征。在没有边缘的比较平坦的区域,图像的像素值变化比较小,而横向边缘上下两侧的像素差异明显,竖向边缘左右两侧的像素也会有较大差别。在图3-15的例子中,我们用卷积核与原图像进行卷积运算,可以从图像中提取出竖向边缘。

图3-15 卷积运算提取竖向边缘特征
如果我们将卷积核换为,则可以与此类似地从图像中提取出横向边缘。事实上,这两个卷积核分别计算了原图像上每个3×3区域内左右像素或上下像素的差值(为了将运算结果以图像的形式展示出来,我们对运算结果取了绝对值)。通过这样的减法运算,我们就可以从图像中提取出不同的边缘特征。
更进一步地,研究者们设计了一些更加复杂而有效的特征。方向梯度直方图(histogram of oriented gradients,HOC)是一种经典的图像特征,在物体识别和物体检测中有较好的应用。方向梯度直方图使用边缘检测技术和一些统计学方法,可以表示出图像中物体的轮廓。由于不同的物体轮廓有所不同,因此我们可以利用方向梯度直方图特征区分图像中不同的物体。如图3-16所示。

图3-16 方向梯度直方图
方向梯度直方图的提取过程主要包括三个步骤。首先利用卷积运算从图像中提取出边缘特征。接下来,将图片划分成若干区域,并对边缘特征按照方向和幅度进行统计,并形成直方图。最后将所有区域内的直方图拼接起来,就形成了特征向量。具体过程相对复杂,我们在这里略去。