autor: Alexander G. Balachnin aka Fizick
verze: 2.1.1
stáhnout: http://avisynth.org.ru/,
http://avisynth.org/warpenterprises/
kategorie: Prostorově časové odšumovače
požadavky: YV12 nebo YUY2 Barevné prostředí
licence: GPL
FFT3DFilter používá rychlou metodu Fourierovy transformace (Fast Fourier Transform - FFT) pro zpracování obrazu ve frekvenční oblasti.
Je založen na některých pokročilých matematických algoritmech optimální filtrace.
Nepracuje lokálně, ale provádí určité delokalizované (blokové) zpracování.
V 3D režimu, to vede k efektu podobnému částečné kompenzaci pohybu.
Tento filtr může snížit šum bez viditelné ztráty kvality a bez artefaktů,
i dokonce při dost silných nastaveních.
Může velmi zlepšit kompresi a snížit velikost enkódovaného souboru.
Také má možnost omezeného zostření (limited sharpening) jak bez zesilování šumu, tak i přeostření (haloing).
Fikce? Zkuste ho sami! :)
Překryté bloky a vážená okna jsou použita pro odvrácení kostkatění (a zvonění hran).
Bloky jsou překryté o nějakou hodnotu v jejich vertikální i
horizontální velikosti.
Čím menší překrytí, tím rychlejší zpracování, ale s viditelnějšími mřížkovými artefakty.
Princip překrývání je zobrazen na obrázku.
Jsou využita některá vážená okna analýzy a syntézy pro obdržení efektivního koeficientu signálu gain=1 po sumarizaci bloků.
Od v1.5 je možné získat strukturu šumu (model) spektrální analýzou některých prázdných bloků (bez jakýchkoli objektů), a pak redukovat šum stejnou strukturou v celém snímku a v celém klipu. To může být užitečné pro odstranění zrnění filmu (obzvláště amatérského 8 mm) a interference analogových TV nahrávek.
Při zostřování (po odšumění) plugin zesiluje frekvence vysokého spektra (prostorové, 2D).
Je zde také jen zostřovací režim, bez odšumění (bt=-1).
Od verze 1.1, jsou použity některé speciální metody omezeného zostřování (limited sharpening) :
Zostřovací síla je maximální pro frekvence s amplitudami ve středním rozsahu. Samozřejmě můžete ovládat obě tyto meze i obecnou zostřovací sílu.
Od v.1.7, je pro zostření použit Gaussův filtr vysokých frekvencí s proměnnou frekvencí střihu.
Od v.1.9, má plugin speciální možnost dehalo pro snížení silných frekvencí, měl by být použit pro prostorové adaptivní změkčení přeostřených obrazů (odstranění halo). Tento režim může být kombinován s odšuměním a zostřením.
FFT3DFilter
(clip,
float "sigma", float "beta", int "plane", int "bw", int "bh", int "bt", int "ow", int "oh",
float "kratio", float "sharpen", float "scutoff", float "svr", float "smin", float "smax",
bool "measure", bool "interlaced", int "wintype",
int "pframe", int "px", int "py", bool "pshow", float "pcutoff", float "pfactor",
float "sigma2", float "sigma3", float "sigma4", float "degrid",
float "dehalo", float "hr", float "ht", int "ncpu")
Všechny parametry jsou jmenné.
první parametr - vstupní klip
sigma
- zadaná hodnota šumu pro všechny (nebo nejvyšší) frekvence (desetinná>0, výchozí=2.0)
beta
- hranice šumu (desetinná>=1.0, výchozí=1.0 pro žádný zbytek šumu):
ovládá množství šumu zbývajícího po použití Wiener
filtru, takže maximální potlačení šumu filtrem =
(beta-1)/beta.
plane - zpracovávaná barevná plocha: 0 - jas(Y), 1 - barevnost U, 2 - barevnost V,
3 - plochy barevnosti U a V, 4 - jak jas tak barevnost (výchozí = 0)
bw
- šířka bloku (celočíselná, výchozí = 48 od v.1.2)
bh
- výška bloku (celočíselná, výchozí = 48 od v.1.2)
bt
- časový rozměr bloku, počet snímků (-1, 0, 1, 2 nebo
3, výchozí = 3):
0 - všechny předchozí snímky (zapíná režim Kalman filtru);
1 - jen aktuální snímek (prostorový 2D Wiener filtr);
2 - předchozí a aktuální snímek (3D Wiener filtr);
3 - předchozí, aktuální a následující snímek (3D Wiener filtr)
4 - dva předchozí, aktuální a následující snímek (3D Wiener filtr)
5 - dva předchozí, aktuální a dva následující snímky (3D Wiener filtr)
-1 - jen zostření (2D);
ow - šířka překrytí (výchozí=bw/3 od v.1.2)
oh - výška překrytí (výchozí=bh/3 od v.1.2)
kratio
- poměr prahové hodnoty ku sigma pro resetování Kalman filtru (default = 2.0):
prahová hodnota variace = sigma*kratio,
dobré hodnoty jsou od 1.5 do 3.0;
sharpen
- síla zostřaní (výchozí=0 - nezostřovat)
dobré hodnoty 0.3 až 1.0 (záporné hodnoty vedou k
obrácenému efektu)
scutoff
- frekvence střihu zostřování, relativní k maximální (výchozí=0.3)
svr
- poměr vertikálního zostřování (a dehalo) k horizontálnímu (výchozí=1.0 - stejně jako horizontální, 0 - bez vertikálního zostřování)
smin
- spodní hranice (přibližná hranice šumu) pro stádium zostřování (výchozí=4.0)
smax
- horní hranice (přibližná hranice přeostření) pro stádium zostřování (výchozí=20.0)
measure
- vybírá optimální (nejrychlejší) FFT metodu měřením rychlosti (s delším inicializačním
časem)
místo jednoduchého odhadu (výchozí=true od v.0.9.2)
interlaced
- rozděluje zpracování polí (výchozí=false)
wintype
- typ vážících oken (výchozí=0):
0 - stejná okna analýzy a synteze polo-kosina, používali se ve všech verzích před 1.4;
1 - střed mezi 0 a 2;
2 - rovinné okno analýzy, okno syntézy zvýšeného kosina (Hanning).
pframe
- číslo snímku s modelem šumu (výchozí=false)
px
- horizontální X pozice bloku modelu šumu (výchozí=0)
py
- vertikální Y pozice bloku modelu šumu (výchozí=0)
pokud px=py=0, pak je modelový blok definován automaticky s minimální sílou spektra.
pshow
- zobrazí modelový blok šumu a jeho vlastnosti (výchozí=false)
pcutoff
- frekvence střihu modelu šumu (relativní k maximální) (výchozí=0.1)
pfactor
- síla odšumění modelu šumu (0 až 1.0, výchozí=0, tato metoda vypnuta)
sigma2
- zadaná hodnota šumu ve druhé úrovni měřítka frekvencí (desetinná>0, výchozí=sigma)
sigma3
- zadaná hodnota šumu ve třetí úrovni měřítka frekvencí (desetinná>0, výchozí=sigma)
sigma4
- zadaná hodnota šumu na nejnižších frekvencích (desetinná>0, výchozí=sigma)
degrid
- stupeň kompenzace vážícího okna pro snížení mřížky (desetinná>0, výchozí=1.0)
dehalo
- síla odstranění halo (desetinná>0, výchozí=0.0)
hr
- přibližný radius halo (desetinná>0, výchozí=2.0)
ht
- přibližná prahová hodnota halo (desetinná>0, výchozí=50.0)
ncpu
- maximální počet vláken CPU použitých pro výpočet FFT (celočíselný>0, výchozí=1)
Nejdůležitějším parametrem je zadaná hodnota šumu sigma.
Musíte použít rozumnou hodnotu založenou na dřívější informaci o aktuálním klipu.
Typická hodnota pro digitální zdroje je asi 1.5 až 2.5, a asi 3 a výše pro analogové videonahrávky.
Dobrá hodnota velikosti překrytí je asi čtvrt až půl velikosti bloku.
Polovina (ow=bw/2, oh=bh/2) je nejlepší, ale pomalejší.
Dobré hodnoty velikosti bloku jsou asi 32 až 64.
Filtr může vytvářet nějaké mřížkové artefakty u velkých sigma
a malých bw, bh, ow, oh nebo malých relativních rozměrech překrytí, obzvláště se zapnutým zostřováním.
Filtr může vytvářet duchy u velkých sigma (a kratio) pro 3D režimy.
Vážící okna wintype=0 může vytvářet horší mřížkové artefakty, okna typu wintype=2 nevytváří mřížkové artefakty, ale mohou vytvářet nějaké zvonění, wintype=1 je prostřední případ.
Doporučuji používat kompenzaci okenního vážení s degrid=1 (od verze 1.8), to zlepšuje kvalitu odšumění a snižuje mřížkové artefakty, obzvláště pro 2D.
Zostření povede k horší kompresi klipu.
Pro použití metody modelu šumu namísto obyčejné (slepé) metody musíte:
Nejdříve zapnout zobrazovací režim pshow=true, a nastavit nějakou nenulovou hodnotu pfactor=1.0.
Pak zvolte číslo snímku a nějakou pozici bloku,
aby zobrazovaný blok neobsahoval žádné objekty kromě modelu typického šumu.
Vypněte zobrazovací režim pshow=false,
a nastavte sílu redukce šumu, doporučená hodnota pfactor= 0.5 až 1.0.
Nejlepší okenní typ pro tento případ je wintype=2.
Parametry sigma a beta nejsou v této metodě odšumění použity,
ale můžete použít tuto metodu v zobrazovacím režimu pshow=true
pro odhadnutí hodnoty sigma pro obyčejnou metodu odšumění
(není to přísně ta samá, ale podobná hodnota).
Je zde také kombinovaná metoda, kdy můžete přímo nastavit různé hodnoty šumu sigma pro nejvyšší a sigma2, sigma3, sigma4 pro nižší frekvence. Koeficienty modelu budou vnitřně vytvořeny z těchto hodnot sigma interpolací. Pro tuto metodu nastavte pfactor=0 (vnitřně to bude =1).
Avisource("vstup.avi") loadplugin("c:\plugins\fft3dfilter.dll") FFT3DFilter(sigma=3)
Samozřejmě musíte nahradit "c:\plugins" vaší cestou ke složce s pluginy (a také nastavit cestu k vašemu videu :). Můžete přeskočit příkaz LoadPlugin pokud vložíte soubor fft3dfilter.dll do autonačítací složky pluginů (C:\Program Files\Avisynth 2.5\plugins).
Avisource("vstup.avi") loadplugin("fft3dfilter.dll") FFT3DFilter(bt=-1, sharpen=0.7)
Avisource("vstup.avi") loadplugin("fft3dfilter.dll") FFT3DFilter(sigma=2, sharpen=0.3, interlaced=true)
Avisource("vstup.avi") loadplugin("fft3dfilter.dll") fft3dfilter(sigma=1.5, bt=5, bw=32, bh=32, ow=16, oh=16, sharpen=0.4)
Poznámka: Rychlost zpracování se hodně sníží,
takže můžete zvážit jiné (podobné a rychlejší) filtry používající odšumění barevnosti
(CNR2
, DeGrainMedian
, atd).
Avisource("vstup.avi") loadplugin("fft3dfilter.dll") fft3dfilter(sigma=2, plane=4)
Avisource("vstup.avi") loadplugin("fft3dfilter.dll") fft3dfilter(sigma=1.5, plane=0) fft3dfilter(sigma=3, plane=3)
Ve starých verzích bylo důležité jestli jste používali kompenzaci pohybu
Avisource("vstup.avi") loadplugin("fft3dfilter.dll") YToUV(fft3dfilter(sigma=3, plane=1).UToY,\ fft3dfilter(sigma=3, plane=2).VToY,\ fft3dfilter(sigma=2, plane=0))
Avisource("vstup.avi") loadplugin("fft3dfilter.dll") fft3dfilter(bt=-1, plane=0, dehalo=1.0, hr=2.0, ht=50, svr=0)
Algoritmus Wiener filtru je zložen na 3D IIR/3D Frequency Domain Filter z:
MOTION PICTURE RESTORATION. by Anil Christopher Kokaram. Ph.D. Thesis. May 1993.
http://www.mee.tcd.ie/~ack/papers/a4ackphd.ps.gz
v postscript formátu (použijte GSview s Ghostscript pro přečtení).
O Wiener a Kalman filtrech hledejte více informací ve speciální literatuře
nebo na Googlu.
Diskuze k filtru je na DOOM9 Avisynth fóru, ve vlákně
"New very slow FFT denoiser:"
http://forum.doom9.org/showthread.php?t=85790
Existuje také plugin FFT3DGPU
(od tsp) s podobným
algoritmem, ale využívající procesory moderních grafických karet pro výpočet FFT.
Tsp portoval mnoho funkcí z fft3dfilter.
Viz http://forum.doom9.org/showthread.php?t=89941.
Tento program je svobodný software; můžete ho dále rozšiřovat a/nebo upravovat
ho za podmínek GNU General Public License version 2 publikované
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.
Zvažte prosím malou dotaci.
$English Date: 2007/02/20 $
Český překlad:18.4.2009