learning step can be achieved by retaining only the top $r$ DCT coefficients, resulting in an $r \times n$ matrix $\mathbf{W}_r$. This results in a low-rank approximation of the error matrix, denoted as $\hat{\mathbf{E}} = \mathbf{W}_r \mathbf{E}$. Substituting $\hat{\mathbf{E}}$ into (\[eq:jd\_learning\]), the LP can be computed as $$\mathbf{A} = \mathbf{P} \hat{\mathbf{E}}_r (\hat{\mathbf{E}}_r \hat{\mathbf{E}}_r^{T})^{-1} \mathbf{W}_r,$$ where the matrix to be inverted is of size $r \times r$.

#### Re-formulation

Instead of learning the LP using (\[eq:jd\_solve\]), the pseudo-inverse of the warp matrix $\mathbf{P}$ is used in (\[eq:jd\_learning\]), resulting in $$\mathbf{I}_{6 \times 6} = \mathbf{A} \mathbf{E} \mathbf{P}^T (\mathbf{P} \mathbf{P}^T)^{-1}.$$ Now, if we denote $\mathbf{I}_{6\times 6}= \mathbf{A} \mathbf{D}$, where $\mathbf{D} = \mathbf{E} \mathbf{P^T} (\mathbf{P} \mathbf{P}^T)^{-1}$, we can compute the LP as $$\mathbf{A} = (\mathbf{D}^T \mathbf{D})^{-1} \mathbf{D}^T.$$ Although two matrix inversions have to be performed, both matrices are only of the size $6\times 6$.

#### Hybrid method

This approach combines the two methods described above. Firstly, recall that the matrix $\mathbf{D}$ is defined as $\mathbf{D} = \mathbf{E} \mathbf{P^T} (\mathbf{P} \mathbf{P}^T)^{-1}$. If we use the low-rank approximation of the error matrix $\hat{\mathbf{E}}_r$ in the matrix $\mathbf{D}$, we end up with a dimensionally reduced version of $\mathbf{D}$, denoted as $\hat{\mathbf{D}} = \mathbf{W}_r^{-1} \hat{\mathbf{E}}_r \mathbf{P}^T (\mathbf{P} \mathbf{P}^T)^{-1}$. 