[普兒原创, 如有错误和纰漏欢迎指正. 更新中...]

1. 颜色直方图

颜色空间在本质上是定义在某种坐标系统下的子空间,空间中的每一个坐标表示一种不同的颜色。颜色空间的目的在于给出某种颜色标准,使得不同的设备和用途都能对颜色有一致的描述。这里主要介绍两种不同的颜色空间,包括RGB颜色空间和CIE-Lab颜色空间,如图4-2所示。

(a)RGB颜色空间; (b)CIE-Lab颜色空间

图1 颜色空间示意图

RGB颜色空间是定义在三维笛卡尔坐标系中的颜色模型,每一种颜色定义在3个主颜色分量红(R)、绿(G)、蓝(B)上。如图1(a)所示,立方体表示RGB空间,3个主颜色分量分别在立方体位于坐标轴的角上,3个分量在虚线表示的立方体对角线上的取值相等,表示灰度值空间。坐标原点表示黑色,3个分量在距离原点最远的角上取得最大值,表示白色。通过RGB颜色空间表示的图像由分别由红、绿、蓝3个通道的图像组成。当图像被显示出来时,3个通道的颜色被组合起来表示RGB颜色空间中的一种颜色。

与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\)发生的概率估计值。

2. 方向梯度直方图(HOG)

图2. 方向梯度直方图

方向梯度直方图(Histogram of Oriented Gradient, HOG)最初用于行人检测,由Dalal等人[2]提出,现已被广泛应用于各种目标检测问题中。方向梯度直方图统计图像的梯度方向和幅度(大小)信息,非常适合描述图像的形状特征。

在实现时,方向梯度直方图首先将图像分解若干图像块(block),每个图像块中有若干细胞单元(cell),即矩形或环形的小图像块。然后计算每个细胞单元的方向梯度直方图,将同一图像块内的所有细胞单元的直方图连接起来形成该图像块的方向梯度直方图特征,并对其进行归一化。最后将图像所有图像块的特征描述连接起来就得到了整张图像的方向梯度直方图特征。

下面介绍一个计算方向梯度直方图的具体例子。如图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. 局部二值模式(LBP)直方图

图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响应的直方图.

视觉中的经典图像特征小结(一): 颜色直方图, HOG, LBP的更多相关文章

  1. OPENCV图像特征点检测与FAST检测算法

    前面描述角点检测的时候说到,角点其实也是一种图像特征点,对于一张图像来说,特征点分为三种形式包括边缘,焦点和斑点,在OPENCV中,加上角点检测,总共提供了以下的图像特征点检测方法 FAST SURF ...

  2. SLAM入门之视觉里程计(1):特征点的匹配

    SLAM 主要分为两个部分:前端和后端,前端也就是视觉里程计(VO),它根据相邻图像的信息粗略的估计出相机的运动,给后端提供较好的初始值.VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方 ...

  3. 经典文本特征表示方法: TF-IDF

    引言 在信息检索, 文本挖掘和自然语言处理领域, IF-IDF 这个名字, 从它在 20 世纪 70 年代初被发明, 已名震江湖近半个世纪而不曾衰歇. 它表示的简单性, 应用的有效性, 使得它成为不同 ...

  4. 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征(转载)

    (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...

  5. 【图像算法】图像特征:GLCM灰度共生矩阵,纹理特征

    [图像算法]图像特征:GLCM SkySeraph Aug 27th 2011  HQU Email:zgzhaobo@gmail.com    QQ:452728574 Latest Modifie ...

  6. 目标检测的图像特征提取之(二)LBP特征

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像年提出,用于纹理特征提取.而且,提取的特征是图像的局部的纹理特征: 1.LBP特征的描述 原始的LBP算子定义为在3* ...

  7. 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征

    (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...

  8. 肺结节CT影像特征提取(一)——肺结节CT图像特征概要

    本科毕设做的是医学CT图像特征提取方法研究,主要是肺部CT图像的特征提取.由于医学图像基本为灰度图像,因此我将特征主要分为三类:纹理特征,形态特征以及代数特征,每种特征都有对应的算法进行特征提取. 如 ...

  9. 原来CNN是这样提取图像特征的。。。

    对于即将到来的人工智能时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的领域,会不会感觉马上就out了?作为机器学习的一个分支,深度学习同样需要计算机获得强大的学 ...

随机推荐

  1. PAT甲级题解-1100. Mars Numbers (20)-字符串处理

    没什么好说的,注意字符串的处理,以及当数字是13的倍数时,只需高位叫法的单词.比如26,是“hel”,而不是“hel tret”. 代码: #include <iostream> #inc ...

  2. c# winform调用摄像头识别二维码

    首先我们需要引用两个第三方组件:AForge和zxing. Aforge是摄像头操作组件,zxing是二维码识别组件.都是开源项目.避免重复造轮子. 其实一些操作代码我也是参照别人的,若侵犯您的版权, ...

  3. 互评Final版本——可以低头,但没必要——取件帮

    基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题; (1)N(Need,需求) 当今大部分在校学生由于各种原因懒于亲自去取快递,而总麻烦身边人也不是长久之计.而有些同学需 ...

  4. 20135202闫佳歆--week6 进程的描述与创建--学习笔记

    此为个人学习笔记存档! week 6 进程的描述与创建 一.进程的描述 1.进程控制块task_struct 以下内容来自视频课件,存档在此. 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述 ...

  5. A+B Format 思路及解题过程结果

    A+B Format 思路及解题过程结果 github链接 题目 解题思路 这个题目的难点在于每三位用逗号隔开,以及带不带负号的问题.第一个问题,我的解决办法是先通过取整来取数,再通过取余来去数.第二 ...

  6. Mybatis 从入门到精通一:mybatis的入门

    1.Mybatis简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation(阿帕奇软件基金会) 迁移到了google ...

  7. C语言变长数组data[0]

    1.前言 在刷题时遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内核中,结构体中经常用到data[0] ...

  8. 深入理解ajax系列第七篇——传递JSON

    前面的话 虽然ajax全称是asynchronous javascript and XML.但目前使用ajax技术时,传递JSON已经成为事实上的标准.因为相较于XML而言,JSON简单且方便.本文将 ...

  9. vue中的minix

    minix 是个什么东西, 就是混合,把你混合给我 浅显表述就是 你说 : ‘我叫李四’, 我说 : ‘我叫张三’, 然后把你 混合给我, 就成了 我说 : ‘我叫张三我叫李四’, 所有解说都在例子里 ...

  10. [代码]--其他信息: ORA-01400: 无法将 NULL 插入

    这个错误其实就是oracle数据库的某列约束为 not null,但在插入值的时候插入了控制,无论是null和"",它都识别为空 有两种方法: 1.修改数据库字段约束为允许为空 2 ...