УСТРОЙСТВО И СПОСОБ ФИЛЬТРАЦИИ ПРИ КОДИРОВАНИИ ВИДЕО
DEVICE AND FILTRATION METHOD IN VIDEO ENCODING

Область техники, к которой относится изобретение
[0001] В целом настоящее изобретение относится к области кодирования видео. Более конкретно, настоящее изобретение относится к фильтру для кодирования видео, способу фильтрации восстановленных видеокадров и способу фильтрации видеоблоков, а также к устройству кодирования и устройству декодирования, содержащему такой фильтр для кодирования видео.
Уровень техники
[0002] Цифровое видео широко используется с момента появления DVD-дисков. Перед передачей видео кодируется и передается с использованием среды передачи. Зритель получает видео и использует устройство просмотра для декодирования и отображения видео. С годами качество видео улучшилось, например, за счет более высоких разрешений, глубины цвета и частоты кадров. Это привело к увеличению потоков данных, которые в настоящее время обычно передаются через Интернет и сети мобильной связи.
[0003] Однако видео с более высоким разрешением обычно требуют большей пропускной способности, поскольку они содержат больше информации. Чтобы снизить требования к пропускной способности, были введены стандарты кодирования видео, задействующие сжатие видео. Когда видео кодируется, требования к пропускной способности (или соответствующие требования к памяти в случае хранения) снижаются. Часто это снижение происходит за счет качества. Таким образом, стандарты кодирования видео пытаются найти баланс между требованиями к пропускной способности и качеством.
[0004] Поскольку существует постоянная потребность в улучшении качества и снижении требований к пропускной способности, постоянно ведется поиск решений, которые поддерживают качество с уменьшенными требованиями к пропускной способности или улучшают качество при сохранении требований к пропускной способности. Кроме того, иногда могут быть приемлемы компромиссы. Например, может быть приемлемым увеличить требования к пропускной способности, если улучшение качества значительно.
[0005] Высокоэффективное кодирование видео (HEVC - High Efficiency Video Coding) является примером стандарта кодирования видео, который обычно известен специалистам в данной области техники. В HEVC для разделения единицы кодирования (CU - coding unit) на единицы предсказания (PU - prediction unit) или единицы  преобразования (TU - transform unit). Стандарт следующего поколения универсального кодирования видео (VVC - Versatile Video Coding) - это самый последний совместный видеопроект организаций по стандартизации Экспертной группы по вопросам кодирования видео (VCEG - Video Coding Experts Group) ITU-T и Экспертной группы по вопросам движущегося изображения (MPEG - Moving Picture Experts Group) ISO/IEC, работающих вместе в партнерстве, известном как Объединенная группа исследования видео (JVET - Joint Video Exploration Team). VVC также называют ITU-T H.266/ стандартом кодирования видео следующего поколения (NGVC - Next Generation Video Coding). В VVC он удаляет концепции типов множественного разделения, т.е. удаляет разделение концепций CU, PU и TU, за исключением случаев, когда это необходимо для CU, размер которых слишком велик для максимальной длины преобразования, и поддерживает большую гибкость для форм разделения CU.
[0006] Фильтрация изображений часто используется для выделения определенных характеристик изображения или для улучшения объективного или воспринимаемого качества отфильтрованного изображения. Фильтрация изображений сталкивается с различными источниками шума. Соответственно, были предложены и используются различные подходы к повышению качества. Например, в способе адаптивного контурного фильтра (ALF - Adaptive Loop Filter) каждый восстановленный кадр делится на набор небольших блоков (суперпикселей), и каждый блок фильтруется посредством адаптивного контурного фильтра в том смысле, что каждый пиксель отфильтрованного восстановленного кадра является взвешенной суммой нескольких пикселей в связанной области пикселя из восстановленного кадра вокруг положения формируемого отфильтрованного пикселя. Весовые коэффициенты (также называемые коэффициентами фильтра) обладают свойством центральной симметрии и передаются от кодера на сторону декодера. Края часто имеют большой размер, и поэтому количество передаваемых весовых коэффициентов может стать слишком большим для эффективной обработки. Большое количество весовых коэффициентов требует комплексной оптимизации скорости и искажения (RDO - rate-distortion optimization) на стороне кодера для уменьшения количества весовых коэффициентов для передачи. На стороне декодера ALF требует реализации универсальных умножителей, и эти умножители должны перезагружаться для каждого блока пикселей 2×2.
[0007] Таким образом, существует потребность в улучшенном фильтре и способе, позволяющем улучшить качество предсказания с низкой сложностью и, таким образом, повысить эффективность кодирования видео.
Сущность изобретения
[0008] Задачей изобретения является создание улучшенного фильтра и способа, позволяющего повысить эффективность фильтрации при ограниченной сложности и, таким образом, повысить эффективность кодирования видео.
[0009] Вышеупомянутые и другие задачи решаются посредством предмета независимых пунктов формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.
[0010] Согласно первому аспекту изобретение относится к фильтру для кодирования видео, причем фильтр выполнен с возможностью обработки блока для формирования отфильтрованного блока, причем блок содержит множество пикселей. Фильтр включает в себя запоминающее устройство, содержащее инструкции; и один или несколько процессоров, связанных с памятью. Один или несколько процессоров выполняют инструкции для: загрузки текущего пикселя и соседних с ним пикселей в линейный буфер в соответствии с предварительно заданным шаблоном сканирования; получения компонентов спектра посредством выполнения одномерного преобразования пикселей в линейном буфере; получения отфильтрованных компонентов спектра посредством умножения каждого компонента спектра на коэффициент усиления, при этом коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации; получения отфильтрованных пикселей посредством выполнения обратного одномерного преобразования для отфильтрованных компонентов спектра; и формирования отфильтрованного блок на основе отфильтрованных пикселей.
[0011] В качестве примера блок (или кадр) может быть предсказанным блоком, а отфильтрованный блок - это отфильтрованный предсказанный блок. В качестве другого примера блок (или кадр) может быть восстановленным блоком, а отфильтрованный блок является отфильтрованным восстановленным блоком.
Например, коэффициент усиления является функцией от соответствующего компонента спектра и параметра фильтрации. Параметр фильтрации может быть получен из параметра квантования кодека (QP - quantization parameter).
Другой пример, первый компонент спектра пропускается без фильтрации, когда коэффициент  усиления для первого компонента спектра равен единице. Первый компонент спектра соответствует сумме или среднему значению сэмплов в линейном буфере, и первый компонент спектра может соответствовать DC.
В качестве другого примера, в котором один или несколько процессоров выполняют инструкции для удаления N битов из значений таблицы LUT, N - целое число. N может зависеть от значения QP или является фиксированным значением.
Например, предварительно заданный шаблон сканирования определяется как набор пространственных или растровых смещений относительно положения текущего пикселя внутри восстановленного блока. Смещения точки к соседним пикселям находятся внутри восстановленного блока. По меньшей мере один отфильтрованный пиксель может быть помещен в его исходное положение согласно предварительно заданному шаблону сканирования. Когда все отфильтрованные пиксели добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, и буфер накопления может быть инициализирован посредством нуля до получения отфильтрованных компонентов спектра. Когда окончательно отфильтрованные пиксели получены как накопленные значения в буфере накопления, деленные на количество пикселей, добавленных к текущему положению буфера накопления; один или несколько процессоров выполнены с возможностью формирования отфильтрованного восстановленного блока на основе окончательных отфильтрованных пикселей.
Необязательно, различия между всеми отфильтрованными и соответствующими неотфильтрованными пикселями добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, и буфер накопления может быть инициализирован посредством неотфильтрованных пикселей, умноженных на максимальное количество значений пикселей, которые должны быть добавлены в блок. Окончательные отфильтрованные пиксели получаются как накопленные значения в буфере накопления, деленные на максимальное количество значений пикселей, которые должны быть добавлены в блок.
[0012] Согласно второму аспекту изобретение относится к соответствующему способу фильтрации для обработки блока для формирования отфильтрованного блока, при этом блок содержит множество пикселей. Каждый пиксель связан со значением пикселя. Способ фильтрации включает в себя следующие этапы, на которых: загружают текущий пиксель и соседние с ним пиксели в линейный буфер в соответствии с предварительно заданным шаблоном сканирования; получают компоненты спектра посредством выполнения одномерного преобразования пикселей в линейном буфере; получают отфильтрованные компоненты спектра посредством умножения каждого компонента спектра на коэффициент усиления, при этом коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации; получают отфильтрованные пиксели посредством выполнения обратного одномерного преобразования для отфильтрованных компонентов спектра; и формируют отфильтрованный блок на основе отфильтрованных пикселей.
[0013] В качестве примера блок (или кадр) может быть предсказанным блоком, и отфильтрованный блок - это отфильтрованный предсказанный блок. В качестве другого примера блок (или кадр) может быть восстановленным блоком, и отфильтрованный блок является отфильтрованным восстановленным блоком.
Например, коэффициент усиления является функцией от соответствующего компонента спектра и параметра фильтрации. Параметр фильтрации может быть получен из параметра квантования кодека (QP).
Другой пример, первый компонент спектра пропускается без фильтрации, когда коэффициент  усиления для первого компонента спектра равен единице. Первый компонент спектра может соответствовать значению DC.
Другой пример - фильтрация компонентов спектра на основе таблицы поиска (LUT - look up table). Формирование LUT может быть основано на вспомогательной функции по меньшей мере для некоторых параметров квантования (QP). Вспомогательная функция может быть уравнением прямой линии, объединяющим точки (i, THR) и (a, 0), где a > 0 и a зависит от параметра σ фильтрации или значения QP. Например, для последнего QP в наборе QP a равно 11; или для предпоследнего QP в наборе QP a равно 9.
В качестве другого примера, способ дополнительно включает в себя этапы, на которых: удаляют N битов из значений таблицы LUT, N - целое число. N может зависеть от значения QP или является фиксированным значением. Когда N выбирается меньше для более низкого QP по сравнению с более высоким QP из набора QP, например, для первого QP в наборе QP, N равно 2; или для остальных QP из набора QP N равно 3. В качестве альтернативы, когда N выбирается выше для более высокого QP по сравнению с более низким QP из набора QP QP, например, для последнего QP или для последних двух QP в наборе QP, N равно 4; или для остальных QP из набора QP N равно 3. В качестве альтернативы, когда N выбирается меньше для более низкого QP и выше для более высокого QP по сравнению с остальным QP из набора QP, например, для первого QP в наборе QP, N равно 2; для последнего QP или для последних двух QP в наборе QP N равно 4; либо для остальных QP из набора QP N равно 3.
Например, предварительно заданный шаблон сканирования определяется как набор пространственных или растровых смещений относительно положения текущего пикселя внутри восстановленного блока. Смещения точки к соседним пикселям находятся внутри восстановленного блока. По меньшей мере один отфильтрованный пиксель может быть помещен в его исходное положение согласно предварительно заданному шаблону сканирования. Когда все отфильтрованные пиксели добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, и буфер накопления может быть инициализирован посредством нуля до получения отфильтрованных компонентов спектра. Когда окончательные отфильтрованные пиксели получены как накопленные значения в буфере накопления, деленные на количество пикселей, добавленных к текущему положению буфера накопления; один или несколько процессоров выполнены с возможностью формирования отфильтрованного восстановленного блока на основе окончательных отфильтрованных пикселей.
Необязательно, различия между всеми отфильтрованными и соответствующими неотфильтрованными пикселями добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, и буфер накопления может быть инициализирован посредством неотфильтрованных пикселей, умноженных на максимальное количество значений пикселей, которые должны быть добавлены в блок. Окончательные отфильтрованные пиксели получаются как накопленные значения в буфере накопления, деленные на максимальное количество значений пикселей, которые должны быть добавлены в блок.
[0014] Согласно третьему аспекту изобретение относится к устройству кодирования для кодирования текущего кадра из входного видеопотока, при этом устройство кодирования содержит фильтр согласно первому аспекту изобретения.
[0015] Согласно четвертому аспекту изобретение относится к устройству декодирования для декодирования текущего кадра из принятого битового потока, при этом устройство декодирования содержит фильтр согласно первому аспекту изобретения.
[0016] Согласно пятому аспекту изобретение относится к компьютерной программе, содержащей программный код для выполнения способа согласно второму аспекту при выполнении на компьютере.
[0017] Таким образом, обеспечен фильтр, позволяющий повысить эффективность кодирования видео. Более конкретно, улучшенный фильтр согласно вариантам осуществления изобретения оценивает параметры фильтра из самого кадра без сигнализации параметров фильтра и, следовательно, требует значительно меньше сигнализации, чем обычные фильтры, которые сигнализируют весовые коэффициенты для фильтрации в области изображения.
Краткое описание чертежей
[0018] Дополнительные варианты осуществления изобретения будут описаны со ссылкой на следующие фигуры, на которых:
[0019] Фиг. 1A показывает схематическую диаграмму, иллюстрирующую устройство кодирования согласно варианту осуществления, содержащее фильтр согласно варианту осуществления;
[0020] Фиг. 1B показывает схематическую диаграмму, иллюстрирующую устройство кодирования согласно варианту осуществления, содержащее фильтр согласно варианту осуществления;
[0021] Фиг. 2A показывает схематическую диаграмму, иллюстрирующую устройство декодирования согласно варианту осуществления, содержащее фильтр согласно варианту осуществления;
[0022] Фиг. 2B показывает схематическую диаграмму, иллюстрирующую устройство декодирования согласно варианту осуществления, содержащее фильтр согласно варианту осуществления;
[0023] Фиг. 3A показывает схематическую диаграмму, иллюстрирующую аспекты процесса фильтрации, реализованного в фильтре согласно варианту осуществления;
[0024] Фиг. 3B - схематическая диаграмма, иллюстрирующая аспекты процесса фильтрации, реализованного в фильтре согласно варианту осуществления;
[0025] Фиг. 3C - схематическая диаграмма, иллюстрирующая аспекты процесса фильтрации, реализованного в фильтре согласно другому варианту осуществления;
[0026] Фиг. 4A иллюстрирует шаблоны для различных положений пикселей внутри квадратного восстановленного блока;
[0027] Фиг. 4B иллюстрирует эквивалентную форму фильтра для одного пикселя;
[0028] Фиг. 4C дает пример заполнения;
[0029] Фиг. 4D дает еще один пример заполнения;
[0030] Фиг. 5A показывает блок-схему, иллюстрирующую этапы способа фильтрации согласно варианту осуществления;
[0031] Фиг. 5B показывает блок-схему, иллюстрирующую этапы способа фильтрации согласно варианту осуществления;
[0032] Фиг. 6 - пример схемы аппаратного фильтра на основе SRAM;
[0033] Фиг. 7 - примерная схема аппаратного обеспечения фильтрации группы 2×2 на основе триггеров;
[0034] Фиг. 8 показывает пример объединения результатов четырех фильтраций групп 2×2 с повторным использованием результатов одного и того же окончательного фильтра пространственной группы;
[0035] Фиг. 9 в качестве примера показывает результат оптимизации LUT;
[0036] Фиг. 10 в качестве примера показывает нежелательный разрыв в передаточной функции фильтра;
[0037] Фиг. 11 в качестве примера представляет ту же таблицу с записями таблицы, построенными поочередно;
[0038] Фиг. 12 в качестве примера иллюстрирует способ устранения разрыва с использованием вспомогательной функции;
[0039] Фиг. 13 иллюстрирует пример устранения разрыва посредством взятия максимума из двух значений при формировании LUT;
[0040] Фиг. 14, в качестве примера, иллюстрирует передаточную функцию фильтра после применения описанного выше способа;
[0041] Фиг. 15 иллюстрирует пример передаточных функций фильтра в зависимости от пяти QP в наборе;
[0042] Фиг. 16 иллюстрирует пример передаточных функций фильтра для пяти QP в наборе на основе соответствующих таблиц;
[0043] Фиг. 17 - пример передаточных функций фильтра для пяти QP в наборе на основе соответствующих таблиц; и
[0044] Фиг. 18 - схематическая диаграмма, иллюстрирующая примерную структуру устройства согласно варианту осуществления.
[0045] На различных чертежах идентичные ссылочные позиции будут использоваться для идентичных или функционально эквивалентных элементов.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0046] В нижеследующем описании сделана ссылка на сопроводительные чертежи, которые составляют часть раскрытия и на которых показаны в качестве иллюстрации конкретные аспекты, в которые может быть помещено настоящее изобретение. Понятно, что могут быть использованы другие аспекты, а структурные или логические изменения могут быть выполнены без выхода за пределы объема настоящего изобретения. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, поскольку объем настоящего изобретения определяется прилагаемой формулой изобретения.
[0047] Например, понятно, что раскрытие в связи с описанным способом также может быть верным для соответствующего устройства или системы, выполненной с возможностью выполнения способа, и наоборот. Например, если описан конкретный этап способа, соответствующее устройство может включать в себя блок для выполнения описанного этапа способа, даже если такой блок явно не описан или не проиллюстрирован на фигурах. Кроме того, понятно, что признаки различных иллюстративных аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
[0048] На фиг. 1A показано устройство 100 кодирования согласно варианту осуществления, содержащее фильтр 120 согласно варианту осуществления. Устройство 100 кодирования выполнено с возможностью кодирования блока кадра видеосигнала, содержащего множество кадров (также называемых здесь изображениями), при этом каждый кадр может быть разделен на множество блоков, и каждый блок содержит множество пикселей. В варианте осуществления блоки могут быть макроблоками, единицами дерева кодирования, единицами кодирования, единицами предсказания и/или блоками предсказания.
[0049] Термин «блок» в этом раскрытии используется для блока любого типа или для блока любой глубины, например, термин «блок» включен, но не ограничивается корневым блоком, блоком, подблоком, вершиной дерева и т.д. Кодируемые блоки не обязательно имеют одинаковый размер. Одно изображение может включать в себя блоки разных размеров, и растры блоков разных изображений видеопоследовательности также могут отличаться.
[0050] В примерном варианте осуществления, показанном на фиг. 1A, устройство 100 кодирования реализовано в форме кодера гибридного кодирования видео. Обычно первый кадр видеосигнала является внутренним кадром, который кодируется с использованием только внутреннего предсказания. С этой целью вариант осуществления устройства 100 кодирования, показанный на фиг.1A, содержит блок 154 внутреннего предсказания для внутреннего предсказания. Внутренний кадр может быть декодирован без информации из других кадров. Блок 154 внутреннего предсказания может выполнять внутреннее предсказание блока на основе информации, обеспеченной посредством блока 152 внутренней оценки.
[0051] Блоки последующих кадров, следующих за первым внутренним кадром, могут быть кодированы с использованием внешнего или внутреннего предсказания, как выбирается посредством блока 160 выбора режима. С этой целью устройство 100 кодирования, показанное на фиг. 1A, дополнительно содержит блок 144 внешнего предсказания. Как правило, блок 144 внешнего предсказания может быть выполнен с возможностью выполнения компенсации движения блока на основе оценки движения, обеспеченной посредством блока 142 внешней оценки.
[0052] Кроме того, сигнал предсказания в варианте осуществления гибридного кодера, показанном на фиг. 1B, полученный из внутреннего или внешнего предсказания, дополнительно фильтруется посредством фильтра 145.
[0053] Кроме того, в варианте осуществления гибридного кодера, показанном на фиг. 1A и 1B, блок 104 вычисления остатка определяет разницу между исходным блоком и его предсказанием, то есть остаточный блок, определяющий ошибку предсказания внутреннего/внешнего предсказания изображения. Этот остаточный блок преобразуется посредством блока 106 преобразования (например, с использованием DCT), а коэффициенты преобразования квантуются посредством блока 108 квантования. Выходной сигнал блока 108 квантования, а также кодирование или дополнительная информация, обеспеченная, например, посредством блока 154 внутреннего предсказания, блока 144 внешнего предсказания и фильтра 120, дополнительно кодируются посредством блока 170 энтропийного кодирования.
[0054] Гибридный видеокодер обычно дублирует обработку декодера, так что оба будут формировать одинаковые предсказания. Таким образом, в варианте осуществления, показанном на фиг. 1, блок 110 обратного квантования и блок обратного преобразования выполняют обратные операции блока 106 преобразования и блока 108 квантования и дублируют декодированное приближение остаточного блока. Затем декодированные данные остаточного блока добавляются к результатам предсказания, то есть к блоку предсказания, посредством блока 114 восстановления. Затем выходной сигнал блока 114 восстановления может быть обеспечен в линейный буфер 116, который будет использоваться для внутреннего предсказания, и дополнительно обработан посредством фильтра 120, что будет более подробно описано ниже. Окончательное изображение сохраняется в буфере 130 декодированных изображений и может использоваться для внешнего предсказания последующих кадров.
[0055] На фиг. 2A показано устройство 200 декодирования согласно варианту осуществления, содержащее фильтр 220 согласно варианту осуществления. Устройство 200 декодирования выполнено с возможностью декодирования блока кадра кодированного видеосигнала. В варианте осуществления, показанном на фиг. 2A, устройство 200 декодирования реализовано как гибридный декодер. Блок 204 энтропийного декодирования выполняет энтропийное декодирование кодированных данных изображения, которые обычно могут содержать ошибки предсказания (т.е. остаточные блоки), данные движения и другую дополнительную информацию, которая необходима, в частности, для блока 254 внутреннего предсказания и блока 244 внешнего предсказания, а также других компонентов устройства 200 декодирования, таких как фильтр 220. Как правило, блок 254 внутреннего предсказания и блок 244 внешнего предсказания устройства 200 декодирования, показанного на фиг. 2A, выбираются посредством блока 260 выбора режима и функционируют таким же образом, как блок 154 внутреннего предсказания и блок 144 внешнего предсказания устройства 100 кодирования, показанного на фиг. 1, так что идентичные предсказания могут быть сформированы посредством устройства 100 кодирования и устройства 200 декодирования. Блок 214 восстановления устройства 200 декодирования выполнен с возможностью восстановления блока на основе отфильтрованного предсказанного блока и остаточного блока, обеспеченных посредством блока 210 обратного квантования и блока 212 обратного преобразования. Как и в случае устройства 100 кодирования, восстановленный блок может быть обеспечен в линейный буфер 216, используемый для внутреннего предсказания, а отфильтрованный блок/кадр может быть обеспечен в буфер 230 декодированных изображений посредством фильтра 220 для внешнего предсказания.
[0056] Как показано на фиг. 2B, сигнал предсказания в варианте осуществления гибридного декодера, показанном на фиг. 2B, полученный из внутреннего или внешнего предсказания, дополнительно фильтруется посредством фильтра 264.
[0057] Как уже было описано выше, фильтр 120, 220 может использоваться на уровне кадра, например, фильтр 120, 220 может быть выполнен с возможностью обработки восстановленного кадра из декодированного восстановленного видеопотока для формирования отфильтрованного восстановленного кадра, где восстановленный кадр включает в себя множество блоков. Фильтр 120, 220 также может использоваться на уровне блока сразу после восстановления блока без ожидания всего кадра, например, фильтр 120, 220 может быть выполнен с возможностью обработки восстановленного блока для формирования отфильтрованного восстановленного блока, где восстановленный блок включает в себя множество пикселей.
[0058] Фильтр 120, 220, 145 или 264 содержит один или несколько процессоров (или один или несколько блоков обработки). Как будет объяснено более подробно ниже, один или несколько процессоров (или один или несколько блоков обработки) выполнены с возможностью: загрузки текущего пикселя и его соседних пикселей в линейный буфер в соответствии с предварительно заданным шаблоном сканирования (другими словами, порядком сканирования или моделью сканирования); получения компонентов спектра посредством выполнения одномерного преобразования для каждого пикселя в линейном буфере; получения отфильтрованных компонентов спектра посредством умножения каждого компонента спектра на коэффициент усиления, при этом коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации; получения отфильтрованных пикселей посредством выполнения обратного одномерного преобразования для отфильтрованного спектра; и формирования отфильтрованного восстановленного блока на основе отфильтрованных пикселей, оцененных на предыдущих этапах обработки. В одном примере коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации. В другом примере коэффициент усиления зависит от одного или нескольких параметров фильтрации и одного или нескольких соответствующих компонентов спектра. В другом примере соответствующий коэффициент усиления может зависеть от одного или нескольких параметров фильтрации и соответствующего компонента спектра, а также соседних компонентов спектра слева и справа от компонента спектра.
[0059] Раскрытие описывает внутриконтурный фильтр для видеокодека с потерями, который выполняет локальную и/или нелокальную фильтрацию восстановленного блока из восстановленного кадра. Согласно примеру восстановленный кадр делится на набор небольших неперекрывающихся прямоугольных блоков (блоков CU). На следующем этапе каждый восстановленный блок (восстановленный блок CU) фильтруется в частотной области независимо от других восстановленных блоков. Фильтр также может применяться после преобразования и восстановления, а отфильтрованный результат используется как для вывода, так и для пространственного и временного предсказания.
[0060] В качестве другого примера раскрытие описывает фильтр предсказания для видеокодека с потерями, который выполняет локальную и/или нелокальную фильтрацию блока предсказания восстановленного кадра.
[0061] На первом этапе обработки все пиксели внутри восстановленного блока могут обрабатываться независимо друг от друга. Для обработки пикселя r(0) используются соседние пиксели. Например, как показано на фиг. 3A, используются пиксели с r(1) по r(7), и пиксели с r(0) по r(7) образуют одну группу обработки.
[0062] Фиг. 3A или 3B показывает схематическую диаграмму 300, 300' иллюстрирующую аспекты процесса фильтрации, реализованного в фильтре согласно варианту осуществления. На этапе 302, 302' текущий пиксель и соседние с ним пиксели из блока загружаются в линейный буфер в соответствии с предварительно заданным шаблоном сканирования. В качестве примера блок может быть предсказанным блоком. В качестве другого примера блок может быть восстановленным блоком.
[0063]  На этапе 304, 304' выполняется одномерное преобразование для пикселя r(0) и его соседних пикселей с r(1) по r(7) в линейном буфере для получения компонентов R спектра:
[0064] В качестве примера одномерное преобразование может быть преобразованием Адамара.
[0065] Следует понимать, что выполнение 1D-преобразования 4 пикселей в ряду (например, пиксели A, B, C, D, как в примере на фиг. 3B) или выполнение 2D-преобразования для пространственно расположенных пикселей A, B, C, D зависит от для конкретной реализации. Применение 2D-преобразования к 4 пикселям A, B, C, D, расположенным в блоке 2×2, может привести к тому же результату, что и применение 1D-преобразования к 4 пикселям A, B, C, D, взятым в ряду. На этапе 306, 306' фильтрация выполняется в частотной области на основе умножения каждого компонента  спектра на соответствующий коэффициент усиления  для получения отфильтрованных компонентов  спектра:
(1)
[0066]  Набор коэффициентов усиления для всех компонентов спектра представляет собой частотно-импульсную характеристику фильтра.
[0067] В примере коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации. В другом примере коэффициент усиления зависит от одного или нескольких параметров фильтрации и одного или нескольких соответствующих компонентов спектра. В другом примере соответствующий коэффициент усиления может зависеть от одного или нескольких параметров фильтрации и соответствующего компонента спектра, а также соседних компонентов спектра слева и справа от компонента спектра. Если каждый коэффициент усиления является функцией от компонента спектра восстановленного блока и параметра фильтрации или является функцией от компонента спектра предсказанного блока и параметра фильтрации, коэффициент усиления  может быть описан следующей формулой как пример:
(2)
где (i) - индекс компонента спектра, R(i) - компонент спектра, соответствующий индексу (i),  - коэффициент усиления, соответствующий R(i), σ - параметр фильтрации, m - константа нормализации, равная количеству компонентов спектра. Например, m равно 1, 2, 3, 4…. Различные компоненты спектра могут иметь одинаковый коэффициент усиления или могут иметь разные коэффициенты усиления.
[0068] Для тех преобразований, которые имеют компоненты спектра, соответствующие среднему (FFT, DCT, DST и т.д.) или сумме (Адамара) входных сэмплов блока преобразования (обычно первый компонент, соответствующий значению DC), может быть выгодно иметь коэффициент фильтрации, равный 1, чтобы избежать изменения средней яркости отфильтрованного блока. Это означает пропуск (без фильтрации) для первого компонента спектра, соответствующего значению DC.
[0069] σ в качестве параметра фильтрации может быть получен из параметра квантования (QP) кодека на сторонах кодера и декодера, например, с использованием следующей формулы:
,
где  и  являются константами, имеющими значения, например:
Различные компоненты спектра могут иметь одинаковый параметр фильтрации или могут иметь разные параметры фильтрации.
[0070] Параметры  и  могут быть выбраны таким образом, чтобы сигма зависела от размера шага квантования, который удваивается каждый раз, когда значение QP увеличивается на 6 в последних стандартах кодирования видео. В примере с параметрами k = 0,5, n = 1/6 и s = 0 параметры σ получаются следующим образом:
[0071] Матрицы масштабирования квантования широко используются для улучшения качества сжатия видео. В этом способе размер шага квантования, полученный на основе QP, умножается на коэффициент масштабирования, передаваемый в битовом потоке. Для такого способа получение параметров σ может быть основано на фактическом масштабированном размере шага квантования, используемом для определенного QP:
mod
[0072] Константы  и  могут иметь фиксированные значения для вычисления σ или могут иметь разные значения в зависимости от QP, размера и формы блока, типа предсказания (внешнего/внутреннего) для текущего блока. Например, для квадратных блоков с внутренним предсказанием размером 32×32 или более параметр s может вычислен как . В качестве эквивалентного параметра фильтра σ имеет меньшее значение, это приводит к более мягкому фильтру, который больше подходит для больших квадратных блоков с внутренним предсказанием, обычно соответствующих плоским областям. В качестве другого примера, k может быть изменено на основе глубины цвета пикселей k=k * (1 << (bit_depth - 8)).
[0073] Согласно способу 300, 300' коэффициент усиления для каждой частоты получается из компонента спектра восстановленных пикселей или предсказанных пикселей. Следовательно, способ 300, 300' не требует передачи параметров фильтрации и может применяться для любого восстановленного блока или предсказанного блока без дополнительной сигнализации.
[0074] Подробности LUT обсуждаются.
[0075] Можно отметить, что фильтрация подразумевает умножение компонентов спектра R(i) на коэффициент масштабирования, который всегда меньше 1. Также можно заметить, что при высоких значениях R (i) масштабный коэффициент близок к 1. На основе этих наблюдений осуществляется фильтрация спектра с использованием таблицы поиска, которая позволяет исключить умножение и деление из операций фильтрации:
[0076] Коэффициент усиления спектра меньше 1, поэтому фильтрация может быть реализована на основе чтения краткой таблицы поиска (LUT) по следующим формулам:
где . (i) - индекс компонента спектра, R(i) - компонент спектра, соответствующий индексу (i), σ - параметр фильтрации, а THR - пороговое значение, m - константа нормализации, равная количеству компонентов спектра. Например, m равно 1, 2, 3, 4…
[0077]  В качестве примера, THR можно рассчитать по следующей формуле:
= C
где C - значение, близкое к 1, например 0,8 или 0,9. Для уменьшения размера LUT пороговое значение THR может зависеть от значения QP.
Для дальнейшего уменьшения размера LUT может быть введено второе пороговое значение для замены небольших отфильтрованных значений нулем. В этом случае отфильтрованный компонент спектра - это , который дополнительно получается как:
При этом THR2 определяет пороговое значение, ниже которого отфильтрованный компонент спектра считается нулевым. Второе THR2 также может быть определено в зависимости от значения QP.
[0078] После фильтрации в частотной области на этапе 308 выполняется обратное одномерное преобразование для отфильтрованного компонента спектра для получения отфильтрованных пикселей :
[0079] На этапе 310, 310' результат обратного одномерного преобразования помещается в линейный буфер отфильтрованных восстановленных пикселей или отфильтрованных пикселей.
[0080] На этапе 312, 312' (не показан на фиг. 3A или 3B) отфильтрованный блок формируется на основе отфильтрованных пикселей, оцененных на предыдущих этапах обработки. В качестве примера отфильтрованный блок может быть отфильтрованным предсказанным блоком. В качестве другого примера отфильтрованный блок может быть отфильтрованным восстановленным блоком.
[0081] Как показано на фиг. 3A в качестве варианта осуществления, после этапа 306 фильтрации отфильтрованный пиксель f(0) помещается в свое исходное положение в соответствии с предварительно заданным шаблоном сканирования. Другие отфильтрованные сэмплы f(1) - f(7) не используются. В другом варианте осуществления более одного отфильтрованного пикселя, например все отфильтрованные пиксели из линейного буфера отфильтрованных сэмплов, добавляются в буфер накопления в соответствии с предварительно заданным шаблоном сканирования, используемым на этапе 302 на фиг. 3А. Перед этапом фильтрации буфер накопления должен быть инициализирован посредством нуля. На последнем этапе нормализации окончательные отфильтрованные пиксели получаются как накопленные значения в буфере накопления, деленные на количество пикселей, добавленных к текущему положению буфера накопления, другими словами, на количество значений пикселей, добавленных к текущему положению буфера накопления в предыдущем этапы обработки. Затем отфильтрованный восстановленный блок или предсказанный блок формируется на основе окончательных отфильтрованных пикселей.
[0082] В другом варианте осуществления фильтр имеет одинаковую реализацию для фильтрации как единиц (CU) внутреннего, так и внешнего кодирования.
[0083] Фильтр области преобразования Адамара всегда применяется к восстановленным блокам яркости с ненулевыми коэффициентами преобразования, за исключением блоков 4×4 и если параметр квантования слайса больше 17. Параметры фильтра явным образом получаются из кодированной информации. Предлагаемый фильтр, если он применяется, выполняется на декодированных сэмплах сразу после восстановления блока. Отфильтрованный результат используется как для вывода, так и для пространственного и временного предсказания.
[0084] Обсуждается процесс фильтрации, схематически представленный на фигуре 3C.
[0085] Для каждого пикселя из восстановленного блока обработка пикселей содержит следующие этапы:
[0086] Сканируют 4 соседних пикселя вокруг пикселя обработки, включая текущий, в соответствии с шаблоном сканирования.
[0087] Выполняют 4-точечное преобразование Адамара считываемых пикселей.
[0088] Спектральная фильтрация по формулам (1) и (2).
[0089] Первый компонент спектра, соответствующий значению DC, пропускается без фильтрации.
[0090] Выполняют обратное 4-точечное преобразование Адамара отфильтрованного спектра.
[0091] После этапа фильтрации отфильтрованные пиксели помещаются в свои исходные положения в буфер накопления.
[0092] После завершения фильтрации пикселей накопленные значения нормализуются по количеству групп обработки, используемых для каждой фильтрации пикселей. Благодаря использованию заполнения одного сэмпла вокруг блока количество групп обработки равно 4 для каждого пикселя в блоке, а нормализация выполняется посредством сдвига вправо на 2 бита.
[0093] Видно, что все пиксели в блоке могут обрабатываться независимо, если требуется максимальный параллелизм.
[0094] В этих вариантах осуществления пороговое значение THR установлено на предварительно заданное значение, например 128, что в случае простой реализации требует хранения 128 (1 << 7) записей 7-битных значений для каждого QP.
[0095] Размер LUT влияет на количество требований к встроенной памяти и стоимость аппаратной реализации фильтра. Чтобы уменьшить объем встроенной памяти, LUT рассчитывается только для ограниченного набора QP, начиная с QP 20 с постоянным интервалом 8. Всего сохранено пять предварительно заданных LUT (для пяти групп QP). Для фильтрации текущего блока QP CU округляется до ближайшего из таблицы.
[0096] Для дальнейшего уменьшения размера LUT N младших битов отбрасываются (или игнорируются) во время формирования LUT. Это позволяет иметь разреженное табличное представление.
[0097] Для примерной реализации A N равно 2, что приводит к 7-2=5 битам глубины таблицы (32 записи 7-битных значений);
[0098] Для примерной реализации B N равно 3, что приводит к 7-3=4 битам глубины таблицы (16 записей 7-битных значений).
[0099] Таким образом, общий объем памяти, необходимый для всего хранилища LUT:
[00100] Для примерной реализации A: 5×32x7 бит=1120 бит=140 байтов;
[00101] Для примерной реализации B: 5×16x7 бит=560 бит=70 байтов;
[00102] Примерная реализация B нацелена на 16 байтов размера LUT, чтобы обеспечить параллельный доступ в программной реализации из-за возможности хранить всю LUT в одном 16-байтовом регистре SSE, поэтому предлагается эта конфигурация.
[00103] Если используется преобразование Адамара и отфильтрованный пиксель помещается в его исходное положение в соответствии с предварительно заданным шаблоном сканирования, то следующий псевдокод описывает процесс фильтрации способа 300:
// сканирование восстановленных/предсказанных пикселей
const int x0=pIn [p0];
const int x1=pIn [p1];
const int x2=pIn [p2];
const int x3=pIn [p3]; // p0-p3 определяют шаблон сканирования
// 1D прямое преобразование Адамара
const int y0=x0+x2;
const int y1=x1+x3;
const int y2=x0-x2;
const int y3=x1-x3;
const int t0=y0+y1;
const int t1=y0-y1;
const int t2=y2+y3;
const int t3=y2-y3;
// фильтрация в частотной области
const int z0=pTbl [t0];
const int z1=pTbl [t1];
const int z2=pTbl [t2];
const int z3=pTbl [t3];
// обратное преобразование Адамара
const int iy0=z0+z2;
const int iy1=z1+z3;
const int iy2=z0-z2;
const int iy3=z1-z3;
// вывод отфильтрованного пикселя
pOut [p0_out] = iy0+iy1;
[00104] Если используется преобразование Адамара, и более одного отфильтрованного пикселя из линейного буфера отфильтрованных сэмплов добавляются в буфер накопления, то следующий псевдокод описывает процесс фильтрации этого сценария:
// сканирование восстановленных/предсказанных пикселей
const int x0=pIn [p0];
const int x1=pIn [p1];
const int x2=pIn [p2];
const int x3=pIn [p3]; // p0-p3 определяют шаблон сканирования
// 1D прямое преобразование Адамара
const int y0=x0+x2;
const int y1=x1+x3;
const int y2=x0-x2;
const int y3=x1-x3;
const int t0=y0+y1;
const int t1=y0-y1;
const int t2=y2+y3;
const int t3=y2-y3;
// фильтрация в частотной области
const int z0=pTbl [t0];
const int z1=pTbl [t1];
const int z2=pTbl [t2];
const int z3=pTbl [t3];
// обратное преобразование Адамара
const int iy0=z0+z2;
const int iy1=z1+z3;
const int iy2=z0-z2;
const int iy3=z1-z3;
[00105] В качестве альтернативного варианта осуществления буфер накопления должен быть инициализирован посредством неотфильтрованных значений пикселей, умноженных на максимальное количество значений пикселей, которые должны быть добавлены в блок. Максимальное количество значений пикселей, добавляемых в блок, определяется на основе шаблона сканирования. Шаблон сканирования действительно определяет количество значений пикселей, добавляемых для каждого положения. Исходя из этого, максимальное количество из всех положений в блоке может быть выбрано и использовано во время инициализации буфера накопления. Затем на каждом этапе накопления неотфильтрованное значение пикселя вычитается из соответствующего отфильтрованного значения и добавляется в буфер накопления:
// накопление отфильтрованных пикселей
pOut [p0] + = iy0+iy1 // p0-p3 определяют шаблон сканирования
pOut [p1] + = iy0-iy1
pOut [p2] + = iy2+iy3
pOut [p3] + = iy2-iy3
Для уменьшения глубины цвета накопленных значений пикселей перед помещением в буфер накопления результат обратного преобразования может быть нормализован на размер преобразования (m):
pOut[p0] += ((iy0+iy1) >> HTDF_BIT_RND4);
pOut[p1] += ((iy0-iy1) >> HTDF_BIT_RND4);
pOut[p2] += ((iy2+iy3) >> HTDF_BIT_RND4);
pOut[p3] += ((iy2-iy3) >> HTDF_BIT_RND4);
где HTDF_BIT_RND4 равно 2 для размера преобразования 4.
[00106] Этот вариант осуществления позволяет системе избежать сохранения количества пикселей, добавленных к текущему положению, и позволяет выполнять заменяющее деление и умножение посредством операции сдвига на последнем этапе нормализации и этапе инициализации буфера накопления соответственно, если максимальное количество добавленных значений пикселей является степенью, например, 2, 4, 8 и т.д.
Для точности этапа нормализации это можно сделать следующим образом:
// нормализация
pFiltered[p0] = CLIP3(0, (1 << BIT_DEPTH) - 1, (pOut[p0] + HTDF_CNT_SCALE_RND) >> HTDF_CNT_SCALE);
где HTDF_CNT_SCALE - это Log2 количества пикселей, помещенных в буфер накопления, например, для количества 4 HTDF_CNT_SCALE равно 2, и HTDF_CNT_SCALE_RND равно (1 << (HTDF_CNT_SCALE - 1)). CLIP3 - это функция отсечения, которая обеспечивает нахождение отфильтрованного сэмпла в допустимом диапазоне между минимальным и максимальным значением сэмпла.
[00107] Как было упомянуто выше, чтобы избежать изменения средней яркости отфильтрованного блока, может быть выгодно пропустить фильтрацию первого компонента спектра (соответствующего значению DC). Это дополнительно позволяет упростить реализацию фильтра. В этом случае этап фильтрации выглядит следующим образом:
// фильтрация в частотной области
const int z0 = t0;
const int z1 = pTbl[t1];
const int z2 = pTbl[t2];
const int z3 = pTbl[t3];
[00108] Для каждого пикселя внутри восстановленного блока или предсказанного блока шаблон сканирования выбирается на основе положения фильтрующего пикселя внутри восстановленного блока или предсказанного блока для этапов 302 и 310. Шаблон сканирования выбран, чтобы гарантировать, что все пиксели будут внутри восстановленного CU или педсказанного CU и расположены близко к пикселю обработки. Внутри шаблона можно использовать произвольный порядок сканирования. Например, предварительно заданный шаблон сканирования определяется как набор пространственных или растровых смещений относительно положения текущего пикселя внутри восстановленного блока или предсказанного блока, где смещения указывают на соседние пиксели внутри восстановленного блока или предсказанного блока. Ниже приведен пример шаблона сканирования: (0,0), (0,1), (1,0), (1,1)
[00109] Фиг. 4A иллюстрирует пример шаблонов для разного положения пикселя внутри квадратного блока (например, квадратный предсказанный блок CU или квадратный восстановленный блок CU). Согласно этой фигуре граничные пиксели могут быть отфильтрованы на основе 4-точечного преобразования, а центральные пиксели могут быть отфильтрованы на основе 8-точечного преобразования.
[00110] Для прямоугольных восстановленных блоков или предсказанных блоков, в которых размер одной стороны больше размера другой стороны, сканирование должно выполняться по длинной стороне. Например, для горизонтального прямоугольного блока можно использовать следующий порядок сканирования
(0,-3), (0,-2), (0,-1), (0,0), (0,1), (0,2), (0,3), (0,4),
где в каждой паре (y, x) x - горизонтальное смещение, а y - вертикальное смещение относительно положения фильтрующего пикселя внутри фильтрующего восстановленного или предсказанного блока.
[00111] Предлагаемый фильтр может применяться выборочно в зависимости от условий:
для восстановленных блоков или предсказанных блоков с ненулевым остаточным сигналом;
в зависимости от размера блока, например, для небольшого восстановленного блока или предсказанного блока (минимальный размер меньше порогового значения);
в зависимости от соотношения сторон восстановленного блока или предсказанного блока;
в зависимости от режима предсказания (внутреннее или внешнее) восстановленного блока или предсказанного блока, например, посредством применения фильтра только к внешне предсказанным блокам; или же
для любой комбинации описанных выше условий.
Например, чтобы избежать обработки небольших блоков, ваш фильтр может быть пропущен (не применен), если размер блока меньше или равен 4×4 пикселей. Это снижает сложность наихудшего случая, который обычно соответствует обработке наименьшего блока.
В качестве другого примера фильтр применяется только к блокам, которые имеют ненулевой остаточный сигнал. Это выгодно, если использовалось квантование или остатки, поскольку фильтр предназначен для улучшения ошибки квантования. Если в блоке нет остатка, это может указывать на то, что предсказание хорошее и дополнительная фильтрация не требуется.
В качестве другого примера, поскольку внутреннее предсказание обычно хуже, чем внешнее предсказание, фильтр может применяться к блокам, предсказанным с внутренним предсказанием, независимо от наличия ненулевого остатка и применяться к блокам с внешним предсказанием, только если блок имеет ненулевой остаточный сигнал.
[00112] Сигма параметра фильтра и шаблон сканирования могут различаться в зависимости от условий, перечисленных выше.
[00113] Фиг. 4B иллюстрирует эквивалентную форму фильтра с учетом одного пикселя внутри текущего блока для примерного шаблона сканирования (0,0), (0,1), (1,0), (1,1). Для фильтрации текущего пикселя используется квадрат размером 3×3 пикселя (текущий пиксель выделен темно-серым цветом в центре квадрата 3×3). Отфильтрованный пиксель получается посредством объединения отфильтрованных сэмплов области преобразования из четырех групп 2×2. Можно понять, что если текущий пиксель расположен на границе блока (например, верхней границе), верхняя левая и верхняя правая группы 2×2 недоступны, и только две группы 2×2 (нижняя левая и нижняя правая) могут использоваться для фильтрации. Кроме того, если текущий пиксель расположен в углу блока (например, в верхнем левом углу), для фильтрации может использоваться только одна группа 2×2 (нижняя правая).
[00114] Чтобы повысить качество фильтрации посредством использования дополнительных четырех групп 2×2 для граничных и угловых пикселей, текущий блок может быть заполнен дополнительными сэмплами. На фиг. 4C показан пример заполнения слева и сверху. Сэмплы заполнения можно брать из уже восстановленных блоков.
[00115] Для дальнейшей унификации процесса фильтрации для всех пикселей в блоке (четыре группы 2×2 используются для фильтрации всех пикселей в текущем блоке) в дополнение к верхнему левому заполнению текущий блок также может быть расширен посредством нижнего правого заполнения, как показано на фиг. 4D. Унификация фильтрации выгодна благодаря упрощению реализации посредством исключения особых случаев обработки угловых пикселей и/или граничных пикселей.
[00116] Сэмплы заполнения предпочтительно берутся из скорректированных соседних сэмплов из уже восстановленных блоков. В современных видеокодеках эти уже восстановленные блоки могут располагаться либо слева, либо сверху от текущего блока, либо справа или снизу, в зависимости от порядка восстановления блоков. Используя дополнительную информацию из скорректированных сэмплов, улучшается качество фильтрации и делается переход между блоками более плавным.
[00117] Получение восстановленных сэмплов из скорректированных блоков или ранее восстановленных блоков может потребовать дополнительной нагрузки на память для аппаратной или программной реализации. Чтобы свести к минимуму или исключить дополнительную память, выгодно использовать сэмплы, предназначенные для внутреннего предсказания текущего блока, которые обычно берутся из одной, двух или более строк и столбцов из соседних блоков, скорректированных под границы текущего блока. Эти сэмплы обычно хранятся в быстродействующей памяти (также известной как «линейный» буфер) для легкого доступа для внутреннего предсказания и называются опорными сэмплами внутреннего предсказания.
[00118] Следует дополнительно отметить, что в некоторых реализациях перед выполнением внутреннего предсказания опорный сэмпл (внутренние опорные сэмплы) предварительно обрабатывается перед предсказанием, например, посредством сглаживания, повышения резкости, удаления звона или двусторонней фильтрации. В этом случае может быть выгодно использовать предварительно обработанные сэмплы для заполнения текущего блока.
[00119] Если некоторые сэмплы в заполненной области недоступны из-за порядка восстановления скорректированного блока, требуемые сэмплы могут быть заполнены из пикселей расширяющейся границы текущего блока до заполненной области, как показано на фиг. 4D.
[00120] На фиг.5А показана блок-схема, иллюстрирующая этапы соответствующего способа 500 внутриконтурной фильтрации согласно варианту осуществления. Восстановленный блок содержит множество пикселей. Способ 500 содержит следующие этапы, на которых: загружают (502) текущий пиксель и его соседние пиксели в линейный буфер в соответствии с предварительно заданным шаблоном сканирования; получают (504) компоненты спектра посредством выполнения одномерного преобразования пикселей в линейном буфере; получают (506) отфильтрованные компоненты спектра посредством умножения каждого компонента спектра на коэффициент усиления, при этом коэффициент усиления зависит от соответствующего компонента спектра и параметра фильтрации; получают (508) отфильтрованные пиксели посредством выполнения обратного одномерного преобразования для отфильтрованных компонентов спектра; и формируют (510) отфильтрованный восстановленный блок на основе отфильтрованных пикселей, оцененных на предыдущих этапах обработки. Способ 500 может выполняться посредством устройства кодирования, показанного на фиг. 1, и устройства декодирования, показанного на фиг. 2. Подробная информация 300 на фиг. 3A или информация 300’ на фиг. 3B также применяются к способу 500, как показано на фиг. 5А.
[00121] Подобно фиг. 5A, фиг. 5B показывает блок-схему, иллюстрирующую этапы соответствующего способа 500' внутриконтурной фильтрации согласно другому варианту осуществления. В этом примере блок (или кадр) - это предсказанный блок, а отфильтрованный блок - это отфильтрованный предсказанный блок. Подробное описание фигуры 5B аналогично фигуре 5A.
[00122] Обсуждается аппаратная реализация.
[00123] Фильтр области преобразования Адамара размещается сразу после восстановления блока и обрабатывает сэмплы, которые могут быть задействованы в последующем восстановлении блоков, в частности, в качестве опорных сэмплов внутреннего предсказания. Таким образом, задержка, вносимая фильтром, должна быть минимизирована, чтобы гарантировать, что весь процесс восстановления не будет сильно затронут.
[00124] Преобразование Адамара считается относительно простым для аппаратной реализации. Для его реализации требуются только сложения, а не умножения. Как видно из нижеприведенного Псевдокода 1, прямое и обратное преобразование содержит 4 сложения, которые могут быть выполнены параллельно или посредством повторного использования промежуточных результатов с двумя последовательными операциями сложения.
Псевдокод 1
[00125]
[00126] Прямое и обратное преобразование Адамара может быть реализовано аппаратно с использованием комбинационной логики. Тем больше внимания требуется для быстрого и параллельного доступа к LUT.
[00127] Обсуждается LUT на основе SRAM.
[00128] В этом примере реализации LUT хранится во встроенном статическом RAM с одним портом (фигура 6).
[00129] Как только данные предыдущего этапа обработки становятся доступными в буфере по переднему фронту тактового сигнала, доступ к ним осуществляется посредством комбинационной логики, реализующей прямое преобразование Адамара (содержащее два последующих сложения). После завершения адрес комбинационной логики доступен для каждой LUT. С использованием инвертора и заднего фронта тактового сигнала доступ к данным осуществляется из SRAM. Вторая комбинационная логика, реализующая обратное преобразование Адамара и нормализацию, запускается сразу после получения данных из LUT. Выходные отфильтрованные сэмплы становятся доступными в конце текущего тактового цикла и готовы к обработке посредством следующего алгоритма при следующем переднем фронте тактового сигнала.
[00130] Обсуждается LUT на основе триггеров.
[00131] Учитывая, что одна таблица для процесса фильтрации ограничена 16 записями, более эффективно реализовать LUT на основе триггеров. Такая схема не требует нескольких LUT для параллельной обработки и фронта тактового сигнала для доступа к данным. Параллельный доступ обеспечивается посредством мультиплексора, как показано на фигуре 7, иллюстрирующей примерную схему для обработки одной группы 2×2. В предлагаемой схеме требуется 16 триггеров по 7 бит для обеспечения параллельного доступа в процессе фильтрации. LUT, специфичная для QP, может быть загружена в триггеры, как только QP для текущей CU станет доступным.
[00132] Объединение результатов фильтрации четырех групп 2×2 с повторным использованием результатов одного и того же выходного сигнала окончательного фильтра пространственной группы формируется, как показано на фигуре 8.
[00133] Проведенный выше анализ позволяет сделать вывод, что предложенный фильтр может быть реализован аппаратно за один такт с использованием либо SRAM, либо реализации LUT на основе триггера.
[00134] Обсуждается анализ сложности.
[00135] Измерим влияние на скорость передачи/PSNR относительно точки (точек) привязки.
[00136] Анализ сложности (например, измерение времени кодирования и декодирования, анализ сложности посредством заполнения таблицы ниже).
Тест#
форма фильтра
Вычислительная сложность (Количество умножений /сложений/ сдвигов/проверок*) на сэмпл
Точность умножения
Параллельно-ориентированный (каждый сэмпл можно фильтровать независимо от других сэмплов)
Количество тактовых циклов
потребность в памяти
Как получить коэффициенты фильтра
Минимальный размер CU для применения фильтров
14.3a
3×3
0/20+4 l-бит добавить для цикла/5/6
нет данных
да
< 1 такта
140 байт (32 7-битных значения на группу qp)
Предварительно рассчитаны в LUT
4×8, 8×4
14.3в
3×3
0/20+4 l-бит добавить для цикла/5/6
нет данных
да
< 1 такта
70 байт (16 7-битных значений на группу qp)
Предварительно рассчитаны в LUT
4×8, 8×4
* max/min/abs засчитываются как проверки.
Таблица 1. Обобщенные результаты анализа сложности CE14-3
[00137] Обсуждаются экспериментальные результаты.
[00138] Обсуждаются объективные результаты.
[00139] Объективные показатели представлены в следующих таблицах:
Полностью внутренний Main10
Более BMS-2.0.1 с конфигурацией VTM
Y
у
V.
EncT
DecT
Класс A1
-0.19%
0.29%
0.24%
110%
115%
Класс A2
-0.35%
0.31%
0.32%
109%
112%
Класс B
-0.42%
0.29%
0.32%
109%
113%
Класс C
-0.83%
0.23%
0.42%
110%
110%
Класс E
-0.54%
0.28%
0.19%
109%
114%
Итого
-0.48%
0.28%
0.31%
109%
112%
Класс D
-0.61%
0.47%
0.01%
109%
108%
Класс F (необязательный)
-0.82%
0.07%
0.04%
108%
107%
Main 10 с произвольным доступом
Более BMS-2.0.1 с конфигурацией VTM
Y
у
V.
EncT
DecT
Класс A1
-0.43%
-0.23%
-0.25%
105%
104%
Класс A2
-0.92%
-0.57%
-0.43%
105%
103%
Класс B
-0.69%
-0.02%
-0.27%
106%
104%
Класс C
-0.75%
0.10%
0.14%
105%
104%
Класс E
Итого
-0.70%
-0.14%
-0.19%
105%
104%
Класс D
-0.67%
-0.14%
0.53%
104%
103%
Класс F (необязательный)
-0.77%
0.10%
0.13%
104%
102%
B Main10 с низкой задержкой
Более BMS-2.0.1 с конфигурацией VTM
Y
у
V.
EncT
DecT
Класс A1
Класс A2
Класс B
-0.58%
0.52%
0.54%
104%
104%
Класс C
-0.74%
0.33%
0.52%
104%
104%
Класс E
-0.75%
0.31%
1.09%
102%
101%
Итого
-0.68%
0.40%
0.67%
104%
103%
Класс D
-0.90%
0.75%
0.28%
104%
104%
Класс F (необязательный)
-0.73%
0.20%
-0.09%
103%
102%
Таблица 2. Производительность кодирования теста 14-3a
Полностью внутренний Main10
Более BMS-2.0.1 с конфигурацией VTM
Y
у
V.
EncT
DecT
Класс A1
-0.17%
0.28%
0.28%
110%
115%
Класс A2
-0.33%
0.27%
0.29%
109%
112%
Класс B
-0.40%
0.31%
0.39%
109%
113%
Класс C
-0.82%
0.20%
0.32%
109%
110%
Класс E
-0.54%
0.34%
0.25%
109%
113%
Итого
-0.47%
0.28%
0.32%
109%
112%
Класс D
-0.65%
0.43%
0.22%
109%
108%
Класс F (необязательный)
-0.81%
0.01%
0.12%
108%
107%
Main 10 с произвольным доступом
Более BMS-2.0.1 с конфигурацией VTM
Y
у
V.
EncT
DecT
Класс A1
-0.41%
-0.36%
-0.24%
105%
105%
Класс A2
-0.92%
-0.49%
-0.37%
105%
103%
Класс B
-0.69%
-0.12%
0.12%
106%
104%
Класс C
-0.75%
0.14%
0.10%
105%
104%
Класс E
Итого
-0.70%
-0.17%
-0.06%
105%
104%
Класс D
-0.69%
-0.30%
0.49%
104%
103%
Класс F (необязательный)
-0.82%
0.11%
0.11%
104%
102%
B Main10 с низкой задержкой
Более BMS-2.0.1 с конфигурацией VTM
Y
у
V.
EncT
DecT
Класс A1
Класс A2
Класс B
-0.57%
0.49%
0.69%
104%
104%
Класс C
-0.76%
0.31%
0.42%
104%
106%
Класс E
-0.67%
-0.66%
-0.48%
102%
102%
Итого
-0.66%
0.14%
0.31%
103%
104%
Класс D
-0.88%
0.92%
0.31%
103%
105%
Класс F (необязательный)
-0.74%
0.38%
-0.15%
103%
102%
Таблица 3. Производительность кодирования теста 14-3b
[00140] Предлагаемая LUT 70 байт с 16 байтами на QP, что позволяет реализовать HW за 1 такт, и т.д. Предложено принять фильтр домена преобразования Адамара в следующую версию VTM.
[00141] Следующие ссылки включены в настоящий документ посредством ссылки, как если бы они были воспроизведены полностью:
[00142] Документ Совместной экспертной группы по видео (JVET - Joint Video Experts Team) JVET-K0068.
[00143] Ниже приведены примеры оптимизации LUT.
[00144] В качестве одного примера 1 для формирования таблицы поиска (LUT) выбирается набор параметров квантования (QP), где набор QP включает в себя первый QP, соответствующий (i) индексу, и второй QP, соответствующий (i+1) индексу, а первый QP и второй QP имеют постоянный интервал. Например, интервал может быть равен 8, 10 или 16.
[00145] Например, выбирая постоянный интервал равным 8 в качестве примера, разреженная таблица с LUT для qp = {20, 28, 36, 44, 52}. Интервал между первым gp 20 и вторым gp 28 равен 8. Точно так же интервал между вторым gp 28 и третьим gp 36 равен 8. При фильтрации выбирается таблица с ближайшим QP.
[00146] В качестве другого примера, если взять постоянный интервал, равный 8, в качестве примера разреженная таблица с LUT для qp = {18, 26, 34, 42, 50}. Интервал между первым GP 18 и вторым GP 26 равен 8. Точно так же интервал между вторым gp 26 и третьим gp 34 равен 8. При фильтрации выбирается таблица с ближайшим QP.
[00147]
Размер LUT: 5×128=640 байт
Ниже приведен псевдокод 2, отражающий, какие QP выбраны для формирования таблиц поиска (LUT).
псевдокод 2
[00148] В псевдокоде HTDF_QP_ROUND представляет постоянный интервал. Использование интервала как степени двойки является преимуществом, позволяя реализовать операцию деления для вычисления индекса как сдвига. Следует отметить, что могут быть выбраны различные значения постоянного интервала, например 2, 4, 10, 15 или 16 и т.д. Более того, в качестве альтернативного варианта осуществления интервал может быть произвольным, и LUT вычисляется для произвольного набора QP.
[00149] В процессе фильтрации индекс, соответствующий LUT для заданного QP, вычисляется как:
int idx = ((qp - HTDF_MIN_QP) + (HTDF_QP_ROUND >> 1)) / HTDF_QP_ROUND;
или, альтернативно, с меньшей точностью:
int idx = (qp - HTDF_MIN_QP) / HTDF_QP_ROUND;
Если постоянный интервал равен степени 2, например, тогда индекс LUT может быть преимущественно рассчитан с использованием операции сдвига вместо деления:
int idx = (qp - HTDF_MIN_QP) >> HTDF_QP_ROUND_LOG2 = (qp - HTDF_MIN_QP) >> 3;
[00150] В другом примере 2 декодер или кодер отбрасывает N битов из значений таблицы, а N является целым числом. Это позволяет иметь разреженное представление LUT, в котором хранятся только выбранные значения из заданного диапазона. Например, N равно 3. Максимальное значение таблицы равно 127 (7 бит), 3 бита отбрасываются, результат - 4 бита, то есть 16 записей 7 битных значений - примерно 16 байт.
[00151] Ниже приведен псевдокод 3, описывающий, как LUT формируется в соответствии с заданным значением qp.
псевдокод 3
В данном примере HTDF_TBL_SH определяет количество отбрасываемых битов, которое может быть 1, 2, 3, 4 и т.д.
Ниже приведен псевдокод, иллюстрирующий доступ к разреженной LUT во время фильтрации:
[00152] При объединении приведенных выше примеров 1 и 2 фиг. 9 в качестве примера показывает результат оптимизации LUT. Как показано на фиг. 9, объединяющей примеры 1 и 2: 5 таблиц × 16 записей × 7 бит=560 бит=70 байт.
[00153] Следует отметить, что количество записей LUT определяется посредством HTDF_SHORT_TBL_THR (пороговое значение из абзаца [0076]) и HTDF_TBL_SH количеством отброшенных битов. Учитывая, что пороговое значение равно 128 (то есть 1 << 7) и отброшено 3 бит, получается, что количество записей в таблице равно 1 << (7-3) = 1 << 4=16. Как описано выше, пороговое значение LUT предпочтительно выбирается так, чтобы результат уравнения из абзаца [0077] был близок к 1, и, как это также описано там, пороговое значение может отличаться в зависимости от QP. Таким образом, для формирования LUT для более высоких значений QP может быть выгодно увеличить пороговое значение со 128 (1 << 7) до, например, 256 (1 << 8). В этом случае для сохранения той же точности записей LUT (например, с отброшенными 3 битами) потребуется 32 записи (32=1 << (8-3) = 1 << 5). В качестве альтернативы, чтобы сохранить тот же размер LUT для более высоких QP, что и для более низких QP, точность может быть дополнительно снижена до 4, чтобы сохранить 16 записей в таблице 16=1 << (8-4) = 1 << 4.
[00154] В некоторых реализациях сохранение ограниченного размера LUT и наличие THR для соблюдения уравнения из абзаца [0077} может быть противоречивым. Действительно, при высоких значениях QP (что приводит к высокому значению σ) сохранение размера LUT, ограниченного, например, 16 записями, может привести к нежелательному разрыву в передаточной функции фильтра (которая представлена посредством LUT) около значения 120, как показано на фиг. 10 (которая также включает в себя способ субсэмплирования LUT посредством отбрасывания 3 младших битов).
[00155] Фиг. 11 представляет ту же таблицу с записями таблицы, построенными поочередно без учета эффекта субсэмплирования LUT, иллюстрирующую разрыв между последней записью LUT с индексом 15 и следующей точкой в передаточной функции фильтра с индексом 16.
[00156] Фиг. 12 иллюстрирует способ, как можно устранить разрыв, используя вспомогательную функцию, проходящую через значение THR в аргументе, соответствующем последней записи LUT+1, например, используя уравнение прямой линии (обозначено зеленым цветом), проходящее через точку THR=128 в аргументе 16 который соответствует аргументу последней записи LUT (который равен 15), увеличенному на 1 или, другими словами, размеру LUT (который равен 16) и пересекает ось x в некоторой точке (например, в значении 11, как в данном примере). Следует отметить, что другие типы вспомогательных функций могут использоваться на основе того же принципа, например экспоненциальная, логарифмическая, параболическая и т.д. или их комбинация.
[00157] Фиг. 13 иллюстрирует пример устранения разрыва посредством взятия максимума из двух значений при формировании LUT, где первое значение - это запись LUT, как описано выше ; а второе - это значение вспомогательной функции (в данном примере прямая линия) при том же аргументе i:
где  представляет вспомогательную функцию, а вспомогательная функция имеет значение, равное THR в i, соответствующем аргументу последней LUT + 1.
[00158] Фиг. 14 иллюстрирует передаточную функцию фильтра после применения описанного выше способа использования вспомогательного уравнения прямой линии и субсэмплирования LUT посредством отбрасывания 3 младших значащих битов.
[00159] Как описано в абзаце [00144], одна LUT может использоваться для группы QP. Чтобы охватить возможный диапазон QP, используется предварительно заданный набор QP, и для каждого QP из набора формируется одна LUT. На фиг.15 показан пример передаточных функций фильтра в зависимости от пяти QP в наборе и соответствующих таблиц (от 0 до 4). В этом примере таблица 4 формируется с использованием способа, описанного в абзацах [00156] - [00157], с прямой вспомогательной функцией, пересекающей ось x в значении 11; а таблица 3 формируется с использованием того же способа с прямой вспомогательной функцией, пересекающей ось x в значении 9. Таблицы, используемые в этом примере, имеют значения в соответствии с:
таблица0 = {0, 2, 10, 19, 28, 36, 45, 53, 61, 70, 78, 86, 94, 102, 110, 118,},
таблица 1 = {0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115,},
таблица2 = {0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103,},
таблица3 = {0, 0, 0, 1, 3, 5, 9, 14, 19, 25, 32, 40, 55, 73, 91, 110,},
таблица4 = {0, 0, 0, 0, 0, 1, 2, 4, 6, 8, 11, 14, 26, 51, 77, 102,},
[00160] Как описано выше в абзацах [00150]-[00153], способ субсэмплирования таблицы может отбрасывать N битов из значений таблицы, чтобы уменьшить размер таблицы. Как также упоминалось в этих абзацах, N может быть различным в зависимости от QP, используемого для формирования определенной таблицы, и выбранного значения THR для этой таблицы. Например, для более низких значений QP параметр фильтрации  относительно ниже, чем для более высоких QP. Таким образом, абсолютное значение THR может быть уменьшено без ущерба для производительности. Кроме того, чтобы сохранить размер таблицы одинаковым для всех QP в наборе (что выгодно для упрощения реализации) и уменьшить частоту субсэмплирования для более низких QP (которые соответствуют меньшему уровню сжатия и лучшему качеству восстановленного изображения), может быть выгодно уменьшить количество отброшенных бит N по сравнению с другими таблицами QP, например, установив N для нижнего QP равным 2 и установив THR равным 64. Фиг. 16 иллюстрирует пример передаточных функций фильтра для пяти QP в наборе на основе соответствующих таблиц (от 0 до 4) с N, установленным на 2 для первой таблицы (соответствует нижнему диапазону QP) и N, установленным на 3 для других таблиц. Этот пример также включает в себя способ использования вспомогательной функции для формирования таблиц 3 и 4, как описано в абзацах [00159] - [00160]. Для таблицы 4 прямолинейная вспомогательная функция пересекает ось абсцисс в значении 11. Для таблицы 4 прямолинейная вспомогательная функция пересекает ось абсцисс в значении 9. Таблицы, используемые в этом примере, имеют значения в соответствии с:
таблица0 = {0, 0, 2, 6, 10, 14, 19, 23, 28, 32, 36, 41, 45, 49, 53, 57,},
таблица1 = {0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115,},
таблица2 = {0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103,},
таблица3 = {0, 0, 0, 1, 3, 5, 9, 14, 19, 25, 32, 40, 55, 73, 91, 110,},
таблица4 = {0, 0, 0, 0, 0, 1, 2, 4, 6, 8, 11, 14, 26, 51, 77, 102,},
[00161] Как описано выше в абзацах [00150]-[00153], способ субсэмплирования таблицы может отбрасывать N битов из значений таблицы, чтобы уменьшить размер таблицы. Как также упоминалось в этих абзацах, N может быть различным в зависимости от QP, используемого для формирования определенной таблицы, и выбранного значения THR для этой таблицы. Например, для более высоких значений QP параметр фильтрации σ относительно выше, чем для более низких QP, что может потребовать увеличения значения THR, чтобы уравнение из абзаца [0077] было ближе к 1. В то же время, чтобы сохранить размер LUT одинаковым для всех QP в наборе (что выгодно из-за упрощения реализации), а также учитывая, что для более высоких значений QP восстановленное изображение имеет больше искажений и увеличение субсэмплирования LUT приемлемо из-за субъективно незаметного эффекта для субсэмплирования LUT при наличии сильных артефактов сжатия, значение N наименее значащих битов может быть увеличено до 4, например, для последней и для предпоследней таблицы в наборе. Фиг. 17 иллюстрирует пример передаточных функций фильтра для пяти QP в наборе на основе соответствующих таблиц (от 0 до 4) с N, равным 2 для первой таблицы (таблица 0, соответствующая нижнему диапазону QP), N, установленным на 4 для последней и предпоследней таблиц (таблица 3 и таблица 4), и N, установленным на 3 для других таблиц. В этом примере TRH установлено на 64 для формирования первой таблицы, установлено на 256 для последней и предпоследней таблицы и установлено на 128 для остальных таблиц. Этот пример также включает в себя способ использования вспомогательной функции для формирования таблиц 3 и 4, как описано в абзацах [00159]-[00160]. Для таблицы 4 прямолинейная вспомогательная функция пересекает ось абсцисс в значении 6. Для таблицы 4 прямолинейная вспомогательная функция пересекает ось абсцисс в значении 8. Таблицы, используемые в этом примере, имеют значения в соответствии с:
таблица0 = {0, 0, 2, 6, 10, 14, 19, 23, 28, 32, 36, 41, 45, 49, 53, 57,},
таблица1 = {0, 0, 5, 12, 20, 29, 38, 47, 56, 65, 73, 82, 90, 98, 107, 115,},
таблица2 = {0, 0, 1, 4, 9, 16, 24, 32, 41, 50, 59, 68, 77, 86, 94, 103,},
таблица3 = {0, 0, 3, 9, 19, 32, 47, 64, 81, 99, 117, 135, 154, 179, 205, 230,},
таблица4 = {0, 0, 0, 2, 6, 11, 18, 27, 38, 51, 64, 96, 128, 160, 192, 224,},
[00162] Фиг. 18 - это блок-схема устройства 600, которое можно использовать для реализации различных вариантов осуществления. Устройство 600 может быть устройством кодирования, как показано на фиг. 1, и устройством декодирования, как показано на фиг. 2. Кроме того, устройство 600 может содержать один или несколько описанных элементов. В некоторых вариантах осуществления устройство 600 оснащено одним или несколькими устройствами ввода/вывода, такими как динамик, микрофон, мышь, сенсорный экран, малая клавиатура, клавиатура, принтер, дисплей и т.п. Устройство 600 может включать в себя один или несколько центральных процессоров (CPU - central processing unit) 610, память 620, запоминающее устройство 630 большой емкости, видеоадаптер 640 и интерфейс 660 ввода-вывода, подключенный к шине. Шина является одной или несколькими из нескольких шинных архитектур любого типа, включая шину памяти или контроллер памяти, периферийную шину, видеошину и т.п.
[00163] CPU 610 может иметь любой тип электронного процессора данных. Память 620 может иметь или быть системной памятью любого типа, такой как статическое оперативное запоминающее устройство (SRAM), динамическое оперативное запоминающее устройство (DRAM), синхронное DRAM (SDRAM), постоянное запоминающее устройство (ROM), их комбинация, или тому подобное. В варианте осуществления память 620 может включать в себя ROM для использования при загрузке и DRAM для хранения программ и данных для использования во время выполнения программ. В вариантах осуществления память 620 является энергонезависимой. Запоминающее устройство 630 большой емкости включает в себя любой тип запоминающего устройства, в котором хранятся данные, программы и другая информация, а также для обеспечения доступа к данным, программам и другой информации через шину. Запоминающее устройство 630 большой емкости включает в себя, например, один или несколько из твердотельного накопителя, накопителя на жестком диске, накопителя на магнитном диске, накопителя на оптическом диске и т.п.
[00164] Видеоадаптер 640 и интерфейс 660 ввода-вывода обеспечивают интерфейсы для подключения внешних устройств ввода и вывода к устройству 600. Например, устройство 600 может обеспечивать клиентам интерфейс команд SQL. Как проиллюстрировано, примеры устройств ввода и вывода включают в себя дисплей 690, подключенный к видеоадаптеру 640, и любую комбинацию мыши/клавиатуры/принтера 670, подключенную к интерфейсу 660 ввода-вывода. К устройству 600 могут быть подключены другие устройства, и могут использоваться дополнительные или меньшее количество интерфейсных карт. Например, карта последовательного интерфейса (не показана) может использоваться для обеспечения последовательного интерфейса для принтера.
[00165] Устройство 600 также включает в себя один или несколько сетевых интерфейсов 650, которые включают в себя проводные линии связи, такие как кабель Ethernet и т.п., и/или беспроводные линии связи с узлами доступа или одной или несколькими сетями 680. Сетевой интерфейс 650 позволяет устройству 600 связываться с удаленными устройствами через сети 680. Например, сетевой интерфейс 650 может обеспечивать связь с базой данных. В варианте осуществления устройство 600 подключено к локальной сети или глобальной сети для обработки данных и обмена данными с удаленными устройствами, такими как другие блоки обработки, Интернет, удаленные хранилища и т.п.
[00166] Предлагаемая схема внутриконтурного фильтра или фильтра предсказания имеет следующие преимущества по сравнению с традиционными способами адаптивной фильтрации, такими как ALF:
Предлагаемый фильтр частотной области получает параметры фильтрации (коэффициенты усиления частотной области) из восстановленного кадра или предсказанного блока на стороне декодера, поэтому параметры фильтрации не требуется передавать из кодера на сторону декодера.
ALF требует комплексной оптимизации скорости и искажения (RDO) на стороне кодера для уменьшения количества взвешенных коэффициентов для передачи. Предлагаемый способ не требует комплексной RDO на стороне кодера (без передачи параметров) и применяется для всех блоков, удовлетворяющих предварительно заданным условиям.
ALF - это линейный фильтр в пиксельной области. Предлагаемый фильтр является нелинейным, поскольку коэффициент усиления для каждого компонента одномерного спектра зависит от значения этого компонента спектра. Это позволяет добиться дополнительной выгоды кодирования от нелинейной обработки.
ALF требует универсальных умножителей на стороне декодера. В предлагаемом способе фильтрация может быть реализована в виде таблицы поиска, так как усиление для каждого коэффициента спектра меньше единицы. Поэтому предложенный способ можно реализовать без умножения.
[00167] Таким образом, обеспечен фильтр, позволяющий повысить эффективность кодирования видео с низкой сложностью.
[00168] Хотя конкретный признак или аспект раскрытия может быть раскрыт только в отношении одной из нескольких реализаций или вариантов осуществления, такой признак или аспект может быть объединен с одним или несколькими другими признаками или аспектами других реализаций или вариантов осуществления, которые могут быть желательными и выгодными для любого данного или конкретного применения. Кроме того, в той степени, в которой термины «включать в себя», «иметь», «с» или другие их варианты используются либо в подробном описании, либо в формуле изобретения, предполагается, что такие термины предназначены для включения в себя аналогично термину «содержать». Кроме того, термины «примерный» и «например» означают просто как пример, а не лучший или оптимальный. Возможно, использовались термины «соединенный» и «связанный», а также производные. Следует понимать, что эти термины могли использоваться для обозначения того, что два элемента совместно функционируют или взаимодействуют друг с другом независимо от того, находятся ли они в прямом физическом или электрическом контакте, или они не находятся в прямом контакте друг с другом.
[00169] Хотя конкретные аспекты были проиллюстрированы и описаны в данном документе, специалистам в данной области будет понятно, что различные альтернативные и/или эквивалентные реализации могут быть заменены конкретными аспектами, показанными и описанными без отклонения от объема настоящего раскрытие. Настоящая заявка предназначена для охвата любых адаптаций или вариаций конкретных аспектов, обсуждаемых здесь.
[00170] Хотя элементы в следующей формуле изобретения изложены в определенной последовательности с соответствующей маркировкой, если изложение формулы изобретения иным образом не подразумевает конкретную последовательность для реализации некоторых или всех этих элементов, эти элементы не обязательно должны быть ограничены реализацией в этой конкретной последовательность.
[00171] Многие альтернативы, модификации и вариации будут очевидны специалистам в данной области техники в свете изложенного выше. Конечно, специалисты в данной области техники легко признают, что существует множество применений изобретения, выходящих за рамки описанных здесь. Хотя настоящее изобретение было описано со ссылкой на один или несколько конкретных вариантов осуществления, специалисты в данной области техники признают, что в него могут быть внесены многие изменения, не выходящие за рамки объема настоящего изобретения. Таким образом, следует понимать, что в рамках прилагаемой формулы изобретения и ее эквивалентов изобретение может быть реализовано иначе, чем конкретно описано в данном документе.