stringtranslate.com

Пространственное сглаживание

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

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

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

Примеры

В компьютерной графике сглаживание улучшает внешний вид «зубчатых» краев многоугольников или « зубцов », поэтому они сглаживаются на экране. Однако при этом снижается производительность видеокарты и используется больше видеопамяти . Уровень сглаживания определяет, насколько гладкими будут края полигонов (и сколько видеопамяти они потребляют).

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

Слева: альтернативная версия простой фигуры. Справа: сглаженная версия той же формы.

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

Сглаживание часто применяется при рендеринге текста на экране компьютера, чтобы создать плавные контуры, которые лучше имитируют внешний вид текста, полученного при обычной печати на бумаге. В частности, для шрифтов, отображаемых на типичных ЖК-экранах, обычно используются методы субпиксельного рендеринга, такие как ClearType . Для субпиксельного рендеринга требуются специальные сглаживающие фильтры с цветовой балансировкой, которые превращают сильное искажение цвета в едва заметные цветовые полосы. Эквивалентных результатов можно добиться, сделав отдельные субпиксели адресуемыми, как если бы они были полными пикселями, и предоставив аппаратный фильтр сглаживания, как это сделано в контроллере дисплея ноутбука OLPC XO-1 . Геометрия пикселей влияет на все это, независимо от того, выполняются ли сглаживание и субпиксельная адресация программным или аппаратным обеспечением.

Самый простой подход к сглаживанию

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

Самый простой график одной сглаженной точки «белое на черном» с использованием этого метода можно сделать следующим образом:

defplot_antialiased_point  ( x : float , y : float ): """Постройте одну сглаженную точку "белое на черном"."" для rounded_x в этаже ( x ) до потолка ( x ) : для rounded_y в этаже ( y ) до потолка ( y ): процент_x = 1 - abs ( x - rounded_x ) процент_y = 1 - abs ( y - rounded_y ) процент = процент_x * процент_y draw_pixel ( координаты = ( rounded_x , rounded_y ), цвет = процент ( диапазон 0 - 1 ))                                        

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

Примечание. draw_pixelПриведенная выше процедура не может слепо установить значение цвета на вычисленный процент. Он должен добавить новое значение к существующему значению в этом месте максимум до 1. В противном случае яркость каждого пикселя будет равна самому темному значению, рассчитанному во времени для этого места, что дает очень плохой результат. Например, если одна точка устанавливает уровень яркости 0,90 для данного пикселя, а другая точка, рассчитанная позже, едва касается этого пикселя и имеет яркость 0,05, окончательное значение, установленное для этого пикселя, должно быть 0,95, а не 0,05.

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

Подход к обработке сигналов для сглаживания

В этом подходе идеальный образ рассматривается как сигнал . Изображение, отображаемое на экране, берется как образцы в каждой позиции пикселя ( x,y ) отфильтрованной версии сигнала. В идеале нужно было бы понять, как человеческий мозг будет обрабатывать исходный сигнал, и выводить на экран изображение, которое вызовет наиболее схожую реакцию мозга.

Наиболее широко распространенным аналитическим инструментом для решения таких задач является преобразование Фурье ; это разлагает сигнал на базисные функции разных частот, известные как частотные компоненты, и дает нам амплитуду каждого частотного компонента в сигнале. Волны имеют вид:

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

Числа j и k вместе представляют собой частоту компонента: j ​​— частота в направлении x , а k — частота в направлении y .

Целью фильтра сглаживания является значительное снижение частот выше определенного предела, известного как частота Найквиста , чтобы сигнал был точно представлен своими выборками или почти так, в соответствии с теоремой выборки ; Существует множество различных вариантов детального алгоритма с различными передаточными функциями фильтра . В целом современных знаний о зрительном восприятии человека недостаточно, чтобы сказать, какой подход будет выглядеть лучше всего.

Двумерные соображения

Функция Sinc с отдельными X и Y

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

Если разрешение не ограничено прямоугольной частотой дискретизации исходного или целевого изображения, то в идеале следует использовать вращательно-симметричный фильтр или функции интерполяции, как если бы данные были двумерной функцией непрерывных x и y. Функция sinc радиуса имеет слишком длинный хвост, чтобы ее можно было использовать в качестве хорошего фильтра (она даже не интегрируется с квадратом ). Более подходящим аналогом одномерного синка является двумерная амплитуда диска Эйри , двумерное преобразование Фурье круглой области в двумерном частотном пространстве, в отличие от квадратной области.

Функция Гаусса плюс дифференциальная

Можно рассмотреть гауссиану плюс ее вторую производную, достаточную для того, чтобы сгладить вершину (в частотной области) или повысить ее резкость (в пространственной области), как показано. Функции, основанные на функции Гаусса, являются естественным выбором, поскольку свертка с гауссианом дает другой гауссиан, независимо от того, применяется ли он к x и y или к радиусу. Подобно вейвлетам, еще одним его свойством является то, что он находится на полпути между локализацией в конфигурации (x и y) и в спектральном (j и k) представлении. В качестве интерполяционной функции сама по себе гауссиана кажется слишком разбросанной, чтобы сохранить максимально возможную детализацию, поэтому добавляется вторая производная.

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

Практические аппроксимации сглаживания в реальном времени

На самом низком уровне механизма рендеринга в реальном времени (с программным или аппаратным ускорением) используется лишь несколько примитивов . К ним относятся «точки», «линии» и «треугольники». Если нарисовать такой примитив белым цветом на черном фоне, то можно создать такой примитив с нечеткими краями, добившись своего рода сглаживания. Однако этот подход затрудняет работу со смежными примитивами (например, треугольниками с общим ребром).

Чтобы аппроксимировать алгоритм равномерного усреднения, можно использовать дополнительный буфер для субпиксельных данных. Первоначальный (и наименее требовательный к памяти) подход использовал 16 дополнительных бит на пиксель в сетке 4 × 4. Если визуализировать примитивы в тщательном порядке, например спереди назад, можно создать приемлемое изображение.

Поскольку для этого требуется, чтобы примитивы были в определенном порядке, и, следовательно, плохо взаимодействует с интерфейсом прикладного программирования, таким как OpenGL , новейшие методы просто имеют два или более полных субпикселя на пиксель, включая полную информацию о цвете для каждого субпикселя. Некоторая информация может распределяться между субпикселями (например, Z-буфер ).

Мипмэппинг

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

Пример изображения с экстремальным псевдослучайным псевдонимом

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

Чтобы правильно сравнить эти изображения, необходимо просмотреть их в полном масштабе.

Бывает, что в этом случае появляется дополнительная информация, которую можно использовать. Путем повторного расчета с помощью алгоритма «оценки расстояния» были идентифицированы точки, расположенные очень близко к краю набора, так что необычно мелкие детали сглаживаются из-за быстро меняющегося времени ухода вблизи края набора. Цвета, полученные из этих рассчитанных точек, были идентифицированы как необычно нерепрезентативные для их пикселей. Там набор меняется быстрее, поэтому выборка из одной точки менее репрезентативна для всего пикселя. Эти точки были заменены на третьем изображении путем интерполяции точек вокруг них. Это снижает зашумленность изображения, но имеет побочный эффект: цвета становятся ярче. Так что это изображение не совсем то, которое можно было бы получить при еще большем наборе расчетных точек. Чтобы показать, что было отброшено, на четвертом изображении показаны отклоненные точки, смешанные с серым фоном.

Наконец, «Начинающие турбины» настолько регулярны, что систематическое (муаровое) сглаживание можно четко увидеть вблизи главной «оси турбины», когда ее размер уменьшен путем взятия ближайшего пикселя. Псевдонимы на первом изображении кажутся случайными, поскольку они учитывают все уровни детализации, ниже размера пикселя. Когда сглаживание нижнего уровня подавляется для создания третьего изображения, а затем снова выполняется понижающая дискретизация без сглаживания для создания пятого изображения, порядок в масштабе третьего изображения отображается как систематическое сглаживание в пятом. изображение.

Чистое понижение разрешения изображения дает следующий эффект (рекомендуется просмотр в полном масштабе):

Суперсэмплинг/сглаживание всей сцены

Супервыборочное сглаживание (SSAA) , [2] также называемое полноэкранным сглаживанием (FSAA), [3] используется для предотвращения сглаживания (или « ступенчатости ») на полноэкранных изображениях. [4] SSAA был первым типом сглаживания, доступным на ранних видеокартах. Но из-за огромных вычислительных затрат и появления поддержки мультисэмплового сглаживания (MSAA) на графических процессорах он больше не широко используется в приложениях реального времени. MSAA обеспечивает несколько более низкое качество графики, но при этом колоссальную экономию вычислительной мощности.

Результирующее изображение SSAA может показаться мягче, но также должно выглядеть более реалистичным. Однако, хотя простой подход к сглаживанию (например, супервыборка и последующее усреднение) полезен для изображений, похожих на фотографии, он может на самом деле ухудшить внешний вид некоторых типов штриховых рисунков или диаграмм (делая изображение нечетким), особенно там, где большинство линии горизонтальные или вертикальные. В этих случаях может оказаться полезным предварительный этап подгонки сетки (см. подсказки ).

В общем, супервыборка — это метод сбора точек данных с более высоким разрешением (обычно в степени двойки), чем окончательное разрешение данных. Эти точки данных затем объединяются (дискретизируются с понижением частоты) до желаемого разрешения, часто просто путем простого усреднения . Объединенные точки данных имеют менее заметные артефакты сглаживания (или муаровые узоры ).

Полноэкранное сглаживание с помощью суперсэмплинга обычно означает, что каждый полный кадр визуализируется с удвоенным (2x) или четырехкратным (4x) разрешением экрана , а затем субдискретизируется для соответствия разрешению дисплея. Таким образом, 2x FSAA будет отображать 4 пикселя с супервыборкой для каждого отдельного пикселя каждого кадра. Рендеринг в более высоком разрешении даст лучшие результаты; однако требуется больше мощности процессора, что может привести к снижению производительности и частоты кадров. Иногда FSAA реализуется аппаратно таким образом, что графическое приложение не знает, что перед отображением изображения подвергаются супердискретизации, а затем субдискретизации.

Объектно-ориентированное сглаживание

Система рендеринга графики создает изображение на основе объектов, построенных из полигональных примитивов; эффекты сглаживания на изображении можно уменьшить, применив схему сглаживания только к областям изображения, представляющим края силуэтов объектов. Края силуэта сглаживаются путем создания примитивов сглаживания, которые различаются по непрозрачности. Эти примитивы сглаживания присоединяются к силуэтным краям и создают область изображения, где объекты сливаются с фоном. Метод имеет некоторые важные преимущества перед классическими методами, основанными на буфере накопления [ необходимы пояснения ], поскольку он генерирует полносценное сглаживание всего за два прохода и не требует использования дополнительной памяти, необходимой для буфера накопления. Объектно-ориентированное сглаживание было впервые разработано в Silicon Graphics для их рабочей станции Indy .

Сглаживание и гамма-сжатие

Цифровые изображения обычно хранятся в формате с гамма-сжатием , но большинство оптических фильтров сглаживания являются линейными. Таким образом, чтобы уменьшить разрешение изображения таким образом, чтобы оно соответствовало оптическому размытию, необходимо сначала преобразовать его в линейный формат, затем применить фильтр сглаживания и, наконец, преобразовать обратно в формат с гамма-сжатием. [5] Использование линейной арифметики для гамма-сжатого изображения приводит к значениям, которые немного отличаются от идеального фильтра. Эта ошибка увеличивается при работе с высококонтрастными областями, в результате чего высококонтрастные области становятся более тусклыми: яркие детали (например, кошачьи усы) становятся визуально тоньше, а темные детали (например, ветки деревьев) становятся толще по сравнению с оптически анти- псевдоним изображения. [6] Каждый пиксель искажается индивидуально, то есть после сглаживания контуры становятся негладкими. Поскольку преобразование в линейный формат и из него значительно замедляет процесс, а различия обычно незначительны, большинство программ для редактирования изображений , включая Final Cut Pro и Adobe Photoshop , обрабатывают изображения в гамма-сжатом виде.

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

История

Важные ранние работы в истории сглаживания включают:

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

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

  1. ^ Лелер, Уильям Дж. (июль 1980 г.). «Человеческое зрение, сглаживание и дешевый дисплей на 4000 строк». ACM SIGGRAPH Компьютерная графика . 14 (3): 308–313. дои : 10.1145/965105.807509.
  2. ^ «AMD Radeon HD 5870: создание графических процессоров следующего поколения» . AnandTech.com.
  3. ^ Джейсон Грегори, Джефф Лендер (2009). Архитектура игрового движка. АК Петерс, ООО с. 39. ИСБН 978-1-56881-413-1.
  4. ^ М. Кармен Хуан Лизандра (июнь 2000 г.). «Графические библиотеки для программирования под Windows». Перекресток . 6 (4). АКМ: 14–18. дои : 10.1145/333424.333433. S2CID  15786664.
  5. ^ Марущик, Куба; Денес, Дьёрдь; Мантюк, Рафаль К. (2018). «Улучшение качества сглаживания в виртуальной реальности» (PDF) . Например, Великобритания Компьютерная графика и визуальные вычисления . S2CID  54081570. Архивировано из оригинала (PDF) 18 февраля 2019 г.
  6. ^ Брассер, Эрик. «Гамма-ошибка при масштабировании изображения». www.4p8.com . Архивировано из оригинала 23 декабря 2012 г. Проверено 14 декабря 2012 г.

Внешние ссылки