def make_td_images(td, num_spikes, step_factor=1):
"""Generate set of images from the Temporal Difference (td) events by reading a number of unique spikes
td is read from a binary file (refer to eventvision.Readxxx functions)
td: eventvision.Events
num_spikes: number of unique spikes to accumulate before generating an image
step_factor: proportional amount to shift before generating the next image.
1 would result in no overlapping events between images
0.6 would result in the next image overlapping with 40% of the previous image
returns array of images
"""
assert isinstance(td, ev.Events)
assert isinstance(num_spikes, (int, long))
assert num_spikes > 0
assert step_factor > 0
#with timer.Timer() as my_timer:
event_offset = 0
images = []
while event_offset + num_spikes < td.data.size:
image = np.zeros((td.height, td.width), dtype=np.uint8)
unique_spike_count = 0
index_ptr = event_offset
while (unique_spike_count < num_spikes) & (index_ptr < td.data.size):
event = td.data[index_ptr]
y = event.y
x = event.x
if image[y, x] == 0:
image[y, x] = 255
unique_spike_count += 1
index_ptr += 1
#cv2.imshow('img', img)
#cv2.waitKey(1)
if unique_spike_count < num_spikes:
break
images.append(image)
#offset next image
total_spikes_traversed = index_ptr - event_offset
event_offset += math.floor(total_spikes_traversed * step_factor) + 1
#print 'Making images out of bin file took %s seconds' % my_timer.secs
return images
评论列表
文章目录