这个问题困扰了我很长时间。基本的车辆计数程序包括: 1.识别车辆。2.根据特征跟踪车辆。
但是,如果在t时刻发现了车辆#1,那么在t+1程序就开始跟踪车辆,但是通过识别过程也可以找到#1,那么t+2程序将跟踪两辆车,但实际上在车架中只有一辆车。识别车辆如何避免重复检测?
提前感谢!
发布于 2016-10-23 23:31:44
如果我的理解是正确的,那么您就会关心检测您已经跟踪的对象(缺少检测器/跟踪器通信)。在这种情况下,您可以:
有几种可能的实现。
让我们考虑哪种方式更好(以及什么时候)。
e 241
是跟踪对象的数量,E 142
ME 243是检查位置的数量(例如,检测到的对象)。哪个数字(、N、或M)将更大,取决于您的应用程序。还需要额外的内存来保存二进制掩码(通常不是很重要,但同样取决于应用程序)。
Brute-需要O(N * M)操作(每个M位置都与NE 259候选点进行检查)。它不需要额外的内存,并且允许在检查期间执行更复杂的逻辑。例如,如果对象突然改变了一个帧中的大小/颜色/任何东西--我们可能不应该跟踪它(因为它可能是一个完全不同的对象,包含了原始的对象),而是做其他的事情。
总括而言:
当您有很多对象时,掩码是渐近性更好的。如果在检测期间执行类似滑动窗口搜索的操作,并且可以排除某些区域(因为在这种情况下,您可能有一个较大的M),这几乎是至关重要的。您可能会在预检查中使用它。
Brute--当您有很少的对象并且需要进行涉及不同属性的检查时,强制是可以的。与的事后检查一起使用它是最有意义的。
如果你碰巧需要一些介于两者之间的东西--你必须更有创造力,或者以某种方式对对象属性进行编码(以达到恒定的查找时间),或者使用更复杂的数据结构(以加快“布鲁特力”搜索)。
https://stackoverflow.com/questions/40207763
复制相似问题