Premium Posté(e) le 7 novembre 2006 Partager Posté(e) le 7 novembre 2006 Salut, J'ai une image avec des niveaux gris et noir.Je charge cette image en mémoire. Ce que je voudrai savoir, c'est comment faire pour calculer le minimum / maximum de niveau de gris (i.e. d'altitude) de l'image C'est pour pouvoir créer un quadtree Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 7 novembre 2006 Partager Posté(e) le 7 novembre 2006 ben tu la parcours et tu stockes les valeurs min et max y a des moyen plus rapide, mais sans doute trop compliqués Lien vers le commentaire Partager sur d’autres sites More sharing options...
Premium Posté(e) le 7 novembre 2006 Auteur Partager Posté(e) le 7 novembre 2006 ben tu la parcours et tu stockes les valeurs min et max y a des moyen plus rapide, mais sans doute trop compliqués Déjà pour la version que tu considères comme simple, j'ai du mal Je n'arrive pas à saisir comment on parcours une image qui a été chargée et on récupère les valeurs souhaitées Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 7 novembre 2006 Partager Posté(e) le 7 novembre 2006 ben tu l'a chargée, donc tu as vraissemblablement un pointeur vers une zone de mémoire contenant tous les pixels. En gors, un simple boucle sur tous ces pixels suffit : En considérant que image(i) est la valeur du i-ième pixel de l'image (et ce peu importe le sens de parcours) max = 0 min = 0 Pour i allant de 0 à Hauteur*Largeur faire si image(i) > max alors max = image(i) si image(i) < min alors min = valeur(i) fin pour une image, c'est juste un tableau de pixels. Comment tu ferais pour récupérer le min et le max d'un tableau ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
woodystable Posté(e) le 8 novembre 2006 Partager Posté(e) le 8 novembre 2006 Je ne vois pas qu'est ce qui pourrait être plus rapide qu'un parcourt linéaire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 8 novembre 2006 Partager Posté(e) le 8 novembre 2006 ça dépend des opération que tu fais dans ton parcours linéaire Lien vers le commentaire Partager sur d’autres sites More sharing options...
tsubasaleguedin Posté(e) le 8 novembre 2006 Partager Posté(e) le 8 novembre 2006 Je ne vois pas qu'est ce qui pourrait être plus rapide qu'un parcourt linéaire. Ba si le tableau memoire est pas triée ni indexé, rien ... :) sinon un coup de dichote et autre joyeuserie Lien vers le commentaire Partager sur d’autres sites More sharing options...
jromang Posté(e) le 8 novembre 2006 Partager Posté(e) le 8 novembre 2006 Je ne vois pas qu'est ce qui pourrait être plus rapide qu'un parcourt linéaire. Ba si le tableau memoire est pas triée ni indexé, rien ... :) sinon un coup de dichote et autre joyeuserie Si l'image n'a pas de propriété particuliere, je ne vois pas comment on peut eviter de parcourir chaque pixel ? Pour la vitesse par contre, on peut traiter les pixels par paquets grace aux instructions SSE. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Premium Posté(e) le 9 novembre 2006 Auteur Partager Posté(e) le 9 novembre 2006 Salut, J'ai un fichier fichier.txt de la forme : image.png //filename de la fonction parse, c'est le nom de l'image1000.0 1000.0 // width, height 240.0 //altitude_max 10.0 //tolerance J'ai écrit une fonction parse ayant ce prototype. int parse(const char *filename, char *png, double *width, double *height, double *altitude_max, double *tolerance) Cette fonction permet de récupérer les valeurs du fichier J'ai une structure gl_texture_t qui permet d'avoir des infos concernant une image typedef struct { GLsizei width; GLsizei height; GLenum format; GLint internalFormat; GLuint id; GLubyte *texels; } gl_texture_t; et une fonction ReadPNGFromFile qui permet de lire l'image qu'on lui donne. Son prototype est : gl_texture_t * ReadPNGFromFile (const char *filename) Le souci que j'ai est dans l'écriture d'une fonction d'une fonction : int load(gl_texture_t *image) qui retourne 0 si pas d'erreur et une valeur >0 sinon car pour cette fonction, je n'ai besoin que du nom de l'image alors que ma fonction parse récupère tout le fichier. Cette fonction permettra d'avoir toutes les infos souhaitées sur l'image chargée. Pour cette fonction, il faut que je m'y prenne comment ? J'aurai besoin du fichier complet lorsque je devrai créer mon quadtree. Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
tsubasaleguedin Posté(e) le 9 novembre 2006 Partager Posté(e) le 9 novembre 2006 Attention opengl accepte uniquement pour texture des tableau memoire de pixel ! Donc ne pas essayer de lui fourger un format compressé en entrée ! Opengl est capable de lire directement des texture au format BMP ( pas de codage RLE, BMP brut ), du TGA ou des images en .RGB direct. Si tu veux lire des textures Jpeg/png/gif tu dois passer par une librairie tierce ( libjpeg ou SDL par exemple , ou libpng pour le png) pour pouvoir decompresser l'image en memoire ce qui te donnera ton tableau de pixel. -Envoie du nom de l'image a la fonction -Fonction du type d'image ( extraction extension ), rediriger vers la fonction qui est capable de la decompresser. -Ouvrir une nouvelle texture -Remplir la texture avec notre tableau de pixel Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.