% Initialisierung global mNORM mYV mUX mUX=cos([0:7]'*(2*[0:7]+1)*pi/16); mYV=cos((2*[0:7]'+1)*[0:7]*pi/16); mNORM=[1/2 ones(1,7)/sqrt(2); ... ones(7,1)/sqrt(2) ones(7,7)]/4; % Quantisierungsmatrizen Qt50=[16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; 14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77; 24 35 55 64 81 104 113 92; 49 64 78 87 103 121 120 101; 72 92 95 98 112 100 103 99]; % Qualitaet 50% Qts=1./s*Qt50; % mit s einen Quantisierungsfaktor % Zick-Zack zick=[1 9 2 3 10 17 25 18 ... 11 4 5 12 19 26 33 41 ... 34 27 20 13 6 7 14 21 ... 28 35 42 49 57 50 43 36 ... 29 22 15 8 16 23 30 37 ... 44 51 58 59 52 45 38 31 ... 24 32 39 46 53 60 61 54 ... 47 40 48 55 62 63 56 64]; zack=zick(64:-1:1); % Test-Block B=[139 144 149 153 155 155 155 155; 144 151 153 156 159 156 156 156; 150 155 160 163 158 156 156 156; 159 161 162 160 160 159 159 159; 159 160 161 162 162 155 155 155; 161 161 161 161 160 157 157 157; 162 162 161 163 162 157 157 157; 162 162 161 161 163 158 158 158]; % Kodierung-Funktion (Gestollen vom "Digital signal and image processing using matlab". Gerard Blanchet and Maurice Charbit}) function [framec,valm]=kodi(BQ,meanval,zick) %% calculate a frame without entropic coding %% 17=# of bits needed for coding each dct coeff. bb=0; if (BQ(1,1)==0),BQ(1,1)=eps;bb=1;end frame=BQ(zick); idz=find(frame);lidz=length(idz); nbzer=diff(idz)-1;lnbz=length(nbzer); valm=BQ(1,1);framec=[17 valm-meanval]; nbzer,lnbz for ik=1:lnbz framec=[framec nbzer(ik) 17 frame(idz(ik+1))]; end framec=[framec 0 0]; if bb, framec(2)=-meanval; end return