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 [2024/06/19 13:36] – removed sgranger | visual3d:documentation:modeling:functional_joints:functional_joints [2025/01/24 19:36] (current) – [Principles of the Mayo Algorithm] wikisysop | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Functional Joints ====== | ||
+ | ==== The movement required ==== | ||
+ | |||
+ | 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). | ||
+ | |||
+ | For joints modeled with 3 degrees of freedom, a 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. | ||
+ | |||
+ | 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 movement trial used is " | ||
+ | |||
+ | \\ | ||
+ | **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 calculation. This is not the only movement profile, and we recommend that users "play around" | ||
+ | |||
+ | If you are interested in the user actively performing the movement, we recommend a hula movement for the hip joints. | ||
+ | |||
+ | === Functional Axis === | ||
+ | |||
+ | 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 " | ||
+ | |||
+ | For the knee joint, we recommend projecting a lateral and medial knee marker onto the functional knee axis. | ||
+ | |||
+ | **Warning**. The functional knee axis is not the flexion/ | ||
+ | |||
+ | \\ | ||
+ | Mathematically the functional axis computed has no direction. It could point medial or lateral to the segment, but the algorithm doesn' | ||
+ | |||
+ | ==== Principles of the Gilette algorithm ==== | ||
+ | |||
+ | adapted from: | ||
+ | [[[http:// | ||
+ | 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 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.\\ | ||
+ | |||
+ | Use only helical axes for which the amount of rotation is greater than a minimum value (e.g. 5 degrees). | ||
+ | \\ | ||
+ | |||
+ | |||
+ | Compute the intersection of Axes A & B | ||
+ | Compute the intersection of Axes A & C | ||
+ | Compute the intersection of Axes B & C | ||
+ | \\ | ||
+ | |||
+ | |||
+ | With " | ||
+ | Compute the intersection as a line segment hat is the shortest route between the two axes. The " | ||
+ | This intersection is considered one estimate of the joint center (eg a candidate joint center). | ||
+ | All candidate joint centers are added to a " | ||
+ | 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 " | ||
+ | |||
+ | Compute the median value of each component of the remaining candidates | ||
+ | |||
+ | Reduce the radius of the sphere (the percent decrease is an option defined by the user) | ||
+ | |||
+ | End While() | ||
+ | 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 | ||
+ | [[http:// | ||
+ | Abstract | ||
+ | |||
+ | Accurate and precise knee flexion axis identification is critical for prescribing and assessing tibial and femoral derotation osteotomies, | ||
+ | |||
+ | ==== Defining a Functional Joint ==== | ||
+ | [[visual3d: | ||
+ | ==== Functional Joints Post Processing ==== | ||
+ | [[visual3d: | ||
+ | ==== Functional Joints from Streaming Data ==== | ||
+ | |||
+ | ==== Add_Functional_Joint_Landmark ==== | ||
+ | [[visual3d: | ||
+ | ==== Example: Functional Joint ==== | ||
+ | |||
+ | === Example: Functional Hip === | ||
+ | |||
+ | [[visual3d: | ||
+ | |||
+ | === Example: Functional Knee === | ||
+ | |||
+ | [[visual3d: |
visual3d/documentation/modeling/functional_joints/functional_joints.1718804167.txt.gz · Last modified: 2024/06/19 13:36 by sgranger