Source code for tonic.functional.crop

import numpy as np


[docs]def crop_numpy(events, sensor_size, target_size): """Crops the sensor size to a smaller sensor. x' = x - new_sensor_start_x y' = y - new_sensor_start_y Parameters: events: ndarray of shape [num_events, num_event_channels] sensor_size: size of the sensor that was used [W,H] target_size: size of the sensor that was used [W',H'] Returns: events - events within the crop box sensor_size - cropped to target_size """ assert target_size[0] <= sensor_size[0] and target_size[1] <= sensor_size[1] assert "x" and "y" in events.dtype.names x_start_ind = int(np.random.rand() * (sensor_size[0] - target_size[0])) y_start_ind = int(np.random.rand() * (sensor_size[1] - target_size[1])) x_end_ind = x_start_ind + target_size[0] y_end_ind = y_start_ind + target_size[1] event_mask = ( (events["x"] >= x_start_ind) * (events["x"] < x_end_ind) * (events["y"] >= y_start_ind) * (events["y"] < y_end_ind) ) events = events[event_mask, ...] events["x"] -= x_start_ind events["y"] -= y_start_ind return events