OpenCv Blob/轮廓标记

OpenCv Blob/轮廓标记,opencv,blob,contour,background-subtraction,Opencv,Blob,Contour,Background Subtraction,嗨,我已经在这方面工作了一段时间,但还没有很好的解决方案 我正在逐帧阅读视频,并使用背景减法来 确定存在移动的区域,并使用cvFindContours()获取移动对象的矩形边界 假设程序保持简单,那么只能有两个人 这些物体以重叠的方式移动,以一定的间隔旋转和移动 我如何才能正确地标记此x 2 cvFindContour可以以随机方式返回边界。对于帧1、帧2、帧3…帧n 我可以首先比较矩形边界质心来正确标记人类。一旦人类重叠并离开,这种方法就会失败 我试图跟踪原始obj的像素颜色(但是人类非常相似

嗨,我已经在这方面工作了一段时间,但还没有很好的解决方案

我正在逐帧阅读视频,并使用背景减法来 确定存在移动的区域,并使用cvFindContours()获取移动对象的矩形边界

假设程序保持简单,那么只能有两个人

这些物体以重叠的方式移动,以一定的间隔旋转和移动

我如何才能正确地标记此x 2

cvFindContour可以以随机方式返回边界。对于帧1、帧2、帧3…帧n

我可以首先比较矩形边界质心来正确标记人类。一旦人类重叠并离开,这种方法就会失败

我试图跟踪原始obj的像素颜色(但是人类非常相似,某些区域有类似的颜色,如手、腿、头发),因此不够好

我在考虑使用图像统计,比如:

CountNonZero(), sumppixels() 平均数() 平均值 MinMaxLoc() 范数()


唯一地区分这两个对象。我认为这是一种更好的方法。

您可以尝试记住每帧的一个角(例如左上角)。然后,当收到新的帧集时,将它们的角点距离与以前保存的角点距离进行比较。这当然不是完美的解决方案

  • 如果两个水滴在某一点相交,则不确定其结果是什么
  • 如果两个水滴移动过快,也可能导致不必要的结果

    • 听起来很难,尤其是在视频中有很多噪音的情况下

      也许可以确定两个人互动的不同情况。一些例子:

    • 两个人相遇,然后要么倒转航向,要么继续前进
    • 两个人相遇,只有一个人改变方向或继续前进
    • 两个人相遇,然后一个人留下来,另一个人朝着相机视野“正常”的方向移动,即远离或朝向相机
    • 计算机视觉教科书可以帮助确定其他情况


      考虑测量视频中每一帧列出的所有函数,然后将其结果绘制成图表。根据这一点,确定是否有一种方法可以匹配边界框中像素颜色的标准偏差,在人类穿过路径后,将其与边界框匹配。

      这是一个困难的问题,任何解决方案都不是完美的。计算机视觉被戏称为“AI完整”学科:如果你解决了计算机视觉,你就解决了所有的人工智能

      背景减法是一种检测物体的好方法。如果需要改进背景减法结果,可以考虑使用。根据blob的大小,您可以判断何时存在单个对象以及何时合并了两个blob。如果在合并blob的过程中轨迹没有快速变化,您可以在合并后使用一些来消除blob的歧义

      即使两个对象的颜色相似,也可以考虑使用A。你可能需要做一些事情来跟踪关于谁是谁的多种假设

      还有一些更为复杂的技术叫做。有一些最近的工作由,由,由,和由其他人。这些技术中的大多数都有很强的假设和/或需要大量工作才能正确实施


      如果您对本主题感兴趣,我强烈建议您学习计算机视觉课程和/或阅读教科书,如。

      @2vision2:感谢您指出断开的链接。我已经更新了。