SOHO: Matlab code

A Matlab implementation of the SOHO wavelets can be found here (developed under Matlab 7). The code is released under the GPL 2 license. More details can be found in the README file. A short example on how to use the code is below.

addpath ./experiments/ ./utility/ ./dswt/ 

% basis defined over a partition derived from an octahedron
platonic_solid = 'octahedron';

% other bases are 'bioh', 'pwh' (pseudo Haar), ...
basis = 'osh';

% get function handles for basis
fhs = getFunctionHandlesBasis( basis); 

% level -1 on which the input signal is sampled / number of levels over which the
% wavelet
transform is performed
level = 5;

% construct forest of partition trees
forest = getForestPlatonicSolid( platonic_solid, level, fhs.enforce_equal_area);

% signal file
signal_file = 'experiments/signals/world.jpg';

% load signal file (long / lat map)
signal = imread( signal_file);

% sample signal onto the domains on the finest level of the partition trees
forest_sampled = sampleSphericalMap( forest, signal, 10, level, 0);

% perform forward transform
forest_analysed = dswtAnalyseFull( forest_sampled, level, fhs.filters_analysis, fhs.normalize);

% find thresholds so that 512 coefficients are non-zero after approximation
thresholds = getThresholdLargestK( forest_analysed, level, 512, fhs.approx );

% set all coefficients smaller than 'thresholds' to zero
forest_approx = approxSWT( forest_analysed, level, thresholds, fhs.approx );

% reconstruct the approximated signal
forest_synth = dswtSynthesiseFull( forest_approx, level, fhs.filters_synthesis, ...
                                   fhs.denormalize, 0, 1);

% display approximated signal
plotDataFast( forest_synth, level)

© lessig (at) dgp (dot) toronto (dot) edu Januar 2008