Leitifel's picture
Upload 165 files
899324d verified
# -*- coding: utf-8 -*-
# Max-Planck-Gesellschaft zur Förderung der Wissenschaften e.V. (MPG) is
# holder of all proprietary rights on this computer program.
# You can only use this computer program if you have closed
# a license agreement with MPG or you get the right to use the computer
# program from someone who is authorized to grant you that right.
# Any use of the computer program without a valid license is prohibited and
# liable to prosecution.
#
# Copyright©2020 Max-Planck-Gesellschaft zur Förderung
# der Wissenschaften e.V. (MPG). acting on behalf of its Max Planck Institute
# for Intelligent Systems. All rights reserved.
#
# Contact: ps-license@tuebingen.mpg.de
import numpy as np
# TODO: use a real subsampler..
def subsample(num_frames, last_framerate, new_framerate):
step = int(last_framerate / new_framerate)
assert step >= 1
frames = np.arange(0, num_frames, step)
return frames
# TODO: use a real upsampler..
def upsample(motion, last_framerate, new_framerate):
step = int(new_framerate / last_framerate)
assert step >= 1
# Alpha blending => interpolation
alpha = np.linspace(0, 1, step+1)
last = np.einsum("l,...->l...", 1-alpha, motion[:-1])
new = np.einsum("l,...->l...", alpha, motion[1:])
chuncks = (last + new)[:-1]
output = np.concatenate(chuncks.swapaxes(1, 0))
# Don't forget the last one
output = np.concatenate((output, motion[[-1]]))
return output
if __name__ == "__main__":
motion = np.arange(105)
submotion = motion[subsample(len(motion), 100.0, 12.5)]
newmotion = upsample(submotion, 12.5, 100)
print(newmotion)