1*fb1b10abSAndroid Build Coastguard Worker## Copyright (c) 2020 The WebM project authors. All Rights Reserved. 2*fb1b10abSAndroid Build Coastguard Worker## 3*fb1b10abSAndroid Build Coastguard Worker## Use of this source code is governed by a BSD-style license 4*fb1b10abSAndroid Build Coastguard Worker## that can be found in the LICENSE file in the root of the source 5*fb1b10abSAndroid Build Coastguard Worker## tree. An additional intellectual property rights grant can be found 6*fb1b10abSAndroid Build Coastguard Worker## in the file PATENTS. All contributing project authors may 7*fb1b10abSAndroid Build Coastguard Worker## be found in the AUTHORS file in the root of the source tree. 8*fb1b10abSAndroid Build Coastguard Worker## 9*fb1b10abSAndroid Build Coastguard Worker 10*fb1b10abSAndroid Build Coastguard Worker#coding : utf - 8 11*fb1b10abSAndroid Build Coastguard Workerimport numpy as np 12*fb1b10abSAndroid Build Coastguard Workerimport numpy.linalg as LA 13*fb1b10abSAndroid Build Coastguard Workerfrom MotionEST import MotionEST 14*fb1b10abSAndroid Build Coastguard Worker"""Ground Truth: 15*fb1b10abSAndroid Build Coastguard Worker 16*fb1b10abSAndroid Build Coastguard Worker Load in ground truth motion field and mask 17*fb1b10abSAndroid Build Coastguard Worker""" 18*fb1b10abSAndroid Build Coastguard Worker 19*fb1b10abSAndroid Build Coastguard Worker 20*fb1b10abSAndroid Build Coastguard Workerclass GroundTruth(MotionEST): 21*fb1b10abSAndroid Build Coastguard Worker """constructor: 22*fb1b10abSAndroid Build Coastguard Worker 23*fb1b10abSAndroid Build Coastguard Worker cur_f:current 24*fb1b10abSAndroid Build Coastguard Worker frame ref_f:reference 25*fb1b10abSAndroid Build Coastguard Worker frame blk_sz:block size 26*fb1b10abSAndroid Build Coastguard Worker gt_path:ground truth motion field file path 27*fb1b10abSAndroid Build Coastguard Worker """ 28*fb1b10abSAndroid Build Coastguard Worker 29*fb1b10abSAndroid Build Coastguard Worker def __init__(self, cur_f, ref_f, blk_sz, gt_path, mf=None, mask=None): 30*fb1b10abSAndroid Build Coastguard Worker self.name = 'ground truth' 31*fb1b10abSAndroid Build Coastguard Worker super(GroundTruth, self).__init__(cur_f, ref_f, blk_sz) 32*fb1b10abSAndroid Build Coastguard Worker self.mask = np.zeros((self.num_row, self.num_col), dtype=bool) 33*fb1b10abSAndroid Build Coastguard Worker if gt_path: 34*fb1b10abSAndroid Build Coastguard Worker with open(gt_path) as gt_file: 35*fb1b10abSAndroid Build Coastguard Worker lines = gt_file.readlines() 36*fb1b10abSAndroid Build Coastguard Worker for i in xrange(len(lines)): 37*fb1b10abSAndroid Build Coastguard Worker info = lines[i].split(';') 38*fb1b10abSAndroid Build Coastguard Worker for j in xrange(len(info)): 39*fb1b10abSAndroid Build Coastguard Worker x, y = info[j].split(',') 40*fb1b10abSAndroid Build Coastguard Worker #-, - stands for nothing 41*fb1b10abSAndroid Build Coastguard Worker if x == '-' or y == '-': 42*fb1b10abSAndroid Build Coastguard Worker self.mask[i, -j - 1] = True 43*fb1b10abSAndroid Build Coastguard Worker continue 44*fb1b10abSAndroid Build Coastguard Worker #the order of original file is flipped on the x axis 45*fb1b10abSAndroid Build Coastguard Worker self.mf[i, -j - 1] = np.array([float(y), -float(x)], dtype=int) 46*fb1b10abSAndroid Build Coastguard Worker else: 47*fb1b10abSAndroid Build Coastguard Worker self.mf = mf 48*fb1b10abSAndroid Build Coastguard Worker self.mask = mask 49