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)
|