SPM即Spatial Pyramid Matching,是一种利用空间金字塔进行图像匹配、识别、分类的算法。SPM是BOF(Bag Of Features)的改进,因为BOF是在整张图像中计算特征点的分布特征,进而生成全局直方图,所以会丢失图像的局部/细节信息,无法对图像进行精确地识别。为了克服BOF的固有缺点,作者提出了SPM算法,它是在不同分辨率上统计图像特征点分布,从而获取图像的局部信息。
如上图所示,将level(i)的图像划分为pow(4,i)个cell(bins),然后再每一cell上统计直方图特征,最后将所有level的直方图特征连接起来组成一个vector,作为图形的feature。在后文的描述中cell和bins是等价的。
Pyramid Match Kernels:
1)假设存在两个特征集合X、Y,其中每个特征x的维度为d。将特征空间划分为不同的尺度,在尺度
下把特征空间的每一维划出
个bins,那么d维的特征空间就能划出
个bins(论文中这么描述,但是在实际中是用K-means或BOW进行聚类,得到的每个类中心就是一个bin)。
2) 在level(i)中,如果点x,y落入同一bin中就称x,y点Match,每个bin中匹配的点的个数为min(Xi, Yi),其中Xi, Yi代表相应level下的第i个bin。
3)表示X、Y在level
下的直方图特征,
表示level
中X、Y落入第i个bin的特征点的个数,那么在level
下匹配的点的总数为:
4)统计各个尺度下match的总数(就等于直方图相交)。由于细粒度的bin被大粒度的bin所包含,为了不重复计算,每个尺度的有效Match定义为match的增量
;
5)不同的尺度下的match应赋予不同权重,显然大尺度的权重小,而小尺度的权重大,因此定义权重为
6)两个点集X、Y的匹配程度pyramid match kernel为:
Spatial Matching Scheme
论文中的实验过程如下:
1)用 strong feature detector即SIFT进行特征检测,patch size=16*16,patch每次移动的步长spacing grid=8*8。
2)按照BOF相同的方法(即KMeans)构建包含M个words的dictionary。
3)利用图像金字塔把图像划分为多个scales的bins,然后计算落入每个bins中属于不同类别的word的个数,则图像X、Y最终的匹配度为:
4)把所有level下的直方图特征连接起来组成一个维度为的feature,作为分类的特征向量。
SPM代码下载:http://www.cs.illinois.edu/homes/slazebni/
参考文献:
1)Lazebnik S, Schmid C, Ponce J. Beyond bags of features: Spatial pyramid matching for recognizing natural scene categories[C]//CVPR 2006.