Operazioni di elaborazione dell'immagine necessarie prima della corrispondenza del modello


13

Bene, questo potrebbe mostrare che non ho preso lezioni di elaborazione delle immagini.

Ho questo modello per abbinare un oggetto nelle immagini. Ma l'oggetto reale nelle immagini, ad esempio, non assomiglia a quello ma alla seconda immagine. Quali operazioni devo eseguire affinché le immagini come la seconda siano pronte per la corrispondenza dei modelli? Cordiali saluti, la terza immagine mostra una corrispondenza ideale.

In un'altra idea, ho adattato il modello all'immagine. Cioè, do quattro coordinate d'angolo sull'immagine per abbinare quelle nel modello. Quindi calcolerà un modo per adattare il modello all'area.

AGGIORNAMENTO: Problema risolto. Grazie alla risposta che ho selezionato di seguito. Sono riuscito con successo ad applicare il mio modello sull'immagine. L'ultima immagine mostra il risultato.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


non abbinerai quella griglia bianca, vero? Vuoi abbinare l'attuale griglia colorata nella tua seconda immagine, giusto?
endolith

@endolith Penso che in entrambi i casi vada bene.
Tae-Sung Shin,

puoi condividere il concetto di base del tuo algoritmo? devo fare lo stesso per un grafico.
Gilad,

Risposte:


9

L'immagine di esempio che hai pubblicato ha una prospettiva relativamente forte (non viene riprodotta direttamente dalla direzione della normale alla superficie) che può causare problemi con le tecniche di corrispondenza dei modelli che utilizzano l'elaborazione a blocchi. Suppongo che devi prendere l'immagine con una prospettiva forte, quindi la prima cosa che vogliamo fare è stimare la trasformazione dell'immagine che rimuoverà la proiezione prospettica e risulterà un'immagine rettificata ("immagine diritta").

Correzione della proiezione prospettica quando si conosce la forma

L'obiettivo finale della preelaborazione è trovare gli angoli di quel rettangolo grigio che fa da sfondo alla tabella dei colori. Ho iniziato semplicemente con il limite di valore costante. Letteratura / web contiene molte informazioni su come eseguire il limite quando l'immagine ha un'illuminazione non uniforme, ma se è possibile, provare a correggere la configurazione dell'immagine in modo che l'illuminazione sia relativamente uniforme.

Soglia con valore costante

Supponevo che la tabella dei colori occupasse una porzione abbastanza grande dello schermo, quindi è probabilmente la più grande regione continua dell'immagine. Esistono molte funzioni di etichettatura in bianco e nero (MATLABs bwlabel, IPP LabelMarkers, OpenCV ha un cvblob di libreria esterna) che darà ad ogni regione connessa distinta il proprio indice. Dopo l'etichettatura è possibile calcolare le aree dei componenti collegati usando un istogramma e quindi scegliere il componente con l'area più grande.

Trova il BLOB più grande

Di solito è una buona idea riempire i componenti in modo tale che il componente non abbia buchi, questo riduce il numero di pixel del bordo.

Riempi il blob

Ora possiamo usare gli operatori di ricerca dei bordi (ho usato il metodo basato sul gradiente, ma puoi anche tracciare il bordo seguendo pixel bianchi collegati a pixel neri) per ottenere pixel appartenenti al boarder.

Trova i bordi

Poiché l'oggetto che ci interessa è il rettangolo, ho adattato quattro linee ai pixel del bordo utilizzando un robusto raccordo (RANSAC). Dopo aver trovato una nuova linea, ho rimosso tutti i punti vicini alla linea trovata, questo costringe le successive operazioni di adattamento a restituire altri bordi dell'oggetto. Alla fine, quando sono stati trovati tutti i bordi, ho calcolato tutte le possibili intersezioni tra l'insieme di linee. Dal set di punti risultanti ho rimosso tutti i punti al di fuori dell'immagine.

Ora abbiamo gli angoli del grafico a colori e siccome conosciamo le dimensioni del grafico, possiamo calcolare la matrice di trasformazione (omografia, proiezione tra due piani. Usare la trasformazione lineare diretta (DLT) per risolvere ) tra le coordinate millimetriche e le coordinate dei pixel.HHH

x=HX

Questa matrice di trasformazione può quindi essere utilizzata per trasformare l'immagine originale in modo tale che la tabella dei colori sia riprodotta direttamente dalla direzione della normale alla superficie.

Adatta le linee ai bordi

Come si può vedere, rimane solo la distorsione radiale. Quando abbiamo usato la trasformazione per la trasformazione dell'immagine (interpolazione 2D), abbiamo scelto le coordinate di interpolazione in modo tale che conosciamo la risoluzione precisa dell'immagine, il che significa che ora conosciamo ad esempio la dimensione delle lettere.H

Se vogliamo ancora eseguire una corrispondenza dei modelli, possiamo utilizzare qualsiasi metodo di corrispondenza dei modelli decente. Il metodo non deve essere invariante per rotazione / scala poiché l'immagine è già stata corretta.

Prospettiva corretta


1

Inizia con il rilevamento dei bordi. Quindi utilizzare la trasformazione di Hough per rilevare le linee rette. Quindi capire quali linee sono parallele e quali dovrebbero essere perpendicolari. Quindi stimare la trasformazione proiettiva in modo che le linee che dovrebbero essere perpendicolari siano effettivamente perpendicolari.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.