gpt4 book ai didi

c++ - 跟踪视频中的编号标记

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:08:00 26 4
gpt4 key购买 nike

我有一个视频,其帧如我在此问题中的上一张图片所示。

How do we detect points from a picture with a particular color on those points

我检测到这些标记并给它们编号,如下图所示:

Marker Data

我的问题如下。在一帧中检测到标记后,我需要在另一帧中检测它们并找出标记从其先前位置移动了多少。但是,在第二帧上再次使用我的代码时,我有时会在某些帧中获得不同标记之间的编号,因此我无法从一个图像到另一个图像跟踪标记。此外,检测每个图像中的标记成为一项繁琐的任务,并且对于大约 200 帧的视频会花费大量时间。

我如何在图像上跟踪这些标记,以便了解特定标记在帧之间移动了多少,或者我如何对这些标记进行编号,以便编号永远不会改变,即编号为 60 的标记仍然是帧中的标记编号 60 1 到第 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/

或者尝试将点云分成更小的部分,而不是检测轮廓。您可以使用线条或使用这个简单的想法(未经测试或分析)来划分它:

  1. 从您的点云中找到所有点 ( http://en.wikipedia.org/wiki/Convex_hull_algorithms) 的凸包。
  2. 边界上的点属于一组。
  3. 从点 2 开始处理组中的点后,删除它们。
  4. 转到第 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+1不要在整个框架中执行搜索 - 展开您在 n 中找到人脸的矩形仅在此展开的矩形中框选和搜索。你应该扩大多少?这取决于用户移动头部的速度;) 50% 是一个很大的容差,但也很慢。最好的选择是自己找到这个值。
  • 如果您的图像不会发生太大变化,您可以跳过大多数帧中的面部检测,并假设它与前一帧位于同一位置 - 只需检查帧是否发生了很大变化。最简单的方法是 Motion detection using OpenCV (正如作者所提到的——最好在减法结果上使用二进制阈值来忽略由于噪声而发生的变化)。我在我的 BSc 论文(眼动追踪系统)中使用了这种方法,它工作得很好并且提高了整个系统的速度。注意 - 不时强制进行正常(使用 haar 级联)搜索是个好主意(我决定每 3 帧执行一次,但你可以尝试减少搜索次数) - 它可以让你避免出现以下情况其中使用的移动到摄像头区域之外,系统没有注意到它。

关于c++ - 跟踪视频中的编号标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19200186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com