这十来天一直在做这个东西,没想到最后终于是失败了.假期快结束了,也没有再多于的时间做这个了,虽然没有成功,但是也算积累了一些经验吧.陈列于此,日后或可受益.
相关工程见:
http://www.cvchina.info/2010/02/10/2-3-us-feature-point-match/
因为我在大三上学期在学校做的东西就是和这个很类似的一个,相当于模板匹配的程序.其中应用的算法什么的因为没有开设图形学课程,都是自己瞎想的.最后达到的效果是对5个100*200像素左右大小的卡片进行识别,搜索区域为为640*480,可以在100ms做出识别,正确率可以保证在60%以上.
假期这个工程是老师留给我看看有没有新思路的.一看,我了个去,这个太牛了,速度太快了,准确率太高了,甚至可以应用在手机上,为之震撼.所以想学习之,自己实现一下.-_-|||可惜了,没有成功.
这个论文是英文的,但是表达很清楚,令人赞叹.
我就按照自己实现他的过程来罗列一下自己的收获.
1. 首先这个…应该还称不上算法吧.就算一个方法.这个方法属于用空间换时间的方法.训练是他很重要的一步.
2. 训练:
a) 找特征点.这个用的是FAST的方法.FAST是一种角点检测的方法,他遍历图像中的所有点,对每一个点(A)再遍历周围16个点,如果发现连续的,比如12个点都和中心点(A)都不一样(嗯…只能用这个词了,具体还是看论文),那么说明这个地方就是一个角点.
b) 得到该特征点的索引值.由于会有很多的的训练数据,为了速度,不能遍历,只好索引.这样搜索的时间可以维持在小的数值.这个索引值是通过特征点周围13个点的值来确定的.每一个点可能大于特征点周围256个点的平均值,也可能小于.所以可以取得0或1.这样索引值就是能取到0-8196了.然后保存相应的patch
c) 对于不同方向图片的匹配问题,论文里用的方法是每10度算一个区间,进行图片采集.
d) 当然了,为了增强鲁棒性,在采样图像的时候可以人为的对图像进行一些变化.不同scale不同的仿射变换,不同的噪声等等都可以加入.
3. 匹配的时候比如是用摄像头采集图像,对图像进行FAST扫描.扫描到的点用论文中的方法得到patch,和索引值.通过索引值在各个数据库中索引,通过一系列对patch的比较判断出是否匹配.
没有成功,真的非常遗憾.
以后如果真的要做这方面的研究,真的需要系统的学习一下图像处理的知识了.
今天是情人节,是一个没有情人的情人节.
学习吧,不是为了理想,只是想找点事做.大家都加油吧~!