Ejemplo n.º 1
0
def average(input_file, output_file, m=10):
    bvh_file = bvh.read_file(input_file)

    for i in range(0, 3):
        v = bvh_file["POSITIONS"][:, i]
        bvh_file["POSITIONS"][:, i] = spacefilter.apply_average(v, m)

    bvh.write_file(output_file, bvh_file)
Ejemplo n.º 2
0
def butterworth(input_file, output_file, border=100, u0=60, order=2):
    bvh_file = bvh.read_file(input_file)

    for i in range(0, 3):
        v = bvh_file["POSITIONS"][:, i]
        f = freqfilter.fft(v, border)
        fil = freqfilter.butter_worth_filter(len(f), u0, order)
        ff = freqfilter.apply_filter(f, fil)
        iff = freqfilter.ifft(ff, border)
        bvh_file["POSITIONS"][:, i] = np.real(iff)

    bvh.write_file(output_file, bvh_file)
Ejemplo n.º 3
0
def gaussian(input_file, output_file, border=100, sigma=10):
    bvh_file = bvh.read_file(input_file)

    for i in range(0, 3):
        v = bvh_file["POSITIONS"][:, i]
        f = freqfilter.fft(v, border)
        fil = freqfilter.gaussian_filter(len(f), sigma)
        ff = freqfilter.apply_filter(f, fil)
        iff = freqfilter.ifft(ff, border)
        bvh_file["POSITIONS"][:, i] = np.real(iff)

    bvh.write_file(output_file, bvh_file)
Ejemplo n.º 4
0
def average(input_file, output_file, m=10):
    bvh_file = bvh.read_file(input_file)

    for j in range(len(bvh_file["ROTATIONS"][0, :, 0])):
        for i in range(3):
            v = angle.floats_to_degrees(bvh_file["ROTATIONS"][:, j, i])
            p = angle.degrees_to_polars(v)
            f_filtered = spacefilter.apply_average(p, m)
            p = angle.complexes_to_polars(f_filtered)
            nv = angle.polars_to_degrees(p)
            bvh_file["ROTATIONS"][:, j, i] = nv

    bvh.write_file(output_file, bvh_file)
Ejemplo n.º 5
0
def butterworth(input_file, output_file, border=100, u0=60, order=2):
    bvh_file = bvh.read_file(input_file)

    for j in range(len(bvh_file["ROTATIONS"][0, :, 0])):
        for i in range(3):
            v = angle.floats_to_degrees(bvh_file["ROTATIONS"][:, j, i])
            p = angle.degrees_to_polars(v)
            f = freqfilter.fft(p, border)
            fil = freqfilter.butter_worth_filter(len(f), u0, order)
            f_filtered = freqfilter.apply_filter(f, fil)
            f_filtered = freqfilter.ifft(f_filtered, border)
            p = angle.complexes_to_polars(f_filtered)
            nv = angle.polars_to_degrees(p)
            bvh_file["ROTATIONS"][:, j, i] = nv

    bvh.write_file(output_file, bvh_file)
Ejemplo n.º 6
0
import sys
from bvh_smooth import bvh


def dp(a, b):
    return abs(a - b)


def dr(a, b):
    if abs(a - b) > 180:
        return 360 - abs(a - b)
    return abs(a - b)


INPUT = sys.argv[1]
bvh_file = bvh.read_file(INPUT)
p = bvh_file["POSITIONS"]
r = bvh_file["ROTATIONS"]
nf = len(p[:, 0])

pav = 0
for c in range(3):
    for f in range(nf - 1):
        pav += dp(p[f, c], p[f + 1, c])
pav = pav / (3 * (nf))

rav = 0
for j in range(21):
    for c in range(3):
        for f in range(nf - 1):
            rav += dr(r[f, j, c], r[f + 1, j, c])