#解码 #神经形态 #大卫 #数据帧 #编码 #dvs #aedat

bin+lib 大卫-EDI-rs

潘等人(2019)论文《使用事件相机在高速下使模糊帧活跃起来》的快速、基于Rust的开源实现。

13 个版本

0.2.5 2024年3月25日
0.2.4 2023年11月29日
0.2.3 2023年9月26日
0.2.2 2023年5月31日
0.1.4 2022年11月18日

#89 in 科学


用于 2 个crates(通过 adder-codec-rs

自定义许可证

69KB
1.5K SLoC

大卫-EDI-rs

潘等人(2019)论文《使用事件相机在高速下使模糊帧活跃起来》的快速、基于Rust的开源实现。

关于

本项目旨在阐述上述论文,并朝着利用合成的事件和帧数据的实时软件系统迈进。原始论文的代码大部分是混淆的,使得改进变得不可能。此外,原始代码库是用MATLAB编写的,相对较慢,并且使用转换后的MATLAB数据格式对DAVIS文件进行处理。

此实现操作的是由iniVation DAVIS相机直接生成的.aedat4文件以及来自DAVIS相机的实时视频流。如果我们打算向事件相机实用系统迈进,我们需要实际的加工!我包含了用我的相机录制的一个示例文件。

我尽力理解和实现了原始论文中展示的数学,同时为了提高速度作了一些简化。目前,此项目只实现了2019年论文中的基于事件的双重积分,而不是2020年论文中的多个基于事件的双重积分

使用方法

由于有大量的命令行参数可用,我首选的方法是在文件中提供服务。有关示例,请参阅Args.toml。您可以通过克隆此存储库并执行以下操作来运行它:

cargorun --release ----args-filename"./Args.toml"

从.aedat4文件中去模糊

您可以通过提供文件的目录在--base-path,文件名在--event-filename-0,以及将--mode设置为"file"来去模糊现有的文件。

从实时摄像头流中去模糊

您还可以实时去模糊直接从摄像头来的数据!我提供了iniVation的DV软件的配置文件,该文件允许您将APS帧和事件数据包发布到两个Unix套接字。对于这种方法,您应该将--base-path设置为"/tmp",将--event-filename-0设置为events套接字的名字,将--event-filename-1设置为frames套接字的名字,将--mode设置为"socket"。这应该与TCP连接基本相同,但可能需要额外的配置。

其他参数

--output-fps:重建输出的帧率。增加此参数对处理速度的影响很小。

--show-display:是否使用OpenCV显示窗口显示重建的实时视图。

--write-video:如果为true,将重建的帧写入.avi文件。

--optimize-c:如果为true,将为去模糊每帧动态选择最佳对比度阈值。这会导致处理速度显著减慢,尤其是在高帧率输入时,并且可以使重建性能略低于实时。如果为false,则提供的--start-c值将是去模糊所有帧使用的对比度阈值。

--optimize-controller:如果为true,将尝试维持实时重建性能。控制器动态切换是否执行对比度阈值优化(除非--optimize-c为false),并调整重建帧率。如果为false,将维持恒定的重建帧率,但可能无法达到实时性能。禁用此功能时,重建的视频文件将非常平滑。如果场景动态变化不大,并且您有能力提前调整设置,最好保持此功能禁用,并通过试错找到(通过试验和错误)维持良好性能的最佳--output-fps值。

待办事项列表

在我开始实现mEDI之前,还有一些主要的事情要做。社区的帮助将非常受欢迎。

  • 添加文档
  • 提高速度
  • 使其更具Rust风格(遵循约定)
  • 修复对比度阈值优化
  • 添加从实时摄像头进行重建
  • 根据所需的重建帧率,创建一个控制器来决定何时执行c值优化,适用于实时应用
    • 不过,还需要改进
  • 能够轻松将重建帧保存为视频

要求

  • Rust 2021或更高版本
  • Cargo
  • OpenCV及其Rust绑定(安装说明在此
  • 其他依赖项将在使用Cargo构建时自动下载和安装

兼容性

仅在Ubuntu 20.04上进行了测试,使用dv-gui 1.6进行实时摄像头数据的管道。默认的Args.toml在Windows上无法正常工作,因为它使用Unix套接字,但可能可以通过文件或TCP工作。通过CI演示了在Ubuntu和Windows上构建。

发行说明

v0.2.3,2023-09-26

  • 更新OpenCV依赖版本

v0.2.0,2023-03-08

  • 更新aedat-rs依赖,用于dv-gui v1.6的socketed/TCP连接。这是一个破坏性的(但好的)更改,因为dv-gui在每个数据包的开始处添加了一个IO头。

引用本工作

如果您撰写了一篇引用此软件的论文,我们要求您引用以下基于其工作的论文。引用以BibTeX格式给出。

面向帧和事件视频源的异步强度表示

(主仓库)

@inproceedings{10.1145/3587819.3590969,
author = {Freeman, Andrew C. and Singh, Montek and Mayer-Patel, Ketan},
title = {An Asynchronous Intensity Representation for Framed and Event Video Sources},
year = {2023},
isbn = {979-8-4007-0148-1/23/06},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3587819.3590969},
doi = {10.1145/3587819.3590969},
booktitle = {Proceedings of the 14th ACM Multimedia Systems Conference},
pages = {1–12},
numpages = {12},
location = {Vancouver, BC, Canada},
series = {MMSys '23}
}

ADΔER框架:事件视频表示的工具

@inproceedings{Freeman23-0,
  title = {The ADΔER Framework: Tools for Event Video Representations},
  author = {Andrew C. Freeman},
  year = {2023},
  doi = {10.1145/3587819.3593028},
  url = {https://doi.org/10.1145/3587819.3593028},
  researchr = {https://researchr.org/publication/Freeman23-0},
  cites = {0},
  citedby = {0},
  pages = {343-347},
  booktitle = {Proceedings of the 14th Conference on ACM Multimedia Systems, MMSys 2023, Vancouver, BC, Canada, June 7-10, 2023},
  publisher = {ACM},
}

依赖项

~22–30MB
~354K SLoC