function [ReconIm,slov] = SpecSlov(testIm)

clc;

addpath('Solver');
addpath('Sparse coding');

% =====================================================================
% specify the parameter settings (//specifikace parametrů//)

patch_size = 3; % patch size for the low resolution input image
overlap = 1; % overlap between adjacent patches
lambda = 0.1; % sparsity parameter
zooming = 3; % zooming factor, if you change this, the dictionary needs to be retrained.

regres = 'L1'; % 'L1' or 'L2', use the sparse representation directly, or use the supports for L2 regression
% =====================================================================

% zpracování testovacího obrazu
%...Výběr slovníku...
pic = testIm;           % vyber obrazku
ypic=rgb2ycbcr(pic);     % prepocet do barevneho prostoru YCbCr
obr=ypic(:,:,1);
OBR=dct2(obr);
OBRw = dwt2(obr,'db1');

tex=0;
fot=0;
for r = 0:75:151
    for c = 0:75:151
        for m = 1:1:150
            for n = 1:1:150
                zaplata(m,n)=obr(m+r,n+c);           %vytvoření záplaty ze zkoumaného obrazu
            end
        end
        OBRwz=dwt2(zaplata,'db1');                   %vlnková transformace
        A=0;
        N=0;
        vel=size(OBRwz);
        for o = 1:1:vel(1)
            for p = 1:1:vel(1)
                if abs(abs(OBRwz(o,p)))>469
                    A=A+1;
                else
                    N=N+1;
                end
            end
        end
        if A > 400
            tex=tex+1;
        else
            fot=fot+1;
        end
    end    
end
if tex>fot
    disp('Použij slovník pro Text');
    slov='Text';
    load('Data/Dictionary/TDictionary.mat');
else
    disp('Použij slovník pro Foto');
    slov='Foto';
    load('Data/Dictionary/Dictionary.mat');
end

%...Konec výběru...

   % //zajistíme aby počet řádků byl dělitelný zoom faktorem//
if rem(size(testIm,1),zooming) ~=0, % //REM - zbytek po dělení//
    nrow = floor(size(testIm,1)/zooming)*zooming; % //FLOOR-zaokrouhluje na celé číslo směrem dolu //
    testIm = testIm(1:nrow,:,:); % //??????
end;
if rem(size(testIm,2),zooming) ~=0,
    ncol = floor(size(testIm,2)/zooming)*zooming;
    testIm = testIm(:,1:ncol,:);
end;

lowIm = imresize(testIm,1/zooming, 'bicubic');  % //zmenšíme pův. obraz "1/zooming" krát
interpIm = imresize(lowIm,zooming,'bicubic');   % //zvětšíme zmenšený obraz a uložíme

% work with the illuminance domain only
lowIm2 = rgb2ycbcr(lowIm);
lImy = double(lowIm2(:,:,1));

% bicubic interpolation for the other two channels
interpIm2 = rgb2ycbcr(interpIm);
hImcb = interpIm2(:,:,2);
hImcr = interpIm2(:,:,3);

% ======================================================================
% Super-resolution using sparse representation

[hImy] = L1SR(lImy, zooming, patch_size, overlap, Dh, Dl, lambda, regres);

ReconIm(:,:,1) = uint8(hImy);
ReconIm(:,:,2) = hImcb;
ReconIm(:,:,3) = hImcr;
ReconIm = ycbcr2rgb(ReconIm);

end

