From 2d5ba9e7a292e71c1ae78da1e0a284ff6edb9ac1 Mon Sep 17 00:00:00 2001 From: Théo de la Hogue Date: Wed, 10 May 2023 19:59:02 +0200 Subject: Renaming gaze movement distance into amplitude. --- src/argaze/GazeFeatures.py | 10 +++++----- src/argaze/utils/demo_gaze_features_run.py | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/argaze/GazeFeatures.py b/src/argaze/GazeFeatures.py index d6011a0..fd43824 100644 --- a/src/argaze/GazeFeatures.py +++ b/src/argaze/GazeFeatures.py @@ -146,8 +146,8 @@ class GazeMovement(): duration: float = field(init=False) """Inferred duration from first and last timestamps.""" - distance: float = field(init=False) - """Inferred distance from first and last positions.""" + amplitude: float = field(init=False) + """Inferred amplitude from first and last positions.""" def __post_init__(self): @@ -160,10 +160,10 @@ class GazeMovement(): _, start_position = self.positions.first _, end_position = self.positions.last - distance = numpy.linalg.norm( numpy.array(start_position.value) - numpy.array(end_position.value)) + amplitude = numpy.linalg.norm( numpy.array(start_position.value) - numpy.array(end_position.value)) - # Update frozen distance attribute - object.__setattr__(self, 'distance', distance) + # Update frozen amplitude attribute + object.__setattr__(self, 'amplitude', amplitude) def __str__(self) -> str: """String display""" diff --git a/src/argaze/utils/demo_gaze_features_run.py b/src/argaze/utils/demo_gaze_features_run.py index f1c6e19..4fdc10d 100644 --- a/src/argaze/utils/demo_gaze_features_run.py +++ b/src/argaze/utils/demo_gaze_features_run.py @@ -55,9 +55,13 @@ def main(): identification_mode = 'I-DT' visual_scan_path = GazeFeatures.VisualScanPath() + tpm = TransitionProbabilityMatrix.VisualScanPathAnalyzer() tpm_analysis = pandas.DataFrame() + cK = CoefficientK.VisualScanPathAnalyzer() + cK_analysis = 0 + gaze_movement_lock = threading.Lock() # Init timestamp @@ -68,6 +72,7 @@ def main(): nonlocal gaze_position nonlocal tpm_analysis + nonlocal cK_analysis # Edit millisecond timestamp data_ts = int((time.time() - start_ts) * 1e3) @@ -110,6 +115,8 @@ def main(): tpm_analysis = tpm.analyze(visual_scan_path) + cK_analysis = cK.analyze(visual_scan_path) + except GazeFeatures.VisualScanStepError as e: print(f'Error on {e.aoi} step:', e) @@ -214,7 +221,16 @@ def main(): cv2.line(aoi_matrix, start_line, to_center, color, int(probability*10) + 2) cv2.line(aoi_matrix, from_center, to_center, [55, 55, 55], 2) - + + # Write cK analysis + if cK_analysis < 0.: + + cv2.putText(aoi_matrix, f'Ambient attention', (20, window_size[1]-80), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 255), 1, cv2.LINE_AA) + + elif cK_analysis > 0.: + + cv2.putText(aoi_matrix, f'Focal attention', (20, window_size[1]-80), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 0), 1, cv2.LINE_AA) + # Unlock gaze movement identification gaze_movement_lock.release() -- cgit v1.1