davide78 ha scritto:Questo non ha niente a che vedere col formato del file. E a meno che Pentax non decida di rendere pubblico il codice di PDCU non è un problema risolvibile. Quello che a me interessa è avere, in futuro, un modo per poter comunque leggere i RAW che non dipenda da software specifici. Accettando il fatto che i risultati dell'elaborazione saranno diversi da quelli di PDCU.
Scusa eh, ma se tutto questo non ha importanza allora, ancora a maggior ragione, chissenefrega se uso PEF o DNG.
Di fatto stai dicendo che l'importante e' ottenere i dati e questo non viene meno poiche' PEF o DNG che sia, la struttura di base e' un TIFF. Ma tu sul serio credevi, che so, che un RAW fosse un coso con dentro dati compressi con una compressione e cifrati con sistemi proprietari? Ma quando mai! Fare cose del genere significa
doverle fare e queste aziende non hanno nessuna intenzione di spendere denaro nello sviluppo di compressioni e cifrature (che devi essere arcisicuro non abbiano bug, che siano un minimo resistenti e che non comportino un carico di elaborazione improponibile) quando ne esistono di pubbliche, gratuite, rodatissime e con migliaia di implementazioni hardware e software gia' pronte.
davide78 ha scritto:Un codice che interpreta il file è cosa ben diversa dalle specifiche dettagliate del formato. Dalle seconde è relativamente facile scrivere un programma che faccia quel che vogliamo noi, dal primo può risultare impossibile (per quanto ben documentato sia il codice). Visto che mi pare bazzichi anche tu in campo informatico dovresti saperlo bene.
Lo so bene, come del resto so un minimo leggere quello che c'e' dentro il sorgente di dcraw (e' una "lettura" interessante). Il codice di dcraw e' composto principalmente da un lettore/scrittore di file TIFF, una procedura per suddividere i vari chunk di questo TIFF, 5 algoritmi di demosaicizzazione e una sbidonata di tabelle di coefficenti con cui dare un peso ai dati delle componenti colore (coefficenti che, volendo, puoi sovrascrivere passandoli dalla command line).
Come dice lo stesso autori di dcraw, l'unico vero problema con i file RAW sono tutte le meta-informazioni non documentate e spesso cifrate messe a corredo del file. Meta-informazioni che sono identiche sia sul DNG che sul PEF (e t'assicuro che una Canon o una Ricoh non si mettono a regalarti una public-key per decifrare i dati... ti attacchi e basta, Adobe inclusa). Capirai quindi che bella forza ci vuole a fare un converitore da RAW a DNG: di fatto cambia un po' il wrapper solo per ritrovarti sempre con la stessa roba (cambiare la carta con cui impacchetti un regalo non modifica il regalo).
Ma del resto, come dicevi sopra, a te interessano i meri dati e a fronte di cio' non si vede la differenza fra DNG e PEF.
davide78 ha scritto:Un TIFF16 non è un RAW.
Ah no?
davide78 ha scritto:L'immagine è già stata De-mosaicizzata, convertita in uno spazio colore di riferimento, hai fatto il bilanciamento del bianco e applicata una curva gamma.
Tu parti dal presupposto che un RAW sia chissa' quale esoterica entita' idealizzata quando invece e' di una squallida banalita' e soprattutto e' priva di tutte quelle qualita' taumaturgiche che gli vengono attribuite.
Innanzitutto con un comando tipo:
dcraw -D nomefile.raw
ottengo l'immagine non demosaicizzata che posso mettere in un TIFF (8 o 16) per eventualmente demosaicizzarla in seguito.
Questa premessa per dire che l'immagine mosaicizzata e' solamente un'immagine, come le altre, in scala di grigio e che la puoi trattare allo stesso modo e memorizzarla sugli stessi tipi di file. Nella mia discussione sulla "Foveonizzazione" non mostro altro che - a fronte di un raggruppamento di pixel con lo stesso significato (es. appartenere tutti ai fotodiodi rossi) si ottiene un'immagine finita, dove non c'e' da trattare nulla, dove si usano i valori dei pixel tali e quali senza toccare nulla di quel che e' uscito dal sensore.
La demosaicizzazione e' solo ed esclusivamente un filtro applicato ad una immagine, il cui risultato
ha senso quando l'immagine in ingresso ha i pixel intercalati nella maniera della matrice Bayer. Nulla vieta, nulla, di dare in pasto ad un demosaicizzatore un'immagine di altro tipo, a lui non frega se il risultato ha senso o no... come del resto non frega nulla dell'immagine sottostante ad un filtro sharpen, una maschera di contrasto o un rilevatore di contorni.
In un TIFF lo spazio colore di riferimento non e' obbligatorio. Quando un'immagine e' priva di spazio colore gli si attribuisce uno spazio colore predefinito (che decidi tu, se hai informato il software su cosa fare quando non trova uno spazio colore, o che decide il software in base a quanto i suoi programmatori hanno deciso di fare.
I dati cosi', per conto loro, non sono nulla, non identificano alcun colore.
Se lo sviluppatore RAW riesce a produrre un'immagine a colori con i colori corretti e' perche' gli attribuisce uno spazio colore (che sia l'Adobe Matrix o un profilo ad hoc per quella fotocamera): attribuendolo quei punti acquistano una posizione nello spazio colore.
Io posso attribuire a quei dati tutti i profili che voglio, ottenendo rese tonali sempre diverse, pur partendo sempre dagli stessi dati senza apportare loro alcuna modifica: il numero "5" in se non identifica nulla, se pero' lo contestualizzo dicendo "distanza in metri dal muro" quel "5" assume un senso ben preciso, cosi' come se il contesto diventa "kg di carne che ho cotto", il numero non cambia il senso invece si (e' questo l'attribuire un profilo ai dati).
Io ho scritto, pero', che il TIFF dovrebbe essere corredato
delle sole coordinate XYZ (quindi su spazio colore CIE XYZ) del pixel piu' chiaro e piu' scuro dei canali R, G1, G2 e B. Il motivo e' semplice: lo spazio colore CIE XYZ e' lo spazio colore di scambio grazie al quale e' possibile - ad esempio - passare da sRGB ad AdobeRGB, si tratta di uno spazio colore ottenuto matematicamente e che e' un riferimento unico per avere l'uscita che desideriamo. Avere le coordinate XYZ non significa altro che avere un profilo colore predefinito, profilo che - come ho spiegato prima - posso tenere in considerazione oppure no attribuendone uno mio... e il tutto senza torcere un capello ai dati.
Il bilanciamento del bianco, anche lui come la demosaicizzazione, non e' altro che un banalissimo filtro, e' - di fatto - una regolazione dei livelli secondo una serie di coefficenti.
Tutte le immagini acquisite dal sensore hanno un loro WB dove viene assunto, di base, che la luce che ha colpito il sensore ha uguale intensita di rosso di blu e di verde (se vuoi vedere come sono le immagini secondo il WB del sensore cerca la mia discussione sull'UniWB). Cio' - nella vita reale - non avviene mai: o abbiamo luci con una forte componente blu o abbiamo luci con una forte componente rossa.
Questa dicrepanza fra realta' e quanto coglie il sensore ha un solo effetto: tutti i livelli colore raccolti dal sensore sono bassi, indicativamente se hai un campionamento a 14 bit finisci per usarne normalmente 11 o 12 al massimo. Cio' significa che - normalmente - hai la possibilita' di raddoppiare i valori senza clipparli (se usi 12 bit e raddoppi i valori, finisci per usarne 13 di bit).
E qui sta il gioco: potendo raddoppiare (in realta' piu' che raddoppiare... diciamo fino ad un limite di 2.7x) i valori del canale rosso o del canale blu (e piu' marginalmente, oscillando fra un 1.2x e un 0.8x, sul canale verde) riesco ad ottenere quella "magia" di poter regolare il WB. Di magico, capirai, non c'e' proprio una mazza: e' solo che ci sono dati a sufficenza da non riuscire a percepire la quantizzazione sul canale piu' amplificato... ed e' anche il motivo per cui sul JPEG (ma anche su un RAW che avesse solo 8 bit per pixel) la regolazione del WB risulta piu' limitata o e' il motivo per cui si limitano le possibilita' di regolazione del WB anche sui RAW quando si usa la tecnica dell'esposizione a destra.
Di fatto spostando pari pari i dati a 14 bit di un RAW in un TIFF16 conservo tutte le possibilita' di regolazione del WB che ho sul RAW (anzi, ho un contenitore piu' capiente e potrei anche azzardare operazioni ancora piu' estreme).
Se si tirano le somme si capisce che, qualsiasi WB applico, basta avere quel margine di manovra che ci consente di andare da un gruppo di coefficenti di partenza a quello del WB che ci interessa senza clippare: e' sufficente che i coefficenti del WB base siano noti, il resto e' matematica.
Discorso simile al profilo colore vale per curva di gamma: definire qual'e' la progressione dei valori rispetto ad un riferimento lineare non modifica i dati in se ma solo le assunzioni a monte che facciamo. Ho il mio numero "5", che in se non e' nulla, ma se dico che - per ottenere il valore corretto - lo devo mettere come esponente a 1.8 anziche' a 2.2 lo contesualizzo gli do una posizione su una retta orientata.
Insomma il discorso, come dicevo prima, e' che il RAW non ha proprieta' taumaturgiche proprie. Ci piace crederlo, magari perche' quelle tre lettere unite al fatto di non capirci una mazza di cosa veramente si tratta, lo rendono molto affascinante.
Di fatto il RAW non offre piu' di quello che offre un'immagine con molti bit per canale per tutto quel che riguarda le regolazioni. In piu' si porta appresso la necessita' di dover essere demosaicizzato.
Il mio ideale e' una fotocamera che sforna TIFF16 LZW composti di 4 layer monocromatici (R, G1, G2 e B) e avere - su GIMP o Photoshop che vi pare - due strumenti: "Demosaicizza", per ottenere l'immagine a colori, e "Filtro B/N" che fa una demosaicizzazione ad hoc per il B/N (il vantaggio e' che non riprocessi un'immagine a colori e usi solo le componenti che ti sono utili nella quantita' adeguata).
Penso e spero, a questo punto, di aver adeguatamente risposto.
Ciao
Jenner