# DctFilter

## Sommario

author: Tom Barry
version: 0.0.1.4
download: http://mywebpages.comcast.net/trbarry/downloads.htm
category: Misc Plugins
requirements:

- YV12 & YUY2 Colorspace ed immagine multipla di 16x16
- SSEMMX support

## Descrizione

DctFilter è un filtro sperimentale che per ogni blocco 8x8 , attua una Discrete Cosine Transform (DCT), riduce i valori della frequenza selezionata, di seguito rovescia il procedimento con una Inverse Discrete Cosine Transform (IDCT).

### Uso

In Avisynth

    Avisource("D:\wherever\myfile.avi")
    DctFilter(1,1,1,1,1,1,.5,0)

### Parametri

Ci sono 8 parametri floating point positionali, che devono tutti essere compresi nel range (0.0 <= x <= 1.0). Questi corrispondono ai fattori di scala per le 8 righe e colonne dei blocchi 8x8 DCT . Il parametro più a sinistra corresponde alla riga superiore, colonna di sinistra. Questo sarebbe il componente DC della trasformazione e dovrebbe sempre essere lasciato = 1.0.

Nell'esempio precedente i componenti ad alta frequenza di ogni riga e colonna saranno azzerati mentre i secondi in ordine di altezza saranno dimezzati.

I parameri di riga e colonna sono moltiplicati fra loro per ottenerelo scale factor per ognuno dei 64 valori presenti nel blocco. In questo modo se il valore in alto a sinistra fosse stato V[0,0], nell'esempio precedente avremmo scalato la riga 6, colonna 6 (V[6,6]) di .5*.5 = .25.

Notre che sebbene i parametri sembrino floating point parms , in realtà finora hanno una precisione di solo 3 bit sicchè i valori attuali usati sono solo 0, 1/8, 1/4, 3/8 ... 1.0. Potete specificare qualunque valore, ma questo sarà arrotondato al valore più vicino.

### DctFilterD - Nuovo con v 0.0.1.4

Al suo posto si può usare DctFilterD(DiagCt). Questo funziona in modo simile al precedente, ma azzera il numero DiagCt della diagonale destra più bassa della DCT, lasciando inalterati gli altri valori . In una matrice 8x8 DCT ci son 15 possibile diagonali. (immaginatevi una scacchiera). Il parametro DiagCt deve essere un intero compreso tra 1 e 14 ad indicare quante di queste diagonali devono essere azzerate partendo partendo dall'angolo più basso a destra.

### Commenti

Questa nuova funzione DctFilterD(DiagCt) lavora sulle diagonali. E' più semplice e può sia azzerare che lasciare intatte le diagonali.

In una matrice 8x8 DCT ci son 15 possibile diagonali. (immaginatevi una scacchiera). Sicchè se si specifica:

    DctFilterD(4)

le 4 diagonali nell'angolo destro in basso della DCT saranno impostati a 0. Il parametro DiagCt può essere qualunque intero da 1 a 14.

Non l'ho testato molto, ma , analogamente a quanto rilevato in tests sulle matrici di quantizzazione, sembra che se si imposta DiagCt a valori molto alti si cominciano ad avere rumore nei contorni simile al ringing.

`$Date: 2004/10/19 21:09:51 $`