salut
j'ai fait le code matlab pour la compression d'une image niveau de gris et maintenant je voudrais faire le code pour un image couleur
mais ya t'il quelqu'un savoire les changements que je dois faire
merci a l'avance svp aide moi
-----
06/05/2011, 12h17
#2
inviteb9f49292
Date d'inscription
janvier 1970
Messages
2 474
Re : compression d'une image
Brutalement et sans trop réfléchir, j'appliquerais le même algo sur les trois plan rouge, vert et bleu
06/05/2011, 14h43
#3
invitea29b3af3
Date d'inscription
janvier 1970
Messages
1 388
Re : compression d'une image
Salut
Si je me souviens bien, des algos comme JPEG transforment d'abord l'espace des couleurs de RGB vers YCbCr (y'a une fonction matlab qui fait ça, rgb2ycbcr sauf erreur). La compression est faite dans cet espace-là qui est "plus proche de la façon dont l'oeil humain perçoit les couleurs". Comme l'a dit lou_ibmix_xi, là tu compresses effectivement chaque canal individuellement, et tu repasses en RGB (ycbcr2rgb).
06/05/2011, 15h35
#4
JPL
Responsable des forums
Date d'inscription
septembre 2003
Messages
63 822
Re : compression d'une image
Attention, la première question à poser est : veux-tu une compression sans perte (genre RLE pour la plus simple) ou compression avec perte (JPEG) ?
Pour JPEG on commence en effet par séparer la composante luminance et les composantes couleur car on peut accepter une compression/dégradation assez importante sur les composantes couleur (donc réduire la taille du fichier final) sans que ce soit très perceptible. On doit pouvoir faire la même chose avec une décomposition Lab.
Rien ne sert de penser, il faut réfléchir avant - Pierre Dac
Aujourd'hui
A voir en vidéo sur Futura
06/05/2011, 17h27
#5
inviteda3670f6
Date d'inscription
janvier 1970
Messages
172
Re : compression d'une image
Envoyé par 1google
salut
j'ai fait le code matlab pour la compression d'une image niveau de gris et maintenant je voudrais faire le code pour un image couleur
mais ya t'il quelqu'un savoire les changements que je dois faire
merci a l'avance svp aide moi
Si tu fais de la compression avec pertes, il faut effectivement passer en YCbCr. Cela a plusieurs avantages, le premier étant une séparation des information de luminance et de chrominance. Comem l'oeil est nettement moins sensible à la définition de la chrominance, on peut sous-échantillonner les composantes Cr et Cb par 2 en horizontal et en vertical.
Ensuite, tu appliques sur les 3 composantes une TCD, une quantification vectorielle, et un huffmann.
Pour de la compression sans perte, il faudra rester en RGB, et appliquer un huffmann, enfin 3.
A plus
08/05/2011, 00h33
#6
invitefdd33202
Date d'inscription
janvier 1970
Messages
18
Re : compression d'une image
Envoyé par fiatlux
Salut
Si je me souviens bien, des algos comme JPEG transforment d'abord l'espace des couleurs de RGB vers YCbCr (y'a une fonction matlab qui fait ça, rgb2ycbcr sauf erreur). La compression est faite dans cet espace-là qui est "plus proche de la façon dont l'oeil humain perçoit les couleurs". Comme l'a dit lou_ibmix_xi, là tu compresses effectivement chaque canal individuellement, et tu repasses en RGB (ycbcr2rgb).
salut
merci mr fiatlux
j'ai essaye l'instruction rgb2ycbcr mais il ya une erreur voila le probleme
>> RGB = imread('D:\lena.png');
>> im=rgb2ycbcr('RGB')
??? Error using ==> iptcheckinput
Function RGB2YCBCR expected its first input, MAP,
to be one of these types:
uint8, uint16, double
Instead its type was char.
Error in ==> rgb2ycbcr>parse_inputs at 120
iptcheckinput(X,{'uint8','uint 16','double'},{'nonempty'},mfi lename,'MAP',1);
Error in ==> rgb2ycbcr at 50
rgb = parse_inputs(varargin{:});
08/05/2011, 16h14
#7
invitea29b3af3
Date d'inscription
janvier 1970
Messages
1 388
Re : compression d'une image
Salut,
Pour une fois, le message d'erreur est assez clair
Tu as mis un char au lieu de l'image elle-même. Il faut faire: