visual3d:documentation:emg:processing:onset_based_on_tko
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
visual3d:documentation:emg:processing:onset_based_on_tko [2024/06/19 12:47] – sgranger | visual3d:documentation:emg:processing:onset_based_on_tko [2024/07/17 15:45] (current) – created sgranger | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{===== general processing steps ===== | + | ====== Onset Based on TKO ====== |
- | processing emg signals typically follows some variation of the following steps: | + | ==== General Processing Steps ==== |
- | 1. high pass filter | + | Processing EMG signals typically follows some variation of the following steps: |
- | 2. low pass filter | + | |
- | 3. rectify data | + | |
- | 4. filter noise | + | |
- | 5. normalize and scale data | + | |
- | it should be noted that within both this page and external literature, | + | |
- | visual3d has a number of helpful pipeline functions (linked below) | + | 1. High Pass Filter |
+ | 2. Low Pass Filter | ||
+ | 3. Rectify Data | ||
+ | 4. Filter Noise | ||
+ | 5. Normalize and Scale Data | ||
+ | It should be noted that within both this page and external literature, | ||
- | ===== helpful pipeline functions | + | Visual3D has a number of helpful pipeline functions |
- | the following links will redirect you to pages detailing the use of visual3d pipeline commands that are commonly used in the general processing of emg data: | + | ==== Helpful Pipeline Functions ==== |
- | * [[visual3d: | + | The following links will redirect you to pages detailing the use of Visual3D pipeline commands that are commonly used in the general |
- | * [[visual3d: | + | |
- | * [[visual3d: | + | |
- | * [[visual3d: | + | |
- | * [[visual3d: | + | |
- | * [[visual3d: | + | |
- | ===== meta commands ===== | + | * [[Visual3D: |
+ | * [[Visual3D: | ||
+ | * [[Visual3D: | ||
+ | * [[Visual3D: | ||
+ | * [[Visual3D: | ||
+ | * [[Visual3D: | ||
- | this page deals with several examples of using visual3d [[visual3d: | + | ==== Meta Commands ==== |
- | ===== removing noise from emg signals ===== | + | This page deals with several examples of using Visual3D [[Visual3D: |
- | **download the [[https:// | + | ==== Removing Noise from EMG Signals ==== |
- | the text below describes two common methods of removing noise from emg signals. before using these methods, ensure you have performed a high and low pass filter on the raw data. you do not need to rectify your data to use the root mean square method or the teagan kaiser energy operator method as they will both rectify your signals for you. | + | **Download |
- | **1. root mean square | + | The text below describes two common methods of removing noise from EMG signals. Before using these methods, ensure you have performed a high and low pass filter on the raw data. You do not need to rectify your data to use the Root Mean Square method or the Teagan Kaiser Energy Operator method as they will both rectify your signals for you. |
+ | |||
+ | **1. Root Mean Square | ||
< | < | ||
- | ! example | + | ! Example |
- | ! apply a high pass filter with 50 hz cutoff | + | ! Apply a high pass filter with 50 Hz cutoff |
- | highpass_filter | + | Highpass_Filter |
- | /signal_types=analog | + | /Signal_Types=ANALOG |
- | /signal_names=emg1+emg2+emg3 | + | /Signal_Names=EMG1+EMG2+EMG3 |
- | /signal_folder=original | + | /Signal_Folder=ORIGINAL |
- | ! /result_suffix= | + | ! /Result_Suffix= |
- | ! /result_folder=processed | + | ! /Result_Folder=PROCESSED |
- | ! /filter_class=butterworth | + | ! /Filter_Class=BUTTERWORTH |
- | /frequency_cutoff= 50 | + | /Frequency_Cutoff= 50 |
- | /num_reflected= 0 | + | /Num_Reflected= 0 |
- | /total_buffer_size=100 | + | /Total_Buffer_Size=100 |
- | /num_bidirectional_passes=1 | + | /Num_Bidirectional_Passes=1 |
; | ; | ||
- | ! apply a low pass filter with 500 hz cutoff | + | ! Apply a low pass filter with 500 Hz cutoff |
- | lowpass_filter | + | Lowpass_Filter |
- | /signal_types=analog | + | /Signal_Types=ANALOG |
- | /signal_names=emg1+emg2+emg3 | + | /Signal_Names=EMG1+EMG2+EMG3 |
- | /signal_folder=processed | + | /Signal_Folder=PROCESSED |
- | ! /result_suffix= | + | ! /Result_Suffix= |
- | ! /result_folder=processed | + | ! /Result_Folder=PROCESSED |
- | ! /filter_class=butterworth | + | ! /Filter_Class=BUTTERWORTH |
- | /frequency_cutoff= 500 | + | /Frequency_Cutoff= 500 |
- | /num_reflected= 0 | + | /Num_Reflected= 0 |
- | /total_buffer_size=100 | + | /Total_Buffer_Size=100 |
- | /num_bidirectional_passes=1 | + | /Num_Bidirectional_Passes=1 |
; | ; | ||
- | ! moving rms with 100 millisecond window | + | ! Moving RMS with 100 millisecond window |
- | moving_rms | + | Moving_RMS |
- | /signal_types=analog | + | /SIGNAL_TYPES=ANALOG |
- | /signal_names=emg1+emg2+emg3 | + | /SIGNAL_NAMES=EMG1+EMG2+EMG3 |
- | /signal_folder=processed | + | /SIGNAL_FOLDER=PROCESSED |
- | ! /result_suffix= | + | ! /RESULT_SUFFIX= |
- | /result_folder=rms | + | /RESULT_FOLDER=RMS |
- | /num_window_frames= ( 0.1*parameter::analog::rate ) + 1 | + | /NUM_WINDOW_FRAMES= ( 0.1*PARAMETER::ANALOG::RATE ) + 1 |
; | ; | ||
</ | </ | ||
- | **2. teager kaiser energy operator | + | **2. Teager Kaiser Energy Operator |
< | < | ||
- | ! example | + | ! Example |
- | highpass_filter | + | Highpass_Filter |
- | /signal_types=analog | + | /SIGNAL_TYPES=ANALOG |
- | /signal_folder=original | + | /SIGNAL_FOLDER=ORIGINAL |
- | /signal_names=emg_c | + | /SIGNAL_NAMES=EMG_C |
- | /result_folder=processed | + | /RESULT_FOLDER=PROCESSED |
- | ! /result_suffix= | + | ! /RESULT_SUFFIX= |
- | ! /filter_class=butterworth | + | ! /FILTER_CLASS=BUTTERWORTH |
- | /frequency_cutoff=20 | + | /FREQUENCY_CUTOFF=20 |
- | /num_reflected=0 | + | /NUM_REFLECTED=0 |
- | ! /num_extrapolated=0 | + | ! /NUM_EXTRAPOLATED=0 |
- | /total_buffer_size=100 | + | /TOTAL_BUFFER_SIZE=100 |
- | ! /num_bidirectional_passes=1 | + | ! /NUM_BIDIRECTIONAL_PASSES=1 |
; | ; | ||
- | lowpass_filter | + | Lowpass_Filter |
- | /signal_types=analog | + | /SIGNAL_TYPES=ANALOG |
- | /signal_folder=original | + | /SIGNAL_FOLDER=ORIGINAL |
- | /signal_names=emg_c | + | /SIGNAL_NAMES=EMG_C |
- | /result_folder=processed | + | /RESULT_FOLDER=PROCESSED |
- | ! /result_suffix= | + | ! /RESULT_SUFFIX= |
- | ! /filter_class=butterworth | + | ! /FILTER_CLASS=BUTTERWORTH |
- | /frequency_cutoff=6.0 | + | /FREQUENCY_CUTOFF=6.0 |
- | /num_reflected=6 | + | /NUM_REFLECTED=6 |
- | ! /num_extrapolated=0 | + | ! /NUM_EXTRAPOLATED=0 |
- | /total_buffer_size=6 | + | /TOTAL_BUFFER_SIZE=6 |
- | ! /num_bidirectional_passes=1 | + | ! /NUM_BIDIRECTIONAL_PASSES=1 |
; | ; | ||
- | teager_kaiser_energy | + | Teager_Kaiser_Energy |
- | /signal_types=analog | + | /SIGNAL_TYPES=ANALOG |
- | /signal_folder=original | + | /SIGNAL_FOLDER=ORIGINAL |
- | /signal_names=emg_c | + | /SIGNAL_NAMES=EMG_C |
- | ! /result_types= | + | ! /RESULT_TYPES= |
- | /result_folders=processed | + | /RESULT_FOLDERS=PROCESSED |
- | /result_name=emg_c_tkeo | + | /RESULT_NAME=EMG_C_TKEO |
- | ! /apply_as_suffix_to_signal_name= | + | ! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME= |
; | ; | ||
</ | </ | ||
- | **3. integrating emg signals:** integrating emg signals can be useful for quantifying muscle activity, comparing muscle activity between conditions, and assessing fatigue. | + | **3. Integrating EMG Signals:** Integrating EMG signals can be useful for quantifying muscle activity, comparing muscle activity between conditions, and assessing fatigue. |
- | **4. removing background noise example:** the [[visual3d:documentation:emg:processing_tools|removing background noise]] page shows an example of using the visual3d | + | **4. Removing Background Noise Example:** The [[Visual3D:Documentation:EMG:Processing_Tools|Removing Background Noise]] page shows an example of using the Visual3D |
- | ===== normalization | + | ==== Normalization |
+ | |||
+ | Normalizing data is a useful transformation for comparing signals across groups of data. This section discusses several methods of using Visual3D' | ||
- | normalizing | + | **1. Normalize and Scale EMG Signal to Global Maximum:** One method of normalizing |
+ | **2. Compute Normalization Scale Factors:** Here are two examples of the steps that would be used to compute a normalization factor using MVC data. | ||
+ | **Example 1: Single MVC Trial:** The process for computing a normalization factor from a single MVC value uses the following general steps: | ||
+ | - Process EMG | ||
+ | - High pass filter (remove DC offset) | ||
+ | - Calculate RMS of predetermined time intervals (example: 0.02 seconds) | ||
+ | - Normalize | ||
+ | - Calculate the average of the processed signal over 30 second intervals | ||
+ | - Get the maximum of the 30 second interval | ||
+ | - Normalize by dividing the average by the maximum | ||
- | **1. normalize and scale emg signal to global maximum:** one method of normalizing emg signals is to use the maximum voluntary contraction (mvc) value. mvc values are an emg signal measuring during a maximal effort task , which is then used as a reference value to normalize emg signals during all subsequent experimental tasks. what this translates to in visual3d is first calculating the maximum value of the reference signal and store it in the global workspace, then normalize your signals by dividing them by this global metric. sample files and pipelines are available [[visual3d: | + | **Example |
- | **2. compute normalization scale factors:** here are two examples of the steps that would be used to compute a normalization factor using mvc data. | + | - Process EMG |
- | **example 1: single mvc trial:** the process for computing a normalization factor from a single mvc value uses the following general steps: | + | - High pass filter (remove |
- | - process emg | + | - Calculate RMS of predetermined time intervals (example: 0.02 seconds) |
- | - high pass filter (remove | + | - Normalize |
- | - calculate rms of predetermined time intervals (example: 0.02 seconds) | + | - Calculate |
- | - normalize | + | - Get the maximum of the processed signal |
- | - calculate | + | - Calculate the maximum of the average signal |
- | - get the maximum of the 30 second interval | + | - Normalize |
- | - normalize | + | |
- | **example 2: multiple mvc trials** | + | Sample files and pipelines are available [[Visual3D: |
- | - process emg | + | |**3. Normalize to Maximum within Gait Cycle:** The image to the (right) shows four " |
- | - high pass filter | + | |
- | - calculate rms of predetermined time intervals | + | |
- | - normalize | + | |
- | - calculate the average of the processed | + | |
- | - get the maximum | + | |
- | - calculate | + | |
- | - normalize by dividing | + | |
- | sample files and pipelines are available [[visual3d: | ||
- | |**3. normalize to maximum within gait cycle:** the image to the (right) shows four " | ||
- | }} |
visual3d/documentation/emg/processing/onset_based_on_tko.1718801267.txt.gz · Last modified: 2024/06/19 12:47 by sgranger