## 3 Methodology and Algorithms
### Proposed Augmentation Framework via Kinematic Gesture Simulation
#### 3.2.2 Inverse Kinematics Solver for Hand Pose Reconstruction  
To reconstruct hand gestures that conform to biomechanical constraints from keypoint position data, this work introduces an inverse kinematics (IK) solver within a virtual environment. The objective is to infer joint rotations of each finger based on the spatial positions of the fingertips, enabling the digital hand model to produce anatomically plausible postures. In our system, the IK module takes the augmented keypoints transformed into the virtual coordinate system as input, and drives a 3D digital hand model as the target. Through iterative optimization, joint angles are computed to animate the skeleton and generate complete hand gestures. We employ the Finger Rig module from the Final IK plugin to construct an independent three-segment kinematic chain (MCP-PIP-DIP) for each finger. The inverse kinematics solving process, as detailed in Algorithm 2, is based on the Forward And Backward Reaching Inverse Kinematics (FABRIK) algorithm. FABRIK approximates the fingertip's spatial target through iterative forward and backward propagation steps. ```
0: Raw video sequence \(V\), pose estimator \(\mathcal{E}\), transformation module \(\mathcal{T}\), IK solver \(\mathcal{I}\), perturbation config \(\Theta=\{e_{xy},e_{z},\lambda_{IK}\}\), number of augmentations \(N\)
0: Augmented dataset \(\mathcal{D}_{aug}=\{(\vec{D}_{1},\mathcal{C}_{1}),...,(\vec{D}_{N},\mathcal{C }_{N})\}\)
1:\(K\leftarrow\mathcal{E}(V)\)\(\triangleright\) Extract 3D keypoints from raw video
2:\(K^{\prime}\leftarrow\mathcal{T}(K)\)\(\triangleright\) Transform to virtual space: normalization, filtering, re-alignment
3:\(S\leftarrow\mathcal{I}(K^{\prime})\)\(\triangleright\) Apply IK solver to reconstruct skeletal pose sequence
4: Initialize \(\mathcal{D}_{aug}\leftarrow\emptyset\)
5:for\(i=1\) to \(N\)do
6: Sample perturbation config \(\{e^{(i)}_{xy},e^{(i)}_{z},\lambda^{(i)}_{IK}\}\sim\Theta\)
7:\(S^{(i)}\leftarrow\mathcal{P}(S;e^{(i)}_{xy},e^{(i)}_{z},\lambda^{(i)}_{IK})\)\(\triangleright\) Apply spatial, depth, and kinematic variation
8:\(\vec{D}_{i}\leftarrow\) RenderAnimation(\(S^{(i)}\))
9:\(\mathcal{C}_{i}\leftarrow\) ExportCoordinates(\(S^{(i)}\))
10:\(\mathcal{D}_{aug}\leftarrow\mathcal{D}_{aug}\cup\{(\vec{D}_{i},\mathcal{C }_{i})\}\)
11:endfor
12:return\(\mathcal{D}_{aug}\)
```  
**Algorithm 1** IK-AUG: Inverse Kinematic-Augmented Gesture Synthesis Framework  
Specifically, in each iteration, the backward phase adjusts joint positions from the fingertip to the root (DIP \(\rightarrow\) PIP \(\rightarrow\) MCP), preserving fixed bone lengths while progressively moving the chain toward the desired configuration. The subsequent forward phase restores the root position (MCP) and propagates the joint updates outward, ensuring physical plausibility and spatial continuity. In cases where the target lies beyond the maximum reach of the chain, the solver enters an emergency stretch mode, aligning all segments linearly toward the unreachable target to preserve anatomical consistency. Finally, local joint rotations are derived from the resulting directional vectors and applied to the skeletal animation system to generate smooth and continuous hand gestures. This solver architecture effectively balances geometric constraints with real-time performance, providing fast convergence, numerical stability, and seamless integration into data-driven gesture synthesis pipelines. It is particularly well-suited for high-precision sign language reconstruction and target-controlled animation tasks. ```
0: Target position \(T\in\mathbb{R}^{3}\), joint positions \(\{J_{0},J_{1},J_{2}\}\) (MCP \(\rightarrow\) PIP \(\rightarrow\) DIP), segment lengths \(\{L_{0},L_{1}\}\), convergence threshold \(\varepsilon\)
0: Joint rotations \(\{\theta_{0},\theta_{1},\theta_{2}\}\)
1:if\(\|J_{0}-T\|>L_{0}+L_{1}\)then
2: // Target unreachable: fully extend finger
3: Direction \(\leftarrow\) normalize\((T-J_{0})\)
4:\(J_{1}\gets J_{0}+L_{0}\). Direction
5:\(J_{2}\gets J_{1}+L_{1}\).