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 :

Calcul du vecteur normal intérieur à une b-spline [Débutant]


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 34
    Points
    34
    Par défaut Calcul du vecteur normal intérieur à une b-spline
    Bonjour

    J'ai une b-spline cubique uniforme cyclique placée sur une image, et je voudrai calculer le vecteur normal intérieur à ce contour.

    De souvenir (ça remonte à longtemps), on peut obtenir le vecteur normal en calculant le vecteur gradient de la courbe et en le normalisant. Ai je juste ?

    Donc je suis partit de ce principe :

    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
     
    %Récupère les coordonnées du contour de la b-spline
    vect_x = bspline(1,:);
    vect_y = bspline(2,:);
     
    %Crée un masque du contour
    for j = 1:size(bspline,2)
     
        mask(vect_y(j),vect_x(j)) = 1;
     
    end
     
    [grady,gradx] = gradient(mask);
    magnitudeGradient = sqrt ((gradx .^2 + grady .^2));
     
    Nx = gradx./magnitudeGradient;
    Ny = grady./magnitudeGradient;
    Avec Nx,Ny et magnitudeGradient , ai je tout ce dont j'ai besoin pour mon vecteur normal ? Et comment puis je le visualiser ?

    Désolé ça fait longtemps que je n'ai pas ce genre de chose.

    Merci pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Bonjour,

    Pour ce qui est de l'algorithme, aucune idée. Il y a un forum pour ça.

    Sinon, pour visualiser ton vecteur :

    Christophe
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  3. #3
    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
    oui le gradient de ta surface te donne la normale

  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
    Bonjour,

    non, le gradient ne donne pas la normale mais la tangente de la courbe, pour la normale, il faut prendre un vecteur orthogonale à la tangente.

    Pour visualiser les vecteurs, tu peux utiliser quiver, il y a un exemple dans la doc de gradient.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    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
    je me suis mal exprimé, c'est le gradient à l'équation de surface qui donne la normale. Regarde ici :
    http://fr.wikipedia.org/wiki/Normale_%C3%A0_une_surface

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    Merci beaucoup , oui en effet ça me revient maintenant pour la normale.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calculer le vecteur normal a un plan formé par trois points.
    Par parp1 dans le forum Mathématiques
    Réponses: 12
    Dernier message: 11/03/2013, 17h57
  2. Comment calculer le vecteur HOG d'une image ?
    Par addihoub dans le forum OpenCV
    Réponses: 4
    Dernier message: 04/02/2012, 20h08
  3. Calculs des vecteurs propres d'une matrice Symétrique
    Par nadal1991 dans le forum Mathématiques
    Réponses: 20
    Dernier message: 22/06/2011, 00h04
  4. Calcul de la normale d'une surface (raytracing)
    Par aerendil dans le forum Mathématiques
    Réponses: 0
    Dernier message: 02/06/2009, 17h57
  5. Calculer la normale d'une surface
    Par choko83 dans le forum OpenGL
    Réponses: 5
    Dernier message: 09/12/2008, 19h51

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