# Why does image compression via SVD work?

I loaded a 256x256 greyscale image as an array, A. Then I Singular Value Decomposed it: $$A = U \Sigma V^T$$ Next I set all singular values except the 64 first to 0. Then I multiplied together the SVD matrices again. The result was a pretty good low rank approximation to the original image.

Should I have subtracted the average of each column from each column?

But why does this work? In the case of PCA this approach makes sense to me: each column represents a variable and the row represents observations of the variables. Therefore if the columns are zero centered; $$A^TA$$ becomes the Covariance matrix. Taking SVD we then find orthogonal linear combinations of variables (the right singular values) with the most variation along the first linear combination and the least variation along the last linear combination.

To me it seems that I am looking for linear dependence among column vectors and then changing basis to "eigencolumns"?

In that case the results should be different if I transposed the image before SVD and then transposed after multiplying together?