2011-03-19 108 views
2

我试图追踪使用Emgu CV C#的移动LED。我对拍摄的图像进行阈值处理,直到我只有LED作为白色斑点/斑点。我已经使用了斑点分析/跟踪,它的工作原理,但问题是,如果我将光线过快移动,它就无法再跟踪它。如果我放慢速度,它就会起作用。有什么办法可以加快速度吗?如何加快对Emgu CV C#的Blob分析#

最后,我基本上需要使用LED来绘制我的电脑。而且我还需要LED的位置/中心用于其他目的。

我用于blob分析和跟踪的代码与Emgu.CV.Examples - > Video Surveillance中的代码相同。

+0

使用多线程或并行处理 – 2011-05-16 17:43:35

回答

0

那么是和否。您可以检查代码并简化过程,以便尽可能缩短图像处理时间,即减少循环或计算。你可以改变电脑的硬件;具有更多内核的更快处理器将允许更多线程以更快的速度进行处理。你可以投资一个CUDA图形卡,并在这方面进行处理,但是如果你的代码不那么复杂,你的性能甚至可能会降低。建议使用高端图形卡。

大多数时间实际上是浪费,显示屏幕上的结果可以通过消除这种显着改善。如果这些都不会改善您的性能,那么唯一的选择就是将分析算法转移到FPGA硬件设备上(实际上这些都是基于定制的流程),这非常耗时,如果您从未做过非常困难的事情。图像的实时处理很难实现和实现。一种可能的选择是欺骗XBOX Kinect实际上引入了复杂的算法来预测用户在帧之间的移动。这就是为什么游戏有时会跳动。

建议的路线是检查你的斑点跟踪程序,如果你正在使用Hough斑点跟踪尝试硬编码你自己一看图像的行和列的总和,这将给你一个对应于X的峰值Y位置,但只能使用1个LED。这可以提高性能,因为您可以移除Hough Blob跟踪功能中涉及的隐藏进程。

其次尝试改变你的阈值技术尽可能最简单(如果你还没有)如果光线明亮只需从灰度图像中减去常数250就可以了,除非你在明亮的房间里或这些其他光源。

我目前正在做图像处理的PHD,所以我警告你实现实时处理可能需要一生的时间。我也建议不要期望网络摄像头能以大约30fps的速度获得最佳图像效果,而处理后的图像最多可达25fps,甚至可能低至10fps。

标准LED的另一种替代方法是使用适合您相机的滤光片的红外LED。这将允许从背景噪音很小的LED中看到一个斑点。检查Instructables.com的例子。

希望一些帮助 克里斯