2011-11-01 25 views
2

我正在尝试创建一个按运动排序的运动组件的有序列表。例如,在街景相机中,我首先需要车辆,然后是自行车,其次是行人。这可能在Emgu中使用MotionDetector示例吗?按速度排序运动组件(使用Emgu进行运动检测)

if (motionPixelCount < comp.area * 0.05) continue; 

这似乎是某种阈值,但motionPixelCount究竟意味着什么?这是否可以代表运动部件的速度/速度?还是其他什么东西? 它正在与组件区进行比较。

tl; dr:如何确定运动分量相对于其他物体的速度/速度?

回答

2

井的功能产生motionPixelCount是如下总结:

public void MotionInfo(Rectangle motionRectangle, out double angle, out double motionPixelCount); 
    // 
    // Summary: 
    //  Given a rectagle area of the motion, output the angle of the motion and the 
    //  number of pixels that are considered to be motion pixel 
    // 
    // Parameters: 
    // motionRectangle: 
    //  The rectangle area of the motion 
    // 
    // angle: 
    //  The orientation of the motion 
    // 
    // motionPixelCount: 
    //  Number of motion pixels within silhoute ROI 

它是由该组motionRectangle的ROI的已移动内检查的像素的量的阈值。这可以防止数十亿个结果在1或2个像素似乎已经移动。但是,通过设置更准确的ROI到车辆的位置,您可以删除此阈值,因为您知道不太可能存在您不在意的随机小动作。

我们可以使用这些数据来计算检查组件的速度和速度,但我们需要一些特定的数据。我们需要知道在特定距离处物体的像素对真实世界的测量。我在answer to this question中详细讨论了这个特殊问题。如果我们知道被跟踪物体的大小并且距离摄像机很近,这很容易,但通常情况并非如此。

如果我们有一个固定距离的物体,那么我们可以用真实世界的术语粗略地取对象的面积,并将其除以物体所占的像素面积。这比执行FOV计算更容易,因为它不需要精确的距离测量,但是可以计算出物体的面积越精确,跟踪结果就越精确。如果我们得到那么这pixel_per_mm测量:

该功能为您提供了整体的运动距离:

double overallAngle, overallMotionPixelCount; 
_motionHistory.MotionInfo(motionMask.ROI, out overallAngle, out overallMotionPixelCount); 

因此:

速度=(overallMotionPixelCount * mm_per_pixel_mesurment)/ Time_Between_Frames

如果我的物理学速度仍然很快,速度与速度不一样,并且需要你随着时间的推移跟踪物体,我认为你刚好在速度之后,但大概是:

速度=(overall_distance_moved mm_per_pixel_mesurment)/(Sum_of_frames_Tracked帧频)

或:

速度=(overall_distance_moved * mm_per_pixel_mesurment)/(Time_object_was_tracked_for)

总之这可以尽管如此,这很困难,也是为什么不同的技术如Sonar或Infra-red被用来精确跟踪速度的原因。

一个有趣的例子至少在英国是使用彩绘线条和速度相机。这些线之间的距离必须在特定测量值的5mm以内,然后根据这些参考值计算车辆的速度(通过同一辆车的两张图片)。这是提供图像深度数据的作弊方式。这些正在被声纳类型取代,就好像这些线不在规定的5mm距离内一样,速度无法准确测量,也无法在法庭上站起来。

好吧我想知道那里有一点,但除非你在一个已知的距离和已知的大小跟踪对象,你不能得到没有一些深度数据的速度或速度,从一个特定的相机,如动力学或从两台相机中分离出一个已知的距离。 (请注意,如果您知道相机行进的距离并且没有旋转,则可以使用一个相机和两个相框来完成此操作)。

我希望这可以帮助你,

干杯,

克里斯