From c637a4c2a33ba4c1d47cf05b78cc9af518c59e85 Mon Sep 17 00:00:00 2001 From: Théo de la Hogue Date: Mon, 28 Mar 2022 14:41:49 +0200 Subject: Fixing timestamp unit inconsistency --- .../utils/analyse_tobii_segment_fixations.py | 34 +++++++++++++++++----- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/argaze/utils/analyse_tobii_segment_fixations.py b/src/argaze/utils/analyse_tobii_segment_fixations.py index ef4ebbb..3fe8c7b 100644 --- a/src/argaze/utils/analyse_tobii_segment_fixations.py +++ b/src/argaze/utils/analyse_tobii_segment_fixations.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import argparse +import bisect from argaze import GazeFeatures from argaze.TobiiGlassesPro2 import TobiiEntities @@ -38,18 +39,17 @@ def main(): # Access to video timestamp index tobii_vts = tobii_segment_data.vts - print(f'{len(tobii_vts)} video timestamps loaded') for ts, vts in tobii_vts.items(): - print(f'ts: {ts/1000000}, vts: {vts.vts/1000000}') + print(f'ts: {ts/1000}, vts: {vts.vts/1000}') - # Format tobii gaze data into generic gaze data and store them using second unit timestamp + # Format tobii gaze data into generic gaze data and store them using millisecond unit timestamp generic_ts_gaze_positions = GazeFeatures.TimeStampedGazePositions() for ts, tobii_data in tobii_ts_gaze_positions.items(): generic_data = GazeFeatures.GazePosition(tobii_data.gp[0] * tobii_segment_video.get_width(), tobii_data.gp[1] * tobii_segment_video.get_height()) - generic_ts_gaze_positions[ts/1000000] = generic_data + generic_ts_gaze_positions[ts/1000] = generic_data print(f'Dispersion threshold: {args.dispersion_threshold}') print(f'Duration threshold: {args.duration_threshold}') @@ -61,10 +61,30 @@ def main(): for ts, f in fixation_analyser.fixations.items(): print(f'start time = {ts}, duration = {f.duration}, dispertion = {f.dispersion}, centroid = {f.centroid}') - # TODO : Synchronise video and gaze - #for ts, frame in tobii_segment_video.frames(): + ''' + # TODO : Synchronise video and gaze + current_vts_ts, current_vts = tobii_vts.pop_first() + next_vts_ts, next_vts = tobii_vts.pop_first() + + for ts, frame in tobii_segment_video.frames(): + + print(ts) + + vts_offset = current_vts_ts - current_vts.vts + print(f'vts_offset = {vts_offset}') + + if ts > next_vts.vts: + + current_vts_ts, current_vts = next_vts_ts, next_vts + next_vts_ts, next_vts = tobii_vts.pop_first() + + print(f'ts + vts_offset = {ts + vts_offset}') - #print(ts) + # retreive closest fixation + closest_fixation = bisect.bisect_left(list(fixation_analyser.fixations.keys()), ts + vts_offset) + + print(f'closest_fixation = {closest_fixation}') + ''' if __name__ == '__main__': -- cgit v1.1