Come rilevare un oggetto difficile

A volte, un oggetto può risultare più difficile da rilevare. Ad esempio:

  • Quando una superficie di grandi dimensioni non è accessibile perché l'oggetto si trova su una parete
  • Quando un oggetto è troppo grande e ci vuole troppo tempo per camminare intorno
  • Quando la superficie dell'oggetto non viene rilevata dai sensori del dispositivo

Modifica dei valori delle query degli oggetti

Alcuni meccanismi offerti da Azure Object Anchors SDK che possono essere utili in queste situazioni sono:

  • La proprietà ObjectQuery.MinSurfaceCoverage. Rappresenta il rapporto minimo di copertura della superficie necessaria per considerare un'istanza dell'oggetto come un vero positivo. Consente un intervallo compreso tra 0 e 1,0 (che rappresenta il 0% al 100%). L'impostazione predefinita varia tra gli oggetti (maggiore sarà l'area della superficie, più piccola sarà la copertura minima richiesta). Funzionerà per la maggior parte delle situazioni così come sono. Tuttavia, in caso di oggetti difficili, è consigliabile abbassare il valore per questa proprietà, in modo che sia necessaria una minore copertura della superficie per rilevare l'oggetto.

  • La proprietà ObjectQuery.MaxScaleChange. Se il modello originale non ha una 1:1 scala verso l'oggetto rilevato, questa impostazione può essere modificata. Consente un intervallo compreso tra 0 e 1,0 (che rappresenta il 0% al 100%). L'impostazione predefinita, a 0, disabilita la stima della scala, che richiede un 1:1 mapping di scalabilità. L'impostazione di questa proprietà su 10%, ad esempio, consente la stima della scala e consente una certa flessibilità nei casi in cui la scala del modello non ha una 1:1 corrispondenza rispetto all'oggetto.

  • La proprietà ObjectQuery.ExpectedMaxVerticalOrientationInDegrees. Rappresenta l'angolo massimo, espresso in gradi, tra la direzione in su dell'oggetto e la gravità. Varia da 0 a 180. In altre parole, rappresenta l'inclinazione dell'oggetto rispetto al modello originale. L'impostazione predefinita, a 3 gradi, può essere aumentata per consentire maggiore flessibilità nei casi in cui l'inclinazione dell'oggetto non corrisponde al modello originale.

  • La proprietà ObjectQuery.IsExpectedToBeStandingOnGroundPlane. Si tratta di un valore booleano che indica se l'oggetto deve trovarsi a livello di terra o meno. Il valore predefinito è false. Può essere impostato su true per velocizzare il rilevamento per i casi in cui l'oggetto è a livello di terra.

  • La proprietà ObjectQuery.SearchAreas. Rappresenta una raccolta di aree da cercare per gli oggetti. Fornendo aree di ricerca strette, pur coprendo tutto o la maggior parte dell'oggetto, migliora la velocità e l'accuratezza del rilevamento. È possibile scegliere:

    • Rettangolo di selezione orientato tramite ObjectSearchArea.FromOriented.
    • Campo di visualizzazione tramite ObjectSearchArea.FromFieldOfView.
    • Posizione, utilizzando ObjectSearchArea.FromLocation.
    • Una sfera, utilizzando ObjectSearchArea.FromSphere.

Per altre informazioni, vedere la ObjectQuery classe per Unity o HoloLens C++/WinRT.

Passaggi successivi

In questa guida alla risoluzione dei problemi si è appreso come risolvere i problemi di rilevamento di oggetti difficili da rilevare. Ecco alcuni articoli correlati: