The goal of this project was to implement an image compression schemes using the Discrete Cosine Transform (used in the JPEG format), the Harr Wavelet Transform, and the Linear B-Spline Wavelet Transform. After transforming the images, the results were encoded with a simple minded lossy compression routine (which takes a quality parameter).
Below are some example images that I compressed using these schemes:

| Quality Parameter | DCT | Harr | Linear B-Spline |
|---|---|---|---|
| 16.0 | ![]() Size: 127,757 bytes, 48.7% of original | ![]() Size: 148,058 bytes, 56.5% of original | ![]() Size: 144,995 bytes, 55.3% of original |
| 8.0 | ![]() Size: 82,136 bytes, 31.3% of original | ![]() Size: 118,320 bytes, 45.1% of original | ![]() Size: 110,546 bytes, 42.2% of original |
| 4.0 | ![]() Size: 39,856 bytes, 15.2% of original | ![]() Size: 82,619 bytes, 31.5% of original | ![]() Size: 74,330 bytes, 28.4% of original |
| 2.0 | ![]() Size: 14,945 bytes, 5.7% of original | ![]() Size: 46,941 bytes, 17.9% of original | ![]() Size: 43,387 bytes, 16.6% of original |
| 1.0 | ![]() Size: 4,633 bytes, 1.7% of original | ![]() Size: 19,812 bytes, 7.6% of original | ![]() Size: 20,364 bytes, 7.8% of original |
| 0.5 | ![]() Size: 2,502 bytes, 0.9% of original | ![]() Size: 5,543 bytes, 2.1% of original | ![]() Size: 7,305 bytes, 2.8% of original |

| Size | DCT | Harr | Linear B-Spline |
|---|---|---|---|
| ~45800 bytes (69%) | ![]() RMS Error: 0.00774 | ![]() RMS Error: 0.00962 | ![]() RMS Error: 0.00740 |
| ~35300 bytes (54%) | ![]() RMS Error: 0.0114 | ![]() RMS Error: 0.0149 | ![]() RMS Error: 0.0102 |
| ~25700 bytes (39%) | ![]() RMS Error: 0.0172 | ![]() RMS Error: 0.0206 | ![]() RMS Error: 0.0147 |
| ~22800 bytes (35%) | ![]() RMS Error: 0.0196 | ![]() RMS Error: 0.0234 | ![]() RMS Error: 0.0161 |
| ~19900 bytes (30%) | ![]() RMS Error: 0.0234 | ![]() RMS Error: 0.0271 | ![]() RMS Error: 0.0197 |
| ~16400 bytes (25%) | ![]() RMS Error: 0.0272 | ![]() RMS Error: 0.0332 | ![]() RMS Error: 0.0230 |
| ~12300 bytes (19%) | ![]() RMS Error: 0.0351 | ![]() RMS Error: 0.0418 | ![]() RMS Error: 0.0308 |
| ~6600 bytes (10%) | ![]() RMS Error: 0.0526 | ![]() RMS Error: 0.0656 | ![]() RMS Error: 0.0450 |

| Size | DCT | Harr | Linear B-Spline |
|---|---|---|---|
| ~52800 bytes (81%) | ![]() RMS Error: 0.00789 | ![]() RMS Error: 0.00864 | ![]() RMS Error: 0.00730 |
| ~38700 bytes (59%) | ![]() RMS Error: 0.0125 | ![]() RMS Error: 0.0138 | ![]() RMS Error: 0.0115 |
| ~24600 bytes (38%) | ![]() RMS Error: 0.0190 | ![]() RMS Error: 0.0208 | ![]() RMS Error: 0.0166 |
| ~14500 bytes (22%) | ![]() RMS Error: 0.0252 | ![]() RMS Error: 0.0292 | ![]() RMS Error: 0.0218 |
| ~9000 bytes (14%) | ![]() RMS Error: 0.0315 | ![]() RMS Error: 0.0358 | ![]() RMS Error: 0.0264 |
| ~3900 bytes (6%) | ![]() RMS Error: 0.0413 | ![]() RMS Error: 0.0512 | ![]() RMS Error: 0.0352 |

| Size | DCT | Harr | Linear B-Spline |
|---|---|---|---|
| ~45300 bytes (69%) | ![]() RMS Error: 0.00737 | ![]() RMS Error: 0.00954 | ![]() RMS Error: 0.00665 |
| ~34000 bytes (52%) | ![]() RMS Error: 0.0119 | ![]() RMS Error: 0.0149 | ![]() RMS Error: 0.0107 |
| ~24000 bytes (37%) | ![]() RMS Error: 0.0177 | ![]() RMS Error: 0.0211 | ![]() RMS Error: 0.0155 |
| ~16100 bytes (25%) | ![]() RMS Error: 0.0241 | ![]() RMS Error: 0.0269 | ![]() RMS Error: 0.0210 |
| ~10900 bytes (17%) | ![]() RMS Error: 0.0296 | ![]() RMS Error: 0.0324 | ![]() RMS Error: 0.0268 |
| ~4900 bytes (7%) | ![]() RMS Error: 0.0398 | ![]() RMS Error: 0.0422 | ![]() RMS Error: 0.0373 |

| Size | DCT | Harr | Linear B-Spline |
|---|---|---|---|
| ~57000 bytes (87%) | ![]() RMS Error: 0.0166 | ![]() RMS Error: 0.0155 | ![]() RMS Error: 0.0168 |
| ~47200 bytes (72%) | ![]() RMS Error: 0.0278 | ![]() RMS Error: 0.0206 | ![]() RMS Error: 0.0216 |
| ~36500 bytes (56%) | ![]() RMS Error: 0.0434 | ![]() RMS Error: 0.0335 | ![]() RMS Error: 0.0298 |
| ~26800 bytes (41%) | ![]() RMS Error: 0.0969(??) | ![]() RMS Error: 0.0450 | ![]() RMS Error: 0.0388 |
| ~12800 bytes (20%) | ![]() RMS Error: 0.0749 | ![]() RMS Error: 0.0705 | ![]() RMS Error: 0.0622 |
| ~4400 bytes (7%) | ![]() RMS Error: 0.0942 | ![]() RMS Error: 0.1026 | ![]() RMS Error: 0.0908 |
Last Modified: Saturday, February 10, 2001
Chris Wyman (wyman@cs.utah.edu)