Интернет магазин китайских планшетных компьютеров



Компьютеры - Алгоритмы масштабирования пиксельной графики - Алгоритмы

23 января 2011


Оглавление:
1. Алгоритмы масштабирования пиксельной графики
2. Алгоритмы
3. Применение в эмуляторах игровых приставок



EPX/Scale2x/AdvMAME2x

EPX - алгоритм, разработанный Эриком Джонстоном из LucasArts приблизительно в 1992 году, при портировании движка SCUMM с IBM PC на первые цветные компьютеры Macintosh, где разрешение было выше примерно вдвое. Алгоритм работает следующим образом:

  A    --\ 1 2
C P B  --/ 3 4
  D 
 Если C==A => 1=A
 Если A==B => 2=B
 Если B==D => 4=D
 Если D==C => 3=C
 Если 3 или более пикселов из A, B, C, D одинаковы: 1=P, 2=P, 3=P, 4=P

Последовавшие реализации этого алгоритма имеют иную, но функционально идентичную, реализацию:

  A    --\ 1 2
C P B  --/ 3 4
  D 
 1=P; 2=P; 3=P; 4=P;
 Если C==A и C!=D и A!=B => 1=A
 Если A==B и A!=C и B!=D => 2=B
 Если B==D и B!=A и D!=C => 4=D
 Если D==C и D!=B и C!=A => 3=C

AdvMAME4x/Scale4x - это просто дважды примененный EPX.

Scale3x/AdvMAME3x

Алгоритм AdvMAME3x/Scale3x - не то же самое, что EPX, но они достаточно схожи между собой:

A B C --\  1 2 3
D E F    > 4 5 6
G H I --/  7 8 9
 1=E; 2=E; 3=E; 4=E; 5=E; 6=E; 7=E; 8=E; 9=E;
 Если D==B и D!=H и B!=F => 1=D
 Если или => 2=B
 Если B==F и B!=D и F!=H => 3=F
 Если или => 4=D
 5=E
 Если или => 6=F
 Если H==D и H!=F и D!=B => 7=D
 Если или => 8=H
 Если F==H и F!=B и H!=D => 9=F

Eagle

« Eagle работает следующим образом: для каждого входного пиксела генерируется 4 выходных, первоначально цвета всех четырех устанавливаются в цвет текущего сканируемого пикселя, дальше просматриваются пикселы сверху и слева, если они одинакового цвета, то красим левый верхний пиксел в этот цвет, выполняем аналогичные действия для всех четырех пикселей и двигаемся дальше. »
Сначала:      |Затем: 
. . . --\ CC  |S T U  --\ 1 2
. C . --/ CC  |V C W  --/ 3 4
. . .         |X Y Z
              | Если V==S==T => 1=S
              | Если T==U==W => 2=U
              | Если V==X==Y => 3=X
              | Если W==Z==Y => 4=Z

Таким образом, одиночный черный пиксел на белом фоне при применении данного алгоритма растворится. Этот баг исправлен в алгоритмах 2xSaI и HQ3x.

2xSaI

2xSaI,, является усовершенствованием алгоритма Eagle. Был разработан Дереком Лиау Кие Фа, также известным как Kreed, первоначально для использования в эмуляторах, где и поныне является достаточно популярным алгоритмом. Многие популярные эмуляторы, такие как ZSNES, Jnes, DOSBox и VisualBoyAdvance, имеют поддержку данного алгоритма вывода.

Kreed опубликовал исходники алгоритма под лицензией GPL, его можно свободно использовать в любых целях, разрешенных лицензией. Для использования алгоритма в не-GPL продуктах разработчику придется переписать его без использования кода, написанного Kreed.

Super 2xSaI и Super Eagle

Матрица окружающих пикселей, которые использует Super2xSaI для масштабирования одного пиксела.

Немного модифицированные реализации имеют названия "Super 2xSaI", "2xSaI", и "Super Eagle".

Super Eagle написан Kreed'ом, аналогичен 2XSaI, но на выходе получается более сильный блендинг.

Super 2xSaI написан Kreed'ом, фильтр для сглаживания графики, но с более сильным блендингом, чем в Super Eagle.

Семейство hqnx

Максим Степин разработал алгоритмы hq2x, hq3x и hq4x для увеличения в пропорциях 2:1, 3:1 и 4:1 соответственно. Цвет каждого пиксела сравнивается с восемью соседними, соседи помечаются как ближние и дальние, далее используется пре-генерированная таблица для отыскания необходимого соотношения значений для каждого из 4, 9 или 16 выходных пикселей. Алгоритм hq3x отлично сглаживает диагональные линии с наклоном ±1:2, ±1:1 и ±2:1; линии с другим коэффициентом наклона будут представлены как ломаные из вышеупомянутых диагональных. Хорошо сглаживаются крутые кривые. В отличие от 2xSaI, к выводу применяется антиалиасинг.


Изображение, увеличенное в 3 раза методом ближайшего соседа
Изображение, полученное при использовании алгоритма hq3x


hqnx был изначально придуман для эмулятора Super Nintendo, ZSNES.

Алгоритм Копфа-Лищински

Алгоритм разработан в 2011 году и представлен на SIGGRAPH 2011. Переводит пиксельное изображение с небольшим количеством цветов в векторную форму. Впрочем, если на картинке есть антиалиазинг, результаты получаются хуже.



Просмотров: 5177


<<< Активная модель формы
Бикубическая интерполяция >>>