hqx


hqx
Разработчик(и)Максим Степин
Первоначальный выпуск25 июля 2003 г. ; 21 год назад ( 2003-07-25 )
Стабильный релиз
1.1 / 29 сентября 2003 г. ; 21 год назад (2003-09-29)
Написано вС++
ТипАлгоритм масштабирования пиксельной графики
ЛицензияLGPL 2.1
Веб-сайтgimp.org

hqx («масштаб высокого качества») — это набор из 3 алгоритмов масштабирования изображений, разработанных Максимом Степиным. Алгоритмы — 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] 2 8 = 256 {\displaystyle 2^{8}=256}

Данные интерполяции в таблицах поиска ограничены требованием сохранения непрерывности сегментов линий при оптимизации для гладкости. Генерация этих таблиц поиска с 256 фильтрами относительно медленная и является основным источником сложности алгоритма: этап рендеринга очень прост и быстр и разработан для выполнения в реальном времени на процессоре с поддержкой MMX . [2]

В исходном коде данные интерполяции представлены как макросы препроцессора , которые вставляются в операторы switch case , и нет исходного кода, приводящего к генерации таблицы поиска. Автор описывает процесс генерации таблицы поиска следующим образом: [2]

... для каждой комбинации необходимо определить наиболее вероятное векторное представление области, при этом необходимо сохранить идею краев между различными цветными областями изображения, при этом направление края должно быть максимально приближено к правильному. Затем это векторное представление растеризуется с более высоким (3x) разрешением с использованием сглаживания, а результат сохраняется в таблице поиска.

Реализации

  • Оригинальный алгоритм был перенесен в DevIL (но сохранен на языке C). [2]
  • Доступны порты на языки Java и C#. Эти реализации расширяют макросы. [3] [4]
  • Порт C++ byuu, автора bsnes , который кодирует LUT экономным способом. Byuu использовал симметрию шаблонов для создания такого кодирования и написал несколько заметок по интерпретации исходных таблиц поиска. [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для создания изображения или видео 2x.

Смотрите также

Ссылки

  1. ^ "HiEnd3D". 2013-12-05. Архивировано из оригинала 2013-12-05 . Получено 2023-02-12 .
  2. ^ abcde Zemek, Кэмерон (6 мая 2019 г.). «hqx README (порт grom358)». {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  3. ^ Гарсия, Эду (6 марта 2019 г.). "hqx-java". GitHub .
  4. ^ Тамши. "hqxsharp". GitHub .
  5. ^ Byuu. Анонс релиза Архивировано 30.09.2011 на Wayback Machine Доступно 14.08.2011. Реализация в открытом доступе опубликована на pastebin
  6. ^ "hqx". Libretro Docs .
  7. Блок, Жюль (12 апреля 2019 г.). "hqx-shader". GitHub .
  8. K, Hunter (20 июня 2014 г.). «Filthy Pants: Компьютерный блог: Сравнение истинного шейдера Hq2x с xBR». Filthy Pants .
  • hq2x, hq3x и hq4x на Wayback Machine
  • Порт оригинального проекта с использованием инструмента командной строки DevIL A и библиотеки C
  • hqxSharp проектирует порт hqx с дополнительной поддержкой прозрачности, пользовательских допусков и бесшовной мозаики (C#)
  • Проект фильтра 2D-изображений на code.google.com, включая фильтры hqx и многое другое (C#)
  • проект hqx-java проект Arcnor - бесплатный порт hqxSharp на Java с демонстрацией использования (Java)
    • HqxCli-Java Инструмент командной строки, использующий реализацию Arcnor (Java)
  • История внедрения ffmpeg ffmpeg -i %1 -filter_complex hqx=2 hqx2-%1 для создания изображения или видео 2x.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Hqx&oldid=1241788553"