【问题标题】:Identifying person using optical flow and clustering?使用光流和聚类识别人?
【发布时间】:2015-12-03 02:15:13
【问题描述】:

所以我正在使用 matlab 并且我设法修改了他们的一个示例,以便我现在可以绘制人们走在下面时的流线(相机在门上方)。 我使用 Lucas-Kanade 光流和计算机视觉工具箱。

线是这样定义的,我还定义了跟踪点。这些跟踪点包括原始点没有改变的情况,因此在这种情况下 real(tmp(:)) 将为零,并且这些点将与最初识别的特征点相同。

vel_Lines = [Y(:)   X(:)   Y(:)+real(tmp(:))   X(:)+imag(tmp(:))];
allTrackedPoints = [Y(:)+real(tmp(:))   X(:)+imag(tmp(:))]; 

我的问题是我如何才能获得成功跟踪一定距离的点?我想以某种方式只保留变化足够大的值。

我对 Matlab 的语法不是很好,所以希望这对某人来说很容易。

我想获取成功跟踪的与运动相关的点,然后对这些点进行聚类以确定有多少人,然后使用多对象跟踪器跟踪这些点集。

【问题讨论】:

  • 更多代码来说明你的观点会很好。它可以帮助我通过修改代码来创建解决方案,而不必从头开始编写东西。然而,最简单的方法是保存前一帧的光流向量并进行差异计算,看看距离是否超过了一定的量。聚类应该很容易。您将所有点放在一个列表中,遍历每个点并收集距离该点一定距离的那些点,然后将它们从列表中删除。当您附近有人时,这将是一个问题。
  • 谢谢!当然,希望在它们彼此靠近之前将它们识别为门下的步行道。
  • 谢谢!那我可以通过电子邮件将代码发送给您吗?我这里装不下。即使有多个对象,跟踪也不会成为问题,它只是首先识别人(我发现背景减法和斑点效果不佳,因此采用了这种方法)。我还可以通过 Google Drive 分享视频和内容?

标签: matlab image-processing computer-vision matlab-cvst opticalflow


【解决方案1】:

如果您的相机没有移动,那么背景减法可能比光流更适合您。见this example.

您还可以使用vision.PeopleDetector 对象来检测人。见this example

如果您坚持使用光流,请尝试 Fareneback optical flow algorithm,从 R2015b 版本开始提供。

【讨论】:

  • 谢谢,我实际上已经能够通过平均流向量然后将结果通过中值滤波器来降低噪声来获得二值图像。仍然想知道如何将这些点聚集成最佳数量的集群。例如,我能够得到一个点矩阵([x y]),这些点是好的点 - 即代表人们但我不知道如何根据他们的位置将他们聚集在一起,以便将他们分成不同的人。 K-means 聚类需要一个 k 值作为输入——但这就是我想要找出的? silleoutes?
猜你喜欢
  • 2011-07-31
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
相关资源
最近更新 更多