聚类算法Kmeans与梯度算法MeanshiftWord文档格式.docx
《聚类算法Kmeans与梯度算法MeanshiftWord文档格式.docx》由会员分享,可在线阅读,更多相关《聚类算法Kmeans与梯度算法MeanshiftWord文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
EM算法是求解具有隐变量的概率模型的最大似然函数的解的常用方法。
当样本集是样本与隐变量一一对应时,数据集称为完整数据集,可以直接求解模型参数,但很多时候只知道样本,不知道其对应的隐变量,这是非完整数据集。
所以求解模型参数的关键是隐变量的后验概率,由后验概率可以推出完整数据集用于求解参数。
增量式的EM算法,每次只更新一个点,收敛速度更快。
上述方法可以看成是无监督学习。
EM是一个似然函数下界最大化解法,保证了解法的收敛性。
Opencv之KMEANS篇
Opencv中的K-means适用于数据预处理,但图像分割的消耗的时间太长并且效果不怎么好,使用空间信息后,图像的分割后受空间的影响很大(同一类的数据如果分布较远,不是高斯型的,就会错分),因为图像分割本身要求数据是呈超球体(高斯类)分布。
K-means得到的是线性判决面,因为算法使用的准则函数是最小均方误差,相当于不同类别间求最小二乘直线拟合。
这是一个局限点,而且类别数的选择也很重要,但实际情况是,往往很难确定图片中的类别数。
在OPENCV里判断聚类误差是由类别中心点的两次迭代结果的差决定的,即当类别中心点都变化不大时或者说不变时,聚类结束。
多次运行程序会发现不同的结果,因为程序可能会陷入不同的局部极值,所以如果要找到全局最优,可以多次运行找出误差最小值。
在opencv的kmeans函数内有关于运行次数的选择变量,除了输出类别标记外,还可以输出类别中心等。
输入图片:
输出图片:
类别间的分界基本呈线性。
在使用K-means函数时,注意输入和输出矩阵的数据类型,是32FC1。
输入矩阵的每一行是一个输入向量。
OPENCV矩阵的特点是,矩阵的元素本身可以是个向量,即元素的数据通道,这样方便图像处理。
所以一个样本向量可以用矩阵的一行表示即单通道多数据,也可以用一个多数据通道的矩阵元素表示。
在使用空间信息作分类时,其实向量是由不同的域组成,空间域和颜色域,不满足欧几里德空间的约束,这里用了近似的。
只使用RGB颜色,未添加空间信息的分割结果:
OPENCV之EM算法篇
EM算法是求解最大似然函数极值的一种解法,使用的是迭代求解的方法,并且保证收敛。
EM算法的应用相当广泛,包括混合高斯模型的求解,隐马尔科夫模型的求解,最大后验概率模型的求解等。
最常用的是混合高斯模型的求解,把混合概率密度分解为一系列的高斯分量之和。
关于EM算法的具体流程可参考网上,个人推荐一个介绍的不错的,《patternrecognitionandmachinelearning》有一章专门介绍这个,通俗易懂,介绍了KMEANS与EM算法的关系,还介绍了一搬(general)EM算法的流程。
在我博客里还会有另一篇文章专门介绍Kmeans和EM算法和MEANSHIFT算法的关系。
Opencv里的CVEM函数是用于专门求解混合高斯模型的,输入和输出都与CVkmeans2函数的输入输出兼容,都是输入矩阵一行代表一个样本。
可以选择两种模式,一种是普通的方差矩阵,一种是对角的方差矩阵。
对角的方差矩阵计算相对简单,可以减少计算量,而且很多情况下效果和普通的方差矩阵差不多。
由于EM算法的计算复杂度要高于Kmeans,所以在实际使用时一般先用Kmeans选定类别中心,再用EM算法调整,可以提高计算速度。
在CVEM类里有KMEANS的成员函数,实现预处理功能。
Opencv里的EM算法有个和Kmeans一样的缺点就是类别数无法确定,并且数据如果不服从高斯分布,用于图片分割的效果不好,耗时也很长。
所以EM算法还是比较适合于大数据量的样本聚类或学习。
下面是一个图片分割的例子:
输入图像:
输出图像:
在右图中发现,每个形状的周围都存在一些黑色的类别,这是由于左图中每个形状的边缘部分是模糊的即(颜色值递减的),所以出现错分割或者说过分割。
Opencv之meanshift篇
本文主要是介绍了OPENCV里的meanshift分割函数cvPyrMeanShiftFiltering函数。
关于算法的详细叙述可参考《Meanshift:
arobustapproachtowardfeaturespaceanalysis》D,comaniciu2003.该函数基本参照上文所描述的算法流程编写的。
在opencv实现里加入了金字塔分层分割的概念。
Meanshift分割可供选择的只有一个参数即分割的精细度,也就是选择的核宽。
cvPyrMeanShiftFiltering函数只能输入8位三通道的RGB图像,输出时分割结果,没有提供分割的具体信息如类别数,模态等。
该函数采用的是UNIFORM核,选择的矩形区域为核覆盖区。
Meanshift算法在每个样本上都执行一次确定类别,所以复杂度比较高O(N*W),w是操作系数,处理一幅320*240图片需要2,3秒的时间。
函数在实现时也没有考虑消除一些小的类别(数量较少的)。
使得这个函数更像是discontinuitypreservesmoothing.
有很多图片经过这个函数处理后很难感觉出输入输出有什么大区别,其实是被平滑了。
观察仔细点可以看出来。
在opencv里面关于meanshift算法的应用还有两个函数CVmeanshift和CVCAMshift函数,都是用于跟踪的,效果还不错。
现在在视频跟踪里,meanshift方法+卡尔曼滤波还是挺流行的。
SURF:
speeduprobustfeature
SURF特点:
1.使用积分图像完成图像卷积(相关)操作,2,使用Hessian矩阵检测特征值;
3,使用基于分布的描述符(局部信息)。
兴趣点检测相关研究:
1998Lindberg介绍自动尺度选择的概念,允许检测图像中的兴趣点在它们的特征尺度上。
他实验了Hessian矩阵的行列式和Laplacian(和矩阵的迹一致)检测团状结构。
1998Lowe提出用DOG近似LOG。
2001Mikolajczyk和Schmid重新定义了这个方法,名为Harris-Laplace和Hessian-Laplace。
使用Harris或Hessian矩阵的行列式来选择特征点的闻之,使用Laplacian选择尺度。
此外Mikolajczyk(2005,2006)还做了一些算子的比较工作。
从中可知:
基于Hessian检测器比基于Harris检测器更稳定,重复检测性更好。
此外,使用Hessian矩阵的行列式比使用它的迹更有优势。
同时也发现使用类似于DOG的近似方法可以提高速度但只损失很小的精度。
描述符的相关研究
图像特征点的描述符一个共同点是表达了兴趣点邻域内小尺度的特征分布。
使得描述符的描述性更好,识别性更高。
SIFT的特点正是掌握了空间域亮度模式的大量信息(基于直方图方法:
8个方向的箱格,4*4像素)。
描述了特征点邻域内点的梯度方向信息,共128维。
PCA-SIFT:
36维,匹配速度更快,但区分度下降,并且延长了特征的计算时间。
GLOH:
区分度更高但是数据压缩花销时间太长。
2006Grabner使用积分图像近似SIFT。
可以达到和我们同样的速度。
但是相比SIFT质量有所下降。
(为SURF提供了重要信息积分图像)。
匹配算法:
BBF(k-dtree),balltrees,vocabularytrees,localitysensitinehashing.本文补充提出了,使用Hessian矩阵的迹来显著提高匹配速度。
在低维描述符下,任何算法的匹配速度都很快。
二.兴趣点检测。
使用HESSIAN矩阵的近似检测兴趣点。
使用积分图像加快计算。
2001ViolaandJones提出积分图像的概念。
1998Simard提出的盒形计算框架使用积分图像。
本文的创新点:
使用近似的Hessian矩阵来求特征点。
DOG近似LOG,盒形滤波近似不同的二次微分。
在3*3*3的邻域范围内寻找Hessian矩阵的行列式最大值。
9*9盒形滤波器相当于方差1.2的高斯函数。
图像尺度的改变是通过改变盒形滤波器尺寸实现的。
尺度空间的分组时,相邻组首尺度滤波器大小之差相差2倍。
如第一二组差6,则二三组差12.为了减少计算时间,第一组采样间隔1像素,第二组2像素,以此倍增。
特征点的精确定位即实现亚像素描述,通过LOWE文章中提出的泰勒级数展开,可求得。
三.特征点描述与匹配
本文提出的是,建立一阶Haar小波在x和y上的响应的分布(局部信息整合),使用积分图像提高计算速度,并且只有64维。
使用Laplacian(迹)的符号来索引特征点,方便匹配。
小波变换的重要用途是图像压缩。
在图像识别等应用中主要应用于人脸识别和行人识别。
2002haar-likefeatures
2001矩形特征与Adaboost(一种级联滤波器,识别)VIOL
1998ageneralframeworkforobjectdetection
1997pedestriandetctionusingwavelettemplate
3.1方向赋值
选定一个6S(尺度)的圆,对每个像素计算边长为4S的Haar小波。
使用原点在特征点,方差2s的高斯函数为权重函数。
计算60度滑动窗内的像素在x和y方向的小波模的和。
滑动窗以5度为一步转动,选择出圆内模值最大的向量,它的方向即为主方向。
基于Haar小波响应总和的描述符。
选取以特征点为中心边长为20S的正方形区域,其中正方形的边和特征点的主方向向量垂直。
(不同尺度的图像特征点选取的正方形边长不同)。
将5*5的局部正方形投影到4*4的的子图中。
每个描述符有4*4个子图组成。
用方差为3.3S的高斯函数产生权重系数,减小离特征点远的像素的比重。
匹配时可使用Hessian矩阵的迹的符号,提供额外匹配信息,加快匹配速度。
结合Kd-tree.
程序实现:
在opencv实现的函数里,圆形区域用方形区域替代。
在计算描述符的方形中边长是20*20,实际选取时是21*21,以特征点为中心。
另外由于矩形特征计算的缘故,边缘部分的几个像素不计算。
如果起始盒形滤波器的边长为9,则距离边界四个像素以内的点才可以计算。
整理电脑时,突然发现以前自己还写过这个,所以发上来保存下。
这是对SURF特征的简单介绍,包括它的来源和优点等。
^_^
彩色空间分割
彩色空间分割是基于单色图像(灰度图)分割技术在不同颜色通道上实现的。
灰度图分割技术常见的有:
直方图阀值化、特征聚类、边缘检测、基于区域的、模糊技术、神经网络等。
图像分割有公式化的定义(查文献)。
图像分割本质上是一个心理学感知的问题,不会纯粹受分割方法不同的影响。
灰度图的分割方法都是基于区域像素的非连续性或相似性。
基于非连续性的方法主要是为了检测孤立的点、边缘、线(灰度突然变化的地方)。
基于相似性的方法包括阀值、聚类、区域分割合并等。
色彩空间的转换都是对RGB三原色的线性和非线性的变换,RGB、HIS、LUV、CIE。
RGB三原色定理(比色法)使其成为最广泛使用的模型,便于显示颜色(应用于电视,数码相机等),但是由于其RGB具有很高的相关性,所以不便于颜色的分割和分析,并且RGB空间无法衡量两个颜色的相似性。
YIQ(美国)、YUV(欧洲),是两种电视色彩信号编码的空间,是在RGB空间上的两种线性变换。
HSI(hue-saturation-intensity)是另一种常用的颜色空间,因为它与人类的视觉较相近,还有一些HSI
的变种,HSB、HSV、HSL。
色调表示基础的颜色,是光线频谱中的峰值(主分量),饱和度表示颜色的纯度,即白光混合在基础颜色中的比例。
人类的视觉系统可以轻易的辨别出色调,但是对光照和饱和度的辨别却不包含颜色的信息,HSI真是表达了这样一种颜色空间。
当使用灰度级的算法时,可以使用I分量,当做物体识别时,可以使用H分量。
在处理非一致光照条件下(有阴影)图片时,这种方法特别有效,因为H分量与光照无关。
如果使用RGB空间则不行,因为光照、色调、饱和度都编码在了R、G、B中无法分割了。
缺点是在色彩空间的极限奇异坐标(圆柱表面)上不稳定。
基于物理特性的模型考虑了对象的对光照的反射率,折射率等物理因素,有利于做图像理解。
很多学者提议使用线性色彩空间,但是线性空间中三个基础元素的相关性高,且做图像处理时需在3D空间内。
相比较,非线性空间就具有较大的优势,只需在1D上处理,虽然存在奇异点不稳定的问题。
人类能够识别上千种的颜色和光强,但是只能识别24种灰度。
很多时候依靠灰度信息无法提取图像,但是颜色却可以。
颜色提供了除光强外更多的信息。
彩色图片的分割基本都是基于单色图片的技术,可以表达成下图模式:
各种分割方法和颜色空间,都有其优缺点(可参考下面的文献1),在使用的时候要根据具体情况选择和调整。
具体的图像分割算法基本分为了:
基于特征空间的(聚类、直方图等),基于区域的(区域生长、区域合并和分割等),基于边缘的,基于神经网络的,基于物理模型的。
方法之多,无法细说,大家可以参考相关文献综述:
1.
Cheng,H.D.,etal.,Colorimagesegmentation:
advancesandprospects.PatternRecognition,2001.34(12):
p.2259-2281.
2.Lucchese,L.andS.K.Mitra,Colourimagesegmentation:
astate-of-the-artsurvey.PROCEEDINGS-INDIANNATIONALSCIENCEACADEMYPARTA,2001.67
(2):
p.207-222.
3.中科院自动化研究所模式识别实验室有下载关于图像分割的PPT,介绍的也不错,还有关于计算机视觉的一些其他课件,也很不错,大家可以去下载来看看。
SIFT小结
《DistinctiveImageFeaturesfromScale-InvariantKeypoints》DavidG,Lowe
1.介绍:
特征提取过程:
1,尺度空间极值检测。
2,特征点定位。
(包括去除不稳定的点)。
3,特征点的方向赋值。
4,特征点描述子生成。
2.极值点检测:
尺度空间由输入图像和高斯函数卷积产生。
尺度空间的极值点由高斯差分函数与图像卷积二乘的DOG求的。
第二组第一层的图像是第一组第二层图像重采样1/2得到的。
极值点的检测是在DOG空间中进行,在三层中选择特征点领域的极值。
每组DOG中采样3层时,正确率最高,即要6层的高斯层。
尺度空间的间隔为1.6.
3.特征点的准确定位:
亚像素精度的计算,求取泰勒级数,计算出对比度低的点淘汰。
边缘不稳定的点通过Hessian矩阵判断。
4.方向赋值通过给每个像素点赋予方向值,可以使特征点的特征向量拥有旋转不变性。
缺点:
限制了描述子使用或抛弃一些图像的信息,特别是在旋转一致性上不需要所有测量值时。
方向直方图是由特征点领域内的采样点的梯度方向形成的。
分36格,每格10度。
每个采样点加入直方图是由其梯度幅值和高斯圆窗(1.5当前尺度)加权产生。
方向直方图峰值是局部梯度的主要方向。
80%最大值以后的峰值方向也可作为特征点的第二方向。
大概只有15%的点有多个主方向。
用抛物线来拟合三个与每个峰值最近的直方图的值,峰值位置差值方法可提高精度。
5,局部图像描述符每个特征点都具有三个基本属性:
位置,尺度,方向。
一个比较明显的方法是采样特征点局部区域的光强,通过规范化的相关性测量方法匹配。
对仿射变换还有3D视点的改变,非刚体的变形都很敏感。
Edelman,Intratorandpoggio(1997).证明了一个更好的办法,由生物视觉知道在原始视觉表层,复杂的神经元细胞对梯度的一个特定方向和空间频率有相应。
而梯度的位置在视网膜上允许移动一些神经元,而不是精确定位。
文章的受上面的启发,采用了梯度方向描述符。
但是通过另一个方式实现了位置移动。
6.描述符表达通过取与特征点主方向的差值来实现描述符的方向不变性。
用高斯窗加权每一个点的梯度是为了避免描述符的突变当窗口的位置发生改变时,同时减小边远像素梯度的影响。
为每个方向直方图分配了8个方向。
箭头的长度和直方图条目的尺度有关。
采用4*4方格采样,可使局部区域内的像素点偏移4个点而不影响描述符。
避免边缘影响的方法是三线插值。
光照不变性,是通过归一化特征向量实现的。
通过设阀值降低大梯度在单位特征向量里的影响。
最大不能超过0.2。
影响描绘子的结构复杂性因素:
方向数和直方图的组数(即采用多大的局部区域)。
4*4*8=128维。
4*4是16个直方图(每个直方图由4*4个点组成),8是方向数。
7.对象识别的应用对象识别的步骤:
1.首先单独的为每个特征点匹配数据库中的特征点(样本图像)。
2.初始匹配由于模糊的特征和背景的遮挡等出错,所以每个类别在第一次识别时,至少有三个特征是符合对象和它的位姿的。
这些类别有很高的匹配正确率相对于单个的特征匹配。
3.这些类别将被通过一个具体的几何约束去匹配模型。
结果可用来判断接收或拒绝假设。
关键点的匹配准则是通过求特征向量的欧氏距离来寻找最近邻,同时这个距离必须满足是次近邻点的0.8倍以上。
在高维空间中,有效的数据组织方法是K-Dtree。
我们使用一个近似搜索方法best-bin-first(BBF)算法。
作者在搜寻了200个最近邻候选点后停止,(5%)正确匹配率损失。
霍夫分类:
当有3个特征点正确匹配时,对象可以可靠的识别。
RANSAC匹配法可适用。
通过投票方式实现特征的聚类(和特征一致的对象位姿)。
每个特征点有四个参数:
2D图像位置,尺度,方向,和匹配点的数据库记录。
假设匹配是指开始的距离粗匹配。
通过匹配点对的四个方程计算3个参数,包括对象的平移,旋转,缩放等三个。
(不是全仿射,即没有切边变换在内平行四边形)。
通过哈希表来表达投票的箱格。
8.仿射参数求解用最小二乘法求解广义逆求解。
一个通常的方法是使用基础矩阵(hartley,zisserman,2000).但是基础矩阵方法需要七个匹配点对,相对与仿射变换方法只需3个匹配点对,且要求匹配点对有较高的稳定性。
验证模型是通过判断最后类别中的匹配点对个数,对于小的区域物体3个,大的物体或纹理丰富的10个。
9.应用场合:
单幅图像的多对象识别,位置识别,机器人的自主定位等。
10.结论:
阐述了SIFT特征点的特点及产生过程。
用SIFT特征完成目标识别,包括最近邻搜索,对象位姿的霍夫聚类,最小二乘位姿计算,最后验证。
其他应用还有3D重建,运动跟踪,分割,机器人定位,摄像机标定等。
未来的研究包括建立光照不变的色彩描述符(目前是单色的)。
局部纹理的测量已经在人类是绝中扮演了越来越重要的角色,可以整合到特征描述符中。
可以多特征结合进行对象识别。
另一个方向是特定对象类别的识别。
后记:
这是我在5月份看SIFT的文献写下的总结。
局部特征描述子有很多,最早的Harris角点,后来的SITF、Harris-Laplac、SURF等等,网上可以找到相关的文献,具体的可以参照K.mikolajczyk:
aperformanceevaluationoflocaldescriptors.SIFT算法后来也有两个变种:
PCA-SIFT和GLOH。
SIFT是目前应用最广的局部描述符,具有较高的稳定性和区分度,但是在计算时间上消耗较大,现在也有通过显卡(OPENGL和CUDA)加速的。
SURF和SIFT很相近,但是速度上有很大的提高,源于它使用了积分图像和Haar小波的技术,但是在匹配的性能上貌似稍逊色点。
尺度空间的概念经常出现在各类的图像处理技术中,所以理解它非常重要,可以参考Lindeberg(1994)的关于尺度空间理论的文献。
在后来看关于直线段的描述符时发现它和特征点描述符,在研究思路和实现上时很相似的。
基本就是1.选取一个判定准则找出特征点或线,一般都是选取局部极值(能量最大值);
2,判断稳定性,加一些约束条件,删除掉不稳定的特征;
3,产生描述符,通过核的方式加权区域信息,使得描述符的鲁棒性更强,然后对描述符做一些处理,归一化等。
这些技术基本都是建立在了利用图像梯度和梯度方向的信息上、再加个Laplace(二阶导数),特征描述子就反复倒腾琢磨这几个信息如何更有效的利用。
在这个方向上,感觉做的比较成熟了,很难有新的突破,现在很多文献的工作都是基于上述描述子的基础根据相应的应用做适当的修改,没有从原理上突破。
以上是个人愚见,仅供参考,如果大家有好的想法和意见一定要告知^_^。
五、统计描述
(一)集中程度的描述
1.平均数与数学期望
平均数是表示数据分布集中倾向的一个数,它可以代表