虽然计算机视觉、机器视觉属于人工智能的分支之一(人工智能包括有图像识别、语音识别、语义识别等),但是对于机器视觉来说,学习图像的几何特征有着非一般的重要意义。
为什么介么说,因为在本人实际的项目当中,很多时候处理算法都是基于图像的几何轮廓特征进行计算的,例如角点计算的几种算法HOG、SIFT、SUFT…都是基于图像的几何轮廓特征的基本理论上。
到近年来很重要、很热门的机器视觉领域SLAM(即时定位与地图构建)绝大部分理论都是基于图像几何轮廓特征,因此在这里简单初级地对图像几何轮廓特征进行初略带过一遍,造福后人。
图像几何轮廓特征
图像中的几何轮廓特征有什么作用呢?通过下面的图可以看出其实图像的几何轮廓特征最常用的方法就是识别物体的轮廓外观。下图是使用IPAN算法通过扫描轮廓上并在曲线内部使用可能顶点构造三角形来实现。对于三角形的大小和张角有特殊要求,在比某一特定的全局阈值和它的相邻点的张角小的情况下,具有大张角的点被保留。
通过上面代码例子对图像的几何轮廓特征有了初步的了解,下面我们来详细介绍一下图像中的几何轮廓特征。
1.轮廓的多边形逼近 cvApproxPoly
轮廓的多边形逼近指的是:使用多边形来近似表示一个轮廓。
多边形逼近的目的是为了减少轮廓的顶点数目。
多边形逼近的结果依然是一个轮廓,只是这个轮廓相对要粗旷一些。
2.轮廓的关键点 cvFindDominantPoints
轮廓的关键点是:轮廓上包含曲线信息比较多的点。关键点是轮廓顶点的子集。
可以使用cvFindDominantPoints函数来获取轮廓上的关键点,函数返回一个包含 关键点在轮廓顶点中索引的序列。是索引不是具体的点,如果要得到关键点的具体坐标,可以用索引到轮廓上去找。
3.轮廓的周长和面积
轮廓的周长可以用cvContourPerimeter或者cvArcLength函数来获取。
轮廓的面积可以用cvContourArea函数来获取。
4.轮廓的边界框
有三种常见的边界框:矩形cvBoundingRect、圆形cvMinEnclosingCircle、椭圆cvFitEllipse2。
5.轮廓的矩
这里解析一下什么是矩阵的矩、也叫矩阵的特征矩。看字:
矩
单单看 矩 这个字我是百思不得其解,完全不能够明白到底是个什么鬼东西。找百度翻译“图像的特征矩”英文原文是 Image moment features,我的翻译是 图像此刻的特征,真正含义是 对图像局部特征的描述。
网上很多关于图像的几何轮廓特诊都没有特别对特征矩进行说明,其实图像识别的一个核心问题是图像的特征提取,简单描述即为用一组简单的数据(图像描述量)来描述整个图像,这组数据越简单越有代表性越好。良好的特征不受光线、噪点、几何形变的干扰。图像识别发展几十年,不断有新的特征提出,而图像不变矩就是其中一个。
开启数学模式,难过的小朋友可以跳过了。
矩是通过对轮廓上所有点进行积分运算(或者认为是求和运算)而得到的一个粗略特征。矩主要包括以下几种:空间矩,中心矩和中心归一化矩。
矩是概率与统计中的一个概念,是随机变量的一种数字特征。设 X 为随机变量,
比较重要的有两种情况:
-
c=0 。这时 ak=E(Xk) 称为 X 的k 阶原点矩- c=E(X) 。这时 μk=E[(X−EX)k] 称为 X 的
k 阶中心矩。 一阶原点矩就是期望。一阶中心矩 μ1=0 ,二阶中心矩 μ2 就是 X 的方差
Var(X) 。在统计学上,高于4阶的矩极少使用。 μ3 可以去衡量分布是否有偏。 μ4 可以去衡量分布(密度)在均值附近的陡峭程度如何。针对于一幅图像,我们把像素的坐标看成是一个二维随机变量 (X,Y) ,那么一幅灰度图像可以用二维灰度密度函数来表示,因此可以用矩来描述灰度图像的特征。
不变矩(Invariant Moments)是一处高度浓缩的图像特征,具有平移、灰度、尺度、旋转不变性。M.K.Hu在1961年首先提出了不变矩的概念。1979年M.R.Teague根据正交多项式理论提出了Zernike矩。下面主要介绍这两种矩特征的算法原理与实现。
2. Hu矩
一幅 M×N 的数字图像 f(i,j) ,其 p+q 阶几何矩 mpq 和中心矩 μpq 为:
mpq=∑i=1M∑j=1Nipjqf(i,j)
μpq=∑i=1M∑j=1N(i−i¯)p(j−j¯)qf(i,j)其中 f(i,j) 为图像在坐标点 (i,j) 处的灰度值。 i
- c=E(X) 。这时 μk=E[(X−EX)k] 称为 X 的