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.