Matlab - compresor imagen dct matlab

   
Vista:

compresor imagen dct matlab

Publicado por luis manuel (1 intervención) el 20/04/2009 02:36:21
Hola a todos, estoy intentando hacer un programa en matlab para comprimir imagenes mediante dct, este es mi codigo:

[f, p1]=uigetfile(('*.bmp;*.pcx;*.tif;*.png'), 'IMAGEN PARA SER ADQUIRIDA');
s1=strcat(p1,f);
[x, map]=imread(s1);
[M,N,T]=size(x);
i=1;
j=1;
m=x(i:i+M-1,j:j+N-1,:);
m = rgb2ycbcr(m);
b0=m(1:M-1, 1:N-1,1);
b1=m(1:M-1, 1:N-1,2);
b2=m(1:M-1, 1:N-1,3);
bloque1 = b0;
bloque1 = double (bloque1);
coeficientes = dct2(bloque1);
cuantizacion=round(coeficientes./100);
coeficientes2=cuantizacion.*100;
bloque_1 = idct2(coeficientes2);
bloque_1 = round(bloque_1);
bloque_1=uint8(bloque_1);
%--------------------------------------------------------------------------
bloque2 = b1;
bloque2 = double (bloque2);
coeficientes = dct2(bloque2);
cuantizacion=round(coeficientes./100);
coeficientes2=cuantizacion.*100;
bloque_2 = idct2(coeficientes2);
bloque_2 = round(bloque_2);
bloque_2=uint8(bloque_2);

bloque3 = b2;
bloque3 = double (bloque3);
coeficientes = dct2(bloque3);
cuantizacion=round(coeficientes./100);
coeficientes2=cuantizacion.*100;
bloque_3= idct2(coeficientes2);
bloque_3 = round(bloque_3);
bloque_3=uint8(bloque_3);
%--------------------------------------------------------------------------
%-----------

m_(1:M-1, 1:N-1,1)=bloque_1;
m_(1:M-1, 1:N-1,2)=bloque_2;
m_(1:M-1, 1:N-1,3)=bloque_3;
m=ycbcr2rgb(m);
m_=ycbcr2rgb(m_);
figure(1);imshow(m);
figure(2);imshow(m_);


Lo he revisado mil veces pero no se que falla, la imagen que en teoria debe estar comprimida sale en color rosa y blanco. Si alguien me pudiera ayudar se lo agradeceria muchisimo.
Un saludo y muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:compresor imagen dct matlab

Publicado por Jesús RC (1 intervención) el 30/06/2009 18:53:12
me parece que estas redundando informacion, te paso mi codigo a ver si ayuda.. (tome alguna cosas del tuyo a ver si funcionaban)

[ca,sc]=uigetfile(('*.jpg'), 'IMAGEN');
Y=strcat(sc,ca);
[Y, map]=imread(Y);
figure;
imagesc(Y);colormap(map);
[a,b,c]=size(Y);
for z = 1:c
Ydct(:,:,z)=dct2(Y(:,:,z));
end
for z = 1:c
Yidct(:,:,z)=idct2(Ydct(:,:,z));
YN2(:,:,z)=uint8(Yidct(:,:,z));
end
figure;
imagesc(YN2);colormap(map);
whos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar