Методика настройки шумопонижающих фильтров.
Предварительная качественная фильтрация шумов источника - один
из ключевых факторов достижения высокого качества изображения
на низких битрейтах. Каждый пиксель изображения сложным образом
зависит от значения соседних пикселей текущего и предыдущего кадров.
Современные алгоритмы компрессии пытаются различными способами
выявить эти закономерности и использовать их для достижения максимальной
степени сжатия.
Шумы источника добавляют к значению каждой точки изображения
абсолютно случайную, непредсказуемую величину, что оказывает губительное
действие на современные кодеки. Если битрейт сжатого видео достаточно
большой, часть шумовой составляющей сигнала может быть передана
вместе с полезными данными. При кодировании с очень высокими коэффициентами
сжатия для передачи шумов просто нет свободного места. В результате
шумы будут в любом случае отфильтровываться кодеком. К сожалению,
используемое в стандарте MPEG4 дискретное косинусное преобразование
(DCT), при фильтрации шумов дает очень неприятные артефакты в
виде квадратов на гладких участках изображения. Для борьбы с этим
явлением в DivX5 используется специальный фильтр, замыливающий
гладкие участки изображения, что в свою очередь может приводить
к появлению неприятных артефактов. Другим подходом к достижению
максимального качества является предварительная обработка изображения
с помощью шумопонижающих алгоритмов, не дающих сильных видимых
артефактов. Встроенные шумовые предфильтры имеются, например,
в WMV9 кодеке и в серии VP кодеков от On2, а также в некоторых
профессиональных MPEG2 кодеках.
Вот несколько важных правил, которыми нужно руководствоваться при настройке
шумопонижающих фильтров.
Практически на всех (даже очень качественных) источниках присутствует
небольшой шум, связанный с гранулярными шумами кинопленки. Исключение составляют
только трехмерные мультфильмы и подобные им источники, записанные на DVD,
минуя пленку.
-
Перефильтрация изображения более вредна, чем недофильтрация. Мелкие
статические детали на изображении (текстура) являются маскирующим фактором
для глаза. То есть наличие текстуры уменьшает заметность артефактов сжатия.
После определенного оптимального уровня фильтрации субъективное качество изображения
уменьшается, т.к. улучшение сжимаемости компенсируется большей заметностью
артефактов и общим отрицательным впечатлением от слишком замыленного изображения.
Самое интересное, что шумы сами являются маскирующим фактором для искажений
сжатия.
Наиболее эффективно применение шумопонижающих фильтров до изменения
размеров изображения. Если бы resize алгоритм использовал
идеальные фильтры, не было бы никакой разницы. Но в реальности при изменении
размеров происходит некоторая потеря важных для фильтрации данных. Конкретный
выигрыш от предварительной фильтрации изображения зависит от используемого
resize алгоритма. Чем проще алгоритм, тем больше выигрыш;
например, для билинейной фильтрации он максимален.
Амплитуда квадратов, появляющихся на гладких участках изображения
при кодировании NanDub-ом 2 со сверхнизким битрейтом,
приблизительно равняется амплитуде шумов источника. Поэтому для достижения
максимальных результатов необходимо тщательно фильтровать шумы.
При настройке шумодавов необходимо попытаться максимально сохранить
мелкие детали на изображении. Идеальная фильтрация - это когда сохраняются
все детали на изображении, а шумы полностью ликвидированы. К сожалению, она
недостижима, как и любой идеал :-).
Невозможно получить универсальные установки фильтрации для любого
источника. В каждом конкретном случае необходим индивидуальный подбор параметров
шумодава. Только так можно получить максимальное качество изображения.
Методику настройки шумопонижающего фильтра удобно показать на примере
фильтра “Smart Smoother High Quality”. Это один из самых лучших
пространственных (spatial) фильтров из имеющихся
для программы VirtualDub. Скачать его можно отсюда: http://sauron.mordor.net/dgraft/ .
У этого фильтра имеется очень качественно сделанный режим “Visualize Blur”,
существенно облегчающий настройку параметров фильтрации.
Запускаем NanDub2, открываем видеофайл и выбираем “Video->
Filters… ->Add..” в появившемся списке фильтров находим
“smart smoother HiQuality” и жмем “OK”.
В окне параметров фильтра устанавливаем следующие настройки:
Для начала необходимо установить минимальный порог фильтрации “Treshold”.
После установки предварительных параметров нажимаем “Show
preview” и устанавливаем ползунок предварительного просмотра
на типичный кадр фильма.
Выбрав понравившийся кадр, активируем опцию “Visualize
Blur”
В этом режиме белым выделяются участки изображения, где, по мнению фильтра,
отсутствуют значительные детали. И наоборот, чем темнее конкретный пиксель,
тем сильнее меняется изображение на данном участке.
Начинаем осторожно повышать параметр “Treshold”
так, чтобы вся изначальная структура изображения оставалась видимой,
но визуально гладкие участки исходной картинки сильно посветлели.
После этого начинаем повышать значение параметра “Maintain
Diffweight” пока темные участки отображающие шумы изображения
полностью не побелеют. При этом важно не перефильтровать мелкие
текстуры на изображении. Чтобы четко отличить шумы от текстур, бывает
полезно передвинуть позицию просмотра на пару кадров с помощью курсорных
клавиш на клавиатуре. Рисунок, формируемый шумами, будет хаотически
меняться от кадра к кадру в отличие от текстур изображения.
Теперь можно отключить режим “Visualize Blur”
и посмотреть на получившийся результат.
Визуальные отличия от исходной картинки практически отсутствуют, но для кодека
разница существенная. Обработанный таким образом источник будет существенно
лучше сжиматься.
В завершение настройки шумодава желательно проверить качество работы полученных
параметров фильтрации на различных по своей статистике участках исходника.
Например, обязательно стоит проверить очень темные и очень светлые участки
фильма и по необходимости соответственно подкорректировать установки шумодава.
Описанная методика хорошо работает при небольшой амплитуде шумов
источника. В более сложных случаях лучше не увеличивать параметр
“Diameter” отдельного фильтра, а использовать систему
из нескольких последовательных фильтров. Лучше всего использовать
фильтры, основанные на разных принципах, например, сочетать пространственные
(spatial) и временные (temporal) фильтры. Хорошие результаты получаются
при сочетании Convolution3D для Avisynth-а и Smart Smoother HiQ.
Сейчас существует огромное количество различных шумопонижающих фильтров
под Avisynth и VirtualDub, что дает неограниченную свободу для экспериментов.
Но в любом случае основной принцип должен быть один: максимум сохраненных
деталей и минимум оставшегося на изображении шума.
Neiromaster © 2003.06.14
Разрешается свободное распространение и перепечатка данной статьи, при
условии сохранения оригинального текста, имени автора и обязательной ссылки
на этот сайт.