Rimuovere l'effetto arcobaleno e del punto strisciato

1. Prefazione

Gli arcobaleni sono causati da imperfezioni nella separazione delle componenti luma e croma del segnale video composito. Questo effetto è chiamato color crosstalk, ed è un caso speciale di segnale aliasing. E' più evidente sulle immagini generate a computer come nei sottotitoli, e loghi statici. Ogni volta che hai un bordo (= alte frequenze) di luma, tu hai un arcobaleno, omogeneo. Ogni volta che hai una grande variazione di croma (tipicamente sui loghi), hai un punto strisciato. Dai uno sguardo al seguente figura:

Ci sono due generi di rumore croma nelle immagini. Il primo sono alcune colorazioni luminose intorno al testo di un libro e intorno al tempo (rumore nel croma intorno ai bordi). Questi sono tipici esempi di arcobaleno. Il secondo, è una brutta linea rossa/gialla orizzontale sul volto della ragazza. Benché questo è un problema di rumore croma (non ho idea su cosa l'ha causato), non è un effetto arcobaleno. Nella seguente sezione verrà spiegato cosa AviSynth offre per rimuovere questi esempi di rumore croma.

Questo è un tipico esempio di punto strisciato, es: dots/pixels che strisciano sopra l'immagine. Ma qui, c'è un moto dell'area del punto strisciato (di certo, puoi vederlo solo quando il clip è completo). Non c'è un filtro per rimuoverlo in questo caso. C'è in AviSynth un plugin chiamato GuavaComb che può farlo solo nelle scene statiche (usa solo l'informazione temporale).

Una spiegazione più tecnica (se non ti interessa, procedi con la prossima sezione):
Il sistema NTSC usa un formato YIQ (PAL: YUV), mentre "Y" è la componente luma (o luminosità) e "IQ"/"UV" la componente croma (o colore) (anche chiamata come "C"). Il piano IQ è solo una rotazione di quello UV. Se vuoi fare esperienza sull'effetto arcobaleno o sul punto strisciato dipende dal formato del segnale video che usi:

PAL e NTSC dovrebbero essere visti differentemente quando stai riducendo l'effetto arcobaleno, perché l'NTSC ha un periodo di 4 campi, e il PAL di 8 campi. Ma non capisco questo finora, così non posso darvi una spiegazione :(

Riferimenti:
TV Comb Filters: Per una presentazione generale del filtro comb.
Video Color Resolution: Spiegazione semitecnica di I e Q contro U e V.
Charles Poyton's ColorFAQ: ColorFAQ incluso le formule di conversione tra IQ e UV (pagina 17).
Bt868/Bt869 digital video encoders: Dai uno sguardo a pagina 17 del datasheet 100119a.pdf (che gestiste la separazione Y/C e il demodulazione del croma per le schede con il chip Bt868/9).
Composite, S-video and Component signals: Poche parole a proposito della differenza tra i formati dei segnali video.

2. Usando AviSynth v2.0x / AviSynth v2.5x / GordianKnot

Al momento della scrittura c'è solo un buon filtro che può eliminare gli effetti arcobaleno: GuavaComb. Ma la limitazione è, che lavora solo sulle scene statiche.

Lasciami dare uno sguardo di nuovo alla prima immagine. Il seguente script è usato:

LoadPlugin("c:\Program Files\AviSynth2_temp\plugins\guavacomb.dll")
Import("e:\Guides\AnalogCaptureGuide\Rainbow\mfRainbow.avs")

AviSource("e:\Guides\AnalogCaptureGuide\Rainbow\xvid.avi")
ConvertToYUY2(interlaced=true)
GuavaComb(Mode = "PAL", Recall = 83, MaxVariation = 25, Activation = 40)  # richiede il YUY2
ComplementParity()  # processo di deinterlacciamento
FieldDeinterlace(full=false, threshold=15, dthreshold=9, blend=false)  # processo di deinterlacciamento 
ConvertToYV12()
mfRainbow()  # richiede il YV12

Ecco il risultato

Le brutte spesse linee orizzontali rosso/giallo sono completamente sfumate usando il filtro mfRainbow. Questo filtro produce un risultato migliore degli altri plugins che sfumano il croma, come Cnr2 e SmoothUV. L'arcobaleno sul timer è stato rimosso usando GuavaComb (l'arcobaleno sul libro è ancora lì, come può essere checked subtracting il clip filtrato dal clip originale). Rimuovere gli arcobaleni e i punti strisciati dovrebbe essere fatto prima di ogni deinterlacciamento (perché i disegni interlacciati possono essere messi sottosopra).

Lasciami considerare un esempio diverso:

Il seguente è usato per ridurre l'effetto arcobaleno:

LoadPlugin("C:\Program Files\AviSynth2_temp\plugins\guavacomb.dll")
AviSource("e:\Guides\AnalogCaptureGuide\Rainbow\devils_advocate_pal_2.avi")
GuavaComb(Mode = "PAL", Recall = 75, MaxVariation = 25, Activation = 40)

Il risultato è il seguente (il valore Recall è leggermente abbassato, poiché questo decide giusto come di quanto indietro Guava guarderà, per confermare che c'è realmente uno scintillio).

In questo esempio l'arcobaleno parte per scomparire al 17esimo fotogramma (l'immagine sopra è il fotogramma 21).

Procedi con la guida al post processing con AviSynth.

Riferimenti:
mfRainbow script: su avisynth.org. Sono usati i plugins esterni: Deen, MaskTools e MSmooth.


RITORNA al postprocessing con VirtualDub: <BACK>

RITORNA a postprocessing con AviSynth : <BACK>

RITORNA all'Indice: <HOME>


Last edited on: 09/18/2003 | First release: n/a | Author: Wilbert | Content by doom9.org

Guida tradotta da *django* il 01/10/03