Virtual Markers


Virtual Markers are points in 3D space constructed from a set of points which may be either real markers or else previously defined virtual markers or from a coordinate frame system.

Virtual markers have a variety of uses. They may be used to visualize and plot the movement of points which cannot be tracked with real markers (e.g. centre of rotation relative to a local frame; top of the head which cannot be captured by a CODA unit); they may be used to define centres of mass, or simply to create a more elaborate wire-frame figure to animate in Stick-figure views. Their positions, velocities, and accelerations may be plotted on graph views, or exported to other applications as text data along with real marker positions.

Once defined, virtual markers are automatically added to the marker lists in the Stick Figure Setup and Vector Angle definition dialogues.

Virtual Markers are user-defined points and three control panels are dedicated to define them. The “centroid” dialogue box is used to define a weighted average of the positions of a set of markers. The “3D position” dialogue box is used to define the 3D location of a point in a coordinate frame system. The “pointer landmark” dialogue box is mainly used to define anatomical landmarks that you will later digitise with the pointer when a live stream of data is available.

Centroid panel 


In this option, a virtual marker is defined as a normalized linear combination of two or more position vectors. It may be thought of as a weighted average of the positions of a number of markers defined as follows:

Where  and  are respectively the 3D coordinate and the weight of nth point and

When Odin runs the centroid script, it internally and automatically calculates the weight sum to be equal to 1.

The “Centroid” dialogue box is displayed Figure 1 and it is accessible through the path: “Calculations > New Centroid”. It is composed of a Name box and a Group Name panel. This allows the user to define the name of a virtual marker and to choose the different markers and weights used to create the virtual marker.

Figure 1: Centroid dialogue box

Example: an equidistant point between two markers

This is the first example to illustrate the “centroid panel” use. Let us imagine the following scenario: we want to define the right inter-condylar point located midway between the tip of the medial malleolus (MM) and the tip of the lateral malleolus (LM). Place one marker on the MM and on the LM of the right shank as illustrated Figure 2 and label them “RMM” and “RLM”, through the Maker labels option.

Figure 2: Markers attached to right MM and LM

Then open the “Centroid” menu by clicking on “Calculations > New Centroid”, fill the following details into the panel and click on OK.

Name: “RIC”

Point 1 Group: “Marker” Channel: “RMM” Weight: 0.5
Point 2 Group: “Marker” Channel: “RLM” Weight: 0.5

The virtual marker is now created. It will be displayed in the “Stick Figure” if the “view all RefPoint” check box is selected in the “Stick Figure View Options” panel. The marker is accessible from the group name “RefPoint”.


Virtual Marker Panel


In this option, a virtual marker is defined as a 3D position vector of a point in a local coordinate frame. In that local coordinate frame, the 3D coordinates of the virtual marker are constants. Once the 3D coordinates of the virtual point are created, its 3D coordinates will be automatically computed in the Lab frame from the following equation:

Where  respectively represent the position of the virtual marker expressed in the global and local coordinate frame and the homogeneous transformation matrix and with,

where  represent the rotation matrix of the local frame expressed in the global coordinate system  and the position of the origin of the local frame expressed in the global coordinate system. This formula uses homogeneous transformation formalism but classical transformation formalism can also be used. This process is illustrated Figure 3. 

Figure 3: Homogeneous transformation matrix

The VM box is displayed (Figure 4) and it is accessible through the path: “Calculations> New Virtual Markers”

The first step consists of labeling the virtual marker by writing the name in the “Name” box. Then choose the local frame where the virtual marker will be attached from the “Coordinate System” scroll-down menu. The last step consists of defining the X, Y and Z coordinates of the virtual marker. Two options are available. You can directly enter the value of the VM position into the X, Y and Z boxes or select the coordinates of an already existing point.

Figure 4: Virtual marker dialogue box

An offset relative to the origin of the coordinate frame can be defined by ticking “Offset From:”

Example: Hip centre of rotation reconstruction

The objective of this example is to show one possible use of the 3D position dialogue box. For many studies and clinical applications, it is very important to know the hip centre of rotation position relative to the pelvis frame and/or in the global frame as the calculation of hip joint moments may form the basis of therapy. Indeed, modern clinical diagnosis is often based on muscular efforts determined by inverse dynamics whose computation needs the joint centre of rotation position and the angular velocity of rigid segments around this centre of rotation. The hip centre of rotation position expressed in the pelvis frame can be estimated from the following equations:

These estimates are adapted from the article written by Bell et al (Bell, Pedersen and Brand 1990). The position of the hip centre can therefore be estimated at any time using the previous equation.

In ODIN, first, configure the pelvic frame. The pelvis segment is defined using the four anatomical landmarks: Left and Right Anterior Superior Iliac Spine (L.ASIS and R.ASIS) and Left and Right Posterior Superior Iliac Spine (L.PSIS and R.PSIS). For more details, please, refer to the “ODIN – Human analysis protocol”. Once the pelvic model has been created, you need to know the distance between the two ASIS and to create a centroid between the two ASIS. You can manually define it with a tape measure or estimate it from the distance between the two markers using the software.

These are the instructions for creating the Left and Right hip joint centres when measuring the ASIS distance with a tape. Open the Virtual Marker panel by clicking on “Edit> Virtual Markers …” fill the information in the correct fields and click on OK. We suppose for this example that the distance between the ASIS is 250mm (25 cm):

Name: “RHJC”
Coordinate system: “Pelvis”
X: “90.0” (0.36 x ASIS_Dist)
Y: “-47.5” (-0.19 x ASIS_Dist)
Z: “-75.0” (-0.3 x ASIS_Dist)
Define Offset: Group: Refpoint: MidASIS

Repeat the process:

Name: “LHJC”
Coordinate system: “Pelvis”
X: “-90.0” (0.36 x ASIS_Dist)
Y: “-47.5” (-0.19 x ASIS_Dist)
Z: “-75.0” (-0.3 x ASIS_Dist)
Define Offset: Group: “Refpoint” and Channel: “MidASIS”

Once defined, Virtual Marker Position appears as a new data type and can be displayed in the 3D view and or as a graph.

Even if this method works correctly, the distance between the ASIS has to be manually set in the script every time the subject is different. The following example shows how to use the same function but in a more efficient way by using fields.

The first thing to do is to create 4 fields (see section): “Subject / Offset_XL”, “Subject / Offset_XR”, “Subject / Offset_Y”, and “Subject / Offset_Z”. Once created, fill them with the corresponding value. Repeat it for every trial.

Then configure them as shown below:


Pointer Landmark Panel


A pointer is used to create a virtual marker; a virtual marker is usually defined as a 3D point attached to set of markers (3 or more in the form of a cluster). All markers used to define a cluster must be attached to the same segment / rigid body, so that the distance between the markers in the cluster is constant. The virtual landmark is then defined by positioning the pointer extremity at the right position (at the desired anatomical landmark) during a very short acquisition trial. This ‘Pointer Trial’ procedure is referred to as digitizing.

Pointer Trials allow the user to define points of interest on a rigid body, (e.g. anatomical points) as landmarks by pointing and clicking using the Codamotion Landmark Pointer. This defines the position of a point of interest relative to one or more rigid bodies (clusters). The motion of the rigid body (cluster) will then be used to track the motion of the point of interest without the need for a physical marker on that point.

There are two different types of Pointers; Generation 1 and Generation 2.(see Figure 5.)

Figure 5: Pointer (G2 Left, G1 Right).

The “Pointer Landmark” dialogue box is displayed Figure 6 and it is accessible through the path: “Calculations> New Pointer Landmark …”.

Defining Pointer Landmarks 

It is necessary to define the required landmarks with respect to the rigid body (cluster) to which they are associated. The “Pointer Landmark” dialogue box is shown in Figure 6 and it is accessible through the menu “Calculations > New Pointer Landmark …” The first step in defining a new Pointer Landmark consists of writing a name in the “Name” box. This will be the name that shows in the “Protocol Tree” menu (Figure 6). Next, choose the name of each marker of the cluster where the virtual marker will be attached. The cluster can contain 3 or 4 markers. If the cluster you are using contains 3 markers then de-select the “Enable” option next to the fourth marker.

The last step consists of writing the name of the anatomical landmark in the “Landmark” box.

Figure 6: Pointer Landmark Dialogue Box

As the same anatomical landmark can be attached to different clusters, many “Pointer Landmark” definitions can have the same anatomical landmark name. Let’s take the example of the right lateral femoral epicondyle (RLFE). The RLFE is a common point of the right thigh and right shank, so this point can be digitised either from clusters on the thigh or the shank or both. This allows a positive redundancy if one of the two clusters is occluded. By naming the anatomical landmark with the same name, only one digitising action is needed for all pointer landmarks having the same landmark name. At the same time, this avoids the user accidentally digitising the same anatomical landmark many times.