Ngossi Posté(e) le 20 mai 2011 Partager Posté(e) le 20 mai 2011 Bonjour, je développe un programme sur la compression de l'image sous Matlab en suivant les étapes suivantes : 1- conversion RVB->YCbCr; 2- downsample; 3- passage par une matrice de transformation(ma touche parsonnelle); 4- quantification; 5- codages RLE et Huffman. Le problème qui se pose actuellement est le suivant:"J'ai récuperé mes images de chrominance rouge et chrominance bleu issues de l'étape1 que j'ai fait passer pour l'étape2, j'obtiens certes un résultat mais l'image affichée est toute blanche, on ne remarque plus aucun niveau de gris" Je voudrais donc savoir si cela est normal ? si non, que dois-je faire pour que l'image s'affiche ? Aidez moi svp!!! voici mon programme: function chrominence_bleu2_Callback(hObject, eventdata, handles) global res; [m,n,p]=size(res); for i=1:m for j=1:n B(i,j)=res(i,j,2); end end figure(1), imshow(B); Be= blocksof16(B,m,n,p); figure(2),imshow(Be); bdwn = downsample(Be); [m1,n1,p1]=size(bdwn); for i=1:m1 for j=1:n1 if bdwn(i,j)~=0 BL(i,j)=bdwn(i,j); end end end [m1,n1,p1]=size(BL); for i=m1+1:m for j=1:n BL(i,j)=128; end end for i=1:m for j=n1+1:n BL(i,j)=128; end end figure(3),imshow(BL); set(handles.axes9,'visible','on'); axes(handles.axes9); imshow(bdwn); imwrite(bdwn,'totob','bmp'); imwrite(res,'Toto4','bmp'); axis off; info9 =imfinfo('totob'); size9 =fix(info9.FileSize/1024); %set(handles.format,'String',info.Format); set(handles.capacite9,'String',size9); voici le programme du downsample function matrice = downsample(m) [q,n,p] = size(m); res = []; ligne=1; col =1; for i=1:2:q-1 for j=1:2:n-1 moy = 0; for l=i:i+1 for k = j:j+1 moy=moy+(m(l,k)/4); end end res(ligne,col)=round(moy); col = col+1; end ligne = ligne+1; col = 1; end matrice = res; end programme de decoupage de la matrice en block de 16 function matrice = blocksof16(m,p,q,r) if p<16 r1=16; else r1 = mod(p,16); if r1~=0 r1 = 16*(fix(p/16)+1); end end if q<16 r2 = 16; else r2 = mod(q,16); if r2~=0 r2=16*(fix(q/16)+1); end end for i=p+1:r1 for j=1:r2 m(i,j)=0; end end for i=1:r1 for j=q+1:r2 m(i,j)=0; end end matrice = m; end Merci d'avance pour votre aide !!!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.