Compressing images with SVD
In the previous recipe, we demonstrated how to factorize a matrix with SVD and then reconstruct the dataset by multiplying the decomposed matrix. Furthermore, the application of matrix factorization can be applied to image compression. In this recipe, we will demonstrate how to perform SVD on the classic image processing material, Lenna.
Getting ready
In this recipe, you should download the image of Lenna beforehand (refer to http://www.ece.rice.edu/~wakin/images/lena512.bmp for this), or you can prepare an image of your own to see how image compression works.
How to do it...
Perform the following steps to compress an image with SVD:
- First, install and load
bmp
:
> install.packages("bmp")> library(bmp)
- You can then read the image of Lenna as a numeric matrix with the
read.bmp
function. When the reader downloads the image, the default name islena512.bmp
:
> lenna = read.bmp("lena512.bmp")
- Rotate and plot the image:
> lenna = t(lenna)[,nrow(lenna...