Questions sur structure d'images 24 bits

Questions sur structure d'images 24 bits - C++ - Programmation

Marsh Posté le 08-03-2003 à 22:11:13    

Salut !
 
Ce serait sympa si vous pouviez m'éclairer sur ces quelques points:
 
Quand une image utilise 3 plans de couleurs, comment sont ils agencés dans le fichier? Et dans quel ordre?
 
est ce que ca fonctionne comme ca:
 
1ere ligne de pixel -> composante r
1ere ligne de pixel -> composante g
1ere ligne de pixel -> composante b
 
2eme ligne etc...
 
Est ce qu'une image 24 bits peut n'utiliser qu'un seul plan de couleur? et dans ce cas comment ca se présente dans le fichier ?
Est ce comme ceci par exemple:
12 15 128   35 48 89 ...
---------   --------
R  G  B     R  G  B
1er pixel   2e pixel
 
Et enfin (en rapport avec la 2e question) est on obligé d'utiliser 3 plans de couleurs pour du 24 bits en jpeg ?
 
Si je vous pose ces questions c'est paske je dois faire de la compression jpeg à partir de bmp avec allegro et j'utilise les fonctions de celui ci pour me faciliter la manipulation des bitmaps. Quand ca me charge un bitmap en mémoire, on peut accéder directment aux pixels mais il n'utilise qu'un seul plan de couleur et les composantes sont dans le desordre c a d bgr...merci d'avance pour vos réponses.

Reply

Marsh Posté le 08-03-2003 à 22:11:13   

Reply

Marsh Posté le 08-03-2003 à 22:22:58    

En BMP, ce n'est pas ca. Tu as 3 octets pour chaque pixel, tu as donc dans le ficher : RGBRGBRGBRGBRGB.... (ou BGRBGRBGR... je sais jamais :D ).
En jpeg, je crois pas que ca soit codé en RGB :heink:


Message édité par mrbebert le 08-03-2003 à 22:23:26
Reply

Marsh Posté le 08-03-2003 à 22:31:11    

en BMP c'est BGR et de bas en haut si je me goure pas


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 08-03-2003 à 22:33:28    

Merci Bebert et deathsharp:)
Mais donc en jpeg ca marcherais comme ca? (Enfin bon bien sur ce sont des matrices dct normalement mais ca revient au meme)
 
1ere ligne de pixel -> composante r  
1ere ligne de pixel -> composante g  
1ere ligne de pixel -> composante b  
 
2eme ligne etc...  
 
 :??:


Message édité par *LighTninG* le 08-03-2003 à 22:34:06
Reply

Marsh Posté le 08-03-2003 à 22:33:55    

Oui, ligne par ligne, en commencant par la ligne du haut :)  
Et chaque ligne doit être complétée jusqu'à un multiple de 32 bits (par exemple, pour des lignes de 11 pixels, il y aura 33 octets pour les pixels, plus 3 octets pour compléter jusqu'à 36 octets).
 
En jpeg, tout ce que je sais, c'est que c'est complexe :D  
Déja, je crois qu'il ne traite pas ligne par ligne, mais il suit un chemin sinueux dans l'image :pt1cable:  
Ensuite, ce ne sont pas des pixels qui sont pris en compte, mais des blocs de pixels (taille :??: )


Message édité par mrbebert le 08-03-2003 à 22:37:33
Reply

Marsh Posté le 08-03-2003 à 22:36:58    

c'est pas plutot un multiple de 8 bits  :??:

Reply

Marsh Posté le 08-03-2003 à 22:38:31    

Je crois pas. Il me semble que chaque ligne doit commencer à un multiple de 4 octets :)

Reply

Marsh Posté le 08-03-2003 à 23:01:00    

Tu n'as pas besoin de t'embéter avec la structure d'un BMP.
Tu pourrais utiliser les fonctions 'getb', 'getg', 'getr' directement fournies par ALLegro.
Genre

Code :
  1. couleur.composante_b = getb(getpixel(mon_bitmap, mon_x, mon_y));


Message édité par ITM le 08-03-2003 à 23:01:18

---------------
iteme.free.fr | Mon feedback
Reply

Marsh Posté le 09-03-2003 à 01:48:57    

En jpg, l'image est d'abord convertie en  
luminosite chrominance  
Ensuite chaque image est decomposee en bloc
de 8 sur 8, sur chaque bloc de l'image on  
applique une DCT, on quantifie l'image resultante
selon une matrice de quantification bien
definie pour chaque canaux (de la qualite de cette
matrice de quantification dependra la qualite
finale du jpeg decompresse).
Ensuite on applique un runlength encoding sur
les bits resultants mis bout a bout (et on a une grande
chance que beaucoup de ces bits soient a zero en parcourant chaque bloc en zig zag)
Pour enfin appliquer une compression type huffman (conservative) sur le fichier resultant.
 
LeGreg


Message édité par LeGreg le 09-03-2003 à 01:49:31

---------------
voxel terrain render engine | animation mentor
Reply

Marsh Posté le 09-03-2003 à 15:40:58    

Merci tout le monde pour vos reponses :)
 
Dis moi le greg, est ce que tu sais comment on fait pour la rle sur la suite de zero?
Paske j'ai déjà codé le parcours zig zag mais apres que dois t-on ecrire dans le fichier pour indiquer qu'il y a une compression d'une suite de 0?
Est ce qu'il ya un caractère spécial qui l'identifie?
Par exemple: 'carac special' 'nb_zero' ??

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed