ITVA20070059A1 - Metodo e relativo dispositivo di interpolazione di colori di un'immagine acquisita mediante un sensore di colore digitale - Google Patents

Metodo e relativo dispositivo di interpolazione di colori di un'immagine acquisita mediante un sensore di colore digitale Download PDF

Info

Publication number
ITVA20070059A1
ITVA20070059A1 IT000059A ITVA20070059A ITVA20070059A1 IT VA20070059 A1 ITVA20070059 A1 IT VA20070059A1 IT 000059 A IT000059 A IT 000059A IT VA20070059 A ITVA20070059 A IT VA20070059A IT VA20070059 A1 ITVA20070059 A1 IT VA20070059A1
Authority
IT
Italy
Prior art keywords
pixels
interpolation
pixel
window
working window
Prior art date
Application number
IT000059A
Other languages
English (en)
Inventor
Mirko Ignazio Guarnera
Giuseppe Messina
Valeria Tomaselli
Original Assignee
St Microelectronics Srl
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by St Microelectronics Srl filed Critical St Microelectronics Srl
Priority to IT000059A priority Critical patent/ITVA20070059A1/it
Priority to US12/217,309 priority patent/US8144977B2/en
Publication of ITVA20070059A1 publication Critical patent/ITVA20070059A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/403Edge-driven scaling; Edge-based scaling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4015Image demosaicing, e.g. colour filter arrays [CFA] or Bayer patterns

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Color Television Image Signal Generators (AREA)
  • Image Processing (AREA)
  • Color Image Communication Systems (AREA)

Description

“METODO E RELATIVO DISPOSITIVO DI INTERPOLAZIONE DI COLORI DI UN’IMMAGINE ACQUISITA MEDIANTE UN SENSORE DI COLORE DIGITALE”
CAMPO DELL’ INVENZIONE
Questa invenzione concerne in generale le tecniche per processare immagini acquisite mediante un sensore digitale di colori e più in particolare un metodo di interpolazione di colori di ciascun pixel dell’ immagine acquisita a partire da valori di intensità generati da un singolo elemento fotosensibile del sensore, in funzione del filtro applicato secondo un certo pattern spaziale (per esempio secondo il cosiddetto Bayer Pattern) tale da rendere ciascun singolo elemento sensibile ad uno dei colori primari o tinte base.
BACKGROUND DELL’INVENZIONE
Per ricostruire un’immagine a colori è necessario eseguire un’operazione nota come interpolazione di colore (o “demosai cing) tale da generare triplette di valori di colori base (RGB) o più valori, uno per ciascuna tinta base, attraverso appropriati algoritmi di interpolazione per generare valori di colori mancanti per ciascun pixel di immagine.
Numerose tecniche per processare dati forniti da un sensore di colore digitale sono state proposte. Tra i tanti documenti si citano i seguenti:
[1] M.R. Gupta, T. Chen, “Vector Color Filter Array Demosai cing” SPIE Electronic Imaging 2001;
[2] R. Ramanath, W.E. Snyder, G.L. Bilbro, W.A. Sander, “Demosaicing Methods for Bayer Color Arrays”, Journal of Electronic Imaging, voi.
11, n. 3, pages 306-315, July 2002;
[3] R. Kimmel, “Demosaicing: Image Reconstmction from Color CCD Samples”;
[4] R. Kakarala, Z. Baharav, “Adaptive Demosaicing with The Principal Vector Method”, IEEE Transactions on Consumer Electronics, voi.48, n.4, pages 932-937, November 2002;
[5] B.E. Bayer, “Color Imaging Array”, U.S. Patent 3.971.065, July 1976;
[6] B. K. Gunturk, Y. Altunbasak, R, Mersereau, “Color Piane Interpolation Using Alternating Projections”, IEEE Transactions on Image Processing, volli, no.9, pages 997-1013, September 2002;
[7] Lanlan Chang and Yap-Peng Tan, “Effective use of Spadai and Spectral Correlations for Color Filter Array Demosaicking”, IEEE Transactions on Consumer Electronics, Voi. 50, No. 1, pages 355-365, February 2004.
[8] Ed Chang, Shiufun Cheung and Davis Pan, “Color Filter Array Recovery Using a Threshold-based Variable Number of Gradiente”, Proc. SPIE, voi. 3650, pp. 36-43, 1999.
[9] G. Messina, M. Guarnera, V. Tomaselli, A. Bruna, G. Spampinato, A.
Castorina, “Color interpolation method of an image acquired by a digitai sensor by directional filtering”, Patent US2006072814, Aprii 2006.
[10] S. Smith, “Color image restoration with anti-alias”, Patent US 6,842,191 Bl, January 11 2005.
In molte tecniche note si suddivide preliminarmente il flusso di dati di immagine generato dal sensore di colore digitale in uno o più canali, in tre canali per il caso di un filtraggio basato sulle triplette RGB di colori primari (rosso, verde, blu), come mostrato in Figura 1. Quando la componente rossa di un pixel deve essere stimata, ma solo il suo livello di verde è stato acquisito, è necessario stimare i pixel rossi adiacenti al pixel considerato, e così via, quando il valore di un altro colore mancante deve essere stimato.
La fase di interpolazione di colore influenza drasticamente la qualità dell’intera pipeline di generazione di immagine e può produrre artefatti.
Chiaramente, suddividere in diversi canali dati di livelli di grigio generati dal sensore di colori digitale e da successiva operazione di unificazione dei valori calcolati per i colori primari o tinte base con il noto valore di colore primario o tinta base per il pixel considerato, implica un evidente carico computazionale o, nel caso di implementazione hardware, una maggiorata complessità circuitale.
Una gran quantità di articoli e brevetti è stata prodotta sull’argomento dell’ interpolazione di colore. Tra questi, ci sono soluzioni sia non adattative (lineare, cubica, ecc.) e adattative (“edge sensing”). I metodi adattativi usualmente hanno performance migliori di quelli adattativi, e producono risultati visivamente gradevoli, meno affetti da falsi colori ed effetti di “zipper”.
Lo sviluppo di nuove applicazioni di fotocamere digitali e dispositivi simili, per esempio nei telefoni cellulari, nei computer portatili (“notebook”) o palmari e altri dispositivi per comunicazioni mobili, spinge a escogitare tecniche sempre più efficienti ed allo stesso tempo poco costose per processare immagini acquisite da un sensore di colore digitale. Un requisito particolarmente importante è il basso costo, perché queste tecniche devono essere usate in dispositivi economicamente accessibili a molti consumatori.
SOMMARIO DELL’INVENZIONE
E’ stato trovato un metodo di interpolazione di colore ed un relativo dispositivo per implementarlo che assicura una migliorata definizione dell immagine filtrata rispetto ai noti metodi di interpolazione.
Studi eseguiti dalla Richiedente hanno mostrato che le performance dei metodi di interpolazione noti per filtrare un pixel selezionato dipendono fortemente dalle caratteristiche locali di ciascuna immagine, cioè dai valori di intensità dei pixel che circondano i pixel da filtrare. Può accadere che un certo algoritmo di interpolazione migliori in certi punti la definizione di un’immagine, ma la renda più indefinita in altri punti.
Una caratteristica del metodo dell'invenzione consiste nel calcolare parametri statistici definiti in funzione dei momenti statistici dell’intensità dei pixel di uno stesso colore primario o tinta complementare di una finestra di lavoro (2k+l)x(2k+l), ad esempio 5x5, e di almeno una finestra di lavoro di dimensioni minori, ad esempio una finestra di lavoro 3x3, centrata sul pixel da filtrare e nello scegliere, in funzione dei valori di tali parametri statistici, per ciascun pixel dell’immagine a colori da filtrare, l’algoritmo di filtraggio più appropriato per migliorare quanto più è possibile la definizione dei bordi e ridurre il rumore e gli artefatti.
Preferibilmente, questa scelta è determinata confrontando con soglie prestabilite i parametri statistici calcolati sulle due finestre e decidere quale algoritmo di interpolazione utilizzare in funzione di tali confronti.
Il metodo di questa invenzione può essere implementato anche attraverso un codice software eseguito da un computer o da un microprocessore.
L’invenzione è definita nelle rivendicazioni allegate.
BREVE DESCRIZIONE DEI DISEGNI
L’invenzione è descritta facendo riferimento ai disegni allegati, in cui: la Figura 1 mostra un Bayer pattern;
la Figura 2 mostra un diagramma a blocchi basilare di un dispositivo che implementa il metodo di questa invenzione;
la Figura 3 rappresenta i blocchi principali del dispositivo di Figura 2; la Figura 4 è una vista di dettaglio del dispositivo di Figura 2 secondo una forma di realizzazione preferita di questa invenzione;
la Figura 5 illustra le operazioni eseguite dal blocco NEIGHBOR ANALYSIS di Figura 3;
la Figura 6 illustra il criterio di decisione per eseguire un filtraggio passa-basso o un filtraggio direzionale secondo il metodo di questa invenzione;
la Figura 7 illustra in dettaglio le operazioni eseguite dal blocco TLM GENERATION di Figura 4;
la Figura 8 illustra il funzionamento del blocco TLM GENERATION di Figura 4 in un caso esemplificativo;
la Figura 9 mostra un caso critico in cui l’utilizzo dei filtri di Sobel per stimare la direzione di interpolazione di una finestra 3x3 porta ad un errore;
la Figura 10 illustra una finestra 5x5 di un Bayer pattern;
la Figura 11 illustra come il gradiente viene stimato secondo una forma di realizzazione preferita del metodo di questa invenzione;
la Figura 12 illustra schematicamente come calcolare le variazioni direzionali per il pixel centrale della finestra di lavoro 3x3 usando corrispondenti valori calcolati per gli altri pixel della finestra di lavoro;
le Figure 13a e 13b illustrano due finestre 5x5 Bayer pattern;
le Figure 14a, 14b, 15a e 15b confrontano immagini filtrate con una tecnica di interpolazione di colore a filtraggio direzionale con le stesse immagini filtrate con il metodo di questa invenzione;
le Figure 16a e 16b confrontano un’immagine filtrata secondo una tecnica di interpolazione di colore “SLR camera” e la stessa immagine è filtrata secondo il metodo di questa invenzione;
la Figura 17 mostra un diagramma a blocchi basilare di un'altra forma di realizzazione di un dispositivo di questa invenzione;
la Figura 18 mostra un Bayer pattern in cui il pixel centrale della finestra di lavoro è rosso o blu;
la Figura 19 mostra un Bayer pattern in cui il pixel centrale della finestra di lavoro è verde;
la Figura 20 illustra schematicamente come calcolare i valori G e J di un pixel centrale di una finestra di lavoro 3x3 per una direzione d'interpolazione orizzontale;
la Figura 21 illustra schematicamente come calcolare i valori G e H di un pixel centrale di una finestra di lavoro 3x3 per una direzione d'interpolazione verticale;
la Figura 22 illustra schematicamente come calcolare i valori G e H di un pixel centrale di una finestra di lavoro 3x3 in assenza di una direzione d'interpolazione;
le Figure 23a e 23b mostrano finestre di lavoro 5x5 di Bayer pattern con pixel centrale rispettivamente verde e rosso oppure blu;
le Figure 24a e 24b illustrano schematicamente un'altra forma di realizzazione del metodo dell'invenzione per calcolare valori intermedi del pixel centrale di una finestra di lavoro;
le Figure 25a e 25b illustrano schematicamente ancora un'altra forma di realizzazione del metodo dell'invenzione per calcolare valori intermedi del pixel centrale di una finestra di lavoro usando una memoria di linea; le la Figura 26 illustra schematicamente ancora un'altra forma di realizzazione del metodo dell'invenzione per calcolare valori intermedi del pixel centrale di una finestra di lavoro riducendo il numero di valori intermedi da calcolare;
le Figure da 27a a 29b confrontano immagini Bayer interpolate con un filtraggio direzionale adattativo con le stesse immagini Bayer interpolate secondo il metodo dell'invenzione.
DESCRIZIONE DI ALCUNE FORME DI REALIZZAZIONE DELL’INVENZIONE
Nella Figura 2 è mostrato un diagramma a blocchi che illustra una forma di realizzazione del metodo dell'invenzione. Esso comprende tre operazioni:
1) analisi dell’attività di pixel vicini;
2) stima della direzione e
3) interpolazione.
Il blocco di analisi dell’attività di pixel vicini seleziona quale algoritmo di interpolazione deve essere eseguito, secondo le caratteristiche dei pixel circostanti (confini, trama, area uniforme, ecc.), il blocco di stima della direzione calcola la direzione da usare nel passo di interpolazione, se necessario, il blocco di interpolazione esegue un algoritmo di interpolazione (demosaicing) scelto dal blocco di analisi dell’attività di pixel vicini. Gli algoritmi di demosaicing possono usare l’informazione di direzione fornita dal blocco di stima della direzione. Gli algoritmi di demosaicing disponibili possono avere diverse dimensioni della finestra di processamento dei pixels.
Lo schema a blocchi di una forma particolare di realizzazione del dispositivo dell'invenzione è illustrato in Figura 3, e un diagramma a blocchi dettagliato di esso è mostrato in Figura 4.
Blocco di analisi dei pixel vicini (NEiGHBOR ACTIVITY ANALYSIS) In generale, il blocco NEIGHBOR ACTIVITY ANALYSIS esamina diverse finestre di lavoro di dimensione massima (2&+l)x(2&+l), con k intero positivo prestabilito, centrate su un pixel da interpolare. In funzione di parametri statistici calcolati utilizzando i pixel dei piani di colore (o di tinta base) contenuti in tali finestre di lavoro, si definisce un criterio di selezione a soglie di uno tra N algoritmi di interpolazione implementabili. L'algoritmo di interpolazione potrà essere un'interpolazione passa-basso omogenea eseguita sui pixel della finestra di lavoro (2&+l)x(2&+l), un'interpolazione eseguita sui pixel di una finestra di lavoro di dimensioni minori di (2&+l)x(2&+l), un'interpolazione a filtraggio direzionale eseguita sui pixel della finestra di lavoro di dimensioni minori di (2&+l)x(2&+l), ecc.
Un semplice criterio di decisione dell'interpolazione da effettuare consiste nel confrontare le varianze (che sono parametri statistici del secondo ordine) con una soglia e stabilire il tipo e l'intensità del filtraggio passa-basso oppure passa-alto da effettuare in funzione di tale confronto.
Un criterio di decisione più complicato comprende l'operazione di stimare una direzione di filtraggio sulla finestra di lavoro (2&+l)x(2&+l) e utilizzare questa informazione per scegliere il tipo e l'intensità dell'interpolazione da effettuare.
Nel seguito si farà riferimento solo al caso di finestra di lavoro di dimensioni massime 5x5, ma ciò che verrà detto potrà essere immediatamente adattato per finestre di lavoro di dimensioni maggiori.
Nel caso in cui k=2, cioè le finestre di lavoro hanno dimensioni massime 5x5, il blocco NEIGHBOR ACTIVITY ANALYSIS, il cui schema funzionale dettagliato è mostrato in Figura 5, sceglie la migliore interpolazione da eseguire per ciascun pixel. Per effettuare questa scelta, esso analizza un intorno del pixel centrale. Più in particolare, la varianza è calcolata in una maschera 3x3 e 5x5. Due soglie sono impostate per distinguere diverse condizioni. Facendo riferimento alla Figura 5 e alla Figura 6, se entrambi i valori di varianza sono al di sotto della soglia bassa, la regione è considerata uniforme, e quindi una semplice interpolazione con un filtro passa-basso può essere utilizzata per rimuovere il rumore residuo.
Se il valore di varianza 3x3 (Figura 4 blocco a) è maggiore della soglia alta, la regione contiene un bordo o rappresenta un’immagine a trama fitta. In questo caso, una interpolazione direzionale è applicata per sfruttare la correlazione spaziale.
Tutti gli altri casi sono considerati incerti e un'ulteriore analisi, che è stata chiamata “three level analysis”, deve essere eseguita. Dopo questo passo, il pixel centrale sarà interpolato con una semplice interpolazione 3x3 o un’interpolazione direzionale 5x5 (Figura 5).
La Figura 7 mostra lo schema funzionale dell’analisi a tre livelli. La varianza 5x5 (Figura 4 blocco d) è usata per realizzare una maschera a tre livelli (TLM, Figura 4 blocco c): ciascun valore all’intemo della finestra corrente è sostituito da uno dei tre possibili livelli: basso (0), medio (1), o alto (2), a seconda della sua posizione rispetto al suo valore medio e alla sua deviazione standard.
Siano μ e σ il valore medio e la deviazione standard rispettivamente di un canale di colore. Se il livello di colore di un pixel è al di sotto di (μ-σ), esso è sostituito con 0; se il livello di colore di un pixel è compreso tra (μ-σ) e (μ+σ), esso è sostituito con 1; altrimenti esso è sostituito con 2. Si definisce “attività” la somma delle differenze in modulo di elementi contigui della TLM all’ interno di una certa maschera di lavoro (Figura 4 blocco g):
(1)
Una volta che la TLM è stata generata, due maschere di lavoro sono considerate e quindi due valori di attività sono calcolati di conseguenza. La prima maschera di lavoro è la stessa per ciascun pixel ed è la matrice quadrata 3x3 centrata sul pixel considerato. La seconda dipende dalla direzione fornita dal blocco di stima della direzione (Figura 4 blocco 1) per il pixel corrente: esso include i pixel lungo la direzione scelta.
Si sfrutta il fatto che quanto maggiore è l’attività all’interno di una maschera di lavoro, tanto più bassa è l’uniformità dell’immagine in essa. Per meglio comprendere questo fatto, si faccia riferimento all'esempio di Figura 8.
Nella parte in alto a sinistra della figura citata, è stata illustrata una porzione 5x5 di un’immagine Bayer, quindi la sua rappresentazione numerica viene mostrata e infine la maschera a tre livelli generata è visualizzata. Per generare l’immagine TLM, il valore medio e la deviazione standard di ciascun canale di colore sono calcolate. Si consideri il canale rosso, il cui valore medio e deviazione standard sono chiamati μμ.e OR, rispettivamente. Ciascun valore di colore originale rosso è confrontato con le quantità 70.38 (μκ - OR) e 163.96 (μ3⁄4+ OR): i valori minori di 70.38 sono sostituiti da 0; i valori che sono maggiori di 163.96 sono sostituiti da 2, tutti gli altri sono sostituiti da 1. Lo stesso metodo è utilizzato per altri due canali di colore.
Nella parte bassa di Figura 8 è mostrato un esempio di calcolo di attività, Ti rappresentando il generico elemento della TLM. In questo esempio, la direzione del bordo è stimata essere 135°, e la corrispondente maschera di lavoro direzionale è mostrata nella parte in basso a destra della figura. Le attività nella matrice quadrata 3x3 e nella matrice direzionale 5x5 sono calcolate attraverso Γ equazione (2).
(.
E’ immediato notare che la maschera di lavoro direzionale 5x5 e la sua formula di calcolo dell’attività dipende dalla direzione del bordo, che è fornita dal blocco di stima della direzione.
Attraverso questi due valori di attività, è possibile valutare se l’attività nella matrice quadrata 3x3 è minore dell’attività lungo la direzione fornita dal blocco di stima di direzione per il pixel corrente (Figura 4 blocco f). In questo caso, si può usare una semplice interpolazione 3x3. Questo controllo permette di evitare Γ interpolazione direzionale 5x5 quando una direzione viene stimata erroneamente oppure quando la regione è prossima ad un bordo, evitando l introduzione di artefatti.
Inoltre, se è stata scelta una semplice interpolazione, il sistema disabilita la fase di “peaking” (Figura 4 blocco s), che consiste sostanzialmente nell’ introdurre nell’immagine filtrata componenti ad alta frequenza che sono andate perse durante il filtraggio, in modo da non generare ulteriori artefatti oltre a quelli che sono ancora presenti, come mostrato in Figura 4. Nell’esempio di Figura 8, l’ interpolazione direzionale è scelta per il pixel centrale perché l’attività della maschera 3x3 (2) è maggiore di quella direzionale della maschera 5x5 (1).
Blocco di stima della direzione.
Il blocco di stima della direzione è basato su quello proposto nella domanda di brevetto [9], in cui le derivate lungo le direzioni orizzontale e verticale sono calcolate attraverso i filtri classici di Sobelx3x3 e Sobely(Figura 4 blocco i):
(3)
Una volta che i valori Sobelxe Sobelysono stati calcolati, la direzione del gradiente e l’ampiezza del gradiente sono calcolati mediante le equazioni (4) e (5), rispettivamente (Figura 4 blocco 1 e blocco m).
(4)
(5)
Le transizioni rosso-blu sono molto critiche per i filtri di Sobel perché in corrispondenza di queste transizioni tali filtri possono identificare una direzione di gradiente errata. Questo comportamento appare chiaramente in Figura 9. A causa di questo problema con gli operatori di Sobel su immagini Bayer, secondo un aspetto innovativo di questa invenzione la stima del gradiente è preferibilmente eseguita come segue.
Quando il pixel centrale è verde e il canale verde è sostanzialmente costante in un intorno del pixel centrale, i valori Sobelxe Sobelycontengono un’informazione di gradiente che riguarda diversi canali. Facendo riferimento alla Figura 9, il valore Sobelxcontiene l’informazione riguardo il canale blu, mentre Sobelycontiene l’informazione riguardo il canale rosso. Ciò porta ad errori nella stima del gradiente se i canali rosso e blu hanno andamenti opposti.
In particolare, dalla Figura 9 è possibile notare che sia Sobelxche Sobelysono maggiori di zero. Ciò implica che il gradiente è stimato essere uguale a 45°. Di conseguenza, la direzione di interpolazione, che è ortogonale alla direzione di gradiente, è uguale a 135°.
Questo errore nella stima del gradiente influenza grandemente la qualità finale dell’immagine, perché l’interpolazione è eseguita attraverso i bordi e non lungo di essi.
Per superare questo problema, quando il pixel centrale è verde, si valutano tre diverse direzioni del gradiente e ampiezze (una per ciascun canale di colore) in una finestra 5x5. Si consideri la finestra 5x5 mostrata in Figura 10.
I tre gradienti sono calcolati usando le seguenti equazioni:
(6)
in cui H indica il canale rosso (blu) e J indica il canale blu (rosso).
La direzione “or" e l’ampiezza “mag” di ciascun gradiente sono calcolate attraverso le seguenti equazioni (Figura 4 blocco h):
Facendo riferimento alla Figura 11, se entrambe le ampiezze di pixel rossi (MAG R) e blu (MAG_B) sono maggiori di quella dei pixel verdi (MAG G), per esempio se
la direzione di gradiente è fissata uguale alla direzione fornita dai canali rosso o blu, a seconda dell’ampiezza maggiore di questi due canali. Altrimenti, i filtri classici di Sobel 3x3 sono applicati per determinare la direzione del gradiente.
La direzione del gradiente per il pixel corrente è quantizzato in K orientamenti predefiniti, in cui K è generalmente impostato ad 8, e la direzione è determinata usando un operatore (Figura 4 blocco n) che opera sugli istogrammi di intensità.
Secondo una forma di realizzazione preferita di questa invenzione, un operatore “weighted-moda” (WM) è utilizzato per stimare la direzione di ampiezza maggiore in un intorno 3x3, come spiegato in [9], ma con una differenza: le ampiezze dei gradienti nell’intorno 3x3 del pixel centrale sono accumulate secondo le direzioni. Quindi, la direzione che ha la massima ampiezza totale è scelta come orientamento del gradiente per il pixel centrale. Questa operazione impedisce che la presenza di rumore possa influenzare la stima del gradiente.
Per ottenere migliori risultati, le direzioni che sono state filtrate dell’operatore weighted-moda possono essere usate nel calcolo della direzione del gradiente per il pixel centrale. Ciò può essere ottenuto introducendo una memoria di linea nel sistema per memorizzare l’ampiezza e la direzione della precedente riga dell’immagine, come si può vedere in Figura 12, in cui la direzione associata al pixel (e) è calcolata usando le direzioni già calcolate (a) ... (d) e le direzioni stimate (f) ... (i), come spiegato in precedenza. In pratica, invece di stimare le direzioni associate a tutti i pixel che circondano il pixel (e), si usano le direzioni determinate in precedenza per i pixel (a) ... (d) e si stimano solo le direzioni mancanti associate ai pixel (f) ... (i). Il vantaggio di operare in questo modo consiste nel fatto che le direzioni associate ai pixel (a) ... (d) sono determinate mediante un'operazione di moda, che è sicuramente più robusta e affidabile rispetto ad un'operazione di calcolo di gradiente.
A volte la direzione fornita dall’operatore weighted-moda non coincide con la direzione più frequente nell’intorno. In questo caso, la direzione scelta è spesso sbagliata, quindi potrebbe essere più conveniente interpolare attraverso un semplice algoritmo 3x3, ignorando l’informazione direzionale. In questo caso, la fase di “peaking” (Figura 4 blocco s) è disabilitata mediante un segnale di controllo dedicato.
Infine, dopo che è stato calcolato l’orientamento del gradiente, la direzione del bordo è ottenuta considerando la direzione ortogonale a quella del gradiente. La direzione del bordo è fornita dal blocco di analisi dell’intorno per l’analisi a tre livelli, e al blocco di interpolazione quando l’interpolazione di colore direzionale è stata selezionata.
Blocco di interpolazione.
Il blocco di interpolazione può implementare per ciascun pixel un tra N diverse tecniche di interpolazione. Nella forma di realizzazione preferita, questo blocco contiene tre diversi metodi distinti di interpolazione:
1. filtro direzionale 5x5 (Figura 4 blocco o);
2. semplice interpolazione 3x3 (Figura 4 blocco p);
3. filtro passa-basso omnidirezionale 5x5 (Figura 4 blocco q).
Il blocco di analisi dell’intorno sceglie il miglior algoritmo da eseguire su ciascun pixel. Nei seguenti paragrafi ciascuno di questi algoritmi sarà descritto.
Interpolazione di colore mediante filtraggio direzionale.
Questo algoritmo di interpolazione, che è stato già presentato in [9], sfrutta la correlazione spaziale per mezzo dei filtri gaussiani ellittici, dati dalla seguente formula:
(7) in cui
(8) e σχ, σ}sono le varianze lungo le due dimensioni, h è una costante di normalizzazione e a è Γ angolo di orientamento del filtro, che è fornito dal blocco di stima della direzione. I filtri possono essere calcolati ogni volta o eventualmente memorizzati in tabelle di consultazione dedicate.
Nella forma di realizzazione preferita, i filtri direzionali 5x5 sono stati presi in considerazione. Dato che nella forma di realizzazione preferita il numero di possibili orientamenti è impostato ad 8, solo 8 filtri gaussiani sono necessari per eseguire l’ interpolazione di colore a filtraggio direzionale, in modo che essi possano essere memorizzati in una tabella di consultazione LUT. Un’altra possibilità consiste nel calcolare i filtri ogni volta che essi devono essere applicati, per mezzo dell’equazione (7). Questi filtri sono applicati sull’immagine Bayer per calcolare le componenti del filtro passabasso (LPF) dei tre piani di colore (Figura 4 blocco r). Mentre il pixel centrale fornisce l’informazione di colore, la sua componente LPF è calcolata per introdurre le alte frequenze che sono andate perse negli altri due canali di colore. Più in particolare, facendo riferimento all’equazione (9) e (10), la differenza tra il valore di colore dell’immagine Bayer originale (G) e la sua componente direzionale LPF ( GLPF DF) è sommata alla componente LPF degli altri piani di colore:
(9) (10)
Facendo riferimento alla Figura 4, il contenuto ad alta frequenza è sommato alla componente LPF nel blocco di “peaking” (Figura 4 blocco t).
Questa operazione è giustificata dall’ipotesi che i canali rosso e blu, specialmente a bassa frequenza, sono correlati a quello verde in un piccolo intorno del pixel considerato.
Quando l'immagine da processare è fortemente corrotta da rumore, è preferibile disabilitare il blocco di "peaking" perché potrebbe aumentare il rumore. Inoltre anche i valori originari campionati in ciascuna posizione di pixel possono convenientemente essere sostituiti dalle rispettive componenti passa-basso, calcolate mediante l'operazione di interpolazione di colore mediante filtraggio direzionale. Si è verificato che ciò contribuisce validamente ad evitare che pixel rumorosi si propaghino anche nell'immagine interpolata.
Interpolazione semplice 3x3.
L’ interpolazione di colore a filtraggio direzionale 5x5 può produrre alcuni artefatti in prossimità dei bordi, specialmente in immagini con una trama intricata. Questo problema può sorgere quando una direzione erronea è stata stimata o quando una finestra di interpolazione ampia è utilizzata per interpolare una regione piccola, circondata da bordi. Questi artefatti non sono sempre rimossi dalla successiva operazione anti-aliasing, e possono essere accentuati dall’operazione successiva di “sharpening”. Per evitare questo problema, conviene eseguire un’ interpolazione 3x3 in regioni che sono prossime ai bordi.
Una grande varietà di algoritmi di interpolazione 3x3 è disponibile, l interpolazione bilineare “edge sensing”, ecc.. Per raggiungere risultati di buona qualità in prossimità di angoli e bordi, è possibile utilizzare un algoritmo che analizza l’intorno 5x5 del pixel centrale, e quindi applica un’interpolazione 3x3, evitando l’ interpolazione attraverso i bordi.
Un'interpolazione 3x3 che può essere utilizzata è quella descritta in [8], In alternativa, si può impiegare un nuovo algoritmo di interpolazione 3x3 basato sul confronto di un numero variabile di gradienti con una soglia. Secondo il canale di pixel centrale, quattro (G) oppure otto (R oppure B) gradienti sono calcolati in un intorno 5x5. Ciascun gradiente è definito come la somma dei valori assoluti delle differenze di pixel dello stesso colore in questo intorno. Per ciascun canale di colore da interpolare, un insieme appropriato di questi gradienti è selezionato per determinare una soglia di gradienti accettabili. Dato un sottoinsieme A di gradienti, la soglia T è definita come:
(11)
in cui Max è il valore del gradiente massimo nell’insieme, eM/j è il valore di gradiente minimo. Il primo addendo ( kjMin ) considera il caso in cui i gradienti sono tutti molto simili, quindi tutti questi sono inclusi impostando una soglia che sia più grande di essi. Il secondo addendo (, k2(Max-Min )) serve per escludere i gradienti maggiori, nel caso in cui ci sia una differenza significativa tra il valore massimo e il valore minimo. Come nel documento [8], si imposta kj=1.5 e k2=0.5. Grazie a questa soglia, solo un sottoinsieme di pixel vicini è selezionato per interpolare il valore centrale. In particolare, per tutti i gradienti del sottoinsieme A minori della soglia T si usano componenti di colore dalla direzione corrispondente dell’intorno 3x3, mediandoli per determinare i valori di colore mancanti.
Si consideri la finestra 5x5 mostrata in Figura 13 blocco a, in cui il pixel centrale è verde. Si calcolano quattro gradienti (nord, sud, est ed ovest), attraverso l’equazione (12):
in cui J è il canale rosso (blu) e H il canale blu (rosso).
Per interpolare il canale H mancante, si calcola la soglia THutilizzando il sottoinsieme A = {Ngrad, Sgrad}; per interpolare il canale J, la soglia Tj è calcolata sul sottoinsieme A= {Wgrad, Egrad}.
Il canale H è interpolato usando Hgoppure Hig, oppure entrambi, secondo i valori dei gradienti nord e sud rispetto al valore TH. In particolare, se il gradiente nord ( Ngrad) è minore della soglia 3⁄4 allora il valore Hg è considerato nel processo di interpolazione; allo stesso modo, se il gradiente sud {Sgrad) è minore della soglia 3⁄4 allora il valore Hig è considerato per l’interpolazione. Il canale H è interpolato mediando solo i valori H, che sono associati ai gradienti minori della soglia TH. Lo stesso metodo è utilizzato per l’interpolazione del canale J; in questo caso Ji2è considerato nel processo di media solo se il gradiente ovest (Wgrad) è minore di Tj, e J14è considerato solo se il gradiente est (Egrad) è minore di Tj. Infine, il canale G è lasciato immutato se l'immagine non è sostanzialmente corrotta da rumore, altrimenti esso può essere sostituito dai corrispondenti valori ottenuti effettuando un filtraggio passa-basso 3x3.
Se il pixel centrale non appartiene al canale verde (Figura 13b), si calcolano altri quattro gradienti (nordovest, nordest, sudovest e sudest), secondo l’equazione (13):
(13)
Per interpolare il canale G mancante, la soglia TQ viene calcolata utilizzando il sottoinsieme /1 {Ngrad, Sgrad, Wgrad, Egrad } ; per interpolare il canale H, la soglia 3⁄4 viene calcolata sul sottoinsieme A {NWgrad, NEgrad, SWgrad, SEgrad}. Anche in questo caso, si interpola ciascun canale di colore mancante mediando i valori di colore dello stesso canale nell’intorno 3x3, che sono associati ai gradienti minori della corrispondente soglia.
In pratica, la nuova tecnica di interpolazione 3x3 appena esposta differisce da quella presentata in [8] perché:
si calcolano solo quattro gradienti anziché otto in corrispondenza del pixel centrale verde;
i gradienti sono calcolati usando le equazioni (12) e (13);
l'interpolazione dei canali mancanti è effettuata usando dei pixel per i quali il gradiente ad esso associato è inferiore alla soglia variabile.
Filtro passa-basso onnidirezionale.
Questa interpolazione è eseguita su regioni uniformi. Un semplice filtro passa-basso omnidirezionale 5x5 è applicato per uniformare l’immagine, rimuovendo del rumore residuo da essa.
Esperimenti
Sono stati fatti diversi esperimenti per confrontare l’interpolazione di colore a filtraggio direzionale nota [9] e la nuova tecnica adattativa di questa invenzione. La Figura 14 mostra un confronto tra le due tecniche. E’ immediatamente chiaro che la tecnica adattativa (Figura 14.b) è migliore dell’ interpolazione di colore a filtraggio direzionale semplice (Figura 14. a), in una regione che è difficile da interpolare correttamente, a causa delle transizioni rosso/blu quando il canale verde è sostanzialmente costante. Il vantaggio principale è determinato dalla modifica del processo di stima del gradiente, rispetto alla tecnica precedente. Infatti, la Figura 14. a mostra una gran quantità di artefatti, che sono generati da una stima erronea del gradiente, a causa della debolezza degli operatori di Sobel sul Bayer pattern.
La Figura 15 mostra un altro confronto tra le due tecniche summenzionate. Si può vedere che l interpolazione di colore (Figura 15. b) di questa invenzione, produce minor rumore “zipper” rispetto alla precedente tecnica (Figura 15. a) in immagini con una trama fitta. Ciò è dovuto essenzialmente all’applicazione di un algoritmo di interpolazione 3x3 in regioni in prossimità dei bordi. Inoltre, l’algoritmo di demosaicing adattativo rimuove il rumore residuo dall’immagine, grazie all’applicazione di un’interpolazione di colore mediante un filtro passa-basso 5x5 in corrispondenza di regioni uniformi. I falsi colori nell’immagine interpolata possono essere facilmente rimossi mediante antialiasing.
I risultati raggiunti da questo algoritmo di demosaicing adattativo sono confrontabili con le performance della “Single Lens Reflex” (SLR) camera.
La Figura 16 mostra un confronto tra un algoritmo di interpolazione di colori “Single Lens Reflex camera” e la tecnica di demosaicing adattativo di questa invenzione. L’invenzione proposta supera l’algoritmo SRL camera nell’ interpolare bordi e transizioni rosso/blu, riducendo l’introduzione dell’effetto di “zipper”.
Da un'analisi più approfondita della tecnica illustrata, si nota che l'interpolazione è basata unicamente sulla correlazione spaziale dei pixel contenuti nella finestra di lavoro. Anche se i risultati mostrati in precedenza sono soddisfacenti, un ulteriore miglioramento può essere ottenuto sfruttando anche il fatto che tra pixel vicini esiste anche una correlazione di tipo spettrale.
Lo schema di Figura 3 può essere modificato come mostrato in Figura 17, in modo che le operazioni di interpolazione siano effettuate tenendo conto anche della correlazione di tipo spettrale che esiste tra i pixel della finestra di lavoro.
Per calcolare differenze tra pixel di canali diversi in un intorno al fine di ricavare il loro valore medio, è necessario calcolare dei valori intermedi per i pixel della finestra di lavoro considerata. Inoltre nello schema di Figura 17 c'è un blocco ALIASING CHECK che decide se è necessario effettuare un'operazione di soppressione dell'aliasing sui pixel interpolati mediante filtraggio direzionale oppure con un'interpolazione 3x3.
Nei paragrafi seguenti verranno illustrate le funzioni svolte da ciascun blocco.
Filtraggio direzionale e integrazione antialiasing
L'interpolazione di colore a filtraggio direzionale, già descritta in [9] e illustrata in precedenza, sfrutta la correlazione spaziale. Essa consente di calcolare le intensità dei pixel dei colori mancanti stabilendo la direzione dei bordi e interpolando lungo di essi. L'effetto "zipper" non si manifesta ma sovente vengono generati falsi colori, poiché non si sfrutta la correlazione spettrale.
Per applicare la regola della costanza della differenza di colore in un intorno di un pixel, senza aumentare le dimensioni della finestra di lavoro centrata sul pixel selezionato, è necessario calcolare alcuni valori intermedi.
Per meglio illustrare questa ulteriore tecnica innovativa, saranno analizzati separatamente i casi in cui il pixel centrale è rosso oppure blu e il pixel centrale è verde.
Facendo riferimento alla Figura 18, si consideri il caso in cui il pixel centrale è rosso oppure blu (H).
Il valore originario (H) è lasciato immutato, per cui esso non è affetto da aliasing. Inoltre, dato che il canale verde è campionato ad una frequenza doppia rispetto ai canali rosso e blu, l'aliasing è più facilmente presente nel canale J, che rappresenta i pixel blu oppure rossi. Interpolando i valori di colore mancanti del pixel centrale con l'interpolazione a filtraggio direzionale, descritta in [9] e illustrata in precedenza, si ottengono quattro valori intermedi G' nelle locazioni J. Essi possono essere calcolati applicando un'interpolazione direzionale 3x3, usando la stessa direzione ottenuta in corrispondenza del pixel centrale. Indicando con I l'insieme delle differenze tra canali J-G, calcolate nelle locazioni G e H all'interno della finestra 3x3 (pixel gialli in Figura 18), il valore JDFè corretto applicando un filtro mediano sull'insieme I, come descritto dall'equazione (14):
(14)
E' da notare che la correzione di colore del canale J è eseguita solo se la differenza J-G in corrispondenza del pixel centrale (JDF-GDF) è il valore massimo oppure minimo all'interno dell'insieme I. Diversamente, il valore JFDche è stato prodotto in uscita mediante l'interpolazione direzionale 5x5 viene lasciato inalterato. Si opera in questo modo perché un falso colore è correlato ad un picco o ad una valle nel dominio della differenza tra canali.
Si consideri ora il caso in cui il pixel centrale è verde, come mostrato in Figura 19.
In questo caso, l'aliasing può corrompere sia il canale J che il canale H. In particolare, se la direzione del bordo è orizzontale, si potrebbero avere falsi colori a causa di un'interpolazione errata del canale J, viceversa, se c'è un bordo verticale, falsi colori possono aversi a causa di una cattiva interpolazione del canale di colore H. Infine, entrambi i canali H e J potrebbero essere affetti da aliasing in tutti gli altri casi. Ciò accade perché sono stati distinti tre diversi casi per eseguire la correzione di colore appropriata.
In ogni caso, il processo di interpolazione comincia con l'interpolazione 5x5 a filtraggio direzionale per entrambi i canali H e J. Quindi, i valori intermedi (G, H' e J') sono calcolati secondo la direzione di interpolazione.
Si supponga di avere un bordo orizzontale. Falsi colori, se presenti, sono collegati al canale J. Per calcolare un valore intermedio J' nelle locazioni H che cadono all'interno dell'intorno 3x3 del pixel centrale, si applica un algoritmo che è schematicamente illustrato in Figura 20. La Figura 20 mostra il calcolo di G' e J' per il pixel a sinistra del centro.
Prima di tutto, si esegue una interpolazione direzionale 3x3 per calcolare sia G3x3che J3x3nella locazione H. Quindi, si calcola un insieme di differenze tra canali considerando che la direzione di interpolazione è orizzontale. Questo insieme è descritto dall'equazione (15):
(15)
Si nota che le differenze tra canali dell'insieme Diffs sono calcolate nella stessa finestra 5x5 utilizzata per l'interpolazione del pixel centrale. Eventualmente il valore corretto J' è calcolato secondo l'equazione (16).
(16)
Una volta che è stato usato lo stesso metodo per calcolare G' e J' a destra del pixel centrale, la formula di correzione del colore dell'equazione (17) è applicata per produrre in uscita i valori di colore mancanti in corrispondenza del pixel centrale:
(17)
in cui / è l'insieme di differenze tra canali, calcolato in corrispondenza dei pixel identificati con lo sfondo giallo in Figura 19.
Nel caso di direzione verticale, lo stesso algoritmo è utilizzato per eseguire la correzione di colore sul canale H (Figura 21).
Dopo che l'interpolazione direzionale 3x3 di entrambi i valori G3x3e //3x3in corrispondenza della locazione J è stata eseguita, l'insieme Diffs di differenze tra canali verticali è calcolato come illustrato dall'equazione (18):
(18) La correzione di colore del canale H è poi eseguita secondo l'equazione (19):
(19)
Infine, i valori di colore mancanti in corrispondenza del pixel centrale sono calcolati come mostrato nell'equazione (20):
(20)
Nell'ultimo caso considerato (quello in cui la direzione di interpolazione non è né orizzontale né verticale), i valori intermedi (J e G' nelle locazioni H e ìJ e G' nelle locazioni J) sono calcolati attraverso il filtraggio direzionale 3x3.
Essi possono essere corretti applicando un algoritmo antialiasing come mostrato in Figura 22.
Nonostante l'esecuzione dell'algoritmo antialiasing non sia indispensabile, essa può migliorare la qualità dell'immagine finale. Nella forma preferita di realizzazione della presente invenzione, si applica l'algoritmo antialiasing descritto in [10], Secondo il brevetto menzionato e facendo riferimento alla Figura 22, un segnale di controllo antialiasing A(j) è derivato mediante una combinazione di un segnale di controllo antialiasing A//(/) derivato dal canale H e, un segnale di controllo antialiasing A o(j) derivato dal canale G, come mostrato nell'equazione (21):
(21)
in cui k\è una costante, per esempio A:1=0.5.
Infine, i valori intermedi corretti di colore sono determinati come descritto dall'equazione (22):
(22)
I valori di colore mancanti in corrispondenza del pixel centrale sono calcolati secondo l'equazione (23):
(23)
Interpolazione 3x3 e integrazione antialiasing
L'algoritmo di interpolazione 3x3, esposto in precedenza, può essere modificato in modo da ridurre la creazione di falsi colori. Anche in questo caso, l'integrazione antialiasing richiede il calcolo di valori intermedi per eseguire una correzione del colore mediante un filtro mediano.
Come detto in precedenza, l'algoritmo di interpolazione 3x3 usa una tecnica a soglia di elaborazione di un numero variabile di gradienti. Dato un insieme A di gradienti, la soglia è definita dall'equazione (11). Utilizzando questa soglia, soltanto un sottoinsieme dei pixel che circondano il pixel centrale della finestra di lavoro viene selezionato per interpolare il valore centrale. Si calcolano quindi quattro gradienti, come descritto nell'equazione (12) e si calcolano le soglie THe Tj nel modo illustrato in precedenza.
L'operazione di integrazione antialiasing richiede che si calcoli il valore mediano delle differenze tra canali, e quindi bisogna calcolare alcuni valori intermedi. Come mostrato in Figura 19, anche in questo caso è necessario calcolare i valori di G', If e J nelle locazioni individuate con uno sfondo giallo.
In questo caso, i valori di colore centrale mancanti sono interpolati con la tecnica descritta in precedenza. I valori intermedi nelle locazioni nord sud ovest ed est sono interpolate semplicemente mediando i quattro pixel adiacenti che appartengono allo stesso canale di colore e applicando le formule antialiasing (21) e (22). Facendo riferimento alla Figura 23A, e G'g, per esempio, sono interpolati come segue:
(24)
in cui y4(/) è determinato attraverso l'equazione (21).
Due insiemi di differenze tra canali sono usati per eseguire l'operazione di correzione di colore (25):
(25) Se la direzione del pixel centrale è orizzontale, bisogna correggere solo il canale
Viceversa, se la direzione del pixel centrale è verticale, solo il canale H deve essere corretto:
Se il pixel centrale non appartiene al canale verde, come mostrato in Figura 23B, vengono calcolati altri quattro gradienti, utilizzando l'equazione (13) e procedendo come descritto in precedenza.
Il valore interpolato Jn viene corretto mediante l'algoritmo antialiasing a filtraggio mediano. Più precisamente, se la direzione del pixel centrale è orizzontale, si calcolano le seguenti differenze:
Altrimenti, se la direzione del pixel centrale è verticale, si calcolano le seguenti differenze Diffsj.
Se la direzione del pixel centrale non è né orizzontale né verticale, si calcolano quattro valori intermedi G' nelle locazioni J. Per esempio, G'7è interpolato come segue:
in cui A(j) è determinato mediante l'equazione (21).
In questo caso, le differenze Diffsj saranno:
(3i) La correzione del colore del canale J viene infine raggiunta attraverso la ben nota espressione seguente:
(32)
Questo ulteriore miglioramento può essere implementato in tre diversi modi. I valori intermedi possono essere calcolati (Figura 24) mentre si interpola il pixel centrale con la tecnica descritta nei paragrafi precedenti.
Anche se la Figura 24 fa riferimento al caso in cui il pixel centrale viene interpolato mediante l'interpolazione di colore a filtraggio direzionale, esso può essere interpolato anche mediante una semplice tecnica di interpolazione 3x3.
In alternativa, si può utilizzare una memoria dedicata per evitare di stimare di nuovo valori già interpolati. In questo modo, risultati più accurati vengono ottenuti al costo di un aumento dei requisiti di memoria.
I pixel rappresentati su sfondo verde in Figura 25 rappresentano i valori che sono stati già calcolati, mentre i pixel su sfondo giallo sono calcolati quando si interpola il pixel centrale.
Oppure, prima di interpolare un pixel G, si può interpolare il successivo pixel H in modo da ridurre il numero di operazioni (meno valori intermedi da calcolare) e avere una migliore soppressione dell'aliasing. I valori interpolati nelle locazioni H possono essere memorizzati in un registro.
I pixel rappresentati su sfondo verde in Figura 26 rappresentano i valori che sono stati già interpolati prima dell'interpolazione del pixel centrale. E da notare che l'interpolazione del pixel H a destra evita la stima di valori intermedi, senza richiedere alcun calcolo extra rispetto alle implementazioni precedentemente descritte.
Esperimenti
Questa ulteriore tecnica innovativa è stata testata e i risultati ottenuti utilizzando lo schema di Figura 17 sono stati confrontati con quelli ottenuti utilizzando lo schema di Figura 3.
Le Figure 27a, 28a e 29a mostrano delle immagini interpolate utilizzando lo schema di Figura 3, mentre le Figure 27b, 28b e 29b sono state ottenute utilizzando lo schema di Figura 17. Dal confronto, si evince chiaramente che con lo schema migliorativo di Figura 17 si previene efficacemente il problema della generazione di falsi colori, che sovente si verifica negli algoritmi di interpolazione di colore.

Claims (16)

  1. RIVENDICAZIONI 1. Metodo di interpolazione di colore di un'immagine acquisita mediante un sensore digitale a colori generante valori di livelli per ciascun pixel d'immagine in funzione del filtro applicato al sensore, interpolando i valori dei colori mancanti di ciascun pixel d'immagine per generare distinti valori di colori primari (RGB) o tinte complementari per ciascun pixel d'immagine, comprendente le operazioni seguenti: a) selezionare una finestra di lavoro (2k+l)x(2k+l) di detta immagine centrata sul pixel da filtrare, con k numero intero; b) determinare una direzione di interpolazione del pixel centrale di detta finestra di lavoro; c) calcolare parametri statistici definiti in funzione dei momenti statistici dell'intensità di pixel dello stesso colore primario o tinta complementare di detta finestra (2k+l)x(2k+l) e di almeno un'altra finestra di lavoro di dimensioni inferiori centrata attorno al pixel da filtrare; d) in funzione dei valori di detti parametri statistici della finestre di lavoro (2k+l)x(2k+l) e di detta almeno una finestra di lavoro di dimensioni minori, decidere di filtrare detto pixel centrale con un'interpolazione scelta nell'insieme costituito da un'interpolazione passa-basso omogenea eseguita sui pixel della finestra di lavoro (2k+l)x(2k+l), un'interpolazione eseguita sui pixel della finestra di lavoro di dimensioni minori, un'interpolazione a filtraggio direzionale eseguita sui pixel della finestra di lavoro di dimensioni minori, interpolazioni che si adattano a caratteristiche locali individuate da detti momenti statistici calcolati.
  2. 2. Il metodo della rivendicazione 1, comprendente le operazioni seguenti: a) selezionare una finestra di lavoro 5x5 di detta immagine centrata sul pixel da filtrare; b) determinare una direzione di interpolazione del pixel centrale di detta finestra di lavoro; c) calcolare medie e deviazioni standard dell'intensità di pixel dello stesso colore primario o tinta complementare di detta finestra 5x5 e di una finestra di lavoro 3x3 centrata attorno al pixel da filtrare; d) in funzione dei valori di dette medie e deviazioni standard delle finestre di lavoro 5x5 e 3x3, decidere di filtrare detto pixel centrale con un'interpolazione scelta nell'insieme costituito da un'interpolazione passa-basso omogenea eseguita sui pixel della finestra di lavoro 5x5, un'interpolazione eseguita sui pixel della finestra di lavoro 3x3, un'interpolazione a filtraggio direzionale eseguita sui pixel della finestra di lavoro 3x3, interpolazioni che si adattano a caratteristiche locali individuate da detti momenti statistici calcolati.
  3. 3. Il metodo della rivendicazione 2, in cui detto pixel centrale viene filtrato attraverso le seguenti operazioni: di) confrontare le varianze delle finestre di lavoro 5x5 e 3x3 con una soglia inferiore ed una soglia superiore; d2) in funzione dei risultati del confronto al punto di), decidere di filtrare detto pixel centrale con un'interpolazione passa-basso omogenea eseguita sui pixel della finestra di lavoro 5x5 oppure con un'interpolazione eseguita sui pixel della finestra di lavoro 3x3 oppure con un'interpolazione a filtraggio direzionale eseguita sui pixel della finestra di lavoro 3x3.
  4. 4. Il metodo della rivendicazione 3, comprendente l'operazione di eseguire un'interpolazione passa-basso sui pixel di uno stesso colore primario o tinta complementare nella finestra di lavoro 5x5 se entrambe le varianze di detta finestra di lavoro 5x5 e di detta finestra di lavoro 3x3 sono minori della soglia inferiore, o eseguire un'interpolazione a filtraggio direzionale se entrambe le rispettive varianze di detta finestra di lavoro 5x5 e di detta finestra di lavoro 3x3 sono maggiori della soglia superiore, o negli altri casi decidere se eseguire detto algoritmo di interpolazione sui pixel della finestra di lavoro 3x3 o detta interpolazione a filtraggio direzionale a seconda dei valori di parametri ausiliari primo e secondo calcolati in funzione del valore assoluto delle differenze di intensità dei pixel di detta finestra di lavoro 5x5.
  5. 5. Il metodo della rivendicazione 4, in cui detti parametri ausiliari sono determinati attraverso le seguenti operazioni: per ciascun colore primario o tinta complementare, determinare un'intensità media e la varianza dei pixel corrispondenti in detta finestra di lavoro 5x5; suddividere i pixel di detta finestra di lavoro 5x5 in: un gruppo di pixel di un primo livello (0) di intensità contenente i pixel la cui intensità è minore della differenza tra la rispettiva intensità media e la radice quadrata della rispettiva varianza, un gruppo di pixel di un secondo livello (1) di intensità contenente i pixel la cui intensità è compresa tra la differenza tra la rispettiva intensità media e la radice quadrata della rispettiva varianza e la somma tra la rispettiva intensità media e la radice quadrata della rispettiva varianza, un gruppo di pixel di un terzo livello (2) di intensità contenente i pixel la cui intensità è maggiore della somma tra la rispettiva intensità media e la radice quadrata della rispettiva varianza; detto primo parametro ausiliario è la somma dei valori assoluti delle differenze tra il livello del pixel centrale e il livello di ciascun pixel adiacente ad esso; e detto secondo parametro ausiliario è ottenuto determinando una direzione di interpolazione su detta finestra di lavoro 5x5 e calcolando la somma dei valori assoluti delle differenze tra i livelli dei pixel della finestra di lavoro 5x5 che giacciono lungo una direzione di interpolazione e i livelli dei pixel adiacenti ad esso.
  6. 6. Il metodo della rivendicazione 5, in cui detta interpolazione sui pixel della finestra di lavoro 3x3 è eseguita quando detto primo parametro è minore del secondo parametro e detta interpolazione a filtraggio direzionale è eseguita quando detto secondo parametro è minore del primo parametro.
  7. 7. Il metodo della rivendicazione 6, comprendente inoltre l'operazione di eseguire un'operazione di peaking per introdurre nell'immagine filtrata componenti ad alta frequenza che sono andate perse durante il filtraggio solo se detto algoritmo di interpolazione sui pixel della finestra di lavoro 3x3 non deve essere eseguita.
  8. 8. Il metodo della rivendicazione 3, in cui detta direzione di interpolazione è determinata calcolando gradienti di variazione spaziale di colori primari o tinte base complementari per ciascun pixel d'immagine e memorizzando l'informazione di variazione direzionale di un colore primario o tinta complementare in una memoria temporanea di ciascun pixel.
  9. 9. Il metodo della rivendicazione 8, in cui detta immagine è un'immagine Bayer e i componenti lungo due direzioni coordinate di detti gradienti di variazione spaziale e dette variazioni direzionali sono calcolate sui valori dei pixel contenuti in una finestra centrata sul pixel d'immagine selezionato eseguendo le seguenti operazioni: se il pixel centrale di detta finestra è verde, calcolare la direzione e l'ampiezza di gradienti di ciascun colore primario in funzione di valori di pixel contenuti in detta finestra; se dette ampiezze di gradienti riferiti ai pixel rossi e blu di detta finestra sono entrambi maggiori di almeno un fattore prestabilito dell'ampiezza del gradiente riferito ai pixel verdi di detta finestra, stabilire che la direzione del gradiente associato al pixel centrale della finestra è la direzione del gradiente riferita ai pixel rossi e blu che ha ampiezza massima; se dette ampiezze di gradienti riferite ai pixel rossi e blu di detta finestra non sono entrambi maggiori di almeno detto fattore prestabilito dell'ampiezza del gradiente riferito ai pixel verdi di detta finestra, calcolare componenti lungo due direzioni coordinate di detti gradienti di variazione spaziale usando operatori di Sobel sui valori rilevati di detti pixel d'immagine.
  10. 10. Il metodo della rivendicazione 8 o 9, in cui le componenti lungo due direzioni coordinate di detti gradienti di variazione spaziale sono calcolati usando operatori di Sobel sui valori rilevati di detti pixel d'immagine e dette variazioni direzionali sono generate usando per ciascun pixel d'immagine un operatore a moda pesata su una finestra centrata sul pixel di immagine selezionato, comprendente le operazioni di: memorizzare valori di ampiezza e valori di direzione quantizzata di gradienti di variazione spaziale per ciascun pixel intorno un pixel centrale in funzione di dette componenti calcolate; per ciascun orientamento quantizzato, calcolare la somma delle ampiezze dei gradienti orientati in detta direzione per ciascuno dei pixel contenuti in detta finestra; stabilire quale di dette somme è la maggiore; stabilire la direzione del gradiente associato a detto pixel centrale in funzione della somma maggiore.
  11. 11. Il metodo della rivendicazione 9, in cui detto certo fattore è 4.
  12. 12. Il metodo della rivendicazione 10, comprendente le operazioni di: per ciascun pixel di immagine, memorizzare in una memoria temporanea dette variazioni direzionali generate usando un operatore a moda pesata; stimare variazioni direzionali associate ad un pixel centrale corrente usando variazioni già calcolate e variazioni direzionali memorizzate associate a pixel adiacenti il pixel centrale.
  13. 13. Il metodo della rivendicazione 3, in cui detto algoritmo di interpolazione sui pixel della finestra di lavoro 3x3 è eseguito attraverso una tecnica a soglia su un numero variabile di gradienti.
  14. 14. Il metodo della rivendicazione 3, comprendente l'operazione di compensare l'effetto dell'aliasing che corrompe i pixel interpolati rossi o blu mediante dette operazioni di interpolazione eseguite al punto e), attraverso i seguenti passi per ogni finestra di lavoro: se il pixel centrale campionato è blu oppure rosso, stimare mediante detta interpolazione l'intensità dei pixel verdi e rossi oppure blu in una finestra ausiliaria 3x3 concentrica con detta finestra di lavoro, calcolare in detta finestra ausiliaria 3x3 il valore massimo, il valore minimo e il valore mediano della differenza tra pixel rossi oppure blu verdi e corrispondenti pixel verdi, se al pixel centrale di detta finestra di lavoro è associata la massima oppure la minima di dette differenze, correggere l'intensità del pixel centrale rosso oppure blu imponendo che sia uguale all'intensità del pixel centrale verde aumentata di detta differenza mediana, altrimenti lasciarne inalterato il valore di intensità ottenuto mediante detta interpolazione; se il pixel centrale campionato è verde, stimare mediante detta interpolazione l'intensità dei pixel verdi, rossi e blu in una finestra ausiliaria 3x3 concentrica con detta finestra di lavoro, quindi correggere il valore di intensità del pixel centrale rosso oppure blu attraverso le seguenti operazioni: calcolare in detta finestra ausiliaria 3x3 il valore massimo, il valore minimo e il valore mediano della differenza tra pixel rossi oppure blu e corrispondenti pixel verdi, se al pixel centrale rosso oppure blu di detta finestra di lavoro è associata la massima oppure la minima di dette differenze, correggere l'intensità del pixel centrale rosso oppure blu imponendo che sia uguale all'intensità del pixel centrale verde aumentata di detta differenza mediana, altrimenti lasciarne inalterato il valore di intensità ottenuto mediante detta interpolazione.
  15. 15. Programma per computer caricabile nella memoria interna di un computer comprendente un codice software per eseguire le operazioni del metodo di una delle rivendicazioni da 1 a 14 quando detto codice è eseguito da detto computer.
  16. 16. Dispositivo per eseguire le operazioni del metodo della rivendicazione 2, comprendente: un blocco di selezione per selezionare una finestra di lavoro 5x5 di detta immagine centrata su un pixel da filtrare; un blocco di analisi della varianza (NEIGHBOR ANALYSIS) per calcolare le varianze dell'intensità dei pixel di uno stesso colore primario o tinta complementare di detta finestra di lavoro 5x5 e di una finestra di lavoro 3x3 centrata usando il pixel da filtrare, e per confrontare detta varianza delle finestre di lavoro 5x5 e 3x3 almeno con una soglia inferiore e una soglia superiore; un blocco di stima della direzione (DIRECTION ESTIMATION) per determinare una direzione di interpolazione del pixel centrale di detta finestra di lavoro; un blocco di interpolazione (INTERPOLATION PHASE) accoppiato con detto blocco di stima della direzione (DIRECTION ESTIMATION), detto blocco di analisi della varianza (NEIGHBOR ANALYSIS) e detto blocco di selezione, adatto per filtrare detto pixel centrale in funzione dei risultati dei confronti eseguiti da detto blocco di analisi della varianza (NEIGHBOR ANALIYSIS), con un'interpolazione scelta neH'insieme costituito da un'interpolazione passa-basso omogenea eseguita sui pixel della finestra di lavoro 5x5, un'interpolazione eseguita sui pixel della finestra di lavoro 3x3, un'interpolazione a filtraggio direzionale eseguita sui pixel della finestra di lavoro 3x3, interpolazioni che si adattano a caratteristiche locali individuate da dette varianze.
IT000059A 2007-07-03 2007-07-03 Metodo e relativo dispositivo di interpolazione di colori di un'immagine acquisita mediante un sensore di colore digitale ITVA20070059A1 (it)

Priority Applications (2)

Application Number Priority Date Filing Date Title
IT000059A ITVA20070059A1 (it) 2007-07-03 2007-07-03 Metodo e relativo dispositivo di interpolazione di colori di un'immagine acquisita mediante un sensore di colore digitale
US12/217,309 US8144977B2 (en) 2007-07-03 2008-07-02 Method and relative device of color interpolation of an image acquired by a digital color sensor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT000059A ITVA20070059A1 (it) 2007-07-03 2007-07-03 Metodo e relativo dispositivo di interpolazione di colori di un'immagine acquisita mediante un sensore di colore digitale

Publications (1)

Publication Number Publication Date
ITVA20070059A1 true ITVA20070059A1 (it) 2009-01-04

Family

ID=40221496

Family Applications (1)

Application Number Title Priority Date Filing Date
IT000059A ITVA20070059A1 (it) 2007-07-03 2007-07-03 Metodo e relativo dispositivo di interpolazione di colori di un'immagine acquisita mediante un sensore di colore digitale

Country Status (2)

Country Link
US (1) US8144977B2 (it)
IT (1) ITVA20070059A1 (it)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8471852B1 (en) 2003-05-30 2013-06-25 Nvidia Corporation Method and system for tessellation of subdivision surfaces
US8571346B2 (en) 2005-10-26 2013-10-29 Nvidia Corporation Methods and devices for defective pixel detection
US7885458B1 (en) 2005-10-27 2011-02-08 Nvidia Corporation Illuminant estimation using gamut mapping and scene classification
US7750956B2 (en) 2005-11-09 2010-07-06 Nvidia Corporation Using a graphics processing unit to correct video and audio data
US8588542B1 (en) 2005-12-13 2013-11-19 Nvidia Corporation Configurable and compact pixel processing apparatus
US8737832B1 (en) 2006-02-10 2014-05-27 Nvidia Corporation Flicker band automated detection system and method
ATE404914T1 (de) * 2006-02-15 2008-08-15 Jaycrypto Ltd Verfahren und vorrichtung zum erzeugen von initialwerten für einen zufallszahlengenerator
US8594441B1 (en) 2006-09-12 2013-11-26 Nvidia Corporation Compressing image-based data using luminance
US8723969B2 (en) 2007-03-20 2014-05-13 Nvidia Corporation Compensating for undesirable camera shakes during video capture
US8564687B2 (en) * 2007-05-07 2013-10-22 Nvidia Corporation Efficient determination of an illuminant of a scene
US8698917B2 (en) * 2007-06-04 2014-04-15 Nvidia Corporation Reducing computational complexity in determining an illuminant of a scene
US8724895B2 (en) * 2007-07-23 2014-05-13 Nvidia Corporation Techniques for reducing color artifacts in digital images
US8570634B2 (en) 2007-10-11 2013-10-29 Nvidia Corporation Image processing of an incoming light field using a spatial light modulator
US8135216B2 (en) * 2007-12-11 2012-03-13 Flashfoto, Inc. Systems and methods for unsupervised local boundary or region refinement of figure masks using over and under segmentation of regions
US8682029B2 (en) * 2007-12-14 2014-03-25 Flashfoto, Inc. Rule-based segmentation for objects with frontal view in color images
US9177368B2 (en) 2007-12-17 2015-11-03 Nvidia Corporation Image distortion correction
US8780128B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Contiguously packed data
US8698908B2 (en) 2008-02-11 2014-04-15 Nvidia Corporation Efficient method for reducing noise and blur in a composite still image from a rolling shutter camera
US9379156B2 (en) 2008-04-10 2016-06-28 Nvidia Corporation Per-channel image intensity correction
US8195689B2 (en) 2009-06-10 2012-06-05 Zeitera, Llc Media fingerprinting and identification system
US8189945B2 (en) * 2009-05-27 2012-05-29 Zeitera, Llc Digital video content fingerprinting based on scale invariant interest region detection with an array of anisotropic filters
US10123050B2 (en) * 2008-07-11 2018-11-06 Qualcomm Incorporated Filtering video data using a plurality of filters
JP5272581B2 (ja) * 2008-08-25 2013-08-28 ソニー株式会社 画像処理装置、撮像装置、画像処理方法およびプログラム
RU2531568C2 (ru) * 2008-10-14 2014-10-20 Конинклейке Филипс Электроникс Н.В. Моментальная коррекция результатов сегментации опухоли
US8373718B2 (en) 2008-12-10 2013-02-12 Nvidia Corporation Method and system for color enhancement with color volume adjustment and variable shift along luminance axis
KR100992362B1 (ko) * 2008-12-11 2010-11-04 삼성전기주식회사 컬러 보간 장치
US8749662B2 (en) 2009-04-16 2014-06-10 Nvidia Corporation System and method for lens shading image correction
JP2011022131A (ja) * 2009-06-18 2011-02-03 Olympus Corp 医療診断支援装置、画像処理方法、画像処理プログラム、およびバーチャル顕微鏡システム
US8670615B2 (en) * 2009-09-30 2014-03-11 Flashfoto, Inc. Refinement of segmentation markup
US8698918B2 (en) 2009-10-27 2014-04-15 Nvidia Corporation Automatic white balancing for photography
US9311567B2 (en) 2010-05-10 2016-04-12 Kuang-chih Lee Manifold learning and matting
US8698885B2 (en) 2011-02-14 2014-04-15 Intuitive Surgical Operations, Inc. Methods and apparatus for demosaicing images with highly correlated color channels
US9798698B2 (en) 2012-08-13 2017-10-24 Nvidia Corporation System and method for multi-color dilu preconditioner
US9508318B2 (en) 2012-09-13 2016-11-29 Nvidia Corporation Dynamic color profile management for electronic devices
FR2997089B1 (fr) * 2012-10-23 2015-11-13 Arkema France Materiau composite thermoplastique a base de polyamide semi-cristallin et procede de fabrication
US9307213B2 (en) 2012-11-05 2016-04-05 Nvidia Corporation Robust selection and weighting for gray patch automatic white balancing
US9826208B2 (en) 2013-06-26 2017-11-21 Nvidia Corporation Method and system for generating weights for use in white balancing an image
US9756222B2 (en) 2013-06-26 2017-09-05 Nvidia Corporation Method and system for performing white balancing operations on captured images
US10210599B2 (en) 2013-08-09 2019-02-19 Intuitive Surgical Operations, Inc. Efficient image demosaicing and local contrast enhancement
KR102087986B1 (ko) * 2013-10-04 2020-03-11 삼성전자주식회사 이미지 데이터를 처리하는 방법 및 장치
CN105389776B (zh) 2014-09-02 2019-05-03 辉达公司 图像缩放技术
CN104318549B (zh) * 2014-10-10 2017-07-11 中国科学院长春光学精密机械与物理研究所 一种用于确定基于轴向插值的配准描述子方向的方法
WO2017131618A1 (en) * 2016-01-25 2017-08-03 Hewlett-Packard Development Company, L.P. Interpolating pixel values
GB2559778B (en) * 2017-02-17 2022-06-29 Grass Valley Ltd Decoding a bayer-mask or like coded image
GB2559776B (en) 2017-02-17 2022-04-06 Grass Valley Ltd Decoding a bayer-mask or like coded image
TWI664605B (zh) * 2018-08-16 2019-07-01 瑞昱半導體股份有限公司 色彩重建裝置與方法
CN109299394A (zh) * 2018-11-26 2019-02-01 Oppo广东移动通信有限公司 信息推送方法及相关产品
CN114445290B (zh) * 2021-12-28 2024-04-02 中国科学技术大学 一种面向硬件的联合去噪去马赛克方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3971065A (en) 1975-03-05 1976-07-20 Eastman Kodak Company Color imaging array
GB9925902D0 (en) 1999-11-03 1999-12-29 Vlsi Vision Ltd Colour image restoration with anti-alias
ITVA20040038A1 (it) 2004-10-04 2005-01-04 St Microelectronics Srl Metodo di interpolazione del colore di una immagine acquisita da un sensore digitale mediante il filtraggio direzionale

Also Published As

Publication number Publication date
US8144977B2 (en) 2012-03-27
US20090010539A1 (en) 2009-01-08

Similar Documents

Publication Publication Date Title
ITVA20070059A1 (it) Metodo e relativo dispositivo di interpolazione di colori di un'immagine acquisita mediante un sensore di colore digitale
US9654700B2 (en) Computational camera using fusion of image sensors
EP1038159B1 (en) A new edge-detection based noise removal algorithm
EP1371014B1 (en) System and method for asymmetrically demosaicing raw data images using color discontinuity equalization
JP4657564B2 (ja) 電子スチルカメラ及び画像処理方法
US8004586B2 (en) Method and apparatus for reducing noise of image sensor
WO2005101854A1 (ja) 色ずれ補正機能を有する画像処理装置、画像処理プログラム、および電子カメラ
WO2005117455A1 (ja) Rawデ-タから倍率色収差を検出する画像処理装置、画像処理プログラム、および電子カメラ
WO2011158572A1 (ja) 画像処理装置、および画像処理方法、並びにプログラム
KR20060133773A (ko) 컬러 채널 상호간의 특성을 고려한 컬러 잡음 제거 방법 및장치
WO1999046730A1 (en) Edge-dependent interpolation method for color reconstruction in image processing devices
TW200838285A (en) Image processing apparatus, image capturing apparatus, image processing method in these apparatuses, and program allowing computer to execute the method
JP4859220B2 (ja) 輝度信号作成装置及び輝度信号作成方法、並びに撮像装置
CN109416829A (zh) 并行计算机视觉和图像缩放架构
CN107784631B (zh) 图像去模糊方法及装置
JP4945942B2 (ja) 画像処理装置
KR100565429B1 (ko) 컬러 필터 어레이에서 손실된 컬러값 복원 방법 및 장치
Zhen et al. Image demosaicing
WO2008086037A2 (en) Color filter array interpolation
AU2016250291A1 (en) Determining multispectral or hyperspectral image data
US20050134713A1 (en) Method of processing a digital image
US20150348244A1 (en) Blind Defringing For Color Images
JP2007028041A (ja) 画像処理装置
McCrackin et al. Strategic image denoising using a support vector machine with seam energy and saliency features
JP6273582B2 (ja) 画像補間装置、画像処理装置および画像補間方法