# FrameDiff

## Přehled

autor: tritical
verze: 1.6
stáhnout: http://bengal.missouri.edu/~kes25c/, http://avisynth.org/warpenterprises/
kategorie: Odstraňování prokládání & pulldown
požadavky:

- YV12 & YUY2 Barevné prostředí

licence: GPL

## Popis

FrameDiff vystavuje metriky výpočtových rutin tdecimate pro umožnění některých zajímavých operací a vizualizací. Je zde také verze FrameDiff která může být použita v podmíněném filtrování zvaná "CFrameDiff" , která umožňuje použít metriky výpočtových schopností tdecimate v podmínkovém prostředí Avisynthu. CFrameDiff vrací buď vypočtené metriky nebo pozici bloku do skriptu.

### Syntaxe

`FrameDiff` (int "mode", bool "prevf", int "nt", int "blockx", int "blocky", "bool chroma", float "thresh", int "display", bool "debug", bool "norm", bool "denoise",bool "ssd", int "opt")
`CFieldDiff` (int "mode", bool "prevf", int "nt", int "blockx", int "blocky", "bool chroma", bool "debug", bool "norm", bool "denoise", bool "ssd", bool "rpos", int "opt")

### Příklad

    conditionalfilter(last,source1,source2,"CFrameDiff",">","2.0")

## Parametry

mode -

Nastavuje zda se vrátí nejvyšší nebo nejnižší hodnota metriky snímku.

0 - nejnižší
1 - nejvyšší

Výchozí: 1 (int)

prevf -

Nastavuje zda je počítán rozdíl od předchozího snímku nebo rozdíl od následujícího snímku.

true - předchozí
false - následující

Výchozí: true (bool)

nt -

Prahová hodnota šumu použitá při výpočtu metrik. Je to stejné jako parametr nt v TDecimate.

výchozí: 0 (int)

blockx/blocky -

Definuje velikost bloků použitých při výpočtech metrik. blockx = velikost v ose x, blocky = velikost v ose y. Musí být mocninami čísla 2, které jsou větší nebo rovny 4 a menší nebo rovny 2048. Jsou stejné jako nastavení blockx/blocky v TDecimate.

Výchozí:
blockx = 32 (int)
blocky = 32 (int)

chroma -

Nastavuje zda barevnost je a nebo není uvažována při výpočtech metrik.

Výchozí: false (bool)

display -

Ovládá co, pokud vůbec něco, bude vykresleno do snímků. Možná nastavení:

0 - nic
1 - ladící (debug) info + čtvereček je vykreslen kolem bloku, ze kterého pochází metrika (nejnižší blok metriky pro mode = 0 a nejvyšší blok metriky pro mode = 1)
2 - ladící (debug) info + pokud mode = 0 tak všechny bloky s metrikou, která je <= parametru "thresh" budou vybarveny bíle, jinak pokud mode = 1 , tak všechny bloky s metrikou, která je >= "thresh" budou vybarveny bíle. (Značka černého jednotlivého pixelu je přidána do středu každého vybarveného bloku)
3 - snímek je nastaven na 0 kromě bloku, z něhož metrika pochází (nejnižší blok metriky pro mode = 0 a nejvyšší blok metriky pro mode = 1), a který je nastaven na 255
4 - stejné jako 2, kromě toho, že se nezapisuje žádná ladící informace, nepřidává se žádná značka jednotlivého pixelu a zbytek snímku (neoznačené bloky) je nastaven na 0.

Výchozí: 0 (int)

thresh -

Použito v display=2 pro určení, které bloky vybarvit. Je založen na normalizovaném rozsahu (0.0 až 100.0) použitém v tdecimate.

Výchozí: 2.0 (float)

debug -

Výstup informace metriky přes OutputDebugString()

Výchozí: false (bool)

norm -

Nastavuje zda vrátit normalizované metriky (0.0 až 100.0) nebo nenormalizované metriky při použití CFrameDiff v podmíněném filtrování. Také efekty, jejichž metriky jsou zobrazeny možností "display" pro FrameDiff.

true - vrátí normalizované metriky
false - vrátí nenormalizované metriky

Výchozí: true (bool)

denoise -

Nastavuje zda před provedením výpočtů rozdílů provést odšumění nebo ne. To může významně zlepšit metriky pro zašumělé zdroje (t.j. stabilizuje metriky duplikovaných snímků a usnadňuje říci rozdíl mezi duplikáty a neduplikáty). Pracuje také velmi dobře se zdroji s hodně lezoucími body (dotcrawl) protože odšumění efektivně ruší všechny lezoucí body. Použití odšumění práci trochu zpomalí, ale má MMX optimalizaci a pěknou rychlost.

true - použít odšumění
false - nepoužít

Výchozí: false (bool)

ssd -

Ovládá zda jsou metriky vypočteny jako SAD (součet absolutních rozdílů) nebo SSD (součet kvadrátů rozdílů).

true - použít ssd
false - použít sad

Výchozí: false (bool)

rpos -

Ovládá zda CFrameDiff vrátí metriku nebo pozici bloku. Pozice je vrácena jako jedno celé číslo dané vztahem:

vrácená hodnota = y*šířka+x

kde x a y jsou souřadnice levého horního pixelu bloku. Když je nastaven na true, tak je vrácena pozice. Jinak je vrácena metrika.

Výchozí: false (bool)

opt -

Ovládá, které optimalizace budou použity. Možná nastavení:

0 - použije c rutiny
1 - použije mmx rutiny
2 - použije isse rutiny
3 - použije sse2 rutiny
4 - auto detekce

Výchozí: 4 (int)

## Seznam změn:

v1.6 - (11/21/2007)

- - Opraveno vracení neplatných pozic v CFrameDiff při rpos=true a při žádném pohybu

v1.5 - (09/28/2007)

- + přidány zobrazovací režimy 3/4 do framediff
- + do cframediff přidána schopnost vrátit pozici bloku
- - opravena chyba v cframediff, která způsobovala, že mode=0 vracel nejvyšší hodnotu místo nejnižší, když norm byl nastaven na true

v1.4 - (03/23/2006)

- - nahrazeno kopírování snímku možností zápisu

v1.3 - (01/24/2006)

- + portované nové mmx/isse/sse2 optimalizace z TDecimate
- + přidán parametr opt
- - opraven chybějící parametr ssd v řetězci CFrameDiff

v1.2 - (11/01/2005)

- + přidán parametr ssd

v1.1 - (9/28/2005)

- + přidán parametr denoise

## Na dopracování:

- nic

Kontakt: forum.doom9.org nick = tritical nebo email: kes25c@mizzou.edu

`$English Date: 2006/03/23 16:11:01 $`

`Český překlad:1.4.2009`