Skip to main content

Table 1 Description of algorithms for each metric: gait sequence detection (GSD), initial contact event detection (ICD), cadence estimation (CAD) and stride length estimation (SL)

From: Assessing real-world gait with digital technology? Validation, insights and recommendations from the Mobilise-D consortium

Metric

Name

Description

Input

Output

Language

References

Gait sequence detection

GSDA

Based on a frequency-based approach, this algorithm is implemented on the vertical and anterior–posterior acceleration signals. First, these are band pass filtered to keep frequencies between 0.5 and 3 Hz. Next, a convolution of a 2 Hz sinewave (representing a template for a gait cycle) is performed, from which local maxima will be detected to define the regions of gait

acc_v: vertical acceleration

acc_ap: anterior–posterior acceleration

WinS = 3 s; window size for convolution

OL = 1.5 s; overlap of windows

Activity_thresh = 0.01; Motion threshold

Fs: sampling frequency

Start: beginning of N gait sequences [s] relative to the start of a recording or a test/trial. Format: 1 × N vector

End: termination of N gait sequences [s] relative to the start of a recording or a test/trial. Format: 1 × N vector

Matlab®

Iluz, Gazit [40]

GSDB

This algorithm, based on a time domain-approach, detects the gait periods based on identified steps. First, the norm of triaxial acceleration signal is low-pass filtered (FIR, fc=3.2Hz), then a peak detection procedure using a threshold of 0.1 [g] is applied to identify steps. Consecutive steps, detected using an adaptive step duration threshold are associated to gait sequences.

acc_norm: norm of the 3D-accelerometer signal

Fs: sampling frequency

th: peak detection threshold: 0.1 (g)

Start: beginning of N gait sequences [s] relative to the start of a recording or a test/trial. Format: 1 x N vector

End: termination of N gait sequences [s] relative to the start of a recording or a test/trial. Format: 1 x N vector

Matlab®

Paraschiv-Ionescu, Newman [41]

 

GSDc

This algorithm utilizes the same approach as GSDB the only difference being a different threshold for peak detection of 0.15 [g]

acc_norm: norm of the 3D-accelerometer signal

Fs: sampling frequency

th: peak detection threshold: 0.15 (g)

Start: beginning of N gait sequences [s] relative to the start of a recording or a test/trial. Format: 1 × N vector

End: termination of N gait sequences [s] relative to the start of a recording or a test/trial. Format: 1 × N vector

Matlab®

Paraschiv-Ionescu, Newman [41]

Initial Contact Detection

ICDA

Algorithm implemented on a pre-processed vertical acceleration signal. This is first detrended and then low-pass filtered (FIR, fc = 3.2 Hz). The resulting signal is numerically integrated (cumtrapz) and differentiated using a Gaussian continuous wavelet transformation (CWT, scale 9, gauss2). The initial contact events are identified as the positive peaks between zero-crossings

acc_v: the acceleration in the vertical axis

Fs: sampling frequency

GS: array of gait sequences

ICs: detected N initial contacts [s] relative to the beginning of the recording or the test/trial. Format: 1 × N vector

GaitSequenceRefined_Start: refinement of the beginning of the gait sequences provided from the Gait sequence detection step; it starts one second before the first detected IC

GaitSequenceRefined_End: refinement of the termination of the gait sequences provided from the Gait sequence detection step; it finishes one second after the last detected IC

Matlab®

McCamley, Donati [42]

Paraschiv-Ionescu, Newman [41]

Paraschiv-Ionescu, Soltani [16]

 

ICDB

Algorithm implemented on a pre-processed anterior–posterior acceleration signal. This is first detrended and then low-pass filtered at 10 Hz with a second-order Butterworth filter. The resulting signal is numerically integrated (cumtrapz) and differentiated using an estimated wavelet scale [43] and a Gaussian first-order (gaus1) wavelet. The initial contact events are identified with a peak detection function (findpeaks)

acc_ap: the acceleration in the anterior–posterior axis

Fs: sampling frequency

GS: array of gait sequences

ICs: detected N initial contacts [s] relative to the beginning of the recording or the test/trial. Format: 1 × N vector

GaitSequenceRefined_Start: refinement of the beginning of the gait sequences provided from the Gait sequence detection step; it starts one second before the first detected IC

GaitSequenceRefined_End: refinement of the termination of the gait sequences provided from the Gait sequence detection step; it finishes one second after the last detected IC

Matlab®

McCamley, Donati [42]

Abry [43]

Pham, Elshehabi [44]

 

ICDC

This algorithm is an optimized version of algorithm ICDA. In this case, the pre-processing of the acceleration signal is selected according to the degree of gait impairment, assessed with the symmetry index (ref)

∙ If estimated symmetry index > 0.5 the pre-processing of acceleration includes, in the following order: detrending and low-pass filtering (FIR, fc = 3.2 Hz), numerical integration (cumtrapz) and differentiation using Gaussian continuous wavelet transformation (CWT, scale 9, gauss2);

∙ If estimated symmetry index is in the range [0.25–0,5] the pre-processing includes an additional smoothing using moving average after CWT (smoothdata)

∙ If estimated symmetry index < 0.25, i.e., very impaired gait, the pre-processing includes two successive moving average after CWT, to efficiently smooth the signal

acc_v: the acceleration in the vertical axis

Fs: sampling frequency

GS: array of gait sequences

ICs: detected N initial contacts [s] relative to the beginning of the recording or the test/trial. Format: 1 × N vector

GaitSequenceRefined_Start: refinement of the beginning of the gait sequences provided from the Gait sequence detection step; it starts one second before the first detected IC

GaitSequenceRefined_End: refinement of the termination of the gait sequences provided from the Gait sequence detection step; it finishes one second after the last detected IC

Matlab®

McCamley, Donati [42]

Paraschiv-Ionescu, Newman [41]

Paraschiv-Ionescu, Soltani [16]

 

ICDD

This algorithm is implemented on the norm of the 3D acceleration signals

A sliding window summing technique is utilized to reduce the noise of the norm signal. Next, a differential technique on the acceleration is used to eliminate the effect of gravity, as a high pass filter. Finally, zero-crossings on the positive slope are detected, which determine the initial contact time events

acc_norm: norm of the 3d-accelerometer signal

Fs: sampling frequency

GS: array of gait sequences

ICs: detected N initial contacts [s] relative to the beginning of the recording or the test/trial. Format: 1 × N vector

GaitSequenceRefined_Start: refinement of the beginning of the gait sequences provided from the Gait sequence detection step; it starts one second before the first detected IC

GaitSequenceRefined_End: refinement of the termination of the gait sequences provided from the Gait sequence detection step; it finishes one second after the last detected IC

Matlab®

Shin and Park [45]

Cadence

CADA

This algorithm is the same as ICDA. From the initial contact events estimated, the step periodicity is derived and the CAD is calculated

acc_v: the acceleration in the vertical axis

Fs: sampling frequency

GS: array of gait sequences

output_CAD: a vector structure containing:

output_CAD(N).start: start of N-th GS [s]

output_CAD(N).stop: stop of N-th GS [s]

output_CAD(N).cadSec: Estimated CAD-per-sec [steps/min] of N-th GS

output_CAD(N).cadMean: mean of CAD [steps/min] estimated for N-th GS

output_CAD(N).cadSTD: std of CAD [steps/min] estimated for N-th GS

output_CAD(N).steps: number of steps of N-th GS

Matlab®

McCamley, Donati [42]

Paraschiv-Ionescu, Newman [41]

Paraschiv-Ionescu, Soltani [16]

Soltani, Aminian [17]

CADB

This algorithm first implements a pre-processing of the 3D acceleration norm, including low-pass filtering (FIR, fc = 3.2 Hz), detrending, smoothing using Savitsky–Golay filter (order = 7, frame length = 21) and Gaussian smoothing and finally a continuous wavelet transformation (CWT, scale 10, ‘gaus2’) to enhance the relevant steps-related features in acceleration signal. The pre-processed signal is then further processed using morphological filters, according to methods described in Lee, You [46]. Finally, the timing of steps, used to estimate step/stride frequency are detected as maxima between zero-crossings

acc_norm: norm of the 3D-accelerometer signal

Fs: sampling frequency

GS: array of gait sequences

output_CAD: a vector structure containing:

output_CAD(N).start: start of N-th GS [s]

output_CAD(N).stop: stop of N-th GS [s]

output_CAD(N).cadSec: Estimated CAD-per-sec [steps/min] of N-th GS

output_CAD(N).cadMean: mean of CAD [steps/min] estimated for N-th GS

output_CAD(N).cadSTD: std of CAD [steps/min] estimated for N-th GS

output_CAD(N).steps: number of steps of N-th GS

Matlab®

Lee, You [46]

Paraschiv-Ionescu, Soltani [16]

Soltani, Aminian [17]

 

CADC

This algorithm is the same as ICDD. From the initial contact events estimated, the step periodicity is derived and the CAD is calculated

acc_norm: norm of the 3D-accelerometer signal

Fs: sampling frequency

GS: array of gait sequences

output_CAD: a vector structure containing:

output_CAD(N).start: start of N-th GS [s]

output_CAD(N).stop: stop of N-th GS [s]

output_CAD(N).cadSec: Estimated CAD-per-sec [steps/min] of N-th GS

output_CAD(N).cadMean: mean of CAD [steps/min] estimated for N-th GS

output_CAD(N).cadSTD: std of CAD [steps/min] estimated for N-th GS

output_CAD(N).steps: Number of steps of N-th GS

Matlab®

Shin and Park [45]

Soltani, Aminian [17]

Stride length

SLA

Biomechanical model which includes:

– The implementation of the inverted pendulum model

– Double integration of the acceleration in the vertical axis

– Detrending and removal of integration drift: high pass filtering of vertical acceleration (fc = 0.1 Hz) and integrated vertical acceleration (fc = 1 Hz)

– Correction factors based on the calibration factor “k”. Note that the tuning coefficients are optimized by training

acc_v: the acceleration in the vertical axis (orientation corrected)

Fs: sampling frequency

GS: array of gait sequences

ICs: initial contacts [s]

Leg length [cm]

Calibration factors “k” (k = 4.739 for all cohorts)

output_sl: a vector structure containing:

output_sl(N).start: start of N-th GS [s]

output_sl(N).stop: stop of N-th GS [s]

output_sl(N).slSec: Estimated SL-per-second [m] of N-th GS

output_sl(N).slMean: mean of SL [m] estimated for N-th GS

output_sl(N).slSTD: std of SL [m] estimated for N-th GS

output_sl(N).distance: covered distance [m] of N-th GS

output_sl(N).warnMes: shows if there is a warning for N-th GS (1 means yes)

Matlab®

Zijlstra and Hof [47]

Zijlstra and Zijlstra [48]

Soltani, Aminian [17]

 

SLB

*SLB

This algorithm is the same as SLA. For all cohorts, the same factor “k” is used, whereas for the MS cohort, a special factor is implemented (*SLB)

acc_v: the acceleration in the vertical axis (orientation corrected)

Fs: sampling frequency

GS: array of gait sequences

ICs: initial contacts [s]

Leg length [cm]

Calibration factorsk” (k = 4.99 for all cohorts except MS, for which k = 4.587)

output_sl: a vector structure containing:

output_sl(N).start: start of N-th GS [s]

output_sl(N).stop: stop of N-th GS [s]

output_sl(N).slSec: Estimated SL-per-second [m] of N-th GS

output_sl(N).slMean: mean of SL [m] estimated for N-th GS

output_sl(N).slSTD: std of SL [m] estimated for N-th GS

output_sl(N).distance: covered distance [m] of N-th GS

output_sl(N).warnMes: shows if there is a warning for N-th GS (1 means yes)

Matlab®

Zijlstra and Hof [47]

Zijlstra and Zijlstra [48]

Soltani, Aminian [17]

 

SLC

Based on the intensity of the vertical acceleration signal, this algorithm estimates the step length according to the following formulas, which represent the relation between the measured vertical acceleration, as a mean absolute value during a step cycle, and the samples within the step (ic = initial contact time event, k = calibration factor 1, p = calibration factor 2). Note that in this section, variables k and p are the tuning coefficients, optimized by machine-learning training

\({a}_{v Mean \left(m\right)=mean \left|{a}_{v} \left(t\right)\right|}\)

\(ic \left(m\right)\le t \le ic (m+1)\)

\(SL=\)

\(t x \sqrt[3]{{a}_{v Mean (m)}}+p\)

acc_v: the acceleration in the vertical axis (orientation corrected)

Fs: sampling frequency

GS: array of gait sequences

ICs: initial contacts [s]

Leg length [cm]

Calibration factorstandp” (t = 0.93, p = foot length)

output_sl: a vector structure containing:

output_sl(N).start: start of N-th GS [s]

output_sl(N).stop: stop of N-th GS [s]

output_sl(N).slSec: Estimated SL-per-second [m] of N-th GS

output_sl(N).slMean: mean of SL [m] estimated for N-th GS

output_sl(N).slSTD: std of SL [m] estimated for N-th GS

output_sl(N).distance: covered distance [m] of N-th GS

output_sl(N).warnMes: shows if there is a warning for N-th GS (1 means yes)

Matlab®

Kim, Jang [49]

Zhao, Zhang [50]

Soltani, Aminian [17]

 

SLD

This algorithm is based on the double integration of the anterior–posterior acceleration signal

It integrates the signal and corrects the drift based on the combination of two methods:

– The inverted pendulum model, as for SLA

– The geometrical acceleration-intensity-based model, which assumes the following:

\(SL=\)

\(t x \sqrt[4]{{a}_{v Max-Min (m)}}+p\)

Note that in this section, variables k, t and p are the tuning coefficients, optimized by machine-learning training

acc_ap: the acceleration in the anterior–posterior axis (orientation corrected)

Fs: sampling frequency

GS: array of gait sequences

ICs: initial contacts [s]

Leg length [cm]

Calibration factorst”, “p” (t = 0.85, p = foot size)

output_sl: a vector structure containing:

output_sl(N).start: start of N-th GS [s]

output_sl(N).stop: stop of N-th GS [s]

output_sl(N).slSec: Estimated SL-per-second [m] of N-th GS

output_sl(N).slMean: mean of SL [m] estimated for N-th GS

output_sl(N).slSTD: std of SL [m] estimated for N-th GS

output_sl(N).distance: covered distance [m] of N-th GS

output_sl(N).warnMes: shows if there is a warning for N-th GS (1 means yes)

Matlab®

Zijlstra and Hof [47]

Zijlstra and Zijlstra [48]

Weinberg [51]

Soltani, Aminian [17]