User Tools

Site Tools


visual3d:documentation:modeling:functional_joints:functional_joints

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
visual3d:documentation:modeling:functional_joints:functional_joints [2025/01/24 19:31] – [Functional Joints Post Processing] wikisysopvisual3d:documentation:modeling:functional_joints:functional_joints [2026/09/11 18:23] (current) – Clarified that this is the Functional Joints Overview page and better organized the links to other pages. richard
Line 1: Line 1:
-====== Functional Joints ======+====== Functional Joints Overview ======
  
-==== The movement required ====+Functional joints are a method for modelling the joint between two segments according to their apparent relative movement. Functional joints are implemented in Visual3D as an alternative for defining joint landmarks and can be chosen to use in segment definitions if desired. At their core functional joints are simply landmarks. Their use is optional and can be used on a case-by-case basis and can be used in the some model with anatomical landmarks, regression landmarks or functional landmarks. They became popular as  a method to reduce errors from marker placement. However, their accuracy is affected by movements performed, range and speed of motion, the participant studied and the soft tissue artifact. As a result, functional joints should used carefully with their results being validated using another anatomical landmarks when possible, making these others methods often more trustworthy. 
  
-The calculation of a functional joint requires movement of one segment relative to another segment. The algorithm (see below) searches for a point (or for a one degree of freedom joint, an axis) that is stationary relative to the 2 segments (or 2 sets of markers).+==== Data Collection====
  
-For joints modeled with 3 degrees of freedoma movement trial in which the joint has modest range of motion about all three axes of rotation should be used for computing the functional joint. The movement should have sufficient range of motion that the computation statistics produce a reasonable stationary point, but the range of motion should not be too large because soft tissue artifact (e.g. movement of markers relative to the underlying skeleton) should be minimized. Our experience is that 20 degrees range of motion is usually sufficient to compute a stationary point reliably.+Using functional joints increases data collection collections and processing time and requirements. More movement trials must be collected specifically to compute the functional joints with movements that can be challenging for certain participantsparticularly patient populations. Defining functional joints requires at least 3 tracking markers are required for each segment. These tracking markers should not be near the joint to ensure that the motion measured is truly meaningful for defining the functional axis of the joint. This can mean that additional tracking markers need to be added to track segments if you're using a marker set which was not designed for defining functional joints. The movement trial used is contrived specifically for the purpose of computing the functional joint. It should not be assumed that any particular dynamic movement trial,e.g. a walking trial, is sufficient. Your “functional joint” trial should be separate from the movement data trials
  
-Several cycles of movement should be included in the motion, but it isn't clear exactly how many cycles there should be. We recommend more than 5 cycles, but users should experiment with their own data setups because the optimal number of cycles depends on many issues, including the joint tested, and the amount of soft tissue artifact present in the data.+===== The input movement =====
  
-The movement trial used is "contrived" specifically for the purpose of computing the functional joint. It should not be assumed that any movement (e.g. walking trial) is sufficient. This "functional joint" trial should be separate from the movement data trials.+Calculating a functional joint requires the movement of one segment relative to another segmentBased on this relative movement the chosen algorithm (see below) searches for point (or, for a one degree of freedom joint, an axisthat is stationary relative to the 2 segments (or 2 sets of markers).
  
-\\ +==== Three Degrees of Freedom ====
-**Begon M, Monnet T, Lacouture P (2007) Effects of movement for estimating the hip joint center. Gait and Posture 25, 353-359**+
  
-This article defines characteristics of the movement profile that should be used for the functional joint calculationThis is not the only movement profileand we recommend that users "play around" with other options until they find a movement that is reliable for their subject population. It is very difficult for many subjects to balance themselves for the functional trials, so many investigators support the subject and move the thigh for the subject.+For joints modelled with 3 degrees of freedom, the chosen movement trial should have the following characteristics
 +  - the joint has modest range of motion about all three axes of rotation; 
 +  - the movement should have sufficient range of motion to produce a reasonable stationary point; 
 +  - but the range of motion should also not be too large because soft tissue artifact (e.g. movement of markers relative to the underlying skeleton) should be minimized. 
 +  
 +Our experience is that 20 degrees range of motion is usually sufficient to compute a stationary point reliably. Several cycles of movement should be included in the motionbut it isn't clear exactly how many cycles there should be. We recommend more than 5 cycles, but users should experiment with their own data setups because the optimal number of cycles depends on many issues including: the joint tested and the amount of soft tissue artifact present in the data.
  
-If you are interested in the user actively performing the movement, we recommend hula movement for the hip joints.+The movement trial used is contrived specifically for the purpose of computing the functional joint. It should not be assumed that any particular dynamic movement trial,e.g. walking trial, is sufficient. Your "functional joint" trial should be separate from the movement data trials.
  
-=== Functional Axis ===+Begon, Monnet, and Lacouture defined characteristics of the movement profile that should be used for the functional joint calculation, however this is not the only movement profile that is possible. We recommend that users "play around" with other options until they find a movement that is reliable for their subject population.
  
-If the joint is precisely one degree of freedom, it is possible to compute an axis, but it is not possible to compute a stationary point. In practice, joints aren't only one degree of freedom, and there is often some soft tissue artifact. This "noise" is then the source of data for computing a stationary pointThe closer to one degree of freedom the less reliable the stationary point.+It is very difficult for many subjects to balance themselves for the functional trialsso many investigators support the subject and move the thigh for the subjectIf you are interested in the user actively performing the movement, we recommend a hula movement for the hip joints.
  
-For the knee joint, we recommend projecting a lateral and medial knee marker onto the functional knee axis.+==== One Degree of Freedom (Functional Axis) ====
  
-**Warning**. The functional knee axis is not the flexion/extension axis of your knee angle. Visual3D (and most software) use right handed orthogonal coordinate systemsThe z-axis (axial direction) is defined by a vector between the distal and proximal ends of the segment. The x-axis lies in the frontal plane, but is forced to be perpendicular to the z-axiswhich is unlikely to be parallel to the functional knee axis (it is just in the same plane).+If the joint is precisely one degree of freedom, it is possible to compute an axis, but it is not possible to compute a stationary point. In practice, joints aren't only one degree of freedom, and there is often some soft tissue artifactThis "noise" is then the source of data for computing a stationary point. The closer to one degree of freedom, the less reliable the stationary point.
  
-\\ +For the knee joint, we recommend projecting lateral and medial knee marker onto the functional knee axis.
-Mathematically the functional axis computed has no direction. It could point medial or lateral to the segment, but the algorithm doesn't have enough information to know the correct direction. +
- +
-==== Principles of the Gilette algorithm ==== +
- +
-adapted from: +
-[[[http://www.sciencedirect.com/science/article/pii/S002192900400137X|Schwartz MH, Rozumalski A (2005) A new method for estimating joint parameters from motion data. Journal of Biomechanics, 38107-116]]] +
-Specify segment coordinate system in which the motion capture data is to be resolved, and into which the landmark representedFor the case of the hip joint center, for example, the pelvis is considered a stationary coordinate system. Specify the motion capture markers attached to the moving segment. For the case of the hip joint center, markers attached to the thigh are used. +
- +
-**Algorithm**\\ +
-For all combinations of 3 frames (a,b,c) of data from the moving trial+
  
-Compute Finite Helical Axis (A) for frames a and b.\\ 
  
-Compute Finite Helical Axis (B) for frames a and c.\\ 
  
-Compute Finite Helical Axis (C) for frames b and c.\\+===== Algorithms for calculating Functional Joints =====
  
-Use only helical axes for which the amount of rotation is greater than minimum value (e.g. 5 degrees). +Visual3D includes multiple algorithms for calculating functional joints. Regardless of the algorithm chosen, the general approach is to search for point (or, for a one degree of freedom joint, an axis) that is stationary relative to the joint's 2 segments (or 2 sets of markers).
-\\+
  
 +==== The Gilette Algorithm ====
  
-Compute the intersection of Axes & B +This approach is adapted from: Schwartz MH, Rozumalski (2005) new method for estimating joint parameters from motion data. Journal of Biomechanics, 38, 107-116.
-Compute the intersection of Axes & C +
-Compute the intersection of Axes B & C +
-\\+
  
 +To begin:
 +  - specify a segment coordinate system in which the motion capture data is to be resolved and into which the landmark represented. For the case of the hip joint centre, the pelvis is generally considered a stationary coordinate system.
 +  - specify the motion capture markers attached to the moving segment. For the case of the hip joint centre, markers attached to the thigh are used.
  
-With "real" data there is rarely an intersection of the two Finite Helical Axes. +Then, for all combinations of 3 frames (a,b,c) of data from the moving trial: 
-Compute the intersection as a line segment hat is the shortest route between the two axes. The "intersection" is the mid-point of this straight line+  - Compute Finite Helical Axis (A) for frames a and b, Finite Helical Axis (B) for frames a and c, and Finite Helical Axis (C) for frames b and c. 
-This intersection is considered one estimate of the joint center (eg a candidate joint center)+    - Remove any helical axis where the amount of rotation is less than a minimum value (e.g. 5 degrees). 
-All candidate joint centers are added to a "candidate array". This candidate array gets very big very quickly because the number of permutations grows dramatically with the number of frames considered. +  - Compute the intersection of Axes A & B, of Axes A & C, and of Axes B & C
-The joint center returned is the mode of the set of candidates. The 3D mode is challenging to compute, so Visual3D estimates the mode. +    Compute the intersection as a line segment hat is the shortest route between the two axes. The "intersection" is the mid-point of this straight line and is considered one estimate of the joint centre, e.g. a candidate joint centre
-In principle Visual3D would use all candidates, but this is often impractical, so Visual3D samples the candidate array randomly. The number of candidates selected is an option defined by the user. +    All candidate joint centres are added to a "candidate array". This candidate array gets very big very quickly because the number of permutations grows dramatically with the number of frames considered.  
-The mode is computed as follows: +    - **NOTE**: With "real" data there is rarely an intersection of the two Finite Helical Axes. 
-Compute the mean value of all candidates +  - Calculate the mode of the candidate array: 
-Specify a sphere surrounding this location (the size of the initial sphere is an option defined by the user). A fairly big number is used typically, but the actual value hasn't been found to be particularly important) +    - **NOTE**: The 3D mode is challenging to compute, so Visual3D estimates the mode. In principle Visual3D would use all candidates, but this is often impractical, so Visual3D samples the candidate array randomly. The number of candidates selected is an option defined by the user. 
-While() the number of candidates is greater than 500 (defined by the user)+    Compute the mean value of all candidates. 
 +    Specify a sphere surrounding this location (the size of the initial sphere is an option defined by the user). A fairly big number is used typically, but the actual value hasn't been found to be particularly important. 
 +    While the number of candidates is greater than 500 (a threshold defined by the user)... 
 +      - The "candidate array" is reduced by removing all candidates that are not in the interior of this sphere. 
 +      - The median value of each component is computed for the remaining candidates. 
 +      - The radius of the sphere is reduced (the percent decrease is another user-defined option). 
 +    - When only 500 candidates remain, the function joint is defined as the mean value of these remaining candidates. 
 +    - **NOTE**: The number of combinations gets very big very quickly and can easily crash the system if the user isn't careful. An option exists to select a subset of combinations at random (e.g. 2,000,000 combinations) as a representative sample. 
 +  - Return the mode of the candidate array as the joint centre.
  
-The "candidate array" is reduced by removing all candidates that are not in the interior of this sphere.+==== The Mayo Algorithm ====
  
-Compute the median value of each component of the remaining candidates+This approach is adapted from: Jensen, E., Lugade, V., Crenshaw, J., Miller, E., & Kaufman, K. (2016). A principal component analysis approach to correcting the knee flexion axis during gait. Journal of Biomechanics, 49(9), 1698-1704.
  
-Reduce the radius of the sphere (the percent decrease is an option defined by the user)+From the authors' abstract:
  
-End While() +>Accurate and precise knee flexion axis identification is critical for prescribing and assessing tibial and femoral derotation osteotomiesbut is highly prone to marker misplacement-induced error. The purpose of this study was to develop an efficient algorithm for post-hoc correction of the knee flexion axis and test its efficacy relative to other established algorithms. Gait data were collected on twelve healthy subjects using standard marker placement as well as intentionally misplaced lateral knee markers. The efficacy of the algorithm was assessed by quantifying the reduction in knee angle errors. Crosstalk error was quantified from the coefficient of determination (r2) between knee flexion and adduction angles. Mean rotation offset error (αo) was quantified from the knee and hip rotation kinematics across the gait cycleThe principal component analysis (PCA)-based algorithm significantly reduced r2 (p<0.001) and caused αo,knee to converge toward 11.9±8.0° of external rotation, demonstrating improved certainty of the knee kinematics. The within-subject standard deviation of αo,hip between marker placements was reduced from 13.5±1.5° to 0.7±0.2° (p<0.001), demonstrating improved precision of the knee kinematics. The PCA-based algorithm performed at levels comparable to a knee abduction–adduction minimization algorithm ( Baker et al., 1999 and better than null space algorithm ( Schwartz and Rozumalski, 2005 ) for this healthy subject population.
-When only 500 candidates remainthe function joint is defined as the mean value of these remaining candidates. +
-**Note: The number of combinations gets very big very quickly and can easily crash the system if the user isn't carefulAn option exists to select a subset of combinations at random (e.g2,000,000 combinationsas representative sample.** +
-==== Principles of the Mayo Algorithm ====+
  
-adapted from +==== Limitations ====
-[[http://www.sciencedirect.com/science/article/pii/S0021929016303979|Jensen E, Lugade V, Crenshaw J, Miller E, Kaufman K (2016) A principal component analysis approach to correcting the knee flexion axis during gait. Journal of Biomechanics, in press]] +
-Abstract+
  
-Accurate and precise knee flexion axis identification is critical for prescribing and assessing tibial and femoral derotation osteotomies, but is highly prone to marker misplacement-induced error. The purpose of this study was to develop an efficient algorithm for post-hoc correction of the knee flexion axis and test its efficacy relative to other established algorithmsGait data were collected on twelve healthy subjects using standard marker placement as well as intentionally misplaced lateral knee markers. The efficacy of the algorithm was assessed by quantifying the reduction in knee angle errors. Crosstalk error was quantified from the coefficient of determination (r2) between knee flexion and adduction angles. Mean rotation offset error (αo) was quantified from the knee and hip rotation kinematics across the gait cycle. The principal component analysis (PCA)-based algorithm significantly reduced r2 (p<0.001) and caused αo,knee to converge toward 11.9±8.0° of external rotationdemonstrating improved certainty of the knee kinematics. The within-subject standard deviation of αo,hip between marker placements was reduced from 13.5±1.5° to 0.7±0.2° (p<0.001), demonstrating improved precision of the knee kinematics. The PCA-based algorithm performed at levels comparable to a knee abduction–adduction minimization algorithm ( Baker et al., 1999 ) and better than a null space algorithm ( Schwartz and Rozumalski, 2005 ) for this healthy subject population.+Functional joint can fail with no obvious indication of failure other than unreasonable joint locationsMany laboratories compare functional joint estimates against anatomical landmarks or regression-based estimates to identify failed calculationsHoweverthere is no defined threshold for determining when a functional joint calculations are incorrect. The results are often rejected when the values differ substantially from anatomical estimates
  
-==== Defining a Functional Joint ==== +**Functional Knee Axis Warning**The functional knee axis is not the flexion/extension axis of your knee angle. Visual3D (and most software) use right handed orthogonal coordinate systems. The z-axis (axial direction) is defined by a vector between the distal and proximal ends of the segment. The x-axis lies in the frontal plane, but is forced to be perpendicular to the z-axis, which is unlikely to be parallel to the functional knee axis (it is just in the same plane). Mathematically the functional axis computed has no direction. It could point medial or lateral to the segment, but the algorithm doesn't have enough information to know the correct direction.
-[[visual3d:documentation:modeling:functional_joints:defining_a_functional_joint]] +
-==== Functional Joints Post Processing ==== +
-[[visual3d:documentation:modeling:functional_joints:functional_joints_post_processing]] +
-==== Functional Joints from Streaming Data ====+
  
-==== Add_Functional_Joint_Landmark ==== 
-[[visual3d:documentation:pipeline:model_commands:add_functional_joint_landmark]] 
-==== Example: Functional Joint ==== 
  
-=== Example: Functional Hip ===+===== See Also =====
  
-=== ExampleFunctional Knee ===+Learn more about Visual3D's graphical interface for computing functional joints: 
 +  * [[visual3d:documentation:modeling:functional_joints:defining_a_functional_joint|Defining a functional joint]] 
 +  * [[visual3d:documentation:modeling:functional_joints:functional_joints_post_processing|Post-processing for functional joints]]
  
 +Follow along with our tutorial for defining a functional joint at the right hip:
 +  * [[visual3d:tutorials:modeling:functional_joints|Create a Functional Joint at the Right Hip]]
  
 +See these examples for computing and working with functional joints in Visual3D:
 +  * [[visual3d:documentation:pipeline:model_commands:add_functional_joint_landmark|Add a Functional Joint landmark]]
 +  * [[visual3d:documentation:modeling:functional_joints:example_-_functional_hip|Compute a Functional Hip Joint]]
 +  * [[visual3d:documentation:modeling:functional_joints:example_-_functional_knee|Compute a Functional Knee Joint]]
  
 +===== References =====
 +  - Begon M, Monnet T, Lacouture P (2007) Effects of movement for estimating the hip joint center. Gait and Posture 25, 353-359. [[https://doi.org/10.1016/j.gaitpost.2006.04.010|DOI]]
 +  - Jensen, E., Lugade, V., Crenshaw, J., Miller, E., & Kaufman, K. (2016). A principal component analysis approach to correcting the knee flexion axis during gait. Journal of Biomechanics, 49(9), 1698-1704. [[https://doi.org/10.1016/j.jbiomech.2016.03.046|DOI]]
 +  - Schwartz MH, Rozumalski A (2005) A new method for estimating joint parameters from motion data. Journal of Biomechanics, 38, 107-116. [[https://doi.org/10.1016/j.jbiomech.2004.03.009|DOI]]
visual3d/documentation/modeling/functional_joints/functional_joints.1737747116.txt.gz · Last modified: by wikisysop