3
$\begingroup$

I need to plot the relative error vs compression ratio diagram of a discrete wavelet transform on an image, but no luck so far .. Here's the problem in short:

  1. random_image.jpg
  2. compress the image
  3. plot the relative error vs compression ratio diagram

Here's the code and below is the link I am using as a reference:

cumulativeEnergy[data_] := 
 Module[{c = Sort[Flatten[data]^2, Greater]}, Accumulate[c]/Total[c]]

data = (* insert random image*)

wtdata = DiscreteWaveletTransform[data]

wtE = cumulativeEnergy[Last /@ wtdata[Automatic]];

ListLinePlot[Sqrt[1 - wtE]]

The problem is I don't get a curve like in the example..

Tutorial used as a reference

Thank you !

$\endgroup$
1
  • $\begingroup$ What do you get? $\endgroup$
    – Jagra
    Feb 8, 2013 at 3:10

1 Answer 1

11
$\begingroup$

In the old Mathematica wavelet explorer, the one used in the tutorial, coefficients were arranged in decreasing order of energy. You can see that from the following line from the tutorial,

In[8]:= Dimensions /@ wtdata
Out[8]= {{32,32},{3,32,32},{3,64,64}....}

In the new Mathematica 8 wavelets the coefficients are arranged in increasing order of energy as seen from the following example.

 In[1]:= data=ExampleData[{"TestImage","Boat"}];

 In[2]:= wtdata=DiscreteWaveletTransform[data]
Out[2]= DiscreteWaveletData[<<DWT>>,<9>,{512,512}]

 In[3]:= wpdata=DiscreteWaveletPacketTransform[data]
Out[3]= DiscreteWaveletData[<<DWPT>>,<4>,{512,512}]

 In[4]:= wtdata["Dimensions"]
Out[4]= {{0}->{1,256,256},{1}->{1,256,256},{2}->{1,256,256},{3}->{1,256,256},{0,0}->{1,128,128},{0,1}->{1,128,128},{0,2}->{1,128,128},{0,3}->{1,128,128},{0,0,0}->{1,64,64},{0,0,1}->{1,64,64},...

All you need to do is reverse the order of the coefficients,

In[5]:= wtE = Reverse@cumulativeEnergy[wtdata[Automatic, "Values"]];
In[6]:= wtP = Reverse@cumulativeEnergy[wpdata[Automatic, "Values"]];

In[81]:= ListLinePlot[{Sqrt[1 - wtE], Sqrt[1 - wtP]},AxesOrigin -> {1000, 0.1}, PlotLabel -> "relative error vs. compression ratio", PlotStyle -> {Blue, {Red, Dashed}}]

enter image description here

$\endgroup$
2
  • $\begingroup$ Thank you for the in-depth explanataion :) ! $\endgroup$
    – Sektor
    Feb 8, 2013 at 7:54
  • $\begingroup$ @Leonid It is nice to be part of the Mathematica community :-) $\endgroup$
    – VivekJ
    Feb 10, 2013 at 3:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.