-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
28 lines (26 loc) · 925 Bytes
/
main.py
File metadata and controls
28 lines (26 loc) · 925 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import numpy
import PIL.Image
import sys
import huffman
import matrix
if (len(sys.argv) < 2):
print "Usage: " + sys.argv[0] + " [Image File]"
exit(-1)
m = numpy.asmatrix(PIL.Image.open(sys.argv[1]))
print "Estimating Huffman Size ... "
size_before = huffman.estimate(m.A1)/8 + 1
print "Estimated Huffman Size:", \
size_before, "bytes"
print "Transforming matrix ..."
transformed_m = matrix.dct(m)
print "Done. Estimating Transformed Huffman Size ..."
size_after = huffman.estimate(transformed_m.A1)/8 + 1
print "Estimated Transformed Huffman Size:", \
size_after, "bytes"
print "Compression ratio:", float(size_after)/float(size_before)
print "Inverting Transformation ..."
untransformed_m = matrix.inverse_dct(transformed_m)
if numpy.array_equal(untransformed_m, m):
print "Inverted transformation equals original matrix"
else:
print "Error. Inverted transformation does not equal original matrix"