# DeSpot

## Přehled

autor: Alexander G. Balachnin aka Fizick
verze: 3.6.0 (založeno na Conditional Temporal Median Filter)
stáhnout: http://avisynth.org.ru/, http://avisynth.org/warpenterprises/
kategorie: Pluginy pro vysílané video
požadavky:

- YV12 Barevné prostředí
- ISSE podpora

#### DeSpot - Podmíněný časový filtr pro odstraňování skvrn (teček)

Tento filtr je navržen pro odstraňování časového šumu ve formě bodů (skvrn) a proužků nacházejících se v některých videích. Filtr je také užitečný pro restauraci (vyčištění) starých 8mm (a jiných) pomocí telecine převedených filmů od skvrn (pocházejících od působení prachu na filmovém pásu) a některých pruhů (škrábanců).

Plugin je založen na Conditional Temporal Median Filter v.0.93 (C-plugin pro Avisynth 2.5)
od Kevina Atkinsona http://kevin.atkinson.dhs.org/temporal_median/
(Tento dokument je také založen na jeho dokumentaci.)

### Obrázky příkladů

Polovina snímku z mého starého 8mm filmu (nahoře - před, dole - po filtraci):

Avisynth skript pro tento příklad, který ukazuje práci staré verze filtru 0.93, ale adaptovaný do nové verze 3.2.

    AviSource("film8mm.avi")
    LoadPlugin("despot.dll")
    ConvertToYV12()
    Crop(0,0,720,288) #pro zobrazení testu
    i = last
    # Porovnáme poloviny snímků s a bez redukce šumu
    DeSpot(p1=35, p2=14, pwidth=70, pheight=70, mthres=25, mwidth=20, mheight=15, interlaced=false,
      \  merode=33, ranked=false, p1percent=0, dilate=0, fitluma=false, blur=0, motpn=false, seg=0)
    StackVertical(i, last)

Stejný snímek po použití některých parametrů z novější verze filtru 1.0 (horní polovina - s rozmazáním okrajů skvrn, spodní polovina - s časovým vyhlazením ve statických oblastech):

Avisynth skript pro tento příklad :

    AviSource("film8mm.avi")
    LoadPlugin("despot.dll")
    ConvertToYV12()
    Crop(0,0,720,288)
    # Porovnáme snímky s rozmazáním, a s a bez časové redukce šumu
    i = last
    # Porovnáme poloviny snímků s a bez redukce šumu
    b = DeSpot(i, p1=35, p2=14, pwidth=70, pheight=70, mthres=25, mwidth=20, mheight=15, interlaced=false,
      \  merode=33, ranked=false, p1percent=0, dilate=0, fitluma=false, blur=4, motpn=false, seg=0)
    t = DeSpot(i, p1=35, p2=14, pwidth=70, pheight=70, mthres=25, mwidth=20, mheight=15, interlaced=false,
      \  merode=33, ranked=false, p1percent=0, dilate=0, fitluma=false, blur=4, motpn=false, seg=0, tsmooth=3)
    StackVertical(b, t)

V nových verzích filtru jsou uvedeny některé doplňkové parametry, pro správnější detekci skvrn a odstraňování skvrn bez artefaktů.

### Potřebný software

1. Tento program je pluginem (filtrem) pro Avisynth 2.5 (http://www.avisynth.org). Testován s verzemi 2.53 a 2.55. Verze 2.54 také může být použita.
2. Staré verze filtru před 2.0 (naposledy 1.3) potřebovaly Avisynth C rozhraní (avithynth_c.dll) od Kevina Atkinsona. S tím byly někdy problémy.
3. Nový filtr od verze 2.0 je nativní Avisynth plugin a NENÍ potřeba C-rozhraní.

### Použití

DeSpot může být načten jako jakýkoli Avisynth plugin, buď vložením do složky Plugins nebo použitím LoadPlugin. Základní použití:

    AviSource("d:\video.avi")  # vstup MUSÍ být YV12
    LoadPlugin("despot.dll")
    ConvertToYV12()
    DeSpot(p1=35, p2=14, mthres=25)

Filtr může pracovat ve 2 hlavních režimech, přepínaných parametrem median (od verze 2.0):
median (true nebo false, výchozí = false),
false - režim odstraňování skvrn - filtr se pokusí identifikovat šum a eliminovat ho.
true - prostý mediánový režim - filtr použije prostý časový mediánový filtr na nehybné oblasti obrazu.

Syntaxe výzvy funkce:

`DeSpot`(clip, int "mthres", int "mwidth", int "mheight", int "merode", bool "interlaced", bool "median", int "p1", int "p2", int "pwidth", int "pheight", bool "ranked", int "sign", int "maxpts", int "p1percent", int "dilate", bool "fitluma", int "blur", int "tsmooth", int "show", int "mark_v", bool "show_chroma", bool "motpn", int "seg", bool "color", int "mscene", int "minpts", clip "extmask", bool "planar")

#### Parametry pro DeSpot v režimu odstraňování skvrn jsou:

p1 (výchozí 24)
p2 (výchozí 12)
Pixel se musí lišit od svých sousedů o nejméně 'P1' v jasové složce, aby byl považován za šum. Okolní pixely se musí lišit o nejměně 'P2' , aby byly považovány za součást stejné skvrny.

pwidth (výchozí 6)
pheight (výchozí 5)
Skvrna nemůže být širší než pwidth a vyšší než pheight

ranked (true nebo false, výchozí=true)
Zapíná režim žebříčkového řazení rozdílu detektoru skvrn se 6 body místo 2.

sign (výchozí 0)
Nastavuje režim pro odstraňování jen černých nebo bílých skvrn nebo obojího:
sign = 0 - jakékoli skvrny a jejich okolí (výchozí)
sign = 1 - jen černé (tmavé) skvrny a jejich tmavé okolí
sign = -1 - jen bílé (světlé) skvrny a jejich světlé okolí
sign = 2 - jen černé (tmavé) skvrny a jejich jakékoli okolí
sign = -2 - jen bílé (světlé) skvrny a jejich jakékoli okolí

maxpts (od 0 do 10000000, výchozí=0 - bez omezení)
Nastavuje horní limit bodů (pixelů) na každou skvrnu.

minpts (od 0 do 10000000, výchozí=0 - bez omezení)
Nastavuje spodní limit bodů (pixelů) na každou skvrnu.

p1percent (od 0 do 100, výchozí=10)
Nastavuje spodní limit relativní části vysoce kontrastních (podle kriteria P1) pixelů na skvrnu (v procentech).

dilate (od 0 do 255, výchozí=1)
Nastavuje rozsah morfologického rozšíření (růstu) odstraněné skvrny (v pixelových jednotkách).
fitluma (true nebo false, výchozí=true)
Zapíná určitou korekci jasu v místech vymazaných skvrn.

blur (od 0 do 4, výchozí 1)
Hodnota (délka) lokálního prostorového rozmazání poblíž okrajů smazané skvrny.
tsmooth (od 0 do 127, výchozí 0)
Ovládá časové vyhlazení ve statických oblastech (mimo skvrn a pohybu).
Nastavuje přibližnou prahovou hodnotu variace jasu pixelu ve 3 snímcích,
Čím více variace překročí tuto prahovou hodnotu, tím menší bude časové vyhlazení.
0 - žádné časové vyhlazení.

motpn (true nebo false, výchozí = true)
Definuje metodu detekce pohybu.
false - detekuje pohyb z předchozího k aktuálnímu a z aktuálního k následujícímu snímku (stará metoda použitá ve všech verzích před 3.0)
true - detekuje pohyb z předchozího k následujícímu snímku (nová metoda od verze 3.0)

seg (od 0 do 2, výchozí=2)
Ovládá metodu odstraňování segmentů skvrn.
0 - odstraní jen pixely, které nejsou překryty zónami pohybu (stará metoda použitá ve všech verzích před 3.0, nejsilnější odstraňování);
1 - odstraní jen takové čarové segmenty, které nejsou překryty zónami pohybu;
2 - odstraní jen takové celé skvrny, které nejsou překryty zónami pohybu (nejbezpečnější).

color (true nebo false, výchozí = false)
Ovládá korekci barev na místech odstraněných skvrn.
true - mění barvu pixelů na místech odstraněných skvrn na střední hodnotu z předchozího, aktuálního a následujícího snímku,
false - nemění barvu pixelů na místech odstraněných skvrn.

mscene (od 0 do 100, výchozí=40)
Nastavuje procento pixelů v pohybu pro detekci změny scény a vypnutí odstraňování skvrn ze snímku.

extmask (výchozí none)
Volitelný klip s externí maskou. Bude binarizován s prahovou hodnotou 127 a logicky přidán (operací "NEBO") k vnitřní masce pohybu. Může být použit pro doplňkovou ochranu dobrých objektů (pokud máte nějakou vhodnou masku).

#### Parametry DeSpot společné pro oba režimy jsou:

mthres (výchozí 16)
Pixel se musí lišit od jiného snímku nejméně o 'MTHRES' , aby byl považován za pohyblivý. Toto číslo by mělo být větší než 'P2' aby se zabránilo identifikování šumu jako pohybu.

mwidth (výchozí 7)
mheight (výchozí 5)
Toto definuje šířku a výšku bloku pro mapu pohybu odšumovacího algoritmu (erozivní a dilatační cestou).

merode (výchozí = 33)
Tento definuje prahovou hodnotu procenta pohyblivých pixelů v bloku ve stadiu eroze.

interlaced (true nebo false)
Zda zpracovat video jako prokládané nebo ne (progresivní). Výchozí je pro DeSpot false (progresivní) od verze 1.3. (Ve starších verzích bylo ve výchozím nastavení video založené na polích zpracováváno jako prokládané - a to byla chyba).

Aby jste namísto odstraňování skvrn viděli mapu pohybu a šumu, který by byl eliminován, použijte parametr:
show (0, 1, 2, výchozí=0)
0 - nezobrazuje,
1 - jen zvýrazní šum, místo jeho odstranění
2 - zobrazí mapu pohybu a šumu

Pokud show=1, můžete použít doplňkový parametr pro změnu barev zvýraznění,
mark_v (0 až 255, výchozí= 255)
Kde mark_v je hodnotou jasu pro zvýraznění šumu.
Barva šumu (růžová, zelená nebo šedá) nyní závisí na paritě (sudosti) mark_v.
Také je zobrazena mapa pohybu sníženým kontrastem.

Pokud show=2, jas je změněn následovně:
255 (bílá): Šum, který bude odstraněn
159: Šum, který nebude odstraněn, protože by to mohl být pohyb
95: Mapa pohybu pro aktuální obraz

show_chroma (true nebo false)
Použijte pro zobrazení barevných dat klipu v mapě pohybu.

planar : znak pro použití speciálního planárního barevného formátu pro YUY2 klipy, jak na vstupu tak na výstupu funkce. Používá speciální trik pro zachování snímků s planární barevnou organizací dat (samostatné plochy Y, U, V v paměti) v normálním prolínaném formátu YUY2 snímků jako kontejneru. Tak se můžeme vyhnout četným vnitřním převodům prolínaného formátu do planárního a zvýšíme tím rychlost. Můžete převést normální prolínaný YUY2 zdrojový klip do planárního formátu pomocí funkce `interleaved2planar` z pluginu RemoveGrain od kassandro, a převést finální výsledek pomocí funkce `planar2interleaved` . Tento speciální planární YUY2 formát je podporovaný také v pluginu Removegrain od Kassandro, pluginu MaskTools2 od Manao a některých dalších. Tento trik nebude potřeba v Avisynthu v2.6 s nativní podporou planárního YV16 formátu. Tento parametr je ignorován u YV12 klipů. Výchozí je planar=false (a vyskočí vám pro YUY2 chyba).

### VYLADĚNÍ PARAMETRŮ

Aby filtr pracoval dobře, MUSÍ být správně nastaveny různé parametry. Neexistují dobré výchozí hodnoty.

První parametr, který potřebujete nastavit je interlaced, nastavte ho na true pokud je vaše video prokládané, jinak nechte false.

Pak musí být nastaveny pwidth a pheight. Nastavte je aby byly mírně větší než skvrny, které chcete odstranit. Pokud je vaše video prokládané, tak výška reprezentuje výšku jednoho pole. Tedy bude v podstatě zdvojnásobena.

Pak je potřeba nastavit p1, p2, a mthres . Obecně je p1 > mthres > p2. Pokud jsou nastaveny příliš nízko, tak by jste mohli ztratit detaily, protože malé variace pixelu mohou být chybně považovány za skvrny, a ještě důležitější je, že skutečné skvrny nemusí být rozpoznány, protože velikost toho co filtr bere jako skvrnu může být větší než pwidth na pheight. show=1 nebo 2 by mohlo být užitečné při nastavování těchto parametrů.

Parametry mwidth, mheight definují rozsah vlivu zón pohybu na zóny šumu (skvrn). Pro snížení chybných detekcí skvrn ve scénách s rychlým pohybem, je můžete zvýšit. Potom, pro zrušení vlivu velmi malých zón pohybu, můžete zvýšit parametr merode (relativně) .

Pak můžete nastavit parametr sign , pokud jsou téměř všechny skvrny bílé nebo jen černé. Správné nastavení sníží počet chybných detekcí skvrn a artefaktů.

Doporučuji použít nový parameter ranked=true pro stabilitu detekce skvrn v zašumělém videu.

Použijte parameter maxpts jako další metodu (navíc k pwidth a pheight) jako ochranu před vymazáním příliš velkých objektů - pravděpodobně ne skvrn.

Použijte p1percent pro nevymazání slabých (málo kontrastních) skvrn s malým relativním počtem kontrastních bodů (podle p1 ).

Pro lepší odstranění částečně poškozených pixelů blízko neostrých hranic skvrn můžete zvýšit velikosti skvrn zvýšením parametru dilate.

Zapněte korekci jasu v místech smazaných skvrn parametrem fitluma.

Tato korekce je lokální (založená na čárových segmentech) v režimu seg>0 a musí být použita s řádně definovaným rozšířením skvrn, aby se zabránilo chybné korekci kvůli neostrým hranám skvrn.

Pro snížení viditelnosti některých okrajů na místech smazaných skvrn o trochu více, nastavte lokální prostorové vyhlazení parametrem blur.

Pro odšumění téměř statických oblastí zkuste použít časové vyhlazení s parametrem tsmooth kolem 4-8.

Pokud mají skvrny nějakou barvu, zkuste zapnout parametr color pro opravu barev skvrn.

Pro zabránění artefaktů ve změnách scény, snižte parametr mscene .

Také můžete zkusit použít klip s externí maskou (parametr extmask ) jako doplněk (nebo náhradu) vnitří masky pohybu pro ochranu dobrých objektů. Například to může být maska pohybu invertovaná SAD maska z pluginu MVTools.

### JAK PRACUJE

#### Filtr pracuje v režimu Denoise následovně:

1a) Nachází pixely, které se liší od jejich sousedů aspoň o p1.
Pokud je prametr ranked true (nová metoda od verze 1.2), 3 sousedi v předchozím snímku (x-1, x, x+1) a stejní 3 sousedi v následujícím snímku jsou seřazeni (podle hodnoty), a jejich minimum a maximum se použije pro výpočet aktuálního rozdílu jasu od pixelu (x).
Pokud je parametr ranked false (stará metoda), použije se jen jeden soused v předchozím snímku (na stejné pozici x) a jeden soused v následujícím snímku pro výpočet minima a maxima.
Pokud není parametr sign roven 0, zahrnuje se také znak (sign) rozdílnosti.
Tyto pixely jsou sloučeny do horizontálních čárových segmentů.
Shluky čárových segmentů jsou sloučeny do skvrn.

1b) Zvětšuje okolí zárodku p2<p1.

2a) Určuje velikost skvrn a vyhazuje (neočistí) všechny větší než pwidth x pheight.
Pokud je parametr numpts nastaven, velké skvrny jsou také vyloučeny ze zpracování.
Pokud je nastaven parametr p1percent , pak slabé (podle kritéria p1) skvrny, které většinou sestávají z okolí (podle kriteria p2), jsou také vyloučeny.

2b) Pokud je nastaven režim Dilate , tak jsou skvrny rozšířeny aby zakryly své nekontrastní hrany a malé prodlevy mezi nimi, pomocí operace morfologického rozšíření k mapě šumu (skvrn).

3a) Najde pohyblivé oblasti v obrazu jednoduchým porovnáním každého pixelu s jiným snímkem a zkoumá všechny ty, které jsou větší než mthres.
Pokud je motpn=false, definuje se pohyb od předchozího k aktuálnímu snímku,
pokud je motpn=true, definuje se pohyb od předchozího k následujícímu snímku.

3b) Označí pohybové pixely bez šumu s váhou 3 v mapě pohybu.
Pokud je motpn=false, označí pixely určené jako pohyb i šum s váhou 1 na mapě pohybu.

4) Odstraňuje šum i malé oblasti z mapy pohybu erozivní metodou a pak i jejich rozšíření (protože to je vše morfologické otvírání).
Ve fázi eroze je mapa pohybu erodována v rozsahu mwidth/2 a mheight/2, a zóny s malou sumární váhou (menší než 3*merode/100) jsou sníženy nebo úplně odstraněny z mapy pohybu. Takové zóny odpovídají malému relativnímu (v procentech) počtu pohyblivých sousedů uvnitř tohoto rozsahu (nebo většině šumových pixelů - skvrnám).
Ve fázi rozšiřování jsou zbývající zóny pohybu zvětšeny se stejným rozsahem. To jsou pravděpodobně nejdůležitější kroky (obzvláště pro motpn=false) .

4a) Jestliže procento pohyblivých pixelů je větší než parametr mscene , plugin detekuje změnu scény, a celá mapa pohybu je nastavena jako pohyblivá.

4b) Přidává volitelnou externí masku pro maskování pohybu.

5) Odstraňuje jen skvrny, ve kterých nebyl žádný pohyb (v aktuálním snímku nebo následujícím snímku jestliže motpn=false).
V režimu odstraňování pixelů (seg = 0), prověřuje a odstraňuje jen pixely, které se nepřekrývají zónami pohybu.
V režimu odstraňování segmentů (seg = 1), prověřuje a odstraňuje jen segmenty, které se nepřekrývají zónami pohybu.
V režimu odstranění skvrn (seg = 2), prověřuje a odstraňuje jen skvrny, které se nepřekrývají zónami pohybu. Je to nejbezpečnější režim, s minimem artefaktů chybných odstranění.

6) Volitelně provede korekci jasu v místě odstraněných pixelů a prostorové vyhlazení blízko okrajů skvrn.

7) Volitelně provede časové vyhlazení statických oblastí.

8) Volitelná korekce barev v místě skvrn.

#### Filtr může být také nakonfigurován pro následující způsob práce (prostý mediánový režim):

1) Nalézá pohyblivé oblasti obrazu prostým porovnáním každého pixelu s předchozím snímkem a uvažuje všechny takové, které jsou větší než mthres.

2) Odšumuje mapu pohybu erozí a pak rozšiřuje (t.j. morfologické otvírání). To je pravděpodobně nejdůležitější krok.

3) Použije prostý časový mediánový filtr na nepohyblivé části obrazu.

### POZNÁMKY K OPTIMALIZACI

DeSpot je od verze 3.2 ručně optimalizován pro Integer SSE (Pentium3, Athlony jsou nyní vyžadovány).
Urychlení je asi o 30%.

### KOMPILOVÁNÍ

Fizick verze nad 1.1 jsou kompilovány ve free MS VC++ Toolkit 2003 s MS Platform SDK.

Poznámka: zkopírujte ztracené nmake.exe a cvtres.exe ze složky Bin\win64 do složky Bin.

MS VC6, VC7 mohou být také použity.

Použijte soubor "makefile.exe" s příkazem: nmake

Staré verze C-pluginu do 1.3 mohou být kompilovány pomocí GCC-g++ 3.3.1, MinGW 3.0.0-1, MSYS 1.09. Nové verze nad 2.0 tak kompilovat nelze.

### KOMBINOVANÉ POUŽITÍ

Velmi dobrých výsledků je možné dosáhnout kombinací tohoto filtru s odhadem a kompenzací pohybu: globálního pohybu s pluginem DePan (od Fizick), nebo lokálního pohybu s pluginem MVTools (od Manao).

V takovém případě jsou pixely z předchozího a následujícího snímku posunuty, aby nejlépe zapadly do aktuálního snímku, čímž se snižuje relativní pohyb, sníží se chybné detekce skvrn, a zlepší se redukce šumu.

Příklad skriptu s DePan 0.9 (můžete nastavit volitelné parametry DePanEstimate a DepanInterleave):

    AviSource("h:\kino.avi")
    LoadPlugin("depan.dll")
    LoadPlugin("despot.dll")
    i = ConvertToYV12()
    d = DePanEstimate(trust=3)
    DePanInterleave(i, data=d)
    DeSpot(p1=30, p2=15, pwidth=800, pheight=600, mthres=20, motpn=true, dilate=1, seg=1)
    SelectEvery(3, 1)

Příklad skriptu s MVTools 0.95 (můžete nastavit volitelné parametry MVAnalyse):

    AviSource("h:\kino.avi")
    LoadPlugin("mvtools.dll")
    LoadPlugin("despot.dll")
    i = ConvertToYV12()
    vf = MVAnalyse(i, isb=false, lambda=2000)
    f = MVCompensate(i, vf)
    vb = MVAnalyse(i, isb=true, lambda=2000)
    b = MVCompensate(i, vb)
    Interleave(f, i, b)
    DeSpot(p1=30, p2=12, mthres=20, dilate=2, fitluma=true, blur=2, seg=2)
    SelectEvery(3,1)

Příklad skriptu s externí maskou z pluginu MVTools v0.9.13.2 a výše (můžete nastavit volitelné parametry MVAnalyse):

    LoadPlugin("mvtools.dll")
    LoadPlugin("masktools.dll")
    LoadPlugin("degrainmedian.dll")
    LoadPlugin("despot.dll")

    AviSource("h:\kino.avi")
    i = ConvertToYV12()
    prefilt=i.DeGrainMedian() # předfiltrováno pro lepší analýzu pohybu

    # analyzujeme a kompenzujeme pohyb vpřed a zpět (k aktuálnímu snímku)
    ml = 100     # měřítko masky
    thscd1 = 400 # změna scény

    vf = prefilt.MVAnalyse(isb=false, truemotion=true) # dopředné vektory
    cf = i.MVFlow(vectors=vf, thscd1 = thscd1) # předchozí snímek, kompenzovaný vpřed
    sadf = MVMask(vectors=vf, ml=ml,kind=1,gamma=1, thscd1 = thscd1) # maska SAD vpřed
    msadf=sadf.Binarize() # binární invertovaná maska SAD vpřed

    vb = prefilt.MVAnalyse(isb=true, truemotion=true)  # zpětné vektory
    cb = i.MVFlow(vectors=vb, thscd1 = thscd1) # následující snímek, kompenzovaný zpět
    sadb = MVMask(vectors=vb, ml=ml, gamma=1, kind=1, thscd1 = thscd1) # maska SAD zpět
    msadb = sadb.Binarize() # binární invertovaná maska SAD zpět

    msad = Logic(msadf,msadb,"OR") # kombinovaná invertovaná maska SAD
    msad = msad.Expand() # rozšířená invertovaná maska SAD
    msadi = Interleave(msad, msad, msad) # 3krát opakovaná invertovaná maska SAD
    # Tato maska je vysoká (255) kde je nejméně jeden odhad pohybu dobrý,
    # takže tyto oblasti budou chráněny

    Interleave(cf,i,cb) # prolínáme (řadíme) dopředně kompenzovaný, zdrojový, a zpětně kompenzovaný snímek

    DeSpot(p1=30,p2=12,pwidth=800,pheight=600,mthres=20,merode=33,\
       sign=0,show=1,seg=0,color=true,motpn=true, extmask=msadi)

    SelectEvery(3,1) # dostaneme filtrovaný zdroj

### DOPLŃKOVÁ INFORMACE

Diskuze o filtru ConditionalTemporalMedian a filtru Despot : http://forum.doom9.org/showthread.php?s=&threadid=59388

### LICENCE

Tento program je svobodný software; můžete ho redistribuovat a/nebo opravovat pod podmínkami GNU General Public License publikované Free Software Foundation; buď verze 2 Licence, nebo (podle vaší volby) některé pozdější verze.

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 dotaci, aby jste se stali registrovaným uživatelem.

### SEZNAM ZMĚN VERZÍ

- Version 3.6.0 (October 23, 2008):
  - Added planar option for YUY2 planar format.
  - Fixed memory leakage in constructor (for show modes).
  - Some changes to prevent crashes.
  - Finally fixed strange read access bug with extmask (extmask was disabled for motpn=true, seg=0 in v3.5.1)
- Version 3.5.1 (Dec 20, 2007):
  - Recompiled to fix strange read access bug. Thanks to Řóřŕíčęŕ for report.
- Version 3.5.0 (July 14, 2006):
  - Corrected documentation example (msadb). Thanks to johnmeyer for report.
- Version 3.5 (November 26, 2005):
  - Added external motion mask clip option and example.
  - Changed default motpn=true (was really false, contrary to documentation).
- Version 3.4.0 (June 18, 2005):
  - Reformatted doc.
- Version 3.4 (April 11, 2005):
  - Added parameter minpts.
- Version 3.3.3 (March 30, 2005):
  - Fixed bug with median mode (thanks to slk001 for report).
- Version 3.3.2 (March 28, 2005):
  - More correct clip cache range (now =2 in place of undefined).
- Version 3.3.1 (October 8, 2004):
  - Fixed bugs with scene change detection..
- Version 3.3 (August 4, 2004):
  - Added mscene parameter for scene change detection.
- Changes 3.2 (July 4, 2004) from 3.1 (Fizick):
  - Corrected enabling and disabling of temporal smooth for some modes.
  - Changed temporal smooth method to more fast but simpler, new tsmooth is similar to old tsmooth*2.
  - Restored median mode processing as was before version 3.0.
  - Partial ISSE optimization for speed increasing (Pentium3 or Athlon is needed now).
  - Updated doc.
- Changes 3.1 (June 27, 2004) from 3.0 (Fizick):
  - Added color correction at place of removed spots.
- Changes 3.0 (June 22, 2004) from 2.1 (Fizick):
  - Version 3.0 is major release update (probably alpha with bugs):
  - Added another motion detection method "motpn" (previous to next frame).
  - Added segments removing methods "seg"=1,2.
  - Changed luma correction to local in segments (spots) removing mode.
  - Removed "mratio" parameter (reset as internal constant =3 as in all versions prior 2.1).
  - Changed some defaults.
  - Code reorganization.
  - Updated doc.
- Changes 2.1 (June 14, 2004) from 2.0 (Fizick):
  - Added parameter "mratio" parameter (it was internal =3 in all previous versions).
  - Changed default of "merode" to dependent from "mratio".
  - Updated doc.
  - At last I begin to understand how the filter works at motion denoising stage :-).
- Changes 2.0 (June 10, 2004) from 1.3 (Fizick):
  - Version 2.0 is major release update (probably alpha with bugs):
  - Main interface code is rewrited, and now filter is native Avisynth plugin (not C-plugin).
  - Added parameter "median" instead of DeSpotMedian function,
  - Added parameter "show" instead of DeSpotMark, DeSpotMap, DeSpotMedianMap functions.
  - Replaced parameter "mp" to parameter "merode" (relative)
  - Changed "p1percent" to integer
  - Updated doc.
- Changes 1.3 (June 7, 2004) from 1.2 (Fizick):
  - Removed parameter "weak" ( "p1percent" is more useful).
  - Added parameter "Dilate" to enlarge spots.
  - Fixed bug with processing field based video as interlaced by default - now default for any source is progressive.
  - Changed parameters order to more functional.
  - Changed default values of some parameters to more optimal.
  - Updated doc.
- Changes 1.2 (June 01, 2004) from 1.1 (Fizick):
  - Added parameters Ranked, weak, maxpts, p1percent,
  - changed mark mode to color spot with weak motion map.
- Changes 1.1 (May 31, 2004) from 1.0:
  - Source now is compatible with MS VC6, VC7.
- Changes 1.0 from 0.934 (Dec 30, 2003) (Fizick) (not public):
  - Added "tsmooth" parameter for temporal smoothing in static areas.
  - Changed filter name to DeSpot, filter file name to despot.dll,
  - and function names:
    ConditionalDenoise to DeSpot,
    ConditionalDenoiseMark to DeSpotMark,
    ConditionalDenoiseMap to DeSpotMap,
    ConditionalMedian to DeSpotMedian,
    ConditionalMedianMap to DeSpotMedianMap.
  - Corrected info.
- Changes 0.934 from 0.93c (Dec 20, 2003) (Fizick):
  - Added "fitluma" and "blur" parameters to reduce noticeability of deleted spots places.
  - Remove "per" parameter used previously for that.
  - New default value of "mp" parameter.
- Changes 0.93c from 0.93b (Nov 30, 2003)
  - More short filter name ctmedian.dll
  - Added version info to DLL
- Changes 0.93d from 0.93b (Nov 13, 2003) (Fizick, non public):
  - Added "per" parameter for more smoothed specks perimeter.
- Changes 0.93a from 0.93 (Nov 7, 2003) (Fizick, non public):
  - Added "sign" parameter for removing only black or white specks.
  - non optimized general version only.
- Changes 0.93 from 0.92 (Sep 27, 2003) (Kevin Atkinson)
  - Fix another nasty bug.
  - Included non optimized version.
  - Expanded the manual a bit
- Changes 0.92 from 0.91 (Sep 10, 2003) (Kevin Atkinson)
  - Fixed nasty bug.

`$English Date: 2006/12/15 19:29:25 $`

`Český překlad:25.2009`