Stephen Dunn's Homepage

Singular Value Decomposition

I'm working on an image processing software that uses linear algebra, signal processing, and artificial intelligence to allow users to perform interesting searches, categorizations, and transformations on an input image library. Below is a demonstration of a particular form of compression using the concept of the Singular Value Decomposition (SVD):




Download Video: mp4

Download GIF: gif



The SVD essentially treats the image as an enormous polynomial equation whose first solution is already known, i.e. the provided pixel values interpreted loosely as

Ax + Bx² + Cx³ + … + k = 0
The problem is identify the coefficients
A, B, C, … 
to be used for the formula to resolve.

Thankfully, we don't need to do that by hand. Linear algebra libraries are much more efficient at solving this, which is fundamentally an

O(x³)
algorithm to solve. The bigger the images, the longer it takes (much longer). If we plot the "solution", or singular values of the decomposition for the initial image in the video, it takes a typical SVD-like curve from "most" to "least" important in affecting the equation's outcome and thus the image:



Download Singular Values: csv