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风格(遵循约定)
- 修复对比度阈值优化
- 特别感谢Chen Song为此提供的帮助
- 添加从实时摄像头进行重建
- 根据所需的重建帧率,创建一个控制器来决定何时执行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}
}
@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