2012-12-20 8 views
7

Sto lavorando a un progetto di creazione di immagini e capisco che ci sono diversi approcci per gestire il contrasto e la luminosità di un'immagine. Potrei ovviamente affrontare questo problema prima ancora che io abbia cucito l'immagine, ma il risultato non è così coerente come spero. Quindi la mia domanda è se è possibile per qualche motivo "bilanciare" o piuttosto "equalizzare" il contrasto e la luminosità delle immagini a colori dopo che i punti sono stati realizzati?Bilanciamento del contrasto e della luminosità tra le immagini cucite

risposta

4

Si desidera determinare la funzione di equalizzazione dell'istogramma non da tutte le immagini, ma dalla zona in cui toccheranno o si sovrapporranno. Ovviamente vuoi avere istogrammi identici nell'area di sovrapposizione, quindi è qui che si calcolano le funzioni. Quindi si applicano le funzioni di equalizzazione che lo compiono su tutte le immagini. Se hai più di due punti, vuoi comunque avere l'equalizzazione globale in anticipo e quindi utilizzare un'applicazione ponderata delle funzioni di equalizzazione sovrapposizione che diminuisce l'impatto man mano che ti allontani dal bordo cucito.

Mi scuso se questo è già ovvio per voi, ma la vostra domanda generale mi porta a una risposta generale.

+0

Puoi per caso mostrarmi un esempio pratico? Capisco i concetti, ma implementato in OpenCV sono un po 'perso. – JavaCake

4

Si consiglia di dare un'occhiata allo Exposure Compensator class fornito da OpenCV.

compensazione dell'esposizione avviene in 3 fasi:

  1. Crea la tua esposizione compensatore

    Ptr<ExposureCompensator> compensator = ExposureCompensator::createDefault(expos_comp_type);

  2. È ingresso tutte le immagini insieme con i primi curve a sinistra di ciascuna di esse. Puoi lasciare le maschere completamente bianche per impostazione predefinita, a meno che tu non voglia specificare alcune parti dell'immagine su cui lavorare.

    compensator->feed(corners, images, masks);

  3. ora ha tutte le informazioni di come le immagini si sovrappongono, è possibile compensare ogni immagine singolarmente

    compensator->apply(image_index, corners[image_index], image, mask);

L'immagine compensata saranno memorizzati in image

+0

Hai gestito questo codice per funzionare? – user65721

+0

Puoi condividere il codice. Ho provato questo e non riuscivo a farlo funzionare! – user65721

+0

Sto anche cercando di farlo. Per maggiori informazioni è implementato nell'esempio 'stitching_detailed.cpp' dei progetti di esempio cpp. –

Problemi correlati