Какова основная причина сглаживания с использованием нескольких случайных выборок в пикселе?

12

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

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

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

Это оставляет меня немного смущенным. Правильна ли основная идея, что мы интегрируем область пикселей и усреднение? Или это то, что мы понижаем сэмплинг и должны использовать sinc, но используем фильтр box, потому что он быстрый?

Или это что-то совсем другое?

Немного связано: сглаживание / фильтрация в трассировке лучей

Алан Вульф
источник
Я нахожу некоторые ответы здесь: groups.csail.mit.edu/graphics/classes/6.837/F04/lectures/…
Алан Вулф

Ответы:

9

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

Рассмотрим функцию рендеринга, которая берет точку выборки в пространстве экрана и возвращает цвет, найденный в этой точке. (Давайте пока проигнорируем любые проблемы случайной выборки и предположим, что он возвращает «идеальный» цвет для этой конкретной точки.) Эта функция эффективно определяет двухмерный сигнал в непрерывной области. Другими словами, он определяет изображение с бесконечным разрешением , поскольку ничто не мешает этой функции иметь функции в сколь угодно малых масштабах. С точки зрения частотной области: функция не ограничена полосой частот; он может включать компоненты произвольно высоких пространственных частот.x,y

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

f(x,y)k(x,y)

ffiltered(x,y)=f(x,y)k(xx,yy)dxdy

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

Если является блочным фильтром, который выглядит как в пиксельном блоке и другом месте, то это упрощает просто интеграцию по пиксельному блоку. Но, как уже отмечалось, блочный фильтр не так хорош, и есть лучшие варианты, такие как тентовый, бикубический и гауссовский фильтры.k = 1 k = 0 fkk=1k=0f

В любом случае, теперь, когда у нас есть интеграл, мы можем использовать для него Монте-Карло и комбинировать его с любыми другими интегралами, которые мы хотели бы сделать - для освещения, размытия в движении и так далее. Мы даже можем применить выборку важности к коэффициенту в интеграле, генерируя выборки для каждого пикселя, которые распределены вокруг центра пикселя в соответствии с .кkk

Натан Рид
источник
Отличный ответ, как всегда.
Иокабель
4

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

Мне потребовалось немало времени, чтобы прийти к согласию с этим объяснением. Что мне помогло, так это статья Тони Аподака под названием « История ТД» .

joojaa
источник
Спасибо за отличную ссылку! последняя ссылка на этой странице, кажется, окунулась прямо в это. С практической точки зрения, вы случайно не знаете, действительно ли выполнение чего-либо выше размытия рамки дает много визуальных различий? Или это даст какой-либо стимул для сближения?
Алан Вульф
2
Это лучший пример концепции рендеринга трехмерной графики, который я когда-либо видел (хотя речь идет не столько о физических или трассирующих вещах, но в любом случае). Отфильтрованное по sinc-изображению намного четче, чем блочный фильтр, создающий очень размытое изображение. Будет ли это сходиться быстрее, я сомневаюсь.
Джуджаа
Похоже, что ссылка исчезла. Какое название вы называли лучшим 3d-праймером, который вы читали?
Джонбейкерс