### Specimen preparation

Ten cadaveric hands were acquired from the Advanced Technical Skills Simulation Laboratory at the University of Calgary (right hands, 4 female, 6 male, mean age: 81.6 ± 13.9 years). Each specimen contained the entire hand, wrist, and a portion of the forearm (Fig. 1). The medical history of each specimen was not obtained for this study. All methods were performed in accordance with guidelines set by the Conjoint Health Research Ethics Board at the University of Calgary (REB20-0039).

### Experimental setup

Prior to scanning, each specimen was securely strapped onto a custom 3D-printed passive motion device designed to move the thumb in a radial abduction–adduction motion (*i.e.*, functional flexion–extension) (Fig. 1). An Arduino Uno microcontroller powered a servo motor using software developed using C++ (Arduino IDE, v1.8.13). A resting position was defined as laying all fingers flat, pointing forward, and pressed together to minimize space between fingers. From several pilot scans, a time of 5 s for the thumb to move from a resting position to a fully abducted position and back to resting position, was determined to qualitatively minimize motion artifact. Range of motion was not standardized between specimens as we were only interested in errors associated between and within raters, not errors due to the passive motion device.

### Imaging protocol

Each specimen underwent dynamic CT scanning (GE Revolution HD GSI scanner, GE Healthcare, Chicago, USA) at the Centre for Mobility and Joint Health, University of Calgary. Dynamic CT scans were performed using 120 kVp, 100 mA, 0.4 s/gantry revolution, 40 mm longitudinal coverage, and 0.625 × 0.625 × 2.5 mm voxel size. Each specimen was scanned for 15 s, resulting in approximately three radial abduction–adduction movements and 60 frames of data. Dynamic CT images were resampled to 0.625 mm^{3} isotropic voxels. Due to scanner spatial resolution and longitudinal coverage limitations, static CT scans (120 kVp, 150 mA, 0.375 × 0.375 × 0.625 mm voxel size, and 0.531 pitch factor) were also performed to ensure the TMC joint was fully captured. Additionally, high-resolution peripheral quantitative CT images (HR-pQCT, XtremeCT II, Scanco Medical, Brüttisellen, Switzerland) were acquired to provide greater detail in the bony anatomy when selecting ALs. HR-pQCT scans were obtained using a standard in vivo imaging protocol (68 kVp, 1470 µA, 43 ms integration time, 900 projections/180°, 61 µm^{3} voxels) with an extended longitudinal coverage to capture the full TMC joint.

### Image processing

All processing was performed using custom Python scripts (v.3.8.5) using the VTK (v8.2.0, Schroeder et al. [16]), ITK (v5.2.1, McCormick et al. [17]), and SimpleITK (v2.0.2, Lowekamp et al. [18]) libraries. All scripts used in this study are made available through a public GitHub repository (https://github.com/ManskeLab/DYNACT). Binary masks for the first metacarpal (MC1) and trapezium (TRP) were obtained from HR-pQCT images (Fig. 2). Then, a series of image registration steps were performed to move the bone masks to the dynamic CT space (Fig. 3). Each bone was processed individually and recombined in the dynamic CT image space.

#### Image segmentation

Grayscale HR-pQCT images were first binarized using a fixed global threshold (520 ≤ threshold ≤ 6600 Hounsfield units). Next, binary smoothing and a series of binary morphological operations (binary opening and closing) removed the binary components resulting from noise. A manual step was occasionally required to disconnect the MC1 and TRP bones when joint space was very narrow. Connected component labelling was then applied to isolate each bone. Further morphological operations and mesh smoothing were performed to obtain the final bone mask (Fig. 2). These bone masks were then used to select ALs.

#### Image registration

Bone masks and ALs were rigidly transformed to each frame of the dynamic CT scan in a three-step process (Fig. 3). This was required as the drastic resolution change from HR-pQCT to dynamic CT did not visually produce adequate alignment when registered directly. First, three manually placed landmarks were selected on each grayscale image (HR-pQCT, static CT, and the first frame of the dynamic CT scan) to generate an initial transformation between image spaces. Final image alignment was obtained automatically using intensity-based image registration between each set of images. Registration for HR-pQCT to static CT and static CT to the first dynamic CT frame used a Mattes Mutual Information metric [19], Powell optimizer, linear interpolator, and rigid 3D transform. Image registration between dynamic CT frames was performed using a sequential registration approach that utilized the position of the previous frame to provide initial alignment. A mean squares metric, Powell optimizer, linear interpolator, and rigid 3D transform were used to obtain binary masks and SCSs in each dynamic CT frame. Each registration provided a transformation matrix that could be used to transform the bone masks and ALs to the dynamic CT image space.

### Joint kinematics

#### Segment coordinate system definition

Joint angles in the dynamic CT image space were computed using a joint coordinate system (JCS) representation [20] previously defined for the TMC joint that minimizes kinematic cross-talk [21] (Fig. 4). To establish a SCS, a custom visualization tool was developed using Python and VTK to visualize each bone model in 3D, allowing for AL selection. Three ALs were defined on the MC1: (1) LDT: centre of the lateral distal MC1 tubercle, (2) MDT: centre of the medial distal MC1 tubercle, and (3) M1TJ: centre of the MC1-TRP joint surface. The origin of the MC1 SCS was defined as M1TJ. Four ALs were defined on the TRP: (1) TM1J: centre of TRP-MC1 joint surface, (2) TM2J: centre of the TRP-second metacarpal joint surface, (3) TSTJ: centre of the junction between the TRP-trapezoid and TRP-scaphoid joint surfaces, and (4) TDET: distal end of the dorsoradial tubercle (viewed laterally). The origin of the TRP SCS was defined as TM1J. The definition of the SCSs for each bone have been previously described [21] and are shown in Fig. 4. ALs were later transformed to the dynamic CT image space where JCSs were defined in each frame.

#### Joint coordinate system definition

In accordance with a previous JCS definition in the TMC joint [21], the following mobile axis sequence was used: flexion–extension about the Z-axis of the TRP SCS (Fig. 4, Z_{TRP}), abduction–adduction about the X-axis of the MC1 SCS (Fig. 4, X_{MC1}), and axial rotation about a floating axis mutually orthogonal to Z_{TRP} and X_{MC1}. ALs were transformed to each dynamic CT frame using transformation matrices obtained from the image registration process defined above (Fig. 3). Orientation of the MC1 relative to the TRP (\({R}_{TRP\_MC1}\)) was then computed by decomposing the ZYX mobile axis sequence:

$$R_{TRP\_MC1} = R_{{X_{MC1} }} \cdot R_{Y} \cdot R_{{Z_{TRP} }} = \left[ {\begin{array}{*{20}c} {cos\left( \gamma \right)cos\left( \beta \right)} & {sin\left( \gamma \right)cos\left( \alpha \right) + cos\left( \gamma \right)sin\left( \beta \right)sin\left( \alpha \right)} & {sin\left( \gamma \right)sin\left( \alpha \right) - cos\left( \alpha \right)cos\left( \gamma \right)sin\left( \beta \right)} \\ { - sin\left( \gamma \right)cos\left( \beta \right)} & {cos\left( \gamma \right)cos\left( \alpha \right) - sin\left( \gamma \right)sin\left( \beta \right)sin\left( \alpha \right)} & {sin\left( \alpha \right)cos\left( \gamma \right) + sin\left( \gamma \right)sin\left( \beta \right)cos\left( \alpha \right)} \\ {sin\left( \beta \right)} & { - sin\left( \alpha \right)cos\left( \beta \right)} & {cos\left( \beta \right)cos\left( \alpha \right)} \\ \end{array} } \right]$$

where \(\alpha\) is the abduction–adduction angle (abduction is positive), \(\beta\) is the axial rotation angle (internal rotation is positive), and \(\gamma\) is the flexion–extension angle (flexion is positive). Joint translation was computed by determining the translation of the MC1 SCS origin (landmark M1TJ) with respect to the TRP SCS [22].

### Reproducibility and repeatability

Three raters (MTK, JJT, and TB) selected ALs on HR-pQCT bone masks to evaluate the reproducibility of the processing pipeline. One rater (MTK) selected ALs in three repeated trials on all images to evaluate repeatability. Each rater was provided with a document outlining the locations of each AL. The document described each AL, showing the surface on which to place the AL and examples of AL placement on one specimen. Each rater’s ALs were transformed to the dynamic CT image space to compute joint angles and translations and compare results between raters.

### Image registration accuracy

#### Experimental setup

As the post-processing pipeline used to quantify joint angles relied on intensity-based image registration, we estimated the accuracy of the image registration by computing target registration errors (TRE). Three fiducial markers (borosilicate beads, 4.76 mm diameter) were implanted into the MC1 bone of one specimen. An incision along the anatomical snuffbox was made and fiducial markers were implanted by drilling holes into the bone and gluing beads into place.

#### Target registration error

The 3D rigid transformation between image spaces defined by aligning the centroids of the fiducial markers was considered as the gold-standard transformation (\(T_{GS}\)). Fiducial markers were binarized manually using ITK-SNAP (v3.8.0) [23] and centroids of each fiducial marker in each image space were computed. Then, the TRE is defined as the difference between \(T_{GS}\) and the transformation resulting from the intensity-based registration (\(T_{IR}\)), in a least squares sense. This calculation was performed over all \(n\) voxels (\(v_{i}\)) of the moving image (Eq. 1).

$$TRE^{2} = \mathop \sum \limits_{i = 0}^{n} \left| {T_{GS} \left( {v_{i} } \right) - T_{IR} \left( {v_{i} } \right)} \right|^{2}$$

(1)

The accuracy of the TRE is limited by the accuracy of the gold-standard transformation. To estimate the error associated with the gold-standard transformation, the fiducial registration error (\(FRE\)) was first calculated using three manually selected landmarks on the bony geometry, referred to as targets. The root mean square (RMS) difference between the centroids of these targets and the fiducial markers provides an estimate of the *FRE* (Eq. 2), which is used to estimate the fiducial localization error (\(FLE\)) (Eq. 3) [24]. Finally, an estimate of the TRE for the \(T_{GS}\) is calculated using the principal axes (PA) of the fiducial marker distribution (Eq. 4).

$$FRE^{2} = \sqrt {\frac{1}{{n_{f} }}\mathop \sum \limits_{i = 0}^{{n_{f} }} \left( {c_{i} - \widehat{{c_{i} }}} \right)^{2} }$$

(2)

$$FLE = \sqrt {\frac{{n_{f} }}{{n_{f} - 2}}} FRE$$

(3)

$$TRE^{2} \left( p \right) \approx \frac{{FLE^{2} }}{{n_{f} }}\left( {1 + \frac{1}{3}\mathop \sum \limits_{i = 1}^{3} \frac{{d_{i}^{2} }}{{f_{i}^{2} }}} \right)$$

(4)

where \(n_{f}\) is the number of fiducial markers, \(c_{i}\) is the centroid of each fiducial marker, \(\widehat{{c_{i} }}\) is the centroid of the target, \(p\) is the target location, \(d_{i}\) is the distance from the centroid of the target to the PA, and \(f_{i}\) is the RMS distance from each fiducial marker’s centroid to the PA.

### Statistical analysis

All statistical analyses were performed using R (v.4.1.1) [25] and SPSS (v.28.0.0.0) [26]. Inter- and intra-rater reliability coefficients (ICC), Bland–Altman analysis, and frame-by-frame RMS error (RMSE) of joint angles between raters were calculated to evaluate reproducibility and repeatability. Inter-rater ICC was modelled as a two-way, random effects, absolute agreement, single measurement model. Intra-rater ICC was modelled as a two-way, mixed effects, absolute agreement, single measurement model. Agreement between and within raters was interpreted as follows: excellent agreement (ICC ≥ 0.9), good agreement (0.75 ≥ ICC > 0.9), moderate agreement (0.5 ≥ ICC > 0.75), and poor agreement (ICC < 0.5) [27]. Bland–Altman analysis was performed by comparing each rater’s angle results to the mean angles between all raters. A linear regression of each rater’s Bland–Altman results was used to evaluate the slope of each rater’s angles compared to the mean. As a secondary analysis, frame-by-frame RMSE of joint translations were calculated for each spatial plane.

To evaluate the error in SCS definition between raters, the orientation difference between SCS axes was calculated between each pair of raters. First, the dot product between corresponding SCS axes was computed (*e.g.*, \(X_{SCS\_1} \cdot X_{SCS\_2}\), \(X_{SCS\_1} \cdot X_{SCS\_3}\), etc.) in the HR-pQCT image space and again in each of the 60 dynamic CT frames. Then, for each SCS axis and for each pair of raters, the RMSE between the HR-pQCT SCS orientation difference and each dynamic CT SCS orientation difference was computed, resulting in 60 RMSE values. This process was then repeated for each specimen.