Rifiniture.

Leonardo Robol [2010-03-04 10:10]
Rifiniture.
Filename
Filtering/dwt
diff --git a/Filtering/dwt b/Filtering/dwt
index dcf2eba..9e269a3 100755
--- a/Filtering/dwt
+++ b/Filtering/dwt
@@ -2,6 +2,38 @@
 # -*- coding: utf-8 -*-
 #

+import sys
+
+def Output (string):
+    """Output with colors :)"""
+    print "\033[32;1m===>\033[0m  %s" % string
+
+def StartProgram():
+    """Starting banner"""
+    print "\033[31;1mDWT\033[0m - Discrete Wavelet transform started"
+    print ""
+
+def EndProgram():
+    """End banner"""
+    print ""
+
+def LoadingLibrariesStarted():
+    """Loading libraries banner"""
+    if __name__ == "__main__":
+        print ""
+        print "\033[31;1mDWT\033[0m - Loading numeric libraries...",
+        sys.stdout.flush ()
+
+def LoadingLibrariesFinished():
+    """Loading libraries finished banner"""
+    if __name__ == "__main__":
+        print "done"
+
+
+
+LoadingLibrariesStarted()
+
+# Importing libraries
 import Filtering
 from pylab import show, plot
 from numpy import array, sqrt, memmap, roll
@@ -10,16 +42,16 @@ import time

 from optparse import OptionParser

-def Output (string):
-    """Output with colors :)"""
-    print " \033[1m=>\033[0m\033[32;1m %s \033[0m" % string
-
+LoadingLibrariesFinished()
+

 class DWT():

-    def __init__(self, filename, action = 'show', filewrite = 'rebuilt.pcm',
+    def __init__(self, filename, action = 'show', filewrite = 'rebuilt.wav',
                  filterbank = 'haar', depth = 4):

+        StartProgram ()
+
         startingTime = time.time ()

         # Scelgo la filterbank da utilizzare
@@ -49,13 +81,18 @@ class DWT():
             startingTime = time.time ()
             rebuilt = filterBank.Rebuild (wavelets)
             Output ("Rebuilt in %f seconds" % (time.time() - startingTime))
-            Output ("||rebuilt - samples|| = %f" % norm(rebuilt - samples[0:len(rebuilt)]))
-            self.WriteSamples(rebuilt, filewrite)

+
+            if norm(rebuilt - samples[0:len(rebuilt)]) > 1E-10:
+                Output ("Errore while reconstructing. Rebuilt samples differs from original ones")
+            else:
+                Output ("Perfect reconstruction succeeded")
+            self.WriteSamples(rebuilt, filewrite)

+            EndProgram ()


-    def LoadSamples(self, filename = "sunny.pcm"):
+    def LoadSamples(self, filename):
         """
         Load the samples from an audio file
         """
@@ -79,13 +116,14 @@ class DWT():
         Shows the result of filtering
         """
         scale = 1
-        offset = -90000
+        singleOffset = 2 * max(abs(wavelets[-1]))
+        offset = -3 * singleOffset
         # We plot only the first 2000 samples, to avoid memory
         # being flooded with our data :)
         toPlot = 1000000
         for samples in wavelets[0:-1]:
             plot (range(0, toPlot, scale), samples[0:toPlot / scale] + offset)
-            offset += 30000
+            offset += singleOffset
             scale = 2*scale
         plot ( range(0, toPlot, int(0.5 * scale)), wavelets[-1][:2 * toPlot /scale] + offset)
         show ()
@@ -95,11 +133,11 @@ if __name__ == "__main__":

     parser = OptionParser ()
     parser.add_option("-f", "--file", dest="filename",default=None,
-                      help="Read samples from this .pcm file")
+                      help="Read samples from this .wav file")
     parser.add_option("-r", "--rebuild", dest="rebuild",
                       default=False, action="store_true",
                       help="Make DWT and then IDWT")
-    parser.add_option("-w", "--write", dest="filewrite", default='rebuilt.pcm',
+    parser.add_option("-w", "--write", dest="filewrite", default='rebuilt.wav',
                       help="Write reconstructed samples to this file")
     parser.add_option("-s", "--show", dest="show",
                       default=True, action="store_true",
@@ -113,7 +151,7 @@ if __name__ == "__main__":
     (options, args) = parser.parse_args ()

     if options.filename is None:
-        parser.error ("Please a specify a pcm file to read the samples from")
+        parser.error ("Please a specify a PCM .wav file to read the samples from")


     if options.rebuild:
ViewGit