Code covered by the BSD License

### Highlights fromFFW Fastest Filtering in the West

from FFW Fastest Filtering in the West by Luigi Rosa
Fast 2D convolution - filtering

test_main.m
```clc;clear;
% FFTrv FFT execution times for real 1D vectors
% FFTiv FFT execution times for complex 1D vectors
% IFFTiv IFFT execution times for complex 1D vectors
% These times have been calculated with the script provatempo2.m
% from length N = 3 up to length N = 2048.
% A finer determination of such times can be done using PAPI for Matlab
% or http://icl.cs.utk.edu/papi/
%--------------------------------------------------------------------------
%------------------------------------------------------ FAST 2D CONVOLUTION
% Two arbitrary 2D matrices
a = rand(234,222);
b = rand(222,333);
% a=a+i*rand(size(a));
% b=b+i*rand(size(b));

% Optimized parameters for 2D convolution
opt = detbestlength2(FFTrv,FFTiv,IFFTiv,size(a),size(b),isreal(a),isreal(b));

tic;
y0  = fftolamopt2(a,b,opt);
t   = toc;
% equivalent to do y0 = conv2(a,b,'full');
% Another example
% y1 = fftolamopt2(a,b,opt,'same');
% equivalent to do y1 = conv2(a,b,'same');
disp('Time required for fast 2D convolution');
disp(t);
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------

%--------------------------------------------------------------------------
%-------------------------------------------------------- FAST 2D FILTERING
I = rgb2gray(I);
I = double(I);

% If the kernel filter is too small it is convenient to work in time domain,
% without any FFT!
myfilter = rand(60,50);
tic;
If       = filter2(myfilter,I,'same');
t0       = toc;

% Rot90 of myfilter to make results consistent
mf       = fliplr(flipud(myfilter));
% equivalent to do mf = rot90(myfilter);

% Optimized parameters for 2D filtering
opt      = detbestlength2(FFTrv,FFTiv,IFFTiv,size(I),size(mf),isreal(I),isreal(mf));
tic;
If1      = fftolamopt2(I,mf,opt,'same');
t1       = toc;

disp('Time required by filter2');
disp(t0);
disp('Time required by fftolamopt2');
disp(t1);
disp('Max abs error');
disp(max(max(abs(If-If1))));
%--------------------------------------------------------------------------
%---------------------------------------- FAST NORMALIZED CROSS-CORRELATION
% This function can easily be used also for a fast
% normalized cross-correlation.
% See normxcorr2 function (Matlab Image Processing Toolbox) for more details.
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------

```