stringtranslate.com

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

Спрайт телевизора (в центре), размер которого изменен с помощью простого масштабирования по методу ближайшего соседа (слева) и алгоритма интерполяции 2xSaI (справа)
Сравнение распространенных алгоритмов масштабирования пиксельной графики. Посмотрите в полном разрешении, чтобы увидеть различия.

Алгоритмы масштабирования пиксельной графики — это графические фильтры, которые пытаются улучшить внешний вид рисованной 2D- графики пиксельной графики . Эти алгоритмы являются формой автоматического улучшения изображения. Алгоритмы масштабирования пиксельной графики используют методы, значительно отличающиеся от обычных методов масштабирования изображений , которые имеют целью сохранение внешнего вида изображений.

Поскольку пиксельная графика обычно используется при очень низких разрешениях , она использует тщательную раскраску отдельных пикселей. Это приводит к графике, которая опирается на большое количество стилизованных визуальных подсказок для определения сложных форм. Было разработано несколько специализированных алгоритмов [1] для обработки масштабирования такой графики.

Эти специализированные алгоритмы могут улучшить внешний вид пиксельной графики, но при этом они вносят изменения. Такие изменения могут быть нежелательными, особенно если целью является точное воспроизведение оригинального внешнего вида.

Поскольку типичным применением этой технологии является улучшение внешнего вида видеоигр четвертого поколения и более ранних версий на аркадных и консольных эмуляторах , многие алгоритмы масштабирования пиксельной графики разработаны для работы в реальном времени для достаточно маленьких входных изображений со скоростью 60 кадров в секунду . Это накладывает ограничения на тип методов программирования , которые могут использоваться для такого рода обработки в реальном времени. [ необходима цитата ] Многие работают только с определенными коэффициентами масштабирования. 2× является наиболее распространенным коэффициентом масштабирования, в то время как 3×, 4×, 5× и 6× существуют, но используются реже.

Алгоритмы

SAA5050 «Диагональное сглаживание»

Микросхема генератора символов телетекста Mullard SAA5050 (1980) использовала примитивный алгоритм масштабирования пикселей для генерации символов с более высоким разрешением на экране из представления с более низким разрешением из своего внутреннего ПЗУ . Внутри каждая форма символа была определена на сетке 5 × 9 пикселей, которая затем была интерполирована сглаживанием диагоналей для получения символа 10 × 18 пикселей с характерной угловатой формой, окруженного сверху и слева двумя пикселями пустого пространства. Алгоритм работает только с монохромными исходными данными и предполагает, что исходные пиксели будут логически истинными или ложными в зависимости от того, включены они или выключены. Пиксели «вне шаблона сетки» считаются выключенными. [2] [3] [4]

Алгоритм работает следующим образом:

АБВ --\ 1 2ОПРЕДЕЛЕНИЕ --/ 3 41 = Б | (А & Е & !Б & !Г)2 = Б | (С и Э и !Б и !Е)3 = Э | (!А & !Э & Б & Г)4 = Э | (!С & !Э & Б & Е)

Обратите внимание, что этот алгоритм, как и алгоритм Eagle ниже, имеет недостаток: если появляется шаблон из 4 пикселей в форме полого ромба, то этот шаблон будет стерт расширением. Внутреннее ПЗУ символов SAA5050 тщательно избегает использования этого шаблона.

Вырожденный случай:

 * * * *

становится:

 ** **** ****** ****** **** **

EPX/Scale2×/AdvMAME2×

Eric's Pixel Expansion (EPX) — алгоритм, разработанный Эриком Джонстоном в LucasArts примерно в 1992 году при портировании игр на движке SCUMM с IBM PC (которые работали с разрешением 320 × 200 × 256 цветов) на ранние цветные компьютеры Macintosh, которые работали с разрешением, примерно в два раза большим. [5] Алгоритм работает следующим образом, расширяя P до 4 новых пикселей на основе окружения P:

Алгоритм EPX расширяет пиксель P до четырех новых пикселей.

1=П; 2=П; 3=П; 4=П; ЕСЛИ С==А => 1=А ЕСЛИ А==Б => 2=Б ЕСЛИ D==C => 3=C ЕСЛИ В==D => 4=D ЕСЛИ из A, B, C, D три или более идентичны: 1=2=3=4=P

Более поздние реализации этого же алгоритма (например, AdvMAME2× и Scale2×, разработанные около 2001 года) немного более эффективны, но функционально идентичны:

1=П; 2=П; 3=П; 4=П; ЕСЛИ C==A И C!=D И A!=B => 1=A ЕСЛИ А==Б И А!=С И Б!=D => 2=Б ЕСЛИ D==C И D!=B И C!=A => 3=C ЕСЛИ B==D И B!=A И D!=C => 4=D

AdvMAME2× доступен в DOSBox через опцию scaler=advmame2x dosbox.conf .

Алгоритм AdvMAME4×/Scale4× — это просто EPX, примененный дважды для получения разрешения 4×.

Scale3×/AdvMAME3× и ScaleFX

EPX можно использовать для масштабирования растровых шрифтов. Сверху вниз: a) исходный размер шрифта; b) масштабирование по ближайшим соседям 2×; c) масштабирование EPX 2×; d) масштабирование по ближайшим соседям 3×; e) масштабирование EPX 3×.

Алгоритм AdvMAME3×/Scale3× (доступный в DOSBox через опцию scaler=advmame3x dosbox.conf ) можно рассматривать как обобщение EPX на случай 3×. Угловые пиксели рассчитываются идентично EPX.

AdvMAME3x/Scale3x масштабирует пиксель E на 9 новых пикселей

1=Е; 2=Е; 3=Е; 4=Е; 5=Е; 6=Е; 7=Е; 8=Е; 9=Е; ЕСЛИ D==B И D!=H И B!=F => 1=D ЕСЛИ (D==B И D!=H И B!=F И E!=C) ИЛИ (B==F И B!=D И F!=H И E!=A) => 2=B ЕСЛИ B==F И B!=D И F!=H => 3=F ЕСЛИ (H==D И H!=F И D!=B И E!=A) ИЛИ (D==B И D!=H И B!=F И E!=G) => 4=D 5=Э ЕСЛИ (B==F И B!=D И F!=H И E!=I) ИЛИ (F==H И F!=B И H!=D И E!=C) => 6=F ЕСЛИ Н==D И Н!=F И D!=B => 7=D ЕСЛИ (F==H И F!=B И H!=D И E!=G) ИЛИ (H==D И H!=F И D!=B И E!=I) => 8=H ЕСЛИ F==H И F!=B И H!=D => 9=F

Существует также улучшенный вариант Scale3× под названием ScaleFX, разработанный Sp00kyFox, и версия, объединенная с Reverse-AA, под названием ScaleFX-Hybrid. [6] [7] [8]

Орел

Eagle работает следующим образом: для каждого входящего пикселя мы сгенерируем 4 исходящих пикселя. Сначала установим все 4 на цвет пикселя, который мы в данный момент масштабируем (как ближайшего соседа). Затем посмотрим на три пикселя выше, слева и по диагонали выше левого: если все три имеют одинаковый цвет, установим верхний левый пиксель нашего выходного квадрата на этот цвет вместо цвета ближайшего соседа. Работайте аналогично для всех четырех пикселей, а затем переходите к следующему. [9]

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

сначала: |затем. . . --\ CC |СТЮ --\ 1 2. С . --/ CC |VCW --/ 3 4. . . |XYZ | ЕСЛИ V==S==T => 1=S | ЕСЛИ Т==U==W => 2=U | ЕСЛИ V==X==Y => 3=X | ЕСЛИ W==Z==Y => 4=Z

Таким образом, если у нас есть один черный пиксель на белом фоне, он исчезнет. Это ошибка в алгоритме Eagle, но она решается другими алгоритмами, такими как EPX, 2xSaI и HQ2x.

2×SaI

2×SaI , сокращение от 2× Scale and Interpolation engine, был вдохновлен Eagle. Он был разработан Дереком Лиавом Ки Фа, также известным как Kreed, в первую очередь для использования в эмуляторах консолей и компьютеров , и он остался довольно популярным в этой нише. Многие из самых популярных эмуляторов, включая ZSNES и VisualBoyAdvance , предлагают этот алгоритм масштабирования как функцию. Доступно несколько немного отличающихся версий алгоритма масштабирования, и их часто называют Super 2×SaI и Super Eagle .

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

Семейство 2xSaI работает с матрицей пикселей 4 × 4 , где пиксель, обозначенный ниже буквой A, масштабируется:

ИЭФЖГАБК --\ WXHCDL --/ YZМНОП

Для 16-битных пикселей они используют пиксельные маски, которые изменяются в зависимости от того, является ли формат 16-битных пикселей 565 или 555. Константы colorMask, lowPixelMask, qColorMask, qLowPixelMask, redBlueMask, и greenMaskявляются 16-битными масками. Нижние 8 бит идентичны в любом формате пикселей.

Описаны две функции интерполяции:

ИНТЕРПОЛЯЦИЯ(uint32 A, UINT32 B).-- линейная середина А и В если (A == B) вернуть A; возвращаться ( ((A & colorMask) >> 1) + ((B & colorMask) >> 1) + (A & B & lowPixelMask) );Q_INTERPOLATE(uint32 A, uint32 B, uint32 C, uint32 D)-- билинейная интерполяция; среднее значение A, B, C и D x = ((A & qЦветоваяМаска) >> 2) + ((B & qЦветоваяМаска) >> 2) + ((C & qЦветоваяМаска) >> 2) + ((D & qЦветоваяМаска) >> 2); y = (A & qМаскаНизкогоПикселя) + (B & qМаска низких пикселей) + (C & qLowPixelMask) + (D & qLowPixelMask); y = (y >> 2) & qLowPixelMask; вернуть х + у;

Алгоритм проверяет A, B, C и D на диагональное соответствие, такое что A==Dи B!=C, или наоборот, или если они оба являются диагоналями, или если диагонального соответствия нет. В пределах этих значений он проверяет наличие трех или четырех идентичных пикселей. На основе этих условий алгоритм решает, использовать ли один из A, B, C или D или интерполяцию только среди этих четырех для каждого выходного пикселя. Произвольный масштабатор 2xSaI может увеличивать любое изображение до любого разрешения и использует билинейную фильтрацию для интерполяции пикселей.

С тех пор как Крид выпустил [10] исходный код под лицензией GNU General Public License , он доступен всем желающим использовать его в проекте, выпущенном под этой лицензией. Разработчикам, желающим использовать его в проекте, не имеющем лицензии GPL, потребуется переписать алгоритм, не используя существующий код Крида.

Он доступен в DosBox через scaler=2xsaiопцию.

штаб-квартиранх семья

hq2x, hq3x и hq4x Максима Степина предназначены для масштабных коэффициентов 2:1, 3:1 и 4:1 соответственно. Каждый из них работает, сравнивая значение цвета каждого пикселя с значениями его восьми непосредственных соседей, помечая соседей как близких или далеких, и используя предварительно сгенерированную таблицу поиска для нахождения правильной пропорции значений входных пикселей для каждого из 4, 9 или 16 соответствующих выходных пикселей. Семейство hq3x идеально сгладит любую диагональную линию, наклон которой составляет ±0,5, ±1 или ±2 и которая не сглажена на входе; одна с любым другим наклоном будет чередоваться между двумя наклонами на выходе. Он также сглаживает очень узкие кривые. В отличие от 2xSaI, он сглаживает выход. [11] [8]

hq n x изначально был создан для эмулятора Super NES ZSNES . Автор bsnes выпустил компактную реализацию hq2x в общественное достояние. [12] Доступен порт для shaders , который имеет сопоставимое качество с ранними версиями xBR. [13] До порта шейдер под названием «scalehq» часто путали с hqx. [14]

семья xBR

В этом семействе 6 фильтров: xBR , xBRZ , xBR-Hybrid , Super xBR , xBR+3D и Super xBR+3D .

xBR («масштабирование по правилам»), созданный Hyllian, работает во многом так же, как HQx (основано на распознавании образов) и даст тот же результат, что и HQx, если задан вышеуказанный образ. [15] Однако он идет дальше, чем HQx, используя двухэтапный набор правил интерполяции , которые лучше обрабатывают более сложные образы, такие как сглаженные линии и кривые. Масштабированные фоновые текстуры сохраняют четкие характеристики исходного изображения, а не становятся размытыми, как это обычно делает HQx (часто ScaleHQ на практике). Новейшие версии xBR являются многопроходными и могут лучше сохранять мелкие детали. Существует также версия xBR, объединенная с шейдером Reverse-AA, называемая xBR-Hybrid. [16] xBR+3D — это версия с 3D-маской, которая фильтрует только 2D-элементы.

xBRZ от Zenju — это модифицированная версия xBR. Он реализован с нуля как фильтр на базе ЦП в C++ . [17] Он использует ту же базовую идею, что и распознавание образов и интерполяция xBR, но с другим набором правил, разработанным для сохранения мелких деталей изображения размером до нескольких пикселей. Это делает его полезным для масштабирования деталей на лицах и, в частности, глазах. xBRZ оптимизирован для многоядерных ЦП и 64-битных архитектур и показывает на 40–60% лучшую производительность, чем HQx, даже при работе только на одном ядре ЦП. [ необходима цитата ] Он поддерживает масштабирование изображений с альфа-каналом и масштабирование целыми коэффициентами от 2× до 6×.

Super xBR [18] [19] — это алгоритм, разработанный Hylian в 2015 году. Он использует некоторые комбинации известных линейных фильтров вместе с правилами обнаружения краев xBR нелинейным образом. Он работает в два прохода и может масштабировать изображение только в два раза (или кратно двум, применяя его повторно, а также имеет фильтр против звона). Super xBR+3D — это версия с 3D-маской, которая фильтрует только 2D-элементы. Существует также версия Super xBR, переписанная на C/C++. [20] [8]

РотСпрайт

Слева: Исходное пиксельное изображение.
Посередине: Изображение, повернутое с использованием алгоритма вращения ближайшего соседа.
Справа: Изображение, повернутое с использованием алгоритма RotSprite.

RotSprite — это алгоритм масштабирования и вращения спрайтов, разработанный Xenowhirl. Он производит гораздо меньше артефактов, чем алгоритмы вращения ближайшего соседа, и, как и EPX, не вносит новые цвета в изображение (в отличие от большинства систем интерполяции). [21]

Алгоритм сначала масштабирует изображение до 8-кратного исходного размера с помощью модифицированного алгоритма Scale2×, который обрабатывает похожие (а не идентичные) пиксели как совпадения. Затем он (необязательно) вычисляет, какое смещение поворота использовать, отдавая предпочтение выбранным точкам, которые не являются граничными пикселями. Затем повернутое изображение создается с помощью алгоритма масштабирования и поворота ближайшего соседа, который одновременно сжимает большое изображение до его исходного размера и поворачивает изображение. Наконец, пропущенные однопиксельные детали (необязательно) восстанавливаются, если соответствующий пиксель в исходном изображении отличается, а целевой пиксель имеет трех идентичных соседей. [22]

Быстрый RotSprite

Fast RotSprite — это быстрый алгоритм вращения для пиксельной графики, разработанный Олегом Мекекечко для приложения Pixel Studio. Он основан на RotSprite, но имеет лучшую производительность с небольшой потерей качества. Он может обрабатывать большие изображения в реальном времени. Вместо 8-кратного увеличения Fast RotSprite использует одно 3-кратное увеличение. Затем он просто вращает все пиксели с округлением координат. Наконец, он выполняет 3-кратное уменьшение без введения новых цветов. Поскольку все операции на каждом шаге независимы, их можно выполнять параллельно, что значительно увеличивает производительность.

Копф–Лищински

Алгоритм Копфа–Лишински — это новый способ извлечения векторной графики , независимой от разрешения, из пиксельной графики, описанный в статье 2011 года «Депикселизация пиксельной графики». [23] Доступна реализация на Python. [24]

Алгоритм был перенесен на GPU и оптимизирован для рендеринга в реальном времени. Исходный код доступен для этого варианта. [25]

Интерполяция, направленная на края (EDI)

Edge-directed interpolation (EDI) описывает методы масштабирования, которые используют статистическую выборку для обеспечения качества изображения при его масштабировании. [26] [27] Было несколько более ранних методов, которые включали обнаружение краев для генерации весов смешивания для линейной интерполяции или классификации пикселей в соответствии с их соседними условиями и использования различных в противном случае изотропных схем интерполяции на основе классификации. Каждый подход интерполяции сводится к взвешенным средним соседних пикселей. Цель состоит в том, чтобы найти оптимальные веса. Билинейная интерполяция устанавливает все веса равными. Методы интерполяции более высокого порядка, такие как бикубическая или синк-интерполяция, рассматривают большее количество соседей, чем просто соседние.

НЕДИ

NEDI (New Edge-Directed Interpolation) вычисляет локальные ковариации в исходном изображении и использует их для адаптации интерполяции при высоком разрешении. Это прототип фильтра этого семейства. [28]

EDIUpsizer

EDIUpsizer [29] — это фильтр повторной выборки, который изменяет размер изображения в два раза как по горизонтали, так и по вертикали с помощью NEDI (новая интерполяция, направленная по краям). [28] EDIUpsizer также использует несколько модификаций базового NEDI для предотвращения множества артефактов, которые NEDI создает в детализированных областях. К ним относятся тестирование числа условий и адаптивный размер окна, [30] а также ограничения ограничения. Все модификации и ограничения NEDI являются необязательными (могут быть включены и выключены) и настраиваются пользователем. Этот фильтр довольно медленный.

FastEDIUpsizer

FastEDIUpsizer — это облегченная версия EDIUpsizer, которая немного больше настроена на скорость. Она использует постоянный размер окна 8 × 8 , выполняет NEDI только на плоскости яркости и использует только бикубическую или билинейную интерполяцию в качестве резервного метода интерполяции.

eedi3

Еще один фильтр интерполяции, направленный на края. Работает путем минимизации функции стоимости, включающей каждый пиксель в строке сканирования. Он медленный.

EEDI2

EEDI2 изменяет размер изображения на 2× в вертикальном направлении, копируя существующее изображение в 2⋅y(n) и интерполируя отсутствующее поле. Он предназначен для направленной на края интерполяции для деинтерлейсинга (т.е. не предназначен для изменения размера обычного изображения, но может делать и это). EEDI2 можно использовать как с TDeint, так и с TIVTC, см. ссылку на обсуждение для получения дополнительной информации о том, как это сделать. [31]

СуперРес

Шейдеры SuperRes [32] используют другой метод масштабирования, который можно использовать в сочетании с NEDI (или любым другим алгоритмом масштабирования). Этот метод подробно описан его создателем Шиандоу в сообщении на форуме Doom9 в 2014 году. [33] Этот метод часто дает лучшие результаты, чем просто использование NEDI, и соперничает с NNEDI3. Теперь они также доступны как скрипт рендеринга MPDN.

ННЕДИ

NNEDI — это семейство внутриполевых деинтерлейсеров , которые также могут использоваться для увеличения изображений в степени двойки. При использовании в качестве деинтерлейсера он берет кадр , отбрасывает одно поле , а затем интерполирует недостающие пиксели, используя только информацию из сохраненного поля. На данный момент существует три основных поколения NNEDI.

NNEDI, оригинальная версия, работает с входными данными YUY2 и YV12 . [34] NNEDI2 добавила поддержку RGB24 и специальную функцию nnedi2_rpow2для масштабирования. NNEDI3 расширяет NNEDI2 с помощью предсказательной нейронной сети . Как размер сети, так и окрестности, которые она исследует, можно настроить для компромисса между скоростью и качеством: [35]

Это параметр качества против скорости; однако, различия обычно невелики между количеством нейронов для определенного фактора изменения размера, однако разница в производительности между количеством нейронов становится больше, когда вы учетверяете размер изображения. Если вы планируете только удвоить разрешение, то вы не увидите существенных различий между 16 и 256 нейронами. Между самым высоким и самым низким вариантами все еще есть заметная разница, но не на порядки величины. [36]

Ссылки

  1. ^ "Pixel Scalers". Архивировано из оригинала 2 марта 2016 года . Получено 19 февраля 2016 года .
  2. ^ "Mullard SAA5050 Datasheet" (PDF) . Архивировано из оригинала (PDF) 2017-06-19 . Получено 2018-11-12 .
  3. ^ "SAA5050 Smoothing source code from the MAME project". GitHub . 6 ноября 2022 г. Архивировано из оригинала 13 августа 2023 г. Получено 12 ноября 2018 г.
  4. ^ "Сообщение на форуме, показывающее контрольную тестовую страницу телетекста на чипе SAA5050". Архивировано из оригинала 2018-11-13 . Получено 2018-11-12 .
  5. ^ Томас, Кас (1999). "Fast Blit Strategies: A Mac Programmer's Guide". MacTech . Архивировано из оригинала 2012-06-24 . Получено 2009-06-01 .
  6. ^ libretro. "common-shaders/scalenx at master · libretro/common-shaders · GitHub". GitHub . Архивировано из оригинала 22 декабря 2020 г. Получено 19 февраля 2016 г.
  7. ^ "ScaleNx - Удаление артефактов и улучшение алгоритма [Архив]". Архивировано из оригинала 2016-05-27 . Получено 2016-05-27 .
  8. ^ abc "PixelArt Scalers". GitHub . 30 сентября 2022 г. Архивировано из оригинала 12 октября 2022 г. Получено 12 октября 2022 г.
  9. ^ "Eagle (идея)". Everything2 . 2007-01-18. Архивировано из оригинала 2012-11-09 . Получено 2008-08-09 .
  10. ^ "Домашняя страница Крида: 2xSaI". Архивировано из оригинала 25 февраля 2021 г. Получено 25 апреля 2020 г.
  11. ^ Степин, Максим. "Фильтр увеличения hq3x". Архивировано из оригинала 2007-07-03 . Получено 2007-07-03 .
  12. ^ Byuu. Анонс релиза Архивировано 30.09.2011 на Wayback Machine Доступно 14.08.2011.
  13. ^ libretro. "common-shaders/hqx at master · libretro/common-shaders · GitHub". GitHub . Архивировано из оригинала 6 апреля 2019 года . Получено 19 февраля 2016 года .
  14. Хантер К. (20 июня 2014 г.). «Filthy Pants: A Computer Blog». Архивировано из оригинала 4 марта 2016 г. Получено 19 февраля 2016 г.
  15. ^ "Учебник по алгоритму xBR". 2012-09-18. Архивировано из оригинала 2018-08-19 . Получено 19 февраля 2016 .
  16. ^ libretro. "common-shaders/xbr at master · libretro/common-shaders · GitHub". GitHub . Архивировано из оригинала 15 января 2017 г. Получено 19 февраля 2016 г.
  17. ^ zenju. "xBRZ". SourceForge . Архивировано из оригинала 3 февраля 2016 . Получено 19 февраля 2016 .
  18. ^ "Super-xBR.pdf". Google Docs . Архивировано из оригинала 12 марта 2016 года . Получено 19 февраля 2016 года .
  19. ^ libretro. "common-shaders/xbr/shaders/super-xbr at master · libretro/common-shaders · GitHub". GitHub . Архивировано из оригинала 8 июня 2016 года . Получено 19 февраля 2016 года .
  20. ^ "Super-XBR ported to C/C++ (Fast shader version only))". 6 марта 2016 г. Архивировано из оригинала 30 июня 2016 г. Получено 3 июля 2016 г.
  21. ^ "RotSprite". Sonic Retro . Архивировано из оригинала 19 февраля 2016 года . Получено 19 февраля 2016 года .
  22. ^ "Sprite Rotation Utility". Sonic and Sega Retro Message Board . Архивировано из оригинала 3 марта 2016 года . Получено 19 февраля 2016 года .
  23. ^ Йоханнес Копф и Дани Лишински (2011). «Депикселизация пиксельного искусства». ACM Transactions on Graphics . 30 (4). SIGGRAPH : 99:1–99:8. doi :10.1145/2010324.1964994. Архивировано из оригинала 2016-05-13 . Получено 2016-05-22 .
  24. ^ Вемула, Анирудх; Йедду, Вамсидхар (29 апреля 2019 г.). «Пиксельное искусство: мы реализуем знаменитую статью Копфа и Лишински «Депикселизация пиксельного искусства». GitHub . Архивировано из оригинала 11 июня 2018 г. Получено 7 мая 2019 г.
  25. ^ Кройцер, Феликс; Копф, Йоханнес; Виммер, Михаэль (2015). «Депикселизация пиксельной графики в реальном времени». Труды 19-го симпозиума по интерактивной 3D-графике и играм . ACM. стр. 130. doi :10.1145/2699276.2721395. ISBN 9781450333924. S2CID  7592555. Архивировано из оригинала 2019-05-07 . Получено 2019-05-07 .
  26. ^ "Edge-Directed Interpolation". chiranjivi.tripod.com . Архивировано из оригинала 2016-02-25 . Получено 2019-05-07 .
  27. ^ "Реализация шейдера алгоритма NEDI - Форум Doom9". forum.doom9.org . Архивировано из оригинала 2022-05-13 . Получено 2019-05-07 .
  28. ^ ab Li, Xin (2010-11-26). "New Edge-Directed Interpolation" (PDF) . Архивировано из оригинала (PDF) 2010-11-26 . Получено 2019-05-07 .
  29. ^ Фильтры Avisynth от tritical
  30. ^ "Архивная копия" (PDF) . www.cs.ucdavis.edu . Архивировано из оригинала (PDF) 21 декабря 2004 г. . Получено 12 января 2022 г. .{{cite web}}: CS1 maint: archived copy as title (link)
  31. ^ "TDeint and TIVTC - Страница 21 - Форум Doom9". Архивировано из оригинала 2 марта 2016 года . Получено 19 февраля 2016 года .
  32. ^ "nnedi3 vs NeuronDoubler - Форум Doom9". Архивировано из оригинала 2 марта 2016 года . Получено 19 февраля 2016 года .
  33. ^ "Реализация шейдера алгоритма NEDI - Страница 6 - Форум Doom9". Архивировано из оригинала 2 марта 2016 года . Получено 19 февраля 2016 года .
  34. ^ "NNEDI - фильтр деинтерлейсинга внутри поля - Форум Doom9". Архивировано из оригинала 2 марта 2016 года . Получено 19 февраля 2016 года .
  35. ^ "Nnedi3". AviSynth . Архивировано из оригинала 2019-05-07 . Получено 2019-05-07 .
  36. ^ tritical (2019-04-30), nnedi3 - Readme.txt, заархивировано из оригинала 2019-04-17 , извлечено 2019-05-07

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