HorizontalReduceBy2 / VerticalReduceBy2 / ReduceBy2

HorizontalReduceBy2 (clip)
VerticalReduceBy2 (clip)
ReduceBy2 (clip)

HorizontalReduceBy2 zmenšuje horizontální velikost každého snímku na polovinu, a VerticalReduceBy2 zmenšuje vertikální velikost na polovinu. Spojte oba za sebe (v libovolném pořadí) pro zmenšení celého obrazu na polovinu. Také můžete použít zkratku  ReduceBy2, což je stejné jako  HorizontalReduceBy2 následováno VerticalReduceBy2.

Použité jádro filtru je (1/4,1/2,1/4), což je stejné jako ve filtru VirtualDubu "2:1 reduction (high quality)". Tím se daří vyhnout problému vyhlazování okrajů hran (aliasing), který nastává s jádrem (1/2,1/2). Filtr Resize ve VirtualDub používá třetí, zvláštní jádro pro redukci 2:1, ale experimentoval jsem s ním a zjistil, že ve skutečnosti vytváří mírně hůře vypadající MPEG soubory--pravděpodobně proto, že mírně zostřuje hrany, a většina kodeků nemá ráda ostré hrany.

Pokud je vaše zdrojové video prokládané, filtr VerticalReduceBy2 z něj odstraní prokládání (smícháním polí), což je jeho postranní efekt. Pokud plánujete vytvořit výstupní video o velikosti jako 320x240, doporučuji vám zachytávat v plném vertikálním rozlišení (320x480) a použijte VerticalReduceBy2. Získáte mnohem lépe vypadající výstup. Můj kodek Huffyuv komprimuje zachytávané video přibližně 2:1, bezeztrátově, takže můžete zachytávat 320x480 na přibližně stejný diskový prostor jako při použití zachytávání 320x240. (Pokud má váš disk dostatečnou kapacitu a podporuje takový tok dat, můžete dokonce zachytávat v rozlišení 640x480 a použít jak  HorizontalReduceBy2 tak i  VerticalReduceBy2. Ale to už kvalitu tolik nezlepší, a pokud musíte jít do MotionJPEG pro dosažení 640x480, budete mít pravděpodobně lepší výsledek s Huffyuv při 320x480.)

Všmněte si, že je to rychlý a špinavý filtr (výkon odpovídá kompromisu). Proti standartním resize filtrům, filtr ReduceBy2 nezachovává pozici středu obrazu. Posouvá barevné plochy o půl pixelu. Ve skutečnosti je ReduceBy2() ekvivalentní k:

BilinearResize(Width/2, Height/2, 0.5, -0.5) pro RGB,

MergeChroma(BilinearResize(Width/2,Height/2,0.5,0.5),BilinearResize(Width/2,Height/2,1.0,1.0)) pro YV12,

MergeChroma(BilinearResize(Width/2,Height/2,0.5,0.5),BilinearResize(Width/2,Height/2,1.0,0.5)) pro YUY2.

$English Date: 2008/12/24 19:19:07 $

Český překlad:9.2.2009