Hqx - Hqx
Tento článek obsahuje seznam obecných Reference, ale zůstává z velké části neověřený, protože postrádá dostatečné odpovídající vložené citace.Února 2019) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v zpracování obrazu, hqx ("vysoce kvalitní stupnice") je jedním z algoritmy škálování pixel art vyvinutý uživatelem Maxim Stepin, použito v emulátory jako Nestopia, FCEUX, higan, Snes9x, ZSNES a mnoho dalších. Jsou definovány tři filtry hqx: hq2x, hq3x, a hq4x, které se zvětšují o faktor 2, 3 a 4. U ostatních faktorů zvětšení se tento filtr používá s nejbližší soused škálování.
Obrázek zvětšen 3 × pomocí interpolace nejbližšího souseda
Obrázek zvětšen o 3 × pomocí algoritmu hq3x
Algoritmus
Nejprve se porovná barva každého z 8 pixelů kolem zdrojového pixelu s barvou zdrojového pixelu. Tvary jsou detekovány kontrolou pixelů podobné barvy podle prahové hodnoty. To dává celkem 28 = 256 kombinací podobných nebo odlišných sousedů. K rozšíření jediného pixelu na blok pixelů 2 × 2, 3 × 3 nebo 4 × 4 je uspořádání sousedů vyhledáno v předdefinované tabulce, která obsahuje potřebné vzory interpolace.[1]
Hqx používá Barevný prostor YUV vypočítat barevné rozdíly, takže rozdíly v jasu jsou váženy vyšší, aby napodobovaly lidské vnímání. Je možné použít vyhledávací tabulku pro převod barevného prostoru, pokud je zdrojový obrázek 16 bitů na pixel.[1]
Interpolační data ve vyhledávacích tabulkách jsou omezena požadavkem, že musí být zachována kontinuita úsečkových segmentů při optimalizaci pro hladkost. Generování těchto vyhledávacích tabulek s 256 filtry je relativně pomalé a je hlavním zdrojem složitosti algoritmu: fáze vykreslování je velmi jednoduchá a rychlá a je navržena tak, aby ji bylo možné provádět v reálném čase na MMX - schopný CPU.[1]
Ve zdrojovém kódu jsou interpolační data reprezentována jako preprocesor makra které mají být vloženy do spínací skříňka prohlášení, a není tam žádný zdrojový kód což vedlo ke generování vyhledávací tabulky. Autor popisuje proces generování vyhledávací tabulky jako:[1]
... pro každou kombinaci je třeba určit nejpravděpodobnější vektorovou reprezentaci oblasti s myšlenkou, že hrany mezi různými barevnými oblastmi obrazu budou zachovány, přičemž směr hran bude co nejblíže správnému. . Tato vektorová reprezentace se poté pomocí vyhlazování rastruje s vyšším (3x) rozlišením a výsledek se uloží do vyhledávací tabulky.
Implementace
- Původní algoritmus byl přenesen na DevIL (ale uchován v jazyce C).[1]
- K dispozici jsou porty do jazyků Java a C #. Tyto implementace rozšiřují makra.[2][3]
- A C ++ port byuu, autor bsnes, který kóduje LUT prostorově efektivním způsobem. Byuu využil symetrii vzorů k vytvoření takového kódování a napsal několik poznámek k interpretaci původních vyhledávacích tabulek.[4]
- libretro implementuje dvě rodiny shaderů ve slangu /HLSL, GLSL, a Cg:
- The hqx rodina, což je pravda hqx.[5] Jak to běží na moderní GPU, vyhledávací tabulky jsou nahrazeny texturami.[6] Textury byly generovány dotazováním upravené verze hqx pro její switch / case.
- The scalehq rodina, která je často zaměňována s hqx. To nesouvisí s hqx, ale je to spíše obecný algoritmus upscaling-smoothing.[7]
- hqx byl také implementován do ffmpeg pro upscaling obrázků a videí 2x, 3x nebo 4x. Účet výroby překladu pro ffmpeg je zde: http://blog.pkh.me/p/19-butchering-hqx-scaling-filters.html a použití může být něco jako: ffmpeg -i% 1 -filter_complex hqx = 2 hqx2-% 1 k vytvoření 2x obrazu nebo videa.
Viz také
Reference
- ^ A b C d E Zemek, Cameron (6. května 2019). „hqx README (port grom358)“. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Garcia, Edu (6. března 2019). "hqx-java". GitHub.
- ^ Tamschi. "hqxsharp". bitbucket.
- ^ Byuu. Oznámení o vydání Zpřístupněno 14. 8. 2011. public domain implementace uvolněna na pastebin
- ^ "hqx". Libretro Docs.
- ^ Blok, Jules (12. dubna 2019). "hqx-shader". GitHub.
- ^ K, Hunter (20. června 2014). „Filthy Pants: A Computer Blog: True Hq2x Shader Comparison With xBR“. Špinavé kalhoty.
externí odkazy
- hq2x, hq3x, a hq4x na Wayback Machine
- Port původního projektu pomocí DevIL Nástroj příkazového řádku a knihovna C.
- hqxSharp projekt port hqx s přidanou podporou transparentnosti, vlastních tolerancí a bezproblémového obkladu (C #)
- Projekt 2D obrazového filtru na code.google.com včetně filtrů hqx a dalších (C #)
- hqx-java projekt Projekt Arcnor - bezplatný port Java hqxSharp s ukázkou použití (Java)
- HqxCli-Java Nástroj příkazového řádku, který používá implementaci Arcnor (Java)
- příběh implementace ffmpeg ffmpeg -i% 1 -filter_complex hqx = 2 hqx2-% 1 k vytvoření 2x obrazu nebo videa.