我有一个视频,该视频的帧如本问题的上一张图像所示.
How do we detect points from a picture with a particular color on those points
我检测到了这些标记并将它们编号,如下图所示:
我的问题如下.在一个帧中检测到标记后,我需要在另一帧中检测它们,并找出标记从其先前位置移了多少.但是,在第二帧上再次使用我的代码时,有时在某些帧中,标记之间的编号会有所不同,因此,我无法从一个图像到另一个图像跟踪标记.而且,对于具有大约200帧的视频,检测每个图像中的标记也是一项繁琐的任务,并且要花费大量时间.
如何在图像上跟踪这些标记,以便知道特定标记在帧之间移动了多少,或者只是如何对这些标记编号,以使编号永远不变,编号为60的标记在帧1到帧之间仍为标记60 200.
作为附带的问题,有一种方法可以实际减少处理时间,这样我就不必在每一帧中都检测到面部和眼睛(请参阅上一个问题中链接中给出的图像,这样可以使事情更清晰).
解决方法:
My problem is as follows. After I have detected markers in one frame I
need to detect them in another frame and find out how much the marker
has moved from its previous location. However on using my code again
on the second frame I sometimes in some frames get a different
numbering among markers and hence I am not able to track markers from
one image to another. Also detecting the markers in each image becomes
a cumbersome task and takes a lot of time for a video which has around
200 frames.How can I track these markers over images so as to know how much a
particular marker has moved between frames or simply how can I number
these markers such that the numbering never changes viz, the marker
numbered 60 remains marker number 60 from frame 1 to frame 200.
也许考虑使用光流技术-http://robotics.stanford.edu/~dstavens/cs223b/?
或者,尝试将点云分成较小的部分,然后检测轮廓.您可以使用线条或使用以下简单思路(未经测试或分析)将其划分:
>从点云中找到所有点的凸包(http://en.wikipedia.org/wiki/Convex_hull_algorithms).
>边界上的点在一组中.
>在从点2开始处理组中的点之后,将其删除.
>转到第1点.
As a side question is there a way to actually decrease the processing time such that I don’t have to detect the face and eyes in
each and every frame
您可以采取一些简单的操作来减少处理时间:
>在处理每一帧时不要加载haar级联-在开始从摄像机/视频文件获取帧之前,只加载一次.
>如果每帧只需要找到一张脸,请使用CV_HAAR_FIND_BIGGEST_OBJECT标志-搜索将仅返回一个(最大)对象.它应该快得多,因为搜索将从最大的窗口开始,此外,当Haar检测器找到一个对象时,它将中止搜索并返回该对象.
>播放参数并检查不同的级联
>一旦找到第n帧中的人脸而不是第n帧中的人脸,就不要在整个帧中执行搜索-展开在n帧中找到人脸的矩形,然后仅在此展开的矩形中搜索.您应该扩展多少?这取决于用户的头部移动速度;)50%的公差很大,但速度很慢.最好的选择是自行找到该值.
>如果您的图像变化不大,则可以跳过大多数帧中的人脸检测,仅假设它与上一帧位于同一位置-只需检查帧是否发生了很大变化即可.最简单的方法是Motion detection using OpenCV(正如作者提到的-在减法结果上使用二进制阈值是一个好主意,以忽略由于噪声而发生的变化).我在BSc论文(眼动跟踪系统)中使用了这种方法,它效果很好,并提高了整个系统的速度.注意-最好不时强制进行常规(使用haar级联)搜索(我决定每3帧执行一次此操作,但是您可以尝试减少搜索频率)-这样可以避免出现以下情况所使用的设备移到了摄像头区域之外,系统没有注意到它.