Conversione della densità del campo di flusso


8

Sto cercando di implementare la navigazione del campo di flusso, come descritto in http://grail.cs.washington.edu/projects/crowd-flows/ ma non riesco a capire come dovrebbe gestire la funzione di densità nella Figura 4 del documento raggio unitario.

Qualcuno l'ha mai implementato e può fornire ulteriori informazioni?

Questa è la parte in questione:

inserisci qui la descrizione dell'immagine

Il loro algoritmo sembra usare solo 4 celle, indicando in basso a sinistra sull'unità, quindi è questo un qualche tipo di kernel che deve essere applicato più volte?

Grazie.


Impossibile aggiungere tag più pertinenti a causa del livello di reputazione.
Sharvey,

Risposte:


3

No, non è un "kernel che deve essere applicato più volte". Basta applicare le formule come scritte, una volta.

È una specie di regola strana, però, e non molto chiaramente descritta. Vorrei provare a chiarire un po ':

  • Innanzitutto, trova le quattro celle il cui angolo condiviso è il più vicino all'unità. L'unità contribuirà con una quantità di densità diversa da zero solo per quelle celle. Chiama quelle celle A, B, C e D come in figura 4 (b).

  • Sia Δx e Δy la distanza orizzontale e verticale dell'unità dal centro della cella A, misurata in unità di una larghezza / altezza di una cella.

  • Sia ρ A = min (1 − Δx, 1 − Δy) λ , ρ B = min (Δx, 1 − Δy) λ , ρ C = min (Δx, Δy) λ e ρ D = min (1 − Δx, Δy ) λ , come descritto nel documento.

  • Lascia che l'unità contribuisca ρ A densità alla cella A, ρ B densità alla cella B, ρ C densità alla cella C e ρ D densità alla cella D.

Come ho detto, la regola è piuttosto strana e non ho alcuna ovvia interpretazione geometrica da offrire. Tuttavia, soddisfa le proprietà attese che:

  • Quando l'unità è esattamente nel mezzo di qualsiasi cella X, quindi (indipendentemente da quale di A, B, C o D scegliamo X per essere), contribuisce 1 λ = 1 unità di densità alla cella X e 0 unità di densità a qualsiasi altra cellula.

  • Quando l'unità è esattamente all'angolo di quattro celle, contribuisce (1/2) λ unità di densità a ciascuna delle quattro celle (e nulla a qualsiasi altra cella, per definizione).

Tuttavia, nota che, usando questa regola, la quantità totale di densità fornita da un'unità a tutte le celle non è costante, nemmeno se λ = 1. In particolare, quando l'unità si trova esattamente nel punto medio del bordo tra due celle, contribuisce (1/2) λ unità di densità a quelle due celle e nulla a qualsiasi altra cella. Pertanto, chiamare il valore risultante "densità" sembra un po 'fuorviante.


Modifica: un altro modo di scrivere le formule per ρ A , ρ B , ρ C e ρ D , che può rendere più evidente la simmetria delle definizioni, è definire d X = max (| x - x X |, | y - y X |) come la distanza della scacchiera dell'unità a (x, y) dal centro della cella X a (x X , y X ), misurata in larghezza / altezza della cella. Quindi, per qualsiasi cella X,

  • ρ X = 0 se d X ≥ 1 e
  • ρ X = (1 - d X ) λ altrimenti.

Non capisco il motivo per cui le celle in basso a sinistra adiacenti a quella in cui si trova l'agente dovrebbero ricevere il valore di densità mentre quelle in alto a destra no.
sharvey,

@sharvey: Perché nella foto, l'agente è in basso a sinistra del centro della cella in cui si trova.
Ilmari Karonen

Ah, ha senso. Ma per essere chiari, il raggio dell'unità non ha nulla a che fare con il calcolo della densità, giusto?
sharvey,

Bene, non sembra esserci alcun "raggio" nelle formule che hai citato che potrebbe entrare in quei calcoli.
Ilmari Karonen,

Non sono più vicino all'implementazione effettiva, ma grazie per la risposta. Immagino che rileggerò il giornale.
sharvey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.