%**********************************************************
%** komprese prevodem do YCbCr barevneho prostoru **
%** Diskrétní transformace **
%** Leos Marsalek Leos.Marsalek@tiscali.cz **
%** Jan Skapa (c) 2003 **
%**********************************************************
Gen_obr; % generování obrázku www.sendme.cz/goro
pic=pic5; % vyber obrazku se kterym se bude provadet komprese
ypic=rgb2ycbcr(pic); % prepocet barevneho prostoru RGB -> YCbCr
Y=ypic(:,:,1); % vybrani svelnosti
velikost=size(ypic)
for k=1:2:velikost(2) % Vlastni komprese
for l=1:2:velikost(1)
Cb(round(l/2),round(k/2))=ypic(l,k,2);
Cr(round(l/2),round(k/2))=ypic(l,k,3);
end
end
velikost=size(Cb) % dekomprese
for k=1:velikost(2)*2-1
for l=1:velikost(1)*2-1
Cb_r(l+1,k+1)=Cb(round(l/2),round(k/2));
Cr_r(l+1,k+1)=Cr(round(l/2),round(k/2));
Cb_r(l,k)=Cb(round(l/2),round(k/2));
Cr_r(l,k)=Cr(round(l/2),round(k/2));
end
end
ypic_r(:,:,1)=Y;
ypic_r(:,:,2)=Cb_r;
ypic_r(:,:,3)=Cr_r;
pic_r=abs(ycbcr2rgb(ypic_r)); % prepocet zpet na RGB
for k=1:320 % Normalizace kvuli chybam vzniklym ztratou clenu
for l=1:240 % a kvuli zobrazovani matlabu 0<x<1
if pic_r(l,k,2)>21
pic_r(l,k,2)=1;
end
if pic_r(l,k,3)>1
pic_r(l,k,3)=1;
end
if pic_r(l,k,1)>1
pic_r(l,k,1)=1;
end
end
end
imwrite(pic_r,'pokus.bmp','bmp');