diff options
author | Théo de la Hogue | 2024-04-10 15:13:12 +0200 |
---|---|---|
committer | Théo de la Hogue | 2024-04-10 15:13:12 +0200 |
commit | 03013286100d4a3cc49439afc6f432f7be0c494b (patch) | |
tree | 3615506f50381208bd4d327d61a49440143d6ffe | |
parent | bcfb82055c1736262ce974dc5dd10b365dda8d5c (diff) | |
download | argaze-03013286100d4a3cc49439afc6f432f7be0c494b.zip argaze-03013286100d4a3cc49439afc6f432f7be0c494b.tar.gz argaze-03013286100d4a3cc49439afc6f432f7be0c494b.tar.bz2 argaze-03013286100d4a3cc49439afc6f432f7be0c494b.tar.xz |
orthographic corrections
19 files changed, 40 insertions, 40 deletions
diff --git a/docs/img/aruco_markers_pipeline.png b/docs/img/aruco_marker_pipeline.png Binary files differindex 178da7f..178da7f 100644 --- a/docs/img/aruco_markers_pipeline.png +++ b/docs/img/aruco_marker_pipeline.png diff --git a/docs/index.md b/docs/index.md index 3c398ba..3784bdd 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,36 +2,36 @@ title: What is ArGaze? --- -# Build real-time or post-processing eye tracking applications +# Develop post- or real-time gaze processing applications **Useful links**: [Installation](installation.md) | [Source Repository](https://git.recherche.enac.fr/projects/argaze/repository) | [Issue Tracker](https://git.recherche.enac.fr/projects/argaze/issues) | [Contact](mailto:achil-contact@recherche.enac.fr) -**ArGaze** python toolkit provides a set of classes to build **custom-made gaze processing pipelines** that works with **any kind of eye tracker devices** whether on **live data stream** or for **data post-processing**. +**ArGaze** is a Python software library that lets you build **custom-made gaze processing pipelines** for **any kind of eye tracker device,** whether for **post- or real-time data processing**. ![ArGaze pipeline](img/argaze_pipeline.png) ## Gaze analysis pipeline -First of all, **ArGaze** provides extensible modules library allowing to select application specific algorithms at each pipeline step: +**ArGaze** provides an extensible modules library, allowing to select application-specific algorithms at each pipeline step: * **Fixation/Saccade identification**: dispersion threshold identification, velocity threshold identification, ... * **Area Of Interest (AOI) matching**: focus point inside, deviation circle coverage, ... * **Scan path analysis**: transition matrix, entropy, explore/exploit ratio, ... -Once incoming data are formatted as required, all those gaze analysis features can be used with any screen-based eye tracker devices. +Once the incoming data is formatted as required, all those gaze analysis features can be used with any screen-based eye tracker devices. -[Learn how to build gaze analysis pipelines for various use cases by reading user guide dedicated section](./user_guide/gaze_analysis_pipeline/introduction.md). +[Learn how to build gaze analysis pipelines for various use cases by reading the dedicated user guide section](./user_guide/gaze_analysis_pipeline/introduction.md). -## Augmented reality based on ArUco markers pipeline +## Augmented reality based on ArUco marker pipeline Things goes harder when gaze data comes from head-mounted eye tracker devices. That's why **ArGaze** provides **Augmented Reality (AR)** support to map **Areas Of Interest (AOI)** on [OpenCV ArUco markers](https://www.sciencedirect.com/science/article/abs/pii/S0031320314000235). ![ArUco pipeline axis](img/aruco_pipeline_axis.png) -This ArUco markers pipeline can be combined with any wearable eye tracking device python library like Tobii or Pupill glasses. +This ArUco marker pipeline can be combined with any wearable eye tracking device Python library, like Tobii or Pupil glasses. -[Learn how to build ArUco markers pipelines for various use cases by reading user guide dedicated section](./user_guide/aruco_markers_pipeline/introduction.md). +[Learn how to build ArUco marker pipelines for various use cases by reading the dedicated user guide section](./user_guide/aruco_marker_pipeline/introduction.md). !!! note - *ArUco markers pipeline is greatly inspired by [Andrew T. Duchowski, Vsevolod Peysakhovich and Krzysztof Krejtz article](https://git.recherche.enac.fr/attachments/download/1990/Using_Pose_Estimation_to_Map_Gaze_to_Detected_Fidu.pdf) about using pose estimation to map gaze to detected fiducial markers.* + *ArUco marker pipeline is greatly inspired by [Andrew T. Duchowski, Vsevolod Peysakhovich and Krzysztof Krejtz article](https://git.recherche.enac.fr/attachments/download/1990/Using_Pose_Estimation_to_Map_Gaze_to_Detected_Fidu.pdf) about using pose estimation to map gaze to detected fiducial markers.* diff --git a/docs/user_guide/aruco_markers_pipeline/advanced_topics/aruco_detector_configuration.md b/docs/user_guide/aruco_marker_pipeline/advanced_topics/aruco_detector_configuration.md index 410e2d7..410e2d7 100644 --- a/docs/user_guide/aruco_markers_pipeline/advanced_topics/aruco_detector_configuration.md +++ b/docs/user_guide/aruco_marker_pipeline/advanced_topics/aruco_detector_configuration.md diff --git a/docs/user_guide/aruco_markers_pipeline/advanced_topics/optic_parameters_calibration.md b/docs/user_guide/aruco_marker_pipeline/advanced_topics/optic_parameters_calibration.md index c5cecac..54d0c94 100644 --- a/docs/user_guide/aruco_markers_pipeline/advanced_topics/optic_parameters_calibration.md +++ b/docs/user_guide/aruco_marker_pipeline/advanced_topics/optic_parameters_calibration.md @@ -9,7 +9,7 @@ A camera device have to be calibrated to compensate its optical distorsion. The first step to calibrate a camera is to create an [ArUcoBoard](../../../argaze.md/#argaze.ArUcoMarkers.ArUcoBoard) like in the code below: -``` python +```python from argaze.ArUcoMarkers import ArUcoMarkersDictionary, ArUcoBoard # Create ArUco dictionary @@ -41,7 +41,7 @@ The sample of code below illustrates how to: * once enough captures are made, process them to find optic parameters and, * finally, save optic parameters into a JSON file. -``` python +```python from argaze.ArUcoMarkers import ArUcoMarkersDictionary, ArUcoOpticCalibrator, ArUcoBoard, ArUcoDetector # Create ArUco dictionary diff --git a/docs/user_guide/aruco_markers_pipeline/advanced_topics/scripting.md b/docs/user_guide/aruco_marker_pipeline/advanced_topics/scripting.md index 04d6a2f..2eb64f8 100644 --- a/docs/user_guide/aruco_markers_pipeline/advanced_topics/scripting.md +++ b/docs/user_guide/aruco_marker_pipeline/advanced_topics/scripting.md @@ -101,7 +101,7 @@ A dictionary containing all detected markers provided by [ArUcoDetector](../../. ## Setup ArUcoCamera image parameters -Specific [ArUcoCamera.image](../../../argaze.md/#argaze.ArFeatures.ArFrame.image) method parameters can be configured thanks to a python dictionary. +Specific [ArUcoCamera.image](../../../argaze.md/#argaze.ArFeatures.ArFrame.image) method parameters can be configured thanks to a Python dictionary. ```python # Assuming ArUcoCamera is loaded diff --git a/docs/user_guide/aruco_markers_pipeline/aoi_3d_description.md b/docs/user_guide/aruco_marker_pipeline/aoi_3d_description.md index 23ea550..23ea550 100644 --- a/docs/user_guide/aruco_markers_pipeline/aoi_3d_description.md +++ b/docs/user_guide/aruco_marker_pipeline/aoi_3d_description.md diff --git a/docs/user_guide/aruco_markers_pipeline/aoi_3d_frame.md b/docs/user_guide/aruco_marker_pipeline/aoi_3d_frame.md index cf4a07e..cf4a07e 100644 --- a/docs/user_guide/aruco_markers_pipeline/aoi_3d_frame.md +++ b/docs/user_guide/aruco_marker_pipeline/aoi_3d_frame.md diff --git a/docs/user_guide/aruco_markers_pipeline/aoi_3d_projection.md b/docs/user_guide/aruco_marker_pipeline/aoi_3d_projection.md index 64f5fc8..64f5fc8 100644 --- a/docs/user_guide/aruco_markers_pipeline/aoi_3d_projection.md +++ b/docs/user_guide/aruco_marker_pipeline/aoi_3d_projection.md diff --git a/docs/user_guide/aruco_markers_pipeline/aruco_markers_description.md b/docs/user_guide/aruco_marker_pipeline/aruco_markers_description.md index 055d1de..66a0581 100644 --- a/docs/user_guide/aruco_markers_pipeline/aruco_markers_description.md +++ b/docs/user_guide/aruco_marker_pipeline/aruco_markers_description.md @@ -19,7 +19,7 @@ Here is the documention [about ArUco markers dictionaries](https://docs.opencv.o The creation of [ArUcoMarkers](../../argaze.md/#argaze.ArUcoMarkers.ArUcoMarker) pictures from a dictionary is illustrated in the code below: -``` python +```python from argaze.ArUcoMarkers import ArUcoMarkersDictionary # Create a dictionary of specific April tags diff --git a/docs/user_guide/aruco_markers_pipeline/configuration_and_execution.md b/docs/user_guide/aruco_marker_pipeline/configuration_and_execution.md index dd36ed3..dd36ed3 100644 --- a/docs/user_guide/aruco_markers_pipeline/configuration_and_execution.md +++ b/docs/user_guide/aruco_marker_pipeline/configuration_and_execution.md diff --git a/docs/user_guide/aruco_markers_pipeline/introduction.md b/docs/user_guide/aruco_marker_pipeline/introduction.md index 94370f4..7e662f7 100644 --- a/docs/user_guide/aruco_markers_pipeline/introduction.md +++ b/docs/user_guide/aruco_marker_pipeline/introduction.md @@ -11,12 +11,12 @@ The ArGaze [ArUcoMarkers submodule](../../argaze.md/#argaze.ArUcoMarkers) eases First, let's look at the schema below: it gives an overview of the main notions involved in the following chapters. -![ArUco markers pipeline](../../img/aruco_markers_pipeline.png) +![ArUco marker pipeline](../../img/aruco_marker_pipeline.png) -To build your own ArUco markers pipeline, you need to know: +To build your own ArUco marker pipeline, you need to know: * [How to setup ArUco markers into a scene](aruco_markers_description.md), -* [How to load and execute ArUco markers pipeline](configuration_and_execution.md), +* [How to load and execute ArUco marker pipeline](configuration_and_execution.md), * [How to estimate scene pose](pose_estimation.md), * [How to describe scene's AOI](aoi_3d_description.md), * [How to project 3D AOI into camera frame](aoi_3d_projection.md), @@ -24,6 +24,6 @@ To build your own ArUco markers pipeline, you need to know: More advanced features are also explained like: -* [How to script ArUco markers pipeline](advanced_topics/scripting.md), +* [How to script ArUco marker pipeline](advanced_topics/scripting.md), * [How to calibrate optic parameters](advanced_topics/optic_parameters_calibration.md), * [How to improve ArUco markers detection](advanced_topics/aruco_detector_configuration.md). diff --git a/docs/user_guide/aruco_markers_pipeline/pose_estimation.md b/docs/user_guide/aruco_marker_pipeline/pose_estimation.md index 7f6573c..7f6573c 100644 --- a/docs/user_guide/aruco_markers_pipeline/pose_estimation.md +++ b/docs/user_guide/aruco_marker_pipeline/pose_estimation.md diff --git a/docs/user_guide/gaze_analysis_pipeline/advanced_topics/gaze_position_calibration.md b/docs/user_guide/gaze_analysis_pipeline/advanced_topics/gaze_position_calibration.md index 4d80c05..4d2780a 100644 --- a/docs/user_guide/gaze_analysis_pipeline/advanced_topics/gaze_position_calibration.md +++ b/docs/user_guide/gaze_analysis_pipeline/advanced_topics/gaze_position_calibration.md @@ -3,7 +3,7 @@ Calibrate gaze position Gaze position calibration is an optional [ArFrame](../../../argaze.md/#argaze.ArFeatures.ArFrame) pipeline step. It processes each new gaze position before any further pipeline steps. -The calibration algorithm can be selected by instantiating a particular [GazePositionCalibrator from GazeAnalysis submodule](../pipeline_modules/gaze_position_calibrators.md) or [from another python package](module_loading.md). +The calibration algorithm can be selected by instantiating a particular [GazePositionCalibrator from GazeAnalysis submodule](../pipeline_modules/gaze_position_calibrators.md) or [from another Python package](module_loading.md). ## Enable ArFrame calibration diff --git a/docs/user_guide/gaze_analysis_pipeline/advanced_topics/module_loading.md b/docs/user_guide/gaze_analysis_pipeline/advanced_topics/module_loading.md index 0e439a9..8250382 100644 --- a/docs/user_guide/gaze_analysis_pipeline/advanced_topics/module_loading.md +++ b/docs/user_guide/gaze_analysis_pipeline/advanced_topics/module_loading.md @@ -1,7 +1,7 @@ Load modules from another package ================================= -It is possible to load [GazeMovementIdentifier](../../../argaze.md/#argaze.GazeFeatures.GazeMovementIdentifier), [ScanPathAnalyzer](../../../argaze.md/#argaze.GazeFeatures.ScanPathAnalyzer), [AOIMatcher](../../../argaze.md/#argaze.GazeFeatures.AOIMatcher) or [AOIScanPathAnalyzer](../../../argaze.md/#argaze.GazeFeatures.AOIScanPathAnalyzer) modules from another [python package](https://docs.python.org/3/tutorial/modules.html#packages). +It is possible to load [GazeMovementIdentifier](../../../argaze.md/#argaze.GazeFeatures.GazeMovementIdentifier), [ScanPathAnalyzer](../../../argaze.md/#argaze.GazeFeatures.ScanPathAnalyzer), [AOIMatcher](../../../argaze.md/#argaze.GazeFeatures.AOIMatcher) or [AOIScanPathAnalyzer](../../../argaze.md/#argaze.GazeFeatures.AOIScanPathAnalyzer) modules [from another Python package](https://docs.python.org/3/tutorial/modules.html#packages). To do so, simply prepend the package where to find the module into the JSON configuration file: @@ -34,7 +34,7 @@ To do so, simply prepend the package where to find the module into the JSON conf } ``` -Then, load your package from the python script where the [ArFrame](../../../argaze.md/#argaze.ArFeatures.ArFrame) is created. +Then, load your package from the Python script where the [ArFrame](../../../argaze.md/#argaze.ArFeatures.ArFrame) is created. ```python import argaze diff --git a/docs/user_guide/gaze_analysis_pipeline/advanced_topics/scripting.md b/docs/user_guide/gaze_analysis_pipeline/advanced_topics/scripting.md index 927e6d7..9c4fb60 100644 --- a/docs/user_guide/gaze_analysis_pipeline/advanced_topics/scripting.md +++ b/docs/user_guide/gaze_analysis_pipeline/advanced_topics/scripting.md @@ -6,7 +6,7 @@ This could be particularly useful for realtime gaze interaction applications. ## Load ArFrame configuration from dictionary -First of all, [ArFrame](../../../argaze.md/#argaze.ArFeatures.ArFrame) configuration can be loaded from a python dictionary. +First of all, [ArFrame](../../../argaze.md/#argaze.ArFeatures.ArFrame) configuration can be loaded from a Python dictionary. ```python from argaze import ArFeatures @@ -154,7 +154,7 @@ This an iterator to access to all aoi scan path analysis. ## Setup ArFrame image parameters -[ArFrame.image](../../../argaze.md/#argaze.ArFeatures.ArFrame.image) method parameters can be configured thanks to a python dictionary. +[ArFrame.image](../../../argaze.md/#argaze.ArFeatures.ArFrame.image) method parameters can be configured thanks to a Python dictionary. ```python # Assuming ArFrame is loaded diff --git a/docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md b/docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md index b7a4342..feab4e4 100644 --- a/docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md +++ b/docs/user_guide/gaze_analysis_pipeline/aoi_analysis.md @@ -83,7 +83,7 @@ The first [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer) pipeline step ai ![AOI matcher](../../img/aoi_matcher.png) -The matching algorithm can be selected by instantiating a particular [AOIMatcher from GazeAnalysis submodule](pipeline_modules/aoi_matchers.md) or [from another python package](advanced_topics/module_loading.md). +The matching algorithm can be selected by instantiating a particular [AOIMatcher from GazeAnalysis submodule](pipeline_modules/aoi_matchers.md) or [from another Python package](advanced_topics/module_loading.md). In the example file, the choosen matching algorithm is the [Deviation Circle Coverage](../../argaze.md/#argaze.GazeAnalysis.DeviationCircleCoverage) which has one specific *coverage_threshold* attribute. @@ -107,6 +107,6 @@ The [AOIScanPath.duration_max](../../argaze.md/#argaze.GazeFeatures.AOIScanPath. Finally, the last [ArLayer](../../argaze.md/#argaze.ArFeatures.ArLayer) pipeline step consists in passing the previously built [AOIScanPath](../../argaze.md/#argaze.GazeFeatures.AOIScanPath) to each loaded [AOIScanPathAnalyzer](../../argaze.md/#argaze.GazeFeatures.AOIScanPathAnalyzer). -Each analysis algorithm can be selected by instantiating a particular [AOIScanPathAnalyzer from GazeAnalysis submodule](pipeline_modules/aoi_scan_path_analyzers.md) or [from another python package](advanced_topics/module_loading.md). +Each analysis algorithm can be selected by instantiating a particular [AOIScanPathAnalyzer from GazeAnalysis submodule](pipeline_modules/aoi_scan_path_analyzers.md) or [from another Python package](advanced_topics/module_loading.md). In the example file, the choosen analysis algorithms are the [Basic](../../argaze.md/#argaze.GazeAnalysis.Basic) module, the [TransitionMatrix](../../argaze.md/#argaze.GazeAnalysis.TransitionMatrix) module and the [NGram](../../argaze.md/#argaze.GazeAnalysis.NGram) module which has two specific *n_min* and *n_max* attributes. diff --git a/docs/user_guide/gaze_analysis_pipeline/configuration_and_execution.md b/docs/user_guide/gaze_analysis_pipeline/configuration_and_execution.md index 47b820b..ed8a5d1 100644 --- a/docs/user_guide/gaze_analysis_pipeline/configuration_and_execution.md +++ b/docs/user_guide/gaze_analysis_pipeline/configuration_and_execution.md @@ -64,7 +64,7 @@ The first [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) pipeline step is ![Gaze movement identifier](../../img/gaze_movement_identifier.png) -The identification algorithm can be selected by instantiating a particular [GazeMovementIdentifier from GazeAnalysis submodule](pipeline_modules/gaze_movement_identifiers.md) or [from another python package](advanced_topics/module_loading.md). +The identification algorithm can be selected by instantiating a particular [GazeMovementIdentifier from GazeAnalysis submodule](pipeline_modules/gaze_movement_identifiers.md) or [from another Python package](advanced_topics/module_loading.md). In the example file, the choosen identification algorithm is the [Dispersion Threshold Identification (I-DT)](../../argaze.md/#argaze.GazeAnalysis.DispersionThresholdIdentification) which has two specific *deviation_max_threshold* and *duration_min_threshold* attributes. @@ -91,7 +91,7 @@ The [ScanPath.duration_max](../../argaze.md/#argaze.GazeFeatures.ScanPath.durati Finally, the last [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) pipeline step consists in passing the previously built [ScanPath](../../argaze.md/#argaze.GazeFeatures.ScanPath) to each loaded [ScanPathAnalyzer](../../argaze.md/#argaze.GazeFeatures.ScanPathAnalyzer). -Each analysis algorithm can be selected by instantiating a particular [ScanPathAnalyzer from GazeAnalysis submodule](pipeline_modules/scan_path_analyzers.md) or [from another python package](advanced_topics/module_loading.md). +Each analysis algorithm can be selected by instantiating a particular [ScanPathAnalyzer from GazeAnalysis submodule](pipeline_modules/scan_path_analyzers.md) or [from another Python package](advanced_topics/module_loading.md). In the example file, the choosen analysis algorithms are the [Basic](../../argaze.md/#argaze.GazeAnalysis.Basic) module and the [ExploreExploitRatio](../../argaze.md/#argaze.GazeAnalysis.ExploreExploitRatio) module which has one specific *short_fixation_duration_threshold* attribute. diff --git a/docs/user_guide/gaze_analysis_pipeline/timestamped_gaze_positions_edition.md b/docs/user_guide/gaze_analysis_pipeline/timestamped_gaze_positions_edition.md index 9a04bb6..388b0ac 100644 --- a/docs/user_guide/gaze_analysis_pipeline/timestamped_gaze_positions_edition.md +++ b/docs/user_guide/gaze_analysis_pipeline/timestamped_gaze_positions_edition.md @@ -29,9 +29,9 @@ for timestamped_gaze_position in ts_gaze_positions: ## Edit timestamped gaze positions from live stream When gaze positions comes from a real-time input, gaze position can be edited thanks to [GazePosition](../../argaze.md/#argaze.GazeFeatures.GazePosition) class. -Besides, timestamps can be edited from the incoming data stream or, if not available, they can be edited thanks to the python [time package](https://docs.python.org/3/library/time.html). +Besides, timestamps can be edited from the incoming data stream or, if not available, they can be edited thanks to the Python [time package](https://docs.python.org/3/library/time.html). -``` python +```python from argaze import GazeFeatures # Assuming to be inside the function where timestamp_µs, gaze_x and gaze_y values are catched @@ -44,7 +44,7 @@ from argaze import GazeFeatures ... ``` -``` python +```python from argaze import GazeFeatures import time @@ -24,18 +24,18 @@ nav: - user_guide/gaze_analysis_pipeline/advanced_topics/scripting.md - user_guide/gaze_analysis_pipeline/advanced_topics/module_loading.md - user_guide/gaze_analysis_pipeline/advanced_topics/gaze_position_calibration.md - - ArUco markers pipeline: - - user_guide/aruco_markers_pipeline/introduction.md - - user_guide/aruco_markers_pipeline/aruco_markers_description.md - - user_guide/aruco_markers_pipeline/configuration_and_execution.md - - user_guide/aruco_markers_pipeline/pose_estimation.md - - user_guide/aruco_markers_pipeline/aoi_3d_description.md - - user_guide/aruco_markers_pipeline/aoi_3d_projection.md - - user_guide/aruco_markers_pipeline/aoi_3d_frame.md + - ArUco marker pipeline: + - user_guide/aruco_marker_pipeline/introduction.md + - user_guide/aruco_marker_pipeline/aruco_markers_description.md + - user_guide/aruco_marker_pipeline/configuration_and_execution.md + - user_guide/aruco_marker_pipeline/pose_estimation.md + - user_guide/aruco_marker_pipeline/aoi_3d_description.md + - user_guide/aruco_marker_pipeline/aoi_3d_projection.md + - user_guide/aruco_marker_pipeline/aoi_3d_frame.md - Advanced Topics: - - user_guide/aruco_markers_pipeline/advanced_topics/scripting.md - - user_guide/aruco_markers_pipeline/advanced_topics/optic_parameters_calibration.md - - user_guide/aruco_markers_pipeline/advanced_topics/aruco_detector_configuration.md + - user_guide/aruco_marker_pipeline/advanced_topics/scripting.md + - user_guide/aruco_marker_pipeline/advanced_topics/optic_parameters_calibration.md + - user_guide/aruco_marker_pipeline/advanced_topics/aruco_detector_configuration.md - utils: - user_guide/utils/ready-made_scripts.md - user_guide/utils/demonstrations_scripts.md |