# DeFreq

## Přehled

autor: Fizick(Aleksandr Balachnin)
verze: 0.7
stáhnout: http://avisynth.org.ru/, http://www.avisynth.org/warpenterprises/
kategorie: Pluginy pro televizní pořady
požadavky: YV12 nebo YUY2 Barevné prostředí
licence: GPL

### Odstraňovač interference frekvencí

DeFreq je filtr, který může odstranit některé interferující frekvence z video snímků.

Může být použit pro odstranění pravidelných vertikálních, horizontálních nebo šikmých pruhů z některých analogových TV nahrávek bez jakéhokoli snížení kvality obrazu.

## Ukázka obrázku s prací filtru

Části obrázku od shora dolů:

1 - TV zdroj s interferencí (oříznuto);
2 - Defreq v.0.6 s režimy show a info (2 vyhledávací okna);
3 - očištěný výstup;
4 - Rozdíl vstupu-výstupu.

## Technické info

DeFreq používá rychlou metodu Fourierovy transformace (Fast Fourier Transform - FFT) pro výběr a odstraňování frekvence.

Je to prostorový (spatial) filtr, a pracuje následovně:

1. získá frekvenční spektrum dopřednou (forward) FFT transformací obrazu snímku;
2. hledá některým definovaným spektrálním oknem (okny) lokální špičky (maximum, extrém, nejintenzivnější frekvence);
3. odstraní ze spektra frekvenci na této ostré špičce a některé podobné podle amplitudy sousedů ve vyhledávacím okně;
4. volitelně zeslabí nejvyšší frekvence low pass Butterworth filtrem (pro rozmazání, vyhlazení);
5. získá výstupní snímek inverzní FFT transformací očištěného spektra.

## Parametry funkce

`Defreq`(clip, float "fx", float "fy", float "dx", float "dy", float "sharp", float "fx2", float "fy2", float "dx2", float "dy2", float "sharp2", float "fx3", float "fy3", float "dx3", float "dy3", float "sharp3", float "fx4", float "fy4", float "dx4", float "dy4", float "sharp4", float "cutx", float "cuty", int "plane", int "show", bool "info", bool "measure")

první parametr - vstupní klip
fx - x-komponenta centrální frekvence okna pro lokální vyhledávání špiček (desetinné procento od 0.0 do 100.0, výchozí= 10.0)
fy - y-komponenta centrální frekvence okna pro lokální vyhledávání špiček desetinné procento od -100.0 do 100.0, výchozí= -10.0)
dx - polovina šířky vyhledávacího okna, (desetinné procento, výchozí =1.5).
dy - polovina výšky vyhledávacího okna, (desetinné procento, výchozí =2.0).
sharp - prahová hodnota špičky ve vztahu k pozadí (ve vyhledávacím okně) pro očištění (desetinný, výchozí=50.0)
fx2 - x-komponenta centrální frekvence druhého okna pro lokální vyhledávání špiček (desetinné procento od 0.0 do 100.0, výchozí= 0 - vypnuto)
fy2 - y-komponenta centrální frekvence druhého okna pro lokální vyhledávání špiček desetinné procento od -100.0 do 100.0, výchozí=0 - vypnuto)
dx2 - polovina výšky druhého vyhledávacího okna, (desetinné procento, výchozí =1.5).
dy2 - polovina šířky druhého vyhledávacího okna, (desetinné procento, výchozí =2.0).
sharp2 - prahová hodnota špičky ve vztahu k pozadí (ve druhém vyhledávacím okně) pro očištění (desetinný, výchozí=50.0)
fx3 - x-komponenta centrální frekvence třetího okna pro lokální vyhledávání špiček (desetinné procento od 0.0 do 100.0, výchozí= 0 - vypnuto)
fy3 - y-komponenta centrální frekvence třetího okna pro lokální vyhledávání špiček desetinné procento od -100.0 do 100.0, výchozí=0 - vypnuto)
dx3 - polovina výšky třetího vyhledávacího okna, (desetinné procento, výchozí =1.5).
dy3 - polovina šířky třetího vyhledávacího okna, (desetinné procento, výchozí =2.0).
sharp3 - prahová hodnota špičky ve vztahu k pozadí (ve třetím vyhledávacím okně) pro očištění (desetinný, výchozí=50.0)
fx4 - x-komponenta centrální frekvence čtvrtého okna pro lokální vyhledávání špiček (desetinné procento od 0.0 do 100.0, výchozí= 0 - vypnuto)
fy4 - y-komponenta centrální frekvence čtvrtého okna pro lokální vyhledávání špiček desetinné procento od -100.0 do 100.0, výchozí=0 - vypnuto)
dx4 - polovina výšky čtvrtého vyhledávacího okna, (desetinné procento, výchozí =1.5).
dy4 - polovina šířky čtvrtého vyhledávacího okna, (desetinné procento, výchozí =2.0).
sharp4 - prahová hodnota špičky ve vztahu k pozadí (ve čtvrtém vyhledávacím okně) pro očištění (desetinný, výchozí=50.0)
cutx - x-komponenta mezní frekvence pro filtraci vysokých frekvencí (desetinné procento od 0.0 do 300.0, výchozí = 0, vypnuto)
cuty - y-komponenta mezní frekvence pro filtraci vysokých frekvencí (desetinné procento od 0.0 do 300.0, výchozí = 0, vypnuto)
plane - barevná plocha pro čištění, 0-Y, 1-U, 2-V (výchozí = 0)
show - zobrazí frekvenční spektrum a vyhledávacích oken (výchozí = 0)
0 - normální zpracování;
1 - zobrazí spektrum aktuálního snímku;
2 - zobrazí časový (temporal) průměr spektra;
info - ukazuje info o nalezených špičkách (výchozí = false)
measure - vybere nejrychlejší FFT metodu měřením rychlosti (delší inicializační čas) místo jednoduchého odhadu (výchozí=true)

## Zvláštnosti a omezení

1. Pracuje jen v YV12 nebo YUY2 barevných formátech.
2. Přímo pracuje s progresivními klipy. Pro prokládané zdroje, budete muset pravděpodobně použít SeparateFields atd.
3. Testováno s Avisynthem v2.5.5-2.5.6.
4. Defreq používá rychlou externí FFTW knihovnu verze 3 (http://www.fftw.org/), jako Windows binární DLL (kompilovanou gcc pod MinGW Alessiem Massarem), která podporuje více vláken a má AMD K7 (3dNow!) podporu navíc k SSE/SSE2.Můžete ji stáhnout z ftp://ftp.fftw.org/pub/fftw/fftw3win32mingw.zip. MUSÍTE vložit soubor FFTW3.DLL z tohoto balíku (ne fft3dfilter.dll) do nějaké složky v systémem prohlížené cestě (například, C:\WINNT\SYSTEM32). Defreq bez ní NEBUDE pracovat!
5. Není příliš rychlý, bez assembler optimalizací.
6. Od v.0.4, je horizontální frekvence relativní ke spektrální šířce obrazu (asi polovina šířky plochy), od 0 do 100 %, a vertikální frekvence je relativní k polovině výšky spektrálního obrazu (výška plochy), od -100 do 100%.
7. Od verze 0.4, jsou hodnoty frekvencí fx,fy, atd. nezávislé na oříznutí, ale musí být zvětšovány (zmenšovány) po resize!

## Jednoduchý příklad skriptu

    Avisource("input.avi")
    loadplugin("defreq.dll")
    DeFreq(fx=30,fy=-40)

Pozor! Je to jen příklad syntaxe výzvy. Narozdíl od většiny jiných filtrů, nejsou ŽÁDNÉ dobré hodnoty parametrů DeFreq pro obecné použití!
Nic nevyčistí (ale zpomalí zpracování), pokud jeho nastavení přesně neodpovídá vašemu obrazu.

## Jak ho použít

Musíte dočasně přidat parametry show a info , vizuálně analyzovat plochu frekvenčního spektra, a nastavit parametry fx,fy pro umístění obdélníčku vyhledávacího okna na lokální špičku spektra (jasný bod nebo kříž), která odpovídá interferenční frekvenci.

Nejdříve si prohlédněte generovaný vzorek frekvenčních pruhů v pravém horním rohu, a zkuste je vytvořit podobné vaší interferenční šabloně obrazu (pravá spodní oblast). Sklon vzorku pruhů závisí na poměru fy/fx a krok mezi pruhy závisí na absolutních hodnotách fx,fy (nápověda - můžete použít některý AviSynth skriptový parametr pro zachování poměru fy/fx).

Pak si prohlédněte plochu spektra, a jemně nalaďte pozici vyhledávacího okna.
Malé fxje blízko levému okraji spektrálního obrazu, a velké fx (až do 100) je blízko pravému okraji.
Od v0.6, jsou velké záporné hodnoty fy ve spodu spektrálního obrazu, velké kladné fy (až do 100) je navrchu spektrálního obrazu, malé fy je ve středu výšky.

Nastavte fx=0 pro přísně horizontální frekvenční interferenční pruhy, nebo nastavte fy=0 pro přísně vertikální pruhy.

Režim show=2 udělá špičky frekvenčního spektra viditelnější časovým zprůměrováním spektrální hustoty. Prostě přehrajte svůj video klip (přednostně dynamické scény), a vylaďte fx,fy.

Můžete vyladit jiné parametry pro nastavení ostrosti prahohé hodnoty, barevné plochy, přidejte další vyhledávací okna, přidejte low pass filtr.
Nápověda - slovo "sharp" se stává UPPERCASE (v info režimu), když je detekována špička s hodnotou vyšší než prahovou.

## Doplňkové info

Diskuse o filtru je nahttp://forum.doom9.org/showthread.php?s=&threadid=82978

Existují také podobné nové filtry FanFilter a FQuiver (by vcmohan).

## Licence

Tento program je svobodný software; můžete ho šířit a/nebo upravovat
za podmínek GNU General Public License version 2 jak je publikována od
Free Software Foundation.
Tento program je šířen v naději, že bude užitečný,
ale BEZ JAKÉKOLI ZÁRUKY; dokonce bez předpokládané záruky
OBCHODOVATELNOSTI nebo POUŽITÍ PRO KONKRÉTNÍ ÚČELY. Viz
GNU General Public License pro více podrobností.
Spolu s tímto programem by jste měli obdržet kopii GNU General
Public License; pokud ne, napište do Free Software Foundation.
Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Dokumentace je šířena pod CreativeCommons BY-SA 3.0 license.

Zvažte prosím malou dotaci.

## Změny verzí:

- Version 0.1, 22 September 2004 - not public alpha. Thanks to Mil_Alex for preliminary discussion.
- Version 0.2, 26 September 2004 - add second window, set other planes to 128 (first public beta).
- Version 0.3, 28 September 2004 - change cleaning method to adaptive in window, add third and fourth search windows, change default sharp=50.0 (was 100.0 really) (not public)
- Version 0.4, 30 September 2004 - change fx,fy,dx,dy,cutx,cuty parameters to (float) percent of FFT size
- Version 0.4.1, 01 October 2004 - fixed bug with init
- Version 0.5, 02 October 2004 - add show sample frequency stripes, add Measure mode, some bugs fixed (still beta). Thanks to Mug Funky and JuanC for bugs report and discussion
- Version 0.5.0.1, 06 October 2004 - add Russian doc
- Version 0.5.1, 07 October 2004 - more fast processing of frames which are not needed in cleaning, source released under GPL.
- Version 0.5.2, 7 November 2004 - fixed strange bug for separated fields. Thanks to johnmeyer for report.
- Version 0.5.3, 7 November 2004 - finally (?) fixed bug for separated fields. Thanks to johnmeyer for report.
- Version 0.5.4, 3 December 2004 - Fixed bug for second peak for YUY2. Thanks to oledoe for report. Manual corrected. Thanks to Palmnut for report.
- Version 0.6, August 2, 2005 - added temporal average mode show=2 (thanks to lumier for idea), changed show parameter to integer type; reorganized view of the spectrum window; cleaned a code.
- Version 0.7, April 28, 2006 - changed cleaning method: more frequencies are decreased near interference peak.
  Chanded static linking of FFTW3.DLL library to dynamic loading.

### Stáhnout DeFreq verze 0.7

`Český překlad:17.7.2009`