Quindi voglio essere in grado di riconoscere i pattern nelle immagini (come il numero 4), ho letto diversi algoritmi e mi piacerebbe davvero usare l'algoritmo del vicino più vicino, sembra semplice e lo capisco in base a questo tutorial: http://people.revoledu.com/kardi/tutorial/KNN/KNN_Numerical-example.html Il problema è, anche se capisco come usarlo per riempire insiemi di dati mancanti, non capisco come potrei usarlo come uno strumento di riconoscimento del modello per mirare in Riconoscimento forma immagine. Qualcuno potrebbe per favore far luce su come questo algoritmo potrebbe funzionare per il riconoscimento dei pattern? Ho visto tutorial che usano OpenCV, tuttavia non voglio usare questa libreria perché ho la possibilità di fare da sola la pre-elaborazione, e sembra sciocco che implementerei questa libreria solo per quello che dovrebbe essere un vicino più vicino algoritmo.Utilizzo dell'algoritmo del vicinato più vicino per il riconoscimento del modello di immagine
risposta
Devi semplicemente (semplicemente?) Definire una misura di "distanza" per i tuoi dati.
Ti consente di segmentare l'immagine ingrandita in piccole immagini, ognuna corrispondente al carattere di testo che desideri classificare. Supponiamo che si tratti di immagini monocrome digitali, quindi ogni immagine è rappresentata come una matrice rettangolare di valori (pixel) nell'intervallo 0-255 (luminosità). Si presume anche che (NN sia un "algoritmo di classificazione controllato") che tu abbia molte immagini già ben classificate (il tuo set di allenamento).
Data una nuova piccola immagine, è necessario definire una distanza tra due immagini in modo da scegliere quella più vicina nel set di allenamento e la sua "etichetta" scelta come carattere di testo riconosciuto.
Un approccio ingenuo sarebbe prendere la differenza di pixel (somma di quadrati, ad esempio). Ma questa misura di distanza sarebbe sensibile alle traduzioni (e alle rotazioni e al ridimensionamento) e di solito non lo vogliamo. Un'alternativa sarebbe calcolare il modulo della trasformata di Fourier, che è invariante di traduzione (ma questo non è sufficiente). Da qui puoi iniziare - e apprezzo che il problema è difficile, e questo tipo di classificazione richiede molto lavoro per funzionare in modo accettabile.
Ho usato l'algoritmo K-Nearest-Neighbor per il riconoscimento della posa in un Pose-Recognition in tempo reale con videocamera. Ti consiglio di utilizzare Matlab per la formazione e il test dei set di dati, poiché dispone di PRToolbox per questo scopo e offre molto aiuto e campioni. La cosa più importante è che si scelgono correttamente le funzionalità che renderanno possibile rappresentare ogni classe in modo solido. Una volta che hai le caratteristiche (questo sarà un insieme di valori come, colore, area, posizioni ...) e le classi, hai bisogno di campioni per addestrare il classificatore (KNN per esempio). Importante quanto il classificatore è come si scelgono i campioni per l'allenamento. Quindi dovrai testare il classificatore.
Prova diversi set di allenamento, caratteristiche diverse, classificatori diversi, perché forse KNN non è il metodo più adatto per il tuo tipo di dati.
Spero che questo sia utile.
Ecco una semplice implementazione utilizzando Python http://shyamalapriya.github.io/digit-recognition-using-k-nearest-neighbors/
- 1. java framework per il riconoscimento del pattern di immagine?
- 2. Come per ruotare l'immagine per interpolazione del vicino più vicino Utilizzo di Matlab
- 3. Trovare il pixel migliore del vicino
- 4. Python -. Individuazione del timestamp più vicino
- 5. Riconoscimento/compressione del modello di stringa di Python
- 6. Preelaborazione delle immagini per il riconoscimento del testo
- 7. Utilizzo del modello di modulo per progetti di dimensioni maggiori
- 8. Immagine più grande per il primo elemento del gridview android
- 9. Utilizzo dei dati di Shapefile per determinare il vicinato per longitudine/latitudine
- 10. Utilizzo di un'enumerazione come parametro del modello
- 11. Utilizzo del riferimento come tipo di modello
- 12. Utilizzo di HMM per il riconoscimento dei caratteri offline
- 13. Utilizzo del listener di eventi del modello in Laravel 5
- 14. Utilizzo del riflesso nel modello di fabbrica
- 15. MPI_Cart_Shift.Corner vicinato
- 16. 'Più vicino' zoom
- 17. Utilizzo del nome modello al posto dell'ID modello all'interno della definizione del modello di classe
- 18. Riconoscimento di immagine per l'automazione di test drive
- 19. Utilizzo del controllo immagine in WPF per visualizzare System.Drawing.Bitmap
- 20. System.Speech.Recognition Scelta del profilo di riconoscimento
- 21. LINQ per ottenere il valore più vicino?
- 22. CSS per selezionare il discendente più vicino?
- 23. Come utilizzare Opencv per il riconoscimento del documento con l'OCR?
- 24. Qualsiasi libreria per il riconoscimento del volto in JavaScript?
- 25. Come sviluppare un'app iPhone per il riconoscimento del volto?
- 26. Riconoscimento del testo da un'immagine in delphi
- 27. Utilizzo dei metodi del modello negli aggregati
- 28. Utilizzo del modello parziale sotto root vista
- 29. Chiamare il metodo di adattamento più vicino
- 30. la coordinata del punto più vicino a Poligono Shapely