Введение
Минимизация артефактов искажений при представлении изображения высокого разрешения в более низком разрешении
В цифровой обработке сигналов пространственный антиалиазинг – это техника для минимизации артефактов искажений (алиасинга) при представлении изображения высокого разрешения в более низком разрешении. Антиалиазинг используется в цифровой фотографии, компьютерной графике, цифровом аудио и многих других приложениях. Антиалиазинг подразумевает удаление компонент сигнала, имеющих частоту выше той, которую может корректно разрешить записывающее (или дискретизирующее) устройство. Это удаление выполняется перед (пере)дискретизацией в более низком разрешении. Если дискретизация выполняется без удаления этой части сигнала, это приводит к нежелательным артефактам, таким как мерцание или шум. В процессе захвата сигнала и в аудио антиалиазинг часто реализуется с помощью аналогового антиалиазингового фильтра для удаления внеполосной составляющей входного сигнала перед дискретизацией с помощью аналого-цифрового преобразователя. В цифровой фотографии оптические антиалиазинговые фильтры, изготовленные из бирефракционных материалов, сглаживают сигнал в пространственной оптической области. Антиалиазинговый фильтр слегка размывает изображение, чтобы снизить разрешение до уровня, достижимого цифровым сенсором или ниже (чем больше шаг пикселя, тем ниже достижимое разрешение на уровне сенсора).
Примеры
В компьютерной графике антиалиазинг улучшает внешний вид "зубчатых" краев многоугольников, или "ступенек", сглаживая их на экране. Однако это требует дополнительных ресурсов графической карты и увеличивает потребление видеопамяти. Уровень антиалиазинга определяет степень сглаживания краев многоугольников (и объем потребляемой видеопамяти). В верхней части изображения с уходящей вдаль шахматной доской изображение сложно распознать и оно неэстетично. В отличие от этого, при использовании антиалиазинга шахматная доска в верхней части плавно переходит в серый цвет, что обычно является желаемым эффектом, когда разрешения недостаточно для отображения деталей. Даже в нижней части изображения края выглядят значительно более гладкими на изображении с антиалиазингом. Существуют различные методы, включая фильтр sinc, который считается более эффективным алгоритмом антиалиазинга. При увеличении можно увидеть, как антиалиазинг интерполирует яркость пикселей на границах, создавая серые пиксели, поскольку пространство занято как черными, так и белыми элементами. Это помогает сделать изображение, обработанное фильтром sinc, значительно более гладким, чем исходное. В простом изображении ромба антиалиазинг смешивает граничные пиксели, что снижает неприятный эффект резких, ступенчатых границ, характерных для изображения без антиалиазинга. Антиалиазинг часто применяется при отрисовке текста на экране компьютера, чтобы создать впечатление гладких контуров, лучше имитирующих внешний вид текста, полученного при традиционной печати чернилами на бумаге. Особенно при отображении шрифтов на типичных ЖК-экранах часто используются методы субпиксельного рендеринга, такие как ClearType. Субпиксельный рендеринг требует специальных антиалиазинговых фильтров с цветовым балансом для преобразования сильных цветовых искажений в едва заметные цветовые переходы. Эквивалентных результатов можно добиться, сделав отдельные субпиксели адресуемыми, как если бы они были полноценными пикселями, и используя аппаратный антиалиазинговый фильтр, как это реализовано в контроллере дисплея ноутбука OLPC XO 1. Геометрия пикселей влияет на все это, независимо от того, выполняется ли антиалиазинг и субпиксельная адресация программно или аппаратно.
Подход к обработке сигналов для борьбы с псевдоизоляцией
В этом подходе идеальное изображение рассматривается как сигнал. Изображение, отображаемое на экране, принимается за выборки фильтрованной версии сигнала в каждой позиции пикселя (x, y). В идеале, необходимо понять, как человеческий мозг обрабатывает исходный сигнал, и создать изображение на экране, которое вызовет наиболее похожий ответ мозга. Наиболее широко используемым аналитическим инструментом для решения таких задач является преобразование Фурье, которое раскладывает сигнал на базисные функции различных частот, известные как частотные компоненты, и определяет амплитуду каждой частотной компоненты в сигнале. Волны имеют вид: где j и k – произвольные неотрицательные целые числа. Существуют также частотные компоненты, включающие синусоидальные функции в одном или обоих измерениях, но для целей данного обсуждения достаточно косинуса. Числа j и k вместе определяют частоту компоненты: j – частота по оси x, а k – частота по оси y. Цель антиалиасингового фильтра – значительно ослабить частоты выше определенного предела, известного как частота Найквиста, чтобы сигнал точно или почти точно представлялся своими выборками в соответствии с теоремой Котельникова-Найквиста; существует множество различных вариантов детального алгоритма с различными передаточными характеристиками фильтра. Современные знания о человеческом зрительном восприятии, как правило, недостаточны, чтобы определить, какой подход будет выглядеть наилучшим образом.
where j and k are arbitrary non negative integers. There are also frequency components involving the sine functions in one or both dimensions, but for the purpose of this discussion, the cosine will suffice. The numbers j and k together are the frequency of the component: j is the frequency in the x direction, and k is the frequency in the y direction. The goal of an anti aliasing filter is to greatly reduce frequencies above a certain limit, known as the Nyquist frequency, so that the signal will be accurately represented by its samples, or nearly so, in accordance with the sampling theorem; there are many different choices of detailed algorithm, with different filter transfer functions. Current knowledge of human visual perception is not sufficient, in general, to say what approach will look best.
Двумерные соображения
В предыдущем обсуждении предполагается, что дискретизация по прямоугольной сетке является доминирующей частью проблемы. Фильтр, обычно считающийся оптимальным, не обладает вращательной симметрией, как показано на первом рисунке; это обусловлено тем, что данные дискретизируются на квадратной решетке, а не из непрерывного изображения. Эта схема дискретизации является обоснованием для обработки сигнала вдоль каждой оси, как это традиционно делается с одномерными данными. Передискретизация Ланчоса основана на свертке данных с дискретным представлением функции sinc. Если разрешение не ограничено прямоугольной частотой дискретизации исходного или целевого изображения, то в идеале следует использовать вращательно-симметричные фильтры или функции интерполяции, как если бы данные представляли собой двумерную функцию непрерывных x и y. Функция sinc от радиуса имеет слишком протяженный хвост, чтобы быть хорошим фильтром (она даже не является квадратично интегрируемой). Более подходящим аналогом одномерной sinc является двухмерная амплитуда диска Эйри, двумерное преобразование Фурье круглой области в двумерном частотном пространстве, в отличие от квадратной области. Можно рассмотреть гауссиану плюс достаточное количество ее второй производной для сглаживания вершины (в частотной области) или повышения резкости (в пространственной области), как показано. Функции, основанные на гауссиане, являются естественным выбором, поскольку свертка с гауссианой дает другую гауссиану, независимо от того, применяется ли она к x и y или к радиусу. Подобно вейвлетам, одним из ее свойств является то, что она находится на полпути между локализацией в конфигурационном (x и y) и спектральном (j и k) представлениях. В качестве функции интерполяции одна гауссиана кажется слишком размытой для сохранения максимальной детализации, поэтому добавляется вторая производная. Например, при печати фотонегатива с достаточными возможностями обработки и на принтере с шестиугольной структурой нет оснований использовать интерполяцию функцией sinc. Такая интерполяция будет по-разному обрабатывать диагональные линии по сравнению с горизонтальными и вертикальными, что является слабой формой алиасинга.
Практические антиализинг-апроксимации в реальном времени
В движках рендеринга в реальном времени (будь то программная или аппаратная реализация) используется лишь небольшое количество базовых примитивов. К ним относятся "точки", "линии" и "треугольники". Если отрисовать такой примитив белым цветом на черном фоне, можно добиться эффекта размытых краев, что позволит реализовать антиалиасинг. Однако этот подход сталкивается с трудностями при работе с соседними примитивами (например, с треугольниками, имеющими общий край). Для аппроксимации алгоритма равномерного усреднения можно использовать дополнительный буфер для субпиксельных данных. Изначальный (и наименее требовательный к памяти) подход использовал 16 дополнительных бит на пиксель, организованных в сетку 4 × 4. Если примитивы отрисовываются в определенном порядке, например, от ближних к дальним, можно получить приемлемое изображение. Поскольку это требует упорядочивания примитивов, что плохо сочетается с такими API, как OpenGL, современные методы используют два или более полных субпикселя на пиксель, включая полную цветовую информацию для каждого из них. Некоторые данные, такие как буфер глубины (Z-буфер), могут быть общими для субпикселей.
Миппэпинг
Существует также метод, специализирующийся на текстурировании, называемый mipmapping, который заключается в создании версий текстурной карты с более низким разрешением и предварительной фильтрацией. При рендеринге изображения выбирается mipmap соответствующего разрешения, благодаря чему пиксели текстуры (тексели) уже отфильтрованы к моменту отображения на экране. Mipmapping обычно комбинируется с различными видами фильтрации текстур для улучшения конечного результата.
Сверхпробный анализ / антиалиазинг для всей сцены
Антиалиазинг сверхотборки (SSAA), также называемый антиалиазингом полной сцены (FSAA), используется для устранения алиасинга (или "ступенек") на полноэкранных изображениях. SSAA был первым типом антиалиасинга, доступным на ранних видеокартах. Однако из-за значительных вычислительных затрат и появления поддержки мультисемплингового антиалиасинга (MSAA) на графических процессорах, он больше не широко используется в приложениях реального времени. MSAA обеспечивает несколько более низкое качество графики, но при этом значительно экономит вычислительные ресурсы. Итоговое изображение, полученное с помощью SSAA, может казаться более мягким и выглядеть более реалистичным. Тем не менее, хотя это полезно для фотореалистичных изображений, простой подход к антиалиазингу (например, сверхотборка с последующим усреднением) может фактически ухудшить внешний вид некоторых типов линейных изображений или диаграмм (делая изображение размытым), особенно если большинство линий горизонтальные или вертикальные. В таких случаях может быть полезен предварительный этап подгонки к сетке (см. hinting). В общем случае, сверхотборка – это метод сбора точек данных с более высоким разрешением (обычно кратным степени двойки), чем конечное разрешение данных. Затем эти точки данных объединяются (уменьшаются) до желаемого разрешения, часто просто путем усреднения. Объединенные точки данных содержат меньше заметных артефактов алиасинга (или муара). Антиалиазинг полной сцены с помощью сверхотборки обычно означает, что каждый кадр рендерится в два (2x) или четыре (4x) раза выше разрешения дисплея, а затем уменьшается до разрешения дисплея. Таким образом, 2x FSAA будет рендерить 4 суперсэмплированных пикселя на каждый пиксель каждого кадра. Рендеринг с более высоким разрешением дает лучшие результаты, однако требует большей вычислительной мощности, что может снизить производительность и частоту кадров. Иногда FSAA реализуется аппаратно таким образом, что графическое приложение не знает о сверхотборке и последующем уменьшении разрешения изображения перед его отображением.
Антиалиазинг на основе объекта
Система графического рендеринга создает изображение на основе объектов, построенных из полигональных примитивов; эффекты алиасинга в изображении могут быть уменьшены путем применения схемы антиалиазинга только к областям изображения, представляющим собой силуэтные границы объектов. Силуэтные границы антиалиазируются путем создания антиалиазинговых примитивов, которые различаются по степени прозрачности. Эти антиалиазинговые примитивы присоединяются к силуэтным границам и создают область на изображении, где объекты кажутся плавно переходящими в фон. Метод имеет ряд важных преимуществ перед классическими методами, основанными на буфере накопления, поскольку он обеспечивает антиалиазинг всей сцены всего за два прохода и не требует дополнительной памяти, необходимой для буфера накопления. Антиалиазинг на основе объектов был впервые разработан в Silicon Graphics для их рабочей станции Indy.
Антиалиазинг и гамма-компрессия
Цифровые изображения обычно хранятся в формате с гамма-коррекцией, но большинство оптических фильтров сглаживания (антиалиасинга) линейны. Поэтому, чтобы уменьшить изображение таким образом, чтобы это соответствовало оптическому размытию, сначала следует преобразовать его в линейный формат, затем применить фильтр сглаживания, и, наконец, преобразовать обратно в формат с гамма-коррекцией. Использование линейной арифметики на изображении с гамма-коррекцией приводит к значениям, которые незначительно отличаются от идеального фильтра. Эта ошибка более заметна в областях с высоким контрастом, из-за чего области с высоким контрастом становятся темнее: яркие детали (например, усы кошки) кажутся визуально тоньше, а темные детали (например, ветви деревьев) – толще, по сравнению с оптически сглаженным изображением. Каждый пиксель искажается индивидуально, что приводит к неровным контурам после сглаживания. Поскольку преобразование в линейный формат и обратно значительно замедляет процесс, а различия обычно незначительны, большинство программ для редактирования изображений, включая Final Cut Pro и Adobe Photoshop, обрабатывают изображения в формате с гамма-коррекцией. Большинство современных графических процессоров поддерживают хранение текстур в памяти в формате sRGB и могут выполнять преобразование в линейное пространство и обратно прозрачно, практически без потери производительности.