今天,研究了各种不同的特征算子的性能。
发现:图像分辨率为640×480时,SIFT实时帧频可达到10FPS,SURF为15FPS,ORB为16FPS左右。
众所周知,SIFT速度最慢,但是感觉SURF速度不是SIFT的3倍么?好像没有这么快啊,另外,ORB效率应该是更高才对。所以我怀疑,应该是图像特征点绘制和显示耗时了。
然后,我又把特征点绘制部分代码注释掉,结果发现:竟然没有任何的影响!!实在是搞不懂。
今天又弄懂了一个事,在Emgu.CV 的最新版(3.1)中,SIFT和SURF虽然受到专利保护了,但是还是可以用的,也不需要再引入什么额外的库啥的。我估计唯一的问题是:如果想利用SIFT或者SURF来开发商业盈利的产品,那是不行了。对于其他的学习和普通的应用,还是没有什么限制的。
另外需要注意:BruteForceMatcher(暴力匹配)函数在新版中改名字了,改为了BFmatcher,看起来更简洁了!当然,我发现在Emgu.CV 的最新版(3.1)中,很多比较长的名字都被简化了!整体的安装包比以前的版本也小了很多很多!
下图是今天的收获,只实现了不同特征点的实时显示。明天接着实现各算子的实时匹配,看看到底哪种算子最稳定。
另外,还要提一下定时器的问题,
针对窗体的Timer
//优点一:线程安全;
//优点二:一个Tick事件在前一个Tick事件被处理完毕前不会被触发(就是说它会耐心等待)。
//优点三:你可以直接在Tick事件处理代码中更新控件。
这个里面的学问很大,一两句说不清楚。