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 personnelle);
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:
Code: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
programme de decoupage de la matrice en block de 16Code: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
Merci d'avance pour votre aide !!!!Code: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
-----