FE-LineViewer / utils /event.py
lihao57
initial commit
7ebf5dc
# -*- encoding: utf-8 -*-
"""
@File : event.py
@Time : 2025/9/3 15:25:00
@Author : lh9171338
@Version : 1.0
@Contact : 2909171338@qq.com
"""
import numpy as np
class Event:
"""
Event
Args:
filename (str | None): path to the event file
events (dict | None): event data
"""
def __init__(self, filename=None, events=None, **kwargs):
assert filename is not None or events is not None
if filename is not None:
events = np.load(filename)
events = dict(**events)
events["x"] = np.array(events["x"], dtype="int16")
events["y"] = np.array(events["y"], dtype="int16")
events["p"] = np.array(events["p"], dtype="int16")
events["t"] = np.array(events["t"], dtype="int32")
self.filename = filename
self.events = events
def event2image(self):
"""
Convert event to image
Args:
None
Returns:
image (numpy.ndarray): event image
"""
width, height = self.events["image_size"]
xs = self.events["x"]
ys = self.events["y"]
ps = self.events["p"]
event = np.zeros((height, width, 2), dtype="float32")
np.add.at(event, (ys, xs, ps), 1)
np.add.at(event, (ys, xs, ps), 1)
neg = event[:, :, 0]
pos = event[:, :, 1]
image = np.stack((neg, np.zeros_like(neg), pos), axis=-1)
image = (((image / image.max()) ** 0.5) * 255).astype(np.uint8)
return image