Image compression via SVD

151 Views Asked by At

Let $A$ be an image of size $m \times n$. Its SVD is $A = U\Sigma V^T$. Equivalently, $$ A = \sum_{i=1}^n \sigma_i u_iv_i^T, $$ where $u_i$ and $v_i$ are the $i$-th column of $U$ and $V$, respectively and $\sigma_i$ is the $i$-th largest singular value of $A$.

When we compress this image $A$ using SVD, we typically need to store $\{\sigma_j, u_j, v_j\}_{j=1}^{k}$ for some $k < \min\{n,m\}$. Thus, we need memory to store $k(1+m+n)$ entries. However, the whole image has $mn$ entries. Hence, if $$ k > \frac{mn}{1+m+n}, $$ it seems to me that we do not compress the image, rather we are wasting our memory.

I am wondering if I misunderstood the concept of the image compression or it is typically the case where $k$ is extremely small.

Any comments/answers/suggestions will be very appreciated. Thanks.