Moirè e Aliasing demystified

Stimolato dalla domanda su come funziona il line skipping, mi sono riesumato alcune immagini che avevo preparato tempo fa per capire cosa succedeva nella mia 550 e ho pensato di condividerle con tutti. E’ molto interessante e istruttivo per mettere i piedi per terra e conoscere i limiti di queste macchine.
L’unico accorgimento importante: le immagini che pubblicherò devono assolutamente essere guardate alla loro vera risoluzione. Rimpicciolite o ingrandite potrebbero falsare il risultato.
Partiamo da come funziona il sensore CMOS e da come percepisce i colori, perchè tutto parte da lì.
Come sappiamo, la risoluzione del sensore di una 550D o di una 7D, che prendiamo come esempio, è di 5184 X 2916 – La risoluzione verticale in realtà è maggiore grazie al rapporto 3:2, ma a noi interessa la parte sfruttata per il video.
Questi pixel sono disposti in righe e colonne come su una matrice, ma non sono tutti uguali, infatti davanti al sensore è posto un filtro detto filtro di bayer che serve per potere distinguere i colori.
Lo schema del filtro di bayer è il seguente:

bayerfilterIl numero dei pixel del verde è il doppio rispetto agli altri per il fatto che l’occhio è più sensibile a quel colore, e quindi si guadagna un po’ di risoluzione.
E’ evidente che per avere tutte le informazioni di una certa zona di una immagine, sarebbe necessario prendere una matrice di 2X2 pixel, in modo da avere il contenuto cromatico di tutti i colori. Questo non è completamente vero perchè i pixel del verde in una matrice 2X2 sono 2, e quindi la risoluzione del verde è maggiore, ma non di molto.
Una macchina come la RED che ha un sensore da 4K infatti in realtà ha una risoluzione “vera” di 2K. I 4K sono ottenuti con un processo molto simile a quallo del pixel shifting sulle macchine a 3 CCD o 3 CMOS.

Tornando a noi, cosa succede quando un punto molto piccolo viene messo a fuoco (ottica permettendo) sul nostro sensore?

bayerfilternoantialias

Come si vede dall’immagine, il punto che è bianco potrebbe cadere solo su un pixel verde, e apparirebbe come verde.
Non è l’unico problema: in tutti i sistemi a campionamento digitale (ma anche no) i dettagli più piccoli del più piccolo pixel creano una falsa immagine detta “alias”. Ad esempio, supponendo di avere una matrice di 1000 punti, un reticolo di 1100 righe (1 bianca e una nera quindi forse sarebbe meglio dire 550 righe) creerebbe una immagine con 100 righe (1100 – 1000), che non esiste nella realtà. Questo problema per capirci esiste anche nell’audio digitale. Con un campionamento di 48000 Hz la massima frequenza “campionabile” teorica è di 24.000 Hz, e quindi prima della digitalizzazione si mette un filtro detto filtro antialias che elimina tutte le frequenze sopra a 24.000 per evitare di avere alias. Dato che nessun filtro è perfetto, il filtro inizierà a tagliare un po’ prima, diciamo a 21-22.000 Hz.
Anche nelle immagini esiste lo stesso problema e infatti davanti al sensore viene posto un filtro antialias che sfoca leggermente l’immagine:

bayerfilterantialias

Il punto così sfocato non solo copre alcuni pixel adiacenti anche del rosso e del blu, ma evita anche l’effetto “Alias” che noi chiamiamo sempre, moirè.
Apro una parentesi: esiste un altro tipo di “alias” che è la scalettatura sulle righe diagonali, ma è più o meno provocato dallo stesso fenomeno ma si manifesta diversamente. Teniamo buone allora le definizioni di “alias” per le scalette, e di “moirè” per l’effetto descritto sopra.
Poi su questo problema ci torniamo.
Ora, parliamo del line skipping.
Se guardiamo la prima immagine, si capisce perchè il line skipping deve essere di 2 righe, non può essere di 1 o di 3.
Infatti, lo schema del filtro di bayer, sulla riga ad esempio dove c’è VBVBVBVBVB (V=verde – B=blu), se facessimo uno skipping di una riga avremmo o VVVVV… o BBBBB.. a seconda di dove partiamo. Questo vale in verticale e in orizzontale

Saltando due righe, l’effetto è il seguente:

bayerfilterlineskipping

Praticamente, abiamo conservato lo schema del filtro di bayer ma naturalmente abbiamo meno risoluzione. Per la precisione, avremo a disposizione, sulla 550D 1728 X 972 pixel IN TUTTO, ma alcuni sono verdi, alcuni blu e alcuni rossi. Teoricamente, se prendiamo per buono che ci vuole una matrice di 2X2 bayer pixel per avere un pixel interamente descritto, la risoluzione disponibile è di 864 X 486. In realtà la risoluzione viene artificialmente aumentata sfruttando la doppia presenza dei pixel verdi. Dal punto di vista matematico, la risoluzione arriva a (864 X radice di 2) X (486 X radice di 2), ovvero 1222 X 687. Questo però non è privo di effetti collaterali che è complicato approfondire ora.
Importante invece, importantissimo perchè è la chiave di volta dei nostri problemi, è capire cosa succede al filtro antialias.
Prendiamo il punto di prima, sfocato dal filtro antialias presente davanti al nostro sensore:

bayerfilterlineskipping (1)

Dato che i pixel considerati sono diventati più “radi”, il punto che prima copriva sufficienti pixel ora non li copre più!!!
In pratica, ci vorrebbe n filtro che quando si lavora in video, cambia la frequenza di taglio, ma questo otticamente non è possibile farlo. E allora, cosa succede? Quello che si è detto prima: si formano immagini “alias” che non esistono, il tutto aggravato dalla disposizione dei pixel “colorata”.

Per capire l’effetto, ho preparato delle immagini in cui il nostro pixel vale 2X2 pixel. Queste immagini vanno guardate assolutamente a risoluzione piena e se possibile da una certa distanza dal monitor per permettere all’occhio di integrare.
La prima immagine è un filtro di bayer “pulito”, come se stessimo riprendendo una superficie grigia uniforme:

bayerfilterpattern2pixe

Con l’immagine sul monitor, allontaniamoci fino a che non percepiamo un grigio uniforme – sarà un po’ verde per via della presenza di pixel verdi in numero doppio, ma il discorso funziona ugualmente.
Fatto?

Ok, ora carichiamo questa immagine:

bayerfilterpattern2pixe (1)

Questo è un cartello di prova come verrebbe percepito dal nostro cmos, se il filtro antialias funziona correttamente.
Guardiamolo dalla stessa distanza del primo e vedremo le linee sempre più sottili fino a scomparire in modo abbastanza naturale.
Bene.
Ora apriamo questa:

bayerfilterpattern2pixe (2)

Quelle bande colorate vi ricordano qualcosa?
Questo è l’effetto di una immagine con più dettaglio di quanto il sensore possa reggere senza filtro antialias – la situazione esatta che abbiamo sulle nostre Canon in modalità video.

Ho messo anche altri due esempi, il primo corretto e il secondo senza filtro antialias:

bayerfilterpattern2pixe (3)

bayerfilterpattern2pixe (4)
Le bande colorate le conosciamo tutti, o mi sbaglio? (Una curiosità, se salvate queste immagini e le ingrandite, vedrete che le bande non sembra che esistano in realtà, sono uno schema creato dall’occhio e dalla disposizione regolare dei pixel)

Per concludere:
Fino a che la tecnologia usata sarà questa, l’unica soluzione è mettere davanti alla lente un filtro antialias sufficientemente potente da riportarci nella condizione corretta, ma naturalmente, dato che i filtri non sono perfetti, la definizione, già scarsa, ne risentirà ulteriormente.
Contiamo invece che in futuro la Canon possa migliorare la sua tecnologia, ad esempio passando dal “line skipping” al “pixel binning” che viene già utilizzato per la parte fotografica (infatti, una foto presa anche a risoluzioni inferiori alla massima non è così sfocata come la ripresa video). Ne avrebbe anche un grande beneficio il rumore ad alti ISO.

3 Commenti
  1. dici cose inesatte e sei di parte,inoltre sei anche un anticanon sfrenato.

    • william_fanelli

      Sono antiCanon solo per il fatto che sono macchine sopravvalutate da molti, che purtroppo sono ciechi e non sanno come deve funzionare una macchina seria in video. Peraltro Canon fa ottime macchine per il video, ma non sono le macchine fotografiche.
      Sul fatto che dico cose inesatte, provalo. Non basta venire qui a dire “sbagli”, io ho spiegato e fatto esempi. Se dico cose inesatte (e per inesatte non intendo le approssimazioni per semplificare una spiegazione, sempre dichiarate) spiega pubblicamente e argomenta quali sono.

Lascia un commento

Questo sito utilizza cookie tecnici e di terze parti. Continuando la navigazione ne consentirai l'utilizzo. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi