Ho passato post ed esempi negli ultimi due giorni e tutti i frammenti che ho provato e ampiamente testato si sono dimostrati abbastanza inutili, almeno per i miei scopi.Confronto immagini per immagini vettoriali (basato sul rilevamento dei bordi)?
Quello che voglio fare è confrontare un simbolo vettoriale nero fotografato su un muro o un pezzo di carta (qualità simile a immagini scansionate male si potrebbe dire) e confrontarlo con una versione elettronica dello stesso simbolo o simile (che sarebbe essere memorizzati localmente e confrontati con la fotografia). Si prega di dare un'occhiata alle due immagini allegate, la prima pulita (immagine di riferimento) è la versione del database del simbolo e la seconda è un disegno schifoso che ho fatto su un pezzo di carta che ho poi fotografato con il mio iPad.
ho voluto la procedura di andare come segue:
- Le due immagini vengono caricate e poi tagliati usando una versione modificata di questo algoritmo rifilatura ho trovato qui: Trimming images with PIL . Ho trovato che un valore 'soglia' di 50 e un valore 'ovvietà' di 20 (parametri nello script linked) danno buoni risultati di tali immagini
- Le immagini saranno quindi ridimensionate alla stessa dimensione e comparati
Ora per il confronto, ho provato un sacco di approcci diversi suggeriti ma finora i risultati sono terribili. Posso effettivamente ottenere risultati di confronto migliori con un'immagine casuale rispetto a quella testata. Ho provato RMS difference comparison in base alle immagini effettive, ai loro bordi (creati con la funzione 'filtro' con ImageFilter.CONTOUR o ImageFilter.FIND_EDGES), Pixel-Based Comparison ma finora nulla ho trovato online (nonostante il mio googliling incessante) o qui in StackOverflow ha mi ha dato risultati decenti.
Credo che il problema risieda nello sfondo rumoroso dell'immagine di prova ma non sono stato in grado di dimostrarlo. Qualcuno sa se c'è un modo per ottenere un contorno vettoriale dai bordi di queste immagini e confrontarle non solo come immagini ma come vettori di immagini? Nonostante il mio schifoso disegno, trovo che queste due immagini siano abbastanza simili e dovrebbe essere possibile ottenere un buon paragone.
Ci sono problemi con il metodo basato su vettori, come si gestiscono i segni vaganti errati o le immagini disegnate con proporzioni diverse? In aggiunta alla mia risposta, se riesci a ottenere immagini normalizzate, un approccio rasterizzato usando le eigenfaces (vedi wiki) può essere utile qui (anche se richiede un'intensità computazionale e richiede un'algebra lineare). – Hooked