matlab_affichage d'une image 2d en 3d (2d associé à un focus) - Infographie 3D - Graphisme
Marsh Posté le 16-01-2006 à 15:44:15
ReplyMarsh 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
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.
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é
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);
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
Marsh Posté le 16-01-2006 à 16:16:15
enfin je voi pas comment je peu passé mon image A avec cette fonction
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)
Marsh Posté le 16-01-2006 à 16:18:08
une image 2d auquel on associé un axe z qui symbolise la focale (le relief)
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]);
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)
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
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 .. @++
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]);
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
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
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
Marsh Posté le 16-01-2006 à 17:23:00
f() est une fonction , 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().
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...
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) ?
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 ???
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 |
tu peux mettre un 4ème paramètre pour spécifier la couleur de ton point.
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
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é
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.
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 :
|
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
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...
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...
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 |
sinon tu peux essayer avec du png à la place du jpeg.
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
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
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
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
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 ?
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