Transformer une matrice en image sous MATLAB

Transformer une matrice en image sous MATLAB - Divers - Programmation

Marsh Posté le 06-02-2010 à 15:56:10    

Bonjour a tous.
J'analyse deux images (1 et 2) représentant le même objet sous MATLAB. Du fait de leur acquisition différente, je sais qu'il y a un leger decalage entre ces deux images. Apres avoir determiner les coordonnees des points contrôles, j'ai modifier l'image 2 en faisant t=cp2tform(coor2, coor1, 'lwm') puis new2=imtransform(2, t). Apres avoir obtenu la nouvelle matrice de 2 (50*50 single), j'ai transformer cette derniere en image tif. Mon problème est que dans la nouvelle matrice, l'intensité des pixels est donne en nombre réel, mais que sur ma nouvelle image (en 8-bit), les pixels apparaissent en nombre entier (je perd donc énormément d'informations). A contrario, les pixels de mes images initiales (32bit) sont eux en nombres réels. Le fait de changer le nombre de bit de mon image final ne change pas le fait d'avoir toujours des nombres entiers.
Question: ya t'il une facon, astuce, pour pouvoir transformer une matrice en image tout en gardant exactement l'information ?
Merci pour votre aide

Reply

Marsh Posté le 06-02-2010 à 15:56:10   

Reply

Marsh Posté le 07-02-2010 à 19:04:11    

les images enregistrent les données dans un format particulier donc si tu utilise un type d'image qui enregistre les données en entier sur 8bits tu ne peux pas avoir de reel ... apres quel est l'objectif de la transformation en tiff ? pour enregistrer les données ? tu peux enregistrer des variables matlab directement, si tu veux enregistrer dans un format d'image pour réutiliser ailleur tout en gardant l'information sur des réels tu peux enregistrer au format exr http://www.mit.edu/~kimo/software/matlabexr/exr.html ou autre
 
et on transforme pas une matrice en image, on enregistre une matrice en image, je vois pas du tout ce que tu veux dire par transformer une matrice en image ... dans matlab une image est une matrice ...


Message édité par satirik le 07-02-2010 à 19:05:33
Reply

Marsh Posté le 07-02-2010 à 22:21:27    

Salut Satirik,  
Pour répondre a tes différentes questions: Initialement, mes images sont en tif 32bit, que je lit en utilisant ImageJ. Quant je regarde l'intensité des pixels, ils m'apparaissent en nombre réel (ex:5.33987) d'ou l'idee que les pixels de mes images sont en monbre réel. Quant j'importe ces images sous Matlab, les nombres dans la matrice sont eux aussi en réel (jusqu'ici, tout va bien). Comme je doit retravailler sur l'image 2, je veux enregistrer ma nouvelle matrice "new2" dans un format d'image compatible avec ImageJ, d'ou ma premiere idee d'enregistre sous tif. Dans ce cas, les données apparaissent en nombre entier (la, c'est pas bon). Ton idée d'enregistrer en exr me semble bonne mais je viens de m'apercevoir qu'ImageJ ne lit pas ce format :(  Par contre il lit les TIFF, PNG, GIF, JPEG, BMP, DICOM, FITS. Je cherche donc un moyen d'enregistrer ma nouvelle matrice dans un format d'image compatible avec ImageJ sans perdre d'information.  
Et désoler pour le "transformer une matrice en image", je voulait plutôt dire "enregistrer une matrice en image"
 

Reply

Marsh Posté le 08-02-2010 à 07:59:36    

Par défaut matlab stocke ces données en double. A toi de récupérer la sortie de image dans une matrice typée

Reply

Marsh Posté le 10-02-2010 à 13:04:48    

apparement la version 2009b de matlab supporte l'enregistrement en tiff 32bits, sinon la meilleure chose à faire c'est d'enregistrer dans le premier format d'image qui supporte les réels 32bits comme l'exr et de convertir en tiff après coup

Reply

Sujets relatifs:

Leave a Replay

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