This is an implementation of image compression in Java using the singular value decomposition. Basically, the idea is to take a very high-dimensional (high-rank) source image and approximate it by a much lower-dimensional (low-rank) image. So the higher dimensions are considered noise, roughly speaking. It's somewhat impressive that you can take this sort of 450-dimensional object, project it down into thirteen dimensions (second from the bottom), and still have something vaguely recognizable. Watch the animation!
Rank: 450
Storage: 135,000
Compression: 1:1
Rank: 300
Storage: 270,300
Compression: 0.499:1
Rank: 120
Storage: 108,120
Compression: 1.25:1
Rank: 56
Storage: 50,456
Compression: 2.68:1
Rank: 25
Storage: 22,525
Compression: 5.99:1
Rank: 13
Storage: 11,713
Compression: 11.5:1
Rank: 6
Attachment | Size |
---|---|
![]() | 5.95 KB |