快速搜索算法

2024-10-05

快速搜索算法(精选8篇)

快速搜索算法 篇1

1 引言

视频编码标准H.264/AVC的压缩效率比MPEG-2、MPEG-4提高了近1倍[1],与此同时也造成了运算量的大幅增加,因此高效快速的运动估计算法成为H.264实时编码器实现的关键。由于运动是视频序列固有的根本特征,所以有效利用和适应运动特征的运动估计算法可以显著提高搜索速度和编码效率。

目前,典型的快速搜索算法有三步搜索法、四步搜索法、菱形搜索法、六边形搜索法、预测运动矢量场自适应搜索算法(PMVFAST)、具有匹配预判的自适应不规则模板搜索算法(AIPS-MP)等。此外,我国研究人员还提出了非对称十字型多层次六边形网格搜索算法(UMHexagonS)[2,3],这种算法采用整数像素运动估值,在高码率、大运动图像序列编码中能保持较好率失真性能,运算量很低,已被H.264标准采纳。

2 PAFME算法

实验发现,UMHexagonS算法的搜索策略也存在一些缺点和不足,如:对于不同的运动序列都采用固定的搜索模板和相同的搜索策略,这样虽能保证较高的搜索精度,但由于没有充分利用不同序列及不同块的特征,不能自适应地结束搜索,因此存在较多的冗余搜索点,造成搜索开销增大。笔者结合H.264标准采用的可变块尺寸运动估计技术的特点,提出了一种搜索模式自适应的快速运动估计算法(Search Pattern Adaptive Fast Motion Estimation,PAFME),并通过实验测试了算法性能。PAFME算法主要采用以下核心技术:初始搜索点预测,多搜索模式选择,利用经验阈值调整搜索模式的使用。

该算法的主要思想是在保证图像质量的前提下,减少算法中的冗余搜索点,从而加快运行速度。在该算法中使用由经验得到的整数型常数作为基值;对不同尺寸的块类型,采用对基值进行简单的移位操作,以作为不同的判断阈值。

在搜索的过程中,首先对初始预测点集中的部分预测点(中值预测点及原点)进行搜索,包括小菱形四点搜索和可能的密集搜索步骤;仍不满意,再搜索上层块类型预测点,而后按当前最佳点进行小菱形搜索或可延伸的六边形和小菱形搜索步骤。算法流程如图1所示。

3 实验结果与分析

把新算法嵌入到H.264的标准参考软件JM12.4中进行测试比较,以验证其有效性。测试条件:在基本框架下,采用SATD和RDO指标,搜索范围为所有编码模式,1/4像素精度,参考帧数为1,第一帧为I帧,其余为P帧。测试序列有:Forman(QCIF,10 f/s(帧/秒)),Paris(CIF,15 f/s),Football(SIF,30 f/s),各100帧。之所以选用纹理和运动复杂度各不相同的3种测试序列,格式、帧率均有差异,是为了充分测试算法对不同内容的视频序列在不同目标下的应用性能,并且选用4种量化参数以测试算法在不同码率下的性能。

采用亮度信号的峰值信噪比(PSNRY)、比特率、整数像素精度运动估计总时间(t)等指标对PAFME算法与JM12.4参考软件采用的快速算法(JM12.4FME)的性能进行比较,实验结果详见表1。可见,PAFME算法具有以下特点:1)PSNRY平均损失0.018 d B,最大不超过0.088 dB,所以新算法对视频重建质量的影响可忽略;2)比特率的增加未超过0.7%,所以新算法对编码效率影响很小;3)运算量有较大降低,整像素精度运动估计速度提升明显,耗时平均减少33%。

对上述测试序列,在不同量化参数下,PAFME算法与JM12.4FME相比,其整像素精度运动估计的耗时百分比(tPAFME/tJM12.4FME)见图2。由图可见,在不同量化参数下,PAFME算法性能稳定,即新算法的有效性受量化参数影响较小。对不同特征的信号序列,算法性能有所差异,对运动一致性较好的序列,整像素精度运动估计的耗时可减少35%以上,搜索速度较快。

4 小结

笔者针对现有算法的不足,提出搜索模式自适应的快速运动估计算法PAFME,结合H.264标准采用的可变块尺寸运动估计算法的特点,利用运动矢量在时空域及不同编码模式间的相关性,设计了初始搜索中心的预测方法。通过测试发现:自适应的搜索模式选择规则可以显著地加快运算速度,并保持了视频质量和码率基本不变,为高速的运动估计提供了一种新的方向。

摘要:提出了一种搜索模式自适应快速运动估计算法(PAFME),首先利用变块尺寸运动估计的特点与运动矢量的时空域相关性,预测初始搜索中心;采用多种搜索模式以适应不同运动特征,提出了搜索模式自适应的选择机制,以节省不必要的搜索点加快搜索速度;又能避免陷入局部极小。实验结果表明,与H.264/AVC的参考软件JM12.4相比,该算法使整像素精度运动估计的速度提高了30%~40%,同时保持了图像质量和码率基本不变。

关键词:运动估计,搜索模式自适应,H.264

参考文献

[1]OSTERMANN J,BORMANS J,LIST P,et al.Video coding with H.264/AVC:tools,performance,and complexity[J].IEEE Circuits and Systems Magazine,2004,4(1):7-28.

[2]CHEN Zhibo,ZHOU Peng,HE Yun.Fast motion estimation for JVT,Doc.JVT-G016[C]//Proc.7th JVT Meeting,2003.Pattaya,Thailand:JVT,2003.

[3]CHEN Zhibo,ZHOU Peng,HE Yun,et al.Fast integer pel and fractional pel motion estimation in for JVT,Doc.JVT-F017[C]//Proc.6th JVT Meeting,2002.Awaji,Island,JP:JVT,2002.

快速搜索算法 篇2

在这里浅谈一下怎样让自己的网站在最短的时间内被各大搜索引擎收录1、给站点增加一个robots.txt:因为搜索引擎抓取网站首先是判断你的网站根目录下有没有robots.txt,如果不禁止搜索引擎抓取自己站点的任何内容,可以放一个空的文件。也可以写成这样的内容: User-agent: *2、提交你的网站,你可以登陆各大搜索引擎提交你的网站,不过我有更好的方法,就是利用他们的人工服务,比如google下面的与google对话,这样他们的工作人员看见你的建议之后会人为的收录你的网站,这样速度更快。

3、发软文吸引蜘蛛:新注册的域名不可能有权威值,只有多写一些原创的文章,或者把别人的东西拿来修改一下,即所谓的“伪原创”。为此,你可以到admin5站长站、中国站长站和站长中国等站长类网站投稿,吸引蜘蛛。

4、在一些著名的it网站申请博客,如艾瑞网、donews、csdn、17Tech等,

5、在一些论坛呀,百度知道里面回答问题加入你的网站地址(注意千万不要到百度贴吧,必死无疑),增加你的反向链接。

6、给网站增加一个流量统计工具。

7、进google的网站管理员工具,把网址增加到里面,并验证通过。这个对google的收录非常重要。

8、提交给一些有名的dig类网站,如果不知道你可以在百度和google里搜索一下。

9、如果你的网站有ping功能,那太好了,可以直接去google的blog搜索里去ping一下,那样速度会更快。

站点的程序不同,可以推广的方式有点不同,我的网站用css静态页面,所以很受搜索引擎欢迎,代码简单,但是不利于推广。其他可用来推广网站的方法有提交给网摘、书签等。

快速搜索算法 篇3

矢量量化[1] (Vector Quantization, VQ) 是20世纪70年代后期发展起来的一种数据压缩技术。由于其压缩比大, 解码算法简单, 因此广泛用于图像压缩和语言编码等领域。

一个k维, 尺寸为N的矢量量化器可以定义为从k维欧几里得空间Rk到其一个子集C的一个映射, 即Q:

其中C={y1, y2, y3…yN}, yi∈Rk, i∈Γ={1, 2, …, N}。通常将集合C称为码书, 其尺寸 (大小) 为N, 即含有N个不同的元素。每个元素都是Rk中的一个矢量, 称为码字或码矢量。

虽然矢量量化编码算法有压缩效率较高, 解码器结构简单且易于实现的优点。但它的码书设计困难, 计算量大, 而且在高压缩率时存在方块效应。提高矢量量化编码算法性能的一个方向是与其他编码技术相结合, 如变换域矢量量化、预测矢量量化、地址矢量量化等, 提高编码性能。矢量量化编码的另一个困难是编码复杂度高。为提高编码效率, 应提高维数K与码书长度N, 而随着K和N的增大, 编码计算复杂度将很快增大。为提高矢量量化编码的速度, 人们提出了许多种快速搜索算法。这些快速编码算法可以有效地降低编码计算度以及编码时间。

矢量量化码字搜索中最原始的算法是穷尽搜索 (Full Search) 算法, 它需要计算输入矢量与所有码字之间的失真并通过比较找出失真最小的码字。对于大尺寸码书和高维矢量, 其计算复杂度很高。为了改进穷尽搜索算法, 人们提出了许多改进的快速算法。而一种有效的码字搜索算法的必须具备三个必不可少的因素:良好的初始匹配码字、合理的码字搜索顺序和强有力的码字删除准则。这种有效的码字搜索算法往往需要附加计算量和额外存储空间。附加计算分为在线计算和离线计算两种, 在线附加计算将占用编码时间, 而离线附加计算并不占用编码时间。如何尽量减少附加计算量和额外存储空间, 是许多快速算法所必须面临的问题。

矢量量化码字搜索算法分类:

(1) 部分失真搜索算法。部分失真搜索 (Partial Distortion Search, PDS) [2]算法是一种较简单有效的最近邻搜索算法。它的基本思想是:在计算某个码字与输入矢量之间失真测度的过程中, 始终判断累加的部分失真是否已经超过目前的最小失真, 一旦超出则终止该码字与输入矢量之间的失真计算, 转而开始计算另一个码字与输入矢量的失真测度。PDS常被用来与其他快速搜索算法结合起来运用, 来排除其它快速算法最后无法排除的码字。

(2) 基于不等式的快速码字搜索算法。平方误差测度是矢量量化最常用的失真测度, 它的特点使得许多常见不等式, 如三角不等式、均值不等式和绝对误差不等式, 能够有效地运用到快速搜索算法中来, 并成为快速搜索算法的数学基础。

文献[3]提出了基于绝对误差不等式 (Absolute Error Inequality, AEI) 的算法, 该算法利用两个矢量间绝对误差测度和欧几里德测度之间关系的绝对误差不等式, 结合PDS算法来排除不匹配的码字。文献[4]提出了一种等均值等范数的最近邻矢量量化码字搜索算法, 该算法利用了一个矢量的两个特征量, 均值和2-范数, 以排除更多的不匹配码字而节省失真计算量。文献[5]利用矢量及其子矢量的平均值和方差的特性, 构造了一组更完备的不等式判据, 在编码过程中排除不可能的码字, 提高矢量量化编码的速度, 节约编码时间, 减少运算量。文献[6]提出的算法利用了哈德码变换域矢量的两个特征量:均值和方差, 从而排除更多的不匹配码字节省失真计算量。文献[7]提出了一种改进的等范数最近邻码本矢量搜索算法, 该算法预先离线计算各码本的2-范数和它与中心线的矢量夹角, 再根据各码本的2-范数进行升序排列。编码时用二分法搜索到与目标矢量2-范数最近的码本矢量, 再排除不在目标矢量形成的夹角范围内的码本矢量, 从而节省失真计算量。文献[8]介绍了一种基于范数与方差的快速码字搜索算法, 该算法采用预排序的码书和有效的删除准则, 大大减小了码字的搜索范围。文献[9]研究了一种基于均方误差 (MSE) 测度的矢量量化快速编码算法, 算法利用小波变换的特点, 合理构造矢量。结合非线性插补矢量量化技术、矢量和值差法、部分失真排除法和一些典型的小波系数的极性判断, 在搜索编码过程中, 有效排除部分候选码字。

(3) 基于变换域的快速码字搜索算法。正交变换如KLT、离散余弦变换 (DCT) 和离散小波变换 (DWT) 因具备能量集中特性而被运用到矢量量化快速码字搜索算法中来。能量集中特性, 就是能量集中在少数几个变换域系数中, 而且在变换前后能量保持不变。因此, 在变换域中找最近邻码字和在空间域 (时域) 中找最近邻码字是等价的。而变换域矢量间的平方误差往往集中在变换系数的前几维分量上, 在这种情况下使用PDS算法将非常有效。将其变换域第一维分量与变换域输入矢量第一维分量最接近的码字作为变换域搜索算法的初始匹配码字。变换域搜索算法的优点是可以不使用额外存储空间, 即可以用变换域码字覆盖原始码字, 只要在解码端对得到的变换域码字作逆变换即可。

基于小波变换的快速码字搜索算法 (Wavelet Transform Search, WTS) 的主要思想是利用小波变换将码字的能量集中到少数几个变换系数中, 然后在这些系数上利用PDS算法高效地排除不匹配码字。文献[10]提出了一种使用多控制点的三角不等式和小波变换的快速搜索算法。文献[11]提出的基于小波变换的自适应快速码字搜索算法将多个控制点的不等式应用于删除准则, 使用一种简单有效的二次分裂法选择控制码字, 加快编码速度。

基于哈德码变换的快速码字搜索算法 (Hadamard Transform Search, HTS) [12]变换虽然不是严格意义上的正交变换, 但是变换前后的能量成倍数关系, 因此在变换域中搜索最近邻码字与空间 (时) 域中搜索最近邻码字是等价的。此外, 哈德码变换矩阵的元素不是“1”就是“-1”, 故哈德码变换不需要乘法运算。文献[13]提出的算法在Hadamard变换域内, 运用Chebyshev误差和PDS算法, 通过两次判决找到匹配码字, 减少搜索时间。

(4) 基于金字塔结构的快速码字搜索算法。基于金字塔结构算法的基本思路是首先判断码字金字塔中的低级矢量 (即金字塔的顶层) 与输入矢量金字塔结构中相应的低级矢量间的失真测度是否超出范围, 若超出, 则排除码字。否则继续判断级数高的矢量间失真测度是否超出范围。若一直无法排除, 则用PDS算法排除码字。但它的缺点是需要较大的离线附加计算量和额外存储空间。文献[14]提出了一种均值金字塔搜索算法, 该算法需计算每个码字的均值金字塔并保存在码书中, 按均值大小升序排列。搜索时使用平方欧氏距离计算其最小失真, 结合上下搜索法和删除准则排除不匹配的码字。

(5) 自适应搜索范围及顺序的快速码字搜索算法。强有力的码字删除准则对于快速搜索算法显然是非常重要的。另一方面, 搜索范围和顺序决定了需要检测码字的最少数目, 它在码字搜索算法中也是至关重要的。但是, 许多算法往往只注重用各种各样的排除准则尽快地排除那些不匹配的码字而忽视了码字的搜索范围和顺序。

文献[15]提出一种子码书搜索算法, 该算法利用了相临图像块间的高相关性, 搜索码书的一部分来找到码字的最小失真。文献[16]提出一种等和值块扩展最近邻矢量量化码字搜索算法, 该算法将码书按和值大小排序分块, 并将每一块中间或中间附近的码字的和值作为本码书块的特征和值。

结束语

快速搜索算法 篇4

H.264/AVC由ITU-T视频编码专家组 (VCEG) 与ISO/IEC MPEG组成的JVT (Joint Video Team) 联合开发, 沿用了基于块的混合编码技术, 但在技术细节上做了很大改进, 采用了多参考帧预测编码、多种可变块大小的帧间编码模式、1/4像素精度的运动补偿等先进技术。由于上述先进编码技术的引进, H.264/AVC成为近年来最为高效的一个视频压缩标准, 与MPEG-2、MPEG-4相比, H.264/AVC的压缩效率为它们的2倍[1]。但与此同时也造成了运算量的大幅增加。由于运动是视频序列所固有的根本特征, 通过充分利用与运动特征相适应的运动估计算法, 可以显著提高编码技术在搜索速度和编码效率方面的性能。

本研究提出一种搜索模式自适应快速运动估计算法 (PAFME) 。

1 典型的运动估计算法

早期的快速搜索算法有:三步搜索法 (TSS) 、新三步搜索法 (NTSS) 、二维对数搜索法 (LOGS) 、十字搜索算法 (CS) 、四步搜索法 (FSS) 、菱形搜索 (DS) 、六边形搜索等。在上述算法中, 最高效、最常用的是减少搜索点数的新三步法[2]、菱形法[3]与六边形法[4]等。此类快速算法基于如下假设:运动矢量为中心偏离分布, 且搜索点在接近全局最优点时对应的匹配误差单调下降。由于上述假设条件并不总能成立, 特别在运动较大时, 此类算法容易陷入局部极小, 会显著降低视频质量。近几年发展起来的基于运动矢量预测的快速运动估计算法, 如预测运动矢量场自适应搜索算法 (PMVFAFST) [5]、增强的预测带状搜索 (Enhanced Predictive Zonal Search, EPZS) [6]与具有匹配预判的自适应不规则模式搜索算法 (Adaptive Irregular Pattern Search with Matching Prejudgment, AIPS-MP) [7]和UMHS算法 (hybrid Unsymmetrical-cross Multi-Hexagon-grid Search) [8,9]等, 显示出了更好的编码性能和较快的搜索速度。此类算法利用运动矢量的相关性预测初始搜索中心, 基于“初始搜索中心接近全局最优点”的假设, 仅在初始搜索中心附近按特定搜索模式进行局部搜索;此外常引入匹配预判方法提前终止局部搜索, 以进一步节省计算开销。显然, 其性能依赖于初始搜索中心预测的可靠性及搜索模式的设计, 且与块的局部运动特征密切相关。

而在H.264/AVC参考软件中使用的就是UMHS算法。UMHS算法采用了基于运动矢量预测的快速运动估计技术的基本思想, 只是在初始搜索点、搜索模板及搜索中止准则的设计上, 充分利用了H.264中多块尺寸运动补偿模式与多参考帧的特点, 以解决因减少搜索点数而容易陷入局部极小的问题。UMHS算法主要步骤如下:

(1) 初始搜索点预测—空域的中值预测、上一层块尺寸类型的预测、相邻参考帧间的预测与时域预测, 搜索以上所有的初始搜索点, 判断是否满足提前中止准则;

(2) 不对称十字形搜索, 并判断是否满足提前中止准则;

(3) 多六边形栅格搜索, 包括半径为2像素的正方形模板与多个六边形 (16像素) 模板;

(4) 可延伸的基于六边形的搜索, 包括六边形模板与菱形模板。

其中, 提前中止准则基于3种RDC预测方式—中值预测、上层块尺寸类型预测与相邻参考帧的预测, 并且为量化参数的函数。此算法中每一步都是以前一步搜索所得的最佳匹配点为搜索中心。

可见, UMHS算法利用了H.264中多块尺寸运动补偿模式与多参考帧的特点;采用了块尺寸类型间运动矢量预测方法以及相邻参考帧间运动矢量预测方法, 提高了初始搜索点预测的准确性;采用了不对称十字形、多六边形栅格、六边形搜索等搜索模板, 以尽量避免陷入局部极小;设计了基于块尺寸类型间RDC预测与相邻参考帧间RDC预测的中止准则, 使得在运动矢量预测准确时能快速中止。

2 PAFME算法

经过大量实验测试和深入分析发现, UMHS算法的搜索策略仍存在一些缺点和不足, 即对于不同的运动序列都采用固定的搜索模板和相同的搜索策略, 这样虽能保证较高的搜索精度, 但由于没有充分利用不同序列及不同块的特征, 不能自适应地结束搜索, 存在较多的冗余搜索点, 产生很多不必要的搜索, 从而造成搜索开销增大。笔者结合H.264/AVC标准采用的变块尺寸运动估计的特点, 提出了一种改进算法即搜索模式自适应的快速运动估计算法 (PAFME) , 并通过仿真测试了算法的性能。PAFME算法针对UMHS算法的特点做了3个方面的改进:初始搜索点预测;多搜索模式选择;利用经验阈值调整搜索模式的使用。

2.1 初始搜索点预测

在初始搜索点预测方面, 其仅采用了空域的中值预测与上一层块尺寸类型的预测;如图1所示, 对运动矢量采用中值预测, 利用位于当前块左边、上边、右上 (或左上) 相邻块的预测值来预测当前块的运动矢量。

pred_mv=median (Mv_A, Mv_B, Mv_C) (1)

预测运动矢量为 (pred x, predy) 。当A块位于图片或宏块边界以外时, 其运动矢量将被 (0, 0) 所替代;若C块位于图片或宏块边界以外, 则被D块的运动矢量所替代, 而当B和C都不在边界之内时, 则将被第3块的运动矢量所替代。

在H.264变尺寸块匹配运动估计中, 同一块在不同编码模式下所得运动矢量也具有相关性[10]。编码模式为m的块, 其上层块尺寸类型下运动矢量集合记为MVUP, m=1时对应空集, 其具体构成如下:

undefined

式中 MVm—编码模式m下此块的运动矢量。

2.2 多搜索模式选择

搜索模板的大小和形状不但影响运动估计速度, 而且直接关系到算法的性能。为了获得更好的搜索速度和性能, 确定搜索模板的类型, 必须分析运动矢量分布的状况。

视频图像序列的运动矢量分布一般具有如下特性:

(1) 约有81.80%的运动矢量位于以中值预测点为中心的正方形搜索窗口内;77.52%的运动矢量位于菱形区域, 特别是有45.44%的运动矢量是零矢量。这说明绝大部分的图像块是静止或准静止的, 运动矢量分布具有中心偏置特性[11]。

(2) 运动矢量的概率分布是以中值预测点为中心向四周递减的;

(3) 运动矢量分布在水平和垂直方向的概率要比分布在相同半径下的其他方向大。

根据上述运动矢量的分布特性, 在PAFME算法中先后采用了局部3×3正方形搜索模式 (如图2所示) 、小菱形搜索模式 (如图3所示) 以实现小运动矢量的快速搜索;对于运动较大的块, 采用六边形搜索模式 (如图4所示) 可以实现搜索范围和搜索速度的折衷;另外对于运动剧烈或运动矢量分布不规则的区域, 为了在搜索中避免陷入局部极小, 采用“十”字形模式 (如图5所示) 和多层六边形模式进行大范围的稀疏搜索。在算法的执行过程中通过使用一些经验阈值自适应地调整搜索模式。

2.3 利用经验阈值调整搜索模式的使用

根据RDC选择搜索模式, RDC阈值采用简单的经验阈值 (Jth, 由经验得到的整数型常数作为基值, 其经验阈值的计算方法参见文献[12]) , 通过J

(1) 收敛条件:若满足收敛条件 (J

(2) 密集搜索条件:若满足密集搜索条件, 则进行密集搜索以避免搜索到的是局部最优。

3 测试结果与分析

为验证新算法的有效性, 把新算法嵌入到H.264的标准参考软件中进行测试比较。测试过程中选用的H.264视频编码器版本为JM12.4。测试条件如下:基本框架 (baseline profile) 下, 采用RDO、SATD, 搜索范围为16像素, 1/4像素精度, 针对所有编码模式, 参考帧数设为1, 第1帧为I帧, 其余各帧都为P帧。测试序列为:Silent (QCIF) , 帧率15 fps, 150帧;Forman (QCIF) , 帧率10 fps, 100帧;Paris (CIF) , 帧率15 fps, 100帧;Mobile (CIF) 与Football (SIF) , 帧率30 fps, 100帧。这些测试序列的纹理和运动复杂度各不相同, 格式从QCIF到CIF, 帧率也有差异, 以充分测试算法对不同内容视频序列在不同目标应用下的性能。为在较大码率变化范围下测试算法的性能, 量化参数QP设置为8、18、28与38。QP=28时PAFME算法与JM12.4参考软件中的UMHS算法在亮度信号的峰值信噪比 (PSNRY) 变化情况、比特率 (Bit-rate) 变化情况、整数像素精度运动估计总时间 (Time) 变化情况等方面的比较结果如表1所示。Foreman序列和Football序列的率失真曲线如图6、图7所示。

从表1中可以看出, 对所有测试序列采用PAFME算法的情况与采用JM12.4FME算法时相比, 具有以下特点:

(1) 亮度信号的PSNR损失平均为0.018 dB, 最大不超过0.088 dB, 对视频重建质量的影响可以忽略;

(2) 比特率的增加很小, 最大不超过0.7%, 编码效率基本不变;

(3) 整像素精度运动估计的耗时平均降低了33%左右。

以上仿真结果同时表明, 搜索模式选择规则的有效性受量化参数影响较小, 主要依赖于序列的运动特征。与JM12.4FME算法相比, 所提出的搜索模式自适应的快速运动估计算法显著降低了计算量, 同时保持了编码效率基本不变。

4 结束语

在分析现有算法的优势和不足之处的基础上, 本研究提出了一种搜索模式自适应的快速运动估计算法。针对H.264采用的变块尺寸运动估计技术的特点, 笔者利用运动矢量在时域、空域及不同编码模式间的相关性, 设计了初始搜索中心预测方法, 并引入了搜索模式自适应调整的方法。通过测试发现:自适应的搜索模式选择规则可以显著地加快运算速度, 并保持视频质量和码率基本不变。

参考文献

[1]OSTERMANN J, BORMANS J, LIST P, et al.Video cod-ing with H.264/AVC:tools, performance, and complexity[J].IEEE Circuits and Systems Magazine, 2004, 4 (1) :7-28.

[2]LI R X, ZENG B, LIOU M L.A new three-step search al-gorithm for block motion estimation[J].IEEE Transac-tions on Circuits and Systems for Video Technology, 1994, 4 (4) :438-442.

[3] ZHU S, MA K K. A new diamond search algorithm for fast block-matching motion estimation[J]. IEEE Transactions on Image Processing, 2000, 9 (2) :287-290.

[4] ZHU C, LIN X, CHAU L P. Hexagon-based search pattern for fast block motion estimation[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2002, 12 (5) :349-355.

[5]TOURAPIS A M, AU O C, LIOU M L.Predictive MotionVector Field Adaptive Search Technique (PMVFAST) -En-hancing Block based Motion Estimation[C].Proceedings ofVisual Communications and Image Processing 2001 (VCIP-2001) .San Jose:[s.n.], 2001.

[6]TOURAPIS AM, AUO C, LIOUML.Highly efficient pre-dictive zonal algorithms for fast block-matching motion esti-mation[J].IEEE Transactions on Circuits and Systemsfor Video Technology, 2002, 12 (10) :934-947.

[7]NIE Y, MA K K.Adaptive irregular pattern search withmatching prejudgment for fast block-matching motion estima-tion[J].IEEE Transactions on Circuits and Systems forVideo Technology, 2005, 15 (6) :789-794.

[8] CHEN Z, ZHOU P, HE Y. Fast Motion Estimation for JVT, Doc. JVT-G016[C]. 7th JVT meeting 2003. Pattaya:[s.n.], 2003.

[9] CHEN Z B, ZHOU P, HE Y. Fast Integer Pel and Fractional Pel Motion Estimation in for JVT, Doc. JVT-F017[C]. 6th JVT Meeting 2002. Awaji: [s.n.], 2002.

[10]CHEN Z, ZHOU P, HE Y.Fast Motion Estimation forJVT, Doc.JVT-G016[C].7th JVT meeting 2003.Pat-taya:[s.n.], 2003.

[11]CHEUNG C H, PO I M.A novel cross-diamond search al-gorithm for fast block motion estimation[J].IEEETransactions on Circuits and Systerns for Video Tech-nology, 2002, 12 (12) :1168-1177.

快速搜索算法 篇5

在判定两时序的相似度上还会遇到一些问题,如高频噪声、时间轴上伸缩等,对于这些问题已提出很多算法,如离散傅立叶变换[3],离散小波变换[4],滑动平均聚集近似方法[5]等。笔者引用时间序列分段表示思想,以某省电力公司ERP系统业务量统计数据为研究对象,提出一种快速相似性搜索的优化算法。

1 时间序列相似性度量

相似性度量是衡量两个序列相似性的依据,是相似性查找的基础,下面分别从时间序列距离度量和时间序列分段表示来介绍。

1.1 时间序列距离度量

1.1.1 欧式类距离

给定两个时间序列,X(X=n),Y(Y=m),当n=m的,它们之间的Euclidean距离定义为

1.1.2 PLR常用距离

一个时间序列,将其线性分割为K段,用大写字母A来表示:A={AXL,AXR,AYL,AYR,AW}。对于第i段Ai,Ai=(AXLi,AXRi,AYLi,AYRi,AWi)分别为第i段的起点横坐标,起点纵坐标,终点横坐标,终点纵坐标,第i段的权重。则距离D(A,B)定义为

1.2 时间序列分段线性表示

时间序列分段线性表示(PLR)是将时间序列数据基于时间表示成多段相邻的近似直线。在数据挖掘领域,PLR表示已经在下面一些领域得到应用:一是支持快速相似性搜索;二是支持时间序列新的距离度量,包括模糊查找、加权序列、DTW距离、信息反馈等;三是支持文本和数据序列。

2 算法描述

2.1 S7算法及其改进算法

基本搜素算法的本质就是搜索时序Q沿着被搜索时序R滑动,当Q与R中子序列相匹配时计算其相似距离。Eamonn Keogh曾提出的S7算法,有效地解决了效率和时间轴方向的伸缩问题。但是,S7算法的执行效率较低,大部分时间都在构造表,因此,王晓晔等人在其基础上提出了计算两个不等长序列相似性算法,但该算法在排列组合时间序列倾角上花费了大量时间,为此笔者在降低此算法的时间复杂度方面作了一些研究,提出了一种快速搜索算法。

2.2 快速搜索算法

输入数据。时间序列S1和S2,伸长和收缩范围ε≧0,相似性距离§≧0。

输出数据。若相似,则输出相似子序列的起始点和相似性距离。

算法描述。步骤1:比较S1和S2的长度,较长的标记为R(长度为M),较短的标记为Q(长度为N);R和Q的倾角相应地标记为r和q。步骤2:标记出Q两端的端点位置,左端子段记作QL,右端子段记作QR,计算RR和RL的时间差,当两者的时间差刚好等于N时,记录此子时间序列为Rs。步骤3:计算最大伸长和收缩角QL和QR,基于以下公式:θmin=θ-ε,θmax=θ-ε;标记其为(q Lmin,q Lmax)和(q Rmin,q Rmax)。将Rs中满足此范围的记作Rm。步骤4:计算Q和Rm的相似性距离,如果相似性距离小于§,则输出D及R中Rm的起点,否则输出“NULL”。算法示意图见图1。

3 应用实例

以某省电力公司下属各供电及超高压公司ERP系统的人力资源模块维护员工工资业务的业务量统计数据为例,使用ABAP开发平台,采用本文提出的算法进行相似性搜索数据挖掘。该实验中记录业务量数据482个,经分段处理,划分成31个子段,所有子段直线的倾斜角集合为R;搜索时序Q有5个子段,直线倾斜角集合为Q。设ε=3,§=5,实验结果见表1。

表1中C1,C2,C3,C4,C5指该电力公司下属的5家公司,由表1可以看出,C2和C3的业务统计数据和C1相似,C4与C5相似。由于C1和C2这两个公司的业务发生时间及业务量的起伏相似,可以认为其在人力资源管理上的管理方式也是类似的。这样,当其中一家公司改进业务管理方法,就可以被与其他相似的公司所借鉴。

4 结束语

对时间序列数据挖掘的研究越来越受到重视,其在金融分析和科学实验分析等方面的应用也越来越广泛。笔者基于S7算法的思想,对时间序列的相似性搜索算法提出改进,克服了以前此类方法在时间复杂度上的不足,实验过程中表现比较好的性能。

摘要:针对时序数据进行相似性挖掘方法的研究,提出一种寻找已知序列的所有相似性子序列的方法,用该方法对数据模拟,结果表明该算法提高了查询性能。

关键词:相似性挖掘,时间序列,数据挖掘

参考文献

[1]杨叔子,吴雅.时间序列分析的工程应用[M[.武汉:华中理工大学出版社,1991.

[2]FaloutsosC,Ranganathan M,ManolopoulosY.Fast Subse-quence Matching in Time SeriesDatabases[C]//Proceedings of ACM SIGMOD,1994.

[3]Agrawal R,FaloutsosC,Swamia.Efficient similarity search in sequence databases[C]//Proceedings of4th International Conference on Foundations of Data Organiza-tion and Algorithms.Berlin:Sp ringer2Verlag,1993:69-84.

[4]Chakrabarti K,Ortega-Binderberger M,Porkaew K,et al.Similar Shape Retrieval in MARS[C]//Proceedings of IEEE International Conference on Multimedia and Expo.Berlin:Springer-Verlag,2000:709-712.

快速搜索算法 篇6

提高H.264[1,2]帧间预测运动估计算法效率的主要技术可以归纳为3类:起始搜索点的选择,更高效的块匹配准则,减少搜索点数的搜索策略。以第3类效率最高、使用最多,较典型的算法有交叉法(CSA)[3]、菱形搜索法(DS)[4]、六边形搜索法(HEXBS)以及非对称十字形多六边形搜索法(UMHexagonS)[5]等。这些算法考虑到相邻帧之间的相关性,对最有可能出现匹配位置的区域进行优先搜索,如CSA,DS,HEXBS优先搜索预测中心;UMHexagonS优先搜索中心和水平方向的匹配点。然后根据局部收敛原理,搜索全局最优匹配。

笔者通过研究任意点关系来判断附近点阵是否存在最优匹配和次最优匹配点,并在此基础上提出了新的快速搜索算法。实验表明,该算法在没有视频运动估计模型先验概率的基础上依然有较好的峰值信噪比(PSNR)和比JM提供的快速算法更快的搜索效率。

2 搜索点匹配的方法

每个分割运动矢量(MV)的编码需要相当数目的比特。为减少传输比特数,可利用邻近分割较强的相关性,MV可由邻近已编码分割的MV预测而得。预测矢量差异基于已计算的MV和MVD(预测与当前的差异)。同时传输运动补偿残差也将需要大量的比特[6]。检验搜索算法优劣有3个主要指标:运算时间、PSNR和编码比特数。H.264采用MV编码比特和运动残差求和计算搜索区域各点的编码消耗。由于分割MV编码计算相对简单,H.264对其优先计算。如果某点MV编码消耗大于已经计算的匹配点编码总消耗,该点不是匹配点,就不用进行后续计算。

为便于分析,以4×4大小的待编码图像为例,只考虑各像素点亮度,而忽略色度值,并假定待编码宏块/子宏块图像水平方向灰度变化最慢。某搜索点残差值用SAD(Sum of Absolute Difference)方式编码。匹配点的SAD比非匹配点的大,将消耗更多编码比特。设Bn(x,y)为第n帧图像中的一个待编码宏块,定义Bn(x,y)在4×4帧间编码模式下的SAD为

式中:Y和分别为当前和参考图像的灰度值,(u,v)为宏块的运动矢量。

2.1 待编码宏块纹理方向计算

定义待编码图像水平方向纹理特征值为

式中:B为像素灰度差数目,对4×4水平方向,值为12,竖直和对角方向可类似分析,得到4个方向的纹理特征值。取最小值判断待编码图像纹理方向。如只有一个方向具有最小值,则认为其为该方向纹理。如有两个以上方向有相同最小值,则认为其为不确定方向纹理。4×8,8×4,8×8,16×8,8×16,16×16等分割方式可用类似方法讨论。这样得到5种可能的纹理类型。待编码图像为方向纹理的概率大,为不确定方向纹理的概率小。

如果有参考图像区域的帧内预测模式选择类型数据组,可以设计待编码宏块的加速算法。

2.2 匹配块附近纹理特征

对于4×4待编码图像,假定某点SAD值已预测,有

式(3)为其左侧邻近点的SAD值。比较两值大小,若(x,y)点的SAD大于(x-1,y)点的SAD,则有

不妨设公式(2)值为0,代入公式(4)。由假定,该4×4大小待编码图像为水平方向纹理,则水平方向有最小的TSAD值。在H.264中多细节区域采用小尺寸分割,平坦区域有大分割尺寸。4个方向的TSAD值总和应在均值附近正态分布。水平方向TSAD值最小,则一定有水平方向像素灰度值近似相等。

较小,所以该点的SAD值须进行计算。对于点(u+1,v),则一定有较大SAD值。对于(u+2,v),(u-3,v),(u+3,v)点可同样分析。

继续分析(u,v-1),(u,v+1),若(u,v)SAD值较小,由于待匹配图像为水平方向纹理,则(u,v-1),(u,v+1)一定有较大SAD。对于(u-1,v-1),(u+1,v-1),(u-1,v+1),(u+1,v-1)分析类似。

2.3 该方法特点

用某点和其附近点SAD关系在已知待编码图像的TSAD关系条件下,可以估计附近点SAD较小值点阵区域。由于MV编码对于邻近点变化连续,SAD变化对于小区域运动估计是主要因素,可以用运动估计编码总比特代替SAD比特作为判决条件。

该方法具有一定的误差,但对于快速搜索算法根据局部收敛的原理,搜索全局最优匹配的方法,可以设计出具有较小误差的快速搜索算法。

3 新的搜索算法———CMFS

运动估计时间的长短与搜索点阵的数目和初始搜索位置有关。UMHexagonS的搜索方法是按运动概率模型,对水平运动多搜索,安排了一个非对称初始搜索阵列。然后在最优匹配点附近做2次六边形和1次菱形搜索。由于真实场景水平运动较多,垂直运动少,该初始搜索阵列显然对真实场景有较好的匹配。但对于动画及垂直运动较多的场景就很难搜索到全局最优的匹配点。

3.1 CMFS局部搜索区域点阵

由以上分析,可得到对当前最优匹配位置附近可能出现全局最优匹配位置的局部搜索区域点阵,如图1。

3.2 速度最优的CMFS算法初始点阵

由于初始搜索阵列与实际视频特性有关,需要视频序列的先验概率模型。这里暂时给出基于速度最优的CMFS。根据速度最优原则,各局部搜索区域点阵拼接应能覆盖整个搜索区域。这样得到了速度最优的初始搜索点阵。对于不同的纹理类型有不同的初始点阵。对于水平方向纹理的待编码宏块,搜索范围为16,搜索区域为33×33的参考图像,搜索初始点阵如图2所示。

黑点为中央25个优先搜索点,对于多数视频序列,中央区域出现匹配点的概率很大。所以必须首先搜索。菱形位置为剩余的初始点阵,并且用图1的局部搜索点阵代替菱形位置可以覆盖绝大部分搜索区域。对于不能覆盖覆盖的少量边缘区域的点可以用全搜索处理,也可以不考虑。因为这些位置出现匹配点的概率太低,而且很多针对搜索范围的优化算法减少的正是边缘搜索点数。对于其他3个方向的初始点阵可同理得到。为得到更好的估计效果,可增加更多的初始搜索点。初始点的选取应根据视频序列先验知识得到。

3.3 CMFS的搜索策略

根据初始搜索位置的编码比特情况可以推测局部搜索区域点阵范围的其他位置的编码比特情况,从而得出这个局部范围的编码比特具有相关性。而目前大部分快速搜索算法则是根据参考图像编码比特局部相关的性质进行搜索的。整个CMFS算法步骤概括如下:

1)进行待编码图像纹理方向判断。判断方法可以由参考图像帧内预测模式选择得到,也可以直接用TSAD计算得到最小值进行判断。这大约为4个搜索点的计算量。然后进入步骤2)。

2)根据判断结果选择相应方向的初始搜索点阵。然后进入步骤2)。如果判断结果为不确定方向纹理,则进行全搜索算法或是利用其他的快速搜索算法。出现这种可能的概率非常小,接近零,进入步骤5)。

3)计算初始点阵各点的编码比特。得到最小的3个编码比特位置。进入步骤4)。

4)将相应的局部搜索区域点阵代替这3个最小编码比特位置,对这些位置进行全搜索。得到的最小编码比特位置即为匹配点,相应的MV为对应的运动矢量。进入步骤5)。

5)对不确定方向纹理进行全搜索算法或是利用其他的快速搜索算法。对方向纹理搜索的边缘剩余进行全搜索算法或是利用其他的快速搜索算法。

该算法是自适应的搜索算法,如果具有先验知识还可以进行相应的优化。

4 实验结果

实验采用JVT的JM14.0作为实验平台,主要的编码设置如下:帧格式为4∶2∶0,图像序列以30 f/s(帧/秒)的速度进行编码,量化步长QP值分别为28,28和30,对carphone,coastguard,foreman,grandma,highway,motherdaughter,salesman,silent,suzie共9个QCIF图像序列均用9帧图像进行测试。选取全搜索算法(Full),JM自带快速搜索算法(Fast)与CMFS进行性能对比。CMFS用TSAD判断纹理方向,初始搜索阵列为速度最优阵列,对不确定方向纹理进行全搜索,对搜索剩余位置不予搜索,得到如表1所示数据。

从表1见:CMFS速度优势明显,对9帧图像(其中1帧为I帧)编码效率比全搜索快近2倍,比快速搜索算法快1倍。对于carphone,salesman,suzie序列,CMFS的PSNR值略有降低,编码比特值略有提高。说明参考图像最优匹配点附近有灰度跳变的视频类型用速度最优的初始搜索阵列会有少量的比特率提高和质量下降。应尽量避免待编码宏块纹理数据集中于宏块边缘,根据跳变先验特性增加初始搜索点。对于coastguard,foreman,grandma,mother-daughter,silent序列,CMFS的PSNR值未降低,编码比特也无明显变化。这表明CMFS算法的普适性很好。对特定视频还可设计不同的CMFS算法。

5 结束语

笔者在研究H.264搜索算法的基础上,提出了基于待编码图像纹理分析搜索点是否匹配的方法,进而给出了一种新的快速搜索方法,并对其中速度最优的一种普适算法特例进行了实验研究。实验结果表明,该算法在保证编码质量没有明显下降的同时,运动估计速度有了显著提高;在处理中,算法跳变少,易于硬件实现,是一种综合性能优良的快速运动估计算法。而且该算法具有自适应性,同时能够根据不同视频特性设计不同的CMFS算法,利于商业化应用。

摘要:为减小H.264帧间预测运动估计算法复杂度,提出了一种基于待编码宏块纹理特性以排除部分搜索位置的方法。该方法可以大大减少待搜索位置的数目,缩短帧间预测时间。同时给出了一种基于宏块纹理的自适应快速搜索算法。实验表明,新算法在重建图像质量没有明显下降的前提下,编码速度有所提高。

关键词:H.264标准,视频编码,运动估计,纹理特性,CMFS

参考文献

[1]ITU-T Recommend H.264/ISO/IEC11496-10.Draft ITU-T Rec-ommendation and FinalDraft International Standard of Joint Video Specification(Advanced Video Coding)[S].2003.

[2]WIEGAND T.Overview of the H.264 video coding standard[J].IEEE Trans.Circuits and Systems for Video Technology,2003,13(7):1-19.

[3]GHANBARI M.The cross-search algorithm for motion estimation[J].IEEE Trans.Communication,1990,38(7):950-953.

[4]ZHU Shan,MA Kai-kuang.A new diamond search algorithm for fast block matching motion estimation[J].IEEE Trans.Image Pro-cessing,2000,9(2):287-290.

[5]CHEN Zhi-bo,ZHOU Peng,HE Yun.Fast integer pel and frac-tional pel motion estimation for JVT[C]//JVT-F017:Joint Video Team(JVT)of ISO/IEC MPEG&ITU-T VCEG6th Meeting,Awaji,Island,JP:JVT,2002.

快速搜索算法 篇7

聚类分析是一种无监督的机器学习方法,是数据挖掘中的重要研究方向之一[1]。它基于“物以类聚”原理,即在同一个簇中的数据对象之间具有较高的相似度,而在不同簇数据对象间具有较低的相似度。目前聚类分析已经广泛地应用到许多领域,如模式识别、数据分析、图像处理、市场分析、客户关系管理等[2]。聚类分析的常用方法可大致划分为五类:基于划分的方法、基于层次的方法、基于密度的方法、基于网格的方法和基于模型的方法[3]。

在数据挖掘下的聚类分析方法中,K-means算法是运用最广泛的基于划分的算法。它理论证实可靠、算法简单可行、收敛速度很快,对大数据集的处理很有效果。但K-means算法也存在一些缺陷:对K值的选择没有准确依据、聚类结果的好坏严重依赖初始聚类中心的设定、容易陷入局部最优解、只能处理数值属性的数据以及无法检测到的非球形簇[4]。

CBFSAFODP算法(Alex Rodriguez和Alessandro Laio在Science上发表了一篇名为《Clustering by fast search and find of density peaks》的文章,本文姑且称这篇文章中的算法为CBF-SAFODP)是属于数据挖掘下聚类分析方法中一种应用广泛的基于密度的算法。该算法简单新颖、对初始值不敏感、灵活性好、能检测非球形簇以及能有效地处理大数据集,在解决聚类初始中心[5]选取方面很有针对性,目前已被应用到数据挖掘。然而一些单一的聚类方法往往得不到最佳的聚类效果。

为了克服CBFSAFODP算法在聚类效果上的不足,本文提出一种融合K-means算法与聚类的快速搜索和发现密度峰算法的聚类算法。K-CBFSAFODP是把K-means算法融入到CBF-SAFODP中去,在执行CBFSAFODP算法选取好聚类中心后,再运用K-means算法进行迭代聚类,弥补了K-means聚类中心随机选取导致容易陷入局部最优的缺点。该算法为聚类算法选择初始聚类中心提供了一种新的思路,能够更加合理地选取聚类数K以及初始聚类中心,极大程度上减少K-means算法因初始聚类中心的不合理选取导致聚类结果的不稳定性[6],以及过多依赖参数选择问题。实验结果表明,K-CBFSAFODP比单独的K-means、CBFSAFODP具有更好的聚类效果。

1 聚类的快速搜索和发现密度峰算法

1.1 算法思想

CBFSAFODP算法[7]基于这样的设想:类簇中心被具有较低局部密度的邻居点包围,且与具有更高密度的任何点都有相对较大的距离。对于每一个数据点需要计算两个量(ρi和δi):一是局部密度;二是与高于该点的所有局部密度中与该点距离[8]的最小值,来刻画聚类中心。然后对每个cluster确定其边界区域[9],再将其中的数据点进一步分为cluster core和cluster halo,从而实现聚类的方法。

1.2 算法聚类中心的选取

S={xi|xi∈Rn,i=1,2,…,n},IS={1,2,…,n}。设ρi包含Cj(j=1,2,…,k)个簇,Cj(j=1,2,…,k)表示初始的聚类中心,dij=dist(xi,xj)表示数据点xi与xj之间的(某种)距离。

(1)样本xi与xj之间的欧氏距离:

(2)xi局部密度ρi:包括Cut-off kernel和Gaussian kernel两种计算方式。

Cut-off kernel:

其中,如果x<0,那么χ(x)=1,否则χ(x)=0;dc是一个截断距离。其实就是与点xi的距离小于dc的点的个数(不包括自己),这意味着对于大数据集,分析结果对于dc的选择具有很好的鲁棒性。根据大量实验表明,dc一般取聚类中所有数据点之间相互距离按升序排列的2%位置的距离数值定义为dc。

Gaussian kernel:

对比定义可知,cut-off kernel为离散值,Gaussian kernel为连续值。相对而言,后者产生冲突的概率较小,即不同数据点具有相同局部密度之概率更小。

(3)数据点xi的δi是点到任何比其密度大的点的距离的最小值。

设{qi}ni=1表示{ρi}ni=1的一个降序排列下标序,即它满足ρq1≥ρq2≥…≥ρqn。

则可定义如下:

(4)对于S中的每一数据点xi,可计算出(ρi,δi),i∈IS如图1所示,其中包含28个二维数据点。将二元对{(ρi,δi)}28i=1在平面上画出来(以ρ为横轴,为δ纵轴),如图2所示。

由图2不难发现,第1号和第10号数据点由于同时具有较大的ρ值和δ值,于是从数据集中脱颖而出,而这两个数据点恰好是图1所示数据集中的两个聚类中心。此外,编号为26、27、28的三个数据点在原始数据集中是“离群点”,它们在图2中也有特点:其δ值很大,但ρ值很小。

(5)由于图2对确定聚类中心起到决定作用,因此也将这种由(ρi,δi)对应的图称为决策图。然后,需要注意的是,在确定聚类中心时,采用的是定性分析而不是定量分析,且包含了主观因素,如图3所示。不同的人可能得出不同的结果,聚类中心就很难分辨了。

对于这些在决策图中无法用肉眼判断出聚类中心的情形(CBFSAFODP算法聚类中心个数的确定用“automatically”确实不太合适),给出一种确定聚类中心个数的方法,即计算一个将ρ值和δ值综合考虑的量:

显然,γ值越大,越有可能是聚类中心。因此,只需对{γ}Ni=1进行降序排列,然后从前往后截取若干个数据点作为聚类中心。

(6)然而“若干个”到底是取多少个?本文算法首先把降序排列好的γ在坐标平面上画出来,以下标为横轴,γ为纵轴,如图4所示。非聚类中心的γ值比较平滑,而从非聚类中心过渡到聚类中心时γ值有一个明显的跳跃,这个跳跃用肉眼或数值检测都可以判断出来。

1.3 CBFSAFODP算法步骤

Step1初始化及预处理:

Step1.1给定用于确定截断距离dc的参数t∈(0,1);

Step1.2计算距离dij,并令;

Step1.3确定截断距离dc;

Step1.4按照Step1.1或Step1.3计算{ρi}Ni=1,并生成其降序排列下标序{qi}Ni=1;

Step1.5计算{δi}Ni=1及{ni}Ni=1:

Step2确定聚类中心,并初始化数据点归类属性标记(ci)Ni=1,具体为:

Step3对非聚类中心数据点进行归类:

Step4若nc>1,则将每个cluster中的数据点进一步分为cluster core和cluster halo:

Step4.1初始化标记hi=0,i∈IS;

Step4.2为每个cluster生成一个平均局部密度上界:

Step4.3标识cluster halo:

2 K-means算法

2.1 K-means算法的思想

K-means算法[10]是以k为参数,把n个数据对象分为k个簇,每个簇内的数据对象具有较高的相似度,而不同簇之间具有相对较低的相似度。相似度是通过计算一个簇内数据对象的平均值得来的,相似度的定义是划分关键,本文中是计算数据对象之间的赋权欧式距离[11]。K-means算法的基本思想是:首先在n个数据对象中随机地选择k个对象作为初始聚类中心;接着按最小距离原则来计算每个数据对象到聚类中心的距离,将其赋给最近的簇。然后,重新计算每个簇的平均值,计算收敛函数,直到各个聚类的中心不再变化,算法则终止。否则,重复上述过程。

2.2 K-means算法的一般过程

输入:簇的数目k以及n个数据对象的数据集。

输出:E不变时满足目标函数值最小的k个簇。

Step1从给出的n个数据对象中随机选出k个对象作为初始聚类中心来执行;

Step2计算数据对象与各个簇的聚类中心的距离,将每个数据对象赋给与其距离最近的簇;

Step3重新计算每个新簇的均值,作为新的簇的聚类中心,nj表示第j个簇数据对象个数,Cj表示第j个簇;

Step4计算E值,表示簇Ci的聚类中心,Ci表示第i个簇;

Step5直到E不再发生明显的变化时,算法终止;否则转向Step2。

3 融合K-means算法与聚类的快速搜索和发现密度峰算法

3.1 K-CBFSAFODP算法思想

针对K-means算法随机选取k个点作为初始聚类中心进行迭代操作而导致聚类结果的不稳定,本文提出了融合K-means算法与聚类的快速搜索和发现密度峰算法。该算法首先需要对每个数据计算两个量,即ρi和δi,通过这两个量来刻画聚类中心。ρi和δi值越大,该点越是可能是聚类中心。再运用K-means算法进行迭代聚类,且引入信息熵计算赋权欧式距离来更准确地规范各对象的差异程度,从而更好地聚类。

3.2 使用熵值法确定各数据对象间赋权欧氏距离

由于要对初始聚类中心以及k值做大量的预处理,来提高聚类的质量,本文引入了信息熵来度量各属性权重,计算各数据对象之间的权重系数。熵是体系混乱程度的度量。一个属性的变异程度越大,则整个系统越是有序的,且该对象属性的信息熵会越小,它提供的信息量就会越大,权重也就会变得越大;反之亦然。

(1)设数据集有m个对象、n维属性:

本文引入信息熵,计算各数据对象的赋权欧氏距离,可以更加入微地分析各个对象的差异程度。

(2)首先对数据对象属性进行标准化处理,使不同量纲的数据可以进行比较:

其中,Mij为数据对象xi的第j维属性值比重,xij为属性值。

(3)分别计算第j维属性的熵值和权值:

熵值:

权值:

其中:

(4)赋权欧氏距离的计算公式为:

在选择赋权欧氏距离作为相似性度量后,各个对象之间的差异程度能够准确地计算出来,从而可以提高聚类的准确度。

3.3 K-CBFSAFODP算法描述

输入:待聚类的n个数据对象的数据集。

输出:满足目标函数最小的k个簇。

Step1使用熵值法计算数据对象赋权欧式距离dij,并令,将其补成满矩阵;

Step2确定截断距离dc,计算的距离dij(i<j)共有个进行升序排列;设得到的序列为d1≤d2≤…≤dM,取该序列前百分之二的数,利用round函数是按指定的位数进对数值进行四舍五入;

Step3根据式(3),本文选择Gaussian kernel来计算{ρ}ni=1,并生成其降序排列下标序{qi}ni=1;

Step4根据式(4)计算出{δi}ni=1以及{ni}ni=1;

Step5令γi=ρiδi,i∈IS,γ值越大,越有可能是聚类中心;

Step6确定聚类中心{cj}kj=1与k的值;

Step7计算数据对象与各个簇的聚类中心的距离,将每个数据对象赋给与其距离最近的簇;

Step8根据式(5)重新计算每个新簇的均值,作为新的簇的聚类中心;

Step9根据式(6)计算E值;

Step10直到E不再发生明显的变化时,算法终止;否则转向Step7。

4 实验分析

为了验证融合算法的效果,本文对CBFSAFODP算法、K-means算法以及K-CBFSAFODP算法进行了对比实验。实验采用了Matlab R2013a开发环境,Intel(R)Core(TM)2 Duo CPU2.20 GHz,6 GB内存,在Windows 7操作系统上运行。

实验使用了UCI机器学习数据库中的Iris、Wine和自定义人工数据集Dataset作为实验数据。对K-means算法、CBF-SAFODP以及本文改进的算法K-CBFSAFODP在选取不同初始聚类中心运行100次后进行比较鉴定,发现融合的K-CBF-SAFODP算法在聚类误差平方和、迭代次数、聚类时间和聚类的准确率等方面有极大的优化提升。实验的数据集概述情况如表1所示。

为了说明初始中心选取的有效性,本文选取UCI上Iris数据进行验证。Iris数据集包含150条样本记录,分别取自3种不同的鸢尾花的花朵样本,每一类各50条记录,其中每一条记录都含有4个属性:sepal length、sepal width、petal width和petal length,共聚成3类。初始聚类中心选取对比如表2所示。

由表2可以看出,本文算法的Iris数据集初始化聚类中心与实际数据中心非常接近,表明该算法对Iris数据比较有效,同理对于Wine和dataset数据集也有一样的效果。

由图5可得知,聚类的每条属性在聚类过程中作用是真实不同的,应加以区分对待。K-means算法恰恰忽略了数据对象属性对聚类作用的差异度,使得聚类结果与本来聚类结果之间存在很大差异。

如表3所示,可以看出本文算法在误差平方和以及迭代次数上明显优于K-means算法。

关于算法聚类结果的评价,除了常用的聚类误差平方和、聚类时间和聚类准确率评价方法之外,还可以采用F-measure指标、Rand指数和Jaccard系数对聚类结果进行比较分析。后三个评价指标都是在已知正确分类信息的前提下对聚类算法的聚类结果进行评价的有效指标。

F-measure采用信息检索的精确率和召回率思想。数据所属的类i可看作是集合Ni中等待查询的项;由算法产生的簇Ck可看作是集合Nk中检索到的项;Nik是簇Ck中类i的数量。类i和簇Ck的精确率和召回率分别是:

精确率:Precision(i,Ck)=Nik/Nk

召回率:Recall(i,Ck)=Nik/Ni

F-Measure是Precision和Recall的加权调和平均(α是参数):

当α=1时,就是最常见的F1,即:

F-measure可看成分类i的评判分值。对聚类结果来说,其总F-measure可由每个分类i的F-measure加权平均得到:

其中:|i|为分类i中所有对象的数目。

Rand指数和Jaccard系数评价指标的定义如下:设U和V分别是基于数据集的两种划分;其中U是已知正确划分,而V是通过聚类算法得到的划分,定义a、b、c、d四个参数。设a表示U和V都在同一类的样本对数目;b表示在U中为同一类,而在V中却不是同一类的样本对数目;c表示在V中为同一类,而在U中却不是同一类的样本对数目;d表示U和V都不在同一类的样本对数目。n(n-1)/2=a+b+c+d,其中,n为数据集中所有样本数。令M=a+b+c+d,则M表示所有的样本对。Rand指数和Jaccard系数的定义如下:

Rand指数:R=(a+d)/M

Jaccard系数:J=a/(a+b+c)

其中,R表示Rand指数;J表示Jaccard系数。

由上述定义可知,F-Measure是Precision和Recall的加权调和平均,最优划分期望其值尽可能大;Rand指数表示聚类结果与原始数据样本分布的一致性;Jaccard系数表示正确聚类的样本对越多,聚类效果越好。

由图6、图7和图8可知,F-measure、Rand指数和Jaccard系数的三个聚类有效性指标显示,K-CBFSAFODP算法优于K-means算法和CBFSAFODP算法。图9、图10和图11是对Iris、Wine和自定义数据集Dataset分别应用K-means、CBFSAFODP和K-CBFSAFODP聚类准确率对比图。从图中可以看出,K-CBFSAFODP算法的聚类准确率要明显优于K-means算法和CBFSAFODP算法。且融合算法K-CBFSAFODP首先进行了一个优化初始聚类中心的过程,因此比原有算法更加稳定,能得到更准确的聚类中心,快速地到达收敛。总之,实验结果表明,本文提出的K-CBFSAFODP具有稳定性强、准确率高、收敛速度快的优点。

5 结语

K-means算法初始聚类中心选取的随机性所带来的聚类结果的不稳定性,以及要求用户事先指定K值,限制了许多实际应用。本文引入了信息熵以及快速搜索和查找聚类的密度峰,用信息熵对数据对象属性进行赋权来计算对象间的距离,来规范数据的属性,提高聚类的准确率;然后利用数据点的局部密度以及高于该点的所有局部密度中与该点距离的最小值,对数据集的初始中心进行预处理,来刻画初始聚类中心。提出了融合CBFSAFODP算法和K-means算法的聚类算法K-CBFSAFODP。融合的算法给聚类中心以及聚类个数K值的选取提供了新的有效依据,从而摆脱了随机选取聚类中心导致的聚类结果的不稳定性和用户操作的难度,大大提高了聚类的质量和稳定性。

参考文献

[1]Datta Souptik,Giannella Chris,Kargupta Hillol.Approximate Distributed K-Means Clustering over a Peer-to-Peer Network[J].IEEE Transactions on Knowledge and Data Engineering,2009,21(10):1372-1388.

[2]Zhou Tao,Lu Huiling.Clustering algorithm research advances on data mining[J].Computer Engineering and Applications,2012,48(12):100-111.

[3]Wang Jun,Wang Shitong,Deng Zhaohong.Survey on challenges in clustering analysis research[J].Control and Decision,2012,27(3):321-328.

[4]於跃成,刘彩生,生佳根.分布式约束一致高斯混合模型[J].南京理工大学学报,2013,37(6):799-806.

[5]黄敏,何中市,邢欣来,等.一种新的K-means聚类中心选取算法[J].计算机工程与应用,2011,47(35):132-134.

[6]Fahim A M,Salem A M,Torkey F A,et al.An efficient enhanced kmeans clustering algorithm[J].Journal of Zhejiang University SCI-ENCE A,2006,7(10):1626-1633.

[7]Rodriguez A,Liao A.Machine Learning.Clustering by fast search and find of density peaks[J].Science,2014,344(6191):1492-1496.

[8]陈磊磊.不同距离测度的K-Means文本聚类研究[J].软件,2015,36(1):56-61.

[9]Qiu Baozhi,Wang Bo.Cluster boundary detection technology for categorical data[J].Journal of Computer Applications,2012,32(6):1654-1656.

[10]吴夙慧,成颖,郑彦宁,等.K-means算法研究综述[J].现代图书情报技术,2011(5):28-35.

快速搜索算法 篇8

在现代社会中,火灾、爆炸、坍塌事故常有发生,救援过程中因建筑情况不清,意外坍塌事故等导致救援人员遇难的惨剧时有发生。为避免此类事故,应用机器人及时探知险情和受困人员的情况和位置有着极大的应用意义。论文中将机器人所面临的搜救环境抽象为一个迷宫,而搜救就是要在迷宫中先搜索到目标物并带着目标物返回到出发点处。

迷宫的种类[1]有很多,而用的比较普遍的是Perfect迷宫,所谓的Perfect迷宫是一种没有任何环路且没有任何不能到达的区域。本次实验中,所选择的迷宫环境都为Perfect迷宫。目前,经典的搜索路径算法有D*算法和A*算法,而在迷宫中运用最为普遍的搜索算法是泛洪算法,而泛洪算法是一种基于改进的深度优先搜索算法[2]。泛洪算法在搜索过程中多次遇到目标点,但它的目的是要从这些路径中找到最快到达目标点的一条路径,原始的泛洪算法不适合本次实验中的搜救应用,于是,我们在实验中是用深度优先搜索算法进行比较研究。Takayuki Goto,Takeshi Kosaka研究了A*以及D*算法在ITS(智能运输系统)和机器人路径规划中的应用,确定了A*算法以及D*算法的优势[3]。而对于A*算法中启发式函数的选取,已有多种选择。在启发式函数的选取上,有对A*算法估价函数所出现的问题,将距离和角度进行归一化处理[4];也有对当前节点进行评估的思想上,增加了最短路径中当前节点的父节点,并对当前节点与终节点的距离进行了评估,这使得A*算法的搜索方向更加趋向终点,从而提高了搜索速度[5];还有一般情况下对启发式函数的设定选择为两点间的欧几里得距离[6];

本次实验中,将分别对含有三种不同启发式函数的A*算法与深度优先搜索算法用于迷宫中进行比较仿真研究。

1 实验研究

1.1 实验研究方法

实验研究目的是将算法用于现实搜救中,既然是为了搜救,那么时间是关键,搜索迷宫所用时间的长短就成为评价算法优劣的主要因素。对于机器人来说,所处的迷宫环境是未知的,它只能通过传感器感测到目标点所在的大致位置,然后根据算法一步一步的搜索到目标物。从出发点处找到目标物时所耗的时间我们记录为搜索迷宫所用的时间,当然,搜救的目的不仅仅是为了找到目标物,同时是需要在找到目标物后将目标物带回至出发点处。从目标点返回到出发点时,如果沿之前的原路返回,那就会浪费很多没必要的时间,使搜救时间变长,所以我们要做的工作是要将之前的走过的路径进行优化,使机器人带着目标物返回出发点时不用走“冤枉路”,从而节省搜救时间。

真实环境中,目标物在目标点处通过敲打墙壁或地面等发出声音,模拟“呼救”,从而让机器人通过传感器感知到目标物。但由于外界因素(例如:传感器的精度,迷宫环境中障碍物对声音的阻碍作用等)的干扰会导致机器人只能判断出目标物的大致位置,这个大致位置是随着机器人离目标物越来越近而会越来越精确,直至找到目标物。

而在本次仿真实验中,为了能够比较真实的模拟真实环境,我们人为的让目标点坐标产生了一定的偏差,并且让这个偏差值随着机器人越来越靠近目标点而变得越来越小。

1.2 深度优先搜索算法

所谓“深度优先”,即:状态树的生长或展开,首先沿状态树的深度方向进行。深度优先搜索算法需要记录下状态树的生长过程,深度优先搜索算法是一种盲目的搜索算法,搜索中可能很多次的搜索到目标点,深度搜索算法通过不断剪枝,寻找出一条从起始点到目标点最近且最省时的路径,即深度优先搜索算法也是一种全局的搜索算法,这样的深度优先搜索算法运用到未知迷宫搜救中是没有意义的。而本次实验中,深度优先搜索算法是以找到目标物为目的,没有剪枝的步骤,只要搜索到目标物,迷宫的搜索过程就成功退出。

1.3 A*算法

A*算法是人工智能中的一种搜索算法,是一种启发式搜索算法,它不需遍历所有节点,只是利用包含问题启发式信息的评价函数对节点进行排序(Node Ordering),使搜索方向朝着最有可能找到目标并产生最优解的方向。它的独特之处是检查最短路径中每个可能的节点时引入了全局信息,对当前节点距终点的距离做出估计,并作为评价节点处于最短路线上的可能性的度量。A*算法中引入了评估函数,评估函数如下:

其中:n是搜索中遇到的任意状态。g(n)是从起始状态到n的代价。h(n)是对n到目标状态代价的启发式估计。仿真实验中,我们为A*实现了三种启发式函数,如引言中所述,一种启发式函数为当前点到目标点的欧几里得距离评估,我们定义为A*(1);

即A*(1)算法的评估函数为:

其中启发式函数h1(i)为当前节点i到偏移目标点的欧几里得距离。

另一种启发式函数在第一种的启发式函数中增加了当前节点的父节点到目标点的欧几里得距离评估,我们定义为A*(2);

A*(2)算法的评估函数为:

j为当前节点的父节点,h2(i)为已评估出的当前节点i的父节点到偏移目标点的距离。

最后一种启发式函数是在第一种启发式函数的评估上加入了当前点到目标点的角度评估,我们定义为A*(3)。

A*(3)算法的评估函数为:

其中,为权重值,取ω1=0.55,ω2=0.45;θ为当前点到偏移目标点的直线与水平线的夹角,α为起始点到实际目标点的直线与水平线的夹角,角度如图2中标示;l为当前点坐标到实际目标点坐标的欧几里得距离,L为起始点到实际目标点坐标的欧几里得距离。

2 仿真实验分析

实验的迷宫环境设置如下图所示,将环境划分为一个一个的栅格,红色栅格为障碍物,白色栅格为通道,生成的10个迷宫均为Pefect迷宫,保证了整个迷宫中至少有一条从起点到目标点的通道并不会产生环路。起点坐标设为(0,0),目标点坐标设为(24,24)。

由于机器人在检测呼救信号时存在不准确因素(例如:传感器的精度,迷宫环境障碍物对声音的阻碍作用等),都会导致机器人在搜索时存在或多或少的误差,所以仿真实验中,为了比较真实的模拟现实搜救环境,我们对目标点做了偏差处理,处理方式如图2中所示。

其中,(xs,ys)为起始点坐标,(x,y)为机器人当前所在位置坐标,(xt',yt')为偏移目标点的坐标,(xt,yt)为实际目标点坐标:

为目标点产生的偏移误差:

其中,k为权重值,通过实验,取得k=40,l为当前点坐标到实际目标点坐标的欧几里得距离,L为起始点到实际目标点坐标的欧几里得距离,rand(-1,1)为随机数,随机数的取值范围为(-1,1)。

实验中,我们将三种A*算法分别在10个不同的Perfect迷宫中运行,统计结果如表1所示。

通过上表的结果分析可知,正如文献3中所述,加入了父节点评估的A*算法(即A*(2))在搜索时,提高了搜索速度;而在文献2中所述的提高搜索速度的优势在本次实验中没有很好的体现出来,这是因为,在本次实验中,我们加入了偏差值,对于A*(3)中的估价函数,不仅在距离上加入了偏差,同时在角度上也加入了偏差,从而使得A*(3)算法在本次搜索中没有优势。从表中我们还可以得出,带有启发式函数的A*算法要优于深度优先搜索算法。

仿真实验中,对于返回路径的优化,我们通过算法设定,让机器人每走过一个栅格都将该栅格的状态标记为“已访问”,被标记为“已访问”的栅格,机器人在搜索时就不会再走,除非遇到是死路的栅格。那么在算法中我们定义两个状态,一个状态是通过栅格的次数(count),另一个状态是栅格是否为分支。当机器人搜索到目标点后,返回时只需要走count为1或者栅格为分支(is Branch=true)的路线就是返回的最优路线,且不会走“冤枉路”。

3 结论

本文通过仿真实验比较了A*算法与深度优先搜索算法在未知迷宫中的搜索应用,仿真实验中还同时比较了三种带有不同启发式函数的A*算法的应用,通过仿真实验比较得出的结果是:总体来说,未知迷宫中,在仅知道目标点的大概位置的情况下,进行搜索时,A*算法要优于深度优先搜索算法,而A*算法在启发式函数不同的情况下,搜索产生的结果也是不同的,从上述仿真实验结果的比较中可以得出,A*(2)算法搜索路径的时间是最优的,其次是A*(1)和A*(3)算法。同时,从实物实验比较结果也可以得出,带有启发式函数的A*算法要优于深度优先搜索算法。深度优先搜索算法在未知迷宫中进行搜索时是盲目的,而A*算法在搜索过程中通过引入启发式信息来实现向目标节点移动的判别,无需遍历地图,使得计算复杂度相对较小,实现了快速、高效。但是,这也导致搜索的过程中排除了大量节点,而由于经验及实际问题的复杂性,引入启发信息的代价函数无法做到完全正确,这些被排除的节点可能就是最优路径的节点之一。

摘要:本文通过仿真实验比较研究了深度优先搜索算法和三种不同启发式函数的A*算法在标准迷宫中的应用,在实验中,迷宫环境对机器人是未知的,而由于迷宫环境的特殊性——未知的迷宫环境中很少有不会碰撞的路径,从而增加了机器人搜索的难度。机器人搜索的目的是为了进行搜救,因此机器人应该要在尽量短的时间内搜索到目标物并将目标物带回。通过仿真实验对比了不同启发式函数的A*算法与深度优先搜索算法的性能,最后得出在迷宫搜索中A*算法要优于深度优先搜索算法。

关键词:迷宫搜索,深度优先搜索算法,A*算法

参考文献

[1]http://www.astrolog.org/labyrnth.htm.

[2]A.Francy Golda,S.Aridha,and D.Elakkiya,"AlgorithmicAgent for Effective Mobile Robot Navigation in anUnknown Environment."Intelligent Agent&Multi-AgentSystems,2009,IAMA 2009.

[3]Takayuki Goto,Takeshi Kosaka,and Hiroshi Noborio,"Onthe Heuristics of A*or A Algorithm in ITS and Robot Path-Planning,"Proceedings of the 2003 IEEE/RSJ InternationalConference on Intelligent Robots and Systems,pp.1159-1166,Oct,2003.

[4]史辉,曹闻,朱述龙,"A*算法的改进及其在路径规划中的应用"[J].测绘与空间地理信息,2009,32,6:208-211.

[5]张仁平,周庆忠,熊伟,"A*算法改进算法及其应用"[J].计算机系统应用,2009,98-100.

上一篇:“学生工作室”制下一篇:低碳经济发展论文