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 = 0The 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: