Ho provato ad utilizzare la prima delle due ultime immagini che hai postato come esempio,
questa per capirci:
ed estrarne i contenuti come ti proponevo di fare, questo il risultato:
A mio avviso questa seconda immagine è più facilmente elaborabile, molte delle complessità sono scomparse.
Devi solo interpretare delle linee bianche e individurne alcune a "forma" di uovo o pallina che sia.
A dire il vero, nello specifico esempio, è quasi del tutto irriconoscibile la palla perché contesa tra 2 robot.
Il riconoscimento degli oggetti non è certo facile. Riferendoci all'esempio che hai proposto (gioco del calcio) tieni presente che le regole del gioco aiutano a semplificare la cosa, infatti:
- la palla è sempre arancione (tu invece affermi che hai palle di diverso colore)
- il campo di gioco è delimitato da righe bianche (sicuro che nel tuo caso non sia la stessa cosa?)
- nel campo di gioco di sono solo robot e palla. I giudici stessi devono stare fuori dal terreno di gioco.
- le porte sono sempre una gialla ed una blu. Una squadra deve segnare il primo tempo sulla porta gialla, il secondo tempo nella porta blu. (o viceversa)
Nonostante queste "semplificazioni" non è facile realizzare un robot che gioca a calcio.
Artificial Vision Robot
Moderatore:
Paolino
40 messaggi
• Pagina 2 di 4 • 1, 2, 3, 4
0
voti
Per quanto riguarda le openCV,
cyclone, era la strada che pensavo di intraprendere con la Raspberry.
Tra l'altro io posseggo anche una schedina ARM della ST (ST DiscoveryLine), che magari può servire non so.
Mi piacerebbe però, invece che scartare Arduino a priori (anche se è giusto), provare a fare una piccola stima delle capacità computazionali necessarie, e poi confrontarle con quelle che Arduino fornisce, per avere uno spirito critico un po' più 'cosciente', che mi potrà comunque sempre tornare utile.
c1b8, per quanto riguarda le due immagini devo dirti che io della seconda non vedo nulla, tutto nero.
Non so se è un problema mio o che :)
Comunque si, so che non è una cosa semplice e sono al corrente delle semplificazioni che le partite di calcio dei robot hanno.
E son anche ben consapevole che non è semplice realizzare uno di quei robot:)
Però quei robot sono sviluppati perché DEVONO essere abbastanza veloci e sicuramente reattivi.
Quindi il mio scenario, che forse è un po' più complesso di quello dei robot calciatori, potrebbe essere analizzato perdendo in velocità, ma è un compromesso a cui posso andare incontro e che posso accettare:)
Tra l'altro io posseggo anche una schedina ARM della ST (ST DiscoveryLine), che magari può servire non so.
Mi piacerebbe però, invece che scartare Arduino a priori (anche se è giusto), provare a fare una piccola stima delle capacità computazionali necessarie, e poi confrontarle con quelle che Arduino fornisce, per avere uno spirito critico un po' più 'cosciente', che mi potrà comunque sempre tornare utile.
Non so se è un problema mio o che :)
Comunque si, so che non è una cosa semplice e sono al corrente delle semplificazioni che le partite di calcio dei robot hanno.
E son anche ben consapevole che non è semplice realizzare uno di quei robot:)
Però quei robot sono sviluppati perché DEVONO essere abbastanza veloci e sicuramente reattivi.
Quindi il mio scenario, che forse è un po' più complesso di quello dei robot calciatori, potrebbe essere analizzato perdendo in velocità, ma è un compromesso a cui posso andare incontro e che posso accettare:)
Visita il mio sito : http://www.raffotech.altervista.org
0
voti
Ciao,
ti riporto l'immagine in un diverso formato, speriamo ora si veda.
Ti riporto inoltre un'immagine elaborata con una diversa tecnica.
Nella seconda la palla è più riconoscibile.
ti riporto l'immagine in un diverso formato, speriamo ora si veda.
Ti riporto inoltre un'immagine elaborata con una diversa tecnica.
Nella seconda la palla è più riconoscibile.
Fabio
0
voti
Senz'altro si, la seconda risulta migliore...
Secondo me però sarebbe conveniente fare una selezione almeno larga dei colori.
Non so se sia possibile, ma io farei una specie di cambiamento di colore di ogni pixel.
Cioè, seleziono il colore che mi interessa ( più o meno in questo caso l'arancione), e rendo NERI tutti i pixel che si discostano molto da questo colore.
Pobabilmente si può fare agendo separatamente sui 3 layer dei colori dell'immagine.
Comunque a questo punto si avrebbe un'immagine con i soli colori che ci interessano, e si potrebbe dare in pasto all'algoritmo che hai utilizzato tu per cercare dei bordi a forma circolare
Secondo me però sarebbe conveniente fare una selezione almeno larga dei colori.
Non so se sia possibile, ma io farei una specie di cambiamento di colore di ogni pixel.
Cioè, seleziono il colore che mi interessa ( più o meno in questo caso l'arancione), e rendo NERI tutti i pixel che si discostano molto da questo colore.
Pobabilmente si può fare agendo separatamente sui 3 layer dei colori dell'immagine.
Comunque a questo punto si avrebbe un'immagine con i soli colori che ci interessano, e si potrebbe dare in pasto all'algoritmo che hai utilizzato tu per cercare dei bordi a forma circolare
Visita il mio sito : http://www.raffotech.altervista.org
6
voti
Innanzitutto se non usi Arduino II non hai molte possibilità ( link ).
Per quanto riguarda l'image processing direi che la strada più efficace è quella del riconoscimento dei cerchi impiegando un algoritmo tipo questo ( Ce ne sono anche altri. Prova prima con Matlab in simulazione ).
A questo devi unire una euristica per discriminare eventuali parti circolari appartenenti ai robot antagonisti.
Ovviamente si può pensare di discriminare anche in base al movimento. Se una parte circolare è in movimento vuol dire che appartiene ad un altro robot oppure è una palla ed un altro robot la movimenta per cui è inutile tentare di raggiungerla in quanto già catturata.
Per quanto riguarda l'image processing direi che la strada più efficace è quella del riconoscimento dei cerchi impiegando un algoritmo tipo questo ( Ce ne sono anche altri. Prova prima con Matlab in simulazione ).
A questo devi unire una euristica per discriminare eventuali parti circolari appartenenti ai robot antagonisti.
Ovviamente si può pensare di discriminare anche in base al movimento. Se una parte circolare è in movimento vuol dire che appartiene ad un altro robot oppure è una palla ed un altro robot la movimenta per cui è inutile tentare di raggiungerla in quanto già catturata.
Ingegneria : alternativa intelligente alla droga.
-

dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
0
voti
Ciao
pierinter!
in passato mi sono occupato di Image Processing a livello calcolatore per il controllo qualità di processi di saldatura. Di recente ho implementato invece personalmente degli algoritmi di Blob Analisys finalizzati ad un controllo di processo utilizzando processori Microchip a 32 bit, 80 MHz della Microchip.
Il lavoro è stato abbastaza complesso e ho quindi potuto ben confrontarmi con la capacità computazionali di schede embedded di questo livello. Dalle specifiche del tuo progetto ho comunque la netta sensazione che un sistema di livello Arduino sia del tutto insufficiente per realizzare ciò che desiseri a meno che non accetti tempi di reazione decisamente poco real time.
Essendo lo scopo finale realizzare un "robot da competizione" non credo sia la soluzione migliore
Quindi o si abbassano le specifiche del progetto o credo sia opportuno optare per un sistema di elaborazione alternativo...
in passato mi sono occupato di Image Processing a livello calcolatore per il controllo qualità di processi di saldatura. Di recente ho implementato invece personalmente degli algoritmi di Blob Analisys finalizzati ad un controllo di processo utilizzando processori Microchip a 32 bit, 80 MHz della Microchip.
Il lavoro è stato abbastaza complesso e ho quindi potuto ben confrontarmi con la capacità computazionali di schede embedded di questo livello. Dalle specifiche del tuo progetto ho comunque la netta sensazione che un sistema di livello Arduino sia del tutto insufficiente per realizzare ciò che desiseri a meno che non accetti tempi di reazione decisamente poco real time.
Essendo lo scopo finale realizzare un "robot da competizione" non credo sia la soluzione migliore
Quindi o si abbassano le specifiche del progetto o credo sia opportuno optare per un sistema di elaborazione alternativo...

-

grandegiove
1.151 1 4 8 - Expert

- Messaggi: 517
- Iscritto il: 18 ott 2010, 9:59
0
voti
Lo pensavo anch'io, però hai visto il video di cui ho messo il link nel post precedente ? Si ha una risposta abbastanza veloce..
Visita il mio sito : http://www.raffotech.altervista.org
0
voti
Ho visto il video. Interessante! Mi sembra però che sia una situazione abbastanza semplificata rispetto a quella che descrivi nel progetto. Campo di visione fisso, orientamento oggetto da seguire costante, illuminazione senza variazioni e tutto sommato tempo di reazione veloci ma non velocissimi.
L'impressione è che lo scenario che hai descritto all'inizio necessiti di una elaborazione ben più complessa di quella utilizzata nel video.
Ciò non toglie che tu possa fare qualche test per vedere cosa si riesce a fare, nel caso... facci sapere
L'impressione è che lo scenario che hai descritto all'inizio necessiti di una elaborazione ben più complessa di quella utilizzata nel video.
Ciò non toglie che tu possa fare qualche test per vedere cosa si riesce a fare, nel caso... facci sapere

-

grandegiove
1.151 1 4 8 - Expert

- Messaggi: 517
- Iscritto il: 18 ott 2010, 9:59
0
voti
Diciamo comunque che la competizione non è che sia di altissimo livello, sono tutti robot con Arduino.
Quindi non ho bisogno di un elaborazione strettamente real time.
Mi piacerebbe utilizzare una raspberry ma purtroppo non si fa in tempo con i tempi di consegna.
Altre idee ?
Possiedo anche una STM32 discovery line, ma non so se può servire in questo caso...dovrei scrivermi tutto io da zero immagino. Mentre per raspberry e Arduino è già quasi tutto fatto con le openCV
Quindi non ho bisogno di un elaborazione strettamente real time.
Mi piacerebbe utilizzare una raspberry ma purtroppo non si fa in tempo con i tempi di consegna.
Altre idee ?
Possiedo anche una STM32 discovery line, ma non so se può servire in questo caso...dovrei scrivermi tutto io da zero immagino. Mentre per raspberry e Arduino è già quasi tutto fatto con le openCV
Visita il mio sito : http://www.raffotech.altervista.org
40 messaggi
• Pagina 2 di 4 • 1, 2, 3, 4
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 14 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

