matlab_affichage d'une image 2d en 3d (2d associé à un focus)

matlab_affichage d'une image 2d en 3d (2d associé à un focus) - Infographie 3D - Graphisme

Marsh Posté le 16-01-2006 à 15:31:24    

voila j'ai quelques soucis sur matlab.
J'ai en finale une image associé à un focus pour chacun des pixels
 
exemple:
 
j'ai une image A=imread('image.bmp');
donc ici je charge mon image. Elle est nommé A;
 
voila comment est composé mon image (à la base nous avons une image 2d donc (x,y))
A(x,y,1) niveau de gris du pixel (x,y)
A(x,y,2) focus associé au pixel de coordonnée (x,y)
 
voila après je veu donc affiché une sorte d'image en relief vu que chaque zone de pixel correspond un focus différent...
 
Je ne sais pas trop comment fair et quelle fonction utiliser...


Message édité par mimil71 le 16-01-2006 à 15:33:57
Reply

Marsh Posté le 16-01-2006 à 15:31:24   

Reply

Marsh Posté le 16-01-2006 à 15:43:06    

Reply

Marsh Posté le 16-01-2006 à 15:44:15    

super !!! ca c dla réponse t super cool, ca m'aide de trop ...

Reply

Marsh Posté le 16-01-2006 à 16:04:09    

:??:

Reply

Marsh Posté le 16-01-2006 à 16:07:40    

lol , les réponses sont super !!! ;)
Non mais c destiné au utilisateurs de matlab....
Les autres s'abstenir :)

Reply

Marsh Posté le 16-01-2006 à 16:09:19    

mimil71> essaye avec plot3
"help plot3"
PS: par contre je ne sais pas si ton problème rentre dans la catégorie graphisme3D.


Message édité par jlighty le 16-01-2006 à 16:15:13
Reply

Marsh Posté le 16-01-2006 à 16:11:17    

mimil71 a écrit :

super !!! ca c dla réponse t super cool, ca m'aide de trop ...


 
j'ai pas compris la moitié  [:bap2703]


---------------
visit my portf o lio on jir o toh.com
Reply

Marsh Posté le 16-01-2006 à 16:14:59    

lol ba oui c ce que je pensais fair avec plot3
Mais le problème c'est que ca marche comme un graphique
 
PLOT3(x,y,z), where x, y and z are three vectors of the same length,
plots a line in 3-space through the points whose coordinates are the
elements of x, y and z.
 
je comprend pas trop l'utilisation.. ok on entre des coordonnées mais comment fait ton pour chaque coordonné mettre la valeur du niveau de gris de la coordonnée (x,y);


Message édité par mimil71 le 16-01-2006 à 16:15:44
Reply

Marsh Posté le 16-01-2006 à 16:16:01    

tu veux le faire en 3D ou seulement en 2D mais avec une variation de couleur ?
Si c'est en 2D -> plot avec spécification de la couleur


Message édité par jlighty le 16-01-2006 à 16:16:44
Reply

Marsh Posté le 16-01-2006 à 16:16:15    

enfin je voi pas comment je peu passé mon image A avec cette fonction

Reply

Marsh Posté le 16-01-2006 à 16:16:15   

Reply

Marsh Posté le 16-01-2006 à 16:17:10    

non en faite je veu affiché l'image en relief comme un peu une motagne, c'est à dir du 2 d en relief (du 3d au final quoi)

Reply

Marsh Posté le 16-01-2006 à 16:18:08    

une image 2d auquel on associé un axe z qui symbolise la focale (le relief)

Reply

Marsh Posté le 16-01-2006 à 16:22:33    

donc tu dois utiliser la fonction plot3 rien de très difficile à faire :
tu peux passer par une boucle for imbriquée pour chaque couple (x,y) puis faire un plot3(x,y,A[x,y,2]);


Message édité par jlighty le 16-01-2006 à 16:23:24
Reply

Marsh Posté le 16-01-2006 à 16:26:48    

oki je voi pour géré la focale, j'avais pas pensé à cette soluce par contre juste un souci le (x,y) correspond au coordonné mais il faut l'associé au niveau de gris de l'image...
Et la on a aucune valeur du niveau de gris de (x,y)

Reply

Marsh Posté le 16-01-2006 à 16:31:49    

je suppose que la coordonnée Z (le relief) pour x et y données, est en fonction du niveau de gris ( A[x,y,1]) et du focus (A[x,y,2])
donc on gros on aura un code de ce type (syntaxe différente de matlab):
For x=1 à longueur image
For y=1 à largeur image
relief=f(A[x,y,1], A[x,y,2])
plot3(x,y,relief)
end for
end for


Message édité par jlighty le 16-01-2006 à 16:32:00
Reply

Marsh Posté le 16-01-2006 à 16:34:14    

oki je vais tester ca...
Merci bien pour ton aide..
 
je te redirai si ca marche lol .. @++

Reply

Marsh Posté le 16-01-2006 à 16:57:07    

par contre juste une info, f c'est sencé représenter une matrice ? car mon programme matlab:
 
function [img_3d]=affichage_3d(img)
 
%vérification de la bonne dimension entre les tabeaux
[y1,x1]=size(img);
 
%réajustement dimension réel
x1=x1/3;
 
for x=1 : x1
    for y=1 : y1
        relief=f(img[x,y,1], img[x,y,2]);
        plot3(x,y,relief);
    end  
end
 
erreur sur : relief=f(img[x,y,1], img[x,y,2]);

Reply

Marsh Posté le 16-01-2006 à 16:58:20    

enfin bon la je suis en test je vais vérifier lol tnkiète je sais qd même me démerdé un peu ;) lol ca doit être les crochets ou chai po quoi qu'il comprend pas... ou un truc a la con :)

Reply

Marsh Posté le 16-01-2006 à 17:01:08    

ouai c des parenthèses au lieu des crochets lol

Reply

Marsh Posté le 16-01-2006 à 17:10:48    

par contre et logique, il comprend pas f et a vrai dir moi non plus, je comprend le concept mais je voi pas le truc

Reply

Marsh Posté le 16-01-2006 à 17:15:03    

pour matlab, f est une matrice et il chercher des valeur dans la matrice f qu'il ne trouve pas puisque elle existe pas lol ... donc ya un pti souci

Reply

Marsh Posté le 16-01-2006 à 17:23:00    

f() est une fonction :D, il calcule le relief suivant le focus et le niveau de gris. Sachant que je ne connais pas la formule pour calculer le relief, j'ai mis f().

Reply

Marsh Posté le 16-01-2006 à 17:26:55    

oula lol, je vais aller me couché mdr... j'ai biento fini la journée lol c'est une fonction que tu as inventé ou alors elle est implémenter sur matlab? bon aller moi je reviens vendredi pour continué ....
 
enfin je reste encore un pti peu...

Reply

Marsh Posté le 16-01-2006 à 17:31:30    

f() n'est pas LA fonction miracle ;) c'est juste que son résultat (le relief) dépend du niveau de gris et du focus sans qu'une relation soit établie.
La question est :
pour un couple de coordonnées x et y, comment calcules tu le relief (coordonnée z) ?

Reply

Marsh Posté le 18-01-2006 à 18:06:41    

ce n'est pas en passant 1 chiffre en z que j'aurai un niveau de gris  associé à la position du pixel en z...
 
Je ne crois pas que se soit possible...
 
Enfin je vois le concept mais je vois vraiment pas comment cela est possible !
 
Une autre solution ??? :)

Reply

Marsh Posté le 18-01-2006 à 18:41:10    

ben regarde dans l'aide de la fonction plot3 "help plot3"

Citation :

Various line types, plot symbols and colors may be obtained with
    PLOT3(X,Y,Z,s) where s is a 1, 2 or 3 character string made from
    the characters listed under the PLOT command.


tu peux mettre un 4ème paramètre pour spécifier la couleur de ton point.


Message édité par jlighty le 18-01-2006 à 18:41:52
Reply

Marsh Posté le 18-01-2006 à 19:51:21    

Avec la fonction plot3, on ne peut pas spécifier une couleur via les valeurs RGB.
Sur ce site, il y a une version évoluée de plot3
http://www.mathworks.com/matlabcen [...] tType=file

Reply

Marsh Posté le 20-01-2006 à 11:15:45    

oki je vais abandonné le plot3, car au niveau couleur c pas possible mais j'ai trouvé la fonction surf
 
ca ma l'air beaucoup plus adapté

Reply

Marsh Posté le 20-01-2006 à 11:16:08    

SURF(X,Y,Z,C) plots the colored parametric surface defined by
    four matrix arguments.  The view point is specified by VIEW.
    The axis labels are determined by the range of X, Y and Z,
    or by the current setting of AXIS.

Reply

Marsh Posté le 20-01-2006 à 11:16:55    

et C représente la couleur

Reply

Marsh Posté le 20-01-2006 à 11:40:07    

Oui je viens te tester, ça à l'air d'être fonctionnel. Par contre la création des matrices X et Y est assez spécial.
http://www.mathworks.com/access/he [...] /surf.html
ex: si ton image fait 4x4 pixels :
 

Code :
  1. x=[ 1 2 3 4;
  2.     1 2 3 4;
  3.     1 2 3 4;
  4.     1 2 3 4];
  5. y=[ 1 1 1 1;
  6.     2 2 2 2;
  7.     3 3 3 3;
  8.     4 4 4 4];


Message édité par jlighty le 20-01-2006 à 11:40:41
Reply

Marsh Posté le 20-01-2006 à 11:43:24    

ba j'ai décomposé mon image en 2 matrice
une matrice des couleurs
une matrice des focus
 
le problème que je comprend pas c'est que j'ai une image bmp au début et dès que je fait un imshow(A) A étant mon image, je perd la couleur

Reply

Marsh Posté le 20-01-2006 à 11:45:39    

la couleur est composé de 3 données RGB  
mais dès que je fait un imread, j'ai plus que une valeur pour un pixel...

Reply

Marsh Posté le 20-01-2006 à 11:50:47    

Si j'ai une image .jpg, si je fait un imread, j'ai les couleur mais pour un .bmp il ya l'air que ca me zappe les couleurs...

Reply

Marsh Posté le 20-01-2006 à 12:02:56    

pourtant  

Citation :

BMP   1-bit, 4-bit, 8-bit, 16-bit, 24-bit, and 32-bit uncompressed
          images; 4-bit and 8-bit run-length encoded (RLE) images


sinon tu peux essayer avec du png à la place du jpeg.

Reply

Marsh Posté le 20-01-2006 à 12:57:02    

j'ai compris pourquoi ca marchai pas.
 
Qd jouvre avec matlab mon image .bmp , j'ai 2 matrice un cdata et une autre color map alors qu'avec une image .jpg, j'ai que une matrice à 3 dimension

Reply

Marsh Posté le 20-01-2006 à 13:03:21    

bon ca me fera donc une image à 4 dimension
1:R
2:G
3:B
4:focus

Reply

Marsh Posté le 20-01-2006 à 13:04:09    

par contre je sai pas comment ca fera pour la fonction surf pour passé la matrice RGB

Reply

Marsh Posté le 20-01-2006 à 13:10:46    

euh juste un problème je devai calculé la variance sur mon image, avec une image bmp, ca marchai, je prennai le cdata (image en niveau de gris) et je calculai la variance avec une fenêtre 3x3...
 
Mais avec une image en jpg avec RGB ca marche plus..
 
Je pense qu'il faut juste prendre les niveau de gris, ca minkiète car en faite j'ai plusieur image flou a la base, et je fait un mix de cet image pour au final avoir une image nette

Reply

Marsh Posté le 20-01-2006 à 14:10:38    

mimil71 a écrit :

par contre je sai pas comment ca fera pour la fonction surf pour passé la matrice RGB


tu veux faire un graphique dans ce genre http://www.mathworks.com/access/he [...] rface.html ?


Message édité par jlighty le 20-01-2006 à 14:25:16
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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