Harris
角点
角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。角点在保留图像图形重要特征的同时,可以有效地减少信息的数据量,使其信息的含量很高,有效地提高了计算的速度,有利于图像的可靠匹配,使得实时处理成为可能。角点在三维场景重建运动估计,目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用。
下面有两幅不同视角的图像,通过找出对应的角点进行匹配。
我们可以直观的概括下角点所具有的特征:
轮廓之间的交点;
对于同一场景,即使视角发生变化,通常具备稳定性质的特征;
该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化;
角点匹配(corner matching)是指寻找两幅图像之间的特征像素点的对应关系,从而确定两幅图像的位置关系。
角点匹配可以分为以下四个步骤:
提取检测子:在两张待匹配的图像中寻找那些最容易识别的像素点(角点),比如纹理丰富的物体边缘点等。
提取描述子:对于检测出的角点,用一些数学上的特征对其进行描述,如梯度直方图,局部随机二值特征等。检测子和描述子的常用提取方法有:sift, harris, surf, fast, agast, brisk, freak, brisk,orb等。
匹配:通过各个角点的描述子来判断它们在两张图像中的对应关系。常用方法如flann。
去外点:去除错误匹配的外点,保留正确的内点。常用方法有Ransac, GTM。
这里我们只介绍最常用的Harris算子。
Harris Corner Detector
Harris Corner Detector是Chris Harris和Mike Stephens于1988年提出的算子。
论文:
《A Combined Corner and Edge Detector》
如上图所示。人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。如果在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。如果这个特定的窗口在图像各个方向上移动时,窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一些方向上没有发生变化,那么,窗口内的图像可能就是一条直线的线段。
对于图像 I(x,y) I ( x , y ) ,当在点(x,y)处平移 (Δx,Δy) ( Δ x , Δ y ) 后的自相似性,可以通过自相关函数给出:
其中, W(x,y) W ( x , y ) 是以点(x,y)为中心的窗口, w(u,v) w ( u , v ) 为加权函数,它既可是常数,也可以是高斯加权函数。
根据泰勒展开,对图像 I(x,y) I ( x , y ) 在平移 (Δx,Δy) ( Δ x , Δ y ) 后进行一阶近似:
其中, Ix,Iy I x , I y 是图像 I(x,y) I ( x , y ) 的偏导数,则自相关函数可简化为:
其中:
即:
其中:
二次项函数本质上就是一个椭圆函数。椭圆的扁率和尺寸是由M(x,y)的特征值 λ1,λ2 λ 1 , λ 2 决定的,轴向是由M(x,y)的特征矢量决定的,如下图所示,椭圆方程为:
椭圆函数特征值与图像中的角点、直线(边缘)和平面之间的关系如下图所示。共可分为三种情况:
图像中的直线。一个特征值大,另一个特征值小, λ1≫λ2 λ 1 ≫ λ 2 或 λ2≫λ1 λ 2 ≫ λ 1 。自相关函数值在某一方向上大,在其他方向上小。
图像中的平面。两个特征值都小,且近似相等;自相关函数数值在各个方向上都小。
图像中的角点。两个特征值都大,且近似相等,自相关函数在所有方向都增大。
根据二次项函数特征值的计算公式,我们可以求M(x,y)矩阵的特征值。但是Harris给出的角点差别方法并不需要计算具体的特征值,而是计算一个角点响应值R来判断角点。R的计算公式为:
式中, detM d e t M 为矩阵 M=[ABBC] M = [ A B B C ] 的行列式; traceM t r a c e M 为矩阵M的直迹; α α 为经验常数,取值范围为0.04~0.06。事实上,特征是隐含在 detM d e t M 和 traceM t r a c e M 中,因为,
Harris角点的性质
增大 α α 的值,将减小角点响应值R,降低角点检测的灵性,减少被检测角点的数量;减小 α α 值,将增大角点响应值R,增加角点检测的灵敏性,增加被检测角点的数量。
Harris角点检测算子对亮度和对比度的变化不敏感。这是因为在进行Harris角点检测时,使用了微分算子对图像进行微分运算,而微分运算对图像密度的拉升或收缩和对亮度的抬高或下降不敏感。换言之,对亮度和对比度的仿射变换并不改变Harris响应的极值点出现的位置。
Harris角点检测算子使用的是角点附近的区域灰度二阶矩矩阵。而二阶矩矩阵可以表示成一个椭圆,椭圆的长短轴正是二阶矩矩阵特征值平方根的倒数。当特征椭圆转动时,特征值并不发生变化,所以判断角点响应值R也不发生变化,由此说明Harris角点检测算子具有旋转不变性。
Harris角点检测算子不具有尺度不变性。如下图所示,当右图被缩小时,在检测窗口尺寸不变的前提下,在窗口内所包含图像的内容是完全不同的。左侧的图像可能被检测为边缘或曲线,而右侧的图像则可能被检测为一个角点。
为了解决尺度不变性问题,可以使用多尺度Harris角点算法,将Harris角点检测算子与高斯尺度空间表示相结合,使其具有尺度不变性:
参考
http://blog.csdn.net/lwzkiller/article/details/54633670
Harris角点检测原理详解
http://www.cnblogs.com/ronny/p/4009425.html
Harris角点
https://blog.csdn.net/davebobo/article/details/52598850
检测并匹配兴趣点
https://blog.csdn.net/songzitea/article/details/17969375
角点匹配方法
Eigenface
Eigenface是M. Turk和A. Pentland于1991年提出的人脸识别算法。
Matthew A. Turk,Virginia Tech本科(1982)+CMU硕士(1984)+MIT博士(1991)。UCSB教授。
Alex Paul “Sandy” Pentland,1952年生,MIT博士(1982)。MIT教授。
论文:
《Face recognition using eigenfaces》
计算Eigenface
Step 1:假设有M张训练照片 I1,…,IM I 1 , … , I M ,每张照片的尺寸为NxN,将照片 Ii I i 转换成1维vector Γi Γ i 。显然, Γi Γ i 的大小是 N2 N 2 。
Step 2:计算均值vector Ψ Ψ (也就是常说的平均脸(average face/mean face)):
Step 3:计算图片与均值的差:
Step 4:计算协方差矩阵:
Step 5:计算的 AAT A A T 特征向量 ui u i 。然而, AAT A A T 太大了,我们只能退而求其次计算 ATA(M×Mmatrix) A T A ( M × M matrix ) 的特征向量 vi v i 。
那么 ui u i 和 vi v i 到底有什么关系呢?我们首先根据特征向量的定义,给出下式:
其中, μi μ i 是 ATA A T A 的特征值。
令 ui=Avi u i = A v i ,则:
可见 μi μ i 同时也是 AAT A A T 的特征值,而对应的特征向量则是 Avi A v i 。
实际上, ATA A T A 的M个特征值,就是 AAT A A T 的前M大的特征值。
Step 6:从中选出K个最大的特征向量供后续使用。
使用Eigenface
Step 1:给定图片 Γ Γ ,计算:
Step 2:将 Φ Φ 映射到K维特征向量空间:
Step 3:计算与图片l的距离:
当 er<Tr e r < T r 时,就认为是同一张人脸。
这里的距离可以是欧氏距离,但作者指出使用马式距离效果更佳。
综上,Eigenface实际上就是PCA在人脸识别上的应用。
Eigenface的缺点
1.训练图片中人脸需要对齐,且图片大小一致。
2.Eigenface对于大数据集的计算效率不佳。在Eigenface出现的年代,数字图片尚不多见,因此,数据集普遍较小。但现在即便是mini数据集也动辄上万张图片,甚至 M>N2 M > N 2 的情况也不罕见。而对超大矩阵进行SVD分解,是个很吃计算量的事情,这也限制了Eigenface的应用。
参考
http://blog.csdn.net/smartempire/article/details/21406005
特征脸方法(Eigenface)
http://vision.jhu.edu/teaching/vision08/Handouts/case_study_pca1.pdf
Eigenfaces for Face Detection/Recognition
http://www.cnblogs.com/little-monkey/p/8118938.html
人脸识别算法——EigenFace、FisherFace、LBPH
LBP
LBP(Local Binary Patterns)算法是Matti Kalevi Pietikäinen于1994年提出的方法,后来被用到了人脸识别领域。
Matti Kalevi Pietikäinen,University of Oulu博士(1982)、教授。
Timo Ojala,Pietikäinen的博士生。现亦为University of Oulu教授。
论文:
《Face Recognition with Local Binary Patterns》
LBP特征提取
最初的LBP是定义在像素3x3邻域内的,以邻域中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3x3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数即LBP码,共256种),即得到该邻域中心像素点的LBP值,并用这个值来反映该区域的纹理信息。如下图所示:
即:
其中,c表示中心元素,p表示领域内的其它元素。