function [x,a,b] = analyse(h0,h1,x,a,b,q,niv,s)
%        [x,a,b] = analyse(h0,h1,x,a,b,q,niv,s)
% analyse effectuee au niveau niv, 1 <= niv <= 4
% extension sym. pour filtres symetriques h0, h1
% compression et quantification sauf pour x00
% a,b: affinite a*x+b sur sous-image sx de x
% q = parametres de quantification
% s = parametre optionnel,  s = 'v' pour voir les
% sous-images, s = 'c' pour les compresser
%------------------------------------------------

if (niv < 1) | (niv > 4)
 error('niveau incorrect');
end

[nl,nc] = size(x);
for i = 1:niv-1
 nl = ceil(nl/2); nc = ceil(nc/2);
end
sx = x(1:nl,1:nc);

%------------------------------------------------
% filtrage et decimation des lignes de sx
%------------------------------------------------

x0 = filtre(h0,sx')';
x1 = filtre(h1,sx')';
x0 = x0(:,1:2:nc);
x1 = x1(:,2:2:nc);

%------------------------------------------------
% filtrage et decimation des colonnes de x0, x1
%------------------------------------------------

x00 = filtre(h0,x0);
x01 = filtre(h1,x0);
x10 = filtre(h0,x1);
x11 = filtre(h1,x1);
x00 = x00(1:2:nl,:);
x01 = x01(2:2:nl,:);
x10 = x10(1:2:nl,:);
x11 = x11(2:2:nl,:);

%------------------------------------------------
% assemblage des sous-images, quantification
% sauf pour x00
%------------------------------------------------

a00 = 1; b00 = 0;
[x01,a01,b01] = quant(x01,q(2),s); 
[x10,a10,b10] = quant(x10,q(3),s); 
[x11,a11,b11] = quant(x11,q(4),s); 
x(1:nl,1:nc) = [x00,x10;x01,x11];

a = [[a00,a10;a01,a11],a];
b = [[b00,b10;b01,b11],b];
