1. #1
    Membre averti
    Profil pro
    Inscrit en
    avril 2005
    Messages
    866
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2005
    Messages : 866
    Points : 377
    Points
    377

    Par défaut Approximer un contour par une spline

    Bonjour,

    Comment on choisi la position des points de contrôle lorsque l'on approxime un contour par une spline ?

    Merci
    Christophe

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2011
    Messages : 256
    Points : 339
    Points
    339

    Par défaut

    ça dépend de ta spline et du type d'interpolation que tu veux mettre en place.
    https://fr.wikipedia.org/wiki/Spline#Splines_cubiques

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    1 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 1 442
    Points : 3 027
    Points
    3 027

    Par défaut

    Je n'ai aucune idée de la solution, mais je réfléchis à voix haute :

    - Tu as une forme qui peut être plus ou moins tordue. J'imagine qu'on est en dimension 2.
    Et concrètement, tu connais une série de points qui sont à la frontière de cette forme. Ou éventuellement, tu connais une série de points qui sont "intérieurs", et une autre série de points qui sont "extérieurs". Selon l'option 1 ou l'option 2, le problème sera différent. Tu es dans l'option 1 ou dans l'option 2 ?

    - Tu veux construire une spline qui représente au mieux ce contour. Donc une spline fermée (et de préférence une spline qui se ferme, non pas avec un angle entre le début et la fin de la spline, mais une spline "dérivable").

    - Et la grosse difficulté qui vient s'ajouter à cela, c'est que pour définir une spline, il faut des sommets, et malheureusement, la spline ne passe pas par les sommets. Gggrrrrrrr.
    Pire, la spline ne passe pas par les sommets qui servent à la définir, sauf les sommets n°1 et n° N.

    - Problème supplémentaire : Pour définir une spline, on a besoin de n sommets. Si on se limite à 4 ou 5 sommets, on aura une forme rudimentaire ; si on s'autorise 10 / 20 / 30 sommets, on va pouvoir avoir des formes beaucoup plus affinées ; sur quel critère on va arbitrer entre la spline de base, ou la spline raffinée, plus fidèle au contour d'origine. Dans mes anciens cours de stats, sur la classification, on parlait de variance expliquée // variance exogène, comment cela va-t-il se traduire ici ? A quel moment on va dire : Ok, en ajoutant un sommet à ma spline, j'améliore la conformité au contour de base, mais l'amélioration devient marginale.

    PS : même si au final, le besoin est de dessiner un contour sur une image, je pense que la question serait mieux dans le forum "algorithmes".
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2011
    Messages : 256
    Points : 339
    Points
    339

    Par défaut

    la plupart des problèmes que tu site sont corrigé avec une implémentation dite smoothpath
    ton contour est decrit par une suite de spline de dégrée 3 (tu peux donc forcer le passage par certain point en définissant ces points comme étant P1 ou P4 de ton polygone de controle de ta spline courrante)
    pour garder un aspect derivable entre tes spline tu force tes points de controle P3 P4 et P5 a etre aligné (tu as donc la derivé a gauche et a droite qui sont identique => derivable)
    pour boucler ton contour il suffit de forcer le dernier point comme étant le premier

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 10 033
    Points : 15 596
    Points
    15 596

    Par défaut

    +1 avec gpcbitnik38

    Et autant utiliser une spline de type interpolation (=qui passe par les points de contrôle) pour relier les points du contour.
    Le plus simple étant de tracer chaque bout de spline par une approche paramétrique: (x,y) = Spline(t)

    La plus connue:

    https://en.wikipedia.org/wiki/Centri...ull–Rom_spline
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Approximation d'une ligne par une courbe de bezier
    Par Kromagg dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 02/03/2011, 18h07
  2. Approximation d'une série de données par une fonction théorique
    Par Natrio dans le forum Statistiques et Data Mining
    Réponses: 6
    Dernier message: 05/01/2010, 09h35
  3. faire apparaitre le contour d'une image par filtre SOBEL
    Par bilzzbenzbilz dans le forum Traitement d'images
    Réponses: 33
    Dernier message: 04/03/2009, 18h18
  4. Réponses: 19
    Dernier message: 09/07/2008, 18h42
  5. Réponses: 4
    Dernier message: 22/05/2007, 17h08

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