СПОСОБ ОПРЕДЕЛЕНИЯ ПОЗИЦИЙ ОПОРНЫХ ОТСЧЕТОВ ПРИ КОДИРОВАНИИ ВИДЕО Российский патент 2024 года по МПК H04N19/70 H04N19/187 

Описание патента на изобретение RU2824188C2

Область техники, к которой относится изобретение

Настоящий патентный документ относится к способам, устройствам и системам для кодирования видео.

Уровень техники

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

Раскрытие сущности изобретения

Предложены устройства, системы и способы, относящиеся к кодированию цифрового видео и, в частности, к управлению векторами движения. Предлагаемые способы могут быть применены как к существующим стандартам кодирования видео (например, высокоэффективное видео кодирование (High Efficiency Video Coding (HEVC)) или универсальное видео кодирование (Versatile Video Coding)), так и к стандартам видео кодирования будущего или к видеокодекам будущего.

Согласно одному репрезентативному аспекту, предлагаемая технология может быть использована для создания способа обработки видео. Способ содержит этап, на котором выполняют преобразование между текущим изображением видео и кодированным представлением видео. Текущее изображение содержит первое окно, имеющее размер W x H отсчетов, где W и H являются целыми числами. Опорное изображение, ассоциированное с текущим изображением, содержит второе окно, имеющее размер W’ x H’ отсчетов, где W’ и H’ являются целыми числами. Отсчеты в первом окне и во втором окне подвергают обработке с использованием одного и того же правила обработки в процессе преобразования, и значения W, H, W’ и H’ удовлетворяют некоторому ограничению.

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

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

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

Согласно другому репрезентативному аспекту, предлагаемая технология может быть использована для обеспечения способа обработки видео. Способ содержит этап, на котором выполняют преобразование между текущим изображением видео и кодированным представлением видео. Текущее изображение содержит первое окно, имеющее размер W x H отсчетов, где W и H являются целыми числами. Опорное изображение, ассоциированное с текущим изображением, содержит второе окно, имеющее размер W’ x H’ отсчетов, где W’ и H’ являются целыми числами, и позиция верхнего левого угла второго окна обозначена (X0, Y0). Отсчеты в первом окне и во втором окне подвергаются обработке с использованием одного и того же правила обработки в процессе преобразования. Целая часть координаты опорного отсчета ограничена в диапазоне, определяемом частично на основе первого окна или второго окна.

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

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

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

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

Согласно другому репрезентативному аспекту, предлагаемая технология может быть использована для обеспечения другого способа обработки видео. Способ содержит этап, на котором выполняют преобразование между текущим видеоблоком и кодированным представлением текущего видеоблока, причем в процессе преобразования, опорное изображение текущего видеоблока редискретизируют в соответствии с правилом на основе размеров текущего видеоблока.

Согласно другому репрезентативному аспекту, предлагаемая технология может быть использована для обеспечения другого способа обработки видео. Способ содержит этап, на котором выполняют преобразование между текущим видеоблоком и кодированным представлением текущего видеоблока, причем в процессе преобразования использование некого инструмента кодирования для текущего видеоблока избирательно активизируется или деактивизируется в зависимости от разрешения/размера опорного изображения текущего видеоблока относительно разрешения/размера текущего видеоблока.

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

Согласно другому репрезентативному аспекту, предлагаемая технология может быть использована для обеспечения другого способа обработки видео. Способ содержит этап, на котором выполняют преобразование между множеством видеоблоков и кодированными представлениями указанного множества видеоблоков, причем в процессе преобразования определяются первое окно соответствия для первого видеоблока и второе окно соответствия для второго видеоблока, при этом отношение ширины и/или высоты первого окна соответствия к соответствующим параметрам второго окна соответствия находится в соответствии с правилом, основанным на потоке битов данных соответствия.

Далее, согласно одному из репрезентативных аспектов, предложено устройство в видео системе, содержащее процессор и энергонезависимое запоминающее устройство с записанными в нем командами. Команды, при исполнении команд процессором, вызывают выполнение процессором одного или более из предлагаемых способов.

Согласно одному из репрезентативных аспектов, предложено декодирующее устройство для видео, содержащее процессор, выполненный с возможностью выполнения изложенного здесь способа.

Согласно одному из репрезентативных аспектов, предложено кодирующее устройство для видео, содержащее процессор, выполненный с возможностью выполнения изложенного здесь способа.

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

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

Краткое описание чертежей

Фиг. 1 показывает пример вектора движения субблока (sub-block motion vector (VSB)) и разницы векторов движения.

Фиг. 2 показывает пример видеоблока размером 16x16, разбитого на 16 областей размером 4x4.

Фиг. 3A показывает пример конкретной позиции в отсчете.

Фиг. 3B показывает другой пример конкретной позиции в отсчете.

Фиг. 3C показывает еще один другой пример конкретной позиции в отсчете.

Фиг. 4A показывает пример позиций текущего отсчета и соответствующего ему опорного отсчета.

Фиг. 4B показывает другой пример позиций текущего отсчета и соответствующего ему опорного отсчета.

Фиг. 5 представляет блок-схему примера аппаратной платформы для реализации способов декодирования данных визуальных медиа или кодирования данных визуальных медиа, описываемых в настоящем документе.

Фиг. 6 показывает логическую схему примера способа кодирования видео.

Фиг. 7 представляет блок-схему примера системы обработки видео, в которой могут быть реализованы предлагаемые способы.

Фиг. 8 представляет блок-схему, иллюстрирующую пример системы кодирования видео.

Фиг. 9 представляет блок-схему, иллюстрирующую кодирующее устройство согласно некоторым вариантам настоящего изобретения.

Фиг. 10 представляет блок-схему, иллюстрирующую декодирующее устройство согласно некоторым вариантам настоящего изобретения.

Фиг. 11 показывает представление логической схемы способа обработки видео согласно предлагаемой технологии.

Фиг. 12 показывает представление логической схемы другого способа обработки видео согласно предлагаемой технологии.

Фиг. 13 показывает представление логической схемы другого способа обработки видео согласно предлагаемой технологии.

Фиг. 14 показывает представление логической схемы другого способа обработки видео согласно предлагаемой технологии.

Фиг. 15 показывает представление логической схемы другого способа обработки видео согласно предлагаемой технологии.

Осуществление изобретения

1. Кодирование видео в стандарте HEVC/H.265

Стандарты кодирования видео развивались главным образом через разработку хорошо известных стандартов ITU-T и ISO/IEC. Союз ITU-T выпустил стандарты H.261 и H.263, организация ISO/IEC выпустила стандарты MPEG-1 и MPEG-4 Visual, а также эти две организации совместно выпустили стандарты H.262/MPEG-2 Video и H.264/MPEG-4 Advanced Video Coding (AVC) (усовершенствованное видео кодирование) и H.265/HEVC. Со времени стандарта H.262, стандарты кодирования видео основаны на гибридной структуре кодирования видео, использующей временное прогнозирование плюс трансформационное кодирование. Для исследований в области технологий кодирования видео будущего, которые будут разработаны после технологии кодирования HEVC, группа экспертов по кодированию видео (VCEG) и группа экспертов по кинематографии (MPEG) в 2015 г. совместно основали Объединенную группу исследований в области видео (Joint Video Exploration Team (JVET)). С тех пор группа JVET разработала множество новых способов и ввела их в эталонное программное обеспечение, называемое Совместной исследовательской моделью (Joint Exploration Model (JEM)). В апреле 2018 г. группа VCEG (Q6/16) и отдел ISO/IEC JTC1 SC29/WG11 (MPEG) создали объединенную группу экспертов в области видео (Joint Video Expert Team (JVET)) для работ над стандартом VVC, имея целью добиться снижения требуемой скорости передачи битов данных на 50% по сравнению с кодированием HEVC.

2. Общий обзор

2.1. Адаптивное изменение разрешения (Adaptive Resolution Change (ARC))

В стандартах кодирования AVC и HEVC нет возможности изменять разрешение без необходимости ввести изображение с увеличенным цифровым разрешением (IDR) или изображение с внутрикадровой точкой произвольного доступа (intra random access point (IRAP)); такая способность может называться адаптивным изменением разрешения (adaptive resolution change (ARC)). Имеется ряд случаев использования или сценариев приложений, которые могли бы выиграть от применения функции изменения ARC, включая следующее:

– Адаптация скорости при видеотелефонной и видео конференцсвязи: Для адаптации кодированного видео к изменениям условий в сети связи, когда эти условия в сети связи ухудшаются, так что доступная ширина полосы пропускания становится меньше, кодирующее устройство может адаптироваться к этим условиям путем кодирования изображений с меньшим разрешением. В настоящее время изменение разрешения изображения может быть произведено только после изображения в формате IRAP; с чем связаны несколько проблем. Изображение в формате IRAP с разумным качеством будет намного больше по объему, чем изображение в формате межкадрового прогнозирования, и будет соответственно более сложным для декодирования: это стоит затрат времени и ресурсов. Это является проблемой, если декодирующее устройство запрашивает изменение разрешение по причинам загрузки. Это может также нарушить условия буферизации с малой задержкой, вынудить проведение повторной синхронизации звука, так что сквозная задержка потока увеличится, по меньшей мере временно. Это может ухудшить восприятие пользователем.

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

– Быстрый старт потоковых передач: Для потоковых приложений (стримы), общим является то, что приложение должно записать в буфере имеющий некоторую длину отрезок потока декодированных изображений прежде, чем начать представление этого потока изображений на дисплее. Использование начальной части потока битов данных с меньшим разрешением должно позволить приложению иметь достаточный объем изображений в буфере, чтобы начать воспроизведение быстрее.

Адаптивное переключение потоков при потоковых передачах: Спецификации динамического адаптивного потокового HTTP-вещания (Dynamic Adaptive Streaming over HTTP (DASH)) содержат параметр под названием @mediaStreamStructureId. Это позволяет переключаться между различными представлениями в точках произвольного доступа в открытую группу изображений (open-GOP) с недекодируемыми ведущими изображениями, например, чистые изображения с произвольным доступом (CRA-изображения) с ассоциированными с ними изображениями с произвольным доступом и пропущенным ведущим изображением (RASL-изображения) в стандарте кодирования HEVC. Когда два разных представления одного и того же видео имеют разные скорости передачи битов данных, но одинаковое пространственное разрешение, тогда как они имеют одинаковое значение параметра @mediaStreamStructureId, может быть осуществлено переключение между двумя представлениями на уровне CRA-изображения с ассоциированными RASL-изображениями, и такие RASL-изображения, ассоциированные с переключением на уровне CRA-изображений, могут быть декодированы с приемлемым качеством, следовательно позволяя осуществлять бесшовное переключение. При использовании изменений ARC, параметр @mediaStreamStructureId может также быть полезным для переключения между DASH-представлениями с разными пространственными разрешениями.

Режим изменения ARC также называется динамическим преобразованием разрешения.

Режим изменения ARC может также рассматриваться в качестве специального случая редискретизации опорного изображения (Reference Picture Редискретизация (RPR)), как в документе H.263 Annex P.

2.2. Редискретизация опорного изображения в документе H.263 Annex P

Этот режим описывает алгоритм сворачивания опорного изображения прежде использования этого изображения для прогнозирования. Это может быть полезно для редискретизации опорного изображения, имеющего исходный формат, отличный от формата изображения, прогнозируемого в текущий момент. Это можно также использовать для оценки глобального движения или оценки вращательного движения посредством сворачивания формы, размера и местонахождения опорного изображения. Синтаксис содержит параметры сворачивания для использования, равно как алгоритм редискретизации. Простейший уровень работы для режима редискретизации опорного изображения представляет собой редискретизацию с неявным коэффициентом 4, поскольку только фильтр с конечной импульсной характеристикой (КИХ-фильтр) (FIR) в этом случае необходимо применять в процессах повышающей дискретизации и понижающей дискретизации. В этом случае, не требуются никакие дополнительные сигнализационные издержки, поскольку понятно, что этот режим используется только тогда, когда размер нового изображения (указанный в заголовке изображения), отличается от размера предыдущего изображения.

2.3. Окно соответствия в стандарте кодирования VVC

В стандарте кодирования VVC определено, что окно соответствия имеет форму прямоугольника. Отсчеты внутри окна соответствия принадлежат интересующему изображению. Отсчеты вне этого окна соответствия можно отбрасывать при передаче на выход.

Когда применяется окно соответствия, масштабный коэффициент для редискретизации RPR определяют на основе окон соответствия.

Синтаксис набора параметров изображения RBSP

Параметр pic_width_in_luma_samples специфицирует ширину каждого декодированного изображения согласно набору PPS в единицах отсчетов яркостной составляющей. Параметр pic_width_in_luma_samples не должен быть равен 0, должен быть равен целому кратному значения Max( 8, MinCbSizeY ), и должен быть не больше параметра pic_width_max_in_luma_samples.

Когда флаг subpics_present_flag равен 1, значение параметра pic_width_in_luma_samples должно быть равно pic_width_max_in_luma_samples.

Параметр pic_height_in_luma_samples специфицирует высоту каждого декодированного изображения согласно набору PPS в единицах отсчетов яркостной составляющей. Параметр pic_height_in_luma_samples не должен быть равен 0 и должен быть равен целому кратному значение Max( 8, MinCbSizeY ), и должен быть не больше параметра pic_height_max_in_luma_samples.

Когда флаг subpics_present_flag равен 1, значение параметра pic_height_in_luma_samples должно быть равно pic_height_max_in_luma_samples.

Пусть refPicWidthInLumaSamples и refPicHeightInLumaSamples равны параметрам pic_width_in_luma_samples и pic_height_in_luma_samples, соответственно, для опорного изображения относительно текущего изображения согласно этому набору PPS. Требование соответствия потока битов данных состоит в том, что удовлетворяются все следующие условия:

Флаг conformance_window_flag равный 1 обозначает, что параметры сдвига окна усечения соответствия следуют далее в наборе SPS. Флаг conformance_window_flag равный 0 обозначает, что параметры сдвига окна усечения соответствия не присутствуют.

Сдвиги conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, и conf_win_bottom_offset специфицируют отсчеты изображений в последовательности CVS, получаемой на выходе процедуры декодирования, в терминах прямоугольной области, специфицированной в координатах изображения для вывода. Когда флаг conformance_window_flag равен 0, значения сдвигов conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset признают равными 0.

Окно усечения соответствия содержит отсчеты яркостной составляющей с горизонтальными координатами в изображении от SubWidthC * conf_win_left_offset до pic_width_in_luma_samples − ( SubWidthC * conf_win_right_offset + 1 ) и вертикальными координатами в изображении от SubHeightC * conf_win_top_offset до pic_height_in_luma_samples − ( SubHeightC * conf_win_bottom_offset + 1 ), включительно.

Значение SubWidthC * ( conf_win_left_offset + conf_win_right_offset ) должно быть меньше чем pic_width_in_luma_samples, и значение SubHeightC * ( conf_win_top_offset + conf_win_bottom_offset ) должно быть меньше чем pic_height_in_luma_samples.

Переменные PicOutputWidthL и PicOutputHeightL определяют следующим образом:

PicOutputWidthL = pic_width_in_luma_samples − … (7-43)

SubWidthC * ( conf_win_right_offset + conf_win_left_offset )

PicOutputHeightL = pic_height_in_pic_size_units − … (7-44)

SubHeightC * ( conf_win_bottom_offset + conf_win_top_offset )

Когда параметр ChromaArrayType не равен 0, соответствующие специфицированные отсчеты двух массивов цветностной составляющей представляют собой отсчеты, имеющие координаты ( x / SubWidthC, y / SubHeightC ) на изображении, где ( x, y ) являются координатами на изображении для специфицированных отсчетов яркостной составляющей.

Пусть ppsA и ppsB представляют собой два набора PPS, относящиеся к одному и тому же набору SPS. Требование соответствия потока битов данных состоит в том, что наборы ppsA и ppsB имеют одинаковые значения параметров pic_width_in_luma_samples и pic_height_in_luma_samples, соответственно, наборы ppsA и ppsB должны иметь одинаковые значения сдвигов conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset, соответственно.

2.4. Редискретизация опорного изображения (RPR)

В некоторых вариантах, изменение ARC также известно как редискретизация опорного изображения (RPR). При использовании редискретизации RPR, прогнозирование TMVP не активизируют, если расположенное в той же позиции изображение имеет разрешение, отличное от разрешения текущего изображения. Кроме того, оптический поток BDOF и уточнение DMVR не активизируют, когда опорное изображение имеет разрешение, отличное от разрешения текущего изображения.

Для осуществления нормальной компенсации движения (MC), когда опорное изображение имеет разрешение, отличное от разрешения текущего изображения, интерполяционный раздел определен, как указано ниже:

8.5.6.3 Процедура интерполяции с дробными отсчетами

8.5.6.3.1 Общие положение

Входными данными для этой процедуры являются следующие:

- позиция ( xSb, ySb ) яркостной составляющей, специфицирующая верхний левый отсчет текущего кодируемого субблока относительно верхнего левого отсчета яркостной составляющей в текущем изображении,

- переменная sbWidth, специфицирующая ширину текущего кодируемого субблока,

- переменная sbHeight, специфицирующая высоту текущего кодируемого субблока,

- сдвиг вектора движения, mvOffset,

- уточненный вектор движения, refMvLX,

- массив выбранных отсчетов опорного изображения, refPicLX,

- индекс интерполяционного фильтра с точностью половины отсчета, hpelIfIdx,

- флаг двунаправленного оптического потока, bdofFlag,

- переменная cIdx, специфицирующая индекс цветовой составляющей текущего блока.

Выходными данными этой процедуры являются:

- массив (sbWidth + brdExtSize)x(sbHeight + brdExtSize), predSamplesLX прогнозируемых значений отсчетов.

Размер brdExtSize расширения гранимцы прогнозируемого блока определяют следующим образом:

brdExtSize = ( bdofFlag | | ( inter_affine_flag[ xSb ][ ySb ] && sps_affine_prof_enabled_flag ) ) ? 2 : 0 (8-752)

Переменную fRefWidth устанавливают равной значению PicOutputWidthL для опорного изображения в отсчетах яркостной составляющей.

Переменную fRefHeight устанавливают равной значению PicOutputHeightL для опорного изображения в отсчетах яркостной составляющей.

Вектор движения mvLX устанавливают равным ( refMvLX − mvOffset ).

- Если параметр cIdx равен 0, применяется следующее:

- Масштабные коэффициенты и их представления в формате с фиксированной запятой определены как

hori_scale_fp = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL … (8-753)

vert_scale_fp = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL … (8-754)

- Пусть ( xIntL, yIntL ) обозначает координаты позиции яркостной составляющей в единицах полных отсчетов, и ( xFracL, yFracL ) обозначает сдвиг в единицах 1/16-отсчетов. Эти переменные используют только в этой статье для спецификации позиций в дробных отсчетах внутри массивов refPicLX опорных отсчетов.

- Верхнюю левую координату (xSbIntL, ySbIntL) ограничивающего блока для заполнения отсчетами устанавливают равной ( xSb + ( mvLX[ 0 ] >> 4), ySb + ( mvLX[1] >> 4)).

- Для каждой позиции (xL = 0..sbWidth − 1 + brdExtSize, yL = 0..sbHeight − 1 + brdExtSize) отсчета яркостной составляющей внутри массива predSamplesLX прогнозируемых отсчетов яркостной составляющей, соответствующее значение predSamplesLX[ xL ][ yL ] прогнозируемого отсчета яркостной составляющей определяют следующим образом:

- Пусть (refxSbL, refySbL) и (refxL, refyL) позиции отсчетов яркостной составляющей, указываемые вектором движения ( refMvLX[0], refMvLX[1] ), выраженным в единицах 1/16-отсчета. Переменные refxSbL, refxL, refySbL и refyL определяют следующим образом:

refxSbL = ( ( xSb << 4 ) + refMvLX[ 0 ] ) * hori_scale_fp … (8-755)

refxL = ( ( Sign( refxSb ) * ( ( Abs( refxSb ) + 128 ) >> 8 )

+ xL * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-756)

refySbL = ( ( ySb << 4 ) + refMvLX[ 1 ] ) * vert_scale_fp … (8-757)

refyL = ( ( Sign( refySb ) * ( ( Abs( refySb ) + 128 ) >> 8 ) + yL *

( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-758)

- Переменные xIntL, yIntL, xFracL и yFracL определяют следующим образом:

xIntL = refxL >> 4 … (8-759)

yIntL = refyL >> 4 … (8-760)

xFracL = refxL & 15 … (8-761)

yFracL = refyL & 15 … (8-762)

- Если флаг bdofFlag равен «истинно» (TRUE) или (флаг sps_affine_prof_enabled_flag равен «истинно» (TRUE) и флаг inter_affine_flag[ xSb ][ ySb ] равен «истинно» (TRUE)), и одно или несколько из следующих условий являются истинными (true), значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют посредством процедуры выборки целочисленных отсчетов яркостной составляющей, как это специфицировано в статье 8.5.6.3.3 при (xIntL + ( xFracL >> 3) − 1), yIntL + ( yFracL >> 3) − 1) и refPicLX в качестве входных данных.

- xL равно 0.

- xL равно sbWidth + 1.

- yL равно 0.

- yL равно sbHeight + 1.

- В противном случае, значение predSamplesLX[ xL ][ yL ] прогнозируемого отсчета яркостной составляющей определяют путем фильтрации отсчетов яркостной составляющей в 8-отводном интерполяционном фильтре, как это специфицировано в статье 8.5.6.3.2 при

(xIntL − ( brdExtSize > 0 ? 1 : 0 ), yIntL − (brdExtSize > 0 ? 1 : 0 ) ), (xFracL, yFracL), ( xSbIntL, ySbIntL), refPicLX, hpelIfIdx, sbWidth, sbHeight и ( xSb, ySb ) в качестве входных данных.

- В противном случае (cIdx не равно 0), применяется следующее:

- Пусть (xIntC, yIntC) обозначает координаты позиции отсчета яркостной составляющей в единицах полных отсчетов и ( xFracC, yFracC ) обозначает сдвиг в единицах 1/32 отсчетов. Эти переменные используются только в этой статье для спецификации общих позиций с точностью дробных отсчетов внутри массива refPicLX опорных отсчетов.

- Верхнюю левую координату ( xSbIntC, ySbIntC ) ограничивающего блока для заполнения отсчетами устанавливают равной ( (xSb / SubWidthC ) + ( mvLX[ 0 ] >> 5), ( ySb / SubHeightC ) + ( mvLX[ 1 ] >> 5 ) ).

- Для каждой позиции (xC = 0..sbWidth − 1, yC = 0.. sbHeight − 1) отсчетов цветностной составляющей внутри массива predSamplesLX прогнозируемых отсчет цветностной составляющей, соответствующее значение прогнозируемсого отсчета predSamplesLX[ xC ][ yC ] цветностной составляющей определяют следующим образом:

- Пусть (refxSbC, refySbC) и (refxC, refyC) обозначает позицию цветностной составляющей, указываемую вектором движения (mvLX[0], mvLX[1]), выраженным в единицах 1/32-отсчета. Переменные refxSbC, refySbC, refxC и refyC определяют следующим образом:

refxSbC = ( ( xSb / SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp … (8-763)

refxC = ( ( Sign( refxSbC ) * ( ( Abs( refxSbC ) + 256 ) >> 9 )

+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-764)

refySbC = ( ( ySb / SubHeightC << 5 ) + mvLX[ 1 ] ) * vert_scale_fp (8-765)

refyC = ( ( Sign( refySbC ) * ( ( Abs( refySbC ) + 256 ) >> 9 )

+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-766)

- Переменные xIntC, yIntC, xFracC и yFracC определены следующим образом:

xIntC = refxC >> 5 … (8-767)

yIntC = refyC >> 5 … (8-768)

xFracC = refyC & 31 … (8-769)

yFracC = refyC & 31 … (8-770)

- Значение прогнозируемого отсчета predSamplesLX[ xC ][ yC ] определяют посредством процедуры, специфицированной в статье 8.5.6.3.4 при ( xIntC, yIntC ), ( xFracC, yFracC ), ( xSbIntC, ySbIntC ), sbWidth, sbHeight и refPicLX в качестве входных данных.

8.5.6.3.2 Процедура интерполяционной фильтрации отсчетов яркостной составляющей

Входными данными для этой процедуры являются:

- позиция отсчета яркостной составляющей в единицах полных отсчетов, ( xIntL, yIntL ),

- позиция отсчета яркостной составляющей в единицах дробных отсчетов, ( xFracL, yFracL ),

- позиция отсчета яркостной составляющей в единицах полных отсчетов, ( xSbIntL, ySbIntL ), специфицирующая верхний левый отсчет ограничивающего блока для заполнения опорными отсчетами, относительно верхнего левого отсчета яркостной составляющей в опорном изображении,

- массив опорных отсчетов яркостной составляющей, refPicLXL,

- индекс интерполяционного фильтра с точностью в половину отсчета, hpelIfIdx,

- переменная sbWidth, специфицирующая ширину текущего субблока,

- переменная sbHeight, специфицирующая высоту текущего субблока,

- позиция ( xSb, ySb ) отчета яркосчтной составляющая, специфицирующая верхний левый отсчет текущего субблока относительно верхнего левого отсчета яркостной составляющей в текущем изображении,

Выходными данными этой процедуры является значение прогнозируемого отсчета яркостной составляющей, predSampleLXL

Переменные shift1, shift2 и shift3 определяют следующим образом:

- Переменную shift1 устанавливают равной Min( 4, BitDepthY − 8 ), переменную shift2 устанавливают равной 6 и переменную shift3 устанавливают равной Max( 2, 14 − BitDepthY ).

- Переменную picW устанавливают равной pic_width_in_luma_samples и переменную picH устанавливают равной pic_height_in_luma_samples.

Коэффициенты fL[ p ] интерполяционного фильтра для яркостной составляющей для каждой позиции p с дробной точностью 1/16 отсчета с координатой равной xFracL или yFracL определяют следующим образом:

- Если значение MotionModelIdc[ xSb ][ ySb ] больше 0, и значения sbWidth и sbHeight обе равны 4, коэффициенты fL[ p ] интерполяционного фильтра для яркостной составляющей специфицированы в тблице 2.

- В противном случае, коэффициенты fL[ p ] интерполяционного фильтра для яркостной составляющей специфицированы в тблице 1 в записимости от параметра hpelIfIdx.

Координаты позиций отсчетов яркостной составляющей в единицах полных отсчетов, ( xInti, yInti ), определяют следующим образом для i = 0..7:

- Если флаг subpic_treated_as_pic_flag[ SubPicIdx ] равен 1, применяется следующее:

xInti = Clip3( SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xIntL + i − 3 ) (8-771)

yInti = Clip3( SubPicTopBoundaryPos, SubPicBotBoundaryPos, yIntL + i − 3 ) (8-772)

- В противном случае, (флаг subpic_treated_as_pic_flag[ SubPicIdx ] равен 0), применяется следующее:

xInti = Clip3( 0, picW − 1, sps_ref_wraparound_enabled_flag ?

ClipH( ( sps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY, picW, xIntL + i − 3 ) : … (8-773)

xIntL + i − 3 )

yInti = Clip3( 0, picH − 1, yIntL + i − 3 ) … (8-774)

Координаты позиций отсчетов яркостной составляющей в единицах полных отсчетов далее модифицируют следующим образом для i = 0..7:

xInti = Clip3( xSbIntL − 3, xSbIntL + sbWidth + 4, xInti ) … (8-775)

yInti = Clip3( ySbIntL − 3, ySbIntL + sbHeight + 4, yInti ) … (8-776)

Прогнозируемое значение отсчета predSampleLXL яркостной составляющей определяют следующим образом:

- Если обе координаты xFracL и yFracL равны 0, значение отсчета predSampleLXL определяют следующим образом:

predSampleLXL = refPicLXL[ xInt3 ][ yInt3 ] << shift3 … (8-777)

- В противном случае, если xFracL не равно 0 и yFracL равно 0, значение отсчета predSampleLXL определяют следующим образом:

predSampleLXL = >> shift1 … (8-778)

- В противном случае, если xFracL равно 0 и yFracL не равно 0, значение отсчета predSampleLXL определяют следующим образом:

predSampleLXL = >> shift1 … (8-779)

- В противном случае, если xFracL не равно 0 и yFracL не равно 0, значение отсчета predSampleLXL определяют следующим образом:

- Массив temp[ n ] отсчетов при n = 0..7, определяют следующим образом:

temp[ n ] = >> shift1 … (8-780)

- Прогнозируемое значение отсчета predSampleLXL яркостной составляющей определяют следующим образом:

predSampleLXL = >> shift2 … (8-781)

Таблица 8-11 – Спецификации коэффициентов fL[ p ] интерполяционного фильтра для яркостной составляющей для каждой позиции p с точностью 1/16 отсчета

Позиции p с точностью до долей отсчета Коэффициенты интерполяционного фильтра fL[ p ][ 0 ] fL[ p ][ 1 ] fL[ p ][ 2 ] fL[ p ][ 3 ] fL[ p ][ 4 ] fL[ p ][ 5 ] fL[ p ][ 6 ] fL[ p ][ 7 ] 1 0 1 −3 63 4 −2 1 0 2 −1 2 −5 62 8 −3 1 0 3 −1 3 −8 60 13 −4 1 0 4 −1 4 −10 58 17 −5 1 0 5 −1 4 −11 52 26 −8 3 −1 6 −1 3 −9 47 31 −10 4 −1 7 −1 4 −11 45 34 −10 4 −1 8 (hpelIfIdx = = 0) −1 4 −11 40 40 −11 4 −1 8 (hpelIfIdx = = 1) 0 3 9 20 20 9 3 0 9 −1 4 −10 34 45 −11 4 −1 10 −1 4 −10 31 47 −9 3 −1 11 −1 3 −8 26 52 −11 4 −1 12 0 1 −5 17 58 −10 4 −1 13 0 1 −4 13 60 −8 3 −1 14 0 1 −3 8 62 −5 2 −1 15 0 1 −2 4 63 −3 1 0

Таблица 8-12 – Спецификации коэффициентов fL[ p ] интерполяционного фильтра для яркостной составляющей для каждой позиции p с точностью 1/16 отсчета для аффинного режима движения

Позиции p с точностью до долей отсчета Коэффициенты интерполяционного фильтра fL[ p ][ 0 ] fL[ p ][ 1 ] fL[ p ][ 2 ] fL[ p ][ 3 ] fL[ p ][ 4 ] fL[ p ][ 5 ] fL[ p ][ 6 ] fL[ p ][ 7 ] 1 0 1 −3 63 4 −2 1 0 2 0 1 −5 62 8 −3 1 0 3 0 2 −8 60 13 −4 1 0 4 0 3 −10 58 17 −5 1 0 5 0 3 −11 52 26 −8 2 0 6 0 2 −9 47 31 −10 3 0 7 0 3 −11 45 34 −10 3 0 8 0 3 −11 40 40 −11 3 0 9 0 3 −10 34 45 −11 3 0 10 0 3 −10 31 47 −9 2 0 11 0 2 −8 26 52 −11 3 0 12 0 1 −5 17 58 −10 3 0 13 0 1 −4 13 60 −8 2 0 14 0 1 −3 8 62 −5 1 0 15 0 1 −2 4 63 −3 1 0

8.5.6.3.3 Процедура выборки целочисленных отсчетов яркостной составляющей

Входными данными для этой процедуры являются:

- позиция отсчета яркостной составляющей в единицах полных отсчетов, ( xIntL, yIntL ),

- массив refPicLXL опорных отсчетов яркостной составляющей,

Выходными данными этой процедуры является прогнозируемое значение отсчета яркостной составляющей, predSampleLXL

Переменную shift устанавливают равной Max( 2, 14 − BitDepthY ).

Переменную picW устанавливают равной pic_width_in_luma_samples и переменную picH устанавливают равной pic_height_in_luma_samples.

Позицию отсчетов яркостной составляющей в единицах полных отсчетов, ( xInt, yInt ), определяют следующим образом:

xInt = Clip3( 0, picW − 1, sps_ref_wraparound_enabled_flag ? … (8-782)

ClipH( ( sps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY, picW, xIntL ) : xIntL )

yInt = Clip3( 0, picH − 1, yIntL ) … (8-783)

Прогнозируемое значение отсчета predSampleLXL яркостной составляющей определяют следующим образом:

predSampleLXL = refPicLXL[ xInt ][ yInt ] << shift3 … (8-784)

8.5.6.3.4 Процедура интерполяции отсчетов цветностной составляющей

Входными данными для этой процедуры являются:

- позиция отсчета цветностной составляющей в единицах полных отсчетов, ( xIntC, yIntC ),

- позиция отсчета цветностной составляющей в единицах 1/32 отсчетов с дробной точностью, ( xFracC, yFracC ),

- позиция отсчета цветностной составляющей в единицах полных отсчетов, ( xSbIntC, ySbIntC ), специфицирующая положение верхнего левого отсчета ограничивающего блока для заполнения опорными отсчетами относительно верхнего левого отсчета цветностной составляющей в опорном изображении,

- переменная sbWidth, специфицирующая ширину текущего субблока,

- переменная sbHeight, специфицирующая высоту текущего субблока,

- массив refPicLXC опорных отсчетов цветностной составляющей.

Выходными данными этой процедуры является прогнозируемое значение отсчета predSampleLXC цветностной составляющей

Переменные shift1, shift2 и shift3 определяют следующим образом:

- Переменную shift1 устанавливают равной Min( 4, BitDepthC − 8 ), переменную shift2 устанавливают равной 6 и переменную shift3 устанавливают равной Max( 2, 14 − BitDepthC ).

- Переменную picWC устанавливают равной pic_width_in_luma_samples / SubWidthC и переменную picHC устанавливают равной pic_height_in_luma_samples / SubHeightC.

Коэффициенты fC[ p ] интерполяционного фильтра цветностной составляющей для каждой позиции p с дробной точностью 1/32 отсчета с координатой равной xFracC или yFracC специфицированы в тблице 3.

Переменную xOffset устанавливают равной ( sps_ref_wraparound_offset_minus1 + 1 ) * MinCbSizeY ) / SubWidthC.

Позиции отсчетов цветностной составляющей в единицах полных отсчетов, ( xInti, yInti ), определяют следующим образом for i = 0..3:

- Если subpic_treated_as_pic_flag[ SubPicIdx ] равно 1, применяется следующее:

xInti = Clip3( SubPicLeftBoundaryPos / SubWidthC, SubPicRightBoundaryPos / SubWidthC, xIntL + i ) (8-785)

yInti = Clip3( SubPicTopBoundaryPos / SubHeightC, SubPicBotBoundaryPos / SubHeightC, yIntL + i ) (8-786)

- В противном случае, (subpic_treated_as_pic_flag[ SubPicIdx ] равно 0), применяется следующее:

xInti = Clip3( 0, picWC − 1, sps_ref_wraparound_enabled_flag ? ClipH( xOffset, picWC, xIntC + i − 1 ) : … (8-787)

xIntC + i − 1 )

yInti = Clip3( 0, picHC − 1, yIntC + i − 1 ) … (8-788)

Позиции отсчетов цветностной составляющей в единицах полных отсчетов, ( xInti, yInti ), далее модифицируют следующим образом i = 0..3:

xInti = Clip3( xSbIntC − 1, xSbIntC + sbWidth + 2, xInti ) … (8-789)

yInti = Clip3( ySbIntC − 1, ySbIntC + sbHeight + 2, yInti ) … (8-790)

Прогнозируемое значение отсчета predSampleLXC цветностной составляющей определяют следующим образом:

- Если обе кооординаты xFracC и yFracC равны 0, значение predSampleLXC определяют следующим образом:

predSampleLXC = refPicLXC[ xInt1 ][ yInt1 ] << shift3 … (8-791)

- В противном случае, если координата xFracC не равна 0 и координата yFracC равна 0, значение predSampleLXC определяют следующим образом:

predSampleLXC = >> shift1 … (8-792)

- В противном случае, если координата xFracC равна 0 и координата yFracC не равна 0, значение predSampleLXC определяют следующим образом:

predSampleLXC = >> shift1 … (8-793)

- В противном случае, если координата xFracC не равна 0 и координата yFracC не равна 0, значение predSampleLXC определяют следующим образом:

- Массив temp[ n ] отсчетов при n = 0..3, определяют следующим образом:

temp[ n ] = >> shift1 … (8-794)

- Прогнозируемое значение отсчета predSampleLXC цветностной составляющей определяют следующим образом:

predSampleLXC =( fC[ ][ 0 ] * temp[ 0 ]

fC[ ][ 1 ] * temp[ 1 ] +

fC[ ][ 2 ] * temp[ 2 ] + … (8-795)

fC[ ][ 3 ] * temp[ 3 ] ) >> shift2

Таблица 8-13 – Спецификации коэффициентов fC[p] интерполяционного фильтра для цветностной составляющей для каждой позиции p с точностью 1/32 отсчета.

Позиции p с точностью
до долей отсчета
Коэффициенты интерполяционного фильтра
fC[ p ][ 0 ] fC[ p ][ 1 ] fC[ p ][ 2 ] fC[ p ][ 3 ] 1 −1 63 2 0 2 −2 62 4 0 3 -2 60 7 −1 4 −2 58 10 −2 5 −3 57 12 −2 6 −4 56 14 −2 7 −4 55 15 −2 8 −4 54 16 −2 9 −5 53 18 −2 10 −6 52 20 −2 11 −6 49 24 −3 12 −6 46 28 −4 13 −5 44 29 −4 14 −4 42 30 −4 15 −4 39 33 −4 16 −4 36 36 −4 17 −4 33 39 −4 18 −4 30 42 −4 19 −4 29 44 −5 20 −4 28 46 −6 21 −3 24 49 −6 22 −2 20 52 −6 23 −2 18 53 −5 24 −2 16 54 −4 25 −2 15 55 −4 26 −2 14 56 −4 27 −2 12 57 −3 28 −2 10 58 −2 29 −1 7 60 −2 30 0 4 62 −2 31 0 2 63 −1

2.5. Уточненное прогнозирование с компенсацией аффинного движения на основе субблоков

Описываемая здесь технология предлагает способ уточнения прогнозирования с компенсацией аффинного движения на основе субблоков с использованием оптического потока. После осуществления такой компенсации аффинного движения на основе субблоков прогнозируемый отсчет уточняют путем добавления разности, полученной по уравнению оптического потока, что называется уточнением прогнозирования с использованием оптического потока (prediction refinement with optical flow (PROF)). Предлагаемый способ позволяет осуществить межкадровое прогнозирование с «зернистостью» на уровне пикселей без увеличения ширины полосы для доступа к запоминающему устройству (памяти).

Для достижения более тонкой «зернистости» при компенсации движения настоящий раздел предлагает способ уточнения прогнозирования с компенсацией аффинного движения на основе субблоков с использованием оптического потока. После осуществления прогнозирования с компенсацией аффинного движения на основе субблоков прогнозируемый отсчет яркостной составляющей уточняют путем добавления разности, полученной с использованием уравнения оптического потока. Предлагаемый способ уточнения прогнозирования с использованием оптического потока (PROF (prediction refinement with optical flow)) изложен в виде следующих четырех этапов.

Этап 1) Компенсация аффинного движения на основе субблоков осуществляется для генерации прогнозируемого субблока I(i,j).

Этап 2) Пространственные градиенты gx(i, j) и gy(i, j) для прогнозируемого субблока вычисляют в позиции каждого отсчета с использованием 3-отводного фильтра [-1, 0, 1].

gx(i,j) = I(I + 1,j) - I(I - 1,j)

gy(i,j) = I(I,j + 1) - I(i,j - 1)

Прогнозируемый субблок расширяют путем добавления по одному пикселю с каждой стороны для вычисления градиента. Для уменьшения ширины полосы пропускания запоминающего устройства и сложности пиксели на расширенных границах копируют из ближайших целочисленных позиций пикселей в опорном изображении. Это позволяет избежать выполнения дополнительной интерполяции для заполнения области.

Этап 3) Уточнение прогнозирования яркостной составляющей (обозначено ΔI) вычисляют посредством уравнения оптического потока.

ΔI(i,j) = gx(i,j) * Δνx(i,j) + gy(i,j) * Δνy(i,j)

где разница delta MV вектора MV (обозначено как Δv(i,j)) представляет собой разницу между вектором MV для пикселя, вычисленным в позиции (i,j) отсчета и обозначенным ν(i,j), и вектором MV для субблока, которому принадлежит пиксель, находящийся в позиции (i,j), как показано на фиг. 1.

Поскольку параметры аффинной модели и расположение пикселей относительно центра субблока не меняются от субблока к субблоку, разница Δv(i,j) может быть вычислена для первого субблока и повторно использована для других субблоков в той же самой единице CU. Пусть x и y обозначают горизонтальный и вертикальный сдвиги от позиции пикселя до центра субблока, разность Δv(x,y) может быть определена по следующему уравнению,

Для 4-параметрической аффинной модели,

Для 6-параметрической аффинной модели,

где (ν0x, ν0y), (ν1x, ν1y), (ν2x, ν2y), представляют собой векторы движения верхней левой, верхней правой и нижней левой контрольной точек, w и h обозначают ширину и высоту единицы CU.

Этапы 4) Наконец, значение уточнения прогноза яркостной составляющей добавляют к прогнозируемому субблоку I(i,j). Окончательный прогноз I' генерируют согласно следующему уравнению.

I'(i,j) = I(i,j) + ΔI(i,j)

Некоторые подробности описаны ниже:

a) Как определить градиенты для уточнения PROF

В некоторых варианты, градиенты вычисляют для каждого субблока (субблок размером 4×4 в документе VTM-4.0) для каждого опорного списка. Для каждого субблока, выбирают ближайшие целочисленные отсчеты опорного блока для заполнения внешних линий отсчетов с четырех сторон.

Предположим, что вектор MV для текущего субблока имеет вид (MVx, MVy). Затем вычисляют дробную часть как (FracX, FracY)=(MVx&15, MVy&15). Целая часть вычисляются как (IntX, IntY)=(MVx>>4, MVy>>4). Сдвиги (OffsetX, OffsetY) вычисляют как:

OffsetX = FracX > 7 ? 1 : 0;

OffsetY = FracY > 7 ? 1 : 0;

Предположим, что верхние левые координаты текущего субблока равны (xCur, yCur) и размеры этого текущего субблока равны W×H. Тогда (xCor0, yCor0), (xCor1, yCor1), (xCor2, yCor2) и (xCor3, yCor3) вычисляют как:

(xCor0, yCor0) = (xCur+IntX+OffsetX-1, yCur+IntY+OffsetY-1);

(xCor1, yCor1) = (xCur+IntX+OffsetX-1, yCur+IntY+OffsetY+H);

(xCor2, yCor2) = (xCur+IntX+OffsetX-1, yCur+IntY+OffsetY);

(xCor3, yCor3) = (xCur+IntX+OffsetX+W, yCur+IntY+OffsetY);

Предположим, что массив PredSample[x][y] при x=0..W-1, y=0.. H-1 сохраняет прогнозируемые отсчеты для субблока. Тогда заполняющие отсчеты определяют как:

PredSample[x][-1] = (Ref(xCor0+x, yCor0) << Shift0) - Rounding, for x=-1..W;

PredSample[x][H] = (Ref (xCor1+x, yCor1) << Shift0) - Rounding, for x=-1..W;

PredSample[-1][y] = (Ref (xCor2, yCor2+y) << Shift0) - Rounding, for y=0..H-1;

PredSample[W][y] = (Ref (xCor3, yCor3+y) << Shift0) - Rounding, for y=0..H-1;

где Rec представляет опорное изображение. Параметр Rounding является целым числом, которое равно 213 в примере реализации уточнения PROF. Shift0 = Max(2, (14 - BitDepth)); процедура уточнения PROF пытается увеличить точность градиента, в отличие от режима с использованием двунаправленного оптического потока (BIO) в документе VTM-4.0, в котором эти градиенты передают на выход с такой же точностью, как входные отсчеты яркостной составляющей.

Градиенты в режиме с уточнением PROF вычисляют следующим образом:

Shift1 = Shift0-4.

gradientH [ x ][ y ] = (predSamples [ x + 1 ][y] − predSample [ x − 1 ][ y ] ) >> Shift1

gradientV [ x ][ y ] = (predSample[ x ][ y + 1 ] − predSample [ x ][y − 1 ] ) >> Shift1

Следует отметить, что отсчеты predSamples[x][y] сохраняют точность после интерполяции.

b) Как определить разницу Δv для режима с уточнением PROF

Процедура определения Δv (обозначена как dMvH[posX][posY] и dMvV[posX][posY] при posX = 0..W-1, posY=0..H-1) может быть описана, как показано ниже.

Предположим, что текущий блок имеет размеры cbWidth × cbHeight, число векторов движения контрольных точек равно numCpMv, и векторы движения контрольных точек равны cpMvLX[ cpIdx ], при cpIdx = 0..numCpMv − 1 и X равно 0 или 1, представляя два опорных списка.

Переменные log2CbW и log2CbH определяют следующим образом:

log2CbW = Log2( cbWidth )

log2CbH = Log2( cbHeight )

Переменные mvScaleHor, mvScaleVer, dHorX и dVerX определяют следующим образом:

mvScaleHor = cpMvLX[ 0 ][ 0 ] << 7

mvScaleVer = cpMvLX[ 0 ][ 1 ] << 7

dHorX = ( cpMvLX[ 1 ][ 0 ] − cpMvLX[ 0 ][ 0 ] ) << ( 7 − log2CbW )

dVerX = ( cpMvLX[ 1 ][ 1 ] − cpMvLX[ 0 ][ 1 ] ) << ( 7 − log2CbW )

Переменные dHorY and dVerY определяют следующим образом:

– Если число numCpMv равно 3, применяется следующее:

dHorY = ( cpMvLX[ 2 ][ 0 ] − cpMvLX[ 0 ][ 0 ] ) << ( 7 − log2CbH )

dVerY = ( cpMvLX[ 2 ][ 1 ] − cpMvLX[ 0 ][ 1 ] ) << ( 7 − log2CbH )

- В противном случае ( число numCpMv равно 2), применяется следующее:

dHorY = − dVerX

dVerY = dHorX

Переменную qHorX, qVerX, qHorY и qVerY определяют следующим образом:

qHorX = dHorX << 2;

qVerX = dVerX << 2;

qHorY = dHorY << 2;

qVerY = dVerY << 2;

dMvH[0][0] и dMvV[0][0] вычисляют как:

dMvH[0][0] = ((dHorX + dHorY) << 1) - ((qHorX + qHorY) << 1);

dMvV[0][0] = ((dVerX + dVerY) << 1) - ((qVerX + qVerY) << 1);

dMvH[xPos][0] and dMvV[xPos][0] для xPos от 1 до W-1 определяют следующим образом:

dMvH[xPos][0] = dMvH[xPos-1][0] + qHorX;

dMvV[xPos][0] = dMvV[xPos-1][0] + qVerX;

Для yPos от 1 до H-1, применяется следующее:

dMvH[xPos][yPos] = dMvH[xPos][yPos-1] + qHorY при xPos=0..W-1

dMvV[xPos][yPos] = dMvV[xPos][yPos-1] + qVerY при xPos=0..W-1

Наконец, dMvH[xPos][yPos] и dMvV[xPos][yPos] при posX = 0..W-1, posY=0..H-1 сдвигаются вправо следующим образом:

dMvH[xPos][yPos] = SatShift( dMvH[xPos][yPos], 7+2-1);

dMvV[xPos][yPos] = SatShift( dMvV[xPos][yPos], 7+2-1);

где SatShift(x, n) и Shift (x,n) определены следующим образом:

Shift(x, n) = (x+ offset0)>>n

В одном из примеров, значения offset0 и/или offset1 устанавливают равными (1<<n)>>1.

c) Как определить значение ΔI для режима уточнения PROF

Для позиции (posX, posY) внутри субблока соответствующую разность Δv(i,j) обозначают как (dMvH[posX][posY], dMvV[posX][posY]). Соответствующие градиенты обозначены как (gradientH[posX][posY], gradientV[posX][posY]).

Тогда значение ΔI(posX, posY) определяют следующим образом.

(dMvH[posX][posY], dMvV[posX][posY]) подвергают усечению как:

dMvH[posX][posY] = Clip3( -32768, 32767, dMvH[posX][posY]);

dMvV[posX][posY] = Clip3( -32768, 32767, dMvV[posX][posY]);

ΔI(posX, posY)= dMvH[posX][posY] × gradientH[posX][posY] + dMvV[posX][posY] × gradientV[posX][posY];

ΔI(posX, posY) = Shift(ΔI(posX, posY), 1+1+4);

ΔI(posX, posY) = Clip3( -(213-1), 213-1, ΔI(posX, posY));

d) Как определить значение I’ для режима уточнения PROF

Если текущий блок не кодируют в режиме двунаправленного прогнозирования или в режиме взвешенного прогнозирования,

I’(posX, posY) = Shift((I(posX, posY) + ΔI(posX, posY)), Shift0),

I’(posX, posY) = ClipSample (I’(posX, posY)),

где функция ClipSample осуществляет усечение значения отсчета до действительного выходного значения отсчета. Затем значение I’(posX, posY) передают на выход в качестве значения, полученного в режиме межкадрового прогнозирования.

В противном случае (текущий блок кодируют в режиме двунаправленного прогнозирования или в режиме взвешенного прогнозирования). Значение I’(posX, posY) будет сохранена и использована для генерации значения в режиме межкадрового прогнозирования в соответствии с другими прогнозируемыми значениями и/или взвешенными значениями.

2.6. Пример заголовка среза

2.7. Пример набора параметров последовательности

2.8 Пример набора параметров изображения

2.9. Примера набора параметров адаптации

2.10. Пример заголовка изображения

В некоторых вариантах, заголовок изображения спроектирован так, чтобы иметь следующие свойства:

1. Временный идентификатор (Id) и идентификатор (Id) слоя единицы NAL (слоя сетевой абстракции), где находится заголовок изображения, являются такими же, как временный идентификатор (Id) и идентификатор (Id) слоя единицы слоя доступа, содержащей этот заголовок изображения.

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

3. Единица NAL с заголовком изображения должна следовать за наборами параметров на уровне изображения или на более высоком уровне, такими как наборы параметров DPS, VPS, SPS, PPS и т.п. Это, следовательно, требует, чтобы эти наборы параметров не повторялись/не присутствовали в изображении или в единице доступа.

4. Заголовок изображения содержит информацию о типе ассоциированного с ним изображения. Этот тип изображения может быть использован для определения следующего (список не является исчерпывающим)

a. Изображение является IDR-изображением (с мгновенным обновлением декодера)

b. Изображение является CRA-изображением

c. Изображение является GDR-изображением

d. Изображение является не-IRAP-изображением, не-GDR-изображением и содержит только I-срезы

e. Изображение является не-IRAP-изображением, не-GDR-изображением и может содержать только P-срезы и I-срезы

f. Изображение является не-IRAP-изображением, не-GDR-изображением и может содержать срезы любого типа – B-срезы, P-срезы и/или I-срезы

5. Перемещение сигнализации синтаксических элементов уровня изображения из заголовка среза в заголовок изображения.

6. Передача в виде сигнализации синтаксических элементов уровня не-изображения, которые обычно являются одинаковыми для всех срезов одного и того же изображения, в заголовке изображения. Когда эти синтаксические элементы не присутствуют в заголовке изображения, их можно передавать в виде сигнализации в заголовке среза.

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

Синтаксические элементы уже ограничены тем, что они должны быть одинаковы во всех срезах одного изображения. Утверждается, что перемещение этих полей в заголовок изображения, так что их будут передавать в виде сигнализации только один раз для одного изображения вместо того, чтобы передавать их по одному разу для каждого среза, позволяет избежать ненужных избыточных передач битов данных без каких-либо изменений функционального назначения этих синтаксических элементов.

1. В некоторых вариантах реализации имеются следующие семантические ограничения:

Когда присутствуют, значение каждого синтексического элемента в заголовке среза – slice_pic_parameter_set_id, non_reference_picture_flag, colour_plane_id, slice_pic_order_cnt_lsb, recovery_poc_cnt, no_output_of_prior_pics_flag, pic_output_flag и slice_temporal_mvp_enabled_flag, должно быть одинаковым во всех заголовках срезов в кодированном изображении. Таким образом, каждый из этих синтексических элементов может быть перемещен в заголовок изображения, чтобы избежать ненужных избыточных битов.

Элементы recovery_poc_cnt и no_output_of_prior_pics_flag в этом разделе не перемещают в заголовок изображения. Их присутствие в заголовке среза зависит от проверки условия nal_unit_type в заголовке среза, так что предполагается изучить, нужно ли перемещать эти синтаксические элементы в заголовок изображения.

2. В некоторых вариантах реализации имеются следующие семантические ограничения:

Когда присутствует, значение элемента slice_lmcs_aps_id должно быть одинаковым для всех срезов в изображении.

Когда присутствует, значение элемента slice_scaling_list_aps_id должно быть одинаковым для всех срезов в изображении. Таким образом, каждый из этих синтексических элементов может быть перемещен в заголовок изображения, чтобы избежать ненужных избыточных битов.

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

1. Следующие синтаксические элементы предлагается переместить в заголовок изображения. Сегодня нет никаких ограничений на то, чтобы эти элементы имели различные значения в разных срезах, но утверждается, что нет никаких или имеются минимальные преимущества и потери кодирования при передаче их в каждом заголовке среза, поскольку их ожидаемое использование может измениться на уровне изображения:

a. six_minus_max_num_merge_cand

b. five_minus_max_num_subblock_merge_cand

c. slice_fpel_mmvd_enabled_flag

d. slice_disable_bdof_dmvr_flag

e. max_num_merge_cand_minus_max_num_triangle_cand

f. slice_six_minus_max_num_ibc_merge_cand

2. Следующие синтаксические элементы предлагается переместить в заголовок изображения. Сегодня нет никаких ограничений на то, чтобы эти элементы имели различные значения в разных срезах, но утверждается, что нет никаких или имеются минимальные преимущества и потери кодирования при передаче их в каждом заголовке среза, поскольку их ожидаемое использование может измениться на уровне изображения:

a. partition_constraints_override_flag

b. slice_log2_diff_min_qt_min_cb_luma

c. slice_max_mtt_hierarchy_depth_luma

d. slice_log2_diff_max_bt_min_qt_luma

e. slice_log2_diff_max_tt_min_qt_luma

f. slice_log2_diff_min_qt_min_cb_chroma

g. slice_max_mtt_hierarchy_depth_chroma

h. slice_log2_diff_max_bt_min_qt_chroma

i. slice_log2_diff_max_tt_min_qt_chroma

Проверка условия “slice_type == I”, ассоциированного с некоторыми из этих синтаксических элементов, была исключена в ответ на их перемещение в заголовок изображение.

3. Следующие синтаксические элементы предлагается переместить в заголовок изображения. Сегодня нет никаких ограничений на то, чтобы эти элементы имели различные значения в разных срезах, но утверждается, что нет никаких или имеются минимальные преимущества и потери кодирования при передаче их в каждом заголовке среза, поскольку их ожидаемое использование может измениться на уровне изображения:

a. mvd_l1_zero_flag

Проверка условия “slice_type == B” ассоциированного с некоторыми из этих синтаксических элементов, была исключена в ответ на их перемещение в заголовок изображение.

4. Следующие синтаксические элементы предлагается переместить в заголовок изображения. Сегодня нет никаких ограничений на то, чтобы эти элементы имели различные значения в разных срезах, но утверждается, что нет никаких или имеются минимальные преимущества и потери кодирования при передаче их в каждом заголовке среза, поскольку их ожидаемое использование может измениться на уровне изображения:

a. dep_quant_enabled_flag

b. sign_data_hiding_enabled_flag

3. Недостатки существующих вариантов реализации

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

Когда в стандарте кодирования VVC применяют редискретизацию RPR, такая редискретизацию RPR (изменение ARC) может иметь следующие проблемы:

1. При редискретизации RPR, интерполяционные фильтры могут быть разными для соседних отсчетов в блоке, что нежелательно в случае реализации с использованием одного потока команд и множества потоков данных (SIMD (Single Instruction Multiple Data)).

2. Ограничивающая область не учитывает редискретизацию RPR.

3. Отметим, что «Параметры сдвига окна усечения соответствия применяются только на выходе. Все внутренние процедуры декодирования применяются к неусеченному размеру изображения». Однако эти параметры могут быть использованы в процессе декодирования, когда применяется редискретизация RPR.

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

5. Отношение между значениями ширины/высоты опорного изображения и текущего изображения ограничено в стандарте кодирования VVC. Однако отношение между значениями ширины/высоты окна соответствия для опорного изображения и окна соответствия для текущего изображения ничем не ограничено.

6. Не все синтаксические элементы обрабатывают правильно в заголовке изображения.

7. В текущей версии стандарта кодирования VVC, для режима прогнозирования TPM, режима прогнозировании GEO весовые коэффициенты смешивания цветностных составляющих определяют независимо от типа расположения отсчета цветностной составляющей в последовательности видео. Например, в режиме прогнозирования TPM/GEO, если весовые коэффициенты для цветностных составляющих определяют на основе весовых коэффициентов для яркостной составляющей, весовые коэффициенты для яркостной составляющей может быть необходимо подвергнуть понижающей дискретизации для согласования с частотой дискретизации сигнала цветностной составляющей. Понижающая дискретизация цветностной составляющей, обычно применяемая, предполагает тип 0 расположения отсчетов цветностной составляющей, что широко используется в контейнере ITU-R BT.601 или в контейнере ITU-R BT.709. Однако если используются разные типы расположения отсчетов цветностной составляющей, это может привести к несовмещению между отсчетами цветностной составляющей и подвергнутыми понижающей дискретизации отсчетами яркостной составляющей, что может уменьшить производительность кодирования.

4. Примеры способов и вариантов

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

Описываемые ниже способы могут быть также применимы к другим технологиям определения информации о движении в декодирующем устройстве в дополнение к режиму уточнения DMVR и режиму потока BIO, приведенным ниже.

Вектор движения обозначают как (mv_x, mv_y), где mv_x – горизонтальная составляющая и mv_y – вертикальная составляющая этого вектора.

В настоящей заявке, разрешение (или измерения, или ширина/высота, или размер) изображения может называться разрешением (или измерениями, или шириной/высотой, или размером) кодированного/декодированного изображения или может называться разрешением (или измерениями, или шириной/высотой, или размером) окна соответствия в кодированном/декодированном изображении.

Компенсация движения при редискретизации RPR

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

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

i. Например, блок может быть разбит на S прямоугольников размером MxN, не накладывающихся один на другой. Каждый прямоугольник размером MxN представляет собой некую группу. В одном из примеров, как показано на фиг. 2, блок размером 16x16 может быть разбит на 16 прямоугольников размером 4x4 каждый, так что каждый прямоугольник представляет собой некую группу.

ii. Например, строка из N отсчетов представляет собой группу. Здесь N – целое число не больше ширины блока. В одном из примеров, N равно 4 или 8 или ширине блока.

iii. Например, столбец из N отсчетов представляет собой группу. Здесь N – целое число не больше ширины блока. В одном из примеров, N равно 4 или 8 или высоте блока.

iv. Значения M и/или N могут быть предварительно заданы или определены в процессе работы («на лету»), например, на основе размера блока/кодированной информации, или переданы в виде сигнализации.

b. В одном из примеров, отсчеты в группе могут иметь одинаковый вектор MV (обозначен как совместно используемый вектор MV).

c. В одном из примеров, отсчеты в группе могут иметь векторы MV с одинаковой горизонтальной составляющей (обозначена как совместно используемая горизонтальная составляющая).

d. В одном из примеров, отсчеты в группе могут иметь векторы MV с одинаковой вертикальной составляющей (обозначена как совместно используемая вертикальная составляющая).

e. В одном из примеров, отсчеты в группе могут иметь векторы MV с одинаковой дробной частью горизонтальной составляющей (обозначена как совместно используемая дробная часть горизонтальной составляющей).

i. Например, предположим, что вектор MV для первого отсчета равен (MV1x, MV1y) и вектор MV для второго отсчета равен (MV2x, MV2y), должно удовлетворяться, что MV1x & (2M-1) равно MV2x & (2M-1), где M обозначает точность вектора MV. Например, M=4.

f. В одном из примеров, отсчеты в группе могут иметь векторы MV с одинаковой дробной частью вертикальной составляющей (обозначена как совместно используемая дробная часть вертикальной составляющей).

i. Например, предположим, что вектор MV для первого отсчета равен (MV1x, MV1y) и вектор MV для второго отсчета равен (MV2x, MV2y), тогда должно удовлетворяться, что MV1y & (2M-1) равно MV2y & (2M-1), где M обозначает точность вектора MV. Например, M=4.

g. В одном из примеров, для отсчета в группе, которую нужно прогнозировать, вектор движения, обозначенный MVb, может быть сначала определен в соответствии с разрешениями текущего изображения и опорного изображения (например (refxL, refyL) определено в статье 8.5.6.3.1 в документе JVET-O2001-v14). Затем, вектор MVb может быть далее модифицирован (например, округлен/усечен/обрезан) до вектора MV’ с целью удовлетворения требований, как в разделах выше, и вектор MV’ будет использован для определения прогнозируемого отсчета для рассматриваемого отсчета.

i. В одном из примеров, вектор MV’ имеет такую же целую часть как вектор MVb, а дробную часть вектора MV’ устанавливают как совместно используемую дробную горизонтальную и/или вертикальную составляющую.

ii. В одном из примеров, вектор MV’ устанавливают в качестве вектора с совместно используемой дробной горизонтальной и/или вертикальной составляющей и ближайшего к вектору MVb.

h. Совместно используемый вектор движения (и/или совместно используемая горизонтальная составляющая и/или совместно используемая вертикальная составляющая и/или совместно используемая дробная горизонтальная составляющая и/или совместно используемая дробная вертикальная составляющая) может быть установлен равным вектору движения (и/или горизонтальной составляющей и/или вертикальной составляющей и/или дробной горизонтальной составляющей и/или дробной вертикальной составляющей) для конкретного отсчета в группе.

i. Например, конкретный отсчет может находиться в углу прямоугольной группы, таком как точки “A”, “B’, “C” и “D”, показанные на фиг. 3A.

ii. Например, конкретный отсчет может находиться в центре прямоугольной группы, таком как точки “E”, “F’, “G” и “H”, показанные на фиг. 3A.

iii. Например, конкретный отсчет может находиться на конце имеющей форму строки или форму столбца группы, таком как точки “A” и “D”, показанные на фиг. 3B и 3C.

iv. Например, конкретный отсчет может находиться в середине имеющей форму строки или форму столбца группы, такой как точки “B” и “C”, показанные на фиг. 3B и 3C.

v. В одном из примеров, вектор движения для конкретного отсчета может представлять собой вектор MVb, показанный в разделе g.

i. Совместно используемый вектор движения (и/или совместно используемая горизонтальная составляющая и/или совместно используемая вертикальная составляющая и/или совместно используемая дробная горизонтальная составляющая и/или совместно используемая дробная вертикальная составляющая) может быть установлен равным вектору движения (и/или горизонтальной составляющей и/или вертикальной составляющей и/или дробной горизонтальной составляющей и/или дробной вертикальной составляющей) для виртуального отсчета, расположенного в другой позиции по сравнению со всеми отсчетами в этой группе.

i. В одном из примеров, виртуальный отсчет располагается не в группе, но находится в области, покрывающей все отсчеты в группе.

1) В качестве альтернативы, виртуальный отсчет располагается вне области, покрывающей все отсчеты в группы, например, после нижней правой позиции области.

ii. В одном из примеров, вектор MV для виртуального отсчета определяют так же, как для реального отсчета в других позициях.

iii. Литерой “V” на фиг. 3A – 3C обозначены три примера виртуальных отсчетов.

j. Совместно используемый вектор MV (и/или совместно используемая горизонтальная составляющая и/или совместно используемая вертикальная составляющая и/или совместно используемая дробная горизонтальная составляющая и/или совместно используемая дробная вертикальная составляющая) может быть установлен в виде функции векторов MV (и/или горизонтальных составляющих и/или вертикальных составляющих и/или дробных горизонтальных составляющий и/или дробных вертикальных составляющих) для нескольких отсчетов и/или виртуальных отсчетов.

i. Например, совместно используемый вектор MV (и/или совместно используемая горизонтальная составляющая и/или совместно используемая вертикальная составляющая и/или совместно используемая дробная горизонтальная составляющая и/или совместно используемая дробная вертикальная составляющая) может быть установлен равным результату усреднения векторов MV (и/или горизонтальных составляющих и/или вертикальных составляющих и/или дробных горизонтальных составляющий и/или дробных вертикальных составляющих) для всех или части отсчетов в группе, или отсчетов “E”, “F”, “G”, “H”, показанных на фиг. 3A, или отсчетов “E”, “H”, показанных на фиг. 3A, или отсчетов “A”, “B”, “C”, “D”, показанных на фиг. 3A, или отсчетов “A”, “D”, показанных на фиг. 3A, или отсчетов“B”, “C”, показанных на фиг. 3B, или отсчетов “A”, “D”, показанных на фиг. 3B, или отсчетов “B”, “C”, показанных на фиг. 3C, или отсчетов “A”, “D”, показанных на фиг. 3C,

2. Предлагается, что только целочисленные векторы MV разрешены для осуществления процедуры компенсации движения с целью определения прогнозируемого блока для текущего блока, когда разрешение опорного изображения отличается от разрешения для текущего изображения, или когда ширина и/или высота опорного изображение больше соответствующего изображения текущего изображения.

a. В одном из примеров, декодированные векторы движения для отсчетов, которые нужно прогнозировать, округляют до целочисленных векторов MV прежде использования.

b. В одном из примеров, декодированный вектор движения для отсчетов, которые нужно прогнозировать, округляют до целочисленного вектора MV, ближайшего к декодированному вектору движения.

c. В одном из примеров, декодированный вектор движения для отсчетов, которые нужно прогнозировать, округляют до целочисленного вектора MV, ближайшего к декодированному вектору движения в горизонтальном направлении.

d. В одном из примеров, декодированный вектор движения для отсчетов, которые нужно прогнозировать, округляют до целочисленного вектора MV, ближайшего к декодированному вектору движения в вертикальном направлении.

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

a. В качестве альтернативы, векторы движения, используемые в процессе компенсации движения для отсчетов в текущем блоке (например, совместно используемый вектор MV/ совместно используемая горизонтальная или вертикальная или дробная составляющая /вектор MV’, указанный в разделах выше) могут быть запрещены к использованию для прогнозирования векторов движения для последующих блоков в текущем/других изображениях.

i. В одном из примеров, декодированные векторы движения (например, вектор MVb в приведенных выше разделах) могут быть использованы для прогнозирования векторов движения для последующих блоков в текущем/других изображениях.

b. В одном из примеров, векторы движения, используемые в процессе компенсации движения для отсчетов в текущем блоке, могут быть использованы в процессе фильтрации (например, в деблокирующем фильтре /фильтре SAO/фильтре ALF).

i. В качестве альтернативы, декодированные векторы движения (например, вектор MVb в приведенных выше разделах) могут быть использованы в процессе фильтрации.

c. В одном из примеров, такой вектор MV может быть определен на уровне субблоков и может быть сохранен для каждого субблока.

4. Предлагается, что интерполяционные фильтры, используемые в процессе компенсации движения с целью определения прогнозируемого блока для текущего блока, могут быть выбраны в зависимости от того, отличается ли разрешение опорного изображения от разрешения текущего изображения, или является ли ширина и/или высота опорного изображения больше соответствующего размера текущего изображения.

a. В одном из примеров, интерполяционные фильтры с меньшим числом отводов могут быть применены, когда удовлетворяется условие A, где это условие A зависит от размеров текущего изображения и/или опорного изображения.

i. В одном из примеров, условие A состоит в том, что разрешение опорного изображения отличается от разрешения текущего изображения.

ii. В одном из примеров, условие A состоит в том, что ширина и/или высота опорного изображения больше соответствующего размера текущего изображения.

iii. В одном из примеров, условие A состоит в том, что W1 > a*W2 и/или H1> b*H2, где (W1, H1) представляют ширину и высоту опорного изображения и (W2, H2) представляют ширину и высоту текущего изображения, a и b – два коэффициента, например, a = b = 1.5.

iv. В одном из примеров, условие A может также зависеть от того, используется ли двунаправленное прогнозирование.

v. В одном из примеров, применяют 1-отводные фильтры. Другими словами, в качестве результата интерполяции на выход передают целочисленные пиксели без фильтрации.

vi. В одном из примеров, применяют билинейные фильтры, когда разрешение опорного изображения отличается от разрешения текущего изображения.

vii. В одном из примеров, 4-отводные фильтры или 6-отводные фильтры применяют, когда разрешение опорного изображения отличается от разрешения текущего изображения, либо ширина и/или высота опорного изображения больше соответствующего размера текущего изображения.

1) Фильтры с 6 отводами могут быть также использованы для компенсации аффинного движения.

2) Фильтры с 4 отводами могут быть также использованы для интерполяции для отсчетов цветностной составляющей.

b. В одном из примеров, заполняющие отсчеты используются для осуществления интерполяции, когда разрешение опорного изображения отличается от разрешения текущего изображения, либо когда ширина и/или высота опорного изображения больше соответствующего размера текущего изображения.

c. Следует ли и/или как применять способы, описываемые в разделе 4, может зависеть от цветовых составляющих.

i. Например, эти способы применяются только к яркостной составляющей.

d. Следует ли и/или как применять способы, описываемые в разделе 4, может зависеть от направления интерполяционной фильтрации.

i. Например, эти способы применяются только к горизонтальной фильтрации.

ii. Например, эти способы применяются только к вертикальной фильтрации.

5. Предлагается, что двухступенчатая процедура генерации прогнозируемых блоков применяется, когда разрешение опорного изображения отличается от разрешения текущего изображения, либо когда ширина и/или высота опорного изображения больше соответствующего размера текущего изображения.

a. На первом этапе генерируют виртуальный опорный блок посредством повышения или понижения дискретизации области в опорном изображении в зависимости от ширины и/или высоты текущего изображения и опорного изображения.

b. На втором этапе генерируют прогнозируемые отсчеты на основе виртуального опорного блока посредством применения интерполяционной фильтрации в зависимости от ширины и/или высоты текущего изображения и опорного изображения.

6. Предлагается, что вычисление координат верхней левой точки ограничивающего блока для заполнения опорными отсчетами ( xSbIntL, ySbIntL ), как в некоторых вариантах может быть определено в зависимости от ширины и/или высоты текущего изображения и опорного изображения.

a. В одном из примеров, позицию яркостной составляющей в единицах полных отсчетов модифицируют как:

xInti = Clip3( xSbIntL − Dx, xSbIntL + sbWidth + Ux, xInti ),

yInti = Clip3( ySbIntL − Dy, ySbIntL + sbHeight + Uy, yInti ),

где Dx и/или Dy и/или Ux и/или Uy могут зависеть от ширины и/или высоты текущего изображения и опорного изображения.

b. В одном из примеров, позицию цветностной составляющей в единицах полных отсчетов модифицируют как:

xInti = Clip3( xSbIntC − Dx, xSbIntC + sbWidth + Ux, xInti )

yInti = Clip3( ySbIntC − Dy, ySbIntC + sbHeight + Uy, yInti )

где Dx и/или Dy и/или Ux и/или Uy могут зависеть от ширины и/или высоты текущего изображения и опорного изображения.

7. Вместо сохранения/использования векторов движения для блока на основе такого же разрешения опорного изображения, как разрешение текущего изображения, предлагается использовать реальные векторы движения с учетом разности разрешений.

a. В качестве альтернативы, кроме того, когда используется вектор движения для генерации прогнозируемого блока, нет необходимости дальнейшего изменения вектора движения в соответствии с разрешениями текущего изображения и опорного изображения (например, (refxL, refyL)).

Взаимодействие между редискретизацией RPR и другими инструментами кодирования

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

a. В одном из примеров, установление жесткости границ (boundary strength (BS)) в деблокирующих фильтрах может учитывать разности разрешений в дополнение к разностям векторов движения.

i. В одном из примеров, масштабированная разность векторов движения в соответствии с текущим и опорным изображениями может быть использована для определения жесткости границы.

b. В одном из примеров, жесткость деблокирующего фильтра для границы между блоком A и блоком B может быть установлена по-разному (например, увеличена/уменьшена), если разрешение по меньшей мере одного опорного изображения для блока A отличается от (или меньше чем, или больше чем) разрешения по меньшей мере одного опорного изображения для блока B по сравнению со случаем, когда одно и то же разрешение используется для этих двух блоков.

c. В одном из примеров, границу между блоком A и блоком B маркируют как подлежащую фильтрации (например, жесткость BS устанавливают равной 2), если разрешение по меньшей мере одного опорного изображения для блока A отличается от (или меньше чем, или больше чем) разрешения по меньшей мере одного опорного изображения для блока B.

d. В одном из примеров, жесткость деблокирующего фильтра для границы между блоком A и блоком B может быть установлена по-разному (например, увеличена/уменьшена), если разрешение по меньшей мере одного опорного изображения для блока A и/или блока B отличается от (или меньше чем, или больше чем) разрешения текущего изображения по сравнению со случаем, когда одно и то же разрешение используется для опорного изображения и текущего изображения.

e. В одном из примеров, границу между двумя блоками маркируют как подлежащую фильтрации, (например, например, жесткость BS устанавливают равной 2) если по меньшей мере одно опорное изображение по меньшей мере одного блока из двух имеет разрешение, отличное от разрешения текущего изображения.

9. Когда существует субизображение, битовый поток соответствия может удовлетворять требованию, что опорное изображение должно иметь такое же разрешение, как и текущее изображение.

a. В качестве альтернативы, когда опорное изображение имеет разрешение, отличное от текущего изображения, в текущем изображении не должно быть субизображений.

b. В качестве альтернативы, для субизображения в текущем изображении не допускается использовать опорное изображение, разрешение которого отличается от разрешения текущего изображения.

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

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

В одном из примеров, соответствующее субизображение в опорном изображении может быть определено посредством масштабирования и/или сдвига субизображения из текущего изображения, если опорное изображение имеет разрешение, отличное от разрешения текущего изображения.

11. Режим уточнения прогнозирования с использованием оптического потока (PROF (prediction refinement with optical flow)) может быть активизирован, когда опорное изображение имеет разрешение, отличное от разрешения текущего изображения.

a. В одном из примеров, одна группа векторов MV (обозначены как MVg) может быть сформирована для группы отсчетов и может быть использована для компенсации движения, как описано в разделе 1. С другой стороны, вектор MV (обозначен как MVp) может быть определен для каждого отсчета, и разность (например, соответствующая разности Δv, используемой в режиме уточнения PROF) между вектором MVp и вектором MVg вместе с градиентами (например, пространственными градиентами блоков с компенсированным движением) может быть использована для определения уточненного прогнозирования.

b. В одном из примеров, точность вектора MVp может отличаться от точности вектора MVg. Например, вектор MVp может иметь точность 1/N-pel (N > 0), N = 32, 64 и т.д.

c. В одном из примеров, точность вектора MVg может отличаться от точности внутреннего вектора (например, 1/16-pel).

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

e. В одном из примеров, такой способ может быть применен в каждом направлении прогнозирования.

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

g. В одном из примеров, такой способ может быть применен при однонаправленном и/или двунаправленном прогнозировании.

h. В одном из примеров, такой способ может быть применен, только когда опорное изображение имеет разрешение, отличное от разрешения текущего изображения.

12. Предлагается, что только один вектор MV может быть использован для одного блока/субблока при осуществлении процедуры компенсации движения с целью определения прогнозируемого блока для текущего блока, когда разрешение опорного изображения отличается от разрешения текущего изображения.

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

b. В одном из примеров, единственный вектор MV для рассматриваемого блока/субблока может быть определен как выбранный вектор MV, ассоциированный с выбранным отсчетом (например, центральным отсчетом) в пределах этого блока/субблока.

c. В одном из примеров, только один вектор MV может быть использован для блока размером 4x4 или субблока (например, размером 4x1).

d. В одном из примеров, поток BIO может быть далее применен для компенсации потерь точности из-за применения векторов движения на блочной основе.

13. «Ленивый режим» без передачи в виде сигнализации каких-либо векторов движения на блочной основе может быть применен, когда ширина и/или высота опорного изображения отличается от соответствующего размера текущего изображения.

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

b. В одном из примеров, только один вектор движения может быть передан в виде сигнализации на уровне изображения/плитки/кирпича/единицы CTU, и соответствующие блоки могут использовать этот вектор движения, когда изменяется разрешение.

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

a. В одном из примеров, режим уточнения PROF может быть активизирован, когда ширина и/или высота опорного изображения отличается от соответствующего размера текущего изображения.

b. В одном из примеров, можно генерировать группу аффинных движений путем комбинирования обозначенного движения и масштабирования разрешения и использования этого в режиме уточнения PROF.

15. «Переплетенное» прогнозирование (например, как предлагается в документе JVET-K0102) может быть применено, для аппроксимированной компенсации движения, когда ширина и/или высота опорного изображения отличается от соответствующего размера текущего изображения.

a. В одном из примеров, изменение разрешения (трансфокация) представляют в качестве аффинного движения, и может быть применен режим «переплетенного» прогнозирования движения.

16. Режим LMCS отображения с масштабированием и/или масштабирование остатка цветностной составляющей может быть не активизирован, когда ширина и/или высота текущего изображения отличается от соответствующего размера IRAP-изображения в том же самом периоде IRAP.

a. В одном из примеров, когда режим отображения LMCS не активизирован, флаги на уровне среза, такие как флаг slice_lmcs_enabled_flag, флаг slice_lmcs_aps_id и флаг slice_chroma_residual_scale_flag, могут не быть переданы в виде сигнализации и могут быть признаны равными 0.

b. В одном из примеров, когда масштабирование остатка цветностной составляющей не активизировано, флаги на уровне среза, такие как флаг slice_chroma_residual_scale_flag, могут не быть переданы в виде сигнализации и могут быть признаны равными 0.

Ограничения на редискретизацию RPR

17. Редискретизация RPR может быть применена к кодируемым блокам, имеющим ограничения размеров блока.

a. В одном из примеров, для кодирования блока размером M×N, где M –ширина блока и N – высота блока, когда M*N < T или M*N <=T (например, T = 256), редискретизация RPR может не использоваться.

b. В одном из примеров, когда M < K (и M<=K) (например, K = 16) и/или N < L (или N <= L) (например, L = 16), редискретизация RPR может не использоваться.

18. Соответствие потока битов данных может быть добавлено, чтобы ограничить отношение между шириной и/или высотой активного опорного изображения (или его окна соответствия) и соответствующим размером текущего изображения (или его окна соответствия). Предположим, что refPicW и refPicH обозначают ширину и высоту опорного изображения, curPicW и curPicH обозначают ширину и высоту текущего изображения,

a. В одном из примеров, когда (refPicW ÷ curPicW) равно целому числу, это опорное изображение может быть маркировано как активное опорное изображение.

i. В качестве альтернативы, когда (refPicW ÷ curPicW) равно дробному числу, это опорное изображение может быть маркировано как недоступное.

b. В одном из примеров, когда (refPicW ÷ curPicW) равно (X * n), где X обозначает дробное число, такое как X = 1/2, и n обозначает целое число, такое как n = 1, 2, 3, 4…, это опорное изображение может быть маркировано как активное опорное изображение.

i. В одном из примеров, когда (refPicW ÷ curPicW) не равно (X * n), это опорное изображение может быть маркировано как недоступное.

19. Следует ли и/или как активизировать инструмент кодирования (например, двунаправленный режим/полностью треугольный режим прогнозирования (triangular prediction mode (TPM))/(режим смешивания в режиме TPM)) для блока размером M×N, может зависеть от разрешений опорных изображений (или их окон соответствия) и/или текущего изображения (или его окна соответствия).

a. В одном из примеров, M*N < T или M*N <=T (например, T = 64).

b. В одном из примеров, M < K (или M<=K) (например, K = 16) и/или N < L (или N <= L) (например, L = 16).

c. В одном из примеров, этот инструмент кодирования не разрешен, когда отношение ширина/высота по меньшей мере для одного опорного изображения отличается от соответствующего отношения для текущего изображения,

i. В одном из примеров, этот инструмент кодирования не разрешен, когда отношение ширина/высота по меньшей мере для одного опорного изображения для блока больше соответствующего отношения для текущего изображения.

d. В одном из примеров, этот инструмент кодирования не разрешен, когда отношение ширина/высота для каждого опорного изображения для блока больше соответствующего отношения для текущего изображения,

i. В одном из примеров, этот инструмент кодирования не разрешен, когда отношение ширина/высота для каждого опорного изображения больше соответствующего отношения для текущего изображения.

e. В качестве альтернативы, кроме того, когда этот инструмент кодирования не разрешен, компенсация движения может быть выполнена с использованием одного вектора MV как при однонаправленном прогнозировании.

Относительно окна соответствия

20. Параметры сдвига окна усечения соответствия (например, conf_win_left_offset) передают в виде сигнализации с точностью N-pel вместо 1-pel, где N – положительное целое число больше 1.

a. В одном из примеров, фактическое значение сдвига может быть определена как сообщенное в виде сигнализации значение сдвига, умноженное на N.

b. В одном из примеров, N устанавливают равны 4 или 8.

21. Предложено параметры сдвига окна усечения соответствия применять не только на выходе. Определенные внутренние процедуры декодирования могут зависеть от размера усеченного изображения (т.е. разрешения окна соответствия в изображении).

22. Предложено, что параметры сдвига окна усечения соответствия в первой единице видео (например, набор PPS) и во второй единице видео могут различаться, когда ширина и/или высота изображения, обозначенные как (pic_width_in_luma_samples, pic_height_in_luma_samples), в первой единице видео и второй единице видео являются одинаковыми.

23. Предложено, что параметры сдвига окна усечения соответствия в первой единице видео (например, набор PPS) и во второй единице видео должны быть одинаковыми в потоке битов данных соответствия, когда ширина и/или высота изображения, обозначенные как (pic_width_in_luma_samples, pic_height_in_luma_samples), в первой единице видео и второй единице видео являются разными.

a. Предложено, что параметры сдвига окна усечения соответствия в первой единице видео (например, набор PPS) и во второй единице видео должны быть одинаковыми в потоке битов данных соответствия, независимо от того, являются ли ширина и/или высота изображения, обозначенные как (pic_width_in_luma_samples, pic_height_in_luma_samples), в первой единице видео и второй единице видео одинаковыми или разными.

24. Предположим, что ширина и высота окна соответствия, определенные в первой единице видео, (например, набор PPS) обозначены как W1 и H1, соответственно. Ширина и высота окна соответствия, определенные во второй единице видео, (например, набор PPS) обозначены как W2 и H2, соответственно. Координаты верхней левой позиции окна соответствия, определенного в первой единице видео, (например, PPS) обозначены как X1 и Y1. Координаты верхней левой позиции окна соответствия, определенного во второй единице видео, (например PPS) обозначены как X2 и Y2. Ширина и высота кодированного/декодированного изображения (например pic_width_in_luma_samples и pic_height_in_luma_samples), определенные в первой единице видео, (например, PPS) обозначены как PW1 и PH1, соответственно. Ширина и высота кодированного/декодированного изображения, определенного во второй единице видео, (например, PPS) обозначены как PW2 и PH2.

a. В одном из примеров, W1/W2 должно быть равно X1/X2 в потоке битов данных соответствия.

i. В качестве альтернативы, W1/X1 должно быть равно W2/X2 в потоке битов данных соответствия.

ii. В качестве альтернативы, W1 * X2 должно быть равно W2 * X1 в потоке битов данных соответствия.

b. В одном из примеров, H1/H2 должно быть равно Y1/Y2 в потоке битов данных соответствия.

i. В качестве альтернативы, H1/Y1 должно быть равно H2/Y2 в потоке битов данных соответствия.

ii. В качестве альтернативы, H1 * Y2 должно быть равно H2 * Y1 в потоке битов данных соответствия.

c. В одном из примеров, PW1/PW2 должно быть равно X1/X2 в потоке битов данных соответствия.

i. В качестве альтернативы, PW1/X1 должно быть равно PW2/X2 в потоке битов данных соответствия.

ii. В качестве альтернативы, PW1 * X2 должно быть равно PW2 * X1 в потоке битов данных соответствия.

d. В одном из примеров, PH1/PH2 должно быть равно Y1/Y2 в потоке битов данных соответствия.

i. В качестве альтернативы, PH1/Y1 должно быть равно PH2/Y2 в потоке битов данных соответствия.

ii. В качестве альтернативы, PH1 * Y2 должно быть равно PH2 * Y1 в потоке битов данных соответствия.

e. В одном из примеров, PW1/PW2 должно быть равно W1/W2 в потоке битов данных соответствия.

i. В качестве альтернативы, PW1/W1 должно быть равно PW2/W2 в потоке битов данных соответствия.

ii. В качестве альтернативы, PW1 * W2 должно быть равно PW2 * W1 в потоке битов данных соответствия.

f. В одном из примеров, PH1/PH2 должно быть равно H1/H2 в потоке битов данных соответствия.

i. В качестве альтернативы, PH1/H1 должно быть равно PH2/H2 в потоке битов данных соответствия.

ii. В качестве альтернативы, PH1 * H2 должно быть равно PH2 * H1 в потоке битов данных соответствия.

g. В потоке битов данных соответствия, если PW1 больше чем PW2, W1 должно быть больше чем W2.

h. В потоке битов данных соответствия, если PW1 меньше чем PW2, W1 должно быть меньше чем W2.

i. В потоке битов данных соответствия, (PW1-PW2) * (W1-W2) должно быть не меньше чем 0.

j. В потоке битов данных соответствия, если PH1 больше чем PH2, H1 должно быть больше чем H2.

k. В потоке битов данных соответствия, если PH1 меньше чем PH2, H1 должно быть меньше чем H2.

l. В потоке битов данных соответствия, (PH1-PH2) * (H1-H2) должно быть не меньше чем 0.

m. В потоке битов данных соответствия, W1/W2 должно быть не больше чем (или меньше чем) PW1/PW2 если PW1 >= PW2.

n. В потоке битов данных соответствия, H1/H2 должно быть не больше чем (или меньше чем) PH1/PH2 если PH1 >= PH2.

25. Предположим, что ширина и высота окна соответствия для текущего изображения обозначены как W и H, соответственно. Ширина и высота окна соответствия для опорного изображения обозначены как W’ и H’, соответственно. Тогда в потоке битов данных соответствия должно удовлетворяться по меньшей мере одно из ограничений, приведенных ниже.

a. W * pw >= W’; pw – целое число, такое как 2.

b. W * pw > W’; pw – целое число, такое как 2.

c. W’ * pw’ >= W; pw’ – целое число, такое как 8.

d. W’ * pw’ > W; pw’ – целое число, такое как 8.

e. H * ph >= H’; ph – целое число, такое как 2.

f. H * ph > H’; ph – целое число, такое как 2.

g. H’ * ph’ >= H; ph’ – целое число, такое как 8.

h. H’ * ph’ > H; ph’ – целое число, такое как 8.

i. В одном из примеров, pw равно pw’.

j. В одном из примеров, ph равно ph’.

k. В одном из примеров, pw равно ph.

l. В одном из примеров, pw’ равно ph’.

m. В одном из примеров, может потребоваться, чтобы поток битов данных соответствия удовлетворял приведенным выше подразделам, когда W и H представляют ширину и высоту текущего изображения, соответственно, и W’ и H’ представляют ширину и высоту опорного изображения.

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

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

b. Например, параметр conf_win_left_offset, как это определено в стандарте кодирования VVC, не передают в виде сигнализацию и признают равным нулю.

c. Например, параметр conf_win_top_offset, как это определено в стандарте кодирования VVC, не передают в виде сигнализацию и признают равным нулю.

27. Предлагается, что определение позиции (например (refxL, refyL), как это определено в стандарте кодирования VVC) опорного отсчета может зависеть от позиции верхней левой точки (например, (conf_win_left_offset, conf_win_top_offset), как это определено в стандарте кодирования VVC) окна соответствия для текущего изображения и/или для опорного изображения. На фиг. 4 показаны примеры позиций отсчетов, определяемых как в стандарте кодирования VVC (a) и согласно предлагаемому способу (b). Штриховые прямоугольники представляют окна соответствия.

a. В одном из примеров, указанная зависимость существует только тогда, когда ширина и/или высота текущего изображения отличается от соответствующего размера опорного изображения.

b. В одном из примеров, определение горизонтальной позиции (например, refxL, как это определено в стандарте кодирования VVC) опорного отсчета может зависеть от левой позиции (например, conf_win_left_offset, как это определено в стандарте кодирования VVC) окна соответствия для текущего изображения и/или для опорного изображения.

i. В одном из примеров, горизонтальную позицию (обозначена как xSb’) текущего отсчета относительно верхней левой позиции окна соответствия в текущем изображении вычисляют и используют для определения позиции опорного отсчета.

1) Например, значение xSb’= xSb – (conf_win_left_offset << Prec) вычисляют и используют для определения позиции опорного отсчета, где xSb представляет горизонтальную позицию текущего отсчета в текущем изображении. Параметр conf_win_left_offset представляет горизонтальную позицию верхнего левого отсчета в окне соответствия текущего изображения. Параметр Prec представляет точность значений xSb и xSb’, где (xSb>>Prec) может показывать фактическую горизонтальную координату текущего отсчета относительно текущего изображения. Например, Prec = 0 или Prec = 4.

ii. В одном из примеров, вычисляют горизонтальную позицию (обозначена как Rx’) опорного отсчета относительно верхней левой позиции окна соответствия в опорном изображении.

1) Вычисление значение Rx’ может зависеть от значения xSb’, и/или вектора движения, и/или отношения редискретизации.

iii. В одном из примеров, горизонтальную позицию (обозначена Rx) опорного отсчета относительно опорного изображения вычисляют в зависимости от значения Rx’.

1) Например, вычисляют Rx = Rx’ + (conf_win_left_offset_ref << Prec), где параметр conf_win_left_offset_ref представляет горизонтальную позицию верхнего левого отсчета в окне соответствия опорного изображения. Параметр Prec представляет точность значений Rx и Rx’. Например, Prec = 0 или Prec = 4.

iv. В одном из примеров, значение Rx можно вычислить непосредственно в зависимости от значения xSb’, и/или вектора движения, и/или отношения редискретизации. Другими словами, два этапа определения значений Rx’ и Rx комбинируют в виде одноступенчатых вычислений.

v. Следует ли и/или как использовать левую позицию (например, параметр conf_win_left_offset, как это определено в стандарте кодирования VVC) окна соответствия для текущего изображения и/или опорного изображения, может зависеть от цветовых составляющих и/или цветового формата.

1). Например, параметр conf_win_left_offset может быть пересмотрен в виде conf_win_left_offset = conf_win_left_offset * SubWidthC, где SubWidthC определяет шаг горизонтальной дискретизации цветовой составляющей. Например, параметр SubWidthC равен 1 для яркостной составляющей. Параметр SubWidthC равен 2 для цветностной составляющей, когда цветовой формат представляет собой 4:2:0 или 4:2:2.

2) Например, параметр conf_win_left_offset может быть пересмотрен в виде conf_win_left_offset = conf_win_left_offset / SubWidthC, где SubWidthC определяет шаг горизонтальной дискретизации цветовой составляющей. Например, SubWidthC равен 1 для яркостной составляющей. Параметр SubWidthC равен 2 для цветностной составляющей, когда цветовой формат представляет собой 4:2:0 или 4:2:2.

c. В одном из примеров, определение вертикальной позиции (например, refyL как это определено в стандарте кодирования VVC) опорного отсчета может зависеть от верхней позиции (например, conf_win_top_offset, как это определено в стандарте кодирования VVC) окна соответствия в текущем изображении и/или в опорном изображении.

i. В одном из примеров, вертикальную позицию (обозначена как ySb’) текущего отсчета относительно верхней левой позиции окна соответствия в текущем изображении вычисляют и используют для определения позиции опорного отсчета.

1) Например, значение ySb’= ySb – (conf_win_top_offset << Prec) вычисляют и используют для определения позиции опорного отсчета, где ySb представляет вертикальную позицию текущего отсчета в текущем изображении. Параметр conf_win_top_offset представляет вертикальную позицию верхнего левого отсчета в окне соответствия текущего изображения. Параметр Prec представляет точность значений ySb и ySb’. Например, Prec = 0 или Prec = 4.

ii. В одном из примеров, вычисляют вертикальную позицию (обозначена как Ry’) опорного отсчета относительно верхней левой позиции окна соответствия в опорном изображении.

1) Вычисление значения Ry’ может зависеть от значения ySb’, и/или вектора движения, и/или отношения редискретизации.

iii. В одном из примеров, вертикальную позицию (обозначена как Ry) опорного отсчета относительно опорного изображения вычисляют в зависимости от значения Ry’.

1) Например, вычисляют Ry = Ry’ + (conf_win_top_offset_ref << Prec), где параметр conf_win_top_offset_ref представляет вертикальную позицию в окне соответствия опорного изображения. Параметр Prec представляет точность значений Ry и Ry’. Например, Prec = 0 или Prec = 4.

iv. В одном из примеров, значение Ry можно вычислить непосредственно в зависимости от значения ySb’, и/или вектора движения, и/или отношения редискретизации. Другими словами, два этапа определения значений Ry’ и Ry комбинируют в виде одноступенчатых вычислений.

v. Следует ли и/или как использовать верхнюю позицию (например, параметр conf_win_top_offset как это определено в стандарте кодирования VVC) окна соответствия в текущем изображении и/или опорном изображении может зависеть от цветовых составляющих и/или цветовых форматов.

1) Например, параметр conf_win_top_offset может быть пересмотрен в виде conf_win_top_offset = conf_win_top_offset * SubHeightC, где SubHeightC определяет шаг вертикальной дискретизации цветовой составляющей. Например, параметр SubHeightC равен 1 для яркостной составляющей. Параметр SubHeightC равен 2 для цветностной составляющей, когда цветовой формат представляет собой 4:2:0.

2) Например, параметр conf_win_top_offset может быть пересмотрен в виде as conf_win_top_offset = conf_win_top_offset / SubHeightC, где SubHeightC определяет шаг вертикальной дискретизации цветовой составляющей. Например, параметр SubHeightC равен 1 для яркостной составляющей. Параметр SubHeightC равен 2 для цветностной составляющей, когда цветовой формат представляет собой 4:2:0.

28. Предлагается, что целая часть горизонтальной координаты опорного отсчета может быть усечена до [minW, maxW]. Предположим, что ширина и высота окна соответствия в опорном изображении обозначены как W и H, соответственно. Ширина и высота окна соответствия в опорном изображении обозначены как W’ и H’. Верхняя левая позиция окна соответствия в опорном изображении обозначена как (X0, Y0).

a. В одном из примеров, minW равно 0.

b. В одном из примеров, minW равно X0.

c. В одном из примеров, maxW равно W-1.

d. В одном из примеров, maxW равно W’-1.

e. В одном из примеров, maxW равно X0+W’-1.

f. В одном из примеров, minW и/или maxW может быть модифицировано на основе цветового формата и/или цветовой составляющей.

i. Например, minW модифицируют до minW *SubC.

ii. Например, minW модифицируют до minW /SubC.

iii. Например, maxW модифицируют до maxW *SubC.

iv. Например, maxW модифицируют до maxW /SubC.

v. В одном из примеров, SubC равно 1 для яркостной составляющей.

vi. В одном из примеров, SubC равно 2 для цветностной составляющей, когда цветовой формат представляет собой 4:2:0.

vii. В одном из примеров, SubC равно 2 для цветностной составляющей, когда цветовой формат представляет собой 4:2:2.

viii. В одном из примеров, SubC равно 1 для цветностной составляющей, когда цветовой формат представляет собой 4:4:4.

g. В одном из примеров, следует ли и/или как осуществить усечение, может зависеть от размеров текущего изображения (или окна соответствия в нем) и размеров опорного изображения (или окна соответствия в нем).

i. В одном из примеров,усечение осуществляется только если размеры текущего изображения (или окна соответствия в нем) и размеры опорного изображения (или окна соответствия в нем) различаются.

29. Предлагается, что целая часть вертикальной координаты опорного отсчета может быть усечена до [minH, maxH]. Предположим, что ширина и высота окна соответствия в опорном изображении обозначены как W и H, соответственно. Ширина и высота окна соответствия в опорном изображении обозначены как W’ и H’. Верхняя левая позиция окна соответствия в опорном изображении обозначена как (X0, Y0).

a. В одном из примеров, minH равно 0.

b. В одном из примеров, minH равно Y0.

c. В одном из примеров, maxH равно H-1.

d. В одном из примеров, maxH равно H’-1.

e. В одном из примеров, maxH равно Y0+H’-1.

f. В одном из примеров, minH и/или maxH может быть модифицировано на основе цветового формата и/или цветовой составляющей.

i. Например, minH модифицируют до minH *SubC.

ii. Например, minH модифицируют до minH /SubC.

iii. Например, maxH модифицируют до maxH *SubC.

iv. Например, maxH модифицируют до maxH /SubC.

v. В одном из примеров, SubC равно 1 для яркостной составляющей.

vi. В одном из примеров, SubC равно 2 для цветностной составляющей, когда цветовой формат представляет собой 4:2:0.

vii. В одном из примеров, SubC равно 1 для цветностной составляющей, когда цветовой формат представляет собой 4:2:2.

viii. В одном из примеров, SubC равно 1 для цветностной составляющей, когда цветовой формат представляет собой 4:4:4.

g. В одном из примеров, следует ли и/или как осуществить усечение, может зависеть от размеров текущего изображения (или окна соответствия в нем) и размеров опорного изображения (или окна соответствия в нем).

i. В одном из примеров,усечение осуществляется только если размеры текущего изображения (или окна соответствия в нем) и размеры опорного изображения (или окна соответствия в нем) различаются.

В последующем обсуждении первый синтаксический элемент устанавливают «соответствующим» второму синтаксическому элементу, если эти два синтаксических элемента имеют эквивалентные функции, но могут быть переданы в виде сигнализации в разных единицах видео (например, наборе VPS/наборе SPS/наборе PPS/заголовке среза/заголовке изображения и т.п.)

30. Предлагается, что один синтаксический элемент может быть передан в виде сигнализации в первой единице видео (например, в заголовке изображения или в наборе PPS), и никаких соответствующих синтаксических элементов не передают во второй единице видео на более высоком уровне (таком как набор SPS) или на более низком уровне (таком как заголовок среза).

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

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

ii. В одном из примеров, срез, ассоциированный со второй единицей видео, (такой как заголовок среза) может следовать за индикацией второго синтаксического элемента вместо первого элемента, если сигнализирован второй элемент.

iii. Индикатор, ассоциированный с первым синтаксическим элементом, может быть передан в виде сигнализации в первой единице видео для информирования, будет ли передан в виде сигнализации второй синтаксический элемент в каком-либо срезе (или другой единицей видео), ассоциированном с первой единицей видео.

b. В качестве альтернативы, первый синтаксический элемент может быть передан в виде сигнализации в первой единице видео на более высоком уровне (таком как набор VPS/набор SPS/набор PPS), и соответствующий второй синтаксический элемент может быть передан в виде сигнализации во второй единице видео (такой как заголовок изображения).

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

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

c. Первый синтаксический элемент в заголовке изображения может иметь функции, эквивалентные второму синтаксическому элементу в заголовке среза, как это специфицировано в разделе 2.6 (например, но ограничиваясь

d. Первый синтаксический элемент в наборе SPS, как это специфицировано в разделе 2.6, может иметь функции, эквивалентные второму синтаксическому элементу в

только ассоциированным изображением (которое может быть разбито на срезы).

e. Первый синтаксический элемент в наборе PPS как это специфицировано в разделе 2.7, может иметь функции, эквивалентные второму синтаксическому элементу в

31. В настоящем описании (раздел 1 – раздел 29), термин «окно соответствия» может быть заменен другими терминами, такими как «окно масштабирования». Окно масштабирования может сообщено в виде сигнализации по-другому, чем окно соответствия, и используется для определения масштабного коэффициента и/или сдвига верхней левой точки, используемых для определения позиции опорного отсчета для редискретизации RPR.

a. В одном из примеров, окно масштабирования может ограничено окном соответствия. Например, в потоке битов данных соответствия, окно масштабирования обязательно должно быть заключено в окне соответствия.

32. Следует ли и/или как передавать в виде сигнализации максимально допустимый размер блока для блоков, кодируемых в режиме пропуска трансформации, может зависеть от максимального размера блоков, кодируемых в режиме пропуска трансформации.

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

33. Следует ли и как передавать в виде сигнализации индикацию активизации режима совместного кодирования остатка цветностных составляющих (Joint Cb-Cr Residue (JCCR)) (например, флаг sps_joint_cbcr_enabled_flag), может зависеть от цветового формата (такого как 4:0:0, 4:2:0 и т.п.)

a. Например, индикация активизации режима совместного кодирования остатка цветностных составляющих (Joint Cb-Cr Residue (JCCR)) может не передаваться, если цветовой формат представляет собой 4:0:0. Пример структуры синтаксиса приведен ниже:

Тип фильтра с понижающей дискретизацией для генерации маски смешивания цветностных составляющих в режиме прогнозирования TPM/GEO

34. Тип фильтра с понижающей дискретизацией (субдискретизирующего фильтра) для определения весовых коэффициентов смешивания для отсчетов цветностных составляющих может быть сообщен в виде сигнализации на уровне единиц видео (таком как уровень набора SPS/набора VPS/набора PPS/заголовка изображения/субизображения /среза/ заголовка среза/плитки/кирпича/единицы CTU/единицы VPDU).

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

i. В одном из примеров, флаг высокого уровня может быть передан в виде сигнализации для переключения между типом 0 формата цветностной составляющей и типом 2 формата цветностной составляющей.

ii. В одном из примеров, в виде сигнализации может быть передан флаг для спецификации, расположены ли весовые коэффициенты верхних левых отсчетов субдискретизированной яркостной составляющей в режиме прогнозирования TPM/GEO в одном месте с весовыми коэффициентами верхних левых отсчетов яркостной составляющей (т.е. тип 0 позиций отсчетов цветностной составляющей).

iii. В одном из примеров, в виде сигнализации может быть передан флаг, специфицирующий, расположен ли верхний левый отсчет субдискретизированной яркостной составляющей в режиме прогнозирования TPM/GEO по горизонтали в одном месте с верхним левым отсчетом яркостной составляющей, но вертикально сдвинут на 0.5 единицы отсчетов яркостной составляющей относительно верхнего левого отсчета яркостной составляющей (т.е. тип 2 позиций отсчетов цветностной составляющей).

b. В одном из примеров, тип субдискретизирующего фильтра может быть сообщен в виде сигнализации для цветностного формата 4:2:0 и/или для цветностного формата 4:2:2.

c. В одном из примеров, в виде сигнализации может быть передан флаг для спецификации типа субдискретизирующего фильтра цветностной составляющей, используемого для прогнозирования TPM/GEO.

i. В одном из примеров, может быть сообщен флаг для сигнализации, следует ли использовать субдискретизирующий фильтр A или субдискретизирующий фильтр B для определения весовых коэффициентов цветностной составляющей в режиме прогнозирования TPM/GEO.

35. Тип субдискретизирующего фильтра, используемого для определения весовых коэффициентов смешивания для отсчетоы цветностной составляющей, может быть определен на уровне единиц видео (таком как уровень набора SPS/набора VPS/набора PPS/заголовка изображения/субизображения /среза/ заголовка среза/плитки/кирпича/единицы CTU/единицы VPDU).

a. В одном из примеров, может быть определена преобразовательная таблица для спецификации соотношений соответствия между типом субдискретизирующего фильтра цветностной составляющей и типами цветностных форматов в контенте.

36. Специфицированный субдискретизирующий фильтр может быть использован для режима прогнозирования TPM/GEO в случае разных типов позиций отсчетов цветностной составляющей.

a. В одном из примеров, весовые коэффициенты цветностных составляющих в режиме прогнозирования TPM/GEO могут быть субдискретизированы относительно расположенных в том же месте весовых коэффициентов верхних левых отсчетов яркостной составляющей в случае определенного типа позиций отсчетов цветностной составляющей (например, тип 0 позиций отсчетов цветностной составляющей).

b. В одном из примеров, в случае определенного типа позиций отсчетов цветностной составляющей (например, тип 0 или 2 позиций отсчетов цветностной составляющей), специфицированный фильтр с X отводами (X является константой, например, X = 6 или 5) может быть использован для субдискретизации весовых коэффициентов цветностной составляющей в режиме прогнозирования TPM/GEO.

37. В единице видео (например, наборе SPS, наборе PPS, заголовке изображения, заголовке среза и т.п.), первый синтаксический элемент (такой как флаг) может быть сообщен в виде сигнализации для индикации, отменена ли активизация режима MTS для всех блоков (срезов/изображений).

a. Второй синтаксический элемент, указывающий, как применять режим MTS (например, активизировать режим MTS /не активизировать режим MTS /неявный режим MTS/явный режим MTS) для блоков (срезов/изображений) с внутрикадровым кодированием, сообщают в виде сигнализации условно на первом синтаксическом элементе. Например, второй синтаксический элемент сообщают в виде сигнализации только тогда, когда первый синтаксический элемент указывает, что активизация режима MTS не отменена для всех блоков (срезов/изображений).

b. Третий синтаксический элемент, указывающий, как применять режим MTS (например, активизировать режим MTS /не активизировать режим MTS /неявный режим MTS/явный режим MTS) для блоков (срезов/изображений) с межкадровым кодированием, сообщают в виде сигнализации условно на первом синтаксическом элементе. Например, третий синтаксический элемент сообщают в виде сигнализации только тогда, когда первый синтаксический элемент указывает, что активизация режима MTS не отменена для всех блоков (срезов/изображений).

c. Ниже приведен пример структуры синтеза

enable_mts_flag if( enable_mts_flag){ mts_control_intra mts_control_inter }

d. Этот третий синтаксический элемент может быть передан в виде сигнализации условно в зависимости от того, применяется ли трансформация субблоков (Sub-Block Transform (SBT)) или нет. Пример структуры синтаксиса приведен ниже

e. Пример структуры синтаксиса приведен ниже

5. Дополнительные варианты

В последующем, изменения текста показаны жирным курсивом с подчеркиванием.

5.1. Вариант ограничений окна соответствия

Параметры conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset специфицируют отсчеты в изображениях в последовательности CVS, поступающими на выход из процесса декодирования, в терминах прямоугольной области, специфицированной в координатах изображений для передачи на выход. Когда флаг conformance_window_flag равен 0, значения параметров conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset признают равными 0.

Окно усечения соответствия содержит отсчеты яркостной составляющей с горизонтальными координатами изображения от SubWidthC * conf_win_left_offset до pic_width_in_luma_samples − ( SubWidthC * conf_win_right_offset + 1 ) и вертикальными координтами изображения от SubHeightC * conf_win_top_offset до pic_height_in_luma_samples − ( SubHeightC * conf_win_bottom_offset + 1 ), включительно.

Значение SubWidthC * ( conf_win_left_offset + conf_win_right_offset ) должно быть меньше чем pic_width_in_luma_samples, и значение SubHeightC * ( conf_win_top_offset + conf_win_bottom_offset ) должно быть меньше чем pic_height_in_luma_samples.

Переменные PicOutputWidthL и PicOutputHeightL определяют следующим образом:

PicOutputWidthL = pic_width_in_luma_samples − … (7-43)

SubWidthC * ( conf_win_right_offset + conf_win_left_offset )

PicOutputHeightL = pic_height_in_pic_size_units − … (7-44)

SubHeightC * ( conf_win_bottom_offset + conf_win_top_offset )

Когда параметр ChromaArrayType не равен 0, соответствующие специфицированные отсчеты в двух массивах цветностных составляющих представляют собой отсчеты, имеющие координаты изображения ( x / SubWidthC, y / SubHeightC ), где ( x, y ) являются координатами изображения для специфицированных отсчетов яркостной составляющей.

5.2. Вариант 1 определения позиций опорных отсчетов

8.5.6.3.1 Общие положения

Переменную fRefWidth устанавливают равной PicOutputWidthL для опорного изображения в отсчетах яркостной составляющей.

Переменную fRefHeight устанавливают равной PicOutputHeightL для опорного изображения в отсчетах яркостной составляющей.

Вектор mvLX движения устанавливают равной ( refMvLX − mvOffset ).

- Если параметр cIdx равен 0, применяется следующее:

- Масштабные коэффициенты и их представления с фиксированной запятой определяют как

hori_scale_fp = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL … (8-753)

vert_scale_fp = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL … (8-754)

- Пусть ( xIntL, yIntL ) представляет позицию яркостной составляющей в единицах полных отсчетов и ( xFracL, yFracL ) представляет сдвиг в единицах 1/16-отсчетов. Эти переменные используют только в этой статье для спецификации позиций дробных отсчетов внутри массивов refPicLX опорных отсчетов.

- Верхнюю левую координату ( xSbIntL, ySbIntL ) ограничивающего блока для заполнения опорными отсчетами устанавливают равной ( xSb + ( mvLX[ 0 ] >> 4 ), ySb + ( mvLX[ 1 ] >> 4 ) ).

- Для позиции каждого отсчета яркостной составляющей ( xL = 0..sbWidth − 1 + brdExtSize, yL = 0..sbHeight − 1 + brdExtSize ) внутри массива predSamplesLX прогнозируемых отсчетов яркостной составляющей, соответствующее значение predSamplesLX[ xL ][ yL ] прогнозируемого отсчета яркостной составляющей определяют следующим образом:

- Пусть ( refxSbL, refySbL ) и ( refxL, refyL ) представляют позиции яркостной составляющей, указываемые вектором ( refMvLX[0], refMvLX[1] ) движения в единицах 1/16-отсчета. Переменные refxSbL, refxL, refySbL и refyL определяют следующим образом:

refxSbL = ((<< 4 ) + refMvLX[ 0 ] ) * hori_scale_fp … (8-755)

refxL = ( ( Sign( refxSb ) * ( ( Abs( refxSb ) + 128 ) >> 8 )

+ xL * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-756)

refySbL = ( (<< 4 ) + refMvLX[ 1 ] ) * vert_scale_fp (8-757)

refyL = ( ( Sign( refySb ) * ( ( Abs( refySb ) + 128 ) >> 8 ) + yL *

( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-758)

- Переменные xIntL, yIntL, xFracL и yFracL определяют следующим образом:

xIntL = refxL >> 4 … (8-759)

yIntL = refyL >> 4 … (8-760)

xFracL = refxL & 15 … (8-761)

yFracL = refyL & 15 … (8-762)

- Если флаг bdofFlag равен «ИСТИННО» (TRUE) или ( флаг sps_affine_prof_enabled_flag равен «ИСТИННО» (TRUE) и флаг inter_affine_flag[ xSb ][ ySb ] равен «ИСТИННО» (TRUE)), и одно или несколько из следующих условий являются «истинными» (true), значение predSamplesLX[ xL ][ yL ] прогнозируемого отсчета яркостной составляющей определяют посредством использования процедуры выборки целочисленных отсчетов яркостной составляющей, как это специфицировано в статье 8.5.6.3.3 при ( xIntL + ( xFracL >> 3) − 1), yIntL + ( yFracL >> 3 ) − 1 ) и refPicLX в качестве входных данных.

- xL равно 0.

- xL равно sbWidth + 1.

- yL равно 0.

- yL равно sbHeight + 1.

- В противном случае, значение predSamplesLX[ xL ][ yL ] прогнозируемого отсчета яркостной составляющей определяют посредством использования процедуры интерполяционной фильтрации с 8 отводами, как это специфицировано в статье 8.5.6.3.2 при ( xIntL − ( brdExtSize > 0 ? 1 : 0 ), yIntL − ( brdExtSize > 0 ? 1 : 0 ) ), ( xFracL, yFracL ), ( xSbIntL, ySbIntL ), refPicLX, hpelIfIdx, sbWidth, sbHeight и ( xSb, ySb ) в качестве входных данных.

- В противном случае (cIdx не равно 0), применяется следующее:

- Пусть ( xIntC, yIntC ) является позицией цветностной составляющей в единицах полных отсчетов и ( xFracC, yFracC ) представляет сдвиг в единицах 1/32 отсчета. Эти переменные используются только в этой статье для спецификации общих позиций дробных отсчетов внутри массива refPicLX опорных отсчетов.

- Верхнюю левую координату ( xSbIntC, ySbIntC ) ограничивающего блока для заполнения опорными отсчетами устанавливают равной ( (xSb / SubWidthC ) + ( mvLX[ 0 ] >> 5), ( ySb / SubHeightC ) + ( mvLX[ 1 ] >> 5 ) ).

- Для каждой позиции ( xC = 0..sbWidth − 1, yC = 0.. sbHeight − 1 ) отсчетов цветностной составляющей внутри массивов predSamplesLX прогнозируемых отсчетов цветностной составляющей соответствующую значение прогнозируемого отсчета predSamplesLX[ xC ][ yC ] цветностной составляющей определяют следующим образом:

- Пусть (refxSbC, refySbC) и ( refxC, refyC ) представляют позиции отсчетов цветностной составляющей, на которые указывает вектор (mvLX[ 0 ], mvLX[ 1 ]) движения, представленный в единицах 1/32-отсчета. Переменные refxSbC, refySbC, refxC и refyC определяют следующим образом:

refxSbC = (/ SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp … (8-763)

refxC = ( ( Sign( refxSbC ) * ( ( Abs( refxSbC ) + 256 ) >> 9 )

+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-764)

refySbC = ( (/ SubHeightC << 5 ) + mvLX[ 1 ] ) * vert_scale_fp … (8-765)

refyC = ( ( Sign( refySbC ) * ( ( Abs( refySbC ) + 256 ) >> 9 )

+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-766)

- Переменные xIntC, yIntC, xFracC и yFracC определяют следующим образом:

xIntC = refxC >> 5 … (8-767)

yIntC = refyC >> 5 … (8-768)

xFracC = refyC & 31 … (8-769)

yFracC = refyC & 31 …(8-770)

5.3. Вариант 2 определения позиций опорных отсчетов

8.5.6.3.1 Общие положения

Переменную fRefWidth устанавливают равной PicOutputWidthL для опорного изображения в отсчетах яркостной составляющей.

Переменную fRefHeight устанавливают равной PicOutputHeightL для опорного изображения в отсчетах яркостной составляющей.

Вектор mvLX движения устанавливают равным ( refMvLX − mvOffset ).

- Если параметр cIdx равен 0, применяется следующее:

- Масштабные коэффициенты и их представления в формате с фиксированной запятой определяют как

hori_scale_fp = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL … (8-753)

vert_scale_fp = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL … (8-754)

- Пусть ( xIntL, yIntL ) представляет позицию отсчета яркостной составляющей в единицах полных отсчетов и ( xFracL, yFracL ) представляет сдвиг, выраженный в единицах 1/16-отсчета. Эти переменные используют только в этой статье для спецификации позиций дробных отсчетов внутри массива refPicLX опорных отсчетов.

- Координату ( xSbIntL, ySbIntL ) верхней левой точки ограничивающего блока для заполнения опорными отсчетами устанавливают равной ( xSb + ( mvLX[ 0 ] >> 4 ), ySb + ( mvLX[ 1 ] >> 4 ) ).

- Для каждой позиции отсчетов яркостной составляющей location ( xL = 0..sbWidth − 1 + brdExtSize, yL = 0..sbHeight − 1 + brdExtSize ) внутри массива predSamplesLX прогнозируемых отсчетов яркостной составляющей соответствующее значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют следующим образом:

- Пусть ( refxSbL, refySbL ) и ( refxL, refyL ) представляют собой позиции яркостной составляющей, указываемые вектором ( refMvLX[0], refMvLX[1] ) движения, представленным в единицах 1/16-отсчета. Переменные refxSbL, refxL, refySbL и refyL определяют следующим образом:

refxSbL = (( << 4 ) + refMvLX[ 0 ] ) * hori_scale_fp … (8-755)

refxL = ( ( Sign( refxSb ) * ( ( Abs( refxSb ) + 128 ) >> 8 )

+ xL * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-756)

refySbL = ( (<< 4 ) + refMvLX[ 1 ] ) * vert_scale_fp … (8-757)

refyL = ( ( Sign( refySb ) * ( ( Abs( refySb ) + 128 ) >> 8 ) + yL *

( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-758)

- Переменные xIntL, yIntL, xFracL и yFracL определяют следующим образом:

xIntL = refxL >> 4 … (8-759)

yIntL = refyL >> 4 … (8-760)

xFracL = refxL & 15 … (8-761)

yFracL = refyL & 15 … (8-762)

- Если флаг bdofFlag равен «ИСТИННО» (TRUE) или (флаг sps_affine_prof_enabled_flag равен «ИСТИННО» (TRUE) и флаг inter_affine_flag[ xSb ][ ySb ] равен «ИСТИННО» (TRUE)), и одно или несколько из следующих условий является «истинным» (true), значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют посредством использования процедуры выборки целочисленных отсчетов яркостной составляющей, как это специфицировано в статье 8.5.6.3.3 при ( xIntL + ( xFracL >> 3) − 1), yIntL + ( yFracL >> 3 ) − 1 ) и refPicLX в качестве входных данных.

- xL равно 0.

- xL равно sbWidth + 1.

- yL равно 0.

- yL равно sbHeight + 1.

- В противном случае, значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют посредством использования процедуры интерполяционной фильтрации с 8 отводами, как это специфицировано в статье 8.5.6.3.2 при ( xIntL − ( brdExtSize > 0 ? 1 : 0 ), yIntL − ( brdExtSize > 0 ? 1 : 0 ) ), ( xFracL, yFracL ), ( xSbIntL, ySbIntL ), refPicLX, hpelIfIdx, sbWidth, sbHeight и ( xSb, ySb ) в качастве входных данных.

- В противном случае (параметр cIdx не равен 0), применяется следующее:

- Пусть ( xIntC, yIntC ) является позицией цветностной составляющей в единицах полных отсчетов и ( xFracC, yFracC ) представляет сдвиг в единицах 1/32 отсчета. Эти переменные используются только в этой статье для спецификации общих позиций дробных отсчетов внутри массива refPicLX опорных отсчетов.

- Верхнюю левую координату ( xSbIntC, ySbIntC ) ограничивающего блока для заполнения опорными отсчетами устанавливают равной ( (xSb / SubWidthC ) + ( mvLX[ 0 ] >> 5), ( ySb / SubHeightC ) + ( mvLX[ 1 ] >> 5 ) ).

- Для каждой позиции ( xC = 0..sbWidth − 1, yC = 0.. sbHeight − 1 ) отсчетов цветностной составляющей внутри массивов predSamplesLX прогнозируемых отсчетов цветностной составляющей соответствующее значение прогнозируемого отсчета predSamplesLX[ xC ][ yC ] цветностной составляющей определяют следующим образом:

- Пусть (refxSbC, refySbC) и ( refxC, refyC ) представляют позиции отсчетов цветностной составляющей, на которые указывает вектор (mvLX[ 0 ], mvLX[ 1 ]) движения, представленный в единицах 1/32-отсчета. Переменные refxSbC, refySbC, refxC и refyC определяют следующим образом:

refxSbC = ( (/ SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp … (8-763)

refxC = ( ( Sign( refxSbC ) * ( ( Abs( refxSbC ) + 256 ) >> 9 )

+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-764)

refySbC = ( (/ SubHeightC << 5 ) + mvLX[ 1 ] ) * vert_scale_fp … (8-765)

refyC = ( ( Sign( refySbC ) * ( ( Abs( refySbC ) + 256 ) >> 9 )

+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-766)

- Переменные xIntC, yIntC, xFracC и yFracC определяют следующим образом:

xIntC = refxC >> 5 … (8-767)

yIntC = refyC >> 5 … (8-768)

xFracC = refyC & 31 … (8-769)

yFracC = refyC & 31 … (8-770)

5.4. Вариант 3 определения позиций опорных отсчетов

8.5.6.3.1 Общие положения

Переменную fRefWidth устанавливают равной PicOutputWidthL для опорного изображения в отсчетах яркостной составляющей.

Переменную fRefHeight устанавливают равной PicOutputHeightL для опорного изображения в отсчетах яркостной составляющей.

Вектор mvLX движения устанавливают равным ( refMvLX − mvOffset ).

- Если параметр cIdx равен 0, применяется следующее:

- Масштабные коэффициенты и их представления в формате с фиксированной запятой определяют как

hori_scale_fp = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL … (8-753)

vert_scale_fp = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL … (8-754)

- Пусть ( xIntL, yIntL ) представляет позицию отсчета яркостной составляющей в единицах полных отсчетов и ( xFracL, yFracL ) представляет сдвиг, выраженный в единицах 1/16-отсчета. Эти переменные используют только в этой статье для спецификации позиций дробных отсчетов внутри массива refPicLX опорных отсчетов.

- Координату ( xSbIntL, ySbIntL ) верхней левой точки ограничивающего блока для заполнения опорными отсчетами устанавливают равной ( xSb + ( mvLX[ 0 ] >> 4 ), ySb + ( mvLX[ 1 ] >> 4 ) ).

- Для каждой позиции отсчетов яркостной составляющей location ( xL = 0..sbWidth − 1 + brdExtSize, yL = 0..sbHeight − 1 + brdExtSize ) внутри массива predSamplesLX прогнозируемых отсчетов яркостной составляющей, соответствующее значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют следующим образом:

- Пусть ( refxSbL, refySbL ) и ( refxL, refyL ) представляют собой позиции яркостной составляющей, указываемые вектором ( refMvLX[0], refMvLX[1] ) движения, представленным в единицах 1/16-отсчета. Переменные refxSbL, refxL, refySbL и refyL определяют следующим образом:

refxSbL = ((<< 4 ) + refMvLX[ 0 ] ) * hori_scale_fp … (8-755)

refxL = ( ( Sign( refxSb ) * ( ( Abs( refxSb ) + 128 ) >> 8 )

+ xL * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-756)

refySbL = ( (<< 4 ) + refMvLX[ 1 ] ) * vert_scale_fp … (8-757)

refyL = ( ( Sign( refySb ) * ( ( Abs( refySb ) + 128 ) >> 8 ) + yL *

( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-758)

- Переменную xIntL, yIntL, xFracL и yFracL определяют следующим образом:

xIntL = refxL >> 4 … (8-759)

yIntL = refyL >> 4 … (8-760)

xFracL = refxL & 15 … (8-761)

yFracL = refyL & 15 … (8-762)

- Если флаг bdofFlag равен «ИСТИННО» (TRUE) или (флаг sps_affine_prof_enabled_flag равен «ИСТИННО» (TRUE) и флаг inter_affine_flag[ xSb ][ ySb ] равен «ИСТИННО» (TRUE)), и одно или несколько из следующих условий является «истинным» (true), значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют посредством использования процедуры выборки целочисленных отсчетов яркостной составляющей, как это специфицировано в статье 8.5.6.3.3 при ( xIntL + ( xFracL >> 3) − 1), yIntL + ( yFracL >> 3 ) − 1 ) и refPicLX в качестве входных данных.

- xL равно 0.

- xL равно sbWidth + 1.

- yL равно 0.

- yL равно sbHeight + 1.

- В противном случае, значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют посредством использования процедуры интерполяционной фильтрации с 8 отводами, как это специфицировано в статье 8.5.6.3.2 при ( xIntL − ( brdExtSize > 0 ? 1 : 0 ), yIntL − ( brdExtSize > 0 ? 1 : 0 ) ), ( xFracL, yFracL ), ( xSbIntL, ySbIntL ), refPicLX, hpelIfIdx, sbWidth, sbHeight и ( xSb, ySb ) в качастве входных данных.

- В противном случае (параметр cIdx не равен 0), применяется следующее:

- Пусть ( xIntC, yIntC ) является позицией цветностной составляющей в единицах полных отсчетов и ( xFracC, yFracC ) представляет сдвиг в единицах 1/32 отсчета. Эти переменные используются только в этой статье для спецификации общих позиций дробных отсчетов внутри массива refPicLX опорных отсчетов.

- Верхнюю левую координату ( xSbIntC, ySbIntC ) ограничивающего блока для заполнения опорными отсчетами устанавливают равной ( (xSb / SubWidthC ) + ( mvLX[ 0 ] >> 5), ( ySb / SubHeightC ) + ( mvLX[ 1 ] >> 5 ) ).

- Для каждой позиции ( xC = 0..sbWidth − 1, yC = 0.. sbHeight − 1 ) отсчетов цветностной составляющей внутри массивов predSamplesLX прогнозируемых отсчетов цветностной составляющей соответствующее значение прогнозируемого отсчета predSamplesLX[ xC ][ yC ] цветностной составляющей определяют следующим образом:

- Пусть (refxSbC, refySbC) и ( refxC, refyC ) представляют позиции отсчетов цветностной составляющей, на которые указывает вектор (mvLX[ 0 ], mvLX[ 1 ]) движения, представленный в единицах 1/32-отсчета. Переменные refxSbC, refySbC, refxC и refyC определяют следующим образом:

refxSbC = ( (/ SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp … (8-763)

refxC = ( ( Sign( refxSbC ) * ( ( Abs( refxSbC ) + 256 ) >> 9 )

+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-764)

refySbC = ( (/ SubHeightC << 5 ) + mvLX[ 1 ] ) * vert_scale_fp … (8-765)

refyC = ( ( Sign( refySbC ) * ( ( Abs( refySbC ) + 256 ) >> 9 )

+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-766)

- Переменные xIntC, yIntC, xFracC и yFracC определяют следующим образом:

xIntC = refxC >> 5 … (8-767)

yIntC = refyC >> 5 … (8-768)

xFracC = refyC & 31 … (8-769)

yFracC = refyC & 31 … (8-770)

5.5. Вариант 1 усечения позиций опорных отсчетов

8.5.6.3.1 Общие положения

Входными данными для этой процедуры являются:

- позиция ( xSb, ySb ) отсчета яркостной составляющей, специфицирующая верхний левый отсчет текущего субблока кодирования относительно верхнего левого отсчета яркостной составляющей в текущем изображении,

- переменная sbWidth, специфицирующая ширину текущего субблока кодирования,

- пересенная sbHeight, специфицирующая высоту текущего субблока кодирования,

- сдвиг вектора движения, mvOffset,

- уточненный вектор движения, refMvLX,

- выбранный массив отсчетов опорного изображения, refPicLX,

- индекс интерполяционного фильтра с точностью в половину отсчета, hpelIfIdx,

- флаг двунаправленного оптического потока, bdofFlag,

- переменная cIdx, специфицирующая индекс цветовой составляющей текущего блока.

Выходными данными этой процедуры являются:

- массив predSamplesLX размером (sbWidth + brdExtSize)x(sbHeight + brdExtSize) прогнозируемых значений отсчетов.

Размер brdExtSize расширения границ прогнозируемого блока определяют следующим образом:

brdExtSize = ( bdofFlag | | ( inter_affine_flag[ xSb ][ ySb ] && sps_affine_prof_enabled_flag ) ) ? 2 : 0 … (8-752)

Переменную fRefWidth устанавливают равной PicOutputWidthL для опорного изображения в отсчетах яркостной составляющей.

Переменную fRefHeight устанавливают равной PicOutputHeightL для опорного изображения в отсчетах яркостной составляющей.

Вектор mvLX движения устанавливают равным ( refMvLX − mvOffset ).

- Если параметр cIdx равен 0, применяется следующее:

- Масштабные коэффициенты и их представления в формате с фиксированной запятой определяют следующим образом

hori_scale_fp = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL … (8-753)

vert_scale_fp = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL … (8-754)

- Пусть ( xIntL, yIntL ) представляет позицию яркостной составляющей в единицах полных отсчетов, и ( xFracL, yFracL ) представляет сдвиг, выраженный в единицах 1/16-отсчета. Эти переменные используются только в этой статье для спецификации позиций дробных отсчетов внутри массивов refPicLX опорных отсчетов.

- Координату ( xSbIntL, ySbIntL ) верхней левой точки ограничивающего блока для заполнения опорными отсчетами устанавливают равной ( xSb + ( mvLX[ 0 ] >> 4 ), ySb + ( mvLX[ 1 ] >> 4 ) ).

- Для каждой позиции ( xL = 0..sbWidth − 1 + brdExtSize, yL = 0..sbHeight − 1 + brdExtSize ) отсчета яркостной составляющей внутри массива predSamplesLX прогнозируемых отсчетов яркостной составляющей, значение соответствующего прогнозируемого отсчета яркостной составляющей, predSamplesLX[ xL ][ yL ], определяют следующим образом:

- Пусть ( refxSbL, refySbL ) и ( refxL, refyL ) позиции отсчетов яркостной составляющей, указываемые вектором ( refMvLX[0], refMvLX[1] ) движения и представленные в единицах 1/16-отсчета. Переменные refxSbL, refxL, refySbL и refyL определяют следующим образом:

refxSbL = ( ( xSb << 4 ) + refMvLX[ 0 ] ) * hori_scale_fp … (8-755)

refxL = ( ( Sign( refxSb ) * ( ( Abs( refxSb ) + 128 ) >> 8 )

+ xL * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-756)

refySbL = ( ( ySb << 4 ) + refMvLX[ 1 ] ) * vert_scale_fp … (8-757)

refyL = ( ( Sign( refySb ) * ( ( Abs( refySb ) + 128 ) >> 8 ) + yL *

( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-758)

- Переменные xIntL, yIntL, xFracL и yFracL определяют следующим образом:

xIntL = … (8-759)

yIntL = … (8-760)

xFracL = refxL & 15 … (8-761)

yFracL = refyL & 15 … (8-762)

- Если флаг bdofFlag равен «ИСТИННО» (TRUE) или (флаг sps_affine_prof_enabled_flag равен «ИСТИННО» (TRUE) и флаг inter_affine_flag[ xSb ][ ySb ] равен «ИСТИННО» (TRUE)), и одно или несколько из следующих условий является «истинным» (true), значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют посредством использования процедуры выборки целочисленных отсчетов яркостной составляющей, как это специфицировано в статье 8.5.6.3.3 при ( xIntL + ( xFracL >> 3) − 1), yIntL + ( yFracL >> 3 ) − 1 ) и refPicLX в качестве входных данных.

- xL равно 0.

- xL равно sbWidth + 1.

- yL равно 0.

- yL равно sbHeight + 1.

- В противном случае, значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют посредством использования процедуры интерполяционной фильтрации с 8 отводами, как это специфицировано в статье 8.5.6.3.2 при ( xIntL − ( brdExtSize > 0 ? 1 : 0 ), yIntL − ( brdExtSize > 0 ? 1 : 0 ) ), ( xFracL, yFracL ), ( xSbIntL, ySbIntL ), refPicLX, hpelIfIdx, sbWidth, sbHeight и ( xSb, ySb ) в качестве входных данных.

- В противном случае (cIdx is not equal to 0), применяется следующее:

- Пусть ( xIntC, yIntC ) является позицией цветностной составляющей в единицах полных отсчетов и ( xFracC, yFracC ) представляет сдвиг в единицах 1/32 отсчета. Эти переменные используются только в этой статье для спецификации общих позиций дробных отсчетов внутри массива refPicLX опорных отсчетов.

- Верхнюю левую координату ( xSbIntC, ySbIntC ) ограничивающего блока для заполнения опорными отсчетами устанавливают равной ( (xSb / SubWidthC ) + ( mvLX[ 0 ] >> 5), ( ySb / SubHeightC ) + ( mvLX[ 1 ] >> 5 ) ).

- Для каждой позиции ( xC = 0..sbWidth − 1, yC = 0.. sbHeight − 1 ) отсчетов цветностной составляющей внутри массивов predSamplesLX прогнозируемых отсчетов цветностной составляющей соответствующее значение прогнозируемого отсчета predSamplesLX[ xC ][ yC ] цветностной составляющей определяют следующим образом:

- Пусть (refxSbC, refySbC) и ( refxC, refyC ) представляют позиции отсчетов цветностной составляющей, на которые указывает вектор (mvLX[ 0 ], mvLX[ 1 ]) движения, представленный в единицах 1/32-отсчета. Переменные refxSbC, refySbC, refxC и refyC определяют следующим образом:

refxSbC = ( ( xSb / SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp … (8-763)

refxC = ( ( Sign( refxSbC ) * ( ( Abs( refxSbC ) + 256 ) >> 9 )

+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-764)

refySbC = ( ( ySb / SubHeightC << 5 ) + mvLX[ 1 ] ) * vert_scale_fp … (8-765)

refyC = ( ( Sign( refySbC ) * ( ( Abs( refySbC ) + 256 ) >> 9 )

+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-766)

- Переменные xIntC, yIntC, xFracC и yFracC определяют следующим образом:

xFracC = refyC & 31 … (8-769)

yFracC = refyC & 31 … (8-770)

- Значение прогнозируемого отсчета, predSamplesLX[ xC ][ yC ], определяют посредством использования процедуры, специфицированной в статье 8.5.6.3.4 при ( xIntC, yIntC ), ( xFracC, yFracC ), ( xSbIntC, ySbIntC ), sbWidth, sbHeight и

5.6. Вариант 2 усечения позиций опорных отсчетов

8.5.6.3.1 Общие положения

Входными данными для этой процедуры являются:

- позиция ( xSb, ySb ) отсчета яркостной составляющей, специфицирующая верхний левый отсчет текущего субблока кодирования относительно верхнего левого отсчета яркостной составляющей в текущем изображении,

- переменная sbWidth, специфицирующая ширину текущего субблока кодирования,

- переменная sbHeight, специфицирующая высоту текущего субблока кодирования,

- сдвиг вектора движения, mvOffset,

- уточненный вектор движения, refMvLX,

- выбранный массив отсчетов опорного изображения, refPicLX,

- индекс интерполяционного фильтра с точностью в половину отсчета, hpelIfIdx,

- флаг двунаправленного оптического потока, bdofFlag,

- переменная cIdx, специфицирующая индекс цветовой составляющей текущего блока.

Выходными данными этой процедуры являются:

- массив predSamplesLX размером (sbWidth + brdExtSize)x(sbHeight + brdExtSize) прогнозируемых значений отсчетов.

Размер brdExtSize расширения границ прогнозируемого блока определяют следующим образом:

brdExtSize = ( bdofFlag | | ( inter_affine_flag[ xSb ][ ySb ] && sps_affine_prof_enabled_flag ) ) ? 2 : 0 … (8-752)

Переменную fRefWidth устанавливают равной PicOutputWidthL для опорного изображения в отсчетах яркостной составляющей.

Переменную fRefHeight устанавливают равной PicOutputHeightL для опорного изображения в отсчетах яркостной составляющей.

Вектор mvLX движения устанавливают равным ( refMvLX − mvOffset ).

- Если параметр cIdx равен 0, применяется следующее:

- Масштабные коэффициенты и их представления в формате с фиксированной запятой определяют следующим образом

hori_scale_fp = ( ( fRefWidth << 14 ) + ( PicOutputWidthL >> 1 ) ) / PicOutputWidthL (8-753)

vert_scale_fp = ( ( fRefHeight << 14 ) + ( PicOutputHeightL >> 1 ) ) / PicOutputHeightL … (8-754)

- Пусть ( xIntL, yIntL ) представляет позицию яркостной составляющей в единицах полных отсчетов, и ( xFracL, yFracL ) представляет сдвиг, выраженный в единицах 1/16-отсчета. Эти переменные используются только в этой статье для спецификации позиций дробных отсчетов внутри массивов refPicLX опорных отсчетов.

- Координату ( xSbIntL, ySbIntL ) верхней левой точки ограничивающего блока для заполнения опорными отсчетами устанавливают равной ( xSb + ( mvLX[ 0 ] >> 4 ), ySb + ( mvLX[ 1 ] >> 4 ) ).

- Для каждой позиции ( xL = 0..sbWidth − 1 + brdExtSize, yL = 0..sbHeight − 1 + brdExtSize ) отсчета яркостной составляющей внутри массива predSamplesLX прогнозируемых отсчетов яркостной составляющей, значение соответствующего прогнозируемого отсчета яркостной составляющей, predSamplesLX[ xL ][ yL ], определяют следующим образом:

- Пусть ( refxSbL, refySbL ) и ( refxL, refyL ) позиции отсчетов яркостной составляющей, указываемые вектором ( refMvLX[0], refMvLX[1] ) движения и представленные в единицах 1/16-отсчета. Переменные refxSbL, refxL, refySbL и refyL определяют следующим образом:

refxSbL = ( ( xSb << 4 ) + refMvLX[ 0 ] ) * hori_scale_fp … (8-755)

refxL = ( ( Sign( refxSb ) * ( ( Abs( refxSb ) + 128 ) >> 8 )

+ xL * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-756)

refySbL = ( ( ySb << 4 ) + refMvLX[ 1 ] ) * vert_scale_fp … (8-757)

refyL = ( ( Sign( refySb ) * ( ( Abs( refySb ) + 128 ) >> 8 ) + yL *

( ( vert_scale_fp + 8 ) >> 4 ) ) + 32 ) >> 6 … (8-758)

- Переменные xIntL, yIntL, xFracL и yFracL определяют следующим образом:

xFracL = refxL & 15 … (8-761)

yFracL = refyL & 15 … (8-762)

- Если флаг bdofFlag равен «ИСТИННО» (TRUE) или (флаг sps_affine_prof_enabled_flag равен «ИСТИННО» (TRUE) и флаг inter_affine_flag[ xSb ][ ySb ] равен «ИСТИННО» (TRUE)), и одно или несколько из следующих условий является «истинным» (true), значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют посредством использования процедуры выборки целочисленных отсчетов яркостной составляющей, как это специфицировано в статье 8.5.6.3.3 при ( xIntL + ( xFracL >> 3) − 1), yIntL + ( yFracL >> 3 ) − 1 ) и refPicLX в качестве входных данных.

- xL равно 0.

- xL равно sbWidth + 1.

- yL равно 0.

- yL равно sbHeight + 1.

- В противном случае, значение прогнозируемого отсчета predSamplesLX[ xL ][ yL ] яркостной составляющей определяют посредством использования процедуры интерполяционной фильтрации с 8 отводами, как это специфицировано в статье 8.5.6.3.2 при ( xIntL − ( brdExtSize > 0 ? 1 : 0 ), yIntL − ( brdExtSize > 0 ? 1 : 0 ) ), ( xFracL, yFracL ), ( xSbIntL, ySbIntL ), refPicLX, hpelIfIdx, sbWidth, sbHeight и ( xSb, ySb ) в качестве входных данных.

- В противном случае (cIdx не равно 0), применяется следующее:

- Пусть ( xIntC, yIntC ) является позицией цветностной составляющей в единицах полных отсчетов и ( xFracC, yFracC ) представляет сдвиг в единицах 1/32 отсчета. Эти переменные используются только в этой статье для спецификации общих позиций дробных отсчетов внутри массива refPicLX опорных отсчетов.

- Верхнюю левую координату ( xSbIntC, ySbIntC ) ограничивающего блока для заполнения опорными отсчетами устанавливают равной ( (xSb / SubWidthC ) + ( mvLX[ 0 ] >> 5), ( ySb / SubHeightC ) + ( mvLX[ 1 ] >> 5 ) ).

- Для каждой позиции ( xC = 0..sbWidth − 1, yC = 0.. sbHeight − 1 ) отсчетов цветностной составляющей внутри массивов predSamplesLX прогнозируемых отсчетов цветностной составляющей, соответствующее значение прогнозируемого отсчета predSamplesLX[ xC ][ yC ] цветностной составляющей определяют следующим образом:

- Пусть (refxSbC, refySbC) и ( refxC, refyC ) представляют позиции отсчетов цветностной составляющей, на которые указывает вектор (mvLX[ 0 ], mvLX[ 1 ]) движения, представленный в единицах 1/32-отсчета. Переменные refxSbC, refySbC, refxC и refyC определяют следующим образом:

refxSbC = ( ( xSb / SubWidthC << 5 ) + mvLX[ 0 ] ) * hori_scale_fp … (8-763)

refxC = ( ( Sign( refxSbC ) * ( ( Abs( refxSbC ) + 256 ) >> 9 )

+ xC * ( ( hori_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-764)

refySbC = ( ( ySb / SubHeightC << 5 ) + mvLX[ 1 ] ) * vert_scale_fp … (8-765)

refyC = ( ( Sign( refySbC ) * ( ( Abs( refySbC ) + 256 ) >> 9 )

+ yC* ( ( vert_scale_fp + 8 ) >> 4 ) ) + 16 ) >> 5 … (8-766)

- Переменные xIntC, yIntC, xFracC и yFracC определяют следующим образом:

xFracC = refyC & 31 … (8-769)

yFracC = refyC & 31 … (8-770)

- Значение прогнозируемого отсчета, predSamplesLX[ xC ][ yC ], определяют посредством использования процедуры, специфицированной в статье 8.5.6.3.4 при ( xIntC, yIntC ), ( xFracC, yFracC ), ( xSbIntC, ySbIntC ), sbWidth, sbHeight и refPicLX в качестве входных данных.

6. Примеры вариантов реализации предлагаемой технологии

На фиг. 5 представлена блок схема устройства 500 обработки видео. Это устройство 500 может быть использовано для осуществления одного или нескольких описываемых здесь способов. Это устройство 500 может представлять собой смартфон, планшетный компьютер, обычный компьютер, приемник Интернет вещей (Internet of Things (IoT)) и т.д. Устройство 500 может содержать один или несколько процессоров 502, одно или несколько запоминающих устройств 504 и аппаратуру 506 для обработки видео. Процессор (ы) 502 может быть конфигурирован для реализации одного или нескольких способов, описываемых в настоящем документе. Запоминающее устройство (устройства) 504 может быть использовано для сохранения данных и кода, применяемых для реализации способов и технологий, описываемых здесь. Аппаратура 506 для обработки видео может быть использована для реализации, в аппаратной схеме, некоторых технологий, описываемых в настоящем документе, и может частично или полностью быть частью процессоров 502 (например, представлять собой графическое процессорное ядро GPU или другую схему обработки сигнала).

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

Следует понимать, что рассмотренные здесь способы и технологии дадут преимущества для вариантов кодирующего устройства для видео и/или декодирующего устройства для видео, встроенных в устройства для обработки видео, такие как смартфоны, портативные компьютеры, настольные компьютеры и другие подобные устройства, позволяя пользователю использовать технологии, описываемые в настоящем документе.

На фиг. 6 представлена логическая схема примера способа 600 обработки видео. Способ 600 содержит, в ходе операции 610, осуществление преобразования между текущим видеоблоком и кодированным представлением этого текущего видеоблока, где, в процессе преобразования, если разрешение и/или размер опорного изображения отличается от разрешения и/или размера текущего видеоблока, один и тот же интерполяционный фильтр применяют к группе смежных или несмежных отсчетов, прогнозируемых с использованием текущего видеоблока.

Некоторые варианты могут быть описаны с использованием следующего постатейного формата.

1. Способ обработки видео, содержащий:

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

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

3. Способ по статье 1, отличающийся тем, что указанный один и тот же интерполяционный фильтр представляет собой горизонтальный интерполяционный фильтр.

4. Способ по статье 1, отличающийся тем, что указанная группа смежных или несмежных отсчетов содержит все отсчеты, расположенные в области текущего видеоблока.

5. Способ по статье 4, отличающийся тем, что текущий видеоблок разбит на несколько прямоугольников размером MXN каждый.

6. Способ по статье 5, отличающийся тем, что числа M и/или N задают предварительно.

7. Способ по статье 5, отличающийся тем, что числа M и/или N определяют, исходя из размеров текущего видеоблока.

8. Способ по статье 5, отличающийся тем, что числа M и/или N передают в форме сигнализации в кодированном представлении текущего видеоблока.

9. Способ по статье 1, отличающийся тем, что указанная группа отсчетов совместно использует один и тот же вектор движения.

10. Способ по статье 9, отличающийся тем, что указанная группа отсчетов совместно использует одну и ту же горизонтальную составляющую и/или дробную часть горизонтальной составляющей.

11. Способ по статье 9, отличающийся тем, что указанная группа отсчетов совместно использует одну и ту же вертикальную составляющую и/или дробную часть вертикальной составляющей.

12. Способ по одной или нескольким из статей 9 – 11, отличающийся тем, что указанный один и тот же вектор движения или его составляющие удовлетворяют одному или нескольким правилам на основе по меньшей мере одного из параметров: разрешения опорного изображения, размера опорного изображения, разрешения текущего видеоблока, размера текущего видеоблока или некоего прецизионного значения.

13. Способ по одной или нескольким из статей 9 – 11, отличающийся тем, что указанный один и тот же вектор движения или его составляющие соответствуют информации о движении отсчета, расположенного в текущем видеоблоке.

14. Способ по одной или нескольким из статей 9 – 11, отличающийся тем, что указанный один и тот же вектор движения или его составляющие устанавливают в соответствии с информацией о движении виртуального отсчета, расположенного внутри или вне указанной группы.

15. Способ обработки видео, содержащий:

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

16. Способ по статье 15, отличающийся тем, что целочисленную информацию о движении определяют путем округления исходной информации о движении для текущего видеоблока.

17. Способ по статье 15, отличающийся тем, что исходная информация о движении текущего видеоблока представляет собой информацию о движении в горизонтальном направлении и/или вертикальном направлении.

18. Способ обработки видео, содержащий:

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

19. Способ по статье 18, отличающийся тем, что указанное правило связано с разрешением и/или размером опорного изображения относительно разрешения и/или размера текущего изображения.

20. Способ по статье 18, отличающийся тем, что указанный интерполяционный фильтр представляет собой вертикальный интерполяционный фильтр.

21. Способ по статье 18, отличающийся тем, что указанный интерполяционный фильтр представляет собой горизонтальный интерполяционный фильтр.

22. Способ по статье 18, отличающийся тем, что указанный интерполяционный фильтр представляет собой одно из: фильтр с 1 отводом, билинейный фильтр, фильтр с 4 отводами или фильтр с 6 отводами.

23. Способ по статье 22, отличающийся тем, что указанный интерполяционный фильтр используется как часть других этапов преобразования.

24. Способ по статье 18, отличающийся тем, что применение интерполяционного фильтра содержит использование заполняющих отсчетов.

25. Способ по статье 18, отличающийся тем, что использование интерполяционного фильтра зависит от цветовой составляющей отсчета текущего видеоблока.

26. Способ обработки видео, содержащий:

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

27. Способ по статье 27, отличающийся тем, что сила деблокирующего фильтра изменяется от одного видеоблока к другому.

28. Способ обработки видео, содержащий:

осуществление преобразования между текущим видеоблоком и кодированным представлением этого текущего видеоблока, где, в процессе преобразования, если субизображение для текущего видеоблока существует, поток битов данных соответствия удовлетворяет некому правилу, относящемуся к разрешению и/или размеру опорного изображения относительно разрешения и/или размера текущего видеоблока.

29. Способ по статье 28, дополнительно содержащий:

разбиение текущего видеоблока на одно или несколько субизображений, где это разбиение зависит по меньшей мере от разрешения текущего видеоблока.

30. Способ обработки видео, содержащий:

осуществление преобразования между текущим видеоблоком и кодированным представлением этого текущего видеоблока, где, в процессе преобразования, производят редискретизацию опорного изображения для текущего видеоблока в соответствии с неким правилом на основе размеров текущего видеоблока.

31. Способ обработки видео, содержащий:

осуществление преобразования между текущим видеоблоком и кодированным представлением этого текущего видеоблока, где, в процессе преобразования, использование какого-либо инструмента кодирования для текущего видеоблока избирательно активизируют или отменяют активизацию в зависимости от разрешения/размера опорного изображения для текущего видеоблока относительно разрешения/размера текущего видеоблока.

32. Способ по одной или нескольким из приведенных выше статей, отличающийся тем, что указанная группа отсчетов расположена в окне соответствия.

33. Способ по статье 32, отличающийся тем, что окно соответствия имеет прямоугольную форму.

34. Способ по одной или нескольким из приведенных выше статей, отличающийся тем, что термин «разрешение» здесь относится к разрешению кодированного/декодированного видеоблока или к разрешению окна соответствия в этом кодированном/декодированном видеоблоке.

35. Способ по одной или нескольким из приведенных выше статей, отличающийся тем, что термин «размер» здесь относится к размеру кодированного/декодированного видеоблока или к размеру окна соответствия в этом кодированном/декодированном видеоблоке.

36. Способ по одной или нескольким из приведенных выше статей, отличающийся тем, что термин «измерения» здесь относится к измерениям кодированного/декодированного видеоблока или к измерениям окна соответствия в этом кодированном/декодированном видеоблоке.

37. Способ по статье 32, отличающийся тем, что окно соответствия определено набором параметров окна усечения соответствия.

38. Способ по статье 37, отличающийся тем, что по меньшей мере часть набора параметров окна усечения соответствия передают неявным или явным образом в виде сигнализации в указанном кодированном представлении.

39. Способ по одной или нескольким из приведенных выше статей, отличающийся тем, что не допускается передавать набор параметров окна усечения соответствия в виде сигнализации в кодированном представлении.

40. Способ по одной или нескольким из приведенных выше статей, отличающийся тем, что позицию опорного отсчета определяют по отношению к верхнему левому отсчету текущего видеоблока в окне соответствия.

41. Способ обработки видео, содержащий:

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

42. Декодирующее устройство для видео, содержащее процессор, конфигурированный для осуществления одного из способов согласно одной или нескольким статьям 1 – 41.

43. Кодирующее устройство для видео, содержащее процессор, конфигурированный для осуществления одного из способов согласно одной или нескольким статьям 1 – 41.

44. Компьютерный программный продукт, имеющий сохраненный в нем компьютерный код, при выполнении которого процессором этот процессор осуществляет один из способов согласно одной или нескольким статьям 1 – 41.

45. Способ, устройство или система, описываемые в настоящем документе.

На фиг. 7 представлена блок-схема, показывающая пример системы 700 обработки видео, в которой могут быть реализованы разнообразные описываемые здесь способы. Разнообразные варианты реализации могут содержать некоторые или все компоненты системы 700. Система 700 может содержать вход 702 для приема контента видео. Этот контент видео может быть принят в исходном или несжатом формате, например, в виде 8 или 10-битовых значений многокомпонентных пикселей, либо может быть в сжатом или в кодированном формате. Этот вход 702 может представлять собой сетевой интерфейс, интерфейс шины периферийных устройств или интерфейс запоминающих устройств. К примерам сетевых интерфейсов относятся проводные интерфейсы шин, такие Этернет, пассивная оптическая сеть (passive optical network (PON)) и т.п., и беспроводные интерфейсы, такие как Wi-Fi или сотовые интерфейсы.

Система 700 может содержать кодирующий компонент 704, способный реализовать различные способы кодирования, описываемые в настоящем документе. Кодирующий компонент 704 может уменьшить среднюю скорость передачи битов данных видео от входа 702 к выходу кодирующего компонента 704 для получения кодированного представления видео. Поэтому, эти способы кодирования иногда называют способами сжатия видео или транскодирования видео. Выходные данные кодирующего компонента 704 могут быть либо сохранены, либо переданы через присоединенные средства связи, представленные здесь компонентом 706. Сохраняемое или передаваемое (или кодированное) представление видео в виде потока битов данных, принимаемое на вход 702, может быть использовано компонентом 708 для генерации значений пикселей или представляемого на дисплее видео, передаваемого интерфейсу 710 дисплея. Процедура генерации просматриваемого пользователем видео из его представления в виде потока битов данных иногда называется декомпрессией (расширением) видео. Кроме того, хотя некоторые операции обработки видео называются операциями или инструментами «кодирования», следует понимать, что инструменты или операции кодирования используются в кодирующих устройствах и соответствующие инструменты или операции декодирования, которые обращают результаты кодирования, будут осуществляться декодирующим устройством.

Примеры интерфейса шины периферийных устройств или интерфейса дисплея могут представлять собой универсальную последовательную шину (universal serial bus (USB)) или мультимедийный интерфейс высокой четкости (high definition multimedia interface (HDMI)) или Displayport, и т.д. К примерам интерфейса запоминающих устройств относятся интерфейс усовершенствованного последовательного соединения (SATA (serial advanced technology attachment)), интерфейс периферийных устройств (PCI), интерфейс IDE и другие подобные интерфейсы. Способы, описываемые в настоящем документе, могут быть реализованы в разнообразных электронных устройствах, таких как мобильные телефоны, портативные компьютеры, смартфоны или другие устройства, способные осуществлять цифровую обработку данных и/или представлять видео на дисплее.

На фиг. 8 представлена блок-схема, иллюстрирующая пример системы 100 кодирования видео, которая может использовать технологии согласно настоящему изобретению.

Как показано на фиг. 8, система 100 кодирования видео может содержать 100 устройство-источник 110 и устройство-получатель 120 (или адресат). Устройство-источник 110 генерирует кодированные данные видео и потому может называться устройством для кодирования видео. Устройство-получатель 120 может декодировать кодированные данные видео, генерируемые устройством-источником 110, и потому может называться устройством для декодирования видео.

Устройство-источник 110 может содержать источник 112 видео, кодирующее устройство 114 для видео и интерфейс 116 ввода/вывода (input/output (I/O)).

Источник 112 видео может содержать собственно источник, такой как устройство захвата (съемки) видео, интерфейс для приема данных видео от провайдера контента видео и/или система компьютерной графики для генерации данных видео или комбинацию таких источников. Данные видео могут содержать одно или несколько изображений. Кодирующее устройство 114 для видео кодирует данные видео от источника 112 видео для генерации потока битов данных. Этот поток битов данных может содержать последовательность битов данных, образующих кодированное представление данных видео. Этот поток битов данных может содержать кодированные изображения и ассоциированные данные. Кодированное изображение представляет собой кодированное представление изображения. Указанные ассоциированные данные могут содержать набор параметров последовательности, набор параметров изображения и другие синтаксические структуры. Интерфейс I/O 116 может содержать модулятор/демодулятор (модем) и/или передатчик. Кодированные данные видео могут быть переданы напрямую устройству-получателю 120 через интерфейс I/O 116 по сети 130a связи. Кодированные данные видео могут быть также сохранены на носителе/сервере 130b для хранения информации, доступном для устройства-получателя 120.

Устройство-получатель 120 может содержать интерфейс I/O 126, декодирующее устройство 124 для видео и дисплейное устройство 122.

Интерфейс I/O 126 может содержать приемник и/или модем. Интерфейс I/O 126 может получать кодированные данные видео от устройства-источника 110 или от носителя/сервера 130b для хранения информации. Декодирующее устройство 124 для видео может декодировать кодированные данные видео. Дисплейное устройство 122 может представлять декодированные данные видео пользователю. Дисплейное устройство 122 может быть интегрировано с устройством-получателем 120, или может быть внешним относительно устройства-получателя 120, которое конфигурировано для сопряжения с внешним дисплейным устройством.

Кодирующее устройство 114 для видео и декодирующее устройство 124 для видео могут работать в соответствии со стандартом сжатия видео, таким как стандарт высокоэффективного видео кодирования (High Efficiency Video Coding (HEVC)), стандарт универсального видео кодирования (Versatile Video Coding (VVC)) и другие сегодняшние и/или будущие стандарты.

На фиг. 9 представлена блок-схема, иллюстрирующая пример кодирующего устройства 200 для видео, которое может представлять собой кодирующее устройство 114 для видео в системе 100, иллюстрированной на фиг. 8.

Кодирующее устройство 200 для видео может быть конфигурировано для осуществления любого или всех способов согласно настоящему изобретению. В примере, показанном на фиг. 9, кодирующее устройство 200 для видео содержит несколько функциональных компонентов. Технологии, описываемые в настоящем изобретении, могут быть распределены между различными компонентами кодирующего устройства 200 для видео. В некоторых примерах процессор может быть конфигурирован для осуществления любого или всех способов согласно настоящему изобретению.

Совокупность функциональных компонентов кодирующего устройства 200 для видео может содержать модуль 201 разбиения, модуль 202 прогнозирования, который может содержать модуль 203 выбора режима, модуль 204 оценки движения, модуль 205 компенсации движения и модуль 206 внутрикадрового прогнозирования, модуль 207 генерации остатка, модуль 208 трансформации, модуль 209 квантования, модуль 210 обратного квантования, модуль 211 обратной трансформации, модуль 212 реконструкции, буфер 213 и модуль 214 энтропийного кодирования.

В других примерах, кодирующее устройство 200 для видео может содержать больше, меньше функциональных компонентов или другие функциональные компоненты. В одном из примеров, модуль 202 прогнозирования может содержать модуль внутрикадрового копирования блоков (intra block copy (IBC)). Модуль копирования IBC может осуществлять прогнозирование в режиме копирования IBC, в котором по меньшей мере одно опорное изображение представляет собой изображение, в каком располагается текущий видеоблок.

Более того, некоторые компоненты, такие как модуль 204 оценки движения и модуль 205 компенсации движения могут быть в высокой степени интегрированы, но представлены в примере, показанном на фиг. 5, раздельными для целей пояснения.

Модуль 201 разбиения может разбивать изображение на один или несколько видеоблоков. Кодирующее устройство 200 для видео и декодирующее устройство 300 для видео могут поддерживать разные размеры видеоблоков.

Модуль 203 выбора режима может выбрать один из режимов кодирования, например, режим внутрикадрового прогнозирования или режим межкадрового прогнозирования, на основе результатов погрешности, и передавать полученный в результате блок с внутрикадровым или с межкадровым кодированием в модуль 207 генерации остатка для генерации данных блока остатка и в модуль 212 реконструкции с целью реконструкции кодированного блока для использования в качестве опорного изображения. В некоторых примерах, модуль 203 выбора режима может выбрать комбинированный режим внутрикадрового и межкадрового прогнозирования (combination of intra and inter predication (CIIP)), в котором прогнозирование основано на сигнале межкадрового прогнозирования и сигнале внутрикадрового прогнозирования. Модуль 203 выбора режима может также выбрать разрешение для вектора движения (например, с точностью до субпикселя (доли пикселя) или целого пикселя) для блока в случае межкадрового прогнозирования.

Для осуществления межкадрового прогнозирования для текущего видеоблока, модуль 204 оценки движения может генерировать информацию о движении для текущего видеоблока путем сравнения одного или нескольких опорных кадров из буфера 213 с текущим видеоблоком. Модуль 205 компенсации движения может определить прогнозируемый видеоблок для текущего видеоблока на основе информации о движении и декодированных отсчетов изображения из буфера 213, отличных от изображения, ассоциированного с текущим видеоблоком.

Модуль 204 оценки движения и модуль 205 компенсации движения могут осуществлять различные операции для текущего видеоблока, например, в зависимости от того, является ли текущий видеоблок I-срезом, P-срезом или B-срезом.

В некоторых примерах, модуль 204 оценки движения может осуществлять однонаправленное прогнозирование для текущего видеоблока, а также модуль 204 оценки движения может искать опорные изображения в списке 0 или в списке 1 в качестве опорного видеоблока для текущего видеоблока. Модуль 204 оценки движения может затем генерировать опорный индекс, указывающий опорное изображение в списке 0 или в списке 1, которое (изображение) содержит опорный видеоблок, и вектор движения, указывающий пространственное смещение между текущим видеоблоком и опорным видеоблоком. Модуль 204 оценки движения может передавать на выход опорный индекс, индикатор направления прогнозирования и вектор движения в качестве информации о движении текущего видеоблока. Модуль 205 компенсации движения может генерировать прогнозируемый видеоблок для текущего видеоблока на основе опорного видеоблока, указываемого информацией о движении для текущего видеоблока.

В других примерах, модуль 204 оценки движения может осуществлять двунаправленное прогнозирование для текущего видеоблока, модуль 204 оценки движения может искать опорное изображение в списке 0 с целью найти опорный видеоблок для текущего видеоблока и может также искать опорное изображение в списке 1 с целью найти другой опорный видеоблок для текущего видеоблока. Модуль 204 оценки движения может затем генерировать опорные индексы, указывающие опорные изображения в списке 0 и в списке 1, содержащие опорные видеоблоки и векторы движения, указывающие пространственное смещение между опорными видеоблоками и текущим видеоблоком. Модуль 204 оценки движения может передавать на выход опорные индексы и векторы движения текущего видеоблока в качестве информации о движении текущего видеоблока. Модуль 205 компенсации движения может генерировать прогнозируемый видеоблок для текущего видеоблока на основе опорных видеоблоков, обозначенных информацией о движении текущего видеоблока.

В некоторых примерах, модуль 204 оценки движения может передать на выход полный набор информации о движении для декодирующей обработки в декодирующем устройстве.

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

В одном из примеров, модуль 204 оценки движения может указывать, в синтаксической структуре, ассоциированной с текущим видеоблоком, значение, указывающее декодирующему устройству 300 для видео, что текущий видеоблок имеет такую же информацию о движении, что и другой видеоблок.

В другом примере, модуль 204 оценки движения может идентифицировать, в синтаксической структуре, ассоциированной с текущим видеоблоком, другой видеоблок и разность векторов движения (motion vector difference (MVD)). Эта разность векторов движения указывает разность между вектором движения текущего видеоблока и вектором движения указанного видеоблока. Декодирующее устройство 300 для видео может использовать вектор движения указанного видеоблока и эту разность векторов движения для определения текущего видеоблока.

Как обсуждается выше, кодирующее устройство 200 для видео может прогнозируемо передавать в виде сигнализации вектор движения. Два примера способов прогнозируемой сигнализации, которые может реализовать кодирующее устройство 200 для видео, представляют собой усовершенствованное прогнозирование вектора движения (advanced motion vector predication (AMVP)) и сигнализации о режиме объединения.

Модуль 206 внутрикадрового прогнозирования может осуществлять внутрикадровое прогнозирование применительно к текущему видеоблоку. Когда модуль 206 внутрикадрового прогнозирования осуществляет внутрикадровое прогнозирование текущего видеоблока, модуль 206 внутрикадрового прогнозирования может генерировать прогнозируемые данные для текущего видеоблока на основе декодированных отсчетов других видеоблоков из того же самого изображения. Прогнозируемые данные для текущего видеоблока могут содержать прогнозируемый видеоблок и разнообразные синтаксические элементы.

Модуль 207 генерации остатка может генерировать данные остатка для текущего видеоблока путем вычитания (например, обозначенного знаком минус) прогнозируемого видеоблока (ов) для текущего видеоблока из этого текущего видеоблока. Данные остатка относительно текущего видеоблока могут содержать видеоблоки остатка, соответствующие разным компонентам отсчетов для текущего видеоблока.

В других примерах, могут отсутствовать данные остатка для текущего видеоблока, например, в режиме пропуска, и модуль 207 генерации остатка может не осуществлять операцию вычитания.

Модуль 208 трансформации может генерировать один или несколько видеоблоков коэффициентов трансформации для текущего видеоблока путем применения одной или нескольких трансформаций к видеоблоку остатка, ассоциированному с текущим видеоблоком.

После генерации модулем 208 трансформации видеоблока коэффициентов трансформации, ассоциированного с текущим видеоблоком, модуль 209 квантования может осуществить квантование видеоблока коэффициентов трансформации, ассоциированного с текущим видеоблоком, на основе одного или нескольких параметров квантования (quantization parameter (QP)), ассоциированных с текущим видеоблоком.

Модуль 210 обратного квантования и модуль 211 обратной трансформации могут применять обратное квантование и обратную трансформацию, соответственно, к видеоблоку коэффициентов трансформации для реконструкции видеоблока остатка на основе видеоблока коэффициентов трансформации. Модуль 212 реконструкции может суммировать реконструированы видеоблок остатка с соответствующими отсчетами из одного или нескольких прогнозируемых видеоблоков, генерируемых модулем 202 прогнозирования, для получения реконструированного видеоблока, ассоциированного с текущим блоком, для сохранения в буфере 213.

После реконструкции видеоблока модулем 212 реконструкции может быть выполнена операция контурной фильтрации для уменьшения видео блочностных артефактов в видеоблоке.

Модуль 214 энтропийного кодирования может принимать данные от других функциональных компонентов кодирующего устройства 200 для видео. Когда модуль 214 энтропийного кодирования примет данные, этот модуль 214 энтропийного кодирования может осуществить одну или несколько операций энтропийного кодирования для генерации энтропийно кодированных данных и передать поток битов данных, содержащий эти энтропийно кодированные данные, на выход.

На фиг. 10 представлена блок-схема, иллюстрирующая пример декодирующего устройства 300 для видео, которое может представлять собой декодирующее устройство 114 для видео в системе 100, иллюстрированной на фиг. 8.

Декодирующее устройство 300 для видео может быть конфигурировано для осуществления каких-либо или всех технологий согласно настоящему изобретению. В примере, показанном на фиг. 10, декодирующее устройство 300 для видео содержит несколько функциональных компонентов. Технологии, описываемые в настоящем изобретении, могут быть распределены между различными компонентами декодирующего устройства 300 для видео. В некоторых примерах процессор может быть конфигурирован для осуществления каких-либо или всех технологий согласно настоящему изобретению.

В примере, показанном на фиг. 10, декодирующее устройство 300 для видео содержит модуль 301 энтропийного декодирования, модуль 302 компенсации движения, модуль 303 внутрикадрового прогнозирования, модуль 304 обратного квантования, модуль 305 обратной трансформации, модуль 306 реконструкции и буфер 307. Декодирующее устройство 300 для видео может, в некоторых примерах, осуществлять декодирующих проход, в основном обратный кодирующему проходу, описываемому применительно к кодирующему устройству 200 для видео (например, фиг. 9).

Модуль 301 энтропийного декодирования может извлекать кодированный поток битов данных. Этот кодированный поток битов данных может содержать энтропийно кодированные данные видео (например, кодированные блоки данных видео). Модуль 301 энтропийного декодирования может декодировать эти энтропийно кодированные данные видео, после чего, на основе полученных им энтропийно декодированных данных видео, модуль 302 компенсации движения может определить информацию о движении, включая векторы движения, точность векторов движения, индексы к списку опорных изображений и другую информацию о движении. Модуль 302 компенсации движения может, например, определить такую информацию с применением прогнозирования AMVP и режима объединения.

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

Модуль 302 компенсации движения может использовать такие же интерполяционные фильтры, какие использовало кодирующее устройство 200 для видео в процессе кодирования видеоблока, для вычисления интерполированных значений для нецелочисленных пикселей в опорном блоке. Модуль 302 компенсации движения может определить интерполяционные фильтры, использованные кодирующим устройством 200 для видео, в соответствии с принятой синтаксической информацией и использовать эти интерполяционные фильтры для получения прогнозируемых блоков.

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

Модуль 303 внутрикадрового прогнозирования может использовать режимы внутрикадрового прогнозирования, например, принятые в потоке битов данных, для формирования прогнозируемого блока из пространственно смежных блоков. Модуль обратного квантования 304 осуществляет обратное квантование, т.е. деквантование, квантованных коэффициентов видеоблока, поступивших в потоке битов данных и декодированных модулем 301 энтропийного декодирования. Модуль 305 обратной трансформации осуществляет обратную трансформацию.

Модуль 306 реконструкции может суммировать блоки остатка с соответствующими прогнозируемыми блоками, генерируемыми модулем 302 компенсации движения или модулем 303 внутрикадрового прогнозирования, для формирования декодированных блоков. Если нужно, можно также применить деблокирующий фильтр для фильтрации декодированных блоков с целью удалить блочностные артефакты. Декодированные видеоблоки затем сохраняют в буфере 307, который предоставляет опорные блоки для последующей компенсации движения.

На фиг. 11 представлена логическая схема способа обработки видео в соответствии с предлагаемой технологией. Способ 1100 содержит, в ходе операции 1110, осуществление преобразования между текущим изображением видео и кодированным представлением этого видео. Текущее изображение содержит первое окно, имеющее размеры W x H отсчетов, где W и H являются целыми числами. Опорное изображение, ассоциированное с текущим изображением, содержит второе окно, имеющее размеры W’ x H’ отсчетов, где W’ и H’ являются целыми числами. Отсчеты в первом окне и во втором окне подвергают обработке с использованием одного и того же правила обработки в процессе преобразования, и W, H, W’ и H’ удовлетворяют некому ограничению.

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

В некоторых вариантах, указанное ограничение специфицирует, что W’/a ≤ W ≤ W’×b, где «a» и «b» – положительные целые числа. В некоторых вариантах, «a» равно 2. В некоторых вариантах, «b» равно 8. В некоторых вариантах, указанное ограничение специфицирует, что H’/c ≤ H ≤ H’×d, где «c» и «d» – положительные целые числа. В некоторых вариантах, «c» равно 2. В некоторых вариантах, «d» равно 8. В некоторых вариантах, a = c. В некоторых вариантах, b = d.

В некоторых вариантах, размер первого окна масштабирования или второго окна масштабирования сообщают в виде сигнализации в кодированном представлении и используют для определения масштабных коэффициентов. В некоторых вариантах, размер первого окна масштабирования или второго окна масштабирования сообщают в виде сигнализации в кодированном представлении и используют для определения верхнего левого сдвига для опорного отсчета при применении редискретизации опорного изображения (Reference Picture Resampling (RPR)) в процессе преобразования.

На фиг. 12 представлена логическая схема способа обработки видео в соответствии с предлагаемой технологией. Способ 1200 содержит, в ходе операции 1210, осуществление преобразования между текущим изображением видео и кодированным представлением этого видео. В процессе преобразования, значения сдвигов для определения окна текущего изображения сообщают в виде сигнализации в кодированном представлении с точностью N-pel, N – положительное целое число больше 1.

В некоторых вариантах, указанное окно содержит окно масштабирования, в котором отсчеты подвергают операции редискретизации. В некоторых вариантах, указанное окно содержит окно соответствия, вне которого отсчеты отбрасывают при передаче видео на выход. В некоторых вариантах, значения сдвигов, передаваемые в виде сигнализации в кодированном представлении, умножают на N при определении окна соответствия для текущего изображения. В некоторых вариантах, N равно 4 или 8. В некоторых вариантах, значения сдвигов используют в ходе одной или нескольких процедур кодирования в процессе преобразования.

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

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

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

В некоторых вариантах, первое окно соответствия имеет размер W1×H1, и верхняя левая позиция этого первого окна соответствия обозначена как (X1, Y1), второе окно соответствия имеет размер W2×H2. и верхняя левая позиция этого второго окна соответствия обозначена как (X2, Y2), размер первой единицы видео обозначен как PW1×PH1, и размер второй единицы видео обозначен как PW2×PH2. В некоторых вариантах, W1/W2 = X1/X2. В некоторых вариантах, W1/X1 = W2/X2. В некоторых вариантах, W1×X2 = W2×X1. В некоторых вариантах, H1/H2 = Y1/Y2. В некоторых вариантах, H1/Y1 = H2/Y2. В некоторых вариантах, H1×Y2 = H2×Y1. В некоторых вариантах, PW1/PW2 = X1/X2. В некоторых вариантах, PW1/X1 = PW2/X2. В некоторых вариантах, PW1×X2 = PW2×X1. В некоторых вариантах, PH1/PH2 = Y1/Y2. В некоторых вариантах, PH1/Y1 = PH2/Y2. В некоторых вариантах, PH1×Y2 = PH2×Y1. В некоторых вариантах, PW1/PW2 = W1/W2. В некоторых вариантах, PW1/W1 = PW2/W2. В некоторых вариантах, PW1×W2 = PW2×W1. В некоторых вариантах, PH1/PH2 = H1/H2. В некоторых вариантах, PH1/H1 = PH2/H2. В некоторых вариантах, PH1×H2 = PH2×H1. В некоторых вариантах, в случае PW1 > PW2, W1 > W2. В некоторых вариантах, в случае PW1 < PW2, W1 < W2. В некоторых вариантах, (PW1-PW2)×(W1-W2) ≥ 0. В некоторых вариантах, в случае PH1 > PH2, H1 > H2. В некоторых вариантах, в случае PH1 < PH2, H1 < H2. В некоторых вариантах, (PH1-PH2)×(H1-H2) ≥ 0. В некоторых вариантах, в случае PW1 ≥ PW2, (W1/W2) ≤ (PW1/PW2). В некоторых вариантах, в случае PW1 ≥ PW2, (W1/W2) ≥ (PW1/PW2). В некоторых вариантах, в случае PH1 ≥ PW2, (H1/H2) ≤ (PH1/PH2). В некоторых вариантах, в случае PH1 ≥ PW2, (H1/H2) ≥ (PH1/PH2).

На фиг. 14 представлена логическая схема способа обработки видео в соответствии с предлагаемой технологией. Способ 1400 содержит, в ходе операции 1410, определение, для преобразования между текущим изображением видео и кодированным представлением этого видео, позиции опорного отсчета в опорном изображении, ассоциированном с текущим изображением, на основе верхней левой позиции окна изображения, где это изображение представляет собой по меньшей мере текущее изображение или опорное изображение. Это окно подвергают обработке в соответствии с неким правилом обработки в процессе преобразования. Способ 1400 также содержит, в ходе операции 1420, осуществление преобразования на основе результатов указанного определения.

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

В некоторых вариантах, верхнюю левую позицию окна определяют на основе значения сдвига влево и значения сдвига вверх, ассоциированных с этим окном. В некоторых вариантах, горизонтальную позицию текущего отсчета относительно верхней левой позиции окна, xSb’, определяют на основе горизонтальной позиции текущего отсчета в текущем изображении, xSb, и сдвига влево окна в текущем изображении. В некоторых вариантах, горизонтальную позицию текущего отсчета относительно верхней левой позиции указанного окна, xSb’, дополнительно определяют на основе точности отсчета.

В некоторых вариантах, горизонтальную позицию текущего отсчета относительно верхней левой позиции рассматриваемого окна, xSb’, используют для определения позиции опорного отсчета. В некоторых вариантах, горизонтальную позицию текущего отсчета относительно опорного изображения определяют на основе позиции xSb’ и сдвига влево рассматриваемого окна в опорном изображении. В некоторых вариантах, точность отсчета обозначает сдвиг четырех битов.

В некоторых вариантах, вертикальную позицию текущего отсчета относительно верхней левой позиции рассматриваемого окна, ySb’, определяют на основе вертикальной позиции текущего отсчета в текущем изображении, ySb, и сдвига вверх рассматриваемого окна в текущем изображении. В некоторых вариантах, вертикальную позицию текущего отсчета относительно верхней левой позиции рассматриваемого окна, ySb’, далее определяют на основе точности отсчета. В некоторых вариантах, вертикальную позицию текущего отсчета относительно верхней левой позиции рассматриваемого окна, ySb’, используют для определения позиции опорного отсчета. В некоторых вариантах, вертикальную позицию опорного отсчета относительно опорного изображения определяют на основе позиции ySb’ и сдвига вверх рассматриваемого окна в опорном изображении. В некоторых вариантах, точность отсчета обозначает сдвиг четырех битов.

В некоторых вариантах, использование верхней левой позиции рассматриваемого окна основано на цветовой составляющей видео. В некоторых вариантах, цветовая составляющая представляет собой яркостную составляющую.

На фиг. 15 представлена логическая схема способа обработки видео в соответствии с предлагаемой технологией. Этот способ 1500 содержит, в ходе операции 1510, осуществление преобразования между текущим изображением видео и кодированным представлением этого видео. Текущее изображение содержит первое окно, имеющее размер W x H отсчетов, где W и H являются целыми числами. Опорное изображение, ассоциированное с текущим изображением, содержит второе окно, имеющее размер W’ x H’ отсчетов, где W’ и H’ являются целыми числами, и верхняя левая позиция второго окна обозначена как (X0, Y0). Отсчеты в первом окне и во втором окне подвергают обработке с использованием одного и того же правила обработки в процессе преобразования. Целая часть координаты опорного отсчета ограничена диапазоном, определяемым частично на основе первого окна или второго окна.

В некоторых вариантах, целая часть горизонтальной координаты опорного отсчета ограничена в диапазоне [minW, maxW]. В некоторых вариантах, minW равно 0. В некоторых вариантах, minW равно X0. В некоторых вариантах, maxW равно W-1. В некоторых вариантах, maxW равно W’-1. В некоторых вариантах, maxW равно X0+W’-1. В некоторых вариантах, по меньшей мере одно из значений minW или maxW модифицируют на основе цветовой составляющей и/или цветового формата видео. В некоторых вариантах, minW модифицируют до minW × subC, subC является целым числом. В некоторых вариантах, minW модифицируют до minW / subC, subC является целым числом. В некоторых вариантах, maxW модифицируют до maxW × subC, subC является целым числом. В некоторых вариантах, maxW модифицируют до maxW / subC, subC является целым числом. В некоторых вариантах, subC равно 1, если цветовая составляющая является яркостной составляющей. В некоторых вариантах, subC равно 2, если цветовая составляющая является цветностной составляющей и цветовой формат представляет собой 4:2:0 или 4:2:2. В некоторых вариантах, subC равно 1, если цветовая составляющая является цветностной составляющей и цветовой формат представляет собой 4:4:4.

В некоторых вариантах, целая часть вертикальной координаты опорного отсчета ограничена в диапазоне [minH, maxH]. В некоторых вариантах, minH равно 0. В некоторых вариантах, minH равно Y0. В некоторых вариантах, maxH равно H-1. В некоторых вариантах, maxH равно H’-1. В некоторых вариантах, maxH равно Y0+H’-1. В некоторых вариантах, по меньшей мере одно из значений minH или maxH модифицируют на основе цветовой составляющей и/или цветового формата видео. В некоторых вариантах, minH модифицируют до minH × subC, subC является целым числом. В некоторых вариантах, minH модифицируют до minH / subC, subC является целым числом. В некоторых вариантах, maxH модифицируют до maxH × subC, subC является целым числом. В некоторых вариантах, maxH модифицируют до maxH / subC, subC является целым числом. В некоторых вариантах, subC равно 1, если цветовая составляющая является яркостной составляющей. В некоторых вариантах, subC равно 2, если цветовая составляющая является цветностной составляющей и цветовой формат представляет собой 4:2:0 или 4:2:2. В некоторых вариантах, subC равно 1, если цветовая составляющая является цветностной составляющей и цветовой формат представляет собой 4:4:4.

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

В некоторых вариантах, процедура преобразования содержит кодирование видео и превращение его в кодированное представление. В некоторых вариантах, процедура преобразования содержит декодирование указанного кодированного представления и превращение его в видео.

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

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

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

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

Процедуры и логические схемы, описываемые в настоящем документе, могут быть осуществлены одним или несколькими программируемыми процессорами, выполняющими одну или несколько компьютерных программ для реализации функций путем оперирования над входными данными и генерации выходных данных. Эти процедуры и логические схемы могут также быть осуществлены посредством, и аппаратура может также быть реализована в виде, логической схемы специального назначения, например, программируемой пользователем вентильной матрицы (FPGA (field programmable gate array)) или специализированной интегральной схемы (ASIC (application specific integrated circuit)).

К процессорам, подходящим для выполнения компьютерной программы, относятся, например, микропроцессоры общего и специального назначения и какие-либо один или несколько процессоров цифрового компьютера какого-либо типа. В общем случае, процессор будет принимать команды и данные из постоянного запоминающего устройства и/или из запоминающего устройства с произвольной выборкой. Основными элементами компьютера являются процессор для выполнения команд и одно или несколько запоминающих устройств для сохранения команд и данных. В общем случае, компьютер должен также содержать или быть оперативно связанным для приема данных и/или для передачи данных, одно или несколько запоминающих устройств большой емкости для хранения данных, например, магнитные устройства, магнитооптические диски или оптические диски. Однако компьютеру необязательно иметь такие устройства. К читаемым компьютером носителям для сохранения команд компьютерных программ и данных относятся все формы энергонезависимых запоминающих устройств и носителей информации, включая, например, полупроводниковые запоминающие устройства, например, стираемое, программируемое постоянное запоминающее устройство (СППЗУ (EPROM)), электрически стираемое программируемое запоминающее устройство (ЭСППЗУ (EEPROM)) и устройства флэш-памяти; магнитные диски, например, встроенные жесткие диски или съемные диски; магнитооптические диски; и диски CD ROM и DVD-ROM. Процессор и запоминающее устройство могут быть дополнены или встроены в логическую схему специального назначения.

Хотя настоящий патентный документ содержит много специфических деталей, их не следует толковать в качестве каких-либо ограничений объема какого-либо нововведения или того, что может быть заявлено в качестве изобретения, а просто как описания признаков, которые могут быть специфичными для конкретных вариантов конкретных нововведений. Некоторые признаки, описываемые в настоящем патентном документе в контексте раздельных вариантов, могут быть также реализованы в виде комбинации в одном варианте. Напротив, различные признаки, описываемые в контексте одного варианта, могут быть также реализованы в нескольких вариантах по отдельности или в какой-либо подходящей субкомбинации. Более конкретно, хотя признаки могут быть описаны выше как действующие в определенных комбинациях и даже первоначально заявлены как таковые, один или несколько признаков из заявляемой комбинации могут быть в некоторых случаях исключены из этой заявляемой комбинации, так что эта заявляемая комбинация может быть превращена в субкомбинацию или вариации такой субкомбинации.

Аналогично, тогда как операции изображены на чертежах в конкретном порядке, это не следует понимать как требование, что такие операции должны выполняться в показанном конкретном порядке или в последовательном порядке или что все показанные иллюстрации должны быть выполнены для достижения желаемых результатов. Более того, разделение различных системных компонентов, описываемых в настоящем патентном документе, не следует понимать как требование такого разделения во всех вариантах.

Здесь описаны только несколько вариантов и примеров, однако и другие варианты реализации, усовершенствования и вариации могут быть созданы на основе того, что описано и иллюстрировано в настоящем документе.

Похожие патенты RU2824188C2

название год авторы номер документа
ВИРТУАЛЬНЫЙ БУФЕР ДЛЯ ПРОГНОЗИРОВАНИЯ ПРИ КОДИРОВАНИИ ВИДЕО В РЕЖИМЕ ВНУТРИКАДРОВОГО КОПИРОВАНИЯ БЛОКОВ 2020
  • Сюй, Цзичжэн
  • Чжан, Ли
  • Чжан, Кай
  • Лю, Хунбинь
  • Ван, Юэ
RU2811460C2
ИДЕНТИФИКАЦИЯ ОТСЧЕТОВ ДЛЯ РЕЖИМА ВНУТРИКАДРОВОГО КОПИРОВАНИЯ БЛОКОВ ПРИ КОДИРОВАНИИ ВИДЕО 2020
  • Сюй, Цзичжэн
  • Чжан, Ли
  • Чжан, Кай
  • Лю, Хунбинь
  • Ван, Юэ
RU2811517C2
СПОСОБ КОНТЕКСТНО-ЗАВИСИМОГО КОДИРОВАНИЯ ДЛЯ РЕЖИМА С ПРОПУСКОМ ПРЕОБРАЗОВАНИЯ 2020
  • Чжу, Вэйцзя
  • Чжан, Ли
  • Сюй, Цзичжэн
RU2817139C2
СИГНАЛИЗИРОВАНИЕ ПЕРЕДИСКРЕТИЗАЦИИ ОПОРНОГО ИЗОБРАЖЕНИЯ С ИНДИКАЦИЕЙ ПОСТОЯННОГО РАЗМЕРА ОКНА В БИТОВОМ ПОТОКЕ ВИДЕО 2020
  • Чой Беондоо
  • Венгер Штефан
  • Лю Шань
RU2794483C1
СИГНАЛИЗИРОВАНИЕ ПЕРЕДИСКРЕТИЗАЦИИ ОПОРНОГО ИЗОБРАЖЕНИЯ С ИНДИКАЦИЕЙ ПОСТОЯННОГО РАЗМЕРА ОКНА В БИТОВОМ ПОТОКЕ ВИДЕО 2020
  • Чой Беондоо
  • Венгер Штефан
  • Лю Шань
RU2815415C2
СПОСОБ ОПРЕДЕЛЕНИЯ РЕЖИМА КОДИРОВАНИЯ НА ОСНОВЕ ЦВЕТОВОГО ФОРМАТА 2020
  • Сюй, Цзичжэн
  • Дэн, Чжипинь
  • Чжан, Ли
  • Лю, Хунбинь
  • Чжан, Кай
RU2816857C2
СИГНАЛИЗАЦИЯ, ЗАВИСИМАЯ ОТ ПОДИЗОБРАЖЕНИЯ, В БИТОВЫХ ПОТОКАХ ВИДЕО 2020
  • Чжан, Кай
  • Дэн, Чжипинь
  • Лю, Хунбинь
  • Чжан, Ли
  • Сюй, Цзичжэн
RU2820844C2
ПРОЦЕДУРА КВАНТОВАНИЯ ДЛЯ РЕЖИМА ПАЛИТРЫ 2020
  • Чжу, Вэйцзя
  • Чжан, Ли
  • Сюй, Цзичжэн
  • Чжан, Кай
  • Лю, Хунбинь
  • Ван, Юэ
RU2803621C2
СОВМЕСТНОЕ КОДИРОВАНИЕ ИНДИКАЦИИ ИСПОЛЬЗОВАНИЯ РЕЖИМА ПАЛИТРЫ 2020
  • Чжу, Вэйцзя
  • Чжан, Ли
  • Сюй, Цзичжэн
  • Чжан, Кай
  • Лю, Хунбинь
  • Ван, Юэ
RU2810950C2
Сигнализация передискретизации опорного изображения с указанием размера передискретизированного изображения в битовом потоке видео 2020
  • Чой Бёнду
  • Венгер Стефан
  • Лю Шань
RU2782247C1

Иллюстрации к изобретению RU 2 824 188 C2

Реферат патента 2024 года СПОСОБ ОПРЕДЕЛЕНИЯ ПОЗИЦИЙ ОПОРНЫХ ОТСЧЕТОВ ПРИ КОДИРОВАНИИ ВИДЕО

Изобретение относится к области обработки изображений. Технический результат заключается в повышении эффективности кодирования изображений. Такой результат обеспечивается за счет того, что определяют, для преобразования между текущим изображением видео и кодированным представлением видео, позицию опорного отсчета в опорном изображении, ассоциированном с текущим изображением, на основе верхней левой позиции окна изображения. Изображение представляет собой по меньшей мере указанное текущее изображение или указанное опорное изображение, и окно подлежит обработке в соответствии с правилом обработки в процессе указанного преобразования. Далее выполняют преобразование на основе указанного определения. 4 н. и 8 з.п. ф-лы, 18 ил., 3 табл.

Формула изобретения RU 2 824 188 C2

1. Способ обработки видео, содержащий этапы, на которых:

определяют, для преобразования между текущим блоком текущего изображения видео и потоком битов данных видео, информацию о движении текущего блока в режиме межкадрового прогнозирования;

определяют, для первого отсчета, относящегося к текущему блоку, позицию опорного отсчета в опорном изображении, ассоциированном с текущим блоком, на основе информации о движении и одного или более синтаксических элементов, входящих в указанный поток битов данных; и

выполняют преобразование на основе указанного опорного отсчета,

причем указанный один или более синтаксических элементов относятся к окну опорного изображения, и

указанный один или более синтаксических элементов указывают сдвиг окна опорного изображения влево и сдвиг окна опорного изображения вверх,

при этом позиция промежуточного опорного отсчета, ассоциированного с верхним левым отсчетом текущего блока, определяется на основе информации о движении, указанного одного или более синтаксических элементов и позиции верхнего левого отсчета текущего блока, при этом позиция промежуточного опорного отсчета дополнительно используется для определения позиции опорного отсчета,

операция сдвига применяется для определения позиции промежуточного опорного отсчета,

позиция промежуточного опорного отсчета дополнительно определяется на основе цветовой составляющей и цветового формата текущего блока,

в ответ на то, что текущий блок является блоком яркостной составляющей,

refxSbL= (((xSb – (SubWidthC * offset0)) << 4) + refMvLX[0]) * ratio0, и

refySbL= (((ySb – (SubHeightC * offset1) )<< 4) + refMvLX[1] ) * ratio1;

где (refxSbL, refySbL) – позиция промежуточного опорного отсчета,

(xSb, ySb) – позиция верхнего левого отсчета текущего блока,

SubWidthC и SubHeightC относятся к цветовому формату текущего блока,

offset0 обозначает сдвиг окна влево, а offset1 обозначает сдвиг окна вверх,

refMvLX[0] и refMvLX[1] обозначают горизонтальную составляющую и вертикальную составляющую информации о движении, и

ratio0 обозначает коэффициент масштабирования по горизонтали, а ratio1 обозначает коэффициент масштабирования по вертикали.

2. Способ по п. 1, в котором

refxL = ((Sign (refxSbL) * ((Abs( refxSbL) + 128) >> 8) + xL * ((ratio0 + 8) >> 4)) + fRefLeftOff + 32) >> 6; и

refyL = ((Sign( refySbL) * ((Abs( refySbL) + 128) >> 8) + yL * ((ratio1 + 8) >> 4)) + fRefTopOff + 32) >> 6;

где Sign() является функцией для получения знака переменной, а Abs() является функцией для получения абсолютного значения переменной,

(refxL, refyL) обозначает позицию опорного отсчета,

(xL, yL) обозначает позицию первого отсчета, и

fRefLeftOff = (SubWidthC * offset0) << 10, а fRefTopOff = (SubHeightC * offset1) << 10.

3. Способ по п. 2, в котором в ответ на то, что текущий блок является блоком цветностной составляющей

refxSbC определяется на основе (((xSb – (SubWidthC * offset0)) / SubWidthC << 5) + refMvLX[0]) * ratio0, и

refySbC определяется на основе (((ySb – (SubHeightC * offset1)) / SubHeightC << 5) + refMvLX[1]) * ratio1;

где (refxSbC, refySbC) – позиция промежуточного опорного отсчета,

(xSb, ySb) – позиция верхнего левого отсчета текущего блока,

SubWidthC и SubHeightC относятся к цветовому формату текущего блока,

offset0 обозначает сдвиг окна влево, а offset1 обозначает сдвиг окна вверх,

refMvLX[0] и refMvLX[1] обозначают горизонтальную составляющую и вертикальную составляющую информации о движении, и

ratio0 обозначает коэффициент масштабирования по горизонтали, а ratio1 обозначает коэффициент масштабирования по вертикали.

4. Способ по п. 3, в котором

refxC = ((Sign ( refxSbC) * ((Abs( refxSbC) + 256) >> 9) + xC * ((ratio0 + 8) >> 4)) + fRefLeftOff / SubWidthC +16) >>5; и

refyC = ((Sign( refySbC) * ((Abs( refySbC) + 256) >> 9) + yC * ((ratio1 + 8) >> 4)) + fRefTopOff / SubHeightC +16) >> 5;

где Sign() является функцией для получения знака переменной, а Abs() является функцией для получения абсолютного значения переменной,

(refxC, refyC) обозначает позицию опорного отсчета,

(xC, yC) обозначает позицию первого отсчета, и

fRefLeftOff = (SubWidthC * offset0) << 10, а fRefTopOff = (SubHeightC * offset1) << 10.

5. Способ по п. 4, в котором коэффициенты ratio0 и ratio1 определяются на основе окна текущего изображения и окна опорного изображения.

6. Способ по п. 1, в котором указанное окно представляет собой окно масштабирования, которое используется для вычисления коэффициента масштабирования при межкадровом прогнозировании.

7. Способ по п. 6, в котором используются четыре различных синтаксических элемента для указания сдвига влево и сдвига вверх окна масштабирования и окна соответствия,

при этом отсчеты вне окна соответствия являются отбрасываемыми при выводе видео.

8. Способ по п. 1, в котором на этапе преобразования кодируют текущий блок в поток битов данных.

9. Способ по п. 1, в котором на этапе преобразования декодируют текущий блок из потока битов данных.

10. Устройство для обработки данных видео, содержащее процессор и энергонезависимое запоминающее устройство с записанным в нем командами, причем команды при их исполнении процессором вызывают выполнение процессором:

определения, для преобразования между текущим блоком текущего изображения видео и потоком битов данных видео, информации о движении текущего блока в режиме межкадрового прогнозирования;

определения, для первого отсчета, относящегося к текущему блоку, позиции опорного отсчета в опорном изображении, ассоциированном с текущим блоком, на основе информации о движении и одного или более синтаксических элементов, входящих в указанный поток битов данных; и

выполнения преобразования на основе указанного опорного отсчета,

причем указанный один или более синтаксических элементов относятся к окну опорного изображения, и

указанный один или более синтаксических элементов указывают сдвиг окна опорного изображения влево и сдвиг окна опорного изображения вверх,

при этом позиция промежуточного опорного отсчета, ассоциированного с верхним левым отсчетом текущего блока, определяется на основе информации о движении, указанного одного или более синтаксических элементов и позиции верхнего левого отсчета текущего блока, при этом позиция промежуточного опорного отсчета дополнительно используется для определения позиции опорного отсчета,

операция сдвига применяется для определения позиции промежуточного опорного отсчета,

позиция промежуточного опорного отсчета дополнительно определяется на основе цветовой составляющей и цветового формата текущего блока,

в ответ на то, что текущий блок является блоком яркостной составляющей,

refxSbL = (((xSb – (SubWidthC * offset0)) << 4) + refMvLX[0]) * ratio0, и

refySbL = (((ySb – (SubHeightC * offset1)) << 4) + refMvLX[1]) * ratio1;

где (refxSbL, refySbL) – позиция промежуточного опорного отсчета,

(xSb, ySb) – позиция верхнего левого отсчета текущего блока,

SubWidthC и SubHeightC относятся к цветовому формату текущего блока,

offset0 обозначает сдвиг окна влево, а offset1 обозначает сдвиг окна вверх,

refMvLX[0] и refMvLX[1] обозначают горизонтальную составляющую и вертикальную составляющую информации о движении, и

ratio0 обозначает коэффициент масштабирования по горизонтали, а ratio1 обозначает коэффициент масштабирования по вертикали.

11. Энергонезависимый читаемый компьютером носитель для хранения информации, хранящий команды, которые вызывают выполнение процессором:

определения, для преобразования между текущим блоком текущего изображения видео и потоком битов данных видео, информации о движении текущего блока в режиме межкадрового прогнозирования;

определения, для первого отсчета, относящегося к текущему блоку, позиции опорного отсчета в опорном изображении, ассоциированном с текущим блоком, на основе информации о движении и одного или более синтаксических элементов, входящих в указанный поток битов данных; и

выполнения преобразования на основе указанного опорного отсчета,

причем указанный один или более синтаксических элементов относятся к окну опорного изображения, и

указанный один или более синтаксических элементов указывают сдвиг окна опорного изображения влево и сдвиг окна опорного изображения вверх,

при этом позиция промежуточного опорного отсчета, ассоциированного с верхним левым отсчетом текущего блока, определяется на основе информации о движении, указанного одного или более синтаксических элементов и позиции верхнего левого отсчета текущего блока, при этом позиция промежуточного опорного отсчета дополнительно используется для определения позиции опорного отсчета,

операция сдвига применяется для определения позиции промежуточного опорного отсчета,

позиция промежуточного опорного отсчета дополнительно определяется на основе цветовой составляющей и цветового формата текущего блока,

в ответ на то, что текущий блок является блоком яркостной составляющей

refxSbL = (((xSb – (SubWidthC * offset0)) << 4) + refMvLX[0]) * ratio0, и

refySbL = (((ySb – (SubHeightC * offset1) )<< 4) + refMvLX[1] ) * ratio1;

где (refxSbL, refySbL) – позиция промежуточного опорного отсчета,

(xSb, ySb) – позиция верхнего левого отсчета текущего блока,

SubWidthC и SubHeightC относятся к цветовому формату текущего блока,

offset0 обозначает сдвиг окна влево, а offset1 обозначает сдвиг окна вверх,

refMvLX[0] и refMvLX[1] обозначают горизонтальную составляющую и вертикальную составляющую информации о движении, и

ratio0 обозначает коэффициент масштабирования по горизонтали, а ratio1 обозначает коэффициент масштабирования по вертикали.

12. Способ сохранения потока битов данных видео, содержащий этапы, на которых:

определяют, для текущего блока, относящегося к текущему изображению видео, информацию о движении текущего блока в режиме межкадрового прогнозирования;

определяют, для первого отсчета, относящегося к текущему блоку, позицию опорного отсчета в опорном изображении, ассоциированном с текущим блоком, на основе информации о движении и одного или более синтаксических элементов, входящих в указанный поток битов данных;

генерируют поток битов данных на основе указанного опорного отсчета; и

сохраняют поток битов на энергонезависимом читаемом компьютером носителе для записи информации,

причем указанный один или более синтаксических элементов относятся к окну опорного изображения, и

указанный один или более синтаксических элементов указывают сдвиг окна опорного изображения влево и сдвиг окна опорного изображения вверх,

при этом позиция промежуточного опорного отсчета, ассоциированного с верхним левым отсчетом текущего блока, определяется на основе информации о движении, указанного одного или более синтаксических элементов и позиции верхнего левого отсчета текущего блока, при этом позиция промежуточного опорного отсчета дополнительно используется для определения позиции опорного отсчета,

операция сдвига применяется для определения позиции промежуточного опорного отсчета,

позиция промежуточного опорного отсчета дополнительно определяется на основе цветовой составляющей и цветового формата текущего блока,

в ответ на то, что текущий блок является блоком яркостной составляющей,

refxSbL = (((xSb – (SubWidthC * offset0)) << 4) + refMvLX[0]) * ratio0, и

refySbL = (((ySb – (SubHeightC * offset1)) << 4) + refMvLX[1]) * ratio1;

где (refxSbL, refySbL) – позиция промежуточного опорного отсчета,

(xSb, ySb) – позиция верхнего левого отсчета текущего блока,

SubWidthC и SubHeightC относятся к цветовому формату текущего блока,

offset0 обозначает сдвиг окна влево, а offset1 обозначает сдвиг окна вверх,

refMvLX[0] и refMvLX[1] обозначают горизонтальную составляющую и вертикальную составляющую информации о движении, и

ratio0 обозначает коэффициент масштабирования по горизонтали, а ratio1 обозначает коэффициент масштабирования по вертикали.

Документы, цитированные в отчете о поиске Патент 2024 года RU2824188C2

US 20190141333 A1, 09.05.2019
WO 2014167178 A1, 16.10.2014
US 20150304666 A1, 22.10.2015
WO 2015196117 A1, 23.12.2015
US 20150319447 A1, 05.11.2015
ЗАВИСИМЫЙ ОТ РЕЖИМА КОЭФФИЦИЕНТ СКАНИРОВАНИЯ И ПРЕОБРАЗОВАНИЕ НАПРАВЛЕНИЯ ДЛЯ РАЗНЫХ ФОРМАТОВ ДИСКРЕТИЗАЦИИ ЦВЕТА 2013
  • Гэмей Джеймс Александр
  • Сондерс Николас Ян
  • Шарман Карл Джеймс
  • Силкок Пол Джеймс
RU2619888C2

RU 2 824 188 C2

Авторы

Чжан, Кай

Чжан, Ли

Лю, Хунбинь

Дэн, Чжипинь

Сюй, Цзичжэн

Ван, Юэ

Даты

2024-08-06Публикация

2020-09-21Подача