// Copyright 2019 The MediaPipe Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto2";
package mediapipe;
import "mediapipe/util/tracking/tracking.proto";
option java_package = "com.google.mediapipe.tracking";
option java_outer_classname = "BoxTrackerProto";
message BoxTrackerOptions {
// Chunk size for caching files. Should be equal to those
// written by the FlowPackagerCalculator.
optional int32 caching_chunk_size_msec = 1 [default = 2500];
// Chunk file format.
optional string cache_file_format = 2 [default = "chunk_%04d"];
// Number of simultaneous tracking requests.
optional int32 num_tracking_workers = 3 [default = 8];
// Maximum waiting time for next chunk, till function times out.
optional int32 read_chunk_timeout_msec = 4 [default = 60000];
// If set, box tracker will record the state for each computed TimedBox
// across all paths.
optional bool record_path_states = 5 [default = false];
// Actual tracking options to be used for every step.
optional TrackStepOptions track_step_options = 6;
}
// Next tag: 14
// Proto equivalent of struct TimedBox.
message TimedBoxProto {
// Normalized coords - in [0, 1]
optional float top = 1;
optional float left = 2;
optional float bottom = 3;
optional float right = 4;
// Rotation of box w.r.t. center in radians.
optional float rotation = 7;
optional MotionBoxState.Quad quad = 9;
optional int64 time_msec = 5 [default = 0];
// Unique per object id to disambiguate boxes.
optional int32 id = 6 [default = -1];
// Box lable name.
optional string label = 13;
// Confidence of box tracked in the range [0, 1], with 0 being least
// confident, and 1 being most confident. A reasonable threshold is 0.5
// to filter out unconfident boxes.
optional float confidence = 8;
// Aspect ratio (width / height) for the tracked rectangle in physical space.
// If this field is provided, quad tracking will be performed using
// 6 degrees of freedom perspective transform between physical rectangle and
// frame quad. Otherwise, 8 degrees of freedom homography tracking between
// adjacent frames will be used.
optional float aspect_ratio = 10;
// Whether or not to enable reacquisition functionality for this specific box.
optional bool reacquisition = 11 [default = false];
// Whether we want this box to be potentially grouped with other boxes
// to track together. This is useful for tracking small boxes that lie
// on a plane. For example, when we detect a plane,
// track the plane, then all boxes within the plane can share the same
// homography transform.
optional bool request_grouping = 12 [default = false];
}
message TimedBoxProtoList {
repeated TimedBoxProto box = 1;
}