Введение
Изменение разрешения цифрового изображения
В компьютерной графике и цифровой обработке изображений масштабирование изображения относится к изменению его размера. В видеотехнологиях увеличение цифрового материала известно как повышение разрешения или апскейлинг. При масштабировании векторного изображения графические элементы, составляющие изображение, могут быть масштабированы с использованием геометрических преобразований без потери качества. При масштабировании растрового изображения необходимо создать новое изображение с большим или меньшим количеством пикселей. В случае уменьшения количества пикселей (уменьшение масштаба) это обычно приводит к заметной потере качества. С точки зрения цифровой обработки сигналов, масштабирование растровой графики является двухмерным примером изменения частоты дискретизации – преобразования дискретного сигнала из одной частоты дискретизации (в данном случае, локальной частоты дискретизации) в другую.
Математический
Масштабирование изображения можно рассматривать как форму передискретизации или реконструкции изображения с точки зрения теоремы Котельникова — Найквиста. Согласно этой теореме, уменьшение разрешения до меньшего изображения из исходного с более высоким разрешением возможно только после применения подходящего двумерного антиалиасингового фильтра для предотвращения артефактов наложения. Изображение при этом приводится к объему информации, который может содержать изображение меньшего размера. В случае увеличения разрешения, антиалиасинговый фильтр заменяется фильтром реконструкции. Более сложный подход к увеличению масштаба рассматривает задачу как обратную, заключающуюся в поиске правдоподобного изображения, которое при уменьшении масштаба выглядело бы как исходное. Для решения этой задачи применяются различные методы, включая оптимизационные методы с регуляризацией и машинное обучение на основе примеров.
Алгоритмы
Размер изображения можно изменить несколькими способами.
Интерполяция ближайшего соседа
Один из простейших способов увеличения размера изображения — интерполяция ближайшего соседа, при которой каждый пиксель заменяется ближайшим пикселем в выходном изображении; при увеличении масштаба это означает, что в выходном изображении будет несколько пикселей одного цвета. Это может сохранить четкие детали в пиксель-арте, но также привести к ступенчатости в ранее сглаженных изображениях. "Ближайший" в интерполяции ближайшего соседа не обязательно должен быть математически ближайшим. Распространенная реализация заключается в всегда округлять в сторону нуля. Округление таким образом позволяет получить меньше артефактов и быстрее выполняется.
Билинеальные и бикубические алгоритмы
Билинейная интерполяция работает путем интерполяции значений цвета пикселей, создавая плавный переход в выходном изображении даже там, где в исходном материале присутствуют резкие переходы. Хотя это полезно для изображений с плавными тонами, данный алгоритм снижает контрастность (чёткость границ), что может быть нежелательно для линейных рисунков. Бикубическая интерполяция обеспечивает значительно лучшие результаты, но требует больших вычислительных ресурсов.
Переотбор проб Sinc и Lanczos
В теории, пересчет с использованием функции sinc обеспечивает наилучшую возможную реконструкцию для сигнала, идеально ограниченного по полосе частот. На практике, предположения, лежащие в основе передискретизации sinc, не полностью выполняются в реальных цифровых изображениях. Передискретизация Ланчоса, являющаяся приближением к методу sinc, дает лучшие результаты. Бикубическая интерполяция может рассматриваться как вычислительно эффективное приближение к передискретизации Ланчоса.
Отбор проб в ящиках
Одной из слабостей билинейных, бикубических и подобных алгоритмов является то, что они используют фиксированное количество пикселей для выборки. При уменьшении масштаба ниже определенного порога, например, более чем в два раза для всех алгоритмов би-семплинга, алгоритмы начинают выбирать несмежные пиксели, что приводит к потере данных и некачественным результатам. Простое решение этой проблемы – метод "box sampling" (выборка по области), который заключается в рассмотрении целевого пикселя как области на исходном изображении и выборке всех пикселей внутри этой области. Это гарантирует, что каждый входной пиксель влияет на выходной. Главный недостаток этого алгоритма – сложность его оптимизации.
Мипмап
Еще одно решение проблемы уменьшения масштаба при би-линейной фильтрации — это MIP-карты. MIP-карта представляет собой предварительно вычисленный набор изображений, уменьшенных до разных размеров. При уменьшении масштаба используется ближайшая MIP-карта большего размера в качестве исходного изображения, чтобы избежать масштабирования ниже эффективного порога билинейной фильтрации. Этот алгоритм быстр и легко оптимизируется. Он является стандартным во многих графических API, таких как OpenGL. Цена — увеличение объема используемой памяти для изображений, примерно на треть в стандартной реализации.
Методы преобразования Фурье
Простая интерполяция на основе преобразования Фурье дополняет частотную область нулевыми компонентами (применение сглаживающего окна позволило бы уменьшить эффект звона). Наряду с хорошим сохранением (или восстановлением) деталей, следует отметить эффект звона и циклический перенос содержимого с левой границы на правую (и в обратном направлении).
Интерполяция, направленная на края
Алгоритмы интерполяции, ориентированные на края, предназначены для сохранения четкости границ изображения при изменении масштаба, в отличие от других алгоритмов, которые могут приводить к появлению ступенчатых артефактов. Примеры алгоритмов для решения этой задачи включают New Edge Directed Interpolation (NEDI), Edge Guided Image Interpolation (EGGI), Iterative Curvature Based Interpolation (ICBI) и Directional Cubic Convolution Interpolation (DCCI). Анализ, проведенный в 2013 году, показал, что DCCI демонстрирует наилучшие показатели PSNR и SSIM на наборе тестовых изображений.
hqx
Для увеличения компьютерной графики с низким разрешением и/или малым количеством цветов (обычно от 2 до 256 цветов) более качественные результаты можно получить, используя hqx или другие алгоритмы масштабирования, предназначенные для пиксель-арта. Они обеспечивают четкие края и сохраняют высокую детализацию.
Векторизация
Векторная экстракция, или векторизация, предлагает другой подход. Векторизация сначала создает векторное представление графики, не зависящее от разрешения, которое затем масштабируется. После этого эта версия, не зависящая от разрешения, отрисовывается как растровое изображение в нужном разрешении. Этот метод используется в Adobe Illustrator, Live Trace и Inkscape. Масштабируемая векторная графика хорошо подходит для простых геометрических изображений, в то время как фотографии векторизуются плохо из-за своей сложности.
Глубокие сверточные нейронные сети
Этот метод использует машинное обучение для получения более детализированных изображений, таких как фотографии и сложные произведения искусства. Программы, использующие этот метод, включают waifu2x, Imglarger и Neural Enhance. Программное обеспечение с использованием искусственного интеллекта, например MyHeritage Photo Enhancer, позволяет добавлять детализацию и резкость историческим фотографиям, где их не было в оригинале.
Общий
Масштабирование изображений используется, в частности, в веб-браузерах, редакторах изображений, программах для просмотра изображений и файлов, программных увеличителях, цифровом зуме, при создании миниатюр и при выводе изображений на экраны или принтеры.
Видео
Это приложение предназначено для увеличения разрешения изображений для домашних кинотеатров, подключаемых к устройствам, поддерживающим HDTV, при воспроизведении контента PAL-разрешения, например, с DVD-плеера. Масштабирование выполняется в реальном времени, а выходной сигнал не записывается.
Масштабирование пикселей
Поскольку графика в стиле пиксель-арт обычно имеет низкое разрешение, она опирается на тщательное размещение отдельных пикселей, часто с ограниченной цветовой палитрой. Это приводит к созданию графики, которая использует стилизованные визуальные подсказки для определения сложных форм при малом разрешении, вплоть до отдельных пикселей. Это делает масштабирование пиксель-арта особенно сложной задачей. Были разработаны специализированные алгоритмы для обработки графики в стиле пиксель-арт, поскольку традиционные алгоритмы масштабирования не учитывают особенности восприятия. Поскольку типичное применение – улучшение внешнего вида видеоигр четвёртого поколения и более ранних на аркадных и консольных эмуляторах, многие из них предназначены для работы в реальном времени с небольшими изображениями на входных данных со скоростью 60 кадров в секунду. На быстром оборудовании эти алгоритмы подходят для игр и другой обработки изображений в реальном времени. Эти алгоритмы обеспечивают чёткую и контрастную графику, минимизируя размытие. Алгоритмы масштабирования были реализованы в широком спектре эмуляторов, таких как HqMAME и DOSBox, а также в 2D игровых движках и воссозданиях игровых движков, таких как ScummVM. Они получили признание у геймеров, для которых эти технологии способствовали возрождению игрового опыта 1980-х и 1990-х годов. Такие фильтры в настоящее время используются в коммерческих эмуляторах на Xbox Live, Virtual Console и PSN, чтобы классические игры с низким разрешением выглядели более привлекательно на современных HD-дисплеях. Недавно выпущенные игры, включающие эти фильтры, включают в себя Sonic's Ultimate Genesis Collection, Castlevania: The Dracula X Chronicles, Castlevania: Symphony of the Night и Akumajō Dracula X Chi no Rondo.
Масштабирование в реальном времени
Ряд компаний разработали методы увеличения разрешения видеокадров в реальном времени, например, при отрисовке в видеоиграх. Технология Nvidia Deep Learning Super Sampling (DLSS) использует глубокое обучение для повышения разрешения изображений с низким исходным разрешением до более высокого для отображения на мониторах с высоким разрешением. AMD FidelityFX Super Resolution 1.0 (FSR) не использует машинное обучение, а применяет традиционные алгоритмы, разработанные вручную, для пространственного масштабирования на стандартных шейдерных блоках. FSR 2.0 использует временное масштабирование, также с применением алгоритма ручной настройки. Стандартные предустановки FSR не являются обязательными, и в некоторых играх, таких как Dota 2, предусмотрены ползунки разрешения. К другим технологиям относятся Intel XeSS и Nvidia Image Scaling (NIS).