8

Ho un'immagine di destinazione da cercare per una curva lungo i bordi e un'immagine modello che contiene la curva. Quello che devo raggiungere è trovare la migliore corrispondenza della curva nell'immagine modello all'interno dell'immagine di destinazione, e in base al punteggio, per scoprire se c'è una corrispondenza o meno. Ciò include anche la rotazione e il ridimensionamento della curva. L'immagine di destinazione può essere l'output di un rilevatore Canny Edge se ciò rende le cose più facili.Abbinamento di un motivo di curva ai bordi di un'immagine

Sto considerando di utilizzare OpenCV (utilizzando Python o Processing/Java o se hanno accesso limitato alle funzioni richieste, quindi utilizzando C) per rendere le cose pratiche ed efficienti, tuttavia non ho potuto scoprire se posso usare qualsiasi funzioni (o una combinazione di esse) in OpenCV che sono utilizzabili per fare questo lavoro. Ho letto la documentazione di OpenCV e inizialmente ho pensato che Contours potesse fare questo lavoro, tuttavia tutti gli esempi mostrano forme chiuse rispetto al mio caso in cui ho bisogno di abbinare una curva aperta a una parte di un bordo.

Quindi c'è un modo per farlo usando OpenCV o con qualsiasi codice o algoritmo noto che suggeriresti?

Ecco alcune immagini per illustrare il problema:

Template image containing the curve to be searched for

Input image to be searched for the template curve and to be matched to its edges; this can also be an edge-image, the output of a Canny Edge detector rather than the unprocessed input image

Resulting match - includes rotation and resizing

risposta

2

Il mio primo pensiero è stato Generalized Hough Transform. Tuttavia non conosco alcuna buona implementazione per questo.

Proverò SIFT o SURF prima sull'origine del bordo. Solitamente viene utilizzato per trovare le aree 2D, non i contorni 1d, ma se si prende il riquadro di limitazione minimo attorno al proprio contorno e lo si utilizza come modello di ricerca, dovrebbe funzionare.

OpenCV ha un'implementazione per questo: Features2D + Homography to find a known object

Un problema può essere sempre una buona immagine di bordo, quelle forme nere nella parte posteriore potrebbe essere fonte di distrazione.

vedere anche questa risposta StackOverflow: Image Processing: Algorithm Improvement for 'Coca-Cola Can' Recognition

+0

Grazie, cercherò questi e tornare qui per dare informazioni sui miei risultati o scoperte. – ali

+1

Qualche fortuna, Ali? Vedi anche questa domanda, che fa riferimento al tuo: http://stackoverflow.com/questions/14530790/image-processing-match-curves-from-one-image-to-another – Rethunk

+0

Grazie Rehunk, non ho visto il tuo commento fino ad ora; molto tempo ... Non avevo una soluzione reale, ma parziale, che ha fatto il lavoro sempre più indietro; rotazioni lente e senza rotazioni: ho usato la corrispondenza semplice correlazione ridimensionando il modello a diverse dimensioni, ma non direttamente con la curva sull'immagine, ma su un'immagine con bordo codificato a colori in cui ogni punto di bordo aveva un colore corrispondente per la sua inclinazione, allo stesso modo la curva del modello era codificata a colori in base alla pendenza della curva su ciascun punto. Poi ho confrontato quei colori per correlazione ed i risultati erano ok per una soluzione limitata/pratica ... – ali

Problemi correlati