Rilevamento di un oggetto di vetro riempito


10

Sono stato inviato qui da questa domanda in StackOverflow , mi scusi se la domanda è troppo specifica e non è nelle buone maniere qui :)

Il compito è quello di trovare un bicchiere con liquido specifico al suo interno. Lascia che ti mostri le immagini e poi descriva ciò che sto cercando di ottenere e come stavo cercando di ottenere finora nella descrizione sotto le immagini.

Le foto : (sembra che io abbia bisogno di almeno 10 reputazione per pubblicare foto e collegamenti, quindi i collegamenti dovranno fare :( altrimenti puoi guardare la domanda di overflow dello stack)

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Una descrizione dettagliata : stavo cercando di implementare un algoritmo in grado di rilevare un vetro di una forma specifica in opencv (il vetro potrebbe essere trasformato da un diverso angolo / distanza di ripresa della telecamera). Ci saranno anche altri bicchieri di altre forme. Il vetro che sto cercando sarà anche riempito con un po 'di liquido colorato che lo distinguerà dai vetri che contengono altri colori.

Finora, ho provato a utilizzare l'estrattore di funzioni SIFT per cercare di trovare alcune funzionalità nel bicchiere e quindi abbinarle ad altre foto con il vetro al suo interno.

Questo approccio ha funzionato solo in condizioni molto specifiche in cui avrei avuto il vetro in una posizione molto specifica e lo sfondo sarebbe simile alle immagini di apprendimento. Il problema è anche che il vetro è un oggetto 3d e non so come estrarne le caratteristiche (forse più foto da diverse angolazioni collegate in qualche modo?).

Ora non so quale altro approccio potrei usare. Ho trovato alcuni indizi su questo (qui /programming/10168686/algorithm-improvement-for-coca-cola-can-shape-recognition#answer-10219338 ) ma i collegamenti sembrano essere rotti.

Un altro problema sarebbe quello di rilevare diversi "livelli di vuoto" in tale vetro, ma non sono nemmeno riuscito a trovare il vetro stesso correttamente.

Quali sarebbero i tuoi consigli sull'approccio in questo compito? Sarebbe meglio usare un modo diverso per trovare la funzione locale di oggetti 3d? O sarebbe meglio usare un altro approccio del tutto? Ho sentito parlare di algoritmi che "apprendono" l'oggetto da una serie di più foto, ma in pratica non l'ho mai visto.

Qualsiasi consiglio sarebbe molto apprezzato


qualche soluzione finale con esempio di codice sorgente completo in C #?
Kiquenet,

wow, questa è una richiesta piuttosto specifica. il problema non ha ancora una soluzione e non investirò più tempo a risolverlo. credo, a giudicare dall'articolo menzionato qui, che i motivi scientifici non avranno una soluzione molto presto, poiché l'algoritmo suggerito aveva tassi di precisione molto scarsi. comunque, dato che questo progetto era per il mio lavoro, ho finito per litigare su un compromesso con un cliente, dato che il compito è irreale da completare al giorno d'oggi. utilizzato alcuni rilevatori di funzionalità simili a haar per "tutto ciò che sembra una tazza" e quindi selezionato tonalità gialle per rilevare la birra. non l'attività originale
user1916182

Risposte:



0

Forse questo documento può aiutarti: http://ai.stanford.edu/~ang/papers/iros09-ScalableLearningObjectDetectionGPU.pdf

Sebbene utilizzino il sistema stereo attivo oltre alle immagini 2D per acquisire immagini di profondità, è interessante il modo in cui usano le funzionalità basate su patch, costruendo un dizionario dell'oggetto con molti piccoli frammenti e quindi addestrando un classificatore. Forse puoi aggiungere queste funzionalità per migliorare il tuo tasso di rilevamento.


non penso che questo lavoro possa essere usato molto bene nella prassi selvaggia. il robot descritto nel documento richiede un sensore di profondità per rilevare informazioni sulla profondità ... non molto pratico per portare un parente in giro quando si scattano foto casuali su un cellulare o qualcosa del genere ... ma sì, le funzionalità basate su patch sono un approccio molto interessante!
user1916182

-1

C'è stato molto lavoro da fare in merito al software di riconoscimento facciale. Ad esempio, se noti su Facebook quando tagghi le foto, la posizione dei volti viene racchiusa in un riquadro e ti viene suggerita.

Ho visto molta letteratura sul riconoscimento facciale nelle immagini usando le reti neurali e una rapida ricerca su Google produrrà senza dubbio una grande quantità di informazioni sull'argomento. Queste reti prendono i pixel dell'immagine come input. Nel tuo caso, il modo in cui l'opacità cambia / la luce si riflette sul vetro può essere una buona identificazione delle caratteristiche che la rete imparerà.

Un problema potrebbe essere il numero di foto che devi utilizzare come dati di allenamento e la pre-elaborazione di queste (ovvero l'identificazione dei volti). Se è impossibile farlo per avere abbastanza immagini per addestrare la tua rete abbastanza bene, dovrai cercare alcune scorciatoie nella fase di apprendimento. Questo documento è rilevante per quello che vuoi fare: http://www.ll.mit.edu/publications/journal/pdf/vol04_no2/4.2.5.neuralnetwork.pdf

Fortunatamente questo è un campo molto attivo e gran parte del codice necessario per questo tipo di problema è prontamente disponibile online.

Una volta in grado di identificare gli occhiali nelle immagini, è possibile eseguire ulteriori analisi da lì.


questo è completamente irrilevante
user1916182

Interessante dovresti dirlo. Comunque qui c'è un link agli algoritmi di rilevamento utilizzati da Facebook basati su reti neurali. Buona fortuna, github.com/facebookresearch/Detectron .
pubblicato il
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.