Questions sur structure d'images 24 bits - C++ - Programmation
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 ).
En jpeg, je crois pas que ca soit codé en RGB
Marsh Posté le 08-03-2003 à 22:31:11
en BMP c'est BGR et de bas en haut si je me goure pas
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...
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éja, je crois qu'il ne traite pas ligne par ligne, mais il suit un chemin sinueux dans l'image
Ensuite, ce ne sont pas des pixels qui sont pris en compte, mais des blocs de pixels (taille )
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
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 :
|
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
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' ??
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.