8 bit dithering cinema 4d что это
Наложение на экран со смещением
При составлении уравнений для деформируемого дизеринга из них выпало очень простое преобразование:
В сущности, это выражает то, что я хотел: сдвиг наложенного на экран паттерна дизеринга ровно на один экран при повороте камеры на одну область обзора. Благодаря этому сохраняется наложение 1:1 с экраном, но при этом также учитывается упрощённое преобразование видимой геометрии сцены. На самом деле это соответствует только движению в центре экрана, но, к моему счастью, выглядит достаточно хорошо.
Заметьте: похоже, что подвергнувшиеся дизерингу пиксели стула в основном движутся с геометрией. То же самое относится и к сфере. Более перпендикулярные к полю зрения плоскости отображаются не очень хорошо — пол по-прежнему выглядит хаотичным.
Хотя подход и не идеален, простой сдвиг наложенного на экран дизеринга сохраняет общий паттерн и движение сцены, чтобы глазу удобнее было отслеживать вместе. Я был этим очень доволен. Занимаясь подчисткой кода и коммитами, выпустив один-два поста в devlog, я всё равно не мог избавиться от мысли об идеально прилепленном дизеринге:
Вопросы и ответы
Нужен ли дитеринг при работе в формате 32-bit float?
Нет, не нужен. Для этого формата не существует правильного дитеринга, так как ошибка квантования зависит от уровня сигнала: она имеет уровень примерно −150 дБ по отношению к уровню каждого отсчета. Точность этого формата составляет примерно 25 бит, так что быстрого накопления ошибок квантования можно не опасаться.
Нужен ли дитеринг при преобразовании из 32-bit float в 24-битный формат?
Да, при квантовании сигнала в разрядность 24 бита (и менее) нужен дитеринг. При 24 битах дитеринг в большинстве случаев не будет заметно влиять на результат, но его применение должно быть автоматическим, без лишних раздумий.
Нужен ли дитеринг при конвертировании файла в mp3?
Все зависит от того, сохраняете ли вы файл с низкой разрядностью перед конвертацией в mp3 или конвертируете в mp3 непосредственно из формата высокой разрядности. Дитеринг нужен для сохранения файла с низкой разрядностью, а не для mp3. Некоторые mp3-кодеры умеют компрессировать звук из форматов с высокой разрядностью, что позволяет избежать лишних конвертаций. Впрочем, артефакты mp3 обычно намного сильнее, чем искажения от конвертации разрядности.
Какой вид нойз-шейпинга использовать?
Это вопрос личных предпочтений и даже отчасти аудиофильский. Многие профессиональные инженеры мастеринга используют стандартный TPDF-дитеринг без нойз-шейпинга с отличными результатами. Другие — имеют предпочтения и считают, что тип нойз-шейпинга влияет на окончательное звучание фонограммы. Например, Боб Кац активно участвовал в создании нескольких режимов нойз-шейпинга MBIT+ для плагина Ozone 5. Я считаю, что в дитеринге и нойз-шейпинге важнее повсеместное и своевременное применение, нежели конкретный вид или алгоритм.
Достаточно ли уже имеющегося в записи шума для дитеринга?
В некоторых случаях — да, но не всегда. Шум дитеринга должен иметь определенные статистические свойства: требуемую мощность в каждой полосе частот, случайность распределения амплитуд. Поэтому надежнее применять дитеринг в любом случае, автоматически и без лишних раздумий.
Что применять сначала: дитеринг или преобразование частоты дискретизации (SRC)?
Так как SRC повышает разрядность сигнала (аналогично любой другой обработке), то сначала выполняется SRC, а затем дитеринг. Причем, между ними необходимо проверить, нет ли клиппирования, так как SRC может повысить пиковый уровень записи.
В статье Н. Сухова «Hi-Fi правда и High-End сказки» написано, что у аналоговой записи на пленке динамический диапазон определяется шумом снизу, а у цифровой — нет, потому что у 16-битного цифрового сигнала динамический диапазон равен 50 дБ из-за шумов квантования, которые дают 1% искажений. Верно ли это?
Статья Н. Сухова была написана в 1998 году, когда понимание дитеринга еще не было повсеместным. В статье рассматривается только случай квантования транкейтом. Однако при корректном использовании дитеринга и нойз-шейпинга никаких нелинейных и интермодуляционных искажений не возникает. При этом динамический диапазон компакт-диска составляет честные 93 дБ, а структура шума такая же, как у магнитной пленки.
Можно ли говорить о том, что нойз-шейпинг увеличивает динамический диапазон в наиболее слышимой СЧ-области?
Да, нойз-шейпинг увеличивает динамический диапазон в области средних частот (либо даже во всем диапазоне 0–15 кГц, в зависимости от алгоритма). В частности, может улучшиться A-взвешенный динамический диапазон.
Вопрос о возможном конфликте нойз-шейпинга в файле и нойз-шейпинга в конвертере. Не повредит ли нойз-шейпинг в исходном файле ЦАП-у с агрессивным нойз-шейпингом?
Нет. Насколько я понимаю, они не мешают друг другу и повсеместно используются вместе.
Благодарим Алексея Лукина за подробные ответы
и за потраченное время на обсуждение в нашей конференции!
Вопросы и ответы по дизерингу
Должен ли я использовать дизеринг?
Если вы понижаете дискретизацию аудио с большей битовой глубины до меньшей (т.е. с 32-битной фиксированной точки до 24- или 16-битной), вам следует использовать дизеринг.
Пространство мира — кубическое наложение
Предыдущие эксперименты показали, что любая корреляция между паттерном дизеринга и геометрией сцены должна игнорировать информацию глубины, получаемую от сцены. На практике это означает, что дизеринг можно прицеплять к геометрии во время поворота камеры, но не её перемещения. Это не так уж плохо для Obra Dinn, учитывая медленный темп игры и наблюдательную роль игрока. Обычно в игре он ходит по кораблю, останавливается и смотрит на объекты. При ходьбе на экране происходит так много изменений, что плавающий дизеринг не особо очевиден.
С учётом этого, моей следующей попыткой стало наложение паттерна дизеринга на геометрию ненапрямую, с помощью предварительного рендеринга паттерна на стороны куба, центрированного вокруг камеры. Куб перемещается с камерой, но остаётся ориентированным относительно мира. Получается смесь: немного экрана, немного сцены.
Паттерн дизеринга наложен на куб, центрированный относительно камеры
Вид из камеры, смотрящей в угол. Масштаб наложения для наглядности увеличен.
Наложение на куб работает неплохо, когда смотришь на стороны, но не так хорошо, когда камера направлена на угол. Паттерн дизеринга по-прежнему идеально зафиксирован в 3D-пространстве при повороте камеры. Даже при грубых проверках результат выглядит многообещающим.
Дело, наконец, сдвинулось с места. Благодаря тому, что это постобработка, такой подход более общий, чем наложение в пространстве текселов, что хорошо. Проблема теперь сводится к конкретному кубическому наложению. При идеальном наложении один тексел на кубе всегда соответствует одному пикселю на экране, вне зависимости от поворота камеры. Для куба это невозможно…
Узнайте, как это относится к градиентам цвета
Независимо от того, являетесь ли вы веб-дизайнером, художником-графиком или даже электронным музыкантом, сглаживание играет жизненно важную роль в творческом процессе. Дизеринг при обработке изображений – это метод, используемый для имитации цветов или затенения. Основной концепцией дизеринга является добавление шума или дополнительных пикселей в цифровой файл. В графике сглаживание добавляет случайные структуры пикселей для улучшения качества изображения, избегая полосатости.
Какое отношение имеет дизеринг к цифровому аудио
Аудио можно разделить на две основные категории: аналоговое и цифровое. Если аналоговый звук - это непрерывный поток звуковых волн, то цифровой звук - это блочное, основанное на числах представление "реальной ситуации". Поэтому, когда вы записываете что-либо на цифровой аудио рабочей станции (DAW) , программное обеспечение "сэмплирует" вводимый звук и создает цифровую копию путем аналого-цифрового преобразования (АЦП).
Если вы записываете с помощью современных цифровых инструментов с соответствующей "частотой дискретизации" (обычно 44,1 кГц) и "битовой глубиной" (обычно 24 или 32 бита с плавающей точкой), эта цифровая версия должна звучать практически идентично аналоговому входу. Частота дискретизации - это показатель того, сколько выборок в секунду извлекается из аналогового сигнала для создания цифровой версии, а битовая глубина относится к разрешению цифрового звука, т.е. количеству информации, содержащейся в каждом образце.
Деформация при движении
Если я хотел, чтобы паттерн дизеринга отслеживал движение геометрии под ним, то почему бы просто не деформировать паттерн на основании изменения позиции каждого отрендеренного пикселся в сцене? Действительно, почему бы не попробовать. Это немного похоже на motion blur, при котором каждый пиксель отслеживает своё движение относительно предыдущего кадра. В этом случае я обновляю текстуру дизеринга, чтобы её паттерн двигался вместе со сценой. Если пиксель сцены не присутствовал на предыдущем кадре, то в нём паттерн дизеринга перезагружается. Реализацию этой техники очень облегчила статичность игры — мне нужно было беспокоиться о движении камеры, а не отдельных объектов.
Это была довольно «быстрая и грязная» попытка, но стали очевидны некоторые факты. Во-первых, это в чём-то работает. Во-вторых, паттерну дизеринга нужно учитывать соседей — он не может быть просто отдельными пикселями. Если рассматривать каждый пиксель отдельно, как делается в этом способе, то очевидно, что мы получим разрывы и искажения в паттерне. В этой тестовой сцене я сдвинул камеру, чтобы показать это на примере сундука. Посмотрев на сам искажённый паттерн дизеринга, легче это заметить.
Эти разрывы возникают из-за разной глубины пикселей и выбранных порогов. Я подумывал о сложной системе исправления проблемы на основе отслеживания областей, усреднения их глубины и смещения всех точек паттерна дизеринга в каждой области на одинаковое значение. Разрывы вдоль границ областей можно скрыть резкой сменой освещения или каркасной линией. Это не получилось бы реализовать из-за того, что игра использовала для генерации каркасов моделей цветные области. Когда я приступил к реализации всего этого, то сначала упустил в уравнении глубину, что дало мне гораздо более простую альтернативу:
Как использовался дизеринг в прошлом
При более раннем использовании в газетах, комиксах и других печатных СМИ к изображениям применялось сглаживание для создания уровней имитации серой шкалы путем стратегического размещения черных точек. Использование процесса сглаживания даст гладкое изображение с серыми оттенками, даже если печатные машины поддерживают только черные чернила. Комиксы и другая цветная печать работали аналогично, но имитировали больше оттенков цвета, чем печатные машины с ограниченной палитрой. Ниже приведен пример того, как печатные машины обрабатывают высококачественные изображения в размытое изображение. Обратите внимание, что вы по-прежнему можете видеть различные цвета и тени, но изображение гораздо более пиксельное.
В последнее время дизеринг стал популярным в веб-графике. Несмотря на то, что большая часть населения имеет доступ к высокоскоростному Интернету, все еще остается скромный процент пользователей Интернета, которые зависят от коммутируемого доступа. Использование сглаживания в обработке изображений не только уменьшает полосу цветов и затенение, что создает более гладкое законченное изображение, но также уменьшает размер файла. Первое изображение является полосатым изображением. Вы можете ясно видеть переходы в цвете.
Второе изображение представляет собой плавный градиент, в котором применено сглаживание. Полоски больше не видны и создают более плавное изображение.
Одним из ключевых применений для сглаживания было предотвращение появления полос любого цвета или градиента оттенка. Смешивая оттенки из ограниченной палитры для имитации исходного цвета, вы уменьшаете файл, создавая файл, который может быстрее загружаться на ваш экран и \ или компьютер. GIF-файлы являются отличным примером сглаживания изображений. Меньшие файлы требуют меньшей пропускной способности, что обеспечивает более быструю передачу. В первые дни Интернета дизеринг был лучшим другом веб-дизайнера. Они могли бы создавать более визуально привлекательные веб-сайты, в то же время поддерживая более медленные соединения для передачи данных.
История дизеринга
Квантование сигнала
При квантовании сигнала амплитуда каждого отсчета округляется до ближайшего значения разрядной сетки (рис. 1). Нетрудно видеть, что для звуков малой амплитуды это может приводить к значительному искажению формы сигнала (рис. 2). Такой простейший способ квантования называется усечение (truncate, транкейт) либо округление (rounding).
Разница между исходным и квантованным сигналом называется ошибкой квантования или шумом квантования. Для сигналов малой амплитуды ошибка квантования сильно коррелирует с сигналом, что приводит к нелинейным искажениям и грязному звучанию (в этом смысле, термин «шум квантования» не очень удачен, так как ошибка квантования не похожа на шум). При 16-битном квантовании мощность ошибки квантования составляет приблизительно −98 дБ RMS (за 0 дБ RMS принимается мощность синусоиды максимального уровня, согласно стандарту AES-17).
Можете ли вы услышать разницу между 16-битным и 24-битным звуком?
Unless you have a well-trained ear or are listening to a highly dynamic piece of music on high-quality speakers, you won't likely notice any difference between 24-bit and 16-bit audio.
В каких случаях следует выполнять дизеринг звука?
Всегда используйте dither при экспорте, сведении или мастеринге аудио. Другими словами, используйте dither при снижении битовой глубины дорожки.
Различные типы дизеринга
Как будто концепция дизеринга сама по себе была недостаточно сложной для понимания, в вашем распоряжении есть несколько видов дизеринга. К лучшему или худшему, между этими видами дизеринга нет существенных различий - во всяком случае, заметных для обычного уха. Тем не менее, каждый тип дизеринга добавляет к звуку различные виды низкоуровневого шума в зависимости от его текущего динамического диапазона. Некоторые типы дизеринга даже имеют функцию формирования шума, при которой определенные частоты ослабляются или усиливаются на кривой эквализации (EQ).
Эта первая категория дизеринга, предлагаемая Logic Pro, не обеспечивает формирование шума и лучше всего подходит для миксов с низким динамическим диапазоном.
Понижение разрядности
Квантование сигнала происходит не только при оцифровке звука в АЦП, но и при последующей работе с цифровым сигналом: обработке, преобразовании формата, изменении уровня. Когда сигнал определенной разрядности (например, 16 бит) подвергается пересчету, его разрядность автоматически увеличивается (например, до 32 бит). Далее, если сигнал необходимо записать в файл исходного формата (16 бит), то происходит повторное квантование: из 32 бит в 16. При этом квантовании возможны те же искажения, что и в АЦП. Поэтому процесс дитеринга должен быть встроен в любые программы и алгоритмы, обрабатывающие сигнал.
Чтобы минимизировать эффект от операций повторного квантования, обработка сигнала часто происходит в повышенной разрядности (24 или 32 бита), а окончательное снижение разрядности (до 16 бит) применяется после всех остальных операций.
Понижение разрядности сигнала используется также в звуковых ЦАП: большинство из них имеют небольшую разрядность (1–5 бит), но высокую частоту дискретизации (порядка 10 МГц). При этом ЦАП заявляется как 24-битный, в том смысле, что он принимает на вход 24-битный аудиосигнал. Но внутри сигнал подвергается передискретизации (oversampling) — повышению частоты дискретизации и понижению разрядности с нойз-шейпингом. Поскольку финальная частота дискретизации очень высока, то в ультразвуковом диапазоне (выше 20 кГц) присутствует много места для шума нойз-шейпинга. Поэтому даже при малой разрядности сигнала (1–5 бит) агрессивный нойз-шейпинг способен создать динамический диапазон порядка 120 дБ в слышимой области частот.
На рис. 5 показано сравнение типичных спектров шума нескольких звуковых форматов высокого разрешения: CD-формата (PCM 16 бит, 44 кГц) со стандартным TPDF-дитерингом, формата «24 бита 96 кГц» и двух форматов DSD с различными частотами дискретизации. Поскольку DSD-форматы имеют разрядность 1 бит, в них присутствует значительный нойз-шейпинг. У формата «DSD-2.8 МГц» быстрый подъем мощности шума начинается сразу за 20 кГц. У формата «DSD-5.6 МГц» шум лежит вдвое выше (уже за пределами графика на рис. 5).
Имеет ли значение дизеринг?
Да, особенно если ваша песня имеет высокий динамический диапазон. Правильное дизеринг аудио при уменьшении его битовой глубины позволит уменьшить искажения квантования, сохранив или улучшив динамику.
Квантование изображений
Похожие алгоритмы квантования используются и в обработке изображений, когда надо представить цвет малым числом доступных градаций. Проиллюстрируем это на примере 4-битного квантования (16 градаций яркости).
Эффект от простого квантования цветов называется постеризацией: на изображении появляются ложные контуры, а часть деталей исчезает (рис. 6). Постеризации можно избежать, добавив перед квантованием шум дитеринга. Однако более качественного результата достигает алгоритм диффузии ошибки. Аналогично нойз-шейпингу, он вытесняет ошибку квантования в область верхних частот, где чувствительность глаза невысока. Диффузия ошибки часто применяется в офсетной печати для смешивания цветов.
Должен ли я делать допинг для Soundcloud?
Поскольку Soundcloud воспроизводит треки в 16 битах (и 48 кГц), обычно целесообразно сделать дитеринг перед загрузкой трека. Обратите внимание, что Soundcloud оптимизирует все аудио для потоковой передачи, а также предлагает пользователям инструмент алгоритмического мастеринга. Подробнее о рекомендациях Soundcloud по загрузке вы можете прочитать здесь .
Что такое дитеринг?
У дизеринга есть много глубин, поэтому мы начнем с простого определения. Дизеринг - это шум . Если пойти немного дальше, то дизеринг - это особая форма искажения.
Более конкретно, дизеринг - это процесс, в котором небольшое количество шума (т.е. белого шума) объединяется с существующим аудио (или изображением/видео) сигналом, чтобы помочь сохранить его общее качество при снижении разрешения.
Посмотрите этот видеоролик от Rowntree Audio для быстрой и простой демонстрации процесса дизеринга:
На первый взгляд, это может показаться ненужным и даже нелогичным. В конце концов, если ваша цель - выложить музыку самого высокого качества, зачем вообще добавлять шум или понижать дискретизацию? И как добавление шума к сигналу поможет ему звучать лучше или динамичнее?
Чтобы понять ответы на эти вопросы, необходимо сначала разобраться в том, как работает цифровое аудио.
Введение
Преобразование звукового сигнала из аналоговой в цифровую форму можно представить в виде двух этапов: дискретизации по времени и квантования по амплитуде. На первом этапе (дискретизация) мгновенные значения сигнала замеряются с некоторым шагом по времени. На втором этапе (квантование) каждое из измеренных значений сигнала представляется в виде числа с некоторой точностью — разрядностью квантования.
На заре цифровой звукозаписи бытовало представление о разрушительном действии оцифровки на звуковой сигнал. И даже сейчас можно услышать мнение, что искажения в цифровом звуке зависят от уровня сигнала. В этой статье мы рассмотрим, как возникают искажения квантования и как их можно предотвратить.
Дитеринг
К счастью, существует метод сделать ошибку квантования практически не зависимой от исходного сигнала. Он называется английским словом дитеринг (dithering, в русской транскрипции также встречается «дизеринг») и заключается в подмешивании к сигналу шума перед квантованием (рис. 3).
Амплитуда шума дитеринга выбирается особым образом, чтобы устранить нелинейные искажения при последующем квантовании. Если амплитуда дитеринга мала, то нелинейные искажения будут устранены не полностью, либо амплитуда ошибки квантования будет меняться вместе с сигналом. Если амплитуда дитеринга велика, то шум станет заметным в записи.
Наиболее распространенным типом дитеринга является стандартный TPDF-дитеринг — белый шум с пиковой амплитудой ±1 LSB (least significant bit — шаг квантования) и треугольным распределением вероятности амплитуд. Почти любая цифровая рабочая станция (DAW) умеет генерировать дитеринг такого типа.
Важным моментом в применении дитеринга является его добавление к сигналу до, а не после квантования. Неправильно понимать дитеринг как шум, скрывающий или маскирующий искажения квантования. На самом деле дитеринг предотвращает появление искажений. Попытка замаскировать уже возникшие искажения потребовала бы шума значительно большей амплитуды.
Продемонстрируем работу дитеринга на тестовом сигнале «плавающий синус» с уровнем −80 дБ и плавным затуханием в конце (рис. 4). Для лучшей слышимости искажений сигнал после квантования в 16 бит был усилен на 55 дБ. Будем изучать как форму волны, так и спектрограмму.
наведите мышь
для смены картинки
На спектрограмме сигнала, квантованного без дитеринга, видны сильные нелинейные искажения, усиливающиеся при уменьшении уровня сигнала. В конце записи сигнал полностью исчезает, так как его амплитуда становится меньше половины шага квантования.
Спектрограмма с дитерингом показывает, что после квантования искажений в сигнале не появилось, а добавившийся шум однороден. Однако его мощность превышает мощность искажений при транкейте (−98 дБ) и составляет −93 дБ.
Когда использовать дизеринг
Итак, когда следует добавлять дизеринг в аудио? Основное правило заключается в том, что при понижении дискретизации аудио (часто на этапе мастеринга или экспорта) всегда следует использовать дизеринг. Другими словами, используйте дизеринг всякий раз, когда в аудио появляются искажения квантования (а они появляются при изменении битовой глубины с большей на меньшую).
As a general rule, exporting and mastering audio almost always calls for dithering, whether your DAW does it for you automatically or you handle it manually. In most cases, mastering involves squashing a 32-bit float or 24-bit audio file into a depth of 16-bits, so adding dither is called for here.
Дизеринг почти всегда следует выполнять во время прыжков или экспорта, или использовать в качестве последнего эффекта в цепи сигнала (некоторые лимитеры имеют собственную функцию дизеринга).
Дизеринг: Прояснение искаженной концепции
Что бы произошло при преобразовании цифрового звука из более высокого разрешения в более низкое без применения дизеринга? Как вы можете себе представить, те блочные числа (те, которые представляют входящий сигнал), о которых мы упоминали ранее, стали бы скомканными и еще более блочными, превратив то, что раньше напоминало непрерывную волну, в нечто, больше похожее на лестницу. Этот процесс называется усечением и приводит к тому, что известно как ошибка квантования, искажение квантования или шум квантования.
Если вы знакомы с формами волн и тем, как звучат различные конфигурации в зависимости от внешнего вида, вы знаете, что эта ступенчатая форма звучит искаженно. Точнее говоря, пониженное дискретизированное аудио, не подвергнутое дитерингу, дает гармоники, которые коррелируют с исходным аудиосигналом и прорезают человеческое ухо довольно громко (гармоническое искажение).
Конечно, меньше всего вам хочется, чтобы непреднамеренные шумовые искажения распространялись по всему вашему первозданному аудио. Когда вы добавляете низкоуровневый шум в аудио перед процессом квантования, эти гармонические искажения, по сути, скремблируются и значительно теряют свое присутствие.
Ultimately, dithering allows your mix to maintain its dynamic range and original overall sound when getting docked to a lower resolution.
Итоги по дитерингу
Дизеринг - это одна из тех концепций/инструментов, которая звучит сложнее, чем есть на самом деле. В конечном итоге, дизеринг - это некий тип низкоуровневого шума, который вы можете добавить к вашему аудио, чтобы уменьшить искажения квантования при уменьшении его битовой глубины. Перед передачей трека в eMastered для мастеринга мы рекомендуем вам экспортировать аудио в максимально возможном формате как по битовой глубине, так и по частоте дискретизации (т.е. 32 бита, 48 кГц). После этого мы применим дизеринг к вашему аудио при необходимости.
Мы создали специальную тему в конференции, где собрали вопросы по теме "Дизеринг и нойз-шейпинг". Любой желающий мог задать свой вопрос Алексею Лукину, известному эксперту по цифровой обработке сигналов, разработчику алгоритмов компании iZotope (США). К вопросам читателей мы добавили и несколько редакционных. Благодарим читателей за активное участие!
Дизеринг полагается на случайные колебания
Если концепция дизеринга все еще не совсем ясна, помните, что все дело в рандомизации. Шум, который добавляет дизеринг к вашему аудио, является случайным и некоррелированным (вспомните "шипящий" звук, издаваемый белым шумом). В результате, те громкие коррелированные искажения, которые возникают при уменьшении битовой глубины аудио, не могут пробиться наружу.
Эта концепция добавления случайного шума к чему-либо возникает и при обработке изображений. Представьте, что вы смотрите на четкое изображение на телевизоре высокой четкости. Затем представьте себе просмотр того же изображения на старом телевизоре с гораздо меньшим разрешением. Много данных будет потеряно в этом процессе, создавая пикселированное изображение, изобилующее цветовой полосой (которая возникает, когда информация о цвете представлена неточно).
Этот переход от высокой четкости к низкой четкости может быть сглажен с помощью дизеринга. Вместо того чтобы непосредственно втискивать изображение в меньшее пространство, информация изображения сначала скремблируется, уменьшая глубину цвета. В итоге уменьшенное изображение сохраняет свою относительную форму, цвет и структуру.
Приведенный ниже рисунок даст вам лучшее понимание того, как работает дизеринг на изображениях.
Слева вы видите исходное изображение со всеми его плавными кривыми и градиентами. Среднее изображение показывает, что происходит, когда источник усекается до меньшего разрешения без добавления шумоподавителя - вы можете видеть значительную пикселизацию и цветовые полосы. Наконец, правое изображение представляет собой изображение с тем же разрешением, что и средняя версия, но с добавлением шума перед понижением дискретизации. Несмотря на меньшее разрешение, это конечное изображение лучше передает исходный источник как по форме, так и по цвету.
Ты слышишь, что происходит?
If you dither your audio properly, you won't hear the low level noise at all, especially in context. Of course, it's possible to hear dither if you were to apply it to a silent audio file and boost the volume significantly. Dither will sound like some variation of white noise (a soft, consistent, hiss).
Дискретизация дизерингом постоянного сигнала
Мы начнём с анализа самого скучного в мире сигнала — постоянного сигнала. Если вы знаете немного о цифровой обработке сигналов, связанных со звуком, то можете сказать: но ты же обещал рассмотреть аудио, а в звуке по определению нет постоянной составляющей! (Более того, и в ПО, и в оборудовании обработки звука намеренно устраняется так называемый сдвиг постоянной составляющей (DC offset).)
Это правда, и вскоре мы рассмотрим более сложные функции, но начнём мы сначала.
Представьте, что мы выполняем 1-битную дискретизацию нормализованного сигнала с плавающей запятой. Это значит, что мы имеем дело только с конечными двоичными значениями, 0 или 1.
Если сигнал равен 0,3, то простое округление без дизеринга будет самой скучной функцией — просто нулём!
Погрешность тоже постоянна и равна 0,3, следовательно, и средняя погрешность равна 0,3. Это означает, что мы внесли довольно большое отклонение в сигнал и полностью потеряли информацию исходного сигнала.
Мы можем попробовать выполнить дизеринг этого сигнала и посмотреть на результаты.
Дизеринг в этом случае (при использовании функции округления) просто применяет обычный случайный белый шум (случайное значение для каждого элемента, что создаёт равномерный спектр шума) и прибавляет в сигнал перед дискретизацией случайное в интервале (-0.5, 0.5).
Здесь сложно что-то увидеть, теперь результат дискретизации — это просто набор случайных единиц и нулей. С (ожидаемо) большим количеством нулей. Сам по себе этот сигнал не особо интересен, однако довольно интересен график погрешностей и средняя погрешность.
Итак, как мы и ожидали, погрешность тоже варьируется, но пугает то, что погрешность иногда стала больше (абсолютное значение 0,7)! То есть максимальная погрешность к сожалению стала хуже, однако средний шум имеет значение:
Намного лучше, чем первоначальная погрешность в 0,3. При значительно большом количестве сэмплов эта погрешность будет стремиться к нулю (к пределу). Итак, погрешность постоянной составляющей стала намного меньше, но давайте взглянем на частотный график всех погрешностей.
Красный график/всплеск = частотный спектр погрешности при отсутствии дизеринга (постоянный сигнал без частот). Чёрный — с дизерингом при помощи белого шума.
Всё становится интереснее! Это демонстрирует первый вывод из этого поста — дизеринг распределяет погрешность/отклонение дискретизации среди множества частот.
В следующем разделе мы узнаем, как это нам поможет.
Предпочтителен ли синий шумоподавитель?
Сглаживание синего шума полезно для сохранения достоверности изображения при снижении его разрешения на значительно низких частотах дискретизации. В Proceedings of the IEEE есть всестороннее исследование этого явления.
Дизеринг в фотошопе
Другое широко распространенное использование сглаживания при обработке изображений – художественное. Такие программы, как Photoshop, позволяют фотографам и художникам-графики добавлять захватывающие нюансы к своим изображениям. Применяя различные Шаблоны наложения к изображениям, вы можете создавать забавные и уникальные изображения. Вы даже можете заменить цвета для сглаживания, изменив палитру в Цвет заливки . Типичное применение – преобразовать черно-белую фотографию в фотографию с оттенками размытия и сепии, как показано ниже:
Вот оригинальное черно-белое фото. В то время как хорошая фотография, добавив некоторые текстуры и цветовые заливки, Photoshop может преобразовать это изображение в художественно размытое изображение, как показано ниже:
Наложение рисунка из бумаги Pastel Paper с заливкой цветом имитируемого оттенка сепии в Photoshop резко меняет внешний вид фотографии.
В Photoshop, применяя различные Шаблоны наложения , вы можете получить различные художественные выражения. Дизеринг – это не только экономия пространства, но и авантюрный способ выразить свой внутренний Пикассо
Блокнот Mathematica для воспроизведения результатов можно найти здесь, а pdf-версия находится здесь.
Когда не следует использовать дизеринг
Однако то, что дизеринг является стандартной практикой в цифровом аудиопроизводстве, не означает, что он всегда необходим. Например, если вы готовите трек к мастерингу с помощью мастеринг-инженера или eMastered, вам не следует делать дизеринг, поскольку это будет сделано за вас (как уже упоминалось выше, дизеринг обычно используется в процессе мастеринга).
Вы также можете обойтись без дизеринга, если экспортируете аудио с высоким разрешением (т.е. 32-битным). И воздержитесь от дизеринга при конвертировании аудио в такие форматы, как AAC или .mp3 , поскольку эти процессы сжимают звук сами по себе.
Иногда можно обойтись без дизеринга, даже если он не требуется. В некоторых случаях добавленный шум не будет достаточно слышен, чтобы изменить что-либо в вашем аудио. В худшем случае, однако, ваша дорожка может получить заметное шипение, которое никто не хочет слышать. Чтобы обезопасить себя, следуйте вышеупомянутому правилу: используйте дизеринг только для сокрытия искажений квантования (т.е. при экспорте аудио из более высокой битовой глубины в более низкую).
Дискретизация синусоиды
Если мы дискретизируем синусоиду 1-битной дискретизацией, то получим простой прямоугольный сигнал.
Прямоугольный сигнал довольно интересен, потому что включает в себя и базовую частоту, и нечётные гармоники.
Это интересное свойство, которое активно используется в аналоговых субтрактивных синтезаторах для создания звучания полых/медных инструментов. Субтрактивный синтез берёт сложный, гармонически богатый звук и фильтрует его, устраняя некоторые частоты (параметры фильтра варьируются со временем), чтобы придать звукам нужную форму.
Спектр частот прямоугольного сигнала:
Но в этом посте нас больше интересую погрешности дискретизации! Давайте создадим график погрешности, а также спектр частот погрешности:
В этом случае ситуация гораздо лучше — средняя погрешность близка к нулю! К сожалению, у нас по-прежнему присутствует множество нежелательных низких частот, очень близких к нашей основной частоте (нечётных множителей с уменьшающейся величиной). Это явление называется алиасингом или шумом дизеринта — возникают частоты, отсутствовавшие в исходном сигнале, и они имеют довольно большие величины.
Даже низкочастотная фильтрация не сможет значительно помочь сигналу. Погрешность имеет очень много низких частот:
Дискретизированная синусоида с низкочастотной фильтрацией
Погрешность дискретизированной синусоиды с низкочастотной фильтрацией
Давайте взглянем, как меняется ситуация при добавлении дизеринга. На первый взгляд, улучшений почти нет:
Однако если мы рассмотрим это как изображение, то оно начинает выглядеть лучше:
Заметьте, что погрешности дискретизации снова распределены среди различных частот:
Выглядит очень многообещающе! Особенно учитывая то, что теперь мы можем попробовать выполнить фильтрацию:
Это немного искажённая синусоида, но она выглядит намного ближе к исходной, чем версия без дизеринга, за исключением фазового сдвига, внесённого асимметричным фильтром (я не буду объяснять этого здесь; скажу только, что проблему можно устранить, применив симметричные фильтры):
Красный — исходная синусоида. Зелёный — подвергнутый низкочастотной фильтрации сигнал без дизеринга. Синий — подвергнутый низкочастотной фильтрации сигнал с дизерингом.
Графики обеих погрешностей численно подтверждают, что погрешность намного меньше:
Красный — погрешность подвергнутого низкочастотной фильтрации сигнала без дизеринга. Синий — погрешность подвергнутого низкочастотной фильтрации сигнала с дизерингом.
Наконец, давайте вкратце рассмотрим сигнал с более качественной функцией дизеринга, содержащей только высокие частоты:
Верхнее изображение — функция белого шума. Нижнее изображение — функция, содержащая более высокие частоты.
Версия с низкочастотной фильтрацией, дизерингом и улучшенной функцией — почти идеальные результаты, если не учитывать фазовый сдвиг, вызванный фильтром!
И наконец, сравнение всех трёх спектров погрешностей:
Красный — спектр погрешности дискретизации без дизеринга. Чёрный — спектр погрешности дискретизации с дизерингом белым шумом. Синий — спектр погрешности дискретизации с дизерингом с более высокими частотами.
Преобразование исходного изображения по шаблону дизеринга
Двумя компонентами этого процесса являются исходное изображение и паттерн дизеринга. В различных случаях Obra Dinn использует два отличающихся паттерна: матрица Байера 8x8 для более плавного диапазона оттенков и поле синего шума 128x128 для менее упорядоченного вывода.
Результат внутри движка без каркасных линий. Байер на сфере, синий шум на всём остальном.
Классический процесс дизеринга отлично работает для статичных изображений и гораздо хуже выглядит на движущихся и анимированных изображениях. Когда исходное изображение покадрово изменяется, то серьёзной проблемой становится статичный паттерн дизеринга и вывод в низком разрешении. То, что должно быть сплошными формами и оттенками, превращается в мерцающий хаос пикселей.
Сегодня дизеринг в основном используется для статичных исходных изображений или при высоком разрешении выходных данных. Первое, что думаешь, глядя на этот плавающий эффект дизеринга, это не «да, именно так работает дизеринг», а «что это за дёргающийся эффект и как мне его отключить».
Что такое дизеринг?
Дизеринг (Dithering) можно описать как намеренное/осознанное внесение в сигнал шума для предотвращения ошибок большого масштаба/низкого разрешения, возникающих вследствие дискретизации или субдискретизации.
Если вы когда-нибудь работали с:
- Аудиосигналами,
- Палитровыми форматами изображений 90-х
Однако я обнаружил в Википедии довольно удивительный факт о том, как впервые был определён и использован дизеринг:
…Одна из первых областей применения дизеринга возникла во время Второй мировой войны. Самолёты-бомбардировщики для навигации и вычислений траектории бомб использовали механические компьютеры. Любопытно, что эти компьютеры (ящики, заполненные сотнями шестерёнок и зубчатых передач) работали точнее при полёте на борту самолёта, чем на земле. Инженеры поняли, что вызываемая самолётом вибрация снижает ошибку, вызываемую липкими подвижными деталями. На земле они двигались короткими отрывистыми движениями, а в воздухе их движение было более непрерывным. В компьютеры встроили небольшие вибромоторчики, и их вибрацию назвали «дизером» (dither), от среднеанглийского слова «didderen», означающего «дрожать». Сегодня, когда вы стучите по механическому измерителю, чтобы повысить его точность, вы применяете dither. При использовании в небольших количествах dither успешно превращает систему оцифровки в более аналоговую, в хорошем смысле этого слова.
— Кен Полманн, Principles of Digital Audio
Это вдохновляющий и интересный исторический факт и мне понятно, почему он позволяет избегать отклонений в вычислениях и резонансах, случайным образом разрушая циклы обратной связи механической вибрации.
Но хватит истории, давайте для начала рассмотрим процесс дизеринга в 1D-сигналах, например, в аудио.
Дизеринг в печати
Уменьшение сигналов в размерах
Если бы в нашем распоряжении была неограниченная вычислительная мощность, то теоретически мы могли бы записывать, экспортировать и прослушивать цифровой аудиофайл с бесконечно высоким разрешением. Конечно, это не так. Чтобы доставить запись из точки А в точку Б, мы должны пойти на некоторые уступки. Это вопрос того, что можно сделать - в то время как в большинстве DAW вы будете записывать с глубиной 24 или 32 бита (или выше), большинство устройств и форматов воспроизведения аудио работают только с 16-битным разрешением (Spotify и Apple Music, например, передают 16-битное аудио с частотой дискретизации 44,1 кГц).
Если вы хотите, чтобы ваша музыка была максимально доступной, вы должны уменьшить свои высококачественные записи, чтобы они соответствовали этим различным форматам. Таким образом, при экспорте аудиофайлов вы должны понизить дискретизацию (т.е. уменьшить битовую глубину). В то же время, при уменьшении битовой глубины не следует удалять нюансы и динамику звука.
Именно здесь вступает в игру сила dither.
Частотная чувствительность и низкочастотная фильтрация
Выше мы наблюдали за дизерингом дискретизированного постоянного сигнала:
- Он увеличил максимальную погрешность.
- Почти обнулил среднюю погрешность.
- Добавил к спектру частот погрешностей постоянный белый шум (с полным покрытием спектра), снизив низкочастотную погрешность.
- Наше зрение имеет предел остроты. У многих людей есть близорукость и без очков они видят размытые изображения далёких объектов.
- Мы воспринимаем средний масштаб деталей гораздо лучше, чем очень высокие или очень низкие частоты (мелкие детали очень плавных градиентов могут быть незаметными).
- Наш слух работает в определённом диапазоне частот (20 Гц — 20 кГц, но со временем ухудшается) и наиболее чувствительны мы к среднему диапазону — 2 кГц — 5 кГц.
Более того, наши медиаустройства становятся всё лучше и лучше, обеспечивая большую избыточную дискретизацию (oversampling). Например, в случае телевизоров и мониторов у нас есть технология «retina» и 4K-дисплеи (на которых невозможно разглядеть отдельный пиксель), в области звука мы используем форматы файлов с дискретизацией не менее 44 кГц даже для дешёвых динамиков, которые часто не могут воспроизводить больше, чем 5-10 кГц.
Это значит, что мы можем аппроксимировать воспринимаемый внешний вид сигнала, выполнив его низкочастотную фильтрацию. На графике я выполнил низкочастотную фильтрацию (заполнение нулями слева — это «нарастание»):
Красный — желаемый недискретизированный сигнал. Зелёный — дискретизированный сигнал с дизерингом. Синий — низкочастотный фильтр этого сигнала.
Сигнал начинает выглядеть гораздо более близким к исходной, недискретизированной функции!
Это возможно, потому что наша псевдослучайная последовательность имеет следующий спектр частот:
Но давайте закончим рассматривать простые, постоянные функции. Взглянем на синусоиду (если вы знакомы с теоремой Фурье, то знаете, что она является строительным блоком любого периодического сигнала!).
Другие виды дизеринга
When exploring other DAWs and limiter/noise shaping plugins, you might come across terms like "none," "moderate," and "ultra." These words refer to the amount of dither applied to a given signal. Generally speaking, the noise shaping offered by different types of dither clamp down on the signal's lower frequency content (2kHz area) and amplifies its higher frequencies.
Пространство мира — сферическое наложение
… но благодаря сфере я подобрался достаточно близко.
Наложение паттерна дизеринга на внутренность сферы
Поиск этого конкретного сферического наложения потребовал определённого времени. Не существует способов идеального замощения сферы квадратной текстурой. Можно было бы переопределить матрицы дизеринга через сетку шестиугольников или чего-то подобного, что хорошо замощает сферу. Возможно, получилось бы, но я не пробовал. Вместо этого я «взломал» замощение сферы, добившись тщательной настройкой того, чтобы «кольцевое» наложение исходного паттерна дизеринга давало хорошие результаты.
Сферически наложенный паттерн дизеринга при увеличении 2x и со сниженным до 1x разрешением
Это пока самый лучший из полученных мной результатов. Тут есть несколько компромиссов:
- Точки паттерна дизеринга становятся больше в размерах и менее эффективными по краям экрана
- Паттерн не выравнен по направлениям «верх-низ-лево-право» для большинства поворотов камеры
- Выходные данные больше не являются 1-битными из-за конечного снижения разрешения
- Дизеринг отлично прикрепляется ко всем поворотам камеры. В игре это ощущается немного странно.
- Дискомфорт от плавающего дизеринга совершенно пропал, даже в полноэкранном режиме.
- Сохраняется пикселизированный стиль игры
Какой шум полезен для дизеринга?
Белый, коричневый и розовый шум могут быть полезны для дизеринга. Все они представляют собой разновидности "шипящего" звука, который вы можете узнать при настройке радиоприемника. Белый шум распределен по частотному спектру, коричневый шум находится на нижнем конце, а розовый шум находится где-то между ними.
Нойз-шейпинг
Повышенная мощность ошибки квантования при дитеринге порождает вопрос: можно ли проводить дитеринг не белым шумом, а таким, который будет менее заметен? Например, высокочастотным шумом. К сожалению, напрямую этот метод не работает. Если вместо белого шума дитеринга подмешать окрашенный шум, то ошибка квантования все равно будет близка к белому шуму. Кроме того, существует опасность неполного подавления нелинейных искажений квантования.
Чтобы придать спектру ошибки квантования нужную форму, существует более сложный метод, называемый нойз-шейпингом (noise shaping, формирование спектра шума). В этом методе присутствует обратная связь: разница между квантованным и исходным сигналами пропускается через фильтр и прибавляется к следующему отсчету сигнала (рис. 5).
Варьируя частотную характеристику фильтра, можно добиться нужного спектра ошибки квантования. Наиболее часто ошибку квантования вытесняют в диапазон высоких частот и ультразвука, где она будет наименее слышна. В слышимом диапазоне частот спектр нойз-шейпинга обычно приблизительно повторяет кривую порога слышимости.
При нойз-шейпинге общая мощность ошибки квантования возрастает (по сравнению с дитерингом), но ее субъективная громкость снижается (рис. 4). Чем сильнее требуется снизить мощность шума в слышимой полосе (нижние и средние частоты), тем больше шума появляется в области верхних частот. Слишком большая мощность верхних частот в аудиосигнале нежелательна: она может затруднить последующую обработку сигнала, его кодирование в mp3, восстановление царапин при ошибках чтения с CD. Поэтому при 16-битном квантовании принято использовать нойз-шейпинг, не превышающий по уровню −60 дБ. Снижение субъективной слышимости шума при этом достигает 10–15 дБ по сравнению со стандартным TPDF-дитерингом.
Обратите внимание, что файл с нойз-шейпингом звучит чисто. Так же, как при дитеринге, ошибка квантования представляет собой ровный шум без нелинейных искажений, не зависящий от сигнала.
Стабилизируем дизеринг
Чтобы дать глазам возможность наилучшим образом всё рекомбинировать, дизеринг оптимальнее всего использовать с точками паттерна дизеринга, имеющими корреляцию 1:1 с выходными пикселями. Но если будет присутствовать корреляция «только» с выходными данными, то при применении постэффектов сцены не будет никакой связи между отрендеренной геометрией и пороговым паттерном. В каждом кадре у движущихся элементов сцены будет новое пороговое значение. Вместо этого я хочу, чтобы паттерн дизеринга был «приклеен» к геометрии и казался стабильным при движении вместе с остальной сценой.
Здесь возникает проблема наложения. Существует конфликт между «идеальным» наложением паттерна дизеринга (1:1 с экраном) и идеальным наложением на сцену (x:1 с геометрией), так что нужно быть готовым идти на компромиссы. БОльшая часть моей работы посвящена наложению входного паттерна дизеринга на различные пространства, которое обеспечивает наилучшее совпадение паттерна с геометрией сцены. Здесь всё выполняется на этапе до задания порогов.
Подводим итог
Кажется немного странным потратить 100 часов на то, отсутствия чего даже не заметят. Никто точно не подумает «блин, да этот дизеринг адски стабилен, это какая-то магия». Но я не хотел, чтобы у людей возникали проблемы, которые должны были бы возникнуть, так что их стоило устранить.
Наложение в экранном пространстве со смещением работает лучше всего при масштабе 1x, а сферическое наложение — при 2x. Вся сцена сейчас рендерится в разрешении 800x450 (поднял разрешение с 640x360), что повышает разборчивость, при этом не требуется жертвовать стилем low-res. В готовой игре будет два режима отображения:
ЦИФРОВОЙ — дизеринг в пространстве экрана со смещением, 1-битный вывод.
АНАЛОГОВЫЙ — полноэкранный наложенный на сферу дизеринг, сглаженный вывод.
Когда вы только начинаете заниматься аудиопроизводством, вы встретите несколько иностранных слов и фраз, которые либо пролетят мимо вашего внимания, либо оставят вас в недоумении: глубина бита, аттенюация, сайдчейн и т.д. (лексикон кажется бесконечным). (лексикон, кажется, бесконечен). Возможно, одним из самых распространенных примеров этого является термин "dithering". Независимо от того, встречалось ли вам это слово раньше, его значение не совсем понятно. И тем не менее, дизеринг - один из самых необходимых и полезных инструментов в арсенале микширования и мастеринга, поэтому нелишним будет ознакомиться с ним. Итак, что же такое дизеринг? Когда и зачем используется дизеринг? И каковы различные типы дизеринга для аудио?
Мы ответим на все эти и другие вопросы в этой статье и постараемся сделать концепцию дизеринга как можно более понятной.
Нужно ли использовать дизеринг при мастеринге?
Да. На самом деле, процесс мастеринга часто является лучшим моментом для использования дизеринга, поскольку он позволяет скрыть любые нежелательные искажения квантования до снижения битовой глубины звука. Таким образом, ваш трек будет готов к воспроизведению на различных платформах и устройствах.
Пространство текселов
Паттерн дизеринга в пространстве текселов
Ну, в целом ожидания себя оправдали. Наложение на все объекты выполнено по-разному, поэтому масштабы из паттернов не совпадают. Их можно унифицировать. Но настоящая проблема заключается в искажениях. Любой ресемплинг из одного пространства в другое приведёт к искажениям, а для паттернов дизеринга не так просто выполнить mip-текстурирование или фильтрацию, как для традиционных текстур. Однако доведём это до конца:
Всё не так плохо — паттерн неплохо привязан к геометрии. Искажение создаёт собственный плавающий эффект, а унифицирование или масштабирование наложения в этом ничем не поможет. Текселы меняют размер в зависимости от расстояния до камеры, поэтому всегда найдутся пиксели паттерна дизеринга, которые при ресемплинге на экране будут ужасно искажаться.
Читайте также: