在测试版本中,已经启动了一项在线服务,该服务使用交叉路口摄像机的记录来显示我们感兴趣的物体(汽车和其他车辆)的当前速度。
驾驶学校的学生和经验丰富的驾驶员都面临着可视化驾驶汽车时的距离及其当前速度的问题。
但是,有一个解决方案-分析以前记录的视频帧上的数据,并在各种收费和免费,可访问和封闭式服务中对其进行处理。

一种这样的最近出现的服务将被进一步讨论。
链接到在线服务“视频事故中的速度分析”。服务的主页(到目前为止非常简单):
这个想法和实现的作者是俄罗斯程序员和Khabrovchanin - Ilya Alexandrovich Volkov 。在他的允许下,该出版物是用哈布雷撰写的。目前,该服务无法自动运行,必须首先准备每个视频,以便由服务运营商进行手动处理(现在,是一个人还是一个新用户的作者,在发布结束时说明如何使用该服务)。

处理视频帧的阶段:-在第一阶段,将补偿摄像机的光学畸变,即,现实世界中的所有直线均应是直线,并且应在服务处理的视频上(来自摄像机的畸变校正已在服务中自动运行);
-在第二阶段,参考道路平面,为此,操作员需要像现实世界中那样在框架上标记矩形,并输入两个(或更多个)具有先前测量长度的段(通常是:道路的宽度,标记线之间的单独条带的宽度,距离在行车道或标志之间,汽车的轴距之间);




-在第三阶段,每个帧上的服务运营商需要设置关注对象的位置(标记其路径),结果,服务将向我们显示对象的当前速度及其在移动过程中的变化。




服务播放器具有标尺工具,您可以使用该工具测量视频上的距离:

服务的准确性在很大程度上取决于视频的质量和参数。

现在,该服务仅适用于使用固定(静态)摄像机获得的视频帧,这些记录的数据库得到了补充和开发。
在最终确定服务功能的过程中,作者计划对在行进和停驶汽车中使用录像机获得的记录进行分析。
该服务的作者计划分析大量涉及行人的事故视频,并分析碰撞时车速数据的统计数据。

这是作者打算开发此服务的其他方法:- 添加自动点跟踪;
- 添加地理标签;
- 引入卡尔曼滤波器以消除观测误差;
- 使用计算机视觉;
- 添加用于计算多个对象速度的功能;
- 计划将机器学习引入服务中,以最大程度地减少操作员在准备视频记录方面的工作。

我真的希望该出版物会使Khabrovites感兴趣,并在该服务的开发和当前工作中为该服务的作者提供帮助。
我设法联系了该服务的作者
Ilya Volkov ,与他讨论了该服务的功能,并获得了针对该项目的专门针对Habr的几个问题的答案。
采访“视频记录中事故的速度分析”服务作者:问:实现这种服务的想法早就出现了吗?Ilya的回答:大约四个月前,我看到了一次事故的视频,并且有趣的是其中一位参与者的移动速度(至少接近)。 不仅对我来说变得很有趣-在视频评论中,引起了很多争议,并提出了各种各样的评级。 那时我以为这样的工具会有用。
问题:从“您可以做到这一点”的想法到首次启动该服务已经花费了多少时间?伊利亚的回答:好了,四个月了。 但是我不急于调用当前版本的工作版本-它仍然很潮湿:)
问题:您在服务中使用哪些语言和平台,并且打算进一步使用哪些语言和平台?Ilya的答案:该项目托管在Firebase上,这对于快速启动几乎所有项目都是一件好事。 授权,托管,数据库,文件存储-一切开箱即用。 便捷的API,一开始完全免费。
前端-Vue.js,也是从头开始学习的简单工具。 使用Konva.js在画布上绘图时,着色器负责光学的变形。
几乎所有代码(着色器除外)都是用JavaScript编写的。 堆栈没有特殊要求,我将继续使用它。
问题:普通用户何时可以上传视频并使用该服务?Ilya的回答:原则上,这可以立即完成,我写了有关如何执行此操作的说明。
问题:您是该项目中唯一的参与者,还是有一个程序员团队?Ilya的答案:团队还很小-我是我的朋友,他在前端开发方面很有能力。
问题:您打算继续开发该服务吗?您希望该论坛的同事/论坛成员提供帮助吗?Ilya的回答:该服务的开发肯定是有计划的,因为该原型看起来非常有趣。 发展思想充实,愿望也存在。
总是欢迎帮助-特别是建议。
问题:这将是一项免费服务还是有任何货币化计划?伊利亚的答案:货币化的前景仍然相当模糊。 也许将来它们会变得清晰起来。
问题:是否出现了对该服务感兴趣的组织或社区? 例如,摩托车俱乐部或驾驶学校?Ilya的回答:社区没有给我写信,但是一些汽车专家对该项目感兴趣。
问题:现在使用该服务确定速度的准确度是多少? 如果输入必要的参数以测量真实道路的轮盘赌或使用内置标尺测量车道宽度的地理服务,这些数据会有多少不同?Ilya的回答:在质量非常好且没有光学失真的视频中,准确性还不错,在开放数据集上进行的测试显示误差高达3%。 随着视频质量的下降和不稳定的帧速率,精度会降低。
至于使用轮盘赌和借助Geoservices进行测量,轮盘赌当然更为可靠。 不能盲目信任来自Geoservice的数据,但可以并且应该对其进行双重检查。
总的来说,我非常希望拒绝将地形捕捉到地标上,并拒绝基于汽车的轴距和其他精确已知的距离而附着。
问题:是否可以选择度量单位(km \ h,m \ s,英里\小时)并将高速遥测数据保存到单独的日志文件中?Ilya的回答:是的,因为这样做并不困难。 但是何时会实现-我不能说。
问题:由于道路上积雪,冬季的视频在您的服务中将更加难以处理?伊利亚(Ilya)的回答:是的,雪增加了困难-一些地标不可见,有时甚至道路的几何形状也发生了变化。 但原则上,速度也是根据下雪的视频计算得出。
问题:是否计划在服务中使用神经网络?Ilya的回答:这绝对不是近期的前景,但是这个话题绝对非常有趣。 训练神经网络以选择相机失真因子会很酷。 使用现成的神经网络的许多想法。 但是目前,没有它们还有很多事情要做:)
问题:现在该服务托管在Firebase上,您是否正在寻找替代方案?Ilya的回答:关于Firebase唯一不喜欢的是价格。 例如,来自文件存储的1 GB流量的价格约为7卢布,而Yandex.Cloud只有1卢布。 虽然这不是一个很大的问题,但是将来我会寻找优化的方法。 现在,我在设计架构时应避免与服务提供者建立紧密的联系。
非常感谢Ilya提供有趣且详细的答案!如果可能,作者将新视频添加到服务中:


有关使用该服务的说明,请参见此处 。
1.要创建您的项目,您需要登录。 虽然可以通过Google和Facebook帐户获得授权。 授权后,“创建项目”按钮将对您可用。

2.单击“创建项目”按钮,出现用于创建新项目的页面,建议在该页面上下载视频文件。 视频文件的最大大小为3 MB。 您可以使用
此视频服务修剪
视频 。

3.下载文件,成功下载后,项目页面将自动打开。

4.首先,我们消除摄像机光学元件的畸变:使用滑块k3,k4,Scale调整畸变,以使现实世界中的所有直线均在图中并成直线。

5.移动四边形,使其与现实世界的矩形匹配,并指示2个距离(线段不应平行)。

6.您可以使用Yandex.Maps搜索距离。

7.由于Yandex.Maps上的距离可能并不完全准确,因此我们需要确保使用标尺获得的绑定足够。 通常我们知道汽车的轴距。 例如,VAZ-2114的底部是2.46米,我们得到2.45。

8.电车的长度约为16米,也接近真实长度。

9.现在我们准备直接进行汽车速度的计算。 我们进入对象点的编辑模式,并在每一帧上标记对象的点。 手动标记每个帧上的点可能很累,因此有一个插值工具:在一个帧上标记一个点,然后在5-15帧之后标记一个点,在时间轴上选择帧之间的间隔,然后按I按钮:现在,帧之间的点均匀地直线移动。

10.因此,我们计算了物体的速度。
