Hqx - Hqx

В обработка изображений, hqx («шкала высокого качества») является одним из алгоритмы масштабирования пиксельной графики разработан Максим Степин, используется в эмуляторы Такие как Нестопия, FCEUX, Хиган, Snes9x, ЗСНЭС и многое другое. Определены три фильтра hqx: hq2x, hq3x, и hq4x, которые увеличиваются в 2, 3 и 4 раза соответственно. Для других коэффициентов увеличения этот фильтр используется с ближайший сосед масштабирование.

Алгоритм

Сначала цвет каждого из 8 пикселей вокруг исходного пикселя сравнивается с цветом исходного пикселя. Формы обнаруживаются путем проверки пиксели аналогичного цвета по порогу. Это дает всего 28 = 256 комбинаций похожих или разных соседей. Чтобы развернуть отдельный пиксель в блок пикселей 2 × 2, 3 × 3 или 4 × 4, расположение соседей ищется в заранее определенной таблице, которая содержит необходимые шаблоны интерполяции.[1]

Hqx использует Цветовое пространство YUV для расчета цветовых различий, чтобы различия в яркости имели больший вес, чтобы имитировать человеческое восприятие. Можно использовать справочную таблицу для преобразования цветового пространства, если исходное изображение имеет 16 бит на пиксель.[1]

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

В исходном коде данные интерполяции представлены как препроцессор макросы быть вставленным в переключатель случае заявления, и нет исходный код что приводит к созданию таблицы поиска. Автор описывает процесс создания справочной таблицы как:[1]

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

Реализации

  • Исходный алгоритм был перенесен на DevIL (но сохранен на языке C).[1]
  • Доступны порты на языки Java и C #. Эти реализации расширяют макросы.[2][3]
  • А C ++ порт byuu, автор бснес, который кодирует LUT компактным способом. Бюу использовал симметрию шаблонов для создания такой кодировки и написал несколько примечаний по интерпретации исходных справочных таблиц.[4]
  • либретро реализует два семейства шейдеров в Slang /HLSL, GLSL, и Cg:
    • В hqx семья, что правда hqx.[5] Как это работает на современном GPU, таблицы поиска заменяются текстурами.[6] Текстуры были сгенерированы путем опроса модифицированной версии hqx для ее переключателя / корпуса.
    • В scalehq family, которую часто путают с hqx. Это не связано с hqx, а скорее представляет собой общий алгоритм масштабирования-сглаживания.[7]
  • hqx также был реализован в ffmpeg для увеличения изображения и видео в 2, 3 или 4 раза. Отчет о создании перевода для ffmpeg находится здесь: http://blog.pkh.me/p/19-butchering-hqx-scaling-filters.html и использование может быть примерно таким: ffmpeg -i% 1 -filter_complex hqx = 2 hqx2-% 1 для создания 2-кратного изображения или видео.

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

Рекомендации

  1. ^ а б c d е Земек, Кэмерон (6 мая 2019 г.). "hqx README (порт grom358)". Цитировать журнал требует | журнал = (помощь)
  2. ^ Гарсия, Эду (6 марта 2019 г.). "hqx-java". GitHub.
  3. ^ Тамски. "hqxsharp". битбакет.
  4. ^ Бюу. Объявление о выпуске Проверено 14 августа 2011 г. реализация общественного достояния выпущена на pastebin
  5. ^ "hqx". Либретро Документы.
  6. ^ Блок, Жюль (12 апреля 2019 г.). "hqx-шейдер". GitHub.
  7. ^ К., Хантер (20 июня 2014 г.). "Filthy Pants: компьютерный блог: сравнение истинных шейдеров Hq2x с xBR". Грязные штаны.

внешняя ссылка