gpt4 book ai didi

opencv - 按速度排序运动组件(使用 Emgu 进行运动检测)

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:36 25 4
gpt4 key购买 nike

我正在尝试创建一个有序的 Motion Components 列表,按 Action 排序。例如,在街景相机中,我希望首先是车辆,其次是自行车,然后是行人。这可能在 Emgu 中使用 MotionDetector 示例吗?

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

这似乎是某种阈值,但 motionPixelCount 的真正含义是什么?这可以代表运动组件的速度/速度吗?还是完全是别的东西?它正在与组件区域进行比较。

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

最佳答案

产生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 或两个像素出现移动的数十亿结果。但是,通过将更准确的 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_movedmm_per_pixel_mesurment)/(Sum_of_frames_TrackedFrame_Rate)

或:

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

总而言之,这是可以做到的,但是很难,这就是为什么要使用声纳或红外线等不同技术来准确跟踪速度的原因。

至少在英国,一个有趣的例子是画线和测速相机的使用。这些线之间的距离必须在特定测量值的 5 毫米以内,然后根据这些引用资料计算车辆的速度(通过同一辆车的两张图片)移动的距离。这是提供图像深度数据的作弊方式。这些正在被声纳类型取代,就好像这些线不在设定量的 5 毫米距离内一样,速度无法准确测量并且无法在法庭上站立。

好吧,我在那里有点想知道,但除非你在已知距离和已知大小跟踪一个物体,否则你无法在没有来自特定相机(例如动力学相机)或来自的一些深度数据的情况下获得速度或速度两个摄像头设置了一个已知的距离。 (请注意,如果您知道相机行进的距离并且没有旋转,则可以使用一个相机和两个框架来完成此操作)。

希望对你有帮助

干杯,

克里斯

关于opencv - 按速度排序运动组件(使用 Emgu 进行运动检测),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7963255/

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