基于随机匹配的非局部相似块搜索算法

2016 年 第25卷 第3期 https://www.360docs.net/doc/b410681125.html, 计 算 机 系 统 应 用

Software Technique ·Algorithm 软件技术·算法 209

基于随机匹配的非局部相似块搜索算法①

余文森, 吴 薇

(武夷学院 数学与计算机学院, 武夷山 354300)

摘 要: 针对非局部相似块搜索问题, 提出一个基于随机匹配的k 近邻块匹配算法. 在基于Jump Flooding 传播的块匹配算法基础上, 改进其候选参考块的产生方式, 增加从查询块的局部邻域中随机产生候选参考块这一方式. 这一改进提高了候选参考块匹配的可能性, 进而提高了算法的匹配精确度. 实验结果表明改进算法在时间效率和并行性上, 与原算法相差不大, 但在匹配精确度上, 要优于原算法.

关键词: 随机匹配; 非局部相似块搜索; k 近邻块匹配; 非局部自相似性; 局部自相似性

Non-Local Similar Patch Search Algorithm Based on Random Match

YU Wen-Sen, WU Wei

(College of Mathematics and Computer Science, Wuyi University, Wuyishan 354300, China)

Abstract : A k-nearest neighbor patch match algorithm based on random match was proposed to solve the non-local similar patch search problem, which is an improvement of the patch match algorithm based on jump flooding. On the basis of the origin algorithm, the improved algorithm proposed an additional way to randomly generate candidate reference patch from the local neighborhood of each query patch, which raises the possibility of matching candidate patch to query patch and improves the matching accuracy. Experimental results show that the improved algorithm is comparable with the origin algorithm in time efficiency and parallelism, and outperforms the origin algorithm in matching accuracy.

Key words : random match; non-local similar patch search; k-nearest neighbor patch match; non-local self-similarity; local self-similarity

非局部自相似性是指一个图像的局部结构模式可能在整个图像中重复自己, 即一个局部图像块, 在整个图像范围内可能存在多个相似块与之对应. 近年来, 图像的这一属性被许多图像处理任务所利用, 如图像去噪[1], 图像修复[2], 图像超分辨率重建[3]等. 利用这一属性一般要包含一个非局部相似块的搜索过程, 即在整个图像范围内搜索每个局部块的相似块. 非局部相似块搜索本质上是一个k 近邻搜索问题. 在这一搜索问题中, 参考块集合和查询块集合是一样的, 都是由同一幅图像中所有可能的局部块组成. 相似块搜索就是从参考块集合中搜索距离查询集合中各查询块最

近的k 个块. 然而这一搜索过程极度耗时, 难以应用于实际的图像处理任务. 在实际应用中, 许多学者提出了一些近似精确匹配结果的算法, 这些算法通过局部搜索[4,5]、降低维度[6]等方法减少距离计算的次数或复杂度, 从而达到提高计算效率的目的.

最近, Barnes 等人[7]提出一个基于随机匹配的近似最近邻域块匹配算法. 该算法基于“相邻块的最近邻域块很可能也是相邻的”这一假设, 利用前面已确定的相邻块的匹配结果减少下一个块的计算量. 与已提出的近似最近邻域块匹配算法相比, Barnes 等人的算法获得了极大的加速. 随后, 他们[8]进一步将该算法

① 基金项目:国家自然科学基金(60802013);福建省自然科学基金(2015J01669);福建省省属高校专项(JK2014054);福建省中青年教师教育科研项目

(JB14103)

收稿时间:2015-07-24;收到修改稿时间:2015-10-08

局部搜索算法

全局搜索和局部搜索. 目前使用较普遍的、有影响的 全局搜索算法主要包括主从面算法、单曲面算法、级域算法、位码算法及NBS 算法; 局部接触搜索算法主要有基于"点面算法"、基于"小球算法"、基于光滑曲面(曲线)算法三大类. 接触界面算法目前主要有拉格朗日乘子法和罚函数法,以及扰动拉氏法和增广拉氏法. 此外,接触问题的并行计算也是不可忽视的研究内容 模拟退火算法和遗传算法等是较新发展起来的算法,算法引入了随机因素,不一定能找到最优解,但一般能快速找到满意的解。 局部搜索算法是从爬山法改进而来的。 爬山法:在没有任何有关山顶的其他信息的情况下,沿着最陡的山坡向上爬。 局部搜索算法的基本思想:在搜索过程中,始终选择当前点的邻居中与离目标最近者的方向搜索。 现实问题中,f在D上往往有多个局部的极值点。一般的局部搜索算法一旦陷入局部极值点,算法就在该点处结束,这时得到的可能是一个糟糕的结果。解决的方法就是每次并不一定选择邻域内最优的点,而是依据一定的概率,从邻域内选择一个点。指标函数优的点,被选中的概率大,指标函数差的点,被选中的概率小。考虑归一化问题,使得邻域内所有点被选中的概率和为1。 一般的局部搜索算法是否能找到全局最优解,与初始点的位置有很大的依赖关系。解决的方法就是随机生成一些初始点,从每个初始点出发进行搜索,找到各自的最优解。再从这些最优解中选择一个最好的结果作为最终的结果。起始点位置影响搜索结果示意图 爬山算法

1, n := s; 2, LOOP: IF GOAL(n) THEN EXIT(SUCCESS); 3, EXPAND(n) →{mi},计算h(mi), nextn=min{h(mi)} 4, IF h(n)

局部搜索

一般认为,NP完全问题的算法复杂性是指数级的。当问题规模达到一定程度时,这些算法显得无能为力。 局部搜索算法、模拟退火算法和遗传算法等是较新发展起来的算法,算法引入了随机因素,不一定能找到最优解,但一般能快速找到满意的解。 组合优化问题举例 TSP问题 从某个城市出发,经过n个指定的城市,每个城市只能且必须经过一次,最后回到出发城市,如何安排旅行商的行走路线以使总路程最短? 约束机器排序问题 n个加工量为di(i=1,2,… n)的产品在一台机器上加工,机器在第t个时段的工作能力为ct,完成所有产品加工的最少时段数。 指派问题 一家公司经理准备安排N名员工去完成N项任务,每人一项。由于各员工的特点不同,不同的员工去完成同一项任务时获得的回报是不同的。如何分配工作方案可以获得最大收益? 0-1背包问题 设有一个容积为b的背包,n个体积分别为ai(i=1,2,… n),价值分别为ci (i=1,2,… n)的物品,如何以最大的价值装包? 装箱问题

如何用个数最少的尺寸为1的箱子装进n个尺寸不超过1的物品? SAT问题 称判定一个公式是否存在一个模型的问题为可满足性问题(以后简称为SAT 问题)。如果一个公式存在模型,则称该公式是可满足的,否则称为不可满足的。 皇后问题 在n×n的国际象棋棋盘上,摆放n个皇后,使得n个皇后之间不能相互“捕捉”?局部搜索算法 局部搜索算法是从爬山法改进而来的。 爬山法:在没有任何有关山顶的其他信息的情况下,沿着最陡的山坡向上爬。 局部搜索算法的基本思想:在搜索过程中,始终选择当前点的邻居中与离目标最近者的方向搜索。 爬山算法 1, n := s; 2, LOOP: IF GOAL(n) THEN EXIT(SUCCESS); 3, EXPAND(n) →{mi},计算h(mi), next n=min{h(mi)}

局部搜索算法源代码

# include # include # include # include using namespace std; #define SAT 3 //每个子句所含变量的个数,即定义N-SAT问题的N int **arr; //描述SAT问题的二维数组 int Var_Num; //变元个数 int Clause_Num; //子句个数 ifstream fin; ofstream fout; void Random(int *v, int *s); int Proper_Num(int *s); void Reverse(int *v,int *s, int num); void Local_Search(double &duration); void Read_And_Save(int it); int main() { srand(time(NULL)); fout.open("result50-Local_Search_Algorithm.txt"); fout << "#姓名学号" << endl; double totaltime = 0.0; for (int i = 1; i <= 10; ++i) { double duration=0.0; Read_And_Save(i); Local_Search(duration); totaltime += duration; } fout.close(); cout<<"平均时间为: "<< totaltime / 10 <<" 秒 "<

2013年数学建模第一题方法总结禁忌搜索算法

禁忌搜索算法 又名“tabu搜索算法” 为了找到“全局最优解”,就不应该执着于某一个特定的区域。局部搜索的缺点就是太贪婪地对某一个局部区域以及其邻域搜索,导致一叶障目,不见泰山。禁忌搜索就是对于找到的一部分局部最优解,有意识地避开它(但不是完全隔绝),从而获得更多的搜索区间。兔子们找到了泰山,它们之中的一只就会留守在这里,其他的再去别的地方寻找。就这样,一大圈后,把找到的几个山峰一比较,珠穆朗玛峰脱颖而出。 当兔子们再寻找的时候,一般地会有意识地避开泰山,因为他们知道,这里已经找过,并且有一只兔子在那里看着了。这就是禁忌搜索中“禁忌表(tabu list)”的含义。那只留在泰山的兔子一般不会就安家在那里了,它会在一定时间后重新回到找最高峰的大军,因为这个时候已经有了许多新的消息,泰山毕竟也有一个不错的高度,需要重新考虑,这个归队时间,在禁忌搜索里面叫做“禁忌长度(tabu length)”;如果在搜索的过程中,留守泰山的兔子还没有归队,但是找到的地方全是华北平原等比较低的地方,兔子们就不得不再次考虑选中泰山,也就是说,当一个有兔子留守的地方优越性太突出,超过了“best to far”的状态,就可以不顾及有没有兔子留守,都把这个地方考虑进来,这就叫“特赦准则(aspiration criterion)”。这三个概念是禁忌搜索和一般搜索准则最不同的地方,算法的优化也关键在这里。 伪码表达: procedure tabu search; begin initialize a string vc at random,clear up the tabu list; cur:=vc; repeat select a new string vn in the neighborhood of vc; if va>best_to_far then {va is a string in the tabu list} begin cur:=va; let va take place of the oldest string in the tabu list; best_to_far:=va; end else begin cur:=vn; let vn take place of the oldest string in the tabu list; end; until (termination-condition); end; 以上程序中有关键的几点:

爬山法:局部寻优搜索算法

爬山法:局部寻优搜索算法 遗传算法是优秀的全局优化算法,爬山法是一种局部寻优效果较好的搜索算法。 简单的来说,就在在一个初始目标位置附近,随机搜索看是否存在符合最终期望目标的位置。有的话就替换原初始目标位置,然后在重复搜索,直到随机搜索一定次数后,都没有更好的目标位置为止。 专业一点的说法是这样: 首先在搜索空间随机选取一点作为进行迭代的初始点,然后在其邻域内随机产生一点,计算其函数值,若该点函数值优于当前点,则用当前点替换初始点作为新的初始点继续在邻域内搜索,否则继续在邻域随机产生另一个点与初始点进行比较,直到找到比其优秀一点或连续几次都找不到比其优秀的点则终止搜索过程。 举个例子: A国部队进行战事训练,你作为其中一名优秀的狙击手,黑夜中,你被空降到一个山地中,现在你需要占据制高点,我们设定制高点是峰顶位置。现在你手上唯一的武器就是一把狙击枪和一个海拔仪。那么怎么在短时间内快速找到最近的制高点呢?你灵机一动一动动,想到了“爬山法”,于是你在距离当前降落位置A点的20米的东(A1)南(A2)西(A3)北(A4)四个方向上分别测试了海拔高度,选择其中海拔最大的位置(假设是东边的位置A1),这个时候,你在达到东边这个位置A1后,又测量了东南北三个方向相距A1点20米(这个20米称为步长)的位置(西边不用测量,因为你是从上一个A是在A1的西边),在进行确定往那个方向前进,在不断重复之后,当你发现其他方向的海拔都低于你这个位置的海拔的时候,你就可以认为,你当前处于至少在局部范围内是最好的制高点了。这个时候,你看了一下表,用时3分钟,然后便开始伏地探测搜寻Target准备狙击了。 爬山法在处理单峰问题时可以快速收敛到局部最优点,但是多峰值问题有多个峰值点,用爬山法只能找到多个局部最优点之中的一个,不一定是全局最优点,因此将无法确定全局最优点。尽管爬山法不能进行全局寻优,但是爬山法有传统的优化算法不具有的优势,就是爬山法可以处理不可微的单峰函数,因为爬山法通过在邻域内随机产生个体进行优化,不需要利用梯度,所以爬山法可以在遗传算法处理复杂问题时发挥局部寻优作用。

基于随机匹配的非局部相似块搜索算法

2016 年 第25卷 第3期 https://www.360docs.net/doc/b410681125.html, 计 算 机 系 统 应 用 Software Technique ·Algorithm 软件技术·算法 209 基于随机匹配的非局部相似块搜索算法① 余文森, 吴 薇 (武夷学院 数学与计算机学院, 武夷山 354300) 摘 要: 针对非局部相似块搜索问题, 提出一个基于随机匹配的k 近邻块匹配算法. 在基于Jump Flooding 传播的块匹配算法基础上, 改进其候选参考块的产生方式, 增加从查询块的局部邻域中随机产生候选参考块这一方式. 这一改进提高了候选参考块匹配的可能性, 进而提高了算法的匹配精确度. 实验结果表明改进算法在时间效率和并行性上, 与原算法相差不大, 但在匹配精确度上, 要优于原算法. 关键词: 随机匹配; 非局部相似块搜索; k 近邻块匹配; 非局部自相似性; 局部自相似性 Non-Local Similar Patch Search Algorithm Based on Random Match YU Wen-Sen, WU Wei (College of Mathematics and Computer Science, Wuyi University, Wuyishan 354300, China) Abstract : A k-nearest neighbor patch match algorithm based on random match was proposed to solve the non-local similar patch search problem, which is an improvement of the patch match algorithm based on jump flooding. On the basis of the origin algorithm, the improved algorithm proposed an additional way to randomly generate candidate reference patch from the local neighborhood of each query patch, which raises the possibility of matching candidate patch to query patch and improves the matching accuracy. Experimental results show that the improved algorithm is comparable with the origin algorithm in time efficiency and parallelism, and outperforms the origin algorithm in matching accuracy. Key words : random match; non-local similar patch search; k-nearest neighbor patch match; non-local self-similarity; local self-similarity 非局部自相似性是指一个图像的局部结构模式可能在整个图像中重复自己, 即一个局部图像块, 在整个图像范围内可能存在多个相似块与之对应. 近年来, 图像的这一属性被许多图像处理任务所利用, 如图像去噪[1], 图像修复[2], 图像超分辨率重建[3]等. 利用这一属性一般要包含一个非局部相似块的搜索过程, 即在整个图像范围内搜索每个局部块的相似块. 非局部相似块搜索本质上是一个k 近邻搜索问题. 在这一搜索问题中, 参考块集合和查询块集合是一样的, 都是由同一幅图像中所有可能的局部块组成. 相似块搜索就是从参考块集合中搜索距离查询集合中各查询块最 近的k 个块. 然而这一搜索过程极度耗时, 难以应用于实际的图像处理任务. 在实际应用中, 许多学者提出了一些近似精确匹配结果的算法, 这些算法通过局部搜索[4,5]、降低维度[6]等方法减少距离计算的次数或复杂度, 从而达到提高计算效率的目的. 最近, Barnes 等人[7]提出一个基于随机匹配的近似最近邻域块匹配算法. 该算法基于“相邻块的最近邻域块很可能也是相邻的”这一假设, 利用前面已确定的相邻块的匹配结果减少下一个块的计算量. 与已提出的近似最近邻域块匹配算法相比, Barnes 等人的算法获得了极大的加速. 随后, 他们[8]进一步将该算法 ① 基金项目:国家自然科学基金(60802013);福建省自然科学基金(2015J01669);福建省省属高校专项(JK2014054);福建省中青年教师教育科研项目 (JB14103) 收稿时间:2015-07-24;收到修改稿时间:2015-10-08

人工智能原理 局部搜索与群体智能 4-2-1 局部搜索算法

Local Search Algorithms

Contents ?4.2.1. Hill-Climbing Search ?4.2.2. Local Beam Search ?4.2.3. Tabu Search

Hill-Climbing 爬山法 ?A mathematical optimization technique which belongs to the family of local search. 是一种属于局部搜索家族的数学优化方法。 ?It is an iterative algorithm: ?starts with an arbitrary solution to a problem, ?then incrementally change a single element of the solution, ?if it’s a better solution, the change is made to the new solution, ?repeating until no further improvements can be found. 是一种迭代算法:开始时选择问题的一个任意解,然后递增地修改该解的一个元素,若得到一个更好的解,则将该修改作为新的解;重复直到无法找到进一步的改善。 ?Most basic local search algorithm without maintaining a search tree. 大多数基本的局部搜索算法都不保持一棵搜索树。

State-Space Landscape 状态空间地形图?It can be explored by one of local search algorithms. 可通过局部搜索算法对其进行搜索。 ?A complete local search algorithm always finds a goal if one exists. 一个完备的局部搜索算法总能找到一个存 在的目标。 ?an optimal local search algorithm always finds a global minimum or maximum. 一个最优的局部搜索算法总能找到一个全 局的最小或最大值。

相关主题
相关文档
最新文档