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.
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.
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...