-
Christoph Fischer authoredChristoph Fischer authored
identification.proto 3.80 KiB
/* This is the default protobuf file for the general structure of the data. It does not compile by it alone but needs
to be extended by specific methods. See for example the template/template.proto
Properties can be extended by the user to define the properties of the detected objects. For example properties of
objects might include their size, intensity, orientation, or more complex self-computed heuristics.
*/
// TODO also has tracking information, dont put this file into /id
// TODO implement geometry
message VoxelData {
repeated uint32 index = 1;
optional float value = 2;
}
message VertexData {
repeated float position = 1;
optional float value = 2;
}
message FaceData {
repeated uint32 vertices = 1; // reference to vertex_list
optional float value = 2;
}
message VoxelRepresentation {
optional string desc = 1;
repeated VoxelData voxel_data = 2;
}
message LineRepresentation {
optional string desc = 1;
repeated VertexData vertex_data = 2;
}
message BoundaryRepresentation {
optional string desc = 1;
repeated VertexData vertex_data = 2;
repeated FaceData face_data = 3;
}
/* A Connection represents an edge in the tracking graph. They reference objects by ID and an edge exists iff they are
from consecutive time stamps in the same time series and the tracking algorithm identifies a correspondance. Start-
and End-Node of the connection are defined by the time-id of this timeline and the object id.
*/
message ObjectNode {
required int32 time_index = 1;
required int32 object_id = 2;
}
message Connection {
required ObjectNode n1 = 1;
required ObjectNode n2 = 2;
}
/* The tracking graph is defined by connections, each one connecting two objects which belong to the same track.
Edges do not necessarily have to be of consecutive timesteps. These edges fully define the graph.
*/
message TrackingGraph {
repeated Connection connections = 1;
}
/* Object represents one detected object in the dataset for one single point in time with its current properties.
* It also can contain a form of data representation, like volume (list of voxels), lines or boundaries.
*/
message Object {
required int32 id = 1;
repeated LineRepresentation line_rep = 2;
optional VoxelRepresentation voxel_rep = 3;
repeated BoundaryRepresentation boundary_rep = 4;
optional Properties properties = 5;
}
/* Timestep represents the state of the data for one single point in time within one time series. It is defined by its
* valid time and contains a list of objects detected at this point in time.
*/
message Timestep {
optional string valid_time = 1;
repeated Object objects = 2;
}
/* TrackableSet represents one trackable set (one time series) in the dataset. It is defined by some meta data (member,
* initialization time of reforecast, ...). It contains the timestep list, where each entry represents a (re)forecast
* point in time in the time series. It also contains the connections between objects in the time series if the tracking
* is executed. Connections connect pairwise object IDs in the series to represent that these are the same according
* to the used algorithm.
*/
message TrackableSet {
optional string init_time = 1;
optional float member = 2;
optional float level = 3;
repeated Timestep timesteps = 4;
optional TrackingGraph graph = 5;
}
/* DatasetDescription represents the description of the entire dataset Besides some meta data it contains a list of
* trackable set. A trackable set is a series of timestamps of one single (re)forecast, e.g. one member. The tracking
* makes use of the fact, that objects in each set (e.g. each member) can be tracked in parallel.
*/
message DatasetDescription {
optional string name = 1;
optional string file = 2;
required string run_time = 3;
repeated TrackableSet sets = 4;
}