Foveonizzazione

Tematiche legate a tecniche e post produzione digitale, strumenti, proiettori, computer, stampa digitale, archiviazione.

Moderatori: maxofrome, Enrico, Mauro, old_kappa, Buster

Foveonizzazione

Messaggioda ntx » dom set 26, 2010 2:36 pm

Come anticipato nella discussione sulla Sigma SD1 ecco qua il tutorial per la "foveonizzazione" dei vostri RAW.

Foveonizzazione

La seguente procedura permette di simulare il comportamento del sensore Foveon manipolando i dati raccolti da un sensore con matrice Bayer.

I software utilizzati in questa procedura sono DCRaw e GIMP: il primo e' usato per estrarre i dati grezzi dal PEF (o dal DNG) senza demosaicizzazione e - eventualmente - senza correzioni del bilanciamento del bianco; il secondo e' usato come banco di lavoro per l'estrazione delle componenti e per assemblare l'immagine finale.
E' possibile scaricare DCRaw per piattaforme Windows e MacOS da questo sito: http://www.insflug.org/raw/Downloads/
DCRaw e' un programma a linea di comando.

Passo 1: Estrazione dei dati grezzi

Nell'estrarre i dati grezzi e' possibile dire a DCRaw se applicare o meno il bilanciamento del bianco. Questo comportamento e' controllato da un parametro in linea di comando.
Modalita' senza correzione del bilanciamento del bianco:

Codice: Seleziona tutto
dcraw -D _IGP6054.PEF


Modalita' con correzione del bilanciamento del bianco:

Codice: Seleziona tutto
dcraw -w -d _IGP6054.PEF


(notare il parametro -D che diventa -d)

Finita l'elaborazione si ottiene in uscita un file di estensione .pgm: si tratta di un formato aperto e che - teoricamente - tutti i software dovrebbero aprire.
In questo tutorial (a differenza di quanto ho mostrato nella discussione della sulla SD1 ho voluto provare l'elaborazione con correzione del bilanciamento del bianco... comunque, a parte la diversa linea di comando, operativamente non ci sono differenze). Il mio file si chiama quindi _IGP6054.pgm (il vecchio .PEF non viene toccato).

Passo 2: Apertura del file e qualche considerazione

Aperto il file _IGP6054.pgm ci troviamo davanti ad una immagine in scala di grigi.

Immagine

Nei dati raccolti dal sensore non ci sono colori ma solo luminosita'.
Ecco la matrice Bayer vista da "vicino":

Immagine

A questo livello di ingrandimento e' subito evidente che la precedente immagine in scala di grigi e' tutta "quadrettata" come se ci fosse una trama: questo mosaico e' la matrice Bayer.
Nella matrice Bayer ogni pixel contiene l'informazione su una sola componente colore; su un sensore Foveon, invece, ogni punto contiene i dati di tutte e tre le componenti colore.
La disposizione delle componenti sulla matrice Bayer e' la seguente:

Immagine

Si nota immediatamente che con questa matrice solo 1/4 della superficie del sensore viene usata per campionare la componente rossa, un'altro quarto per componente blu e la restante meta' del sensore usata per campionare la componente verde.
L'algoritmo di demosaicizzazione si occupa di spargere per propagazione in modo efficace le componenti mancanti sui pixel.
Per simulare il Foveon da questa matrice si useranno solo valori misurati attraverso la definizione di un fotodiodo "virtuale" che contenga tutte e tre le componenti. Per fare cio' assumeremo che per fare un fotodiodo virtuale servono 4 pixel della matrice:

Immagine

Il nuovo fotodiodo ha pero' un costo: si perde la meta' della risoluzione ovvero l'immagine finale contiene 1/4 dei megapixel iniziali.

Passo 3: Estrazione del canale rosso

Cosi' com'e', la nostra matrice ha nel primo pixel in alto a sinistra il fotodiodo rosso (io la chiamo posizione 0,0 - il programma di fotoritocco puo' chiamarla anche 1,1). Come e' rosso quello, sono rossi anche quelli che troviamo a distanza di 2, 4, 6, 8, ecc. pixel sia in orizzontale che in verticale (notare che non e' una scacchiera quella che viene fuori, sono punti isolati).
Come scartare quindi i pixel blu e verdi ottenendo il solo canale rosso?
Il sistema e' quello di riscalare l'immagine della meta' senza applicare alcuna interpolazione. Questa operazione scarta le righe e le colonne in posizione dispari e lascia intatte quelle in posizione pari.

Immagine

Quindi, come si vede, impostare la larghezza e l'altezza alla meta' della dimensione originale, impostare l'interpolazione su "none" e premere "Scale".
In questo modo si e' ottenuto il canale rosso "pulito".

Immagine

Notare come non sia piu' presente il mosaico della matrice Bayer.

A questo punto selezionare tutta l'immagine, copiarla negli appunti e incollarla come nuova immagine:

Immagine

Rinominare il layer con il nome "R" (ovvio che non e' obbligatorio ma se si vuol tenere un po' d'ordine male non fa):

Immagine

Il canale rosso e' stato estratto.

Passo 4: Estrazione del canale verde

Per estrarre il canale del verde dobbiamo posizionare nel primo pixel in alto a sinistra un pixel verde. Nella matrice Bayer ce ne sono due: potete sceglierne uno qualsiasi dei due, io scelgo quello sotto il pixel rosso che abbiamo visto prima.
Per spostare l'immagine (e di conseguenza la matrice) utilizzate lo strumento per il movimento di immagini, layer e selezioni (quello con le quattro freccie su GIMP). Spostate di un pixel verso l'alto l'immagine - come aiuto ho segnato con una "R" rossa il punto dove va a finire il pixel rosso dell'immagine iniziale:

Immagine

A questo punto ridimensionare il layer alla dimensione immagine:

Immagine

Questa operazione fa scartare tutti i punti esterni all'area dell'immagine. E' un passaggio obbligato - almeno su GIMP - poiche' se non lo si fa il riscalamento non funziona a dovere.

A questo punto facciamo il riscalamento come abbiamo fatto per il canale rosso, poi selezioniamo tutta l'immagine, la copiamo negli appunti e - dove abbiamo salvato il canale rosso - incolliamo gli appunti come nuovo layer:

Immagine

Rinominare il layer appena creato con "G" (sempre per tenere ordinate le cose):

Immagine

Anche il canale verde e' stato estratto.

Passo 5: Estrazione del canale blu

L'estrazione del canale blu segue una procedura simile a quella per il canale verde con l'unica differenza che il primo pixel in alto a sinistra deve essere un pixel blu. Per fare cio' spostiamo l'immagine di un pixel piu' alto e di un pixel piu' a sinistra - la "R" rossa indica come prima la posizione del pixel rosso iniziale:

Immagine

Di nuovo: scartiamo i pixel esterni all'area dell'immagine, riscaliamo sempre coi soliti parametri, selezioniamo tutta l'immagine, la copiamo negli appunti e la incolliamo nell'immagine di destinazione come nuovo layer. Anche in questo caso rinominiamo il layer in "B".

Immagine

Passo 6: Assemblare l'immagine finale

Posizionarsi sull'immagine composta dai 3 layer delle componenti estratte. Non e' una cattiva idea riordinare i layer:

Immagine

Andare su Colors -> Components e selezionare "Compose..."

Immagine

Sulla maschera di composizione verificare che (1) il modello di colore sia RGB e che (2) i layer finiscano sul canale giusto (se siete stati ordinati tutto sara' gia' al suo posto ;) ...).

Immagine

Cliccare OK ed ecco pronta la nostra immagine a colori!

Immagine


Considerazioni finali

Benche' si sia persa meta' della risoluzione (e quindi 3/4 dei nostri megapixel) nell'immagine risultante ci sono 3/4 dei dati raccolti dal nostro sensore (viene persa solo la seconda componente verde). E mentre questa immagine e' formata da soli dati reali, non si puo' dire lo stesso dell'immagine demosaicizzata dove 2/3 dell'informazione e' generata da un algoritmo (non e' una critica alla demosaicizzazione anche perche' essa non funziona affatto male).

Differenze con il Foveon riguardano la posizione dei fotodiodi: sul Foveon sono impilati, sul nostro pseudo-Foveon sono affiancati (come i punti dei vecchi monitor CRT). Potremmo a questo punto arrovellarci sulla convenienza o meno di questa soluzione in base ai diversi punti di fuoco dei vari colori, alle distorsioni che puo' avere la luce attraversando i fotodiodi, ecc. ecc. ... la cosa importante, per me, e' che - come per il Foveon - abbiamo un punto fatto da componenti misurate e non interpolate.

Ovviamente utilizzando un vero sensore Foveon si potrebbe andare a ritroso in questa procedura e generare la corrispondente matrice Bayer. Andandola a demosaicizzare si potra' ottenere un'immagine con il doppio della risoluzione (e il quadruplo dei megapixel).

Poiche' la matrice Bayer e' sempre fatta allo stesso modo, gli utenti di Photoshop posso salvare tutta questa procedura come una singola azione: diventera' quindi molto meno laborioso convertire una matrice in una immagine finita.



Spero vivamente di essere stato piu' chiaro nella spiegazione e di non aver dato troppe cose per scontate. Nel caso chiedete pure.

Ho preparato questo tutorial anche in PDF. Lo si puo' scaricare da qui.

Ciao
Jenner
ntx
Tetratricoctomo
 
Messaggi: 15825
Iscritto il: gio mag 07, 2009 7:55 am
Località: Bassa romagnola
 

Re: Foveonizzazione

Messaggioda obsidian » dom set 26, 2010 2:38 pm

soccia! :clap:
Socio FLP

flickr
obsidian
Opinionista assiduo
 
Messaggi: 1469
Iscritto il: mar set 09, 2008 4:57 pm
 

Re: Foveonizzazione

Messaggioda Eurostar » dom set 26, 2010 2:46 pm

Sarebbe interessante capire come gli utenti Phoshop possano farlo... immagino che gli sttrumenti ci siano, solo che non ho idea dove cercarli... :cry:

Intanto grazie per il perfetto tutorial...
Guido Sardella seduto sulla riva del fiume

mi trovate qui:
L'Oasi WWF dei Ghirardi
Avatar utente
Eurostar
pungitopic
 
Messaggi: 43429
Iscritto il: mer feb 13, 2008 7:17 pm
Località: Albareto, Parma
Skype: guidosardella
 

Re: Foveonizzazione

Messaggioda ntx » dom set 26, 2010 3:01 pm

Eurostar ha scritto:Sarebbe interessante capire come gli utenti Phoshop possano farlo... immagino che gli sttrumenti ci siano, solo che non ho idea dove cercarli... :cry:

Intanto grazie per il perfetto tutorial...


Eppure tutti gli strumenti che ho utilizzato nel tutorial li ho visti usare durante il corso di fotografia (usavano CS3 - l'insegnante parlava in photoshoppese e io prendevo appunti in gimpiano :D ).

Purtroppo non uso Photoshop (neanche sul portatile di mia moglie dove ho Windows 7)... e ad essere onesto non mi entusiasma particolarmente l'andarmelo a scaricare dal mulo. :P

Magari martedi' sera, che vado al circolo fotografico, guardo come si fanno i vari passaggi.

Ciao
Jenner
ntx
Tetratricoctomo
 
Messaggi: 15825
Iscritto il: gio mag 07, 2009 7:55 am
Località: Bassa romagnola
 

Re: Foveonizzazione

Messaggioda Eurostar » dom set 26, 2010 3:04 pm

ntx ha scritto:
Eurostar ha scritto:Sarebbe interessante capire come gli utenti Phoshop possano farlo... immagino che gli sttrumenti ci siano, solo che non ho idea dove cercarli... :cry:

Intanto grazie per il perfetto tutorial...


Eppure tutti gli strumenti che ho utilizzato nel tutorial li ho visti usare durante il corso di fotografia (usavano CS3 - l'insegnante parlava in photoshoppese e io prendevo appunti in gimpiano :D ).

Purtroppo non uso Photoshop (neanche sul portatile di mia moglie dove ho Windows 7)... e ad essere onesto non mi entusiasma particolarmente l'andarmelo a scaricare dal mulo. :P

Magari martedi' sera, che vado al circolo fotografico, guardo come si fanno i vari passaggi.

Ciao
Jenner


Lungi da me mandarti a pescare nei torrenti! :pula:

Se comunque riesci a provarlo presso il circolo saremmo grati in tanti, suppongo. Io di sicuro...
Guido Sardella seduto sulla riva del fiume

mi trovate qui:
L'Oasi WWF dei Ghirardi
Avatar utente
Eurostar
pungitopic
 
Messaggi: 43429
Iscritto il: mer feb 13, 2008 7:17 pm
Località: Albareto, Parma
Skype: guidosardella
 

Re: Foveonizzazione

Messaggioda khan76 » dom set 26, 2010 4:29 pm

Grazie per l'ottimo tutorial :happy2:
Gimp già ce l'ho, adesso scarico dcraw e provo. Per photoshop non credo ci dovrebbero essere particolari problemi, dovrebbe avere tutti gli strumenti che ha gimp, c'è da perdere un pochino di tempo a cercarli, ma poi basta creare un'azione per applicare il procedimento in automatico.
Avatar utente
khan76
senior member
 
Messaggi: 487
Iscritto il: mer lug 02, 2008 9:13 pm
Località: Potenza
 

Re: Foveonizzazione

Messaggioda Chaotic Alea » dom set 26, 2010 5:15 pm

ntx che tu sappia solo dcraw fa quel lavoro di estrazione grezza? O anche qualche altro programma puo' farlo?
Convinto di esser PentaXista :D
Indegno posseduto da una K7 e un Tappo WR
Zeiss Planar 50/1,7,Biotar Jena 58/2, SMC F 70-210 "The Demolisher",
Voigtlander apo-lanthar SLII 90/3,5
flickr
Chaotic Alea
Dito seduto
 
Messaggi: 2020
Iscritto il: dom set 05, 2010 2:07 pm
 

Re: Foveonizzazione

Messaggioda NoOne » dom set 26, 2010 8:43 pm

:clap:
Avatar utente
NoOne
pollicionatore assiduo
 
Messaggi: 2404
Iscritto il: ven apr 17, 2009 10:35 pm
Località: Nei dintorni di Genova
 

Re: Foveonizzazione

Messaggioda Chaotic Alea » dom set 26, 2010 9:49 pm

Altra cosa, ci sono differenze (io ammetto di non averci perso molto tempo) tra questa "Foveonizzazione" e il demosaicing di un altro programma?
Convinto di esser PentaXista :D
Indegno posseduto da una K7 e un Tappo WR
Zeiss Planar 50/1,7,Biotar Jena 58/2, SMC F 70-210 "The Demolisher",
Voigtlander apo-lanthar SLII 90/3,5
flickr
Chaotic Alea
Dito seduto
 
Messaggi: 2020
Iscritto il: dom set 05, 2010 2:07 pm
 

Re: Foveonizzazione

Messaggioda ntx » lun set 27, 2010 8:05 am

Chaotic Alea ha scritto:Altra cosa, ci sono differenze (io ammetto di non averci perso molto tempo) tra questa "Foveonizzazione" e il demosaicing di un altro programma?


Questa e' la tipica domanda che mi fa capire che non sono stato abbastanza chiaro. :P
La differenza principale e' che la foveonizzazione ti fa perdere 3/4 dei megapixel perche' costruisce l'immagine con soli valori reali. La mia K200D ha un sensore da poco piu' di 10 megapixel e la foveonizzazione genera un'immagine da 2.5 megapixel (e non puo' andare oltre)... utilizzando la demosaicizzazione otterrei invece un'immagine da 10 megapixel (poiche' questo algoritmo inventa 2 delle componenti per ogni singolo pixel).

Per quel che riguarda l'altra domanda che hai fatto, per quel che ne so, l'unico programma che estrae la matrice Bayer nuda e cruda che conosco e' DCRaw. E' ovvio che tutti gli sviluppatori di RAW, nessuno escluso, devono saper estrarre e lavorare sulla matrice Bayer ma non te ne viene dato accesso.

Ciao
Jenner
ntx
Tetratricoctomo
 
Messaggi: 15825
Iscritto il: gio mag 07, 2009 7:55 am
Località: Bassa romagnola
 

Re: Foveonizzazione

Messaggioda fanagot » lun set 27, 2010 8:40 am

prima di tutto grazie della guida :clap:

poi una domanda, hai provato la differenza tra la tua procedura e un semplice ricampionamento ad 1/4 del raw normale?
Mancano molte foto di obiettivi che TU magari hai. Controlla nell'archivio e provvedi! Immagine
Avatar utente
fanagot
Non ho ancora svaccato abbastanza?
 
Messaggi: 32704
Iscritto il: ven feb 15, 2008 10:14 am
Località: Paperopoli
 

Re: Foveonizzazione

Messaggioda Chaotic Alea » lun set 27, 2010 8:52 am

ntx ha scritto:
Chaotic Alea ha scritto:Altra cosa, ci sono differenze (io ammetto di non averci perso molto tempo) tra questa "Foveonizzazione" e il demosaicing di un altro programma?


Questa e' la tipica domanda che mi fa capire che non sono stato abbastanza chiaro. :P
La differenza principale e' che la foveonizzazione ti fa perdere 3/4 dei megapixel perche' costruisce l'immagine con soli valori reali. La mia K200D ha un sensore da poco piu' di 10 megapixel e la foveonizzazione genera un'immagine da 2.5 megapixel (e non puo' andare oltre)... utilizzando la demosaicizzazione otterrei invece un'immagine da 10 megapixel (poiche' questo algoritmo inventa 2 delle componenti per ogni singolo pixel).



Ammetto anche io di esser stato poco chiaro :sdent:
Quello che chiedevo io era relativo alla qualita' dell'immagine, ovvero prendo un raw e lo demosaicizzo e prendo lo stesso raw e applico il workflow di "foveonizzazione" alla fine quale immagine risulta migliore?(Mpx a parte) O hai notato differenze qualitative tra lo sviluppo raw classico e il tuo?
Convinto di esser PentaXista :D
Indegno posseduto da una K7 e un Tappo WR
Zeiss Planar 50/1,7,Biotar Jena 58/2, SMC F 70-210 "The Demolisher",
Voigtlander apo-lanthar SLII 90/3,5
flickr
Chaotic Alea
Dito seduto
 
Messaggi: 2020
Iscritto il: dom set 05, 2010 2:07 pm
 

Re: Foveonizzazione

Messaggioda magma » lun set 27, 2010 8:53 am

Una guida molto interessante.
Grazie. :clap:

Sarebbe bello scrivere uno script-fu per Gimp che renda il processo automatico.
Se trovo il tempo, ci provo. :digito: Se qualcuno mi precede, lo ringrazio. :wink2:
Mario

FLP - pellicole scadute, c'è più gusto
la mia galleria Pentaxiani.it
foto Flickr
Avatar utente
magma
Azionista del forum
 
Messaggi: 2778
Iscritto il: mer mar 05, 2008 1:56 pm
Località: prov. Pavia
 

Re: Foveonizzazione

Messaggioda Liviux » lun set 27, 2010 11:33 am

Molto interessante. Ho voluto provare a riprodurre il processo usando Imagemagick, in modo da automatizzarlo del tutto evitando l'uso manuale di Gimp:

Codice: Seleziona tutto
#!/bin/bash
FILERAW=$1
FILEBASE=${FILERAW/.PEF/}

dcraw -D $FILERAW
convert ${FILEBASE}.pgm -sample 50%x50% ${FILEBASE}_GREEN1.pgm
convert ${FILEBASE}.pgm -roll -1+0 -sample 50%x50% ${FILEBASE}_RED.pgm
convert ${FILEBASE}.pgm -roll +0-1 -sample 50%x50% ${FILEBASE}_BLUE.pgm
convert ${FILEBASE}.pgm -roll -1-1 -sample 50%x50% ${FILEBASE}_GREEN2.pgm
convert -combine ${FILEBASE}_RED.pgm ${FILEBASE}_GREEN1.pgm ${FILEBASE}_BLUE.pgm ${FILEBASE}.png


Dandogli in pasto un file PEF viene fuori un'immagine PNG a risoluzione dimezzata composta nel modo che ci ha spiegato Jenner, che ringrazio.
Vedo però che il risultato ha una fortissima dominante verde. Ho provato ad aggiungere fra le opzioni di "convert" l'equalizzazione automatica dei canali, ma in nessun modo sono riuscito a tirare fuori qualcosa di qualità neanche lontanamente paragonabile alla JPEG prodotta dalla macchina. Noto che anche la foto usata nel tutorial presenta lo stesso tipo di problema: i colori finali risultano ben poco naturali. Ho forse dimenticato qualcosa? C'è qualche operatore da applicare ai canali per ottimizzare la resa?
Così com'è, più che uno strumento utile ci vedo una finestra aperta sui meccanismi interni che trasformano il segnale prodotto dal sensore in una fotografia degna di questo nome.
Avatar utente
Liviux
Azionista del forum
 
Messaggi: 4028
Iscritto il: ven feb 27, 2009 10:46 am
Località: Papuasia sud-orientale
 

Re: Foveonizzazione

Messaggioda magma » lun set 27, 2010 11:52 am

Liviux ha scritto:[...]
Ho forse dimenticato qualcosa? C'è qualche operatore da applicare ai canali per ottimizzare la resa?
[...]


Mi pare che, per calcolare la luminosità, i canali sono miscelati nelle seguenti proporzioni:
R 30%
G 59%
B 11%
Non so se c'entra con l'alterazione dei colori.

Proverò il tuo script. :wink2:
Mario

FLP - pellicole scadute, c'è più gusto
la mia galleria Pentaxiani.it
foto Flickr
Avatar utente
magma
Azionista del forum
 
Messaggi: 2778
Iscritto il: mer mar 05, 2008 1:56 pm
Località: prov. Pavia
 

Prossimo

Torna a Camera chiara

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti