Mercurial > hg > smallbox
diff examples/AudioInpainting/Audio_Declipping_Example.m @ 136:1334d2302dd9 ivand_dev
Added Audio declipping problem (problem, reconstruct and example function)
author | Ivan Damnjanovic lnx <ivan.damnjanovic@eecs.qmul.ac.uk> |
---|---|
date | Thu, 14 Jul 2011 16:26:07 +0100 |
parents | |
children | 9207d56c5547 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/AudioInpainting/Audio_Declipping_Example.m Thu Jul 14 16:26:07 2011 +0100 @@ -0,0 +1,79 @@ +%% Audio Declipping Example +% +% CHANGE!!! This example is based on the experiment suggested by Professor Pierre +% Vandergheynst on the SMALL meeting in Villars. +% The idea behind is to use patches from source image as a dictionary in +% which we represent target image using matching pursuit algorithm. +% Calling Pierre_Problem function to get src image to be used as dictionary +% and target image to be represented using MP with 3 patches from source image + +% +% Centre for Digital Music, Queen Mary, University of London. +% This file copyright 2011 Ivan Damnjanovic. +% +% This program is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License as +% published by the Free Software Foundation; either version 2 of the +% License, or (at your option) any later version. See the file +% COPYING included with this distribution for more information. +% +%% + +clear all; + +% Defining the Problem structure + +SMALL.Problem = generateAudioDeclippingProblem('male01_8kHz.wav', 0.6, 256, 0.5, @wRect, @wSine, @wRect, @Gabor_Dictionary, 2); + +% % Show original image and image that is used as a dictionary +% figure('Name', 'Original and Dictionary Image'); +% +% subplot(1,2,1); imagesc(SMALL.Problem.imageTrg/SMALL.Problem.maxval); +% title('Original Image');colormap(gray);axis off; axis image; +% subplot(1,2,2); imagesc(SMALL.Problem.imageSrc/SMALL.Problem.maxval); +% title('Dictionary image:');colormap(gray);axis off; axis image; +time=0; +coeffFrames = zeros(SMALL.Problem.p, SMALL.Problem.n); + +for i=1:SMALL.Problem.n + + idx = find(SMALL.Problem.M(:,i)); + SMALL.Problem.A = SMALL.Problem.B(idx,:); + + SMALL.Problem.b1 = SMALL.Problem.b(idx,i); + + + + % Defining the parameters sparse representation + SMALL.solver=SMALL_init_solver; + SMALL.solver.toolbox='ompbox'; + SMALL.solver.name='omp2'; + + SMALL.solver.param=struct(... + 'epsilon', 0.001,... + 'maxatoms', 64); + + % Find solution + + SMALL.solver=SMALL_solve(SMALL.Problem, SMALL.solver); + + + coeffFrames(:,i) = SMALL.solver.solution; + time = time + SMALL.solver.time; + + + +end + +%% Set reconstruction function + +SMALL.Problem.reconstruct=@(x) AudioDeclipping_reconstruct(x, SMALL.Problem); +reconstructed=SMALL.Problem.reconstruct(coeffFrames); + +%% plot time and psnr given dictionary size %% +figure('Name', 'time and psnr'); + +subplot(1,2,1); plot(dictsize(1,:), time(1,:), 'ro-'); +title('Time vs number of source image patches used'); +subplot(1,2,2); plot(dictsize(1,:), psnr(1,:), 'b*-'); +title('PSNR vs number of source image patches used'); \ No newline at end of file