hqx
Разработчик(и) | Максим Степин |
---|---|
Первоначальный выпуск | 25 июля 2003 г |
Стабильная версия | 1.1
/ 29 сентября 2003 г |
Написано в | С++ |
Тип | Алгоритм масштабирования пиксельной графики |
Лицензия | LGPL 2.1 |
Веб-сайт | gimp.org |
hqx («шкала высокого качества») — набор из трёх алгоритмов масштабирования изображений, разработанный Максимом Степиным. Алгоритмы hq2x , hq3x и hq4x увеличиваются в 2, 3 и 4 раза соответственно. Первоначально он был создан в 2003 году для эмулятора Super NES ZSNES , [ 1 ] и используется в таких эмуляторах , как Nestopia , F. CEUX Snes9x. и Snes9x .
Алгоритм
[ редактировать ]Пиксели исходного изображения перебираются от верхнего левого угла к правому нижнему. Для каждого пикселя окружающие 8 пикселей сравниваются с цветом исходного пикселя. Формы обнаруживаются путем проверки пикселей одинакового цвета в соответствии с порогом YUV . hqx использует цветовое пространство YUV для расчета цветовых различий, поэтому различия в яркости имеют больший вес, чтобы имитировать человеческое восприятие. [ 2 ] Это дает в общей сложности комбинации похожих или непохожих соседей. Чтобы расширить отдельный пиксель до блока пикселей 2×2, 3×3 или 4×4, расположение соседей просматривается в заранее определенной таблице, которая содержит необходимые шаблоны интерполяции. [ 2 ]
Данные интерполяции в справочных таблицах ограничены требованием сохранения непрерывности сегментов линий при оптимизации гладкости. Создание этих справочных таблиц с 256 фильтрами происходит относительно медленно и является основным источником сложности алгоритма: этап рендеринга очень прост и быстр и предназначен для выполнения в реальном времени на процессоре с поддержкой MMX . [ 2 ]
В исходном коде данные интерполяции представлены в виде макросов препроцессора, которые должны быть вставлены в операторы выбора случая , и нет исходного кода, ведущего к созданию таблицы поиска. Автор описывает процесс создания справочной таблицы следующим образом: [ 2 ]
... для каждой комбинации должно быть определено наиболее вероятное векторное представление области, при этом должна быть сохранена идея границ между различными цветными областями изображения, причем направление края должно быть как можно ближе к правильному. . Затем это векторное представление растеризуется с более высоким (3x) разрешением с использованием сглаживания, и результат сохраняется в справочной таблице.
-
Изображение увеличено в 3 раза с интерполяцией по ближайшему соседу.
-
Изображение увеличено в 3 раза с помощью hq3x.
Реализации
[ редактировать ]- Исходный алгоритм был перенесен на DevIL (но сохранен на языке C). [ 2 ]
- Доступны порты на языки Java и C#. Эти реализации расширяют возможности макросов. [ 3 ] [ 4 ]
- Порт C ++ от byuu, автора bsnes , который кодирует LUT экономно. Бюу использовал симметрию шаблонов для создания такого кодирования и написал несколько заметок по интерпретации исходных справочных таблиц. [ 5 ]
- libretro реализует два семейства шейдеров на Slang/ HLSL , GLSL и Cg :
- Семейство hqx , которое является настоящим hqx. [ 6 ] Поскольку он работает на современных графических процессорах , таблицы поиска заменяются текстурами. [ 7 ] Текстуры были созданы путем опроса модифицированной версии hqx на предмет ее переключателя/регистра.
- Семейство Scalehq , которое часто путают с hqx. Он не связан с hqx, а скорее представляет собой общий алгоритм масштабирования и сглаживания. [ 8 ]
- hqx также был реализован в ffmpeg для масштабирования изображений и видео в 2x, 3x или 4x. Отчет о создании перевода для ffmpeg находится здесь , и его использование может быть примерно таким:
ffmpeg -i %1 -filter_complex hqx=2 hqx2-%1
для создания 2-кратного изображения или видео.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «ХиЭнд3D» . 05.12.2013. Архивировано из оригинала 5 декабря 2013 г. Проверено 12 февраля 2023 г.
- ^ Перейти обратно: а б с д и Земек, Кэмерон (6 мая 2019 г.). "hqx README (порт grom358)" .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Гарсия, Эду (6 марта 2019 г.). "hqx-java" . Гитхаб .
- ^ Тамши. "hqxsharp" . Гитхаб .
- ^ Бьюу. Объявление о выпуске . По состоянию на 14 августа 2011 г. общедоступная реализация опубликована на Pastebin
- ^ "хкх" . Либретро Документы .
- ^ Блок, Жюль (12 апреля 2019 г.). «hqx-шейдер» . Гитхаб .
- ^ К. Хантер (20 июня 2014 г.). «Грязные штаны: компьютерный блог: сравнение шейдеров True Hq2x с xBR» . Грязные штаны .
Внешние ссылки
[ редактировать ]- hq2x , hq3x и hq4x в Wayback Machine
- Порт исходного проекта с использованием инструмента командной строки DevIL A и библиотеки C.
- hqxSharp проектирует порт hqx с добавленной поддержкой прозрачности, настраиваемых допусков и бесшовного разбиения на плитки (C#).
- Проект фильтра 2D-изображений на code.google.com, включая фильтры hqx и многое другое (C#)
- проект hqx-java Проект Arcnor — бесплатный Java-порт hqxSharp с демоверсией использования (Java)
- HqxCli-Java Инструмент командной строки, использующий реализацию Arcnor (Java).
- История реализации ffmpeg ffmpeg -i %1 -filter_complex hqx=2 hqx2-%1 для создания изображения или видео 2x.