|
<< К обзору информации Программа для оценки качества кодирования (PSNR Checker)
1. Основные этапы кодирования, на которых возникают искажения При цифровой компрессии видео изображений качество
получаемого при декодировании изображения напрямую зависит от степени сжатия.
В настоящее время для компрессии используются алгоритмы с потерями, позволяющие
(в отличие от алгоритмов без потерь) достигать больших степеней сжатия (до
20-100 раз). Подобные алгоритмы характеризуются потерями визуального качества
закодированного сигнала по сравнению с исходным. MPEG-2, MPEG-4, divX и
другие популярные кодеки являются именно такими алгоритмами с частичной потерей
информации. Потеря информации не является критической при слабом сжатии.
В противоположном случае, при очень большой степени сжатия, искажения становятся
заметными и зачастую неприемлемыми для зрительного восприятия.
Наиболее адекватным критерием оценки качества видеоизображения
является зрение человека. К сожалению, такой метод является в достаточной
степени субъективным.
Для количественной характеристики существуют различные
методы, среди которых наибольшее распространение получили точные с математической
точки зрения критерии оценки качества изображения на основе оценки отношения
энергии сигнала и искажений (шума). Наиболее простым и распространенным параметром
для оценки качества является пиковое отношение сигнал/шум (peak signal to
noise ratio), сокращенно PSNR, которое выражает количественную характеристику
отношения энергии шума, вносимого процессом кодирования, к максимальной возможной
энергии исходного сигнала. PSNR выражается в децибелах (dB). Чем больше
значение PSNR, тем меньше искажения сигнала. Нулевому уровню искажений соответствует
значение PSNR, равное бесконечности. На практике видео изображение со значениями
PSNR порядка 40-43 dB и выше является изображением высокого качества, в то время
как значения порядка 30 dB и ниже характеризуют изображение плохого качества.
Другой особенностью современных кодеров, связанной
со спецификой человеческого зрения, является различная обработка информации,
связанной с яркостью и цветностью изображений. Человеческий глаз как оптический
инструмент более чувствителен к изменениям яркости, чем к изменениям цвета.
С учетом данной особенности зрения при кодировании цветной сигнал, который
обычно принято характеризовать тремя значениями цветов (RGB), перед кодированием
переводится в представление YUV, где Y – яркостная компонента сигнала, а
U и V – две цветоразностных компоненты. Процедура перевода из RGB в YUV является
линейной и обратимой для реальных значений цветности, то есть при обратном
восстановлении сигнала RGB из YUV потери будут отсутствовать (PSNR равно
бесконечности). Для целочисленных значений, строго говоря, при трансформации
изображения из RGB в YUV возникают незначительные потери, связанные с округлением
действительных чисел (с плавающей точкой) до целых. Тем не менее, данные
потери качества практически незаметны для человеческого зрения.
Вторым этапом, на котором возникают потери качества
при цифровом сжатии видео, является пространственное уменьшение разрешения
для цветоразностных сигналов по сравнению с сигналом яркости. Такое уменьшение
не является критическим: глаз человека значительно менее чувствителен к пространственным
колебаниям цвета, чем яркости. Например, если разрешение видео картинки составляет
352х288 пикселов (это примерно соответствует качеству VHS видеомагнитофона),
то в кодере MPEG-2 и MPEG-4 кодироваться будет сигнал цветности с тем же
разрешением, и два цветоразностных сигнала U и V с разрешением 176х144 пикселов.
Такое пространственное представление сигнала называется I 4:2:01
. Пространственное уменьшение разрешения цветности может выполняться совершенно
различными методами, в частности, с использованием усреднения между соседним
пикселами (пространственной фильтрацией шума) или без него, и является специфической
для каждого отдельного кодека. Более того, данные алгоритмы являются закрытой
информацией производителя кодека, отражающей свое «ноу-хау». При обратном
восстановлении до исходного разрешения, даже если кодирование YUV совершалось
без потерь, восстановленный сигнал будет отличаться от исходного! Но опять
таки, потери качества, возникающие на данном этапе, существенно меньше потерь,
обусловленные кодированием YUV компонент. Необходимо отметить, что после кодирования
исходного RGB сигнала при проигрывании декодер драйвера может возвращать
сигнал в YUV формате, перевод из YUV в RGB будет осуществляться аппаратно
в видео карте (проигрывание с использованием DirectX). При этом качество
воспроизведения может зависеть от аппаратных возможностей видео карты.
Наконец, третьим и наиболее существенным этапом
возникновения искажений является собственно кодирование сигнала YUV. Именно
здесь возникает целый спектр различного рода искажений, связанных с квантованием
коэффициентов частотного спектра, компенсацией движения, разбиением изображения
на блоки («блокинг-эффект»), уменьшением контраста и градаций яркости и другими
особенностями кодеков. Именно на этом этапе регулируется степень сжатия:
чем больше сжатие, тем больше уровень искажений. Рассматривать подробно характер
искажений при кодировании YUV не имеет смысла в данной статье.
2. Оценка искажений с помощью программы PSNR Checker Программа PSNR Checker была разработана для количественной оценки кодирования видео по критерию PSNR. Данная программа предполагает выполнение следующих условий: - исходный видеоматериал имеет формат несжатых данных RGB-24 бит; - программный драйвер кодека позволяет получить (восстановить) из закодированного файла обратно формат несжатых данных RGB-24. Процедуру декодирования можно осуществить, например, с помощью стандартного редактора AVI-файлов (AVIEDIT). Значение PSNR, вычисляемое программой, включает
оценку всех промежуточных этапов кодирования, рассмотренных выше: преобразование
RGB-24 в YUV, пространственное изменение разрешения цветности (UV) в драйвере,
кодирование YUV-компонент, обратную процедуру передискретизации цветности
и обратное преобразование YUV в RGB-24. Тем самым, оценивается общий результат
кодирования без детализации промежуточных этапов, осуществляемых драйвером.
Данное значение PSNR, таким образом, будет несколько меньше значения, определяемого
только по искажениям на этапе кодирования YUV сигнала2 . Такой
подход позволяет теоретически сравнивать произвольные кодеки видео сигнала.
Программа PSNR Checker работает следующим образом.
В меню открываются два AVI файла в формате RGB-24, один из которых является
исходным, а другой декодированным с помощью драйвера тестируемого кодека.
Далее программа «просматривает» все кадры видеопоследовательности и вычисляет
среднее значение PSNR. Выводятся два значения: среднее значение PSNR по трем
цветам RGB, и PSNR только для яркостной компоненты. Первая величина является
средним значением PSNR между тремя цветами RGB. Для вычисления PSNR по яркости
в программе осуществляется собственное преобразование из RGB-24 в Y по стандартным
формулам. Важно то, что данное преобразование одинаково для каждого из двух
AVI файлов, поэтому для файлов, не содержащих различий, значение PSNR будет
равно бесконечности. Для визуальной оценки искажений выводится также разностный
сигнал яркости между двумя файлами.
3. Особенности работы программы PSNR Checker с драйверами divX 5 Pro и Motion Wavelets При работе программы PSNR Checker с драйверами
divX и Motion Wavelets возникают определенные особенности, связанные с использованием
кадров с двунаправленной компенсацией движения (B-кадров). Драйверы реализованы
таким образом, что декодированные кадры будут немного отставать (сдвинуты)
от кадров в исходном файле. Чтобы проигрывание начиналось нормально без пропусков
кадров в начале последовательности первый кадр повторяется несколько раз.
В случае divX Pro 5 первый кадр повторяется 3 раза, а в случае Motion Wavelets
– 4 раза. Поэтому перед анализом последовательности с помощью программы
PSNR Checker из декодированного файла divX нужно удалить первых 2 кадра,
а в случае Motion Wavelets – первых 3 кадра (например, с помощью программы
AVIEDIT). Для Motion Wavelets это справедливо только в том случае, если последовательность
была закодирована с опцией «Для фильма». При кодировании с опцией «Для видеоконференции»
первые кадры удалять не нужно – в этом режиме B-кадры не используются.
Загрузить PSNR Checker 1) В телевизионных кодерах высокого разрешения могут
использоваться и другие форматы c более высоким разрешением цветности, например,
I 4:2:2 и I 4:4:4. В мультимедийных приложениях формат I 4:2:0 получил наибольшее
распространение.
2) На нашем сайте представлена другая программа Motion
Wavelets Tester (подробнее о Motion Wavelets Tester), позволяющая
провести тестовое кодирование с помощью алгоритма Motion Wavelets. В программе
Tester вычисляется значение PSNR для YUV компонент в качестве характеристики
качества результата кодирования. Чтобы быть абсолютно точным, нужно иметь
в виду, что значение PSNR в программе Tester будет несколько больше значения
PSNR, если его определить с помощью программы PSNR checker, в которой осуществляется
передекодирование сигнала в RGB.
<< К обзору информации |