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

    Informations forums :
    Inscription : avril 2005
    Messages : 832
    Points : 363
    Points
    363

    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
    242
    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 : 242
    Points : 315
    Points
    315

    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
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    1 062
    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 062
    Points : 2 245
    Points
    2 245

    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".

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    242
    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 : 242
    Points : 315
    Points
    315

    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
    9 999
    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 : 9 999
    Points : 15 955
    Points
    15 955

    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