当前位置: 首页 > article >正文

事件相机(event camera)数据常见处理方法总结

完整代码

liujf69/Data-Processing/Event_Camera

1--代码和数据参考

什么是事件相机,计算机视觉中事件相机这一方向需要学哪些相关知识?

THU-EACT-50

2--处理代码

2-1--Channel-by-channel accumulation

将events按时间戳累积到不同通道内。

import cv2
import numpy as np

# Channel-by-channel accumulation
# 将events按时间戳累积到不同通道内
def gen_events_array(events_ori, C_event, duration, event_h, event_w):
    events = np.zeros((event_h, event_w, C_event))
    C_inter = duration / C_event
    for i in range(events_ori.shape[0]):
        W, H, t, p = events_ori[i]
        p = -1 if p == 0 else p
        events[int(H), int(W), min(int(t // C_inter), C_event - 1)] += p
    return events

def vis_event(gray):
    h,w = gray.shape
    out = 255*np.ones([h, w, 3])
    pos_weight = gray.copy()
    neg_weight = gray.copy()

    pos_weight[pos_weight < 0] = 0
    pos_weight = pos_weight * 2 * 255

    neg_weight[neg_weight > 0] = 0
    neg_weight = abs(neg_weight) * 2 * 255
    out[..., 1] = out[...,1] - pos_weight - neg_weight
    out[..., 0] -= pos_weight
    out[..., 2] -= neg_weight
    out = out.clip(0, 255)
    return out.astype(np.uint8)

if __name__ == "__main__":
    file_name = "./A0P10C0-2021_11_04_12_30_08.npy"
    events_ori = np.load(file_name, allow_pickle = True) # N W H T P
    event_w = int(np.max(events_ori[:, 0]) + 1) # max_W 
    event_h = int(np.max(events_ori[:, 1]) + 1) # max_H
    C_event = 5
    
    events_ori[:, 2] = events_ori[:, 2] - events_ori[:, 2].min() # T
    events_ori[:, 3] = (events_ori[:, 3] - 0.5)*2 # P
    duration = events_ori[:, 2].max() - events_ori[:, 2].min() # T
    
    events1 = gen_events_array(events_ori, C_event, duration, event_h, event_w) # event_h event_w C_event
    events1_vis = events1.clip(-5, 5) / 10
    
    cv2.imwrite('./events1_vis.jpg', vis_event(events1_vis[..., 2]))

未完待续!


http://www.kler.cn/a/331239.html

相关文章:

  • 嵌入式设备常用性能和内存调试指令
  • YOLO模型格式转换:pt -> onnx -> rknn
  • openssl交叉编译(这次基本上正规了)
  • 四种自动化测试模型实例及优缺点详解
  • tcp 的重传,流量控制,拥塞控制
  • Redis篇--常见问题篇6--缓存一致性1(Mysql和Redis缓存一致,更新数据库删除缓存策略)
  • 2023_Spark_实验九:编写WordCount程序(Scala版)
  • 在C#中使用Redis实现高效消息队列
  • 物理学基础精解【44】
  • [leetcode]674_最长连续递增序列
  • JavaScript实现接口请求的超时机制方法汇总
  • AIOps案例 | 历史库异常,如何快速响应与优化?
  • 【大数据入门 | Hive】Join语句
  • CSS 盒子属性
  • 霍夫曼树及其与B树和决策树的异同
  • 设计模式-生成器模式/建造者模式Builder
  • Python画笔案例-070 绘制通电棒棒
  • 这次PostgreSQL事故后,我把表膨胀清理工具撸了一遍
  • vulnhub-unknowndevice64 2靶机
  • 【MySQL】多表联合查询常见练习题
  • Vue3动态导入后端路由
  • 使用 Vue3 和 Axios 实现 CRUD 操作
  • Linux忘记root用户密码怎么重设密码
  • SpringCloud Config配置中心 SpringCloud Bus消息总线
  • SQL基础教程
  • linux系统解压zip文件名乱码