|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1377
|
[Qualsiasi] Riconoscimento forme
Ho due array di numeri.
Vorrei riuscire a valutare quanto i grafici da esse rappresentati sono simili oppure no, indipendentemente dal fattore di scala. In altre parole dovrei implementare un algoritmo per il riconoscimento delle immagini ma trattandosi solo di due banali linee vorrei sapere se esiste un qualche algoritmo semplificato già pronto. Ho pensato a reti neurali oppure FFT, ma se esistesse qualcosa di già bello e fatto sarebbe meglio. Grazie, Ciao |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1377
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1377
|
Thanks
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1377
|
In realtà però non va bene. L'indice di correlazione esprime una relazione di linearità.
Quindi se ad esempio i due grafici hanno in comune due tratti perfettamente rettilinei ma con pendenza diversa, l'indice in quel tratto restituisce 1. Questo non va bene perchè risulta che i due grafici sono uguali quando non lo sono. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1377
|
Quote:
Se c'erano due tratti entrambi rettilinei ma con pendenza differente la correelazione dava 1. Supponiamo che i due vettori che rappresentano quel tratto in esame siano questi: Codice:
vet1 vet2 [1] [3] [2] [6] [3] [9] [4] [12] ma mi è bastato modificarli così: Codice:
vet1 vet2 [1] [3] <-- Aggiungo un tratto orizzontale [1] [3] [2] [6] [3] [9] [4] [12] |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1377
|
Quote:
Ora petó il problema è un altro. Dovrei misurare quanto la linea è liscia, senza screpolature. Ho pensato di usare un algoritmo per misurare il rapporto tra segnale e rumore. Tu hai qualche idea? |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1377
|
Quote:
Non ho il segnale originale ma sicuramente le armoniche di frequenza troppo elevata sono dovute al rumore. Quale sia la frequenza di taglio non lo so perchè sto lavorando con immagini e anche se le tratto come segnali di fatto a me interessa la resa 'visivo'. Quindi come segnale originale potrei usare quello che viene fuori da un filtro passa basso. Però non so se è la cosa migliore. Oppure contare le discontinuità. Però i dati mi vengono da un vettore, non da una funzione quindi non so come fare. Credo comunque che dei milioni di algoritmi esistenti ci sia uno che già risolve questi problemi. Tutto senza dimenticare il punto di partenza, anche un bambino ti sa dire se una linea è liscia o screpolata, tutto sta a capire quale modello applica per dirlo. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Mi sa che deve vedere se sono lisce secondo Lipschitz
http://en.wikipedia.org/wiki/Lipschitz_continuity @das: La soluzione al tuo problema e' fare la trasformata Wavelet dei due segnali e confrontare i coefficienti. In alternativa puoi controllare: 1) Se i vettori sono uguali 2) Se tutti gli elementi di y sono multipli interi di x secondo lo stesso rapporto: Es. x = {1,2,3} y = {2,4,6} Allora y e' x riscalato Se invece x = {1,2,3} y = {2,6,12} y non c'entra niente con x. In ogni caso l'indice di correlazione e' il sistema piu' vero per verificare questa cosa ma puoi benissimo abbinare le due cose, anche perche' quello che ti ho scritto io non funziona in presenza di rumore. Pero' puoi sempre usare le wavelets per fare denoising... http://cs.haifa.ac.il/hagit/courses/..._Denoising.pdf
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
Ultima modifica di ingframin : 20-03-2014 alle 11:23. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1377
|
Grazie, sono le informazioni che cercavo.
Solo che a livello di algoritmi già pronti se uno programma MatLab di queste cose trova il mondo. In C non si trova niente. Vabbè, guarderò di arrangiarmi. |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Quote:
Alla fine e' un normalissimo banco di filtri FIR da applicare ovvero una convoluzione... Cerca bene su google, mi sa che c'e' anche una libreria per C con le wavelet.
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
Dopo una ricerca di 2 secondi su google:
https://www.gnu.org/software/gsl/man...ransforms.html Basta scaricare la GNU scientific library e hai una libreria con wavelet e molto di piu' scritta in C e ad alte prestazioni. Che vuoi di piu' dalla vita?
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1377
|
Perfetto, grazie ragazzi!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:39.




















