Conversion de densité de flux

8

J'essaie d'implémenter la navigation par flux, comme décrit dans http://grail.cs.washington.edu/projects/crowd-flows/ mais je ne comprends pas comment la fonction de densité de la figure 4 du document est censée gérer rayon de l'unité.

Quelqu'un a-t-il déjà mis cela en œuvre et peut-il fournir plus d'informations?

C'est la partie en question:

entrez la description de l'image ici

Leur algorithme semble n'utiliser que 4 cellules, pointant vers le bas à gauche de l'unité, est-ce donc une sorte de noyau qui doit être appliqué plusieurs fois?

Merci.

sharvey
la source
Impossible d'ajouter des balises plus pertinentes en raison du niveau de réputation.
sharvey

Réponses:

3

Non, ce n'est pas un "noyau qui doit être appliqué plusieurs fois". Vous appliquez simplement les formules telles qu'elles sont écrites, une fois.

C'est une sorte de règle étrange, cependant, et pas très clairement décrite. Permettez-moi d'essayer de clarifier un peu:

  • Tout d'abord, trouvez les quatre cellules dont le coin partagé est le plus proche de l'unité. L'unité ne fournira une quantité de densité non nulle qu'à ces cellules. Appelez ces cellules A, B, C et D comme dans la figure 4 (b).

  • Soit Δx et Δy la distance horizontale et verticale de l'unité par rapport au centre de la cellule A, mesurée en unités d'une largeur / hauteur d'une cellule.

  • Soit ρ A = min (1 − Δx, 1 − Δy) λ , ρ B = min (Δx, 1 − Δy) λ , ρ C = min (Δx, Δy) λ et ρ D = min (1 − Δx, Δy ) λ , comme décrit dans l'article.

  • Laissez l'unité contribuer à la densité ρ A de la cellule A, à la densité ρ B de la cellule B, à la densité ρ C de la cellule C et à la densité ρ D de la cellule D.

Comme je l'ai dit, la règle est un peu bizarre et je n'ai pas d'interprétation géométrique évidente à lui proposer. Il satisfait cependant aux propriétés attendues:

  • Lorsque l'unité est exactement au milieu de n'importe quelle cellule X, alors (quel que soit A, B, C ou D que nous choisissons X), elle contribue 1 λ = 1 unité de densité à la cellule X et 0 unité de densité à toute autre cellule.

  • Lorsque l'unité est exactement au coin de quatre cellules, elle contribue (1/2) unités de densité λ à chacune des quatre cellules (et rien à aucune autre cellule, par définition).

Cependant, notez que, en utilisant cette règle, la quantité totale de densité apportée par une unité à toutes les cellules n'est pas constante, même si λ = 1. En particulier, lorsque l'unité est exactement au milieu du bord entre deux cellules, il contribue (1/2) unités de densité λ à ces deux cellules, et rien à aucune autre cellule. Ainsi, appeler la valeur résultante une "densité" semble un peu trompeur.


Edit: Une autre façon d'écrire les formules pour ρ A , ρ B , ρ C et ρ D , qui peut rendre la symétrie des définitions plus apparente, est de définir d X = max (| x - x X |, | y - y X |) comme la distance de l' échiquier de l'unité à (x, y) du centre de la cellule X à (x X , y X ), mesurée en largeurs / hauteurs de cellule. Ensuite, pour toute cellule X,

  • ρ X = 0 si d X ≥ 1, et
  • ρ X = (1 - d X ) λ sinon.
Ilmari Karonen
la source
Je ne comprends pas la raison pour laquelle les cellules en bas à gauche adjacentes à celle dans laquelle l'agent est devraient recevoir une valeur de densité tandis que celles en haut à droite ne devraient pas.
sharvey
@sharvey: Parce que dans l'image, l'agent est en dessous et à gauche du centre de la cellule dans laquelle il se trouve.
Ilmari Karonen
Ah, c'est logique. Mais juste pour être clair, le rayon de l'unité n'a rien à voir avec le calcul de la densité, non?
sharvey
À droite, il ne semble pas y avoir de "rayon" dans les formules que vous avez citées qui pourraient entrer dans ces calculs.
Ilmari Karonen
Je ne suis pas plus près de l'implémenter réellement, mais merci pour la réponse. Je suppose que je vais relire le journal.
sharvey