#1 Fri 11 April 2008 22:16
- Arthy
- Participant actif
- Date d'inscription: 27 Mar 2007
- Messages: 61
Transformer du binaire en png avec IDL
Bonjour,
J'aimerai connaitre comment transformer une image binaire en jpeg ou png et en affichant à coté une légende pour la palette des couleurs de sorte qu'en regrdant la carte, on puisse approximer les valeurs prises.
J'ai essayé mais je suis parvenu à 2 résultats non satisfaisants :
une image sur l'écran que je n'arrive pas à enregistrer en fichier.png
un fichier png par usage simple de la fonction create_png sue lqeul ne figure pad de légende et en noir sur blanc uniquement
Mon image est une binaire codée sur 16 bits et dont les valeurs supérieures à 1000 sont aberrantes
Voici le code utilisé pour cette image
Code:
n_col=5600 n_lin=2800 wsa=intarr(n_col,n_lin) alb=intarr(n_col,n_lin) alb1=bytarr(n_col,n_lin) red = INDGEN(256) green = INDGEN(256) blue = INDGEN(256) openr,lun,filename,/get_lun readu,lun,wsa free_lun,lun For J = 0,n_lin-1 Do Begin For I = 0,n_col-1 Do Begin alb(I,n_lin-1-J)=wsa(I,J) Endfor Endfor result=where(alb gt 1000,count) if (count gt 0) then alb(result)=1000 Result = BYTSCL( alb, MAX=1000, MIN=0) WRITE_PNG, filename.png, result,red,green,blue
Arthy
Dernière modification par Arthy (Fri 11 April 2008 22:17)
Hors ligne
#2 Mon 14 April 2008 10:35
- Cla1r3
- Juste Inscrit !
- Date d'inscription: 7 Sep 2007
- Messages: 7
Re: Transformer du binaire en png avec IDL
Bonjour Arthy,
Imaginons que ton image est affichee en couleurs (avec une palette) sur une fenetre type WINDOW, pour la capturer, tu peux utiliser la fonction TVRD, avec le mot-clef TRUE={1|2|3} pour specifier l'entrelacement de ton image capturee (organisation des 3 plans R, G et B).
tu sauvegardes alors une image RGB 24-bit:
;; ici, ajoute le code qui cree ton image couleur + superposition de sa legende sur une fenetre de type WINDOW
capture = TVRD(TRUE=1)
WRITE_PNG, 'C:\temp\result.png', capture
Si tu souhaites sauvegarder une image avec une palette, tu peux utiliser COLOR_QUAN pour convertir ton image 24-bit en 8-bit + palette :
capture = TVRD(TRUE=1)
capture2D = COLOR_QUAN(capture, 1, red, green, blue)
WRITE_PNG, 'C:\temp\result.png', capture, red, green, blue
Pour l'histoire de la 'legende' sur l'image, tu parles d'une barre de couleurs affichee a cote ? As-tu commence un code ?
Ca change rien, mais c'est moins long a ecrire:
Utilise:
alb = ROTATE(wsa, 7) ;rotation 270 degres
plutot que:
;For J = 0,n_lin-1 Do Begin
; For I = 0,n_col-1 Do Begin
; alb(I,n_lin-1-J)=wsa(I,J)
; Endfor
;Endfor
Et pour que toutes les valeurs du tableau soient inferieures a 1000 (toutes celles etant superieures a 1000 sont seuillees a 1000)
alb = alb < 1000
;result=where(alb gt 1000,count)
;if (count gt 0) then alb(result)=1000
Claire
Hors ligne
#3 Mon 28 April 2008 18:11
- Arthy
- Participant actif
- Date d'inscription: 27 Mar 2007
- Messages: 61
Re: Transformer du binaire en png avec IDL
Salut
Merci pour ta réponse et tes conseils
Hors ligne