Harr Image Compression
Harr Image Compression
Close
Quit
Digitalize the information
Treat the digit
Linear Algebra is good
Compression–helps us . . .
The pictures
Home Page
Title Page
Figure 1:
JJ II
2. Treat the digit
J I
There is a method for transforming a string of data. It is called averaging and differencing. For example,
consider a 8×8 matrix A extracted from a matrix P that we are going to treat. P is the matrix presented
mathematical for a picture. By using MATLAB, such as, Page 2 of 16
A=floor(64*rand(8))
Go Back
pcolor(A)
colormap(gray(64))
Full Screen
Close
Quit
we can easily form a 8 × 8 matrix A,
60 52 59 8 28 53 19 24
14 28 58 12 59 1 12 55
38 39 26 12 29 43 12 54
31 50 57 38 26 24 43 37
A= 57
58 3 17 54 53 19 31
Digitalize the information
48 47 22 12 33 32 34 57
Treat the digit
29 11 52 0 12 45 9 52
Linear Algebra is good
1 25 0 47 43 27 44 41
Compression–helps us . . .
Figure 2 stands for this matrix. The pictures
8 Home Page
7
Title Page
6
JJ II
5
J I
4
Page 3 of 16
3
2 Go Back
1 Full Screen
1 2 3 4 5 6 7 8
Figure 2: Close
That is our original data. Extract the first row of A, and name it A∗ .
Quit
A∗ = 60 52 59 8 28 53 19 24
We can think of it as four pairs of numbers. They are 60 and 52, 59 and 8, 28 and 53, and 19 and 24.
The second step is to average each pair and put them into the first four entries of a row E that has
the same size as A∗ . Let B be the first four entries of E, that is,
B = (60 + 52)/2 (59 + 8)/2 (28 + 53)/2 (19 + 24)/2 = 56 33.5 40.5 21.5
Now, by extracting the first number of each pair from A∗ , we form a row C, which is, Digitalize the information
Treat the digit
C = 60 59 28 19
Linear Algebra is good
Let D be D = C − B, and put D into the last four entries of E, to obtain, E = [B, D], which is, Compression–helps us . . .
The pictures
E = 56 33.5 40.5 21.5 4 25.5 −12.5 −2.5
Home Page
Apply the same method to B, to obtain a row F, which is,
F = 44.75 31 11.25 9.5 Title Page
Replace the first four entries of E by the entries in F, to obtain new row E,
JJ II
E = 44.75 31 11.25 9.5 4 25.5 −12.5 −2.5
The numbers we obtain from the subtraction are called detail coefficients.(We will discuss the detail
coefficient in section 4.) By summarizing each step, we have Go Back
60 52 59 8 28 53 19 24
56 33.5 40.5 21.5 4 25.5 -12.5 -2.5 Full Screen
Clearly, the process can be generalized to strings of any length: strings of length 2k require k steps
Quit
of averaging and differencing. We treat each row of the matrix, to obtain a totally different matrix,
37.88 6.88 11.25 9.50 4.00 25.50 −12.50 −2.50
29.88 −1.88 −7.00 −1.75 −7.00 23.00 29.00 −21.50
31.63 −2.88 9.75 1.50 −0.50 7.00 −7.00 −21.00
38.25
5.75 −3.50 −7.50 −9.50 9.50 1.00 3.00
36.50 −2.75 23.75 14.25 −0.50 −7.00 0.50 −6.00
Digitalize the information
35.63 −3.38 15.25 −6.50 0.50 5.00 0.50 −11.50
Treat the digit
26.25 −3.25 −3.00 −1.00 9.00 26.00 −16.50 −21.50
Linear Algebra is good
28.50 −10.25 −5.25 −3.75 −12.00 −23.50 8.00 1.50
Compression–helps us . . .
Not only this, we also treat each column of the matrix the same manner after we treated each row. Let The pictures
us call this semifinal matrix T, whose rows and columns have be treated.
Home Page
33.06 −1.47 5.16 0.59 −2.00 8.19 0.38 −9.94
1.34
3.44 −2.53 −0.16 −1.25 8.06 2.25 −0.56
−0.53 0.53 −0.50 3.44 1.75 8.00 5.63 −1.50 Title Page
4.34 1.84 11.81 3.13 0.75 −1.13 2.38 0.63
T =
4.00
4.38 9.13 5.63 5.50 1.25 −20.75 9.50 JJ II
−3.31 −4.31 6.63 4.50 4.50 −1.25 −4.00 −12.00
0.44 0.31 4.25 10.38 −0.50 −6.00 0.00 2.75
−1.13 3.50 1.13 1.38 10.50 24.75 −12.25 −11.50 J I
We call this procedure wavelet transform. The point of the wavelet transform is that regions of little
Page 5 of 16
variation in the original data manifest themselves as small or zero element in the wavelet transformed
version. We see that, comparing the original matrix and the last matrix, the data has became smaller.
We can use MATLAB to see what happened to the original picture. We have to download a program Go Back
called halfinmat and halfwavmat to create w.
w=halfwavmat Full Screen
T=w’*A*w
pcolor(T)
Close
colormap(gray(64))
Quit
8
6
Digitalize the information
5
Treat the digit
Linear Algebra is good
4
Compression–helps us . . .
The pictures
3
2 Home Page
1 Title Page
1 2 3 4 5 6 7 8
Figure 3: JJ II
Since the data has become smaller, it is easy for a PC to transform and store the information. In J I
addition, the most important thing is that the treated information is reversible. To explain this reversing
process, we need linear algebra.
Page 6 of 16
According to the matrix multiplication rule, multiplying a matrix on the right, think column operation
[1]. To obtain B (refers to section 2), we need to average each pair and put them into the first four Digitalize the information
entries of a row E that has the same size of A∗ . To obtain the first column of S1 , s1 , average the first Treat the digit
two numbers of A and zeros out the rest of the numbers.The result is, Linear Algebra is good
Compression–helps us . . .
1/2
1/2 The pictures
0
0 Home Page
s1 =
0
0
Title Page
0
0
JJ II
Do the same for the second column of S1 , s2 . This averages the second pair numbers and zeros out the
rest of the numbers, so the result is,
0 J I
0
1/2 Page 7 of 16
1/2
s2 =
0
Go Back
0
0
0 Full Screen
The pictures
1/2 0 0 0 1/2 0 0 0
1/2 0 0 0 −1/2 0 0 0
0
Home Page
1/2 0 0 0 1/2 0 0
0 1/2 0 0 0 −1/2 0 0
S1 =
0 0 1/2 0 0 0 1/2 0
Title Page
0
0 1/2 0 0 0 −1/2 0
0 0 0 1/2 0 0 0 1/2
JJ II
0 0 0 1/2 0 0 0 −1/2
0 0 0 0 0 0 0 1
and, for the third step, S3 should be,
1/2 1/2 0 0 0 0 0 0
1/2 −1/2 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
S3 = 0
0 0 0 1 0 0 0 Digitalize the information
0 0 0 0 0 1 0 0
Treat the digit
0 0 0 0 0 0 1 0
Linear Algebra is good
0 0 0 0 0 0 0 1
Compression–helps us . . .
Note that, firstly, the columns have 1 keeps the detail coefficients; secondly, each column is or- The pictures
thogonal. Recall that, if q1 , q2 , · · · , qk is an orthogonal collection of nonzero vectors, then they are
independent. Since the columns of the S’s are evidently orthogonal to each other with respect to the Home Page
standard dot product, each of these matrices is invertible. Recall that, A∗ is the first row extract from
matrix A. Therefore, we have this matrix T, which is obtained by from treating only the rows of A,
Title Page
T = AS1 S2 S3
JJ II
Since S’s are invertible, we have,
A= T S3−1 S2−1 S3−1
J I
That means the treated information is reversible. Furthermore, we treat the columns as the same as
the rows of matrix P. Then we will obtain a matrix T which has been averaged and diferenced through
rows to columns (we will see the equations at section 4). Page 9 of 16
However, if we a have huge amount information to treat, we have to have many S’s to deal with
them. Finding the inverse of S’s is easy by using MATLAB, but it will take quite a lot of memory and Go Back
time. Remember that orthonormal is good[2]. If we can turn each column into orthonormal, we will
save a lot of time and memory. Recall that, with an orthogonal matrix, Q, QT = Q−1 . That means
we don’t have to find the inverse of each S’s, if they are orthonormal, and taking the transpose of the Full Screen
√ 0
S’s is enough. If we exchange the ±1/20 s into ±1/ 2 s, we are done. We have found the orthonormal
columns. We call this process normalization modification. Most pictures you will see in the paper are Close
treated by normalization modification method.
Quit
4. Compression–helps us to transform easier
Consider the row vector we discussed above
A = 60 52 59 8 28 53 19 24
JJ II
J I
Page 10 of 16
Go Back
Full Screen
Close
Figure 4: Quit
compressed image
Home Page
Title Page
Figure 5: JJ II
The first one is the original picture, and the second one has been compressed. The definition of
J I
wavelet compression is, fix a nonnegative threshold value , and decree that any detail coefficient in the
wavelet transformed data whose magnitude is less than or equal to will be reset to zero, then rebuild
an approximation of the original data using this doctored version of the wavelet transformed data [3]. Page 11 of 16
The threshold for the second picture is 1. Even though we reset the numbers (they are less than or equal
zero) to be zero, which means we lost the original data, the picture is still good. That is because we
Go Back
set an appropriate threshold to zero the lower coefficient out. If we go back to section 2 and section 3,
we find the average of a pair of numbers, then subtract the average from the first number of that pair.
The result is the detail coefficient. That is, the low detail coefficient means that there is not much Full Screen
different in neighboring pixels, such as pure white gradually change to light yellow. Think about a pair
of numbers don’t have a big difference, then the coefficient will be very small. High differences mean
Close
that neighboring pixels jumped from light to dark, or vice verse. The larger the absolute value of the
detail coefficient, the higher the difference, and the shaper the changing of the color. For the previous
Quit
matrix T we mentioned,
33.06 −1.47 5.16 0.59 −2.00 8.19 0.38 −9.94
1.34
3.44 −2.53 −0.16 −1.25 8.06 2.25 −0.56
−0.53 0.53 −0.50 3.44 1.75 8.00 5.63 −1.50
4.34 1.84 11.81 3.13 0.75 −1.13 2.38 0.63
T =
4.00 4.38 9.13 5.63 5.50 1.25 −20.75 9.50 Digitalize the information
−3.31 −4.31 6.63 4.50 4.50 −1.25 −4.00 −12.00
Treat the digit
0.44 0.31 4.25 10.38 −0.50 −6.00 0.00 2.75
Linear Algebra is good
−1.13 3.50 1.13 1.38 10.50 24.75 −12.25 −11.50
Compression–helps us . . .
If we set the threshold to be 5, the matrix T will become a new matrix Tn . The MATLAB code is, The pictures
myT=T;
Home Page
k=find(abs(myT)<5);
myT(k)=0;
myT Title Page
A_n=inv(w’)*(myT)*inv(w)
pcolor(A_n)
colormap(gray(64)) JJ II
Quit
An is the matrix obtained from the reversing steps.
52.84 41.84 43.03 −5.47 23.56 53.81 27.00 27.88
23.59 34.59 61.28 12.78 53.81 1.06 19.25 58.13
44.84 44.84 29.53 13.03 27.44 38.69 11.13 55.00
31.59 31.59 42.78 26.28 27.44 38.69 35.13 31.00
An = 50.03
50.03 10.22 21.97 43.44 43.44 12.75 32.63 Digitalize the information
50.03 50.03 22.22 9.97 22.69 22.69 33.50 53.38
Treat the digit
36.91 15.91 64.59 14.84 20.81 45.31 11.63 54.50
Linear Algebra is good
15.91 36.91 15.09 64.34 45.31 20.81 34.63 31.50
Compression–helps us . . .
Compare Figure 6, the figure after compression, with Figure 1. The pictures
8 Home Page
7 Title Page
6
JJ II
5
J I
4
Page 13 of 16
3
Go Back
2
1 Full Screen
1 2 3 4 5 6 7 8
Figure 6: Close
Now we have new steps. First, we averaging and differencing (the orthogonal matrices are better) Quit
the whole matrix.
Second, we wavelet compress the whole matrix.
Third, we obtain the approximated picture by using the inverse of the S’s, or using the transposes
of the S’s (if the S’s are orthogonal matrices).
Here is the equation to summarize what we did.
S1 S2 S3 = W (1)
Digitalize the information
Treat the digit
T = ((AW )T W )T = W T AW (2)
Linear Algebra is good
Remember we are not only treat the rows, but also the columns. Compression–helps us . . .
The pictures
(W −1 )T T W −1 = A (3)
We should realize how important the role play by the orthonormal columns in here. It takes no effort Home Page
to take the inverse of W, if S’s are orthogonal.
If we approximated, or wavelet compressed the matrix, we just need to change the third equation’s Title Page
T into the matrix T ∗ we got after the compressed, and change matrix A into a approximation matrix
A∗ we will satisfy with.
JJ II
5. The pictures J I
Theory is still theory till we show the power of it.
Figure 7 is the original picture. Figure 8 is a picture has been treated by the normalization modifi- Page 14 of 16
cation method and the threshold is 1. We can simply download a program called project1 to have some
fun.
Go Back
Full Screen
Close
Quit
original image
Home Page
Title Page
Figure 7: JJ II
J I
Page 15 of 16
Go Back
Full Screen
Close
Quit
compressed image
Home Page
Title Page
Figure 8: JJ II
References J I
Full Screen
Close
Quit