## 3 Methods and Materials
### Image Processing Backend  
The network input can be any type of sensor that captures RGB information, e.g., webcam, phone, camera, etc. Each of the video frames is then extracted at the desired frame rate, and the resulting frame is then sent to the estimator, where its processing is performed to extract the object's joint orientation. To playback a video containing the estimated subject posture, firstly we need to preprocess each of the frames by first evaluating the object skeleton in our network; this gives us the estimated object joint positions in 3D space from a flat RGB image. After the joint locations for the poses are estimated, they need to be  
Figure 3: Inverse kinematics of a skeleton, resulting output is Euler angles. contracted into an excessive joint model by omitting such features as fingers for better and faster estimation, as these features do not add any important information for the task. Once the joints are selected, an IK neural network is used to estimate the orientations of the joints so that they could be bound to the skeletal mesh. Our approach stores the skeleton's posture as a single multidimensional vector representing the root's 3D global translation. The process is then completed by combining the stacking local joint rotations of each bone (along with the root), which are expressed as 3D angle-axis vectors derived by multiplying the axis of rotation by the angle of rotation in rads. The variable that is optimized is this parameter vector, with the root movement and joint rotations extracted and used in the calculations as needed. Extracted object joints are then bound onto a selected body mesh and saved; the process is repeated for all videos. Once the video is processed, it can be played back and interacted with in 3D space, allowing for the expert to change the camera location to the desired position and to observe the performed action from multiple angles. This entire process is illustrated in the sequence diagram displayed in Figure 4.  
Due to the nature of rehabilitation-exercise data, our technique also required variable-length processing. In contrast to generalized computer-vision applications that use sequential data (action/motion categorization in general), rehabilitation-kinestherapy data show considerable changes within variable-length data. One prominent explanation might be that exercise performers are a broad group of people, ranging from experienced therapists to patients with various disorders and problems. Furthermore, rehabilitation data can be obtained in confined lab/gymnasium settings, indoor/outdoor settings, and home settings. In addition, rehabilitation activities may require a different number of repetitions depending on the therapist's prescription. As a result, individuals direct varying amounts of time to the same exercise with much the same number of iterations. A simple spatio-temporal approach allows us to take the average or maximum response for a predefined window size while maintaining the time scale and without losing some subtle features, all while keeping the main model for predicting correctness score. Sequential dependencies are represented in the spatiotemporal feature vectors in the processing back-end. It allows us to extract the discriminative traits that have been collected over time. This little information is critical in predicting an exercise's accuracy score. Dense trajectories have been shown to be useful in recognition of human actions [81]. They represent a person's walking patterns and can be easily computed straight from sensor data; we utilized them to compute skeletal joint characteristics. To calculate trajectories, we choose a group of dense points from a frame and track them in consecutive frames. In a dense optical-flow field, tracking is performed using displacement information. In frame \(t+1\), each picked point \(P_{t}=(x_{t},y_{t})\) in frame at time \(t\) is tracked. A trajectory is formed by  
Figure 4: Estimation of a skeleton joint orientation. the concatenation of these tracked sites into successive frames.