Décomposer une image en plusieurs matrices de 8*8 - C - Programmation
Marsh Posté le 03-05-2009 à 16:56:51
la célèbre SDL permet d'addresser des sous-surface de taille arbitraire, 8x8 par exemple. Une "surface" SDL est une généralisation du concept d'image/bitmap, tu peux charger un .bmp et faire ce que tu veux dedans.
Par contre je ne pense pas qu'il y ait de lib spécialisée dans les blocks 8x8, même si cette taille correspond aux macroblocks du JPEG. Ton travail ne consisterait pas à implémenter un compresseur JPEG ?
Marsh Posté le 03-05-2009 à 17:06:18
jesus_christ a écrit : Ton travail ne consisterait pas à implémenter un compresseur JPEG ? |
Oui en effet c'est le cas, un compresseur/decompresseur JPEG.
J'ai implémenté toute les étapes de base qu'on peut faire sur une matrice de 8*8, à savoir:
Un blok pixels de 8*8 ---> matrice DCT ---> Matrice quantifié ---> Codage huffman ---> Décodage huffman ---> Quantification inverse ---> DCT inverse ---> blok pixels de 8*8
Et je voudrai tester le travail sur une image, il faut donc la décomposer en bloks de 8*8 pour appliquer les étapes sur chaque blok.
Donc c'est faisable avec la SDL ?
Marsh Posté le 03-05-2009 à 19:04:10
Il y a plusieurs types d'images BMP (je suppose qu'il s'agit du format BMP de Windows).
Il peut y avoir des images en noir et blanc, ou bien avec une palette de couleurs, ou avec 4 octets par pixel, ce qui est devenu le format le plus courant de nos jours.
Comme c'est mon jour de bonté, voici du code testé et approuvé qui permet de charger une image BMP en mémoire et d'obtenir la couleur de chaque pixel beaucoup plus rapidement qu'avec l'API GetPixel() qui marche aussi :
Code :
|
Edit : correction pour enlever des lignes qui ne sont pas utiles dans ce cadre et qui utilisaient des variables définies ailleurs, et aussi pour rajouter #include <windows.h> qu'il faut évidemment ajouter quand on programme pour Windows en C.
Marsh Posté le 03-05-2009 à 19:43:51
Salut billgatesanonym, en fait les images bmp que je evux traiter c'est du niveau de gris.
Sinon j'ai les erreurs suivantes à la compilation en C avec GCC avec CodeBocks sous Windows:
Citation : main.c||In function `init_bitmap':| |
Marsh Posté le 05-05-2009 à 10:31:42
billgatesanonym a écrit : |
C\'est du grand n\'importe quoi (coipier-coller du code MSDN datant de 15 ans, quelle originalité !)
et aucun rapport avec le sujet ou 8 lignes suffisent pour découper un BMP en matrice (!)
Marsh Posté le 05-05-2009 à 16:10:12
En fait j'ai trouvé comment faire avec la SDL, ça a l'aire bien. Merci.
Marsh Posté le 03-05-2009 à 16:46:57
Bonjour,
J'aimerai savoir si quelqu'un connais un lib ou quelque chose en C qui me permet de décomposer une image bmp en matrices (bloks) de 8*8 afin d'appliquer des modifications sur chaque blok.
Merci.
Message édité par tomap le 03-05-2009 à 16:50:04