visual3d:documentation:modeling:functional_joints:functional_joints
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| visual3d:documentation:modeling:functional_joints:functional_joints [2025/01/24 19:28] – [Defining a Functional Joint] wikisysop | visual3d: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 |
| - | ==== The movement | + | Functional joints are a method for modelling the joint between two segments according to their apparent relative |
| - | 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 | + | Using functional joints increases data collection collections and processing time and requirements. More movement trials must be collected specifically to compute the functional |
| - | Several cycles of movement | + | ===== The input movement |
| - | The movement trial used is " | + | Calculating a functional joint requires the movement of one segment relative to another segment. Based on this relative |
| - | \\ | + | ==== Three Degrees |
| - | **Begon M, Monnet T, Lacouture P (2007) Effects | + | |
| - | This article defines | + | For joints modelled with 3 degrees of freedom, the chosen movement trial should have the following |
| + | - the joint has modest range of motion about all three axes of rotation; | ||
| + | - the movement should | ||
| + | - 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 | ||
| - | If you are interested in the user actively performing | + | The movement trial used is contrived specifically for the purpose of computing |
| - | === Functional Axis === | + | Begon, Monnet, and Lacouture defined characteristics of the movement profile that should be used for the functional joint calculation, |
| - | If the joint is precisely one degree of freedom, it is possible | + | It is very difficult for many subjects |
| - | 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/ | + | 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 |
| - | \\ | + | For the knee joint, |
| - | Mathematically | + | |
| - | + | ||
| - | ==== Principles of the Gilette algorithm ==== | + | |
| - | + | ||
| - | adapted from: | + | |
| - | [[[http:// | + | |
| - | Specify | + | |
| - | + | ||
| - | **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.\\ | ||
| - | Use only helical axes for which the amount of rotation is greater than a minimum value (e.g. 5 degrees). | ||
| - | \\ | ||
| + | ===== Algorithms for calculating Functional Joints ===== | ||
| - | Compute the intersection | + | Visual3D includes multiple algorithms for calculating functional joints. Regardless |
| - | Compute | + | |
| - | Compute | + | |
| - | \\ | + | |
| + | ==== The Gilette Algorithm ==== | ||
| - | With " | + | This approach |
| - | Compute the intersection as a line segment hat is the shortest route between the two axes. The " | + | |
| - | This intersection | + | |
| - | All candidate | + | |
| - | The joint center returned is the mode of the set of candidates. The 3D mode is challenging to compute, so Visual3D estimates the mode. | + | |
| - | In principle Visual3D would use all candidates, but this is often impractical, | + | |
| - | The mode is computed as follows: | + | |
| - | 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 (defined by the user) | + | |
| - | The " | + | To begin: |
| + | - specify a segment 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. | ||
| - | Compute the median value of each component of the remaining candidates | + | Then, for all combinations of 3 frames (a,b,c) of data from the moving trial: |
| + | - Compute | ||
| + | - Remove any helical axis where the amount of rotation is less than a minimum value (e.g. 5 degrees). | ||
| + | - Compute the intersection of Axes A & B, of Axes A & C, and of Axes B & C. | ||
| + | - Compute the intersection as a line segment hat is the shortest route between the two axes. The " | ||
| + | - All candidate joint centres are added to a " | ||
| + | - **NOTE**: With " | ||
| + | - Calculate the mode of the candidate array: | ||
| + | - **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, | ||
| + | - 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 " | ||
| + | - The median value of each component | ||
| + | - The radius | ||
| + | - 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. | ||
| - | Reduce the radius of the sphere (the percent decrease is an option defined by the user) | + | ==== The Mayo Algorithm ==== |
| - | End While() | + | This approach |
| - | 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.** | + | |
| - | ==== Principles of the Mayo Algorithm ==== | + | |
| - | adapted from | + | From the authors' |
| - | [[http:// | + | |
| - | Abstract | + | |
| - | Accurate and precise knee flexion axis identification is critical for prescribing and assessing tibial and femoral derotation osteotomies, | + | >Accurate and precise knee flexion axis identification is critical for prescribing and assessing tibial and femoral derotation osteotomies, |
| - | ==== Defining a Functional Joint ==== | + | ==== Limitations |
| - | [[visual3d: | + | |
| - | ==== Functional Joints Post Processing | + | |
| - | ==== Functional | + | Functional |
| - | ==== Add_Functional_Joint_Landmark ==== | + | **Functional Knee Axis Warning**: The functional knee axis is not the flexion/ |
| - | ==== Example: Functional Joint ==== | ||
| - | === Example: Functional Hip === | + | ===== See Also ===== |
| - | === Example: Functional Knee === | + | Learn more about Visual3D' |
| + | * [[visual3d: | ||
| + | * [[visual3d: | ||
| + | Follow along with our tutorial for defining a functional joint at the right hip: | ||
| + | * [[visual3d: | ||
| + | See these examples for computing and working with functional joints in Visual3D: | ||
| + | * [[visual3d: | ||
| + | * [[visual3d: | ||
| + | * [[visual3d: | ||
| + | ===== References ===== | ||
| + | - Begon M, Monnet T, Lacouture P (2007) Effects of movement for estimating the hip joint center. Gait and Posture 25, 353-359. [[https:// | ||
| + | - 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, | ||
| + | - Schwartz MH, Rozumalski A (2005) A new method for estimating joint parameters from motion data. Journal of Biomechanics, | ||
visual3d/documentation/modeling/functional_joints/functional_joints.1737746924.txt.gz · Last modified: by wikisysop
