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

Algorithmes et structures de données Discussion :

Coordonnées polaires vers coordonnées XY (cartésiennes)


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut Coordonnées polaires vers coordonnées XY (cartésiennes)
    Bonjour,

    J'ai des données d'un capteur que je recois en coordonnées polaires. Les données recues sont des tableaux MxN, les données en X sont des coordonnées polaires de {-theta , theta} avec une résolution de (theta*2/M) .
    Les coordonnées en Y sont les distance de [dmin, dmax] avec une résolution de (dmax-dmin) / N.

    Quelqu'un pourrait me conseiller un algorithme permettant de creer une grille d'occupation à partir de mon jeu de donnée polaire?

    Je ne sais pas comment pondérer la valeur en coordonnée polaire vers la grille en cordoonée XY. Par exemple si pour la coordonnée polaire p = (r,theta) j'obtiens un point pg = (10.66,1.88) quel est la pondération que je dois appliquer au 4 pixels au alentour?

  2. #2
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Coordonnées polaires vers coordonnées XY (cartésiennes)
    Bonjour,

    Citation Envoyé par black_hole Voir le message
    ... Je ne sais pas comment pondérer la valeur en coordonnée polaire vers la grille en cordoonée XY. Par exemple si pour la coordonnée polaire p = (r,theta) j'obtiens un point pg = (10.66,1.88) quel est la pondération que je dois appliquer au 4 pixels au alentour?
    En notant P00, P10, P01 et P11 les pixels de
    coordonnées respectives (10, 1), (11, 1), (10, 2) et (11, 2),
    le pixel "moyen" résultera de la combinaison linéaire:
    Pm = (1-0.66)*(1-0.88).P00 + 0.66*(1-0.88).P10 + (1-0.66)*0.88.P10 + 0.66*0.88.P11 .

    Si l'on veut rationaliser cela,il faut décomposer toute coordonnée réelle en deux parties entière et décimale:
    x = Ex + Dx , avec Ex = Trunc(x) , Dc = Frac(x);
    y = Ey + Dy, avec Ey = Trunc(y) , Dc = Frac(y);
    chaque composante couleur (j = 1, 2 ou 3) du pixel moyen pourra ainsi s'exprimer en fonction des 4 pixels concernés:
    P00 = P(Ex, Ey) , P10 = P(Ex+1, Ey) , P01 = P(Ex, Ey+1) et P11 = P(Ex+1, Ey+1)
    (et en tenant compte de la nécessité de revenir à un résultat entier) par la combinaison linéaire:
    P(x, y)[j] = Round((1-Dx)(1-Dy)*P00[i] + Dx(1-Dy)*P10[j] + (1-Dx)Dy*P01[j] + Dx*Dy*P11[j]) .

    La formule d'interpolation peut se réduire à des sommes de deux termes, mais elle comporte alors deux stades impliquant des vecteurs de R3; il suffit d'écrire dans ce cas:
    Wx0[j] = (1-Dx)*P00[i] + Dx*P10[j] ,
    Wx1[j] = (1-Dx)*P01[j] + Dx*P11[j] ,
    P(x, y)[j] = Round((1-Dy)*Wx0[j] + Dy*Wx1[j]) .

    Formules à vérifier.

  3. #3
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 644
    Par défaut Vers l'implémentation
    Bonjour,

    La réponse de wiwaxia est complète et il n'y a donc rien à ajouter à l'algorithme éprouvé d'interpolation bilinéaire (même si j'ai toujours été gêné qu'un point qui, en général, sera dans un seul triangle des 4 points voisins altère aussi le quatrième point ).

    Cependant sur cette base, l'implémentation peut être plus ou moins efficace. Des mises en facteurs peuvent diminuer sensiblement le nombre d'opérations (notamment les multiplications en flottants) et il existe une instruction sincos qui divise par deux les temps de projection cartésienne.

    Salutations

  4. #4
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Coordonnées polaires vers coordonnées XY (cartésiennes)
    Bonjour,

    Citation Envoyé par Guesset Voir le message
    ... j'ai toujours été gêné qu'un point qui, en général, sera dans un seul triangle des 4 points voisins altère aussi le quatrième point ) ...
    La valeur locale d'une fonction de deux variables W(x, y) sur le domaine de double interpolation
    [Ex, Ex + 1]×[Ey, Ey + 1]
    est donnée par le polynôme symétrique:
    W(Ex + Dx, Ey + Dy) = (1-Dx)(1-Dy)*P00[i] + Dx(1-Dy)*P10[j] + (1-Dx)Dy*P01[j] + Dx*Dy*P11[j] ,
    auxquelles sont équivalentes les deux étapes précédemment données.

    Le polynôme en question équivaut à la donnée implicite de deux fonctions affines:
    a) à (Dy) constant: W(Ex + Dx, Ey + Dy) = A(Dy) + B(Dy)*Dx ,
    b) à (Dx) constant: W(Ex + Dx, Ey + Dy) = C(Dx) + D(Dx)*Dy .

    La surface d'équation z = F(x, y) = (1-x)(1-y)*K00 + x(1-y)*K10 + (1-x)y*K01 + xy*K11
    contient un double faisceau de droites situées dans des plans parallèles à (xOz) et (yOz).

  5. #5
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 644
    Par défaut
    Bonjour Wiwaxia,

    Je te remercie mais j'exprimais seulement une limitation des traitements bilinéaires qui, en appliquant une opération linéaire en x puis en y (ou dans l'ordre inverse, cela n'a pas d'importance si la transformation a, comme ici, seulement une pente et pas de constante), inscrit ses effets dans un carré ce qui ne saurait être optimal.

    Par exemple, pour un point P dans une maille carrée, le point le plus loin dans cette maille peut être plus loin qu'un point d'une autre maille. Pourtant seul le premier sera altéré. Cela traduit une métrique implicite non isotrope (un compas qui trace des carrés ).

    L'avantage essentiel est la simplicité et donc l'efficacité en temps de traitement. Comme tu l'écris, c'est une double interpolation et non une interpolation de surface.

    C'est un joli sujet en soi loin d'être épuisé par quelques algorithmes éprouvés.

    Salutations

    Philippe

  6. #6
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Coordonnées polaires vers coordonnées XY (cartésiennes)
    Tes remarques suscitent quelques observations.
    Citation Envoyé par Guesset Voir le message
    ... pour un point P dans une maille carrée, le point le plus loin dans cette maille peut être plus loin qu'un point d'une autre maille. Pourtant seul le premier sera altéré. Cela traduit une métrique implicite non isotrope (un compas qui trace des carrés ) ...
    Il importe de distinguer tout point quelconque du plan, pour lequel on cherche une estimation de la couleur locale, des noeuds de la grille où la fonction est parfaitement connue, puisqu'il s'agit des pixels de l'image initiale.
    L'arrangement régulier de ces derniers détermine une partition du plan de l'image, et les sommets (A, B, C, D) d'un carré sont bien les noeuds les plus proches de tout point (M) situé à l'intérieur.
    Les indices (r, v, b) de la couleur locale sont naturellement bornés par les valeurs extrêmes rencontrées aux sommets, et l'on a (sauf configuration très particulière et discutable):
    Min(IA, IB, IC, ID) <~ IM <~ Max(IA, IB, IC, ID) ;
    d'où l'idée d'une combinaison linéaire impliquant des distances, et conduisant à une valeur locale (IM) d'autant plus proche de celle de l'un des sommets que la distance correspondante est plus faible.

    a) Dans le cas d'un assemblage hexagonal de pixels, la maille est un triangle équilatéral (AB = BC = CA = a) et les indices des 3 sommets sont pondérés par les distances séparant le point considéré (M) de chacun des trois côtés:
    a(31/2/2).IM = MI*IA + MJ*IB + MK*IC ;
    la somme des longueurs des 3 hauteurs abaissées depuis le point (M) est en effet constante , et l'on établit facilement l'égalité:
    MI + MJ + MK = AB.(31/2/2)
    à partir de l'expression de l'aire du triangle.
    Nom : Triangle_Carré_02.png
Affichages : 304
Taille : 20,6 Ko
    b) Cependant les pixels constituent le plus souvent un réseau à maille carrée (AB = BC = CD = DA = a), et les distances séparant le point (M) des 4 côtés vérifient les relations:
    MI + MK = MJ + ML = a ;
    on envisage alors la combinaison linéaire:
    a2.IM = MJ.(MK.IA + MI.IC) + ML.(MK.IB + MI.ID)
    d'où découle naturellement la relation donnée au message #02.

    Il s'agit bien, dans les deux cas, de distances euclidiennes.

Discussions similaires

  1. Flou circulaire/radial : conversion polaire vers cartésien et inversement
    Par BeanzMaster dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 31/12/2019, 13h50
  2. Coordonnées sphériques->cartésiennes dans l'espace
    Par dridri85 dans le forum Mathématiques
    Réponses: 4
    Dernier message: 20/02/2011, 15h51
  3. [Maxmind-Jpgraph] Problème de matheux, coordonnées géo-cartésiennes
    Par ixabro dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 22/09/2010, 17h07
  4. Réponses: 2
    Dernier message: 13/05/2008, 11h53
  5. Passage des coordonnées polaires a cartésiennes
    Par raida8 dans le forum Débuter
    Réponses: 1
    Dernier message: 29/04/2008, 10h48

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