Main Page | Report this Page
 
   
Science Forum Index  »  Compression Forum  »  DCT of an 8x8 matrix?
Page 1 of 1    
Author Message
James Sumners
Posted: Sun Apr 27, 2008 2:09 pm
Guest
I'm trying to apply the DCT as described in [1], but it isn't working
well.* Please take a look at my Maple worksheet in [2] (it is an HTML
export). I would greatly appreciate a pointer as to what I could be
doing wrong. As far as I can tell I am implementing the FDCT correctly.


Thank you,
James Sumners

[1] -- http://www.ijg.org/files/wallace.ps.gz
[2] -- http://student.claytonstate.net/~jsumners/DCT/index.html

* Actually, I'm not shifting the unsigned integers to signed. But I
still shouldn't be getting the result I am getting I don't believe.
Thomas Richter
Posted: Sun Apr 27, 2008 3:40 pm
Guest
James Sumners wrote:
Quote:
I'm trying to apply the DCT as described in [1], but it isn't working
well.* Please take a look at my Maple worksheet in [2] (it is an HTML
export). I would greatly appreciate a pointer as to what I could be
doing wrong. As far as I can tell I am implementing the FDCT correctly.

You need to make your term you're summing in the definition of the DCT
of course dependent on x and y. Otherwise, you of course only get the
constant term. That is, there should be an

A[x,y]

somewhere in your formula.

Hints:

a) This is a maple problem, and off-topic here.
b) I'm pretty sure maple offers a package containing the DCT readily
implemented. It's usually not a good idea to re-invent the wheel.
Specifically, the maple implementation might be faster and more general
than yours.

So long,
Thomas
James Sumners
Posted: Sun Apr 27, 2008 7:25 pm
Guest
On 2008-04-27 16:40:01 -0400, Thomas Richter <thor@math.tu-berlin.de> said:

Quote:
James Sumners wrote:
I'm trying to apply the DCT as described in [1], but it isn't working
well.* Please take a look at my Maple worksheet in [2] (it is an HTML
export). I would greatly appreciate a pointer as to what I could be
doing wrong. As far as I can tell I am implementing the FDCT correctly.

You need to make your term you're summing in the definition of the DCT
of course dependent on x and y. Otherwise, you of course only get the
constant term. That is, there should be an

A[x,y]

somewhere in your formula.

Hints:

a) This is a maple problem, and off-topic here.
b) I'm pretty sure maple offers a package containing the DCT readily
implemented. It's usually not a good idea to re-invent the wheel.
Specifically, the maple implementation might be faster and more general
than yours.

So long,
Thomas

I asked here because I know there folks such as yourself who are quite
familiar with this specific transform, and I am using it in the context
of compressing an image with JPEG. So I felt it was at least
tangentially on topic. I'm not asking for Maple help; I'm asking for
help with the transform that is the basis of the JPEG compression
scheme.

In regard to the A[x,y]. The 'z' in the inner sum is the 'f(x,y)' from
Wallace's paper. I copied the double summation directly from that
paper. As I understand it, if a grayscale image is represented by a 8x8
matrix of integer color values, then f(x,y) is the integer at the [x,y]
position of the matrix. Is this not correct?

If Maple offers a DCT package then it isn't included in my student
installation. The closest thing I can find in the help file is a DFT.
Thomas Richter
Posted: Mon Apr 28, 2008 6:02 am
Guest
James Sumners wrote:
Quote:
On 2008-04-27 16:40:01 -0400, Thomas Richter <thor@math.tu-berlin.de> said:

James Sumners wrote:
I'm trying to apply the DCT as described in [1], but it isn't working
well.* Please take a look at my Maple worksheet in [2] (it is an HTML
export). I would greatly appreciate a pointer as to what I could be
doing wrong. As far as I can tell I am implementing the FDCT correctly.

You need to make your term you're summing in the definition of the DCT
of course dependent on x and y. Otherwise, you of course only get the
constant term. That is, there should be an

A[x,y]

somewhere in your formula.

Hints:

a) This is a maple problem, and off-topic here.
b) I'm pretty sure maple offers a package containing the DCT readily
implemented. It's usually not a good idea to re-invent the wheel.
Specifically, the maple implementation might be faster and more
general than yours.

So long,
Thomas

I asked here because I know there folks such as yourself who are quite
familiar with this specific transform, and I am using it in the context
of compressing an image with JPEG. So I felt it was at least
tangentially on topic. I'm not asking for Maple help; I'm asking for
help with the transform that is the basis of the JPEG compression scheme.

The formula is correct, the implementation is not.

Quote:
In regard to the A[x,y]. The 'z' in the inner sum is the 'f(x,y)' from
Wallace's paper. I copied the double summation directly from that paper.

Nope. You wrote "z", the paper wrote "f(x,y)". Z might be a number, or a
matrix, or anything else that can be multiplied or summed over, but it's
at least *not* the *component* (x,y) of a matrix Z, as z, as you wrote
it, does not depend on x and y, i.e. it's always the same number, or
matrix, independent of x and y, which is kind of pointless. For that,
you should write z[x,y]. Your code furthermore substitutes A[i,j] for z,
which is different from A[x,y] since i and j do not depend on the
summation indices x and y in the DCT transformation.

Quote:
As I understand it, if a grayscale image is represented by a 8x8 matrix
of integer color values, then f(x,y) is the integer at the [x,y]
position of the matrix. Is this not correct?

This is correct, but that's not reflected in your code. (-:

As said, it's *not* a math problem. It's a problem with "how to program
maple".

Quote:
If Maple offers a DCT package then it isn't included in my student
installation. The closest thing I can find in the help file is a DFT.

Close enough. DCT and DFT are closely related. The DFT is likely a
one-dimensional transformation, the DCT is more or less the real part of
it, and you need to extend this to two dimensions by taking the tensor
product of the transform with itself (or rather, less technically, you
first transform in one direction, then into the second).

So long,
Thomas
James Sumners
Posted: Mon Apr 28, 2008 10:28 am
Guest
On 2008-04-28 07:02:22 -0400, Thomas Richter <thor@math.tu-berlin.de> said:

Quote:
James Sumners wrote:
On 2008-04-27 16:40:01 -0400, Thomas Richter <thor@math.tu-berlin.de> said:

James Sumners wrote:
I'm trying to apply the DCT as described in [1], but it isn't working
well.* Please take a look at my Maple worksheet in [2] (it is an HTML
export). I would greatly appreciate a pointer as to what I could be
doing wrong. As far as I can tell I am implementing the FDCT correctly.

You need to make your term you're summing in the definition of the DCT
of course dependent on x and y. Otherwise, you of course only get the
constant term. That is, there should be an

A[x,y]

somewhere in your formula.

Hints:

a) This is a maple problem, and off-topic here.
b) I'm pretty sure maple offers a package containing the DCT readily
implemented. It's usually not a good idea to re-invent the wheel.
Specifically, the maple implementation might be faster and more general
than yours.

So long,
Thomas

I asked here because I know there folks such as yourself who are quite
familiar with this specific transform, and I am using it in the context
of compressing an image with JPEG. So I felt it was at least
tangentially on topic. I'm not asking for Maple help; I'm asking for
help with the transform that is the basis of the JPEG compression
scheme.

The formula is correct, the implementation is not.

In regard to the A[x,y]. The 'z' in the inner sum is the 'f(x,y)' from
Wallace's paper. I copied the double summation directly from that paper.

Nope. You wrote "z", the paper wrote "f(x,y)". Z might be a number, or
a matrix, or anything else that can be multiplied or summed over, but
it's at least *not* the *component* (x,y) of a matrix Z, as z, as you
wrote it, does not depend on x and y, i.e. it's always the same number,
or matrix, independent of x and y, which is kind of pointless. For
that, you should write z[x,y]. Your code furthermore substitutes A[i,j]
for z, which is different from A[x,y] since i and j do not depend on
the summation indices x and y in the DCT transformation.

Oh, okay. I understand now. I've made the correction and am coming up
with much better results. Thank you.

Quote:

As I understand it, if a grayscale image is represented by a 8x8 matrix
of integer color values, then f(x,y) is the integer at the [x,y]
position of the matrix. Is this not correct?

This is correct, but that's not reflected in your code. (-:

As said, it's *not* a math problem. It's a problem with "how to program maple".

Well, it kind was a math problem because I wasn't understanding the
formula quite well enough. But I see your point.

Thank you again for your help.
 
Page 1 of 1       All times are GMT - 5 Hours
The time now is Mon Sep 08, 2008 6:11 am