2012-02-15 6 views
6

Sto eseguendo il rilevamento delle funzioni in un video utilizzando MATLAB. Le condizioni di illuminazione variano in diverse parti del video, portando ad alcune parti che vengono ignorate mentre trasformano le immagini RGB in immagini binarie.Come correggere l'illuminazione non uniforme nelle immagini usando MATLAB?

Le condizioni di illuminazione in una parte specifica del video cambiano anche nel corso del video.

Puoi suggerire il metodo migliore in MATLAB per bilanciare l'illuminazione attraverso il fotogramma e il video?

+0

[Filtro Homomorphic] (http://en.wikipedia.org/wiki/Homomorphic_filtering) potrebbe aiutarti. – Lucas

risposta

7

Sono disponibili due opzioni, a seconda delle funzionalità che si desidera rilevare e di ciò che si desidera fare con il video.

  1. Ignora l'illuminazione delle immagini perché (come hai concluso) questo contiene informazioni inutili o persino fuorvianti per il rilevamento delle funzioni.
  2. Prova a riparare le irregolarità di illuminazione (che è quello che chiedi).

1) è abbastanza facile da fare: Convertire l'immagine a un colourspace che separa l'illuminazione in un canale separato come: HSV (ignorare il canale V) Lab (ignorare L) YUV (ignorare Y) ed eseguire il rilevamento delle funzioni sui due canali rimanenti. Di questi HSV è il migliore (come osservato da Yves Daoust nei commenti) YUV e Lab lasciano alcune informazioni di illuminazione nei canali UV/ab. Nella mia esperienza gli ultimi due funzionano anche a seconda della situazione, ma HSV è il migliore.

2) È più difficile. Comincerei convertendo l'immagine in HSV.Quindi esegui la riparazione solo sul canale V:

  • Applicare uno gaussian blur all'immagine del canale V con un valore molto elevato per sigma. Questo ti dà una media locale per l'illuminazione. Calcola il valore V medio globale per questa immagine (questo è un numero). Quindi sottrarre il valore medio locale dal valore V effettivo per ciascun pixel e aggiungere la media globale. Ora hai eseguito un'equalizzazione dell'illuminazione molto cruda. Puoi giocare un po 'con il valore di sigma per trovare un valore che funzioni meglio.
  • Se questo non funziona, esaminare le opzioni zenopy gives in his answer.

Qualunque sia il metodo scelto, vi consiglio di concentrarvi su ciò che si vuole fare (cioè di rilevare le caratteristiche) e decidere di passaggi intermedi come questo che sufficiente per I tuoi bisogni. Prova rapidamente qualcosa, guarda come questo aiuta il rilevamento delle funzioni,

+0

Ignorare L di Lab o Y di YUV non funzionerà molto bene; queste quantità stanno aumentando le funzioni dell'illuminazione (non quantità omogenee). La coppia Saturazione/Valore è più appropriata perché queste coordinate sono basate su rapporti dei componenti RGB, quindi insensibili all'illuminazione. Può essere usata qualsiasi coppia in xyz (non XYZ). –

+0

Non rimuove la variazione di illuminazione dell'intero punto della domanda del poster originale? E quindi ignorando L/Y o V una scorciatoia utile che potrebbe essere abbastanza buona? –

+0

N. Coordinate -ab di Lab e -UV di YUV contengono ancora informazioni di illuminazione (sono piccole per un'immagine scura e grandi per un'immagine chiara; -ab sono proporzionali alla radice cubica di intensità e -UV sono direttamente proporzionali alla intensità). HS- di HSV e xyz sono indipendenti dall'illuminazione. –

5

che non è un banale task ma ci sono molti modi per cercare di superarla. Posso ricordare che si inizia con l'implementazione dell'algoritmo retinex o si utilizza un'implementazione di altri: http://www.cs.sfu.ca/~colour/publications/IST-2000/.

L'idea di base è che la luminanza (intensità dell'immagine osservata) = illuminazione (luce incidente) x riflettanza (percentuale riflessa):

L(x,y) = I(x,y) x R(x,y) 

e sei interessato nella parte R.

lavorare su immagini a colori per ogni frame prima spostarsi nello spazio di colore HSV e far funzionare la Retinex parte v (valore).

Spero che abbia senso.

5

A parte le irregolarità di illuminazione tra le singole immagini, che sono indirizzate da Retinex o dal filtro passa-alto, è possibile pensare alla correzione automatica del guadagno attraverso il video.

L'idea è di normalizzare le intensità di immagine applicando una trasformazione lineare alle componenti di colore, in modo che le deviazioni medie e standard di tutti e tre i canali combinati diventino valori predefiniti (media -> 128, deviazione standard -> 64).

L'equalizzazione dell'istogramma avrà un effetto simile di "standardizzazione" dei livelli di intensità.

Purtroppo, i grandi cambiamenti di scena avrà un impatto di questo processo in modo tale che le intensità dello sfondo non rimarranno costanti come ci si aspetterebbe loro.

Problemi correlati