112 lines
4.5 KiB
Protocol Buffer
112 lines
4.5 KiB
Protocol Buffer
// 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/framework/calculator.proto";
|
|
import "mediapipe/util/tracking/motion_analysis.proto";
|
|
|
|
// Next tag: 10
|
|
message MotionAnalysisCalculatorOptions {
|
|
extend CalculatorOptions {
|
|
optional MotionAnalysisCalculatorOptions ext = 270698255;
|
|
}
|
|
|
|
optional mediapipe.MotionAnalysisOptions analysis_options = 1;
|
|
|
|
// Determines how optional input SELECTION (if present) is used to compute
|
|
// the final camera motion.
|
|
enum SelectionAnalysis {
|
|
// Recompute camera motion for selected frame neighbors.
|
|
ANALYSIS_RECOMPUTE = 1;
|
|
|
|
// Use composited camera motion and region flow from SELECTION input. No
|
|
// tracking or re-computation is performed.
|
|
// Note that in this case only CAMERA, FLOW and VIDEO_OUT tags are
|
|
// supported as output.
|
|
NO_ANALYSIS_USE_SELECTION = 2;
|
|
|
|
// Recompute camera motion for selected frame neighbors using
|
|
// features supplied by SELECTION input. No feature tracking is performed.
|
|
ANALYSIS_FROM_FEATURES = 3;
|
|
|
|
// Recomputes camera motion for selected frame neighbors but seeds
|
|
// initial transform with camera motion from SELECTION input.
|
|
ANALYSIS_WITH_SEED = 4;
|
|
}
|
|
|
|
optional SelectionAnalysis selection_analysis = 4
|
|
[default = ANALYSIS_WITH_SEED];
|
|
|
|
// If activated when SELECTION input is activated, will replace the computed
|
|
// camera motion (for any of the ANALYSIS_* case above) with the one supplied
|
|
// by the frame selection, in case the frame selection one is more stable.
|
|
// For example, if recomputed camera motion is unstable but the one from
|
|
// the selection result is stable, will use the stable result instead.
|
|
optional bool hybrid_selection_camera = 5 [default = false];
|
|
|
|
// Determines how optional input META is used to compute the final camera
|
|
// motion.
|
|
enum MetaAnalysis {
|
|
// Uses metadata supplied motions as is.
|
|
META_ANALYSIS_USE_META = 1;
|
|
|
|
// Seeds visual tracking from metadata motions - estimates visual residual
|
|
// motion and combines with metadata.
|
|
META_ANALYSIS_HYBRID = 2;
|
|
}
|
|
|
|
optional MetaAnalysis meta_analysis = 8 [default = META_ANALYSIS_USE_META];
|
|
|
|
// Determines number of homography models per frame stored in the CSV file
|
|
// or the homography metadata in META.
|
|
// For values > 1, MixtureHomographies are created.
|
|
optional int32 meta_models_per_frame = 6 [default = 1];
|
|
|
|
// Used for META_ANALYSIS_HYBRID. Rejects features which flow deviates
|
|
// domain_ratio * image diagonal size from the ground truth metadata motion.
|
|
optional float meta_outlier_domain_ratio = 9 [default = 0.0015];
|
|
|
|
// If true, the MotionAnalysisCalculator will skip all processing and emit no
|
|
// packets on any output. This is useful for quickly creating different
|
|
// versions of a MediaPipe graph without changing its structure, assuming that
|
|
// downstream calculators can handle missing input packets.
|
|
// TODO: Remove this hack. See b/36485206 for more details.
|
|
optional bool bypass_mode = 7 [default = false];
|
|
}
|
|
|
|
// Taken from
|
|
// java/com/google/android/libraries/microvideo/proto/microvideo.proto to
|
|
// satisfy leakr requirements
|
|
// TODO: Remove and use above proto.
|
|
message HomographyData {
|
|
// For each frame, there are 12 homography matrices stored. Each matrix is
|
|
// 3x3 (9 elements). This field will contain 12 x 3 x 3 float values. The
|
|
// first row of the first homography matrix will be followed by the second row
|
|
// of the first homography matrix, followed by third row of first homography
|
|
// matrix, followed by the first row of the second homography matrix, etc.
|
|
repeated float motion_homography_data = 1 [packed = true];
|
|
|
|
// Vector containing histogram counts for individual patches in the frame.
|
|
repeated uint32 histogram_count_data = 2 [packed = true];
|
|
|
|
// The width of the frame at the time metadata was sampled.
|
|
optional int32 frame_width = 3;
|
|
|
|
// The height of the frame at the time metadata was sampled.
|
|
optional int32 frame_height = 4;
|
|
}
|