Постпроцессинг в HEVC

Постпроцессинг в HEVC

ГЛАВА 5

Video_compression_book

В главе описано, как работает постобработка декодированных изображений, предназначенная для снижения уровня эффектов квантования в HEVC. Деблок фильтр DBF (Deblocking Filter) и процедура SAO (Sample Adaptive Offset).

 

 

Вернемся еще раз к упрощенной схеме обработки видеоизображений в системе видеокодирования стандарта HEVC. Такая схема представлена на рис. 1. Алгоритмы HEVC ориентированы на поблочную обработку видеокадров, устраняющую пространственную или временную избыточность видеоинформации. В обоих случаях избыточность устраняется путем предсказания значений отсчетов кодируемого блока. При пространственной обработке используется предсказание значений пикселей изображения в текущем блоке по значениям пикселей соседних блоков, называемое Intra-предсказанием. При устранении временной избыточности для предсказания используются участки изображений с ранее закодированных кадров. Такой тип предсказания называется Inter-предсказанием. Остаточный сигнал, формируемый как разность между кодируемым и предсказанным изображениями, подвергается двумерному дискретному преобразованию Фурье (ДПФ). Полученные спектральные коэффициенты квантуются по уровню. На заключительном этапе кодирования последовательность значений квантованных спектральных коэффициентов, сопровождаемая информацией о предсказании, спектральном преобразовании и квантовании, подвергается энтропийному кодированию. Пространственное и временное предсказание в кодере производится по декодированным изображениям. Это обеспечивает одинаковые результаты предсказания в кодере и декодере. При декодировании выполняется деквантование спектральных коэффициентов и обратное дискретное преобразование Фурье (ОДПФ). Восстановленный разностный сигнал добавляется к результату предсказания.

Video5.1

Video5.1

Рис. 1. Схема кодера стандарта HEVC

Из вышесказанного очевидно, что процедура кодирования может существенно искажать исходное изображение. Искажения вносятся на этапе квантования спектральных коэффициентов. Стандартом HEVC предусмотрена возможность дополнительной постобработки декодированных изображений, предназначенной для снижения уровня эффектов квантования. Постобработка может включать в себя деблок фильтр DBF (от англ. Deblocking Filter) и процедуру SAO (сокр. от англ. Sample Adaptive Offset). Попробуем разобраться с тем, как это работает.

Алгоритмы постобработки видеоизображений в HEVC.

Первый этап пост-обработки – деблок-фильтрация – предназначен для снижения краевых эффектов (эффектов блочности). Каждый видеокадр при кодировании равномерно разбивается на квадратные блоки одинакового размера, называемые LCU (сокр. от англ. Largest Coding Unit). Каждый LCU может быть разбит при кодировании на четыре квадратных блока CU (сокр. от англ. Coding Unit), каждый из которых, в свою очередь, может быть разбит еще на четыре CU. В результате таких разбиений образуется квадродерево CTU (сокр. от англ. Coding Tree Unit). CU нижнего уровня в CTU, в свою очередь, разбиваются при кодировании на блоки предсказания PU (сокр. от англ. Prediction Unit).

Двумерный разностный сигнал, полученный вычитанием результатов предсказания из кодируемого изображения, подвергается двумерному спектральному преобразованию. Размер матрицы спектрального преобразования определяется размером блока преобразования TU (сокр. от англ. Transform Unit). В HEVC возможны преобразования 4 размеров: 4×4, 8×8, 16×16 и 32×32. Квантование спектральных коэффициентов приводит к возникновению эффекта блочности декодированных изображений, что хорошо видно на рис. 2. Здесь представлен участок декодированного изображения до выполнения деблок фильтрации. По вполне понятным причинам эффект проявляется как на границах блоков PU, так и на границах блоков TU.

Video5.2

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

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

Перед фильтрацией для каждого 4-х пиксельного отрезка линии выбирается значение параметра BS (сокр. от англ. Boundary Strength). Это значение определяется режимом предсказания областей изображения по разные стороны отрезка. Если хотя бы одна из этих областей кодировалась в режиме интра-предсказания, значение BS выбирается равным 2. Если обе области при интер-предсказании предсказывались из одного непрерывного участка ранее закодированного изображения, параметр BS для отрезка устанавливается равным 0. В остальных случаях значение BS равно 1. Окрестности 4-х пиксельных отрезков, для которых параметр BS имеет нулевое значение, исключаются из процедуры фильтрации.

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

Video5.3

Рис. 3. Используемые обозначения, пунктирной линией обозначена вертикальная граница блоков

Область слева от границы (область P) считается «достаточно плоской», если значения яркости отсчетов в нулевой и третьей строках зависят от горизонтальной координаты (от удаления от границы) по закону, близкому к линейному:

, ,

где  – горизонтальная координата. Близость к линейному закону оценивается по величине разброса тангенса угла наклона в точках  и , т.е по величине  для верхней строки отсчетов и по величине  для нижней. Аналогичные значения и  рассчитываются для области справа от границы (область Q):

, .

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

В том случае, когда разброс яркости отсчетов в окрестности границы велик, т.е. когда не выполняется условие:

,

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

Video5.4

Рис. 4. При большом разбросе значений интенсивности отсчетов в окрестности границы ширина фильтруемой области устанавливается равной нулю и окрестность границы не фильтруется

В противном случае, т.е. когда

,

производится выбор между «сильным» и «слабым» фильтрами. При выполнении условий:

,

,

,

,

,

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

Video5.5

Рис. 5. Положение фильтруемой области при «сильной» фильтрации

«Сильный» фильтр применяется построчно. Новые значения  и  рассчитываются как линейные комбинации отсчетов  и  в j-ой строке:

,

, ; .

Значения множителей , , , ,  приведены в таблице.

Video5.8

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

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

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

Новые значения отсчетов ,   рассчитываются на основе величины :

.

Если величина , то строка с номером j исключается из процедуры фильтрации. В противном случае новые значения рассчитываются по формулам:

,

,

,

.

Для тех, кому хочется разобраться.

Из приведенного выше описания процедуры деблок фильтрации остается как-то не особенно понятно, что это за коэффициенты , , , , используемые при «сильной» фильтрации, и величина , определяющая значения отсчетов при «слабой». Мне не удалось найти в литературе какого-либо расчета этих величин. Почему они именно такие? Здесь можно пофантазировать.

Разберемся, прежде всего, с величиной . Поместим начало декартовой системы координат посередине между отсчетами  и  так, что эти отсчеты будут иметь координаты  и  соответственно. Отсчет  в этом случае имеет координату , а отсчет  –  (рис. 6).

Video5.6

Рис. 6. Положение и координаты отсчетов в декартовой системе координат, используемой при дальнейшем рассмотрении

Используя метод наименьших квадратов, проведем через четыре отсчета ,  прямую линию .

Метод наименьших квадратов. Пусть дан набор отсчетов , значения которых наблюдаются в точках с координатами  . Для аппроксимации зависимости  линейной функцией, т.е. для построения прямой , необходимо подобрать такие значения параметров a и b, которые бы обеспечивали минимальное в среднеквадратическом отклонение отсчетов  от значений . Экстремальные значения параметров a и b легко найти, приравняв 0 производные:

,

Разрешая систему этих уравнений относительно a и b, находим:

,

.

Легко получить, оценку параметров прямой a и b:

 , . (В выбранной системе координат ). Подставляя в выражения для a и b координаты  и значения , находим, что

, .

Отклонение значения  от значения  при  составляет

.

Отклонение значения  от значения  при  составляет

.

Среднее арифметическое (с учетом разных знаков отклонений  и )

с точностью не хуже 1.25% совпадает со значением , используемом при «слабой» фильтрации. Таким образом, величина  определяется средним отклонением точек  и  от прямой, проведенной по методу наименьших квадратов через четыре точки , .

Отметим, что при проведении прямой значения  и  никак не учитываются. Если изображение в области P достаточно гладкое (выполняется условие ), то смещение отсчета  на величину  может привести к образованию скачка (заметной ступеньки) между  и . Образующуюся ступеньку сглаживают, добавляя к  величину , которую легко интерпретировать. Действительно,  представляет собой отклонение значения  от прямой, проведенной через две точки:  и . Таким образом, . Добавление этой величины к  значению , обеспечивает плавный переход от  к .

Аналогичное сглаживание производится и в области Q при ее достаточной гладкости (когда ).

При «сильной» фильтрации новые значения отсчетов в области P определяются следующими выражениями:

,

,

.

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

Второй этап постобработки декодированных изображений.

Второй этап постобработки декодированных изображений – SAO (сокр. от англ. Sample Adaptive Offset) – предназначен для частичной компенсации потерь, обусловленных квантованием спектральных коэффициентов. Для этого к значениям некоторых пикселей изображения после декодирования добавляются смещения, вычисляемые на этапе кодирования и передаваемые в закодированном потоке в виде таблиц для каждого LCU. Отбор пикселей, подвергаемых изменениям, производится по их интенсивности, что и обуславливает нелинейность преобразования. SAO в HEVC может быть двух типов: BO (сокр. от англ. Band Offset) и EO (сокр. от англ. Edge Offset).

При постобработке типа BO значения всех пикселей в LCU при кодировании равномерно делятся на 32 диапазона. Для каждого диапазона вычисляется среднее по LCU смещение между пикселями оригинального и декодированного изображений. Видеокодер сохраняет в закодированном видеопотоке значения смещений для четырех последовательных диапазонов и номер диапазона, являющегося первым в четверке. После декодирования изображения на этапе SAO смещения добавляются к тем пикселям, значения которых попадают в выбранные кодером диапазоны.

При постобработке типа EO кодер выбирает один из четырех шаблонов, в соответствии с которым должны классифицироваться значения отсчетов декодированного изображения. Возможные варианты шаблонов иллюстрируются на рис. 4. За p обозначено значение классифицируемого отсчета, за n0 и n1 – значения двух соседних ему отсчетов. Номер выбранного шаблона помещается в закодированный поток для каждого LCU.

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

Video5.7

Рис. 7. Шаблоны для классификации значений отсчетов

А есть ли эффект от применения постобработки?

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

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

1 апреля 2019

Читать другие статьи:

Глава 1. Просто о видеокодировании

Глава 2. Межкадровое (Inter) предсказание в HEVC

Глава 3. Пространственное (Intra) предсказание в HEVC

Глава 4. Компенсация движения в HEVC

Глава 6. Контекстно-адаптивное двоичное арифметическое кодирование. Часть 1

Глава 7. Контекстно-адаптивное двоичное арифметическое кодирование. Часть 2

Глава 8. Контекстно-адаптивное двоичное арифметическое кодирование. Часть 3

Глава 9. Контекстно-адаптивное двоичное арифметическое кодирование. Часть 4

Глава 10. Контекстно-адаптивное двоичное арифметическое кодирование. Часть 5

 

Автор:

Олег Пономарев - 16 лет занимается вопросами видео кодирования и цифровой обработки сигналов, специалист в области распространения радиоволн, статистической радиофизики, доцент кафедры радиофизики НИ ТГУ, кандидат физико-математический наук. Руководитель исследовательской лаборатории Elecard.

 

Инструмент для детального анализа этапов кодирования видеопоследовательности - Elecard StreamEye

Инструмент для сравнения параметров видео, закодированного разными энкодерами