2020-08-13 03:57:56 +02:00
|
|
|
// Copyright 2020 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;
|
|
|
|
|
2020-09-16 03:31:50 +02:00
|
|
|
import "mediapipe/framework/calculator_options.proto";
|
2020-08-13 03:57:56 +02:00
|
|
|
|
|
|
|
message LandmarksSmoothingCalculatorOptions {
|
|
|
|
extend CalculatorOptions {
|
|
|
|
optional LandmarksSmoothingCalculatorOptions ext = 325671429;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Default behaviour and fast way to disable smoothing.
|
|
|
|
message NoFilter {}
|
|
|
|
|
|
|
|
message VelocityFilter {
|
|
|
|
// Number of value changes to keep over time.
|
|
|
|
// Higher value adds to lag and to stability.
|
|
|
|
optional int32 window_size = 1 [default = 5];
|
|
|
|
|
|
|
|
// Scale to apply to the velocity calculated over the given window. With
|
|
|
|
// higher velocity `low pass filter` weights new values higher.
|
|
|
|
// Lower value adds to lag and to stability.
|
|
|
|
optional float velocity_scale = 2 [default = 10.0];
|
|
|
|
|
|
|
|
// If calculated object scale is less than given value smoothing will be
|
|
|
|
// disabled and landmarks will be returned as is.
|
|
|
|
optional float min_allowed_object_scale = 3 [default = 1e-6];
|
2021-03-25 23:01:44 +01:00
|
|
|
|
|
|
|
// Disable value scaling based on object size and use `1.0` instead.
|
2021-06-03 22:13:30 +02:00
|
|
|
// If not disabled, value scale is calculated as inverse value of object
|
|
|
|
// size. Object size is calculated as maximum side of rectangular bounding
|
|
|
|
// box of the object in XY plane.
|
2021-03-25 23:01:44 +01:00
|
|
|
optional bool disable_value_scaling = 4 [default = false];
|
|
|
|
}
|
|
|
|
|
|
|
|
// For the details of the filter implementation and the procedure of its
|
|
|
|
// configuration please check http://cristal.univ-lille.fr/~casiez/1euro/
|
|
|
|
message OneEuroFilter {
|
2021-05-10 21:19:00 +02:00
|
|
|
// Frequency of incomming frames defined in frames per seconds. Used only if
|
|
|
|
// can't be calculated from provided events (e.g. on the very first frame).
|
|
|
|
optional float frequency = 1 [default = 30.0];
|
2021-03-25 23:01:44 +01:00
|
|
|
|
|
|
|
// Minimum cutoff frequency. Start by tuning this parameter while keeping
|
|
|
|
// `beta = 0` to reduce jittering to the desired level. 1Hz (the default
|
|
|
|
// value) is a good starting point.
|
|
|
|
optional float min_cutoff = 2 [default = 1.0];
|
|
|
|
|
|
|
|
// Cutoff slope. After `min_cutoff` is configured, start increasing `beta`
|
|
|
|
// value to reduce the lag introduced by the `min_cutoff`. Find the desired
|
|
|
|
// balance between jittering and lag.
|
|
|
|
optional float beta = 3 [default = 0.0];
|
|
|
|
|
|
|
|
// Cutoff frequency for derivate. It is set to 1Hz in the original
|
|
|
|
// algorithm, but can be tuned to further smooth the speed (i.e. derivate)
|
|
|
|
// on the object.
|
|
|
|
optional float derivate_cutoff = 4 [default = 1.0];
|
2021-05-10 21:19:00 +02:00
|
|
|
|
|
|
|
// If calculated object scale is less than given value smoothing will be
|
|
|
|
// disabled and landmarks will be returned as is.
|
|
|
|
optional float min_allowed_object_scale = 5 [default = 1e-6];
|
2021-06-03 22:13:30 +02:00
|
|
|
|
|
|
|
// Disable value scaling based on object size and use `1.0` instead.
|
|
|
|
// If not disabled, value scale is calculated as inverse value of object
|
|
|
|
// size. Object size is calculated as maximum side of rectangular bounding
|
|
|
|
// box of the object in XY plane.
|
|
|
|
optional bool disable_value_scaling = 6 [default = false];
|
2020-08-13 03:57:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
oneof filter_options {
|
|
|
|
NoFilter no_filter = 1;
|
|
|
|
VelocityFilter velocity_filter = 2;
|
2021-03-25 23:01:44 +01:00
|
|
|
OneEuroFilter one_euro_filter = 3;
|
2020-08-13 03:57:56 +02:00
|
|
|
}
|
|
|
|
}
|