#using Pkg #Pkg.add("Images") #Pkg.add("ImageMagick") using Images using LinearAlgebra img = load("./duck.jpg"); display(img) display(Gray.(img)) # convert to a matrix A=float64.(channelview(Gray.(img[:,:]))) println("size of A = ", size(A,1)," x ", size(A,2)) println("storage = ", size(A,1) * size(A,2)) A U, S, V = svd(A) # check the accuracy of SVD print("||USV'-A||=", norm(U*diagm(S)*V' - A)) rank_list = [1,5,10,20,30,40] for rank in rank_list Acompress = U[:,1:rank] * diagm(S[1:rank]) * V[:,1:rank]' println("Compression rank = ", rank) println("Storage = ", (size(A,1)+size(A,2))*rank) flush(stdout) display(Gray.(Acompress)) end using PyPlot plot(S, "b-.") title("singular values, linear-scale") semilogy(S, "b-.") title("singular values, log-scale")