Transformer une matrice à une image

Transformer une matrice à une image - C++ - Programmation

Marsh Posté le 01-08-2006 à 09:12:10    

Salut,
j ai un fichier texte qui contient seulemnt des valeurs numérique entre -10000 et 10000.je veux transformer ce fichier en une image de n'importe quelle autre format d'image.mais je connais pas comment il faut le faire.
j'aimerais bien savoir comment il le faut faire et merci pour votre réponse.
c'estun exemple de valeurs que j ai:
 
764.454    768.429     754.782    775.108
772.542    736.752     -227.144   -215.923
-280.154  -248.948    -227.144   -215.923  
-438.327  -385.182    -352.626   -349.389

Reply

Marsh Posté le 01-08-2006 à 09:12:10   

Reply

Marsh Posté le 01-08-2006 à 12:43:00    

"je veux transformer ce fichier en une image de n'importe quelle autre format d'image"
Possible préciser la pensée ? Pas comprendre.
 
C'est pour faire un fichier genre BMP avec les points ? (256 niveaux par couleur, une ou trois couleurs donc précision limitée) ??

Reply

Marsh Posté le 01-08-2006 à 13:26:46    

stiko83 a écrit :

Salut,
j ai un fichier texte qui contient seulemnt des valeurs numérique entre -10000 et 10000.je veux transformer ce fichier en une image de n'importe quelle autre format d'image.mais je connais pas comment il faut le faire.
j'aimerais bien savoir comment il le faut faire et merci pour votre réponse.
c'estun exemple de valeurs que j ai:
 
764.454    768.429     754.782    775.108
772.542    736.752     -227.144   -215.923
-280.154  -248.948    -227.144   -215.923  
-438.327  -385.182    -352.626   -349.389


 
Ca ne veut juste rien dire c'est ça ?  [:jofission]  
 
Avec quel langage ?
Sous quelle plateforme ?
Ton fichier possède toujours quatre colonnes ?
Comment interpreter les valeurs négatives ? Et positives ? C'est un fichier image ? De quel format natif ?

Reply

Marsh Posté le 01-08-2006 à 14:06:59    

au début il ya avait une image duquelle j ai obtenu une fichier texte contenant les valeurs de chaque pixel.
 

Citation :

Avec quel langage ?


puis j ai ouvert le fichier texte et j ai transmi les valeurs dans une matrice surlaquele j ai fait beaucoup de calcul matriciel(multiplicatio, addition, ...) par une classe en C++ que j ai deja fait et à a la fin j ai eu une matrice contenant des valeurs comme l'exemple que j ai donné avant puis j ai mis les valeurs dans un fichier texte.j aimerais bien savoir s il ya un moyen pour convertire ces valeurs à une image de  n importe quelle valeur.
 

Citation :

Ton fichier possède toujours quatre colonnes ?


mon fichier contient 1300 colonnes et 60 lignes
 

Citation :

Sous quelle plateforme ?  


je travaille sous VS 2003

Reply

Marsh Posté le 01-08-2006 à 14:14:15    

stiko83 a écrit :

au début il ya avait une image duquelle j ai obtenu une fichier texte contenant les valeurs de chaque pixel.


Les valeurs ? 32 bits en 4x8 bits
...
 

stiko83 a écrit :

Citation :

Avec quel langage ?


puis j ai ouvert le fichier texte et j ai transmi les valeurs dans une matrice surlaquele j ai fait beaucoup de calcul matriciel(multiplicatio, addition, ...) par une classe en C++ que j ai deja fait et à a la fin j ai eu une matrice contenant des valeurs comme l'exemple que j ai donné avant puis j ai mis les valeurs dans un fichier texte.j aimerais bien savoir s il ya un moyen pour convertire ces valeurs à une image de  n importe quelle valeur.


Moi je comprends ceci:
"J'ai pris des valeurs de texte, je les ai passées dans une boite noire, j'ai retrouvé des valeurs, faites en moi une image".
Comment veux tu en faire quoi que ce soit si personne ne sait à quoi correspondent ces valeurs ?
T'as fait ca tout seul ? ou t'as repompé du code que tu ne comprends pas ?
 

stiko83 a écrit :

Citation :

Ton fichier possède toujours quatre colonnes ?


mon fichier contient 1300 colonnes et 60 lignes


 
Ce qui corresponds à ... :??:


Message édité par _darkalt3_ le 01-08-2006 à 14:14:37
Reply

Marsh Posté le 01-08-2006 à 14:59:26    

Pour ce qu'il en avait dit sur un autre forum, à ce que j'ai compris, c'est comme mettre une heightmap dans un fichier image... faire d'une valeur x,y  une couleur proportionelle, stockée dans une image.
 
Arrete moi si je me trompe :)


---------------
tutos de programmation 3D :
Reply

Marsh Posté le 01-08-2006 à 15:04:56    

le plus simple c'est pas de te dire que tu as une image de 1300x60 ? donc tu normalises tes valeurs :
[-10000;10000]-->[0;256] (même si le mieux serait de [min; max] -->[0;256], mais  bon)
tu colles un joli entete de bitmap qui va bien (avec la bonne  taille et tout et tout) et tu affiches.
 
Evidement si tu es en RGB n'oublie pas de repeter la valeur de chaque 'pixel' deux fois pour avoir une jolie image
 
alors après, pour la réalité 'physique' de ce que tu vas voir, là je n'ai qu'un mot... CLEP !
 
@pluche


Message édité par pfuitt le 01-08-2006 à 15:06:48
Reply

Marsh Posté le 01-08-2006 à 15:07:49    

Yep, j'ai dja répondu ca sur l'autre forum  :)
 

Citation :


si min= le minimum , et max = le maximum... mets
couleur[x][y] = (char) ((float)valeur[x][y]-min)/(max-min)*256;


 
Après, c'est sur suffit d'écrire ca ds une image au format quelconque...  
Mais faut croire que c'est pas ca ^^


---------------
tutos de programmation 3D :
Reply

Marsh Posté le 01-08-2006 à 15:08:41    

wops, d'ailleurs c'est *255 , et pas *256 si le maximum est ateint :p


---------------
tutos de programmation 3D :
Reply

Marsh Posté le 01-08-2006 à 15:10:12    

icareo a écrit :

wops, d'ailleurs c'est *255 , et pas *256 si le maximum est ateint :p


oups ai fait la meme boulettos !
 

Reply

Marsh Posté le 01-08-2006 à 15:10:12   

Reply

Marsh Posté le 01-08-2006 à 15:33:57    

Pseudo-relief ?

Reply

Marsh Posté le 01-08-2006 à 15:42:12    

Citation :

le plus simple c'est pas de te dire que tu as une image de 1300x60 ? donc tu normalises tes valeurs :
[-10000;10000]-->[0;256] (même si le mieux serait de [min; max] -->[0;256], mais  bon)
tu colles un joli entete de bitmap qui va bien (avec la bonne  taille et tout et tout) et tu affiches.


 
j ai normalisé les valeurs [min; max] -->[0;256] et j ai repeté les valeurs 2 fois pour le RGB.je veus essayer maintenant avec le format .ppm car il a une entete tres facile a faire et je veux voir ce que je peu voir comme image aprés.
merci

Reply

Marsh Posté le 01-08-2006 à 22:59:37    

l image que j obtient est mabigu et pas clair de tout.

Reply

Marsh Posté le 02-08-2006 à 00:47:46    

mabigu ??? cai phrenssai sa ?


---------------
tutos de programmation 3D :
Reply

Marsh Posté le 02-08-2006 à 00:50:27    

Utilise un truc comme Matlab/IDL ou tout autre package de visualisation de données. Il y en a pas mal sur le net.


Message édité par el muchacho le 02-08-2006 à 00:51:29

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 02-08-2006 à 08:53:54    

Si on regarde l'amplitude des valeurs exemple
764.454    768.429     754.782    775.108
772.542    736.752     -227.144   -215.923
-280.154  -248.948    -227.144   -215.923  
-438.327  -385.182    -352.626   -349.389
et qu'on fait rentrer l'échelle [-10000, +10000] dans [0, 255], ça ne doit pas varier beaucoup !! (-280.154  -248.948    -227.144   -215.923 doivent donner la même amplitude sur 256 niveaux ?)
Il vaudrait peut-être mieux prendre les valeurs maxi/mini effectives des points et les faire rentrer dans la "gamme" [0, 255] (ça fait un zoom)

Reply

Marsh Posté le 02-08-2006 à 09:08:44    

Il faudrait surtout voir ce que son exactement ces valeurs, pour peut etre pouvoir les interpreter correctement...

Reply

Marsh Posté le 02-08-2006 à 11:33:07    

Carbon_14 a écrit :

Si on regarde l'amplitude des valeurs exemple
764.454    768.429     754.782    775.108
772.542    736.752     -227.144   -215.923
-280.154  -248.948    -227.144   -215.923  
-438.327  -385.182    -352.626   -349.389
et qu'on fait rentrer l'échelle [-10000, +10000] dans [0, 255], ça ne doit pas varier beaucoup !! (-280.154  -248.948    -227.144   -215.923 doivent donner la même amplitude sur 256 niveaux ?)
Il vaudrait peut-être mieux prendre les valeurs maxi/mini effectives des points et les faire rentrer dans la "gamme" [0, 255] (ça fait un zoom)


 
c'est ce qu'il a fait. mais sinon l'idée du pseudo relief est un peu plus compliquée à coder mais bcp plus jolie. Quand à la représentation physique des données, ça, c'est une autre paire de manche...
 

Reply

Marsh Posté le 02-08-2006 à 12:22:26    

Faudrait voir effectivement le phénomène concerné.
Parfois on découpe l'amplitude maxi en 10 et associe 10 couleurs (ça dépend des besoins, et ce qu'on veut visualiser).
 
Même en "zoomant" sur les amplitudes utiles, s'il a quelques points qui atteignent -10000 et +10000, ils seront "hors champ".

Reply

Marsh Posté le 02-08-2006 à 13:21:39    

discrete cosine transform ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 02-08-2006 à 16:47:26    

Si tu dis que ta gamme va de -10000 à +10000 alors oui, aucune difference entre -280.154  -248.948    -227.144   -215.923 quand tu réduits sur 0-255 !
Ceci dit, si par exemple tu as peu de -1000 et +1000, mais beaucoup de valeurs tournant entre -100 et +100, tu peux utiliser des fonctions mathématiques (tout dépend de ce que t'as comme chiffres...) pour donner plus de précision dans les zones ou ya plus de nombres ! Par contre, les nombres les moins nombreux (dsl, c'est con comme phrase) seront plus...tassés ^^
 
je sais pas si c'est clair...... ??
 
 
bref, si tu veux de la précision, faut pas te ramener à une echelle 0-255 ^^
 
A moins que tu utilises les 3 couleurs pour plus de précision ... ca ferait 256 * 3 paliers... au lieu de 256 :/


Message édité par icareo le 02-08-2006 à 16:50:22

---------------
tutos de programmation 3D :
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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