2012-02-19 18 views
8

Sto lavorando su un sistema ANPR utilizzando OpenCV e ho visto in alcuni articoli un modo di segmentare i caratteri. L'idea è di creare un grafico che mostri la concentrazione sul colore attraverso l'immagine.Istogramma di concentrazione di colore OpenCV

Come posso fare?

enter image description here

Questa è l'immagine che ho:

enter image description here

ho bisogno di rilevare le posizioni delle aree nere come sopra indicato per identificare ciascuno dei personaggi.

Ho provato ad aggiungere i valori in pixel per pixel, ma lo sto facendo su Android e il tempo necessario è inaccettabile.

+0

Che cos'è questa immagine? Come fai cosa? Ti preghiamo di provare ad aggiungere ulteriori dettagli su ciò che effettivamente hai e su ciò che vuoi fare. –

+0

Quindi hai attualmente la posizione delle aree nere? Puoi inserire uno snippet di codice per ciò che intendi con "l'aggiunta di valori pixel per pixel"? –

+0

Se la velocità è il tuo unico problema, ti suggerirei di ridimensionare l'immagine in ingresso a una risoluzione più bassa di un fattore 2 o addirittura 4. L'immagine di input visualizzata è una risoluzione molto alta per l'attività che si desidera eseguire. –

risposta

6

Ok, è un mese più tardi, ma ho scritto un po 'di codice (in python) per questo;)

(supponendo che si è appena dopo l'istogramma densità dell'immagine)

import cv 

im2 = cv.LoadImage('ph05l.jpg') 
width, height = cv.GetSize(im2) 
hist = [] 
column_width = 1 # this allows you to speed up the result, 
        # at the expense of horizontal resolution. (higher is faster) 
for x in xrange(width/column_width): 
    column = cv.GetSubRect(im2, (x * column_width, 0, column_width, height)) 
    hist.append(sum(cv.Sum(column))/3) 

Per velocizzare le cose, non è necessario modificare i file immagine, basta modificare la larghezza del cestino del campionamento (column_width nello script), ovviamente si perde una risoluzione se si esegue questa operazione (come si può vedere nell'immagine qui sotto).

Nell'immagine, mostro i risultati (grafico hist) con il file, utilizzando column_width di 1, 10 e 100. Hanno eseguito per me rispettivamente a 0,11, 0,02 e 0,01 secondi.

L'ho scritto anche in PIL, ma funziona da 5 a 10 volte più lentamente.

character density histograms

+0

Questo è fantastico, grazie –

-1

Partenza OpenALPR (http://www.openalpr.com). Segue la segmentazione dei caratteri allo stesso modo (usando gli istogrammi). È abbastanza veloce su un desktop, ma non sono sicuro di quanto sarebbe veloce su Android.

Problemi correlati