Lire une image en binaire !

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour tout le monde ! Je suis en train de faire de la compression d'image et nous passons au code. Sauf que problème, comment lire une image…? On voudrait faire une compression en lisant les couleurs notamment sauf qu'après multiples recherche nous n'avons rien trouvé de concluant.. Merci d'avance ! :)

Édité par Coyote

+0 -0
Staff

J'ai pas trop compris. Lire une image a la main est possible et en général pas très compliqué même si l'intéret est assez faible vu le grand nombre de bibliotèque a ta disposition pour ça. Mais si tu veux le faire, il faut déjà que tu nous dise quel format d'image tu veux lire.

Le BMP est le plus facile. Il n'y a pas de compression (ou rarement et c'est du RLE facile a décoder). Le gif est assez facile a décoder aussi. Le jpeg et le png, ça commence à se compliquer même si ça reste largement accessible pour des version simple.

+0 -0
Auteur du sujet

En fait c'est un projet de cours et on doit compresser des images. Installer une bibliothèque c'est un peu galère parce qu'on ne peut rien faire sur les ordis…

On avait prévu de prendre des images bmp, mais on arrive pas à les ouvrir en c++. Et la deuxième question c'est : comment sont coder les images, et plus particulièrement les couleurs. Comment sont elles organisés dans le fichier ? Si c'est particulier au format on devrait trouver mais rien n'est indiquer sur ce que l'on a chercher

PS : on avance en même temps, et finalement le sujet est plus ou moins résolu

Édité par Ricocotam

+0 -0
Staff

En général c'est spécifique au format car justement ça fait grandement partie de la compression. Par exemple nos yeux sont plus sensibles au vert qu'aux autre couleurs de base. Le JPEG utilise ça pour coder cette composante avec plus de bits que les autres.

BTW le BMP est facile a lire. Si vous voulez encore plus simple, il y a le PPM mais bon.

+0 -0
Staff

Tout est relatif. La compression lzw n'est pas triviale.

Indeed mais comparativement au jpeg, il n'y a pas vraiment photo. Le lzw reste assez "simple" a expliquer sur le principe. Le jpeg apporte beaucoup de complexité avec les transformations cosinus, l'encodage variable, etc.

+0 -0

il n'y a pas vraiment photo

pun intended ?

Sinon normalement a coup de google il devrait y avoir moyen de trouver sans trop de problème comment sont organises les octets dans chaque fichier d'images. Mais je rejoins l'avis de Kje, le mieux est encore d'avoir une lib au moins pour la lecture et ainsi se récupérer une belle grille de pixels pour jouer avec.

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

Si c'est juste un problème de bibliothèque installable, cette mini lib propose de l'ouverture/ecriture d'image, le tout définit dans un seul header. C'est donc assez facile a intégrer dans un projet.

Mais je reste perplexe sur le but de l'application. "En fait c'est un projet de cours et on doit compresser des images". Je comprend pas trop à quoi ça correspond. Vous devez re-coder les fonctions ? En coder des nouvelles méthodes de compression ?

+0 -0
Auteur du sujet

C'est un projet en maths. Le sujet c'est "Comment stocker les images à moindre coût" On a d'abord voulu faire une compression sans perte puis on a vu que c'était la merde si on utilisait autre chose que LZW, donc on s'oriente sur la compression avec perte. Le vrai but c'est de faire des maths liés au sujet et notamment faire une application numérique (en codant) :)

+0 -0
Staff

Vous devez coder votre propre format donc ? Dans ce cas il vous faut être capable de lire au moins un autre format j'imagine pour lancer les conversion. Le fait que vous voulez faire un format de compression avec perte vous oblige a lire un format sans perte, ça vous permettra de bien mesurer l'importance de l'information supprimé par votre algo et pas celle lié a l'algo de lecture.

Vous embetez pas, prenez une lib pour la lecture. Au pire une simple comme celle linke plus que tu peux inclure direct.

Pour de l'aide sur votre format, regarde déjà ce que fait le JPEG et éventuellement le jpeg2000, vous pouvez probablement reprendre certaines des idées.

+0 -0
Auteur du sujet

Celle

Vu qu'elle est static on peut supposer qu'un simple include suffit, mais il y a des erreurs lors de la compilation. Ce sont des erreurs de conversions : "impossible de convertir le paramètre 1 de 'stb__wchar ' en 'const wchar_t '"

Édité par Ricocotam

+0 -0
Staff

Bon on va faire plus simple… Il y a quoi d'installer sur la machine ? vous etes sur du windows, du linux ? Il n'y a aucune lib de dispo ? Par exemple si vous avez Qt d'accessible ça pourrait être la solution. Vu votre sujet vous devriez vous concentrer sur la réalisation de l'algo, pas l'ouverture d'une image de référence. J'ai proposé cette lib mais il y en a d'autre.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte