IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

reconstruction en 3D


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut reconstruction en 3D
    bonjour a tous.

    voila dans le cadre de mon stage
    je dois reconstruire en 3D des coupes en forme d’ellipse en 2D en conservant leur coordonnées (les ellipses sont issues de mesure de diamètres à intervalle variable c'est à dire les premières peuvent être espacées de 5 mètres et les dernières de 10 cm).
    si quelqu'un pouvait m’aider ou me conseiller?
    merci a vous.
    PS: désolé si je n'ai pas mis encore mon code mais je suis extrêmement a la bourre et je travaille toujours sur le traitement des données brutes pour la reconstruction des ellipses.
    je mets quand même 2 figures représentant mon résultat partiel.
    Images attachées Images attachées   

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    je n'ai pas compris grand chose, et surtout je n'ai pas trouvé la question

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    bonjour.
    oui je n'ai pas été assez claire donc je reformule ma question.
    en fait je travaille sur des données brutes provenant de la mesure d'ovalisation d'une conduite.
    cette mesure n'est pas continue mais ce fait par paliers non uniformes.
    dans un premier temps je reconstruis le diamètre de la canalisation sous forme d'ellipse sachant que le capteur mesure suivant un axe précis (représenter sur les images par une croix).
    une fois toutes les ellipses trouvées, je dois construire une vue 3D en superposant les ellipses en respectant leurs coordonnées ( sur la figure 3D je dois pouvoir visualiser toutes les ellipses au palier où elles ont été mesurer, l’étape suivante est d'effectuer une interpolation afin de construire le profil de la conduite.
    Voilà j’espère avoir été un peu plus claire.
    merci à vous

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Donc tu cherches une fonction qui permet de tracer des courbes en 3D?

  5. #5
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Bonjour,

    Bon ben c'est intéressant tout ça ! Ta démarche paraît plutôt structurée et on voit que tu es motivée ! Continue !

    Bon courage !

    Cordialement,

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    es ce que j'ai compris ce que tu cherche à faire :

    => tu as des ellipses qui représentent des sections d'un volume ?

    => tu veux reconstruire le volume à partir de ces sections de passage ?

    si oui, je pense qu'il faut que tu regarde du coté des courbes de Bezier (mais peut etre que matlab à déjà des truc tout pret pour faire ceci : surf, surfc...?)

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Si tu as déjà les coordonnées des contours de tes ellipses, il suffit de faire appel à la fonction pour visualiser le volume.

    Je me suis amusé à faire un petit test pour voir ce que ca pouvait donner.
    Subplot1 avec les mêmes caractéristiques pour 10 ellipses.
    Subplot2 avec 10 ellipses quelconques.
    Images attachées Images attachées  

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonjour.
    merci a tous pour vos réponses
    en fait la mesure de diamètre s'effectue comme suit :
    la première s'effectue a 17 mettre de profondeur, ensuite les suivante sont effectué tous les 5 mètres , ensuite tous les 1metres, 50cm, 68mm,34mm (la partie la plus critique est l'embout de la conduite , c'est la que sont effectué la plupart des mesure)
    dans 1 er temps je veut construire un vue 3D a partir des coupes 2d (la représentation des diamètres) pour obtenir le profil 3D de la conduite, et je pense utilisé la fonction surf comme la proposé Merel (encore merci).
    ensuite pour avoir un profil plus fidèle il faudrait que j'interpole me résultats.
    ma question alors est : est-il possible de faire ces 2 opération en une seule
    merci a vous pour vos réponses.

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par soldius87 Voir le message
    ma question alors est : est-il possible de faire ces 2 opération en une seule
    .
    Les 2 opérations? l'interpolation et la visualisation? quel est le problème avec le fait de les faire l'une après l'autre?

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    A magelan : tu as raison il n'a y aucun problème à les réaliser l'une après l'autre, c'est simplement une condition que veut m'impose mon tuteur.
    merci à toi

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    bonjour a tous.
    j'ai essayé avec surf est ça marche, mais le souci c'est que je dois respecter l'orientation de la conduite (la conduite ont elle-même est placée verticalement dans l'eau et de ce fait est soumise a des contraires qui crée une rotation)
    comment puis-je faire pour intégrer cette donnée dans la fonction surf ?
    merci a vous

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 318
    Points : 52 956
    Points
    52 956
    Par défaut
    Il faut que tu sois plus précis.

    De quelles données disposes-tu exactement ? Sous quelle forme ?

    Je pense que si tu nous fournissais un fichier avec quelques valeurs caractérisant tes "ellipses", cela nous permettrait également de faire des tests et donc de répondre plus précisément à ton problème.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    bonjour à tous.
    désoler mais avec le temps qu'on est tombé malade est vite fait.
    j'ai réussi à faire une visualisation 3D de mon profil de canalisation flexible, mais ce modèle n'est pas très au point.
    je vais d'abord reprendre ma ma question je dispose de 9 mesures de diamètre effectuées sur la canalisation entre 0 et 17 mettre comme suit :
    1 mesure 17 mettre, une a 12 mettre 7, 5, 2, 1, 50 cm et une a 6.8 cm et enfin a 3.4 cm.
    donc je dois reconstruire le profil de ma conduite avec ces mesures (en fait je reconstruis le volume de mon cylindre elliptique).
    Voilà le code que j'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    clear all
    close all
    H2=0;
    M=importdata('Scanner.txt');
    % H la position a laquel ont été effectué les mesures en metres
    H=[-1700 -1200 -700 -200 -100 -50 0 3.4 6.8];
    % V2 numero du profil correspondant a la mesure effectué
    V2=[1 2 3 4 5 9 6 7 8];
    [R,C] = find(M>0);
    Ma=max(R);
    for i=1:Ma
        V=find(R==i);
        x=(C(V))';
        y=M(i,x);
    % réorganisation pour avoir la position correspondant a l'ordre des mesure    
         R2=find(V2==i);
         H2(i)=H(R2);
         H3=H2';
        %élimination des points abérants
        MEDIAN=mean(y);
        I=find(y>MEDIAN-10 & y<MEDIAN+10);
        xcalcul=x(I);ycalcul=y(I);
        [Xcalcul,Ycalcul] = pol2cart(xcalcul/1800*pi,ycalcul);
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        [X,Y] = pol2cart(x/1800*pi,y);
        MAT(i) = fit_ellipse2( Xcalcul,Ycalcul,gca);
    % extraction des données parametres depuis la structure    
        X_ellipse(i,:)=deal(MAT(1,i).rotated_ellipse(1,:));
        Y_ellipse(i,:)=deal(MAT(1,i).rotated_ellipse(2,:));
    end
    % création du profil 3D 
    for i=1:Ma
    for j=1:100
    Z(i,j)=H3(i,1);
    end
    end
     
    surf (X_ellipse,Y_ellipse,Z)
    shading interp
    axis tight
    axis equal
    axis vis3d
    cameratoolbar
    avec la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    function ellipse_t = fit_ellipse( x,y,axis_handle )
    % initialize
    orientation_tolerance = 1e-3;
     
    % empty warning stack
    warning( '' );
     
    % prepare vectors, must be column vectors
    x = x(:);
    y = y(:);
     
    % remove bias of the ellipse - to make matrix inversion more accurate. (will be added later on).
    mean_x = mean(x);
    mean_y = mean(y);
    x = x-mean_x;
    y = y-mean_y;
     
    % the estimation for the conic equation of the ellipse
    X = [x.^2, x.*y, y.^2, x, y ];
    a = sum(X)/(X'*X);
     
    % check for warnings
    if ~isempty( lastwarn )
        disp( 'stopped because of a warning regarding matrix inversion' );
        ellipse_t = [];
        return
    end
     
    % extract parameters from the conic equation
    [a,b,c,d,e] = deal( a(1),a(2),a(3),a(4),a(5) );
     
    % remove the orientation from the ellipse
    if ( min(abs(b/a),abs(b/c)) > orientation_tolerance )
     
        orientation_rad = 1/2 * atan( b/(c-a) );
        cos_phi = cos( orientation_rad );
        sin_phi = sin( orientation_rad );
        [a,b,c,d,e] = deal(...
            a*cos_phi^2 - b*cos_phi*sin_phi + c*sin_phi^2,...
            0,...
            a*sin_phi^2 + b*cos_phi*sin_phi + c*cos_phi^2,...
            d*cos_phi - e*sin_phi,...
            d*sin_phi + e*cos_phi );
        [mean_x,mean_y] = deal( ...
            cos_phi*mean_x - sin_phi*mean_y,...
            sin_phi*mean_x + cos_phi*mean_y );
    else
        orientation_rad = 0;
        cos_phi = cos( orientation_rad );
        sin_phi = sin( orientation_rad );
    end
     
    % check if conic equation represents an ellipse
    test = a*c;
    switch (1)
    case (test>0),  status = '';
    case (test==0), status = 'Parabola found';  warning( 'fit_ellipse: Did not locate an ellipse' );
    case (test<0),  status = 'Hyperbola found'; warning( 'fit_ellipse: Did not locate an ellipse' );
    end
     
    % if we found an ellipse return it's data
    if (test>0)
     
        % make sure coefficients are positive as required
        if (a<0), [a,c,d,e] = deal( -a,-c,-d,-e ); end
     
        % final ellipse parameters
        X0          = mean_x - d/2/a;
        Y0          = mean_y - e/2/c;
        F           = 1 + (d^2)/(4*a) + (e^2)/(4*c);
        [a,b]       = deal( sqrt( F/a ),sqrt( F/c ) );    
        long_axis   = 2*max(a,b);
        short_axis  = 2*min(a,b);
     
        % rotate the axes backwards to find the center point of the original TILTED ellipse
        R           = [ cos_phi sin_phi; -sin_phi cos_phi ];
        P_in        = R * [X0;Y0];
        X0_in       = P_in(1);
        Y0_in       = P_in(2);
     
     
    else
        % report an empty structure
        ellipse_t = struct( ...
            'a',[],...
            'b',[],...
            'phi',[],...
            'X0',[],...
            'Y0',[],...
            'X0_in',[],...
            'Y0_in',[],...
            'long_axis',[],...
            'short_axis',[],...
            'status',status );
    end
     
    % check if we need to plot an ellipse with it's axes.
    if (nargin>2) & ~isempty( axis_handle ) & (test>0)
     
        % rotation matrix to rotate the axes with respect to an angle phi
        R = [ cos_phi sin_phi; -sin_phi cos_phi ];
     
        % the axes
     
        ver_line        = [ [X0 X0]; Y0+b*[-1 1] ];
        horz_line       = [ X0+a*[-1 1]; [Y0 Y0] ];
        new_ver_line    = R*ver_line;
        new_horz_line   = R*horz_line;
     
        % the ellipse
        theta_r         = linspace(0,2*pi);
        ellipse_x_r     = X0 + a*cos( theta_r );
        ellipse_y_r     = Y0 + b*sin( theta_r );
        rotated_ellipse = R * [ellipse_x_r;ellipse_y_r];
     
          % pack ellipse into a structure
        ellipse_t = struct( ...
            'a',a,...
            'b',b,...
            'phi',orientation_rad,...
            'X0',X0,...
            'Y0',Y0,...
            'X0_in',X0_in,...
            'Y0_in',Y0_in,...
            'long_axis',long_axis,...
            'short_axis',short_axis,...
            'status','',...
            'rotated_ellipse',rotated_ellipse );
     
    end
    mon problème maintenant ce que ces données sont insuffisantes pour reconstruire mon profil (il présente une dépression) comment dois-je faire pour avoir interpolé correctement mes données ?
    merci

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    bonjour.
    j'ai réussi à créer le profil 3D de ma canalisation, mais je dois réaliser l'une interpolation de mes points pour avoir une meilleure solution.
    j'ai cherché help et j'ai trouvé plusieurs fonctions comme interp3 qui me semblaient la mieux indiquées mais malheureusement ça ne marche pas (je ne connais pas la fonction relie X Y Z entre eux) comment je dois faire quelqu'un pourrait-il m'aider merci

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut interpolation en 3D
    bonjour a tous.
    j'essaye de représenter en 3D le profil d'une canalisation mais le soucie c'est que mes données sont insuffisante pour avoir une bonne représentation, donc je doit réaliser une interpolation de mes données mais ça j'arrive pas a le faire
    quelqu'un pourrait-il m’aidai svp.

  16. #16
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    mes données sont insuffisante
    Pour résoudre un problème, il faut d'abord le comprendre, c'est-à-dire, entre autres, savoir quelles sont les données, ce qui n'est pas le cas maintenant.
    Jean-Marc Blanc

  17. #17
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    je pense que ce qu'il veut dire, c'est qu'il a pas assez de points pour avoir une bonne visualisation

    moi j'utilise griddata, TriScatteredInterp ou gridfit pour des surfaces Z = f(x,y) mais là j'ai peur que ça ne marche pas dans ton cas (plusieurs z pour un x,y, même si ça reste une surface)
    regarde griddedInterpolant ça doit le faire

    edit : smooth3 peut être aussi

Discussions similaires

  1. Reconstruction d'index
    Par superfly dans le forum Oracle
    Réponses: 22
    Dernier message: 23/03/2006, 17h58
  2. Reconstruction d'une table avec index
    Par Ry_Yo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/04/2005, 10h12
  3. Réponses: 4
    Dernier message: 16/12/2004, 14h56
  4. Reconstruction de base
    Par alxkid dans le forum Administration
    Réponses: 13
    Dernier message: 11/03/2004, 13h10
  5. reconstruction de date
    Par Jayce82 dans le forum ASP
    Réponses: 3
    Dernier message: 23/10/2003, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo