Vai al contenuto
PLC Forum


Come riconoscere un profilo.


roberto1953

Messaggi consigliati

Se disegnate un profilo o un contorno ad esempio su di un foglio di 1000 per 1000 quadretti, dando ad ogni quadretto due coordinate intere x ed y. Ogno quadretto successivo al primo disegnato avrà coordinate x oppure x+-1 y oppure y+-1 , proseguendo dal primo quadretto disegnato in uno degli otto che lo circondano. Quindi mi bastano 4 bit per definire ogni posizione successiva alla prima.

Per un profilo lungo mille quadretti occorrono 1000*4= 4000 bit più le coordinate di partenza, invece di 1000*1000=1000000 di bit necessari a rappresentare l ' intera matrice.

Questo sistema consente secondo me di spostare facilmente un profilo già noto e confrontarlo con uno da riconoscere. Non ho mai sviluppato il programma,

e ci sono diversi problemi matematici da risolvere, ma credo che sia possibile, confrontando profili o contorni più significativi, riconoscere con precisione oggetti o persone, usando più telecamere il programma e un pò di calcoli delle probabilita.

Voi che ne pensate? Ciao.

Link al commento
Condividi su altri siti


Premetto che non ho esperienza al riguardo, ma faccio questa osservazione:

Parti dalla base che nei tuoi profili la massima distanza da un punto a quello successivo è 1 pixel, altrimenti non ci sarebbe continuità. La mia domanda è: dove lo trovi un profilo così?

ciao

Link al commento
Condividi su altri siti

Anche nelle lettere che stai scrivendo, oppure pensa di scannerizzare un' immagine con un laser e metterne i diversi profili in memoria, se ti è più semplice.

O elaborare in linee continue le impronte digitali; poi è questione di statistica e di matematica sommare e confrontare le diverse probabilità, di profili acquisiti in più modi situazioni e prospettive. Pensati come un cartone animato sopra una matrice di pixel, uno schermo, e poi fatti riconoscere dal programma di un computer tanto per vedere la cosa più simile ad un videogioco.

A me vien da pensare che già da tempo qualcono lo stia facendo.

Ciao.

Link al commento
Condividi su altri siti

In teoria della visione esistono tanti invarianti, a seconda del dominio di riferimento. Nel dominio dell'immagine sono gli invarianti più semplici, e tipicamente gli algoritmi di riconoscimento si basano sull'estrazione degli invarianti dal campione, e poi sulla ricerca di tali invarianti nelle immagini da analizzare.

In pratica gli "invarianti" sono il risultato dell'applicazione di un filtro sull'immagine. Se l'immagine viene modificata in modo invariante rispetto all'invariante scelto, applicando il filtro il risultato è lo stesso.

Mi spiego meglio. Se ho due immagini dello stesso soggetto con due zoom diversi ed ho un filtro invariante rispetto alla scala, applicando il filtro alle due immagini si ottiene lo stesso risultato.

Se invece, come proponi, lavori sui singoli pixel è molto difficile analizzare trasformazioni come scalature, riflessioni, rotazioni, skew, espansioni, erosioni, ecc. In pratica tu analizzeresti solo le traslazioni.

Se vedi anche su wikipedia mi pare ci siano parecchi esempi

Poi c'è un altro campo di filtri che lavora su domini trasformati. Ad esempio la Trasformata di Hough...ma qui ci vogliono strumenti matematici un pochino più raffinati.

Ciao

Modificato: da fulvioromano
Link al commento
Condividi su altri siti

Stiamo parlando di estrazioni antropometriche giusto? Perchè se parli di OCR esistono tecniche ancora più semplici, basate su alcuni tipi di reti neurali. Le più usate per gli OCR, ma anche per il riconoscimento vocale basato sui dittonghi, ovvero il software disponibile in quasi tutti i cellulari di fascia medio alta, sono le SOM [self-Organizing Map].

In pratica partendo da un punto associano pesi diversi a ciascun punto in funzione di ciò che gli sta attorno, e così via fino a coprire tutta la matrice. A questo punto si analizza il punteggio totale, che altro non è che la probabilità che una determinata immagine rappresenti una determinata lettera (oppure suono). La lettera con probabilità più alta sarà l'output dell'OCR.

Link al commento
Condividi su altri siti

Io stò proponendo un programmino molto semplice da fare e non da dire, un' altro invito a cimentarsi in un pò di programmazione basic. Nel mio' programma di riconoscimento penso bastino i profili, come ho detto. Non mi occorre molta precisine per riconoscere cose e persone, se sommando più prove anche relativamente approssimate, ottengo statisticamente un' alta probabilità di certezza.

Noi stessi rischiamo di non riconoscere una persona nota, se estrapolata dal suo ambiente quotidiano e che finge di essere un' altro o no? Dunque riconosciamo cose e persone sommando molti semplici fattori, da soli poco significativi.

Ciao.

Link al commento
Condividi su altri siti

roberto1953+29/03/2009, 11:40--> (roberto1953 @ 29/03/2009, 11:40)

Io non "dico", ho dato riferimenti molto precisi per poter implementare un filtro invariante o una SOM. Per la seconda bastano somme e moltiplicazioni, quindi E' molto semplice.

Inoltre ho fatto il quadro generale, giusto per completezza.

Da una foto riesci ad estrarre il profilo? Se è vero sei già molto avanti sulla visione artificiale, perché non è così semplice.

Qui non stiamo parlando di precisione, stiamo dicendo che se il profilo si inclina di qualche grado non riesci più a riconoscerlo. Non ti dico se si avvicina o si allontana dall'obbiettivo...

No. Se hai le foto segnaletiche lo riconosci sempre. In quello che diciamo non stiamo considerando l'ambiente, non stiamo considerando il movimento e soprattutto non stiamo considerando travestimenti ([...] finge di essere un altro [...])

Scusa se posso sembrare polemico, è un mio problema e ti assicuro che non è la mia intenzione, ma mi pare che cerchi di risolvere un problema già abbondantemente risolto in letteratura. Capisco voler tentare un nuovo approccio, ma ignorare completamente gli altri approcci, partendo sempre da zero, non mi sembra una cosa propositiva.

Link al commento
Condividi su altri siti

Davanti alla foto segnaletica c' è chi devi riconoscere...

Tuo figlio ha mai ricopiato su carta velina il profilo dei tui occhi o del tuo viso, da una foto o con un programma di elebarozione di immagini al computer, poi che gli hai detto, "come sei stato bravo sono proprio io"?

Hai mai pensato che prospettive e dimensioni, dati punti di vista noti, si possono matematicamente più o meno correggere. Scansionando un oggetto con un laser i profili (Ripensa a quando lo vedi nei film con quella riga rossa che percorre il viso) si memorizzano come "stampati", e soltanto sul viso di un uomo quante "righe" diverse ci sono... Le abbiamo tutti uguali, e se vi aggiungo le impronte digitali, il calco ottico delle mani (I luoghi, gli spostamenti possibili) insomma in ogni persona vi sono tanti "profili" e profili che bastano anche con qualche approssimazione a renderla unica

non ti pare?

Poi prova a fare un programmino per riconoscere il profilo di questa lettera V da quello di questa lettera U per incomincire a capirmi.

Ciao.

Link al commento
Condividi su altri siti

  • 2 months later...

Qualche mattina fa molto presto, una lezione dell' università Nettuno parlava per l' appunto di un inseguitore di linee tipo questo descritto, tra l' altro prendeva in considerazione proprio quei problemi che speravo qualcuno mettese in evidenza. Ho visto in parte solo la lezione che dava l' esempio di un inseguitore fatto per leggere cartine topografiche sconosciute alla macchina, invece nel mio caso servirebbe a confrontare un' immagine con un suo identikit già memorizzato: che ci rende le cose molto più semplici, anche in caso di linee spezzate poco definite o intersecate.

Io ne pensavo un uso perfino in automobile, per inseguire la mezzeria della strada, o dai suoi margini calcolare una mezzeria virtuale, confrontando il percorso in atto con uno già memorizzato; usando anche immagini e anche dati del navigatore satellitare quando il calcolo matematico del programma lo richiede. Insomma se non proprio alla guida automatica almeno per aggiungere sicurezza ci si potrebbe pensare...

Poi non conosco i programmi di elaborazione grafica, ma un inseguitore di linee ci sarebbe senz' altro utile, per estrarre e ricopiare disegni anche sulla tavola grafica di Windows ad esempio.

Per chi possiede un pò di pratica a programare, di idee per divertici anche con questo tema ne vengono proprio tante... Ciao.

Link al commento
Condividi su altri siti

  • 2 weeks later...

ciao Roberto,

che intendi con "inseguitore"? Tu hai bisogno di un "estrattore" di linee, o sbaglio? La tecnica più comune è descritta qui:

http://it.wikipedia.org/wiki/Trasformata_di_Hough

è un algoritmo che estrae le primitiva da un'immagine, per esempio linee e cerchi.

Se vuoi invece inseguire la linea bianca in mezzo all'autostrada, esistono i lane detector. Qui trovi qualcosa:

http://209.85.229.132/search?q=cache:yKkJo...t&ct=clnk&gl=it

ma l'algoritmo più semplice è, misuro la distanza tra la linea bianca e il punto in cui me la aspetto, moltiplico questo numero per un parametro (che va tarato sperimentalmente) ed il risultato è la correzione che devo apportare alla mia posizione, quindi di quanto devo girare il volante.

Per il "riconoscitore di profili" invece, il problema mi sembra diverso. Vi consiglio di tentare questo algoritmo:

http://it.wikipedia.org/wiki/Self-Organizing_Map

che è quello usato in genere in questi casi, e nonostante i tecnicismi usati da wikipedia, non è difficile, basta studiarsi un po' la teoria. Nella pagina inoltre è spiegato abbastanza bene anche l'algoritmo.

Una domanda per Roberto. Usi anche Matlab? Perché magari con quel linguaggio è più semplice approcciarsi alle som, infatti ci sono varie funzioni già pronte, ed il software può essere scritto con una decina di righe di codice.

In bocca al lupo

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...