转:一些关于目标追踪的学习体会

 

一些关于目标追踪的学习体会

Author: 疯子_007

关于目标追踪,经过导师和朋友们的推荐与帮助,我阅读了一些很经典的论文:在综述上关于目标追踪我仔细阅读了Alper Yilmaz的“Object tracking A survey”,以此而衍生的看了一些我认为很重要并且很有意思的参考文献。再看目标追踪这篇综述的时候,需要了解一些关于不变量的知识,后来我也仔细阅读了Tinne Tuytelaars & Krystian Mikolajczyk的“Local Invariant Feature Detectors A Survey”。但是这些不变量,很多是基于尺度不变的。所以我又仔细阅读了Tony Lindeberg的“Scale-space theory: A basic tool for analysing structures at different scales”,我后来也参考了很多书和论文,写出了自己理解的高斯尺度空间综述,由于尺度空间可以有不同的表述,但是以高斯函数做的核的尺度空间跟人们现实中的所理解的尺度最相似,所以我就写了基于PDE的高斯尺度空间综述。

通过看《计算机视觉与模式识别》等书,和在网上找的一些硕士毕业论文,比如上海交大施鹏的“局部特征描述子算法研究”,北京交通大学胡文锦的“图像边缘检测方法研究”等。发现要对一个物体目标进行匹配,首先是要采用合适的特征,就是有效对外表,特征建模。基本上常用的特征表述为颜色,边界,光流量,纹理。而常用的检测方法为特征提取,图像分割和背景消除。

对于特征提取,我画出以下图来描述,这些算法是我所熟悉的算法一些总结,当然肯定还有一些算法我没有归结进来,如图一。他们之间的划分也没有明确的定义,比如LOG(拉普拉斯-高斯)也可以做为边缘检测,而DOG也可以作为其他算法的一部分,比如Canny。还有一些算法,比如Harris算法,如果跟仿射相关联,就是一种新的算法叫Harris-Affine。还有一些跟拉普拉斯结合的。在inne Tuytelaars & Krystian Mikolajczyk的论文中,他们把特征分为角点,块和区域。不过我觉得我下面的划分更能体现特征提取的。边缘和轮廓是不同概念的:边缘可以认为是物体的边缘,是个整体概念;但是轮廓,我们可以认为一个人的某一部分比如脸部,可以当做一个轮廓的。



 

图一 常见的特征提取算法

因为点的检测是最简单,也是研究比较完善的。基于RST不变的特征点的检测,最好的办法应该是sift,不过在2009年底,新提出的ASIFT算法有更好的RST不变性。基于这些特征点,进行匹配。这里实验我所用的模板图片是图2,我实验的环境是VS 2008+openCV。在这里我主要是编程实现Harris和SIFT的特征匹配。但是Harris我匹配了好久但是都没有得到理想的效果,因为,如果有俩个相似的角点的话,他就没法匹配了,如图4。不过SIFT却得到了很好的效果,如图3,SIFT的代码,我是套用了David G.Lowe网上发布的代码。



 

图2 实验所用的图像,template为给的物体图像,resource为要找给定物体的图片



 

 

图3 基于SIFT的物体匹配

 

 

图4,基于Harris的物体匹配

         对于边缘检测这一块,我没有把一些经典的算子给写上,比如Roberts算子, Sobel算子,Prewitt算子,Laplace算子,Kirsch算子,LOG算子等。因为这些都是基本的算子,但是好像也很少用到这些算子,因为他们的效果相对Canny算子来说效果很差,而Canny算子是MH算子的改进。基本思想就是对输入值进行高斯平滑,然后解梯度,最后设置阈值进行得到最后的边缘。对于边缘检测这一块,我没有做相关的匹配的代码实现。因为他们的检测算法,在openCV中都只需要一个函数就可以实现的。对于轮廓和区域算法,我也只是看了论文,也下载了学习了一些代码。Snake算法进行轮廓匹配是个很不错的算法,内力约束它的形状,外力引导它的行为,图像力将其拖向显著的图像特征,他是一种“主动”的轮廓线匹配模型。如图5所示,展示了snake算法主动获取轮廓的过程,这个代码我是下载的现成代码运行的。我改写了openCV中的一个例子,他是基于SURF算法写的一个寻找物体的一个例子。运行结果图6

            

图5 Snake算法主动获取轮廓线的过程



 

图 6 基于SURF的物体匹配

            以上说的是关于特征提取的物体匹配算法,我们也可以从其他方面考虑物体匹配算法,而特征匹配是属于局部特征匹配的算法,匹配其他算法,我参照浙大计算机视觉课件及网上一些资料总结如图7,这些是基于立体视觉进行局部和全局匹配的一些算法。对于局部匹配的算法我比较熟悉,可是对于全局的那些匹配算法,我也不太清楚。

            对于一些纹理和模板的匹配,我们可以找出一些基本的模板,比如线,圆,椭圆。这里有一个很好的算法帮我们解决了这个问题,这就是很著名的Hough变换。Hough变换主要是采用的“投票”的思想。其实它对线检测的效果特别好,图8是我用openCV参照写的检测线的结果,检测线的大体算法,首先建立Hough空间,把这个空间离散化,然后让图中每条边的点投票选择可能归属的点。而它对圆的效果就不尽如人意,如图9,也是我用openCV写的。



 

图 7基于立体视觉匹配的一些算法



 

图8 基于Hough变换的检测线



 

图 9 Hough检测圆的结果

                        对于Hough变换检测线,它的定位比较精确,如图8,但是他对圆的检测就有比较大的误差。如果在有噪声污染的时候,效果也许会更差。不过Hough检测不失为模板检测的一个很好的算法。另外我自己也根据openCV里的cvMatchTemplate写了一个简单的程序。他的大体思路是通过输入图像上滑动图像块对实际的图像块和输入图像进行匹配。

查找算法如下:

(1)从输入图像的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像;
  (2)用临时图像和模板图像进行对比,对比结果记为c;
  (3)对比结果c,就是结果图像(0,0)处的像素值;
  (4)切割输入图像从(0,1)至(10,11)的临时图像,对比,并记录到结果图像;
  (5)重复(1)~(4)步直到输入图像的右下角。

这里运行的结果如图10, 但是这个算法有鲁棒性很差。因为这里只是用template image对整幅图进行在resource image上进行cvMatchTemplate计算相似。其实,这样条件限制较大,如果给定的template image 信息繁多,这样做就不可以了。



 

图10 基于MatchTemplate的物体匹配

 

       这些都是中层视觉处理的一些物体匹配,而对于视频上的物体匹配,我看的一般是进行获取前景,消除背景把运动物体抠出来,这应该算不上匹配吧。不过这也是我这段时间学习研究的,所以我也就写出来的。这里涉及到图像分割和背景消除,常见的办法我也用图11画出来,参考的还是《计算机视觉-一种现代方法》


 

 

图 11图像分割和背景消除的一些算法

          对于图像分割的这三部分我都进行了编程实现,而对于背景消除,我主要编程实现的是混合高斯模型,这里的MOG(混合高斯模型),有俩中算法,一种是原始的Grimson&Stauffer的算法,一种是改进的自适应的背景混合算法,由于openCV提供了这俩种方法,所以我都尝试的写了并调试成功。关于他们的详细区别,我也写在了

http://blog.sina.com.cn/s/blog_661159d50100iuny.html上。

          这些就是我所理解的关于目标追踪方面的一些知识。

 

 

 

 

 

 

 

转自:http://blog.csdn.net/yongdun_007/article/details/6085682?reload

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值