idamnjanovic@8: function reconstructed=Pierre_reconstruct(y, Problem)
idamnjanovic@24: %%%  Pierre Villars Example - reconstruction function
idamnjanovic@24: %
idamnjanovic@24: %   Centre for Digital Music, Queen Mary, University of London.
idamnjanovic@24: %   This file copyright 2009 Ivan Damnjanovic.
idamnjanovic@24: %
idamnjanovic@24: %   This program is free software; you can redistribute it and/or
idamnjanovic@24: %   modify it under the terms of the GNU General Public License as
idamnjanovic@24: %   published by the Free Software Foundation; either version 2 of the
idamnjanovic@24: %   License, or (at your option) any later version.  See the file
idamnjanovic@24: %   COPYING included with this distribution for more information.
idamnjanovic@24: %   
idamnjanovic@8: %   This example is based on the experiment suggested by Professor Pierre
idamnjanovic@8: %   Vandergheynst on the SMALL meeting in Villars.
idamnjanovic@8: 
idamnjanovic@8: %   using sparse representation y in dictionary Problem.A reconstruct the
idamnjanovic@8: %   patches from the target image
idamnjanovic@8: 
idamnjanovic@8: imout=Problem.A*y;
idamnjanovic@8: 
idamnjanovic@8: %   combine the patches into reconstructed image
idamnjanovic@8: 
idamnjanovic@8: im=col2im(imout,Problem.blocksize,size(Problem.imageTrg),'disctint');
idamnjanovic@8: 
idamnjanovic@8: %   bound the pixel values to [0,255] range 
idamnjanovic@8: im(im<0)=0;
idamnjanovic@8: im(im>255)=255;
idamnjanovic@8: 
idamnjanovic@8: %% output structure image+psnr %%
idamnjanovic@8: reconstructed.image=im;
idamnjanovic@8: reconstructed.psnr = 20*log10(Problem.maxval * sqrt(numel(Problem.imageTrg(:))) / norm(Problem.imageTrg(:)-im(:)));
idamnjanovic@8: end