Switch to side-by-side view

--- a
+++ b/functions/functions_Gabor/findBestWaveletsTesting.m
@@ -0,0 +1,204 @@
+function [bestWaveletsAll, PCANet] = findBestWaveletsTesting(imagesCell, orient_default, orient_best, PCANet, numImagesToUse, imageSize, fidLogs, param, stepPrint, plotta)
+
+%init
+bestWaveletsAll(param.numBestWavelets).filter = [];
+
+%display
+fprintf_pers(fidLogs, ['\t\t\t' num2str(numImagesToUse) ' images used for Gabor analysis... \n'])
+
+
+%--------------------------------------
+%Compute parametrized wavelets
+%parametrizedWavelets = gaborArrayParametrized(param.sigma, param.wavelength, param.divThetaParametrized);
+parametrizedWavelets = gaborArrayParametrized(param.sigma, param.wavelength, deg2rad(orient_default));
+
+
+%--------------------------------------
+%Compute complete multi-scale Gabor filter bank
+%fprintf_pers(fidLogs, '\t\tComputing Gabor array... \n')
+gaborBank = gaborArrayFromScales(imageSize, deg2rad(unique([orient_default orient_best])), param, plotta);
+
+%init counter for how many times each wavelet is chosen
+o_counterAll = zeros(numel(gaborBank), 1);
+
+
+    if plotta
+        fsfigure
+        for indf = 1 : param.divThetaParametrized
+            %sum(real(parametrizedWavelets(indf).filter(:)))
+            subplot(1,param.divThetaParametrized,indf)
+            imshow(real(parametrizedWavelets(indf).filter),[])
+            axis on
+            axis image
+        end %for indf
+        suplabel([num2str(param.divThetaParametrized) ' filters fixed']);
+        figure,
+        imhist(real(parametrizedWavelets(indf).filter))
+        %pause
+    end %if plotta
+
+
+
+%loop on images
+parfor j = 1 : numImagesToUse
+% for j = 1 : numel(imagesCell)
+    
+    %get id of current worker
+    t = getCurrentTask();
+    
+    %display progress
+    if mod(j, stepPrint) == 0
+        fprintf(1, ['\t\tCore ' num2str(t.ID) ': ' num2str(j) ' / ' num2str(numImagesToUse) '\n'])
+    end %if mod(i, 100) == 0
+    
+    %get img
+    im = imagesCell{j};
+    
+    %test img alternative
+    %%%%%%%%%%%%%%%%%%%%%%%%%%
+    %im = loadPreprocessImage('D:\UoT\Projects\Palmprint Gabor tuning\Code\alt\GaborWavelet\images\1_1.jpg', imageSize);
+    %im = loadPreprocessImage('D:\UoT\Projects\Palmprint Gabor tuning\Code\alt\GaborWavelet\images\test image\Peppers.tiff', imageSize);
+    %%%%%%%%%%%%%%%%%%%%%%%%%%
+    
+    
+    %pause
+    
+    
+    %--------------------------------------
+    %Compute frequency of Gabor filter bank
+    %fprintf_pers(fidLogs, '\t\tComputing spectrum of gabor array... \n')
+    %totFreq = computeFrequencyGaborArray(gaborBank, plotta);
+    
+    
+    %--------------------------------------
+    %Perform reference Gabor filtering
+    %fprintf_pers(fidLogs, '\t\tPerforming reference Gabor filtering... \n')
+    resF = referenceGaborFilter(gaborBank, im);
+    
+    
+    %--------------------------------------
+    %create powerMap for all filters
+    %fprintf_pers(fidLogs, '\t\tComputing powermaps... \n')
+    powerMapF = computePowerMaps(resF, gaborBank);
+    
+    
+    %--------------------------------------
+    %Sort filter response information
+    %fprintf_pers(fidLogs, '\t\tSorting filter response information... \n')
+    [sortRes, sizeRes] = sortFilterResponse(gaborBank, powerMapF);
+    
+    
+    %--------------------------------------
+    %Compute most used wavelets
+    %fprintf_pers(fidLogs, '\t\t\tComputing most used wavelets... \n')
+    o_counter = getMostUsedWavelets(sortRes, gaborBank, powerMapF, param, sizeRes, plotta);
+    
+    %increment
+    o_counterAll = o_counterAll + o_counter;
+    
+end %for j = 1 : length(vectorIndexTest)
+
+
+%display most used filters
+if plotta
+    figure,
+    bar(1:size(o_counterAll), o_counterAll)
+    xlabel('Wavelet n.')
+    ylabel('Perc. of occurence')
+    title('Most used wavelets');
+end %if plotta
+
+
+%--------------------------------------
+%sort most used filters counter
+[~, ind_o_counter_All_sort] = sort(o_counterAll, 'descend');
+
+%consider only best wavelets
+ind_o_counter_All_sort = ind_o_counter_All_sort(1 : param.numBestWavelets);
+bestWavelets = gaborBank(ind_o_counter_All_sort);
+
+%display bestWavelets
+if plotta
+    fsfigure
+    for indf = 1 : numel(bestWavelets)
+        subplot(1, numel(bestWavelets),indf)
+        imshow(bestWavelets(indf).even,[])
+        axis on
+        axis image
+    end %for indf
+    suplabel([num2str(numel(bestWavelets)) ' filters most used']);
+end %if plotta
+
+
+%--------------------------------------
+%assign to global structure
+countfilter = 1;
+
+%parametrized
+for o = 1 : numel(parametrizedWavelets)
+    bestWaveletsAll(countfilter).filter = parametrizedWavelets(o).filter;
+    countfilter = countfilter + 1;
+end %for o
+
+%dynamic
+for o = 1 : numel(bestWavelets)
+    bestWaveletsAll(countfilter).filter = complex(bestWavelets(o).even, bestWavelets(o).odd);
+    countfilter = countfilter + 1;
+end %for o
+
+%display
+%     if plotta
+%         bestWaveletsCell = squeeze(struct2cell(bestWavelets));
+%         figure,
+%         subplot(1,2,1)
+%         montage(bestWaveletsCell(1,:), 'DisplayRange', [])
+%         axis on
+%         axis image
+%         title('Best wavelets: even');
+%         subplot(1,2,2)
+%         montage(bestWaveletsCell(2,:), 'DisplayRange', [])
+%         title('Best wavelets: odd');
+%         pause
+%     end %if plotta
+
+
+%--------------------------------------
+%loop on images, test reconstruct
+if 0
+    for j = 1 : numel(imagesCell)
+        
+        %get img
+        im = imagesCell{j};
+        %Perform reference Gabor filtering
+        resF = referenceGaborFilter(bestWaveletsAll, im);
+        %create powerMap for all filters
+        powerMapF = computePowerMaps(resF, bestWaveletsAll);
+        %Sort filter response information
+        [sortRes, sizeRes] = sortFilterResponse(bestWaveletsAll, powerMapF);
+        
+        %--------------------------------------
+        %Loop on wavelets - all filters
+        %fprintf_pers(fidLogs, '\t\t\tReconstructing image with all filters... \n')
+        % allFiltersIndexes = 1:numel(gaborBank);
+        %[tmpImage, errV] = reconstructImage(resF, sortRes, gaborBank, powerMapF, allFiltersIndexes, im, imageSize, sizeRes, param, plotta);
+        
+        
+        %--------------------------------------
+        %Loop on wavelets - best filters
+        %fprintf_pers(fidLogs, ['\t\t\tReconstructing image with the best ' num2str(param.numBestWavelets) ' filters... \n'])
+        [tmpImageBest, errBestV] = reconstructImage(resF, sortRes, bestWaveletsAll, powerMapF, [1 : numel(bestWaveletsAll)], im, imageSize, sizeRes, param, plotta);
+        
+        pause
+        
+    end %for j = 1 : numel(imagesCell)
+end %if 0
+
+
+%--------------------------------------
+%update number of filters
+%assign updated number of filters to PCANet
+PCANet.NumFilters(end) = numel(bestWaveletsAll);
+
+
+
+