[普兒原创, 若有错误和纰漏欢迎指正. 更新中...]函数
颜色空间在本质上是定义在某种坐标系统下的子空间,空间中的每个坐标表示一种不一样的颜色。颜色空间的目的在于给出某种颜色标准,使得不一样的设备和用途都能对颜色有一致的描述。这里主要介绍两种不一样的颜色空间,包括RGB颜色空间和CIE-Lab颜色空间,如图4-2所示。spa
(a)RGB颜色空间; (b)CIE-Lab颜色空间blog
图1 颜色空间示意图it
RGB颜色空间是定义在三维笛卡尔坐标系中的颜色模型,每一种颜色定义在3个主颜色份量红(R)、绿(G)、蓝(B)上。如图1(a)所示,立方体表示RGB空间,3个主颜色份量分别在立方体位于坐标轴的角上,3个份量在虚线表示的立方体对角线上的取值相等,表示灰度值空间。坐标原点表示黑色,3个份量在距离原点最远的角上取得最大值,表示白色。经过RGB颜色空间表示的图像由分别由红、绿、蓝3个通道的图像组成。当图像被显示出来时,3个通道的颜色被组合起来表示RGB颜色空间中的一种颜色。im
与RGB颜色空间不一样,CIE-Lab颜色空间由国际照明委员会在1976年正式提出,旨在提供一种基于人类视觉感知特性的颜色系统,能经过数字的方式度量人体感知到的颜色的差异[1]。CIE-Lab颜色空间由明度(luminance)份量、a份量和b份量表示。其中明度份量表示颜色的灰度,a和b份量共同定义了色调和饱和度,a份量表征从红(+a)到绿(-a)的颜色,b份量表征从黄(+b)到蓝(-b)的颜色,且a、b份量相互垂直,如图4-2(b)所示。直观说来,CIE-Lab颜色空间是基于人的主观感知定义的,例如没有“偏红的绿色”和“偏蓝的黄色”,是用于替换过度简化的RGB直角坐标颜色空间的折中方案。统计
本文在RGB和CIE-Lab颜色空间的各通道图像上提取直方图做为图像区域的颜色特征。所谓直方图,是指强度为\([0, L-1]\)范围的图像的离散函数\(h(r_k)=n_k\),其中\(r_k\)表示第\(k\)级灰度,\(n_k\)是图像中灰度级为\(r_k\)的像素个数。一般用图像中的像素总数\(n\)除直方图函数\(h(\cdot)\)的每一个值来获得归一化的直方图\(P(r_k)=\frac{n_k}{n}, k=0, 1, \cdots, L-1\). 直观说来,\(P(r_k)\)给出了灰度级为\(r_k\)发生的几率估计值。margin
图2. 方向梯度直方图img
方向梯度直方图(Histogram of Oriented Gradient, HOG)最初用于行人检测,由Dalal等人[2]提出,现已被普遍应用于各类目标检测问题中。方向梯度直方图统计图像的梯度方向和幅度(大小)信息,很是适合描述图像的形状特征。di
在实现时,方向梯度直方图首先将图像分解若干图像块(block),每一个图像块中有若干细胞单元(cell),即矩形或环形的小图像块。而后计算每一个细胞单元的方向梯度直方图,将同一图像块内的全部细胞单元的直方图链接起来造成该图像块的方向梯度直方图特征,并对其进行归一化。最后将图像全部图像块的特征描述链接起来就获得了整张图像的方向梯度直方图特征。co
下面介绍一个计算方向梯度直方图的具体例子。如图2所示,首先对每一个分割区域,取可以彻底包含该分割区域的最小矩形块做为初始图像,并将该图像灰度化,归一化为\(72\times 72\)的图像。每一个图像继续划分为\(2\times 2\)的图像块,每一个图像块包含\(3\times 3\)的细胞单元,每一个细胞单元包含\(6\times 6\)个像素。在每一个细胞单元中,分别用\([-1, 0, 1]\)和\([1, 0, -1]^T\)的梯度算子对图像作卷积提取水平方向的梯度\(G_x\)和垂直方向的图像梯度\(G_y\)。而后梯度幅度\(M_G\)和方向\(\alpha_G\)能够经过下述公式计算
\(M_G = \sqrt{G_x^2 + G_y^2}\),
\(\alpha_G = \tan^{-1} \frac{G_y}{G_x}\).
而后,再将梯度分为8个区间,以梯度幅度做为每一个区间的大小统计梯度直方图。在统计完每一个细胞单元的直方图后,将每一个图像块内的细胞单元直方图链接起来进行归一化,获得该图像块的统计直方图。最后,将全部图像块的直方图链接起来,获得原始图像的方向梯度直方图,维度为\(8\times 3 \times 3 \times 2 \times 2 = 288\)维,做为该图像的特征描述。
图3. 局部二值模式
局部二值模式(Local Binary Pattern,LBP)最先由Ojala等人[3]提出,是一种描述局部纹理特征的算子,最先应用于人脸识别、表情识别等问题。
局部二值模式算子的计算基于纹理单元(texture units),经过对多个纹理单元的分析就能获得一个图像区域的纹理谱(texture spectrum)。在局部二值模式中,一个纹理单元定义为一个\(3\times 3\)的图像窗口(图3(a)),由中心像素周围的8个值表征,其中每一个值的取值只有\((0, 1)\),若周围像素的值大于中心像素,则取值为1,不然取值为0(图3(b)). 注意一个纹理单元全部的取值可能有\(2^8 = 256\)种。而后,对该窗口进行\(3\times 3\)的卷积操做,即给纹理单元中的8个值赋予权重(图3(c))。最后将纹理单元的8个值相加,获得该纹理单元的响应(图3(d), 响应为\(1+8+32+128 = 169 \))。
只实际应用中, 每每是针对一个图像计算每一个像素的LBP响应, 最后再统计全部LBP响应的直方图.