Область техники, к которой относится изобретение
Данный патентный документ относится к технологиям, устройствам и системам кодирования видео.
Уровень техники
Несмотря на достижения в области сжатия видео, на цифровое видео по-прежнему приходится наибольшая пропускная способность в Интернете и других сетях цифровой связи. Ожидается, что по мере увеличения количества подключенных пользовательских устройств, способных принимать и отображать видео, будет продолжать расти потребность в полосе пропускания для использования цифрового видео.
Раскрытие сущности изобретения
Устройства, система и способы, которые относятся к кодированию цифрового видео, и, в частности, для гармонизации режима линейного предсказания для кодирования видео. Описанные способы могут применяться как к существующим стандартам кодирования видео (например, к высокоэффективному кодированию видео (HEVC)), так и к будущим стандартам кодирования видео или видеокодекам.
В одном характерном аспекте раскрытая технология может быть использована для выполнения способа обработки видео. Этот способ включает в себя определение относительно того, использовать ли, для преобразования между текущим блоком видео и представлением битового потока видео, первую линейную модель оптимизации для преобразования с использованием первого режима кодирования, причем первая модель линейной оптимизации получается из второй модели линейной оптимизации, которая используется для преобразования с использованием второго режима кодирования; и выполнение, на основе определения, преобразования.
В другом характерном аспекте раскрытая технология может быть использована для выполнения способа обработки видео. Этот способ включает в себя включение, на основе одного или более параметров подсчета порядка изображений (POC), ассоциированных с изображением текущего блока видео, либо первого режима предсказания, либо второго режима предсказания, отличного от первого режима предсказания, причем первым режимом предсказания является режим кодирования с использованием оптического потока; и выполнение, на основе первого режима или второго режима, преобразования между текущим блоком и представлением битового потока видео.
В еще одном характерном аспекте раскрытая технология может быть использована для выполнения способа обработки видео. Этот способ включает в себя последовательное получение, на основе кодированной информации, ассоциированной с текущим блоком видео, одного или более векторов (vx, vy) скорости, ассоциированных с опорным изображением текущего блока; и выполнение, на основе одного или более векторов скорости, преобразования между текущим блоком и представлением битового потока видео, причем кодированная информация содержит значение горизонтальной составляющей вектора движения текущего блока, значение вертикальной составляющей вектора движения текущего блока или размер текущего блока.
В еще одном характерном аспекте раскрытая технология может быть использована для выполнения способа обработки видео. Этот способ включает в себя выполнение, после определения того, что режим кодирования с использованием оптического потока был включен для текущего блока видео, операции фильтрации с использованием интерполяционного фильтра одного типа для каждого цветового компонента текущего блока; и выполнение, на основе операции фильтрации, преобразования между текущим блоком и представлением битового потока видео.
В еще одном характерном аспекте раскрытая технология может быть использована для выполнения способа обработки видео. Этот способ включает в себя выполнение, после определения того, что режим кодирования с использованием оптического потока был включен для текущего блока видео, операции фильтрации с использованием интерполяционного фильтра одного типа для каждого цветового компонента текущего блока; выполнение, после определения того, что по меньшей мере одна выборка текущего блока находится за пределами заданного диапазона, операции заполнения; и выполнение, на основе операции фильтрации и операции заполнения, преобразования между текущим блоком и представлением битового потока видео.
В еще одном характерном аспекте раскрытая технология может быть использована для выполнения способа обработки видео. Этот способ включает в себя определение относительно того, чтобы использовать, для преобразования между текущим блоком видео и представлением битового потока видео, алгоритм вычисления значения градиента для инструмента оптического потока; и выполнение, на основе определения, преобразования.
В еще одном характерном аспекте раскрытая технология может быть использована для выполнения способа обработки видео. Этот способ включает в себя принятие решения, на основе одного или более вычислений суммы абсолютной разности (SAD) для подблока текущего блока видео, относительно выборочного включения режима кодирования с использованием оптического потока для текущего блока; и выполнение, на основе принятого решения, преобразования между текущим блоком и представлением битового потока текущего блока.
В еще одном характерном аспекте раскрытая технология может быть использована для выполнения способа обработки видео. Этот способ включает в себя получение, на основе выборочного включения процесса улучшения обобщенного би-предсказания (GBi) для текущего блока видео, одного или более параметров режима кодирования с использованием оптического потока для текущего блока; и выполнение, на основе одного или более параметров режима кодирования с использованием оптического потока, преобразования между текущим блоком и представлением битового потока видео.
В еще одном характерном аспекте раскрытая технология может быть использована для выполнения способа обработки видео. Этот способ включает в себя выполнение, для текущего блока видео, кодированного с использованием оптического потока, операции ограничения над окончательным результатом предсказания режима кодирования с использованием оптического потока; и выполнение, на основе окончательного результата предсказания, преобразования между текущим блоком и представлением битового потока видео.
В еще одном характерном аспекте вышеописанный способ воплощен в виде кода, исполняемого процессором, и сохранен на машиночитаемом носителе информации, хранящем компьютерную программу.
В еще одном характерном аспекте раскрыто устройство, которое сконфигурировано или выполнено с возможностью выполнения вышеописанного способа. Устройство может включать в себя процессор, который запрограммирован для реализации этого способа.
В еще одном характерном аспекте устройство видеодекодера может реализовать способ, как описано в данном документе.
Вышеупомянутые и другие аспекты и особенности раскрытой технологии описаны более подробно на чертежах, в описании и в формуле изобретения.
Краткое описание чертежей
Фиг.1 – пример построения списка кандидатов слияния.
Фиг.2 – пример позиций пространственных кандидатов.
Фиг.3 – пример пар кандидатов, подлежащих проверке избыточности пространственных кандидатов слияния.
Фиг.4A и 4B – примеры позиции второй единицы предсказания (PU) на основе размера и формы текущего блока.
Фиг.5 – пример масштабирования вектора движения для временных кандидатов слияния.
Фиг.6 – пример позиций кандидатов для временных кандидатов слияния.
Фиг.7 – пример выработки объединенного кандидата слияния с би-предсказанием.
Фиг.8 – пример построения кандидатов предсказания вектора движения.
Фиг.9 – пример масштабирования вектора движения для пространственных кандидатов вектора движения.
Фиг.10 – пример предсказания движения с использованием алгоритма альтернативного временного предсказания вектора движения (ATMVP) для единицы кодирования (CU).
Фиг.11 – пример единицы кодирования (CU) с подблоками и соседними блоками, которые используются в алгоритме предсказания пространственно-временных векторов движения (STMVP).
Фиг.12A и 12B – примерные снимки подблока при использовании алгоритма компенсации движения перекрывающихся блоков (OBMC).
Фиг.13 – пример соседних выборок, используемых для получения параметров для алгоритма компенсации локальной освещенности (LIC).
Фиг.14 – пример упрощенной модели аффинного движения.
Фиг.15 – пример векторного поля аффинного движения (MVF) для каждого подблока.
Фиг.16 – пример предсказания вектора движения (MVP) для режима аффинного движения AF_INTER.
Фиг.17A и 17В – пример кандидатов в режиме аффинного движения AF_MERGE.
Фиг.18 – пример двустороннего согласования в режиме получения вектора движения, согласованного с шаблоном (PMMVD), который представляет собой специальный режим слияния, основанный на алгоритме преобразования с повышением частоты кадров (FRUC).
Фиг.19 – пример согласования с шаблоном в алгоритме FRUC.
Фиг.20 – пример оценки одностороннего движения в алгоритме FRUC.
Фиг.21 – пример траектории оптического потока, используемой алгоритмом двунаправленного оптического потока (BDOF).
Фиг.22A и 22B – примерные снимки использования алгоритма двунаправленного оптического потока (BDOF) без расширения блока.
Фиг.23 – пример интерполированных выборок, используемых в BDOF.
Фиг.24 – пример алгоритма уточнения вектора движения (DMVR) на стороне декодера на основе двустороннего согласования с шаблоном.
Фиг.25 – пример местоположений выборок, используемых для получения параметров линейной модели (α и β) в режиме линейного предсказания.
Фиг.26 – пример прямой линии (представляющей линейную модель) между максимальным и минимальным значениями яркости.
Фиг.27 – другой пример интерполированных выборок, используемых в BDOF.
Фиг.28А-28I – блок-схемы последовательностей операций примерных способов обработки видео.
Фиг.29 – блок-схема примера аппаратной платформы для реализации технологии декодирования визуального медиа или кодирования визуального медиа, описанной в настоящем документе.
Фиг.30 – блок-схема примерной системы обработки видео, в которой могут быть реализованы раскрытые технологии.
Осуществление изобретения
В связи с растущим спросом на видео с более высоким разрешением в современной технологии повсеместно используются способы и технологии кодирования видео. Видеокодеки, как правило, включают в себя электронную схему или программное обеспечение, которое сжимает или восстанавливает цифровое видео, и постоянно совершенствуется для того, чтобы обеспечить более высокую эффективность кодирования. Видеокодек преобразует несжатое видео в сжатый формат или наоборот. Существуют сложные взаимосвязи между качеством видео, объемом данных, используемым для представления видео (который определяется скоростью передачи данных), сложностью алгоритмов кодирования и декодирования, чувствительностью к потерям и ошибкам данных, простотой редактирования, произвольным доступом и сквозной задержкой (запаздыванием). Сжатый формат обычно соответствует стандартной спецификации сжатия видео, например, стандарту высокоэффективного кодирования видео (HEVC) (также известному как H.265 или MPEG-H, часть 2), стандарту универсального кодирования видео, который должен быть доработан, или другим современным стандартам и/или будущим стандартам кодирования видео.
Варианты осуществления раскрытой технологии могут применяться к существующим стандартам кодирования видео (например, HEVC, H.265) и будущим стандартам для повышения производительности сжатия. В настоящем документе заголовки разделов используются для улучшения удобочитаемости описания и никоим образом не ограничивают обсуждения или варианты осуществления (и/или реализации) только соответствующими разделами.
1. Примеры внешнего предсказания в HEVC/H.265
За последние годы значительно улучшились стандарты кодирования видео, которые теперь обеспечивают частично высокую эффективность кодирования и поддержку более высоких разрешений. Последние стандарты, такие как HEVC и H.265, основаны на структуре гибридного кодирования видео, в которой используется временное предсказание плюс кодирование с преобразованием.
1.1 Примеры режимов предсказания
Каждая внешне предсказанная единица предсказания (PU) имеет параметры движения для одного или двух списков опорных изображений. В некоторых вариантах осуществления параметры движения включают в себя вектор движения и индекс опорного изображения. В других вариантах осуществления использование одного из двух списков опорных изображений также может сигнализироваться с помощью inter_pred_idc. В еще одних вариантах осуществления векторы движения могут быть явно закодированы как дельты по отношению к предикторам.
Когда CU кодируются с режимом пропуска, одна PU ассоциируется с CU, и отсутствуют какие-либо существенные остаточные коэффициенты, дельта некодированных векторов движения или индекс опорного кадра. Режим слияния точно определяется, в результате чего параметры движения для текущей PU получаются из соседних PU, включая пространственные и временные кандидаты. Режим слияния может применяться к любой внешне предсказанной PU, а не только к режиму пропуска. Альтернативой режиму слияния является явной передачей параметров движения, где вектор движения, соответствующий индекс опорного кадра для каждого списка опорных изображений и использование списка опорных изображений сигнализируются в явном виде в расчете на одну PU.
Когда сигнализация указывает, что должен использоваться один из двух списков опорных изображений, PU создается из одного блока выборок. Это называется "универсальным предсказанием". Универсальное предсказание доступно как для P-срезов, так и для B-срезов.
Когда сигнализация указывает, что должны использоваться оба списка опорных изображений, PU создается из двух блоков выборок. Это упоминается как "двунаправленное предсказание". Би-предсказание доступно только для B-срезов.
1.1.1 Варианты построения кандидатов для режима слияния
Когда PU предсказывается с использованием режима слияния, индекс, указывающий на запись в списке кандидатов слияния, анализируется из битового потока и используется для извлечения информации о движении. Построение этого списка можно кратко представить в виде следующей последовательностью этапов:
Этап 1: Получение исходных кандидатов
Этап 1.1: Получение пространственных кандидатов
Этап 1.2: Проверка избыточности для пространственных кандидатов
Этап 1.3: Получение временных кандидатов
Этап 2: Добавление дополнительных кандидатов
Этап 2.1: Создание кандидатов с би-предсказанием
Этап 2.2: Вставка кандидатов с нулевым движением
На фиг.1 показан пример построения списка кандидатов слияния на основе последовательности этапов, кратко изложенных выше. Для получения пространственного кандидата слияния выбирается максимум четыре кандидата слияния из кандидатов, которые расположены в пяти разных позициях. Для получения временного кандидата слияния из двух кандидатов выбирается максимум один кандидат слияния. Так как в декодере предполагается постоянное количество кандидатов для каждой PU, дополнительные кандидаты вырабатываются тогда, когда количество кандидатов не достигает максимального количества кандидатов слияния (MaxNumMergeCand), которое сигнализируется в заголовке среза. Так как количество кандидатов является постоянным, индекс лучшего кандидата слияния кодируется с использованием усеченной унарной бинаризации (TU). Если размер CU равен 8, все PU текущей CU совместно используют один список кандидатов слияния, который идентичен списку кандидатов слияния блока предсказания 2N×2N.
1.1.2 Построение пространственных кандидатов слияния
При получении пространственных кандидатов слияния максимум четыре кандидата слияния выбираются среди кандидатов, расположенных в позициях, изображенных на фиг.2. Порядок получения является следующим: A1, B1, B0, A0 и B2. Позиция B2 рассматривается только тогда, когда любая PU из позиции A1, B1, B0, A0 недоступна (например, так как она принадлежит другому срезу или тайлу) или интракодирована. После того как добавлен кандидат в позиции A1, добавление оставшихся кандидатов подлежит проверке на избыточность, которая гарантирует, что кандидаты с одинаковой информацией о движении исключены из списка, поэтому повышается эффективность кодирования.
Чтобы уменьшить вычислительную сложность, не все возможные пары кандидатов рассматриваются в упомянутой проверке на избыточность. Вместо этого рассматриваются только пары, связанные стрелкой, показанной на фиг.3, и кандидат добавляется в список только в том случае, если соответствующий кандидат, используемый для проверки на избыточность, не имеет такой же информации о движении. Еще одним источником дублированной информации о движении является "вторая PU", ассоциированная с разделениями, которые отличаются от 2Nx2N. В качестве примера на фиг.4A и 4B показана вторая PU для случая N×2N и 2N×N, соответственно. Когда текущая PU разделена как N×2N, кандидат в позиции A1 не рассматривается для построения списка. В некоторых вариантах осуществления добавление этого кандидата может привести к двум блокам предсказания, имеющим одинаковую информацию о движении, которая является избыточной для того, чтобы иметь только одну PU в блоке кодирования. Аналогичным образом, позиция B1 не учитывается тогда, когда текущая PU разделена как 2N×N.
1.1.3 Создание временных кандидатов слияния
На этом этапе в список добавляется только один кандидат. В частности, при получении этого временного кандидата слияния масштабированный вектор движения получается на основе совмещенной PU, принадлежащей изображению, которое имеет наименьшую разницу POC с текущим изображением в данном списке опорных изображений. Список опорных изображений, который должен использоваться для получения совмещенной PU, явно указывается в заголовке среза.
На фиг.5 показан пример получения масштабируемого вектора движения для временного кандидата слияния (пунктирная стрелка), который масштабируется от вектора движения совмещенной PU с использованием расстояний tb и td POC, где tb определяется как разность POC между опорным изображением текущего изображения и текущим изображением, и td определяется как разность POC между опорным изображением совмещенного изображения и совмещенным изображением. Индекс опорного изображения временного кандидата объединения устанавливается равным нулю. Для B-среза два вектора движения, один для списка 0 опорных изображений, и другой - для списка 1 опорных изображений, получаются и объединяются для выработки кандидата слияния с би-предсказанием.
В совмещенной PU (Y), принадлежащей к опорному кадру, позиции для временного кандидата выбираются между кандидатами С0 и С1, как показано на фиг.6. Если PU в позиции С0 недоступна, внутренне кодирована или находится за пределами текущей CTU, используется позиция C1. В иных случаях позиция С0 используется при получении временного кандидата слияния.
1.1.4 Построение дополнительных типов кандидатов слияния
Помимо пространственно-временных кандидатов слияния, существует два дополнительных типа кандидатов слияния: объединенный кандидат слияния с би-предсказанием и нулевой кандидат слияния. Объединенные кандидаты слияния с би-предсказанием вырабатываются с использованием пространственно-временных кандидатов слияния. Объединенный кандидат слияния с двунаправленным предсказанием используется только для B-среза. Объединенные кандидаты с би-предсказанием вырабатываются путем объединения параметров движения из первого списка опорных изображений одного исходного кандидата с параметрами движения из второго списка опорных изображений другого. Если эти два кортежа будут предоставлять разные гипотезы движения, они сформируют новый кандидат с би-предсказанием.
На фиг.7 показан пример этого процесса, в котором два кандидата в исходном списке (поз.710 слева), которые имеют mvL0 и refIdxL0 или mvL1 и refIdxL1, используются для выработки объединенного кандидата слияния с би-предсказанием, добавленного в окончательный список (поз.720 справа).
Нулевые кандидаты движения вставляются для заполнения оставшихся записей в списке кандидатов слияния и, следовательно, достигают максимальной емкости MaxNumMergeCand. Эти кандидаты имеют нулевое пространственное смещение и индекс опорного изображения, который начинается с нуля и увеличивается каждый раз, когда новый кандидат нулевого движения добавляется в список. Количество опорных кадров, используемых этими кандидатами, равно одному и двум для однонаправленного предсказания (уно-предсказания) и двунаправленного предсказания (би-предсказания), соответственно. В некоторых вариантах осуществления этих кандидатов не выполняется проверка избыточности.
1.1.5 Примеры областей оценки движения для параллельной обработки
Чтобы ускорить процесс кодирования, оценка движения может выполняться параллельно, посредством чего векторы движения для всех единиц предсказания внутри заданной области получаются одновременно. Получение кандидатов слияния из пространственного соседства может мешать параллельной обработке, так как одна единица предсказания не может получать параметры движения из соседней PU до тех пор, пока не будет завершена ассоциированная с ней оценка движения. Чтобы смягчить компромисс между эффективностью кодирования и задержкой при обработке, можно определить область оценки движения (MER). Размер MER может сигнализироваться в наборе параметров изображения (PPS) с использованием элемента синтаксиса "log2_parallel_merge_level_minus2". Когда MER определена, кандидаты слияния, попадающие в одну и ту же область, помечаются как недоступные и, следовательно, не учитываются при построении списка.
1.2 Варианты осуществления улучшенного предсказания вектора движения (AMVP)
В AMVP используется пространственно-временная корреляция вектора движения с соседними PU, которая используется для явной передачи параметров движения. Она формирует список кандидатов вектора движения, сначала проверяя доступность левых верхних временных соседних позиций PU, удаляя избыточные кандидаты и добавляя нулевой вектор, чтобы сделать список кандидатов с постоянной длиной. Затем кодер может выбрать лучший предиктор из списка кандидатов и передать соответствующий индекс, указывающий выбранный кандидат. По аналогии с сигнализацией индекса слияния индекс лучшего кандидата вектора движения кодируется с использованием усеченного унарного кода. Максимальное значение, которое должно быть закодировано в этом случае, равно 2 (смотри фиг.8). В следующих разделах представлены подробности о процессе получения кандидата предсказания вектора движения.
1.2.1 Примеры построения кандидатов предсказания вектора движения
На фиг.8 обобщенно показан процесс получения кандидата предсказания вектора движения, который может быть реализован для каждого списка опорных изображений с refidx в качестве входных данных.
При предсказании вектора движения рассматриваются два типа кандидатов вектора движения: пространственный кандидат вектора движения и временный кандидат вектора движения. Для получения кандидатов векторов движения в конечном итоге получаются два кандидата вектора движения на основе векторов движения каждой PU, расположенной в пяти разных позициях, как ранее показано на фиг.2.
Для получения временных кандидатов вектора движения один кандидат вектора движения выбирается из двух кандидатов, которые получаются на основе двух разных совмещенных позиций. После составления первого списка пространственно-временных кандидатов удаляются дублированные кандидаты вектора движения в списке. Если число потенциальных кандидатов больше двух, из списка удаляются кандидаты вектора движения, чей индекс опорного изображения в ассоциированном списке опорных изображений больше 1. Если количество пространственно-временных кандидатов вектора движения меньше двух, в список добавляются дополнительные кандидаты нулевого вектора движения.
1.2.2 Построение пространственных кандидатов векторов движения
При получении пространственных кандидатов векторов движения рассматривается максимум два кандидата из пяти потенциальных кандидатов, которые получены из PU, расположенных в позициях, как ранее показано на фиг.2, причем эти позиции совпадают с позициями слияния движения. Порядок получения для левой стороны текущей PU определяется как A0, A1, масштабированный A0, масштабированный A1. Порядок получения для указанной выше стороны текущей PU определяется как B0, B1, B2, масштабированный B0, масштабированный B1, масштабированный B2. Таким образом, для каждой стороны существует четыре случая, которые можно использовать в качестве кандидата вектора движения: два случая, когда не требуется использовать пространственное масштабирование, и два случая, когда используется пространственное масштабирование. Четыре различных случая кратко изложены следующим образом:
– при отсутствии пространственного масштабирования
(1) один и тот же список опорных изображений и один и тот же индекс опорных изображений (один и тот же POC)
(2) другой список опорных изображений, но одно и то же опорное изображение (такой же POC)
- при наличии пространственного масштабирования
(3) один и тот же список опорных изображений, но другое опорное изображение (другой POC)
(4) другой список опорных изображений, и другое опорное изображение (другой POC)
Сначала проверяются случаи отсутствия пространственного масштабирования, а затем случаи, которые допускают пространственное масштабирование. Пространственное масштабирование учитывается тогда, когда POC отличается между опорным изображением соседней PU и опорным изображением текущей PU независимо от списка опорных изображений. Если все PU левых кандидатов недоступны или имеют внутреннее кодирование, допускается масштабирование для вышеупомянутого вектора движения, чтобы способствовать параллельному получению левого и верхнего MV-кандидатов. В иных случаях пространственное масштабирование для вышеуказанного вектора движения не допускается.
Как показано в примере на фиг.9, для случая пространственного масштабирования вектор движения соседней PU масштабируется таким же образом, как и для временного масштабирования. Одно отличие состоит в том, что список опорных изображений и индекс текущей PU задаются как входные данные, при этом фактический процесс масштабирования является таким же, как и при временном масштабировании.
1.2.3 Построение временных кандидатов векторов движения
Кроме опорного изображения индекса получения все процессы для получения временных кандидатов слияния являются такими же, как для получения пространственных кандидатов векторов движения (как показано в примере на фиг.6). В некоторых вариантах осуществления, индекс опорного изображения сигнализируется в декодер.
2. Пример способов внешнего предсказания в модели совместных исследований (JEM)
В некоторых вариантах осуществления будущие технологии кодирования видео исследуются с использованием эталонного программного обеспечения, известного как модель совместных исследований (JEM). В JEM предсказание, основанное на подблоках, принимается в нескольких инструментах кодирования, таких как аффинное предсказание, альтернативное предсказание временного вектора движения (ATMVP), предсказание пространственно-временного вектора движения (STMVP), двунаправленный оптический поток (BDOF или BIO), преобразование с повышением частоты кадров (FRUC), локально адаптивное разрешение вектора движения (LAMVR), компенсация перекрывающихся блоков движения (OBMC), локальная компенсация освещенности (LIC) и уточнение вектора движения на стороне декодера (DMVR).
2.1 Примеры предсказания вектора движения на основе под-CU
В JEM при использовании квадродеревьев плюс двоичных деревьев (QTBT) каждая CU может иметь не более одного набора параметров движения для каждого направления предсказания. В некоторых вариантах осуществления два способа предсказания вектора движения на уровне под-CU рассматриваются в кодере посредством разделения большой CU на под-CU и получения информации о движении для всех под-CU большой CU. Способ предсказания альтернативных временных векторов движения (ATMVP) позволяет каждой CU извлекать многочисленные наборы информации о движении из многочисленных блоков меньшего размера, чем текущая CU в совмещенном опорном изображении. В способе предсказания пространственно-временных векторов движения (STMVP) векторы движения под-CU получаются рекурсивно с использованием предиктора временного вектора движения и соседнего вектора движения. В некоторых вариантах осуществления и для сохранения более точного поля движения для предсказания движения под-CU можно отключить сжатие движения для опорных кадров.
2.1.1 Примеры альтернативного предсказания вектора движения (ATMVP)
В способе ATMVP способ предсказания временного вектора движения (TMVP) модифицируется путем извлечения многочисленных наборов информации о движении (включая векторы движения и опорные индексы) из блоков, меньших по размеру, чем текущая CU.
На фиг.10 показан пример процесса предсказания движения ATMVP для CU 1000. Способ ATMVP предсказывает векторы движения под-CU 1001 в CU 1000 в два этапа. На первом этапе идентифицируется соответствующий блок 1051 в качестве опорного изображения 1050 с временным вектором. Опорное изображение 1050 также называется изображением источника движения. На втором этапе разделяется текущая CU 1000 на под-CU 1001, и получаются векторы движения, а также опорные индексы каждой под-CU из блока, соответствующего каждой под-CU.
В первом этапе опорное изображение 1050 и соответствующий блок определяется с помощью информации о движении пространственных соседних блоков текущей CU 1000. Во избежание процесса повторного сканирования соседних блоков, используется первый кандидат слияния в списке кандидатов слияния текущей CU 1000. Первый доступный вектор движения, а также ассоциированный с ним опорный индекс устанавливаются как временной вектор и индекс для изображения источника движения. Таким образом, соответствующий блок можно идентифицировать более точно по сравнению с TMVP, при этом соответствующий блок (иногда называемый совмещенным блоком) всегда находится в нижней правой или центральной позиции по отношению к текущей CU.
На втором этапе соответствующий блок под-CU 1051 идентифицируется временным вектором в изображении 1050 источника движения путем добавления к координате текущей CU временного вектора. Для каждой под-CU информация о движении ее соответствующего блока (например, наименьшая сетка движения, которая покрывает центральную выборку) используется для получения информации о движении для под-CU. После того, как информация о движении соответствующего блока N×N идентифицирована, она преобразуется в векторы движения и опорные индексы текущего под-CU таким же образом, как и TMVP в HEVC, причем применяются масштабирование движения и другие процедуры. Например, декодер проверяет, выполняется ли условие низкой задержки (например, POC всех опорных изображений текущего изображения меньше, чем POC текущего изображения), и, возможно, использует вектор движения MVx (например, вектор движения, соответствующий списку X опорных изображений) для предсказания вектора движения MVy (например, при X, равном 0 или 1, и Y, равном 1-X) для каждой под-CU.
2.1.2 Примеры предсказания пространственно-временных векторов движения (STMVP)
В способе STMVP векторы движения под-CU получаются рекурсивно, следуя порядку сканирования растра. На фиг.11 показан пример одной CU с четырьмя подблоками и соседними блоками. Рассмотрим CU 1100 размером 8×8, которая включает в себя четыре под-CU A (1101), B (1102), C (1103) и D (1104) размером 4×4. Соседние блоки размером 4×4 в текущем кадре помечены как a (1111), b (1112), c (1113) и d (1114).
Получение движения для под-CU A начинается с идентификации двух его пространственных соседей. Первым соседом является блок размером N×N выше под-CU A1101 (блок c 1113). Если этот блок c (1113) недоступен или интракодирован, проверяются другие блоки N×N выше под-CU A(1101) (слева направо, начиная с блока c 1113). Вторым соседом является блок слева от под-CU A1101 (блок b 1112). Если блок b (1112) недоступен или внутренне закодирован, проверяются другие блоки слева от под-CU A1101 (сверху вниз, начиная с блока b 1112). Информация о движении, полученная из соседних блоков для каждого списка, масштабируется в соответствии с первым опорным кадром для данного списка. Затем предиктор временного вектора движения (TMVP) подблока A1101 получается, следуя той же процедуре получения TMVP, как определено в HEVC. Информация о движении совмещенного блока в блоке D 1104 извлекается и масштабируется соответствующим образом. Наконец, после извлечения и масштабирования информации о движении все доступные векторы движения усредняются отдельно для каждого списка опорных изображений. Усредненный вектор движения назначается как вектор движения текущей под-CU.
2.1.3 Примеры сигнализации режима предсказания движения под-CU
В некоторых вариантах осуществления режимы под-CU разрешены как дополнительные кандидаты слияния, и отсутствует дополнительный синтаксический элемент, необходимый для сигнализации режимов. Два дополнительных кандидата слияния добавляются в список кандидатов слияния каждой CU, чтобы представить режим ATMVP и режим STMVP. В других вариантах осуществления может использоваться до семи кандидатов слияния, если набор параметров последовательности указывает, что включены ATMVP и STMVP. Логика кодирования дополнительных кандидатов слияния такая же, как и для кандидатов слияния в HM, что означает, что для каждой CU в P или B срезе могут потребоваться еще две проверки RD для двух дополнительных кандидатов слияния. В некоторых вариантах осуществления, например, в JEM, все бины с индексом слияния представляют собой контекст, кодированный с помощью CABAC (контекста на основе адаптивного бинарного арифметического кодирования). В других вариантах осуществления, например, в HEVC, только первый бин кодируется контекстно, а остальные бины кодируются в обход контекста.
2.2 Примеры адаптивного разрешения разности векторов движения
В некоторых вариантах осуществления, разности векторов движения (MVD) (между вектором движения и предсказываемым вектором движения PU) передаются в единицах одной четверти выборок яркости тогда, когда в заголовке среза значение use_integer_mv_flag равно 0. В JEM вводится локально адаптивное разрешение вектора движения (LAMVR). В JEM MVD может быть закодировано в единицах одной четверти выборок яркости, целочисленных выборок яркости или четырех выборок яркости. Управление разрешением MVD осуществляется на уровне единицы кодирования (CU), и флаги разрешения MVD условно сигнализируются для каждой CU, которая имеет по меньшей мере один ненулевой компонент MVD.
Для CU, которая имеет по меньшей мере один ненулевой компонент MVD, первый флаг сигнализируется для того, чтобы указать, используется ли точность MV в одну четверть выборки яркости в CU. Когда первый флаг (равный 1) указывает, что точность MV в одну четверть выборки яркости не используется, другой флаг сигнализируется для того, чтобы указать, используется ли точность MV целочисленной выборки яркости или точность MV четырех выборок яркости.
Когда первый флаг разрешения MVD CU равен нулю или не закодирован для CU (что означает, что все MVD в CU равны нулю), для CU используется разрешение MV в одну четверть выборки яркости. Когда CU использует точность MV целочисленной выборки яркости или точность MV четырех выборок яркости, MVP в списке кандидатов AMVP для CU округляются до соответствующей точности.
В кодере используются проверки RD на уровне CU для того, чтобы определить, какое разрешение MVD должно использоваться для CU. То есть проверка RD на уровне CU выполняется три раза для каждого разрешения MVD. Для увеличения скорости кодера в JEM применяются следующие схемы кодирования:
- Во время проверки RD CU с нормальным разрешением MVD в одну четверть яркости сохраняется информация о движении текущей CU (точность целочисленной выборки яркости). Сохраненная информация о движении (после округления) используется в качестве начальной точки для дальнейшего уточнения вектора движения с малым диапазоном во время проверки RD для одной и той же CU с целочисленной выборкой яркости и разрешением MVD с 4 выборками яркости, поэтому трудоемкий процесс оценки движения не дублируется три раза.
- Проверка RD блока CU с разрешением MVD с 4 выборками яркости вызывается условно. Для CU, когда разрешение MVD целочисленной выборки яркости с издержками RD намного больше, чем разрешение MVD в одну четверть выборки яркости, проверка RD разрешения MVD 4-х выборок яркости для CU пропускается.
2.3 Примеры более высокой точности хранения векторов движения
В HEVC точность вектора движения составляет одну четверть пикселя (pel) (одну четвертую выборки яркости и одну восьмую выборки цветности для видео 4:2:0). В JEM точность внутреннего хранения вектора движения и кандидата слияния увеличивается до 1/16 пикселя. Более высокая точность вектора движения (1/16 пикселя) используется при межкадровом предсказании компенсации движения для CU, кодированной в режиме пропуска/слияния. Для CU, кодированной в нормальном режиме AMVP, используется движение целочисленного пикселя или четверти пикселя.
Интерполяционные фильтры с повышением частоты дискретизации SHVC, которые имеют такую же длину фильтра и коэффициент нормализации, как и интерполяционные фильтры компенсации движения HEVC, используются в качестве интерполяционных фильтров компенсации движения для дополнительных позиций дробных пикселей. Точность вектора движения компонента цветности составляет 1/32 выборки в JEM, дополнительные интерполяционные фильтры дробных позиций 1/32 пикселя получаются с использованием среднего значения фильтров двух соседних дробных позиций 1/16 пикселя.
2.4 Примеры компенсации движения перекрывающихся блоков (OBMC)
В JEM OBMC можно включать и выключать с использованием синтаксиса на уровне CU. Когда OBMC используется в JEM, OBMC выполняется для всех границ блока компенсации движения (MC), кроме правой и нижней границ CU. Более того, он применяется как для компонентов яркости, так и для компонентов цветности. В JEM блок MC соответствует блоку кодирования. Когда CU кодируется в режиме под-CU (включает в себя слияние под-CU, аффинный режим и режим FRUC), каждый подблок CU является блоком MC. Чтобы обрабатывать границы CU единообразным образом, OBMC выполняется на уровне подблока для всех границ блока MC, где размер подблока устанавливается равным 4×4, как показано на фиг.12A и 12В.
На фиг.12A показаны подблоки на границе CU/PU, и заштрихованные подблоки изображены там, где применяется OBMC. Аналогичным образом, на фиг.12B показаны под-PU в режиме ATMVP.
Когда OBMC применяется к текущему подблоку, помимо текущих векторов движения, векторы движения четырех связанных соседних подблоков, если они доступны и не идентичны текущему вектору движения, также используются для получения блока предсказания для текущего подблока. Эти многочисленные блоки предсказания на основе многочисленных векторов движения объединяются для выработки окончательного сигнала предсказания текущего подблока.
Блок предсказания, основанный на векторах движения соседнего подблока, обозначается как PN, где N указывает индекс для соседнего верхнего, нижнего, левого и правого подблоков, и блок предсказания на основе векторов движения текущего подблока обозначается как PC. Когда PN основан на информации движения соседнего подблока, который содержит ту же информацию движения, что и текущий подблок, OBMC не выполняется из PN. В иных случаях каждая выборка PN добавляется к той же выборке в PC, то есть четыре строки/столбца PN добавляются в PC. Весовые коэффициенты {1/4, 1/8, 1/16, 1/32} используются для PN, и весовые коэффициенты {3/4, 7/8, 15/16, 31/32} используются для PC. Исключением являются небольшие блоки MC (то есть когда высота или ширина блока кодирования равна 4 или CU кодируется в режиме под-CU), для которых только две строки/столбца PN добавляются в PC. В этом случае весовые коэффициенты {1/4, 1/8} используются для PN, и весовые коэффициенты {3/4, 7/8} используются для PC. Для PN, выработанного на основе векторов движения соседнего по вертикали (по горизонтали) подблока, выборки в той же строке (столбце) PN добавляются в PC с тем же весовым коэффициентом.
В JEM для CU с размером, меньшим или равным 256 выборкам яркости, сигнализируется флаг уровня CU для того, чтобы указать, применяется ли OBMC для текущей CU. Для блоков CU размером более 256 выборок яркости или не закодированных в режиме AMVP по умолчанию применяется OBMC. В кодере, когда OBMC применяется для CU, его влияние учитывается на этапе оценки движения. Сигнал предсказания, сформированный OBMC с использованием информации о движении верхнего соседнего блока и левого соседнего блока, используется для компенсации верхней и левой границ исходного сигнала текущей CU, и затем применяется нормальный процесс оценки движения.
2.5 Примеры компенсации локальной освещенности (LIC)
LIC основана на линейной модели для изменений освещенности с использованием коэффициента масштабирования а и смещения b, и она включается или выключается адаптивно для каждой единицы кодирования (CU), кодированной в режиме интрекодирования.
Когда LIC применяется для CU, способ наименьших квадратов ошибок используется для получения параметров a и b с использованием соседних выборок текущей CU и их соответствующих опорных выборок. На фиг.13 показан пример соседних выборок, используемых для получения параметров алгоритма IC. В частности, как показано на фиг.13, используется субдискретизированные (с субдискретизацией 2:1) соседние выборки CU и соответствующие выборки (идентифицированные с помощью информации движения текущей CU или под-CU) в опорном изображении. Параметры IC получаются и применяются отдельно для каждого направления предсказания.
Когда CU кодируется в режиме слияния, флаг LIC копируется из соседних блоков аналогично копированию информации о движении в режиме слияния; в иных случаях для CU сигнализируется флаг LIC, чтобы указать, применяется ли LIC или нет.
Когда LIC включена для изображения, необходима дополнительная проверка RD уровня CU, чтобы определить, применяется или нет LIC для CU. Когда LIC включена для CU, средняя удаленная сумма абсолютной разности (MR-SAD) и средняя удаленная сумма абсолютной разности, полученной с использованием преобразования Адамара (MR-SATD), используются вместо SAD и SATD для поиска движения целого пикселя и поиска движения дробного пикселя, соответственно.
Чтобы снизить сложность кодирования, в JEM применяется следующая схема кодирования:
- LIC отключается для всего изображения, когда отсутствуют очевидные изменения освещения между текущим изображением и его опорными изображениями. Для того, чтобы определить эту ситуацию, в кодере вычисляются гистограммы текущего изображения и каждого опорного изображения текущего изображения. Если разница гистограммы между текущим изображением и каждым опорным изображением текущего изображения меньше заданного порога, LIC отключается для текущего изображения; в иных случаях LIC включается для текущего изображения.
2.6 Примеры предсказания аффинной компенсации движения
В HEVC для предсказания компенсации движения (MCP) применяется только модель поступательного движения. Однако камера и объекты могут иметь много видов движения, например, увеличение/уменьшение, вращение, перспективные движения и/или другое неравномерное движение. С другой стороны, в JEM применяется упрощенное предсказание компенсации движения с аффинным преобразованием. На фиг.14 показан пример аффинного поля движения блока 1400, описываемого двумя векторами движения V0 и V1 в контрольной точке. Поле вектора движения (MVF) блока 1400 можно описать следующим уравнением:
(1)
Как показано на фиг.14, (v0x, v0y) – вектор движения контрольной точки в верхнем левом углу, и (v1x, v1y) – вектор движения контрольной точки в верхнем правом углу. Чтобы упростить предсказание компенсации движения, можно применять предсказание аффинного преобразования на основе подблоков. Размер подблока M×N определяется следующим образом:
(2)
Здесь MvPre – точность доли вектора движения (например, 1/16 в JEM). (v2x, v2y) – вектор движения нижней левой контрольной точки, вычисленный согласно уравнению (1). При необходимости M и N можно уменьшить таким образом, чтобы они делились на w и h, соответственно.
На фиг.15 показан пример аффинного MVF в расчете на один подблок для блока 1500. Чтобы получить вектор движения каждого подблока M×N, вектор движения центральной выборки каждого подблока может быть вычислен согласно уравнению (1) и округлен с точностью доли вектора движения (например, 1/16 в JEM). Затем можно применить интерполяционные фильтры компенсации движения для выработки предсказания каждого подблока с полученным вектором движения. После MCP вектор движения с высокой точностью каждого подблока округляется и сохраняется с той же точностью, что и нормальный вектор движения.
2.6.1 Варианты реализации режима AF_INTER
В JEM существует два режима аффинного движения: режим AF_INTER и режим AF_MERGE. Для CU с шириной и высотой больше 8 может применяться режим AF_INTER. В битовом потоке сигнализируется аффинный флаг на уровне CU, чтобы указать, используется ли режим AF_INTER. В режиме AF_INTER список кандидатов с парой векторов движения создается с использованием соседних блоков.
На фиг.16 показан пример предсказания вектора движения (MVP) для блока 1600 в режиме AF_INTER. Как показано на фиг.16, v0 выбирается из векторов движения подблока A, B или C. Векторы движения из соседних блоков могут масштабироваться в соответствии со списком опорных изображений. Векторы движения также можно масштабировать в соответствии с взаимосвязью среди отсчета последовательности изображения (POC) опорного изображения для соседнего блока, POC опорного изображения для текущей CU и POC текущей CU. Подход к выбору v1 из соседних подблоков D и E является аналогичным. Если количество списков кандидатов меньше 2, список дополняется парой векторов движения, составленной путем дублирования каждого из кандидатов AMVP. Когда список кандидатов больше 2, кандидаты могут быть сначала отсортированы в соответствии с соседними векторами движения (например, на основе подобия двух векторов движения в паре кандидатов). В некоторых реализациях сохраняются первые два кандидата. В некоторых вариантах осуществления проверка издержек скорости-искажения (RD) используется для определения того, какой кандидат из пары векторов движения выбран в качестве предсказания вектора движения контрольной точки (CPMVP) текущей CU. Индекс, указывающий позицию CPMVP в списке кандидатов, может сигнализироваться в битовом потоке. После определения CPMVP текущей аффинной CU применяется оценка аффинного движения и определяется вектор движения контрольной точки (CPMV). Затем разность CPMV и CPMVP передается в битовом потоке.
2.6.3 Варианты реализации режима AF_MERGE
Когда CU применяется в режиме AF_MERGE, получается первый блок, кодированный в аффинном режиме, из допустимых соседних восстановленных блоков. На фиг.17А показан пример порядка отбора кандидатов блоков для текущей CU 1700. Как показано на фиг.17A, порядок отбора может быть слева (1701), сверху (1702), сверху справа (1703), слева снизу (1704) и сверху слева (1705) текущей CU 1700. На фиг.17B показан другой пример кандидатов блоков для текущей CU 1700 в режиме AF_MERGE. Если соседний левый нижний блок 1801 кодируется в аффинном режиме, как показано на фиг.17В, векторы движения v2, v3 и v4 получаются из верхнего левого угла, верхнего правого угла, и левого нижнего угла CU, содержащей подблок 1701. Вектор движения v0 в верхнем левом углу текущей CU 1700 вычисляется на основе v2, v3 и v4. Вектор v1 движения сверху справа текущей CU может быть вычислен соответствующим образом.
После того как CPMV v0 и v1 текущей CU вычислены в соответствии с упрощенной аффинной моделью движения согласно уравнению (1), можно выработать MVF текущей CU. Чтобы определить, кодируется ли текущая CU в режиме AF_MERGE, в битовом потоке может быть передан флаг аффинности, когда по меньшей мере один соседний блок кодируется в аффинном режиме.
2.7 Примеры получения вектора движения, согласованного с шаблоном (PMMVD)
Режим PMMVD представляет собой специальный режим слияния на основе способа преобразования с повышением частоты кадров (FRUC). В этом режиме информация о движении блока не передается, а получается на стороне декодера.
Флаг FRUC может быть просигнализирован для CU, когда его флаг слияния имеет значение "истина". Когда флаг FRUC имеет значение "ложь", можно сигнализировать об индексе слияния и использовать обычный режим слияния. Когда флаг FRUC имеет значение "истина", может быть передан дополнительный флаг режима FRUC, чтобы указать, какой способ (например, двустороннее согласование или согласование с шаблоном) должен использоваться для получения информации о движении для блока.
На стороне кодера решение о том, использовать ли режим слияния FRUC для CU, основано на выборе издержек RD, как это делается для нормального кандидата слияния. Например, несколько режимов согласования (например, двустороннее согласование и согласование с шаблоном) проверяются для CU с помощью выбора издержек RD. Тот режим, который ведет к минимальным издержкам, дополнительно сравнивается с другими режимами CU. Если режим согласования FRUC является наиболее эффективным, флаг FRUC устанавливается на значение "истина" для CU, и используется соответствующий режим согласования.
Как правило, процесс получения движения в режиме слияния FRUC имеет два этапа: сначала выполняется поиск движения на уровне CU, затем следует уточнение движения на уровне под-CU. На уровне CU начальный вектор движения получается для всей CU на основе двустороннего согласования или согласования с шаблоном. Сначала создается список кандидатов MV, и кандидат, который приводит к минимальным издержкам согласования, выбирается в качестве начальной точки для дальнейшего уточнения на уровне CU. Затем выполняется локальный поиск на основе двустороннего согласования или согласования с шаблоном около начальной точки. MV приводит к минимальным издержкам согласования и используется в качестве MV для всей CU. Впоследствии информация о движении дополнительно уточняется на уровне под-CU с полученными векторами движения CU в качестве начальных точек.
Например, следующий процесс получения выполняется для получения информации о движении CU размером . На первом этапе получается MV для всей CU размером . На втором этапе CU делится на под-CU размером . Значение вычисляется как в уравнении (3), – заданная глубина разделения, которая в JEM по умолчанию установлена на 3. Затем получается MV для каждой под-CU.
(3)
На фиг.18 показан пример двустороннего соответствия, используемого в способе преобразования с повышением частоты кадров (FRUC). Двустороннее согласование используется для получения информации о движении текущей CU путем нахождения наиболее близкого совпадения между двумя блоками вдоль траектории движения текущей CU (1800) в двух разных опорных изображениях (1810, 1811). Исходя из предположения о том, что траектория движения является непрерывной, векторы MV0 (1801) и MV1 (1802) движения, указывающие два опорных блока, пропорциональны временным расстояниям, например, TD0 (1803) и TD1 (1804) между текущим изображением и двумя опорными изображениями. В некоторых вариантах осуществления, когда текущее изображение 1800 временно находится между двумя опорными изображениями (1810, 1811), и временное расстояние от текущего изображения до двух опорных изображений является одинаковым, двустороннее согласование становится двунаправленным MV на основе зеркального отражения.
На фиг.19 показан пример согласования с шаблоном, используемого в способе преобразования частоты кадров (FRUC). Согласование с шаблоном может использоваться для получения информации о движении текущей CU 1900 путем нахождения наиболее близкого совпадения между шаблоном (например, верхним и/или левым соседними блоками текущей CU) в текущем изображении и блоком (например, такого же размера, как и шаблон) в опорном изображении 1910. За исключением вышеупомянутого режима слияния FRUC, согласование с шаблоном также может применяться к режиму AMVP. Как в JEM, так и в HEVC AMVP имеет два кандидата. Используя способ согласования с шаблоном можно получить новый кандидат. Если вновь полученный кандидат при согласовании с шаблоном отличается от первого существующего кандидата AMVP, он вставляется в самое начало списка кандидатов AMVP, и затем размер списка устанавливается равным двум (например, путем удаления второго существующего кандидата AMVP). Поиск на уровне CU используется только применительно к режиму AMVP.
Набор кандидатов MV на уровне CU может включать в себя следующее: (1) исходные кандидаты AMVP, если текущая CU находится в режиме AMVP, (2) все кандидаты слияния, (3) несколько MV в интерполированном поле MV (описано ниже), и соседние векторы движения сверху и слева.
При использовании двустороннего согласования каждый действительный MV кандидата слияния может использоваться в качестве входных данных для выработки пары MV с суммой двустороннего согласования. Например, один действительный MV кандидата слияния (MVa, refa) в списке А опорных изображений. Затем опорное изображение refb из его парного двустороннего MV находится в другом списке B опорных изображений, так что refa и refb находятся временно на разных сторонах текущего изображения. Если такое refb отсутствует в списке B опорных изображений, refb определяется как опорное изображение, которое отличается от refa, и его временное расстояние до текущего изображения e является минимальным в списке B. После того, как refb определено, MVb получается путем масштабирования MVa на основе временного расстояния между текущим изображением и refa, refb.
В некоторых реализациях четыре MV из интерполированного поля MV могут быть также добавлены в список кандидатов уровня CU. Более конкретно, добавляются интерполированные MV в позиции (0, 0), (W/2, 0), (0, H/2) и (W/2, H/2) текущей CU. Когда FRUC применяется в режиме AMVP, исходные кандидаты AMVP также добавляются в набор кандидатов MV уровня CU. В некоторых реализациях на уровне CU в список кандидатов можно добавить 15 MV для CU AMVP и 13 MV для CU слияния.
Набор кандидатов MV на уровне под-CU включает в себя MV, определенный из поиска на уровне CU, (2) верхний, левый, верхний левый и верхний правый соседние MV, (3) масштабированные версии совмещенных MV из опорного изображения, (4) один или более кандидатов ATMVP (например, до четырех) и (5) один или более кандидатов STMVP (например, до четырех). Масштабированные MV из опорных изображений получаются следующим образом. Опорные изображения в обоих списках пересекаются. MV в виде совмещенной позиции под-CU в опорном изображении масштабируется до опорного изображения начального MV CU-уровня. Кандидаты ATMVP и STMVP могут быть четырьмя первыми кандидатами. На уровне под-CU в список кандидатов добавляется один или более MV (например, до 17).
Генерирование интерполированного поля MV. Перед кодированием кадра создается интерполированное поле движения для всего изображения на основе односторонней ME. Далее, поле движения может использоваться в дальнейшем как кандидаты MV уровня CU или подуровня CU.
В некоторых вариантах осуществления поле движения каждого опорного изображения в обоих списках опорных изображений пересекается на уровне блоков 4×4. На фиг.20 показан пример односторонней оценки движения (ME) 2000 в способе FRUC. Для каждого блока 4×4, если движение, ассоциированное с блоком, проходящим через блок 4×4 в текущем изображении, и блоку не было назначено какое-либо интерполированное движение, движение опорного блока масштабируется до текущего изображения в соответствии с временным расстоянием TD0 и TD1 (аналогично масштабированию MV TMVP в HEVC), и масштабированное движение назначается блоку в текущем кадре. Если масштабированное MV не назначено для блока 4×4, движение блока помечается как недоступное в интерполированном поле движения.
Издержки интерполяции и согласования. Когда вектор движения указывает на позиции дробной выборки, требуется интерполяция с компенсацией движения. Чтобы снизить сложность, можно использовать билинейную интерполяцию вместо обычной 8-отводной интерполяции HEVC как для двустороннего согласования, так и для согласования с шаблоном.
Вычисление издержек согласования отличается на разных этапах. При выборе кандидата из набора кандидатов на уровне CU издержки согласования могут представлять собой абсолютную сумму разницы (SAD) двустороннего согласования или согласования с шаблоном. После определения начального MV издержки C согласования двустороннего согласования при поиске на уровне под-CU вычисляются следующим образом:
(4)
Здесь w – весовой коэффициент. В некоторых вариантах осуществления w может быть эмпирически установлен на 4. MV и MVs указывают текущий MV и начальный MV, соответственно. SAD все еще может использоваться в качестве издержек согласования с шаблоном при поиске на уровне под-CU.
В режиме FRUC MV получается только с использованием выборок яркости. Полученное движение будет использоваться как для яркости, так и для цветности для внешнего предсказания MC. После определения MV выполняется окончательная MC с использованием 8-отводного интерполяционного фильтра для яркости и 4-отводного интерполяционного фильтра для цветности.
Уточнение MV представляет собой поиск MV на основе шаблона с использованием критерия издержек двустороннего согласования или издержек согласования с шаблоном. В JEM поддерживаются два шаблона поиска: неограниченный ромбовидный поиск со смещенным центром (UCBDS) и адаптивный перекрестный поиск для уточнения MV на уровне CU и под-CU, соответственно. Для уточнения MV как на уровне CU, так и на уровне под-CU, MV отыскивается напрямую с точностью MV одной четвертой выборки яркости, после чего выполняется уточнение MV одной восьмой выборки яркости. Диапазон поиска уточнения MV для CU и этапа под-CU устанавливается равным 8 выборкам яркости.
В режиме слияния с двусторонним согласованием применяется двунаправленное предсказание, так как информация о движении CU получается на основе наиболее близкого совпадения между двумя блоками вдоль траектории движения текущей CU в двух разных опорных изображениях. В режиме слияния для согласования с шаблоном кодер может выбирать между уни-предсказанием из list0, уни-предсказанием из list1 или би-предсказанием для CU. Выбор может быть основан на издержках согласования с шаблоном следующим образом:
Если costBi <= factor*min (cost0, cost1),
используется двунаправленное предсказание;
В иных случаях, если издержки0 <= издержки1,
используется уни-предсказание из list0;
В иных случаях
используется уни-предсказание из list1;
Здесь cost0 – SAD согласования с шаблоном list0, cost1 – SAD согласования с шаблоном list1, и costBi – SAD согласования с шаблоном с би-предсказанием. Например, когда значение множителя равно 1,25, это означает, что процесс выбора смещен в сторону би-предсказания. Выбор направления внешнего предсказания может применяться к процессу согласования с шаблоном на уровне CU.
2.8 Примеры улучшения обобщенного би-предсказания (GBi)
Обобщенное улучшение би-предсказания (GBi) адаптировано в VTM-3.0. GBi применяет неравные весовые коэффициенты к предикторам из L0 и L1 в режиме би-предсказания. В режиме внешнего предсказания несколько пар весовых коэффициентов, включая пару равных весовых коэффициентов (1/2, 1/2), оцениваются на основе оптимизации скорость-искажение (RDO), и индекс GBi выбранной пары весовых коэффициентов передается в декодер. В режиме слияния индекс GBi наследуется из соседней CU. Формула выработки предиктора показана в уравнении (5).
PGBi = (w0×PL0 + w1×PL1 + RoundingOffset) >> shiftNumGBi (5)
Здесь PGBi является окончательным предиктором GBi, w0 и w1 – выбранные весовые коэффициенты GBi, применяемые к предикторам (PL0 и PL1) из списка 0 (L0) и списка 1 (L1), соответственно. RoundingOffsetGBi и shiftNumGBi используются для нормирования окончательного предиктора в GBi. Поддерживаемый набор весовых коэффициентов w1 равен {-1/4, 3/8, 1/2, 5/8, 5/4}, в котором пять весовых коэффициентов соответствуют одной равной паре весовых коэффициентов и четырем неравным парам весовых коэффициентов. Усиление смешивания, то есть сумма w1 и w0, зафиксировано на 1,0. Таким образом, соответствующий набор весовых коэффициентов w0 равен {5/4, 5/8, 1/2, 3/8, -1/4}. Выбор пары весовых коэффициентов находится на уровне CU.
Для изображений без низкой задержки размер набора весовых коэффициентов уменьшается с пяти до трех, где набор весовых коэффициентов w1 принимает значения {3/8, 1/2, 5/8}, и набор весовых коэффициентов w0 принимает значения{5/8, 1/2, 3/8}. Уменьшение размера набора весовых коэффициентов для изображений без низкой задержки применяется к GBi BMS2.1 и ко всем тестам GBi в этой публикации.
2.8.1 Исправление ошибки кодера GBi
Чтобы уменьшить время кодирования GBi, в текущем исполнении кодера кодер будет хранить векторы движения с единым предсказанием, оцененные из весового коэффициента GBi, равного 4/8, и повторно использовать их для поиска уни-предсказания с другими весовыми коэффициентами GBi. Этот способ быстрого кодирования применяется как к модели поступательного движение, так и к модели аффинного движения. В VTM2.0 6-параметрическая аффинная модель была принята вместе с 4-параметрической аффинной моделью. Кодер BMS2.1 не различает 4-параметрическую аффинную модель и 6-параметрическую аффинную модель, когда он хранит аффинные MV с единым предсказанием, и когда весовой коэффициент GBi равен 4/8. Следовательно, 4-параметрические аффинные MV могут быть перезаписаны на 6-параметрические аффинные MV после кодирования с весовым коэффициентом GBi 4/8. Сохраненные 6-параметрические аффинные MV могут использоваться для 4-параметрических аффинных ME для других весовых коэффициентов GBi, или сохраненные 4-параметрические аффинные MV могут использоваться для 6-параметрических аффинных ME. Предлагаемое исправление ошибок кодера GBi состоит в том, чтобы разделить запоминающее устройство для 4-параметрических и 6-параметрических аффинных MV. Кодер сохраняет эти аффинные MV на основе типа аффинной модели, когда весовой коэффициент GBi равен 4/8, и повторно использует соответствующие аффинные MV на основе типа аффинной модели для других весовых коэффициентов GBi.
2.8.2 Ускорение кодера GBi
В этой существующей реализации предлагается пять способов ускорения кодера для сокращения времени кодирования, когда включено GBi.
(1) Условный пропуск оценки аффинного движения для некоторых весовых коэффициентов GBi
В BMS2.1 аффинный ME, включающий в себя 4-параметрический и 6-параметрический аффинный ME, выполняется для всех весовых коэффициентов GBi. Мы предлагаем условно пропустить аффинное ME для неравных весовых коэффициентов GBi (для весовых коэффициентов, не равных 4/8). В частности, аффинный ME будет выполняться для других весовых коэффициентов GBi в том случае и только в том случае, когда аффинный режим выбран в качестве текущего наилучшего режима, и он не является аффинным режимом слияния после оценки весового коэффициента GBi, равного 4/8. Если текущее изображение не является изображением с низкой задержкой, ME с би-предсказанием для модели поступательного движения будет пропущено из-за неравных весовых коэффициентов GBi, когда выполняется аффинная ME. Если аффинный режим не выбран в качестве текущего лучшего режима, или если аффинное слияние выбрано в качестве текущего лучшего режима, аффинная ME будет пропущена для всех других весовых коэффициентов GBi.
(2) Уменьшение количества весовых коэффициентов для проверки издержек RD для изображений с низкой задержкой при кодировании для точности MVD 1-pel и 4-pel
Для изображений с низкой задержкой существует пять весовых коэффициентов для проверки издержек RD для всех значений точности MVD, включая 1/4-pel, 1-pel и 4-pel. Кодер будет сначала проверять издержки RD для точности MVD 1/4-pel. Мы предлагаем пропустить часть весовых коэффициентов GBi для проверки издержек RD для значений точности MVD 1-pel и 4-pel. Мы упорядочиваем эти неравные весовые коэффициенты в соответствии с издержками их RD с точностью MVD 1/4-pel. Только первые два весовых коэффициента с наименьшими издержками RD вместе с весовым коэффициентом GBi 4/8 будут оцениваться во время кодирования со значениями точности MVD 1-pel и 4-pel. Таким образом, для изображений с малой задержкой будет оцениваться не более трех весовых коэффициентов для значений точности MVD 1-pel и 4-pel.
(3) Условный пропуск поиска би-предсказания, когда опорные изображения L0 и L1 являются одинаковыми
Для некоторых изображений в RA одно и то же изображение может встречаться в обоих списках опорных изображений (list-0 и list-1). Например, для конфигурации кодирования с произвольным доступом в CTC структура опорного изображения для первой группы изображений (GOP) указана следующим образом.
POC: 16, TL:0, [L0: 0] [L1: 0]
POC: 8, TL:1, [L0: 0 16] [L1: 16 0]
POC: 4, TL:2, [L0: 0 8] [L1: 8 16]
POC: 2, TL:3, [L0: 0 4] [L1: 4 8]
POC: 1, TL:4, [L0: 0 2] [L1: 2 4]
POC: 3, TL:4, [L0: 2 0] [L1: 4 8]
POC: 6, TL:3, [L0: 4 0] [L1: 8 16]
POC: 5, TL:4, [L0: 4 0] [L1: 6 8]
POC: 7, TL:4, [L0: 6 4] [L1: 8 16]
POC: 12, TL:2, [L0: 8 0] [L1: 16 8]
POC: 10, TL:3, [L0: 8 0] [L1: 12 16]
POC: 9, TL:4, [L0: 8 0] [L1: 10 12]
POC: 11, TL:4, [L0: 10 8] [L1: 12 16]
POC: 14, TL:3, [L0: 12 8] [L1: 12 16]
POC: 13, TL:4, [L0: 12 8] [L1: 14 16]
POC: 15, TL:4, [L0: 14 12] [L1: 16 14]
Следует отметить, что изображения 16, 8, 4, 2, 1, 12, 14 и 15 имеют одинаковое(ые) опорное(ые) изображение(я) в обоих списках. Для би-предсказания для этих изображений возможно, что опорные изображения L0 и L1 будут одинаковыми. Мы предлагаем, чтобы кодер пропускал ME с би-предсказанием для неравных весовых коэффициентов GBi тогда, когда 1) два опорных изображения при би-предсказании являются одинаковым, и 2) временной уровень больше 1, и 3) точность MVD составляет 1/4-pel. Для ME с аффинным би-предсказанием этот способ быстрого пропуска применяется только к 4-параметрической аффинной ME.
(4) Пропуск проверки издержек RD для неравного весового коэффициента GBi основан на временном уровне и расстоянии POC между опорным изображением и текущим изображением
Мы предлагаем пропустить эти оценки издержек RD для этих неравных весовых коэффициентов GBi, когда временной уровень равен 4 (самый высокий временной уровень в RA), или расстояние POC между опорным изображением (list-0 или list-1) и текущим изображением равно 1, и QP кодирования больше 32.
(5) Замена вычисления с плавающей запятой на вычисление с фиксированной запятой для неравного весового коэффициента GBi во время ME
Для существующего поиска би-предсказания кодер зафиксирует MV из одного списка и уточнит MV в другом списке. Цель модифицируется перед ME, чтобы уменьшить сложность вычислений. Например, если MV из list-1 является фиксированным, и кодер должен уточнить MV из list-0, цель уточнения MV из list-0 модифицируется с помощью уравнения (6). O является исходным сигналом, и P1 – сигнал предсказания из list-1. w – весовой коэффициент GBi для list-1.
(6)
Здесь член сохраняется с точностью вычисления с плавающей запятой, что увеличивает сложность вычислений. Мы предлагаем заменить уравнение (6) на фиксированную точку, как в уравнении (7).
(7)
где a1 и a2 – коэффициенты масштабирования, и они вычисляются как:
; ; ;
2.8.3 Ограничение размера CU для GBi
В этом способе GBi отключено для небольших CU. В режиме внешнего предсказания, если используется би-предсказание и область CU меньше, чем 128 выборок яркости, GBi отключается без какой-либо сигнализации.
2.9 Примеры двунаправленного оптического потока (BDOF)
В двунаправленном оптическом потоке (BDOF или BIO) компенсация движения сначала выполняется для выработки первых предсказаний (в каждом направлении предсказания) текущего блока. Первые предсказания используются для получения пространственного градиента, временного градиента и оптического потока каждого подблока или пикселя внутри блока, которые затем используются для выработки второго предсказания, например, окончательного предсказания подблока или пикселя. Подробности этого описаны ниже.
BDOF представляет собой уточнение движения по выборкам, выполняемое поверх поблочной компенсации движения для би-предсказания. В некоторых реализациях уточнение движения на уровне выборки не использует сигнализацию.
Пусть I(k) будет значением яркости из опорного изображения k (k=0, 1) после компенсации движения блока, и обозначим и как горизонтальные и вертикальные составляющие градиента I(k), соответственно. Предполагая, что оптический поток является действительным, векторное поле движения определяется как:
(5)
Объединение этого уравнения оптического потока с эрмитовой интерполяцией для траектории движения каждой выборки приводит к уникальному полиному третьего порядка, который соответствует как значениям I(k) функции, так и производным и на концах. Значение этого полинома при t=0 является предсказанием BDOF:
(6)
На фиг.24 показана примерная траектория оптического потока в способе двунаправленного оптического потока (BDOF).В данном случае и обозначают расстояния до опорных кадров. Расстояния и вычисляются на основе POC для Ref0 и Ref1: τ0=POC(текущий) − POC(Ref0), τ1= POC(Ref1) − POC(текущий). Если оба предсказания исходят из одного и того же временного направления (либо из прошлого, либо из будущего), то знаки являются разными (например, ). В этом случае BDOF применяется в тех случаях, если предсказание не относится к одному и тому же моменту времени (например, ). Обе опорные области имеют ненулевое движение (например, ), и векторы движения блоков пропорциональны временному расстоянию (например, ).
Поле (vx, vy) определяется путем минимизации разницы Δ между значениями в точках A и B. На фиг.9A-9B показан пример пересечения траекторий движения и плоскостей опорных кадров. В модели используется только первый линейный член локального разложения Тейлора для Δ:
(7)
Все значения в приведенном выше уравнении зависят от местоположения выборки, обозначенного как . Предполагая, что движение согласовано в локальной окружающей области, можно минимизировать в пределах квадратного окна размером (2M+1)×(2M+1) с центром в текущей предсказываемой точке, где M равно 2:
(8)
Для этой задачи оптимизации JEM использует упрощенный подход, выполняя сначала минимизацию в вертикальном направлении и затем в горизонтальном направлении. Это приводит к следующему:
(9)
(10)
где
(11)
Во избежание деления на ноль или на очень маленькое значение в уравнение (9) и уравнение (10) можно ввести параметры r и m регуляризации, где:
(12)
(13)
Здесь является битовой глубиной выборок видео.
Для того, чтобы сохранить доступ к памяти для BDOF таким же, как для регулярной компенсации движения с би-предсказанием, все значения предсказания и градиентов вычисляются для позиций внутри текущего блока. На фиг.22А показан пример позиций доступа за пределами блока 2200. Как показано на фиг.22А, в уравнении (9) квадратное окно размером (2M+1)×(2M+1) с центром в текущей предсказываемой точке на границе предсказываемого блока необходимо для доступа к позициям за пределами блока. В JEM значения за пределами блока устанавливаются равными ближайшему доступному значению внутри блока. Например, его можно реализовать в виде области 2201 заполнения, которая показана на фиг.22B.
При использовании BDOF возможно, что поле движения может быть уточнено для каждой выборки. Чтобы уменьшить вычислительную сложность, в JEM используется блочная конструкция BDOF. Уточнение движения можно вычислить на основе блока 4×4. В блочном BDOF значения sn в уравнении (9) всех выборок в блоке 4×4 можно агрегировать, и затем агрегированные значения sn используются для смещения полученных векторов движения BDOF для блока 4×4. Более конкретно, для получения блочного BDOF можно использовать следующие уравнения:
(14)
Здесь bk обозначает набор выборок, принадлежащих k-му блоку 4×4 предсказанного блока. sn в уравнении (9) и уравнении (10) заменяются на ((sn,bk) >> 4) для получения ассоциированных смещений вектора движения.
В некоторых сценариях многочисленные MV BIO могут быть ненадежными из-за шума или нерегулярного движения. Таким образом, в BDOF величина многочисленных MV ограничена пороговым значением. Пороговое значение определяется на основе того, поступают ли с одного направления все опорные изображения текущего изображения. Например, если все опорные изображения текущего изображения поступают с одного направления, значение порога устанавливается равным ; в иных случаях устанавливается значение .
Градиенты для BDOF могут быть вычислены одновременно с интерполяцией компенсации движения с использованием операций, соответствующих процессу компенсации движения HEVC (например, 2D разделяемая конечная импульсная характеристика (FIR)). В некоторых вариантах осуществления, входными данными для 2D разделяемой FIR является такая же выборка опорного кадра, как для процесса компенсации движения и дробной позиции (fracX, fracY), соответствующей дробной части вектора движения блока. Для горизонтального градиента сигнал сначала интерполируется по вертикали с использованием BIOfilterS, соответствующего дробной позиции fracY со сдвигом и уменьшением масштаба d−8. Затем применяется градиентный фильтр BIOfilterG в горизонтальном направлении, соответствующем дробной позиции fracX со сдвигом и уменьшением масштаба на 18−d. Для вертикального градиента градиентный фильтр применяется по вертикали с использованием BIOfilterG, соответствующего дробной позиции fracY со сдвигом и уменьшением масштаба d−8. Затем смещение сигнала выполняется с помощью BIOfilterS в горизонтальном направлении, соответствующем дробной позиции fracX со сдвигом и уменьшением масштаба на 18–d. Длина интерполяционного фильтра для вычисления градиентов BIOfilterG и смещения BIOfilterF сигнала может быть короче (например, 6 отводов) для поддержания разумной сложности. В таблице 1 представлены примеры фильтров, которые можно использовать для вычисления градиентов различных дробных позиций вектора движения блока в BDOF. В таблице 2 представлены примеры интерполяционных фильтров, которые можно использовать для выработки сигнала предсказания в BIO.
Таблица 1. Примеры фильтров для вычислений градиента в BDOF (или BIO)
Таблица 2. Примерные интерполяционные фильтры для генерации сигнала предсказания в BDOF (или BIO)
В JEM BDOF может применяться ко всем блокам с би-предсказанием, когда два предсказания исходят из разных опорных изображений. Когда компенсация локальной освещенности (LIC) включена для CU, BDOF можно отключить.
В некоторых вариантах осуществления OBMC применяется для блока после обычного процесса MC. Чтобы уменьшить вычислительную сложность, BDOF не может применяться во время процесса OBMC. Это означает, что BDOF применяется в процессе MC для блока тогда, когда используется его собственный MV, и не применяется в процессе MC тогда, когда во время процесса OBMC используется MV соседнего блока.
2.9.1 Примеры BDOF в VTM-3.0
Этап 1: выполнить оценку того, применим ли BIO (W/H – ширина/высота текущего блока).
BIO не применяется в тех случаях, если
○ Текущий видеоблок имеет аффинный код или код ATMVP.
○ (iPOC - iPOC0) × (iPOC - iPOC1) ≥ 0
○ H==4 or (W==4 и H==8)
○ при взвешенном предсказании
○ Весовые коэффициенты GBi не равны (1,1)
BDOF не используется, если общая SAD между двумя опорными блоками (обозначенными как R0 и R1) меньше порогового значения, где
Этап 2: Подготовка данных
Для блока WxH интерполируются (W+2)×(H+2) выборок.
Внутренние выборки WxH интерполируются с помощью интерполяционного фильтра с 8-отводами, как при нормальной компенсации движения.
Четыре боковые внешние линии выборок (черные кружки на фиг.23) интерполируются с помощью билинейного фильтра.
Для каждой позиции градиенты вычисляются в отношении двух опорных блоков (R0 и R1).
Gx0(x,y)=(R0(x+1,y)-R0(x-1,y))>>4
Gy0(x,y)=(R0(x, y+1)-R0(x, y-1))>>4
Gx1(x,y)=(R1(x+1,y)-R1(x-1,y))>>4
Gy1(x,y)=(R1(x, y+1)-R1(x, y-1))>>4
Для каждой позиции внутренние значения вычисляются как:
T1=(R0(x,y)>>6)-(R1(x,y)>>6), T2=(Gx0(x,y)+Gx1(x,y))>>3, T3=(Gy0(x,y)+Gy1(x,y))>>3; и
B1(x,y) = T2*T2, B2(x,y)=T2*T3, B3(x,y)=-T1*T2, B5(x,y)=T3*T3, B6(x,y)=-T1*T3
Этап 3. Вычислить предсказание для каждого блока.
BDOF пропускается для блока 4×4, если SAD между двумя опорными блоками 4×4 меньше порогового значения.
Вычислить Vx и Vy.
Вычислить окончательное предсказание для каждой позиции в блоке размером 4×4:
b(x,y)=(Vx(Gx0(x,y)-Gx1(x,y))+Vy(Gy0(x,y)-Gy1(x,y))+1)>>1
P(x,y)=(R0(x,y)+R1(x,y)+b(x,y)+offset) >> shift
В данном документе b(x,y) упоминается как поправочный член.
2.9.2 Альтернативные примеры BDOF (или BIO) в VTM-3.0
8.3.4 Процесс декодирования для интерблоков
- Если predFlagL0 и predFlagL1 равны 1, DiffPicOrderCnt(currPic, refPicList0[ refIdx0 ]) * DiffPicOrderCnt(currPic, refPicList1[ refIdx1 ]) < 0, MotionModelIdc[ xCb ][ yCb ] равняется нулю и MergeModeList[ merge_idx[ xCb ][ yCb ] ] не равняется SbCol, установить bioAvailableFlag на значение "истина".
- В противном случае установить bioAvailableFlag на значение "ложь".
- Если bioAvailableFlag равно значение "истина", применимо следующее:
- Переменный сдвиг устанавливается равным Max(2, 14 - bitDepth).
- Переменные cuLevelAbsDiffThres и subCuLevelAbsDiffThres устанавливаются равными (1<<(bitDepth - 8+shift))*cbWidth*cbHeight и 1<<(bitDepth – 3 + shift). Переменная cuLevelSumAbsoluteDiff устанавливается в 0.
- Для xSbIdx=0..(cbWidth>>2)−1 и ySbIdx=0..(cbHeight>>2)−1 переменная subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx] и флаг использования двунаправленного оптического потока bioUtilizationFlag[xSbIdx][ySbIdx] текущего подблока получаются как:
subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx] = ∑i∑j Abs(predSamplesL0L[(xSbIdx<<2)+1+i][(ySbIdx<<2)+1+j] - predSamplesL1L[(xSbIdx<<2)+1+i][(ySbIdx<<2)+1+j]) при i, j = 0..3
bioUtilizationFlag [xSbIdx][ySbIdx] = subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx] >= subCuLevelAbsDiffThres
cuLevelSumAbsoluteDiff += subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx]
- Если cuLevelSumAbsoluteDiff меньше, чем cuLevelAbsDiffThres, установить bioAvailableFlag на значение "ложь".
- Если параметр bioAvailableFlag равен значению "истина", выборки предсказания внутри текущего подблока кодирования яркости, predSamplesL[xL+xSb][yL+ySb] при xL=0..sbWidth-1 и yL=0..sbHeight-1, получаются путем вызова процесса предсказания выборки двунаправленного оптического потока, указанного в пункте 8.3.4.5, при ширине подблока кодирования яркости sbWidth, высоте подблока кодирования яркости sbHeight и массивах выборок predSamplesL0L и predSamplesL1L и переменных predFlagL0, predFlagL1, refIdxL0, refIdxL1.
8.3.4.3 Процесс интерполяции дробной выборки
8.3.4.3.1 Общие положения
Входными параметрами в этом процесс являются:
- местоположение (XSB, YSB) яркости, указывающее верхнюю левую выборку текущего подблока кодирования по отношению к верхней левой выборке яркости текущего изображения,
- переменная sbWidth, указывающая ширину текущего подблока кодирования в выборках яркости,
- переменная sbHeight, указывающая высоту текущего подблока кодирования в выборках яркости,
- вектор mvLX движения яркости, заданный в единицах выборки яркости 1/16,
- вектор движения цветности mvCLX, заданный в единицах выборки цветности 1/32,
- массив refPicLXL выбранных выборок опорных кадров и массивы refPicLXCb и refPicLXCr.
- флаг включения двунаправленного оптического потока bioAvailableFlag.
Результатами этого процесса являются:
- массив (sbWidth)×(sbHeight) predSamplesLXL значений предсказываемых выборок яркости, когда bioAvailableFlag имеет значение "ложь", или массив (sbWidth+2)×(sbHeight+2) predSamplesLXL значений предсказываемых выборок яркости, когда bioAvailableFlag имеет значение "истина".
- два массива (sbWidth/2)×(sbHeight/2) predSamplesLXCb и predSamplesLXCr значений предсказываемых выборок цветности.
Пусть (xIntL, yIntL) будет местоположением яркости, заданным в единицах полной выборки, и (xFracL, yFracL) будет смещением, заданным в единицах 1/16 выборки. Эти переменные используются только в этом разделе для указания местоположений дробных выборок внутри массивов опорных выборок refPicLXL, refPicLXCb и refPicLXCr.
Когда параметр bioAvailableFlag равен значению "истина", для каждого местоположения выборки яркости (xL=-1..sbWidth, yL=-1..sbHeight), внутри массива predSamplesLXL предсказываемых выборок яркости, соответствующее значение предсказываемых выборок яркости predSamplesLXL[xL][yL] получается следующим образом:
- Переменные xIntL, yIntL, xFracL и yFracL получаются следующим образом:
xIntL = xSb - 1 + (mvLX[ 0 ] >> 4) + xL
yIntL = ySb - 1 + (mvLX[ 1 ] >> 4) + yL
xFracL = mvLX[ 0 ] & 15
yFracL = mvLX[ 1 ] & 15
- Значение bilinearFiltEnabledFlag получается следующим образом:
- Если xL равно -1 или sbWidth, или yL равно -1 или sbHeight, установить bilinearFiltEnabledFlag на значение "истина".
- В противном случае установить значение bilinearFiltEnabledFlag на значение "ложь"
- Значение предсказываемой выборки яркости predSamplesLXL[xL][yL] получается путем вызова процесса, указанного в пункте 8.3.4.3.2, при использовании в качестве входных параметров (xIntL, yIntL), (xFracL, yFracL), refPicLXL и bilinearFiltEnabledFlag.
Когда bioAvailableFlag равно значению "ложь", для каждого местоположения выборки яркости (xL=0..sbWidth-1, yL=0..sbHeight-1) внутри массива предсказываемых выборок яркости predSamplesLXL соответствующее значение предсказываемой выборки яркости predSamplesLXL[xL][yL] получается следующим образом:
- Переменные xIntL, yIntL, xFracL и yFracL получаются следующим образом:
xIntL = xSb + (mvLX[0] >> 4) + xL
yIntL = ySb + (mvLX[1] >> 4) + yL
xFracL = mvLX[0] & 15
yFracL = mvLX[1] & 15
- Переменная bilinearFiltEnabledFlag установлена на значение "ложь".
– Значение предсказываемой выборки яркости predSamplesLXL[xL][yL] получается путем вызова процесса, указанного в пункте 8.3.4.3.2, при использовании в качестве входных параметров (xIntL, yIntL), (xFracL, yFracL) и refPicLXL и bilinearFiltEnabledFlag.
8.3.4.5 Процесс предсказания двунаправленного оптического потока (BDOF или BIO)
Входными параметрами в этом процесс являются:
- две переменные nCbW и nCbH, точно определяющие ширину и высоту текущего блока кодирования,
- два массива предсказываемых выборок яркости (nCbW+2)x(nCbH+2) predSamplesL0 и predSamplesL1,
- флаги использования списка предсказаний, predFlagL0 и predFlagL1,
- ссылочные индексы refIdxL0 и refIdxL1,
– флаги использования двунаправленного оптического потока bioUtilizationFlag[xSbIdx][ySbIdx] при xSbIdx = 0..(nCbW>>2) − 1, ySbIdx = 0 ..(nCbH>>2) − 1
Результатом этого процесса является массив (nCbW)x(nCbH) pbSamples значений предсказываемых выборок яркости.
Переменная bitDepth устанавливается равной BitDepthY.
Переменная shift2 устанавливается равной Max (3, 15 - bitDepth), и переменная offset2 устанавливается равной 1<<(shift2-1).
Переменная mvRefineThres устанавливается равной 1 << (13 − bitDepth).
Для xSbIdx = 0..(nCbW >> 2) − 1 и ySbIdx = 0..(nCbH >> 2) − 1,
- Если параметр bioUtilizationFlag[xSbIdx][ySbIdx] имеет значение "ложь", для x=xSb..xSb+3,y=ySb.. ySb+3 значения предсказываемых выборок для текущей единицы предсказания получаются следующим образом:
pbSamples[x][y] = Clip3(0, (1 << bitDepth) − 1,
(predSamplesL0[x][y] + predSamplesL1[x][y] + offset2) >> shift2)
- В иных случаях значения предсказываемых выборок текущего блока предсказания получаются следующим образом:
- Местоположение (xSb, ySb), указывающее верхнюю левую выборку текущего подблока относительно верхней левой выборки массивов predSamplesL0 и predSampleL1 предсказываемых выборок, получается следующим образом:
xSb = (xSbIdx<<2) + 1
ySb = (ySbIdx<<2) + 1
- Для xx=xSb-1..xSb+4,y=ySb−1.. ySb+4 применимо следующее:
- Местоположения (hx, vy) для каждой из соответствующих выборок (x, y) внутри массивов предсказываемых выборок получаются следующим образом:
hx = Clip3(1, nCbW, x)
vy = Clip3(1, nCbH, y)
- Переменные gradientHL0[x][y], gradientVL0[x][y], gradientHL1[x][y] и gradientVL1[x][y] получаются следующим образом:
gradientHL0[x][y] = (predSamplesL0[hx +1][vy] – predSampleL0[hx-1][vy])>>4
gradientVL0[x][y] = (predSampleL0[hx][vy+1] - predSampleL0[hx][vy-1])>>4
gradientHL1[x][y] = (predSamplesL1[hx+1][vy] – predSampleL1[hx-1][vy])>>4
gradientVL1[x][y] = (predSampleL1[hx][vy+1] – predSampleL1[hx][vy-1])>>4
- Переменные temp, tempX и tempY получаются следующим образом:
temp[x][y] = (predSamplesL0[hx][vy]>>6) – (predSamplesL1[hx][vy]>>6)
tempX [x] [y]=(gradientHL0 [x] [y]+gradientHL1 [x] [y]) >> 3
tempY [x] [y]=(gradientVL0 [x] [y]+gradientVL1 [x] [y]) >> 3
- Переменные sGx2, sGy2, sGxGy, sGxdI и sGydI получаются следующим образом:
sGx2 = ∑x∑y (tempX[xSb+x][ySb+y] * tempX[xSb+x][ySb+y]) при x, y = −1..4
sGy2 = ∑x∑y (tempY[xSb+x][ySb+y] * tempY[xSb+x][ySb+y]) при x, y = −1..4
sGxGy = ∑x∑y (tempX[xSb+x][ySb+y] * tempY[xSb+x][ySb+y]) при x, y = −1..4
sGxdI = ∑x∑y (-tempX[xSb+x][ySb+y] * temp[xSb+x][ySb+y]) при x, y = −1..4
sGydI = ∑x∑y (-tempY[xSb+x][ySb+y] * temp[xSb+x][ySb+y]) при x, y = −1..4
- Уточнения горизонтального и вертикального движений текущего подблока получаются как:
vx = sGx2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, -(sGxdI<<3)>>Floor(Log2(sGx2))) : 0
vy = sGy2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, ((sGydI<<3) - ((vx*sGxGym)<<12 + vx*sGxGys)>>1)>>Floor(Log2(sGy2))) : 0
sGxGym = sGxGy>>12;
sGxGys = sGxGy & ((1<<12)-1)
Для x=xSb-1..xSb+2, y=ySb-1.. ySb+2 применимо следующее:
sampleEnh = Round((vx* (gradientHL1[x+1][y+1]- gradientHL0[x+1][y+1]))>>1) + Round((vy*(gradientVL1[x+1][y+1]-gradientVL0[x+1][y+1]))>>1)
pbSamples[ x ][ y ] = Clip3(0, (1 << bitDepth) − 1, (predSamplesL0[ x+1 ][ y+1 ] + predSamplesL1[ x+1 ][ y+1 ] +sampleEnh + offset2) >> shift2)
2.1.0 Примеры уточнения вектора движения на стороне декодера (DMVR)
В операции би-предсказания для предсказания одной области блока два блока предсказания, сформированные с использованием вектора движения (MV) из списка 0 (list0) и MV из списка 1 (list1), соответственно, объединяются для формирования единого сигнала предсказания. В способе уточнения вектора движения на стороне декодера (DMVR) два вектора движения би-предсказания дополнительно уточняются в процессе двустороннего согласования с шаблоном. Двустороннее согласование с шаблоном применяется в декодере для выполнения поиска на основе искажения между двусторонним шаблоном и выборками восстановления в опорных изображениях для того, чтобы получить уточненный MV без передачи дополнительной информации о движении.
В DMVR двусторонний шаблон вырабатывается в виде взвешенной комбинации (то есть усредненной) из двух блоков предсказания, из начального MV0 из list0 и MV1 из list1, соответственно, как показано на фиг.24. Операция согласования с шаблоном состоит из вычисления меры издержек между выработанным шаблоном и областью выборки (вокруг начального блока предсказания) в опорном изображении. Для каждого из двух опорных изображений MV, который имеет минимальные издержки шаблона, считается обновленным MV из этого списка для замены исходного. В JEM для каждого списка отыскивается девять кандидатов MV. Девять кандидатов MV включают в себя исходный MV и 8 окружающих MV со смещением одной выборки яркости относительно исходного MV либо в горизонтальном, либо в вертикальном направлении, либо в обоих направлениях. Наконец, два новых MV, то есть MV0’и MV1’, как показано на фиг.24, используются для выработки окончательных результатов би-предсказания. Сумма абсолютных разностей (SAD) используется в качестве меры издержек. Следует отметить, что при вычислении издержек блока предсказания, выработанного одним окружающим MV, округленный MV (до целого числа pel) фактически используется для получения блока предсказания вместо реального MV.
DMVR применяется для режима слияния би-предсказания с одним MV из опорного изображения в прошлом и другим MV из опорного изображения в будущем без передачи дополнительных элементов синтаксиса. В JEM, когда LIC, аффинное движение, FRUC или кандидат слияния суб-CU включены для CU, DMVR не применяется.
3. Примерные варианты осуществления, которые относятся к раскрытой технологии
3.1 Примеры предсказания на основе кросс-компонентной линейной модели (CCLM)
Чтобы уменьшить кросс-компонентную избыточность, в JEM используется режим предсказания CCLM, также известный как LM, для которого выборки цветности предсказываются на основе восстановленных выборок яркости одного и того же CU с использованием линейной модели следующим образом:
Здесь представляет собой предсказанные выборки цветности в CU, и представляет собой восстановленные выборки яркости с пониженным разрешением одной и той же CU для цветовых форматов 4:2:0 или 4:2:2, тогда как представляет собой восстановленные выборки яркости одной и той же CU для цветного формата 4:4:4. Параметры CCLM α и β получаются путем минимизации ошибки регрессии между соседними восстановленными выборками яркости и цветности вокруг текущего блока следующим образом:
Здесь представляет верхние и левые соседние восстановленные выборки яркости с первоначальным разрешением (для цветового формата 4:4:4) или с понижением разрешения (для цветовых форматов 4:2:0 или 4:2:2), представляет собой верхние и левые соседние восстановленные выборки цветности, и значение равно удвоенному минимальному значению ширины и высоты текущего блока кодирования цветности. Для блока кодирования квадратной формы два вышеуказанных уравнения применяются напрямую. Для неквадратного блока кодирования соседние выборки с более длинной границей сначала подвергаются субдискретизации, чтобы иметь одинаковое количество выборок, как для более короткой границы. На фиг.25 показано местоположение слева и сверху восстановленных выборок и выборки текущего блока, задействованного в режиме CCLM.
Это вычисление минимизации ошибок регрессии выполняется как часть процесса декодирования, а не только как операция поиска кодера, поэтому синтаксис не используется для передачи значений α и β. Режим предсказания CCLM также включает в себя предсказание между двумя компонентами цветности, то есть предсказание компонента Cr осуществляется из компонента Cb. Вместо использования восстановленного сигнала выборки в остаточной области применяется предсказание CCLM Cb-to-Cr. Это предсказание осуществляется путем добавления взвешенного восстановленного остатка Cb к исходному интрапредсказанию Cr для формирования окончательного предсказания Cr:
Здесь представляет собой восстановленную остаточную выборку Cb в позиции (i,j).
Коэффициент α масштабирования получается таким же образом, как и при предсказании яркости-цветности CCLM. Единственное отличие состоит в добавлении издержек регрессии относительно значения α по умолчанию в функции ошибок, так что полученный коэффициент масштабирования смещается в сторону значения по умолчанию -0,5 следующим образом:
Здесь представляет Cb соседних восстановленных выборок, представляет Cr соседних восстановленных выборок, и λ равно .
Режим предсказания яркости-цветности CCLM добавлен в качестве одного дополнительного режима внешнего предсказания цветности. На стороне кодера добавляется еще одна проверка издержек RD для компонентов цветности для того, чтобы выбрать режим внешнего предсказания цветности. Когда режимы внешнего предсказания, отличные от режима предсказания CCLM-яркости-цветности, используются для компонентов цветности CU, предсказание CCLM Cb-to-Cr используется для предсказания компонента Cr.
3.2 Примеры упрощенного CCLM
В некоторых существующих реализациях алгоритм LMS параметров линейной модели α и β заменен уравнением прямой линии. Две точки (пара яркости и цветности) (А, В) представляют собой минимальное и максимальное значения внутри набора соседних выборок яркости, как показано на фиг.26. В данном документе параметры α и β линейной модели получены согласно:
Деления можно избежать и заменить умножением и сдвигом.
Для получения предиктора цветности, как и для текущей реализации VTM, умножение заменяется целочисленной операцией, как показано ниже:
Однако эта реализация является также более простой по сравнению с текущей реализацией VTM, так как сдвиг S всегда имеет одно и то же значение. С точки зрения сложности предлагаемый алгоритм сокращает количество операций, как представлено в приведенной ниже таблице:
Количество операций уменьшается, но предложенный способ требует несколько сравнений, чтобы получить минимальное и максимальное значения яркости соседней выборки.
4. Недостатки существующих реализаций
Некоторые существующие реализации имеют следующие недостатки:
(1) Как BIO, так и CCLM нуждаются в линейной регрессии, но разными упрощенными способами.
(2) Реализация BIO в VTM не учитывает расстояние POC.
(3) Скорости на Ref0 обозначаются как и . Скорости на Ref1 обозначены как и . В настоящее время при проектировании BIO предполагается, что скорости на двух опорных изображениях зеркально отображаются таким образом, что и (или и ). Однако это предположение может не соответствовать действительности.
(4) Получение скоростей vx и vy в BIO чрезмерно упрощено.
(5) Получение vx и vy в BIO может быть объединено с DMVR или получением движения на стороне декодера.
(6) Зная vx и vy, можно дополнительно уточнить предсказания/градиенты для Ref0/Ref1.
(7) Для интерполяции пикселей и границ вводится дополнительный интерполяционный фильтр (билинейный фильтр).
(8) В процедуре BIO отсутствуют некоторые операции округления и ограничения.
(9) Можно дополнительно снизить точность внутренних операций.
(10) Можно упростить вычисление SAD для BIO.
(11) Когда применяется GBi, значения весовых коэффициентов не учитываются надлежащим образом в процедуре получения BIO.
5. Примерные способы для внешнего предсказания с уточнением
Варианты осуществления раскрытой в настоящее время технологии устраняют недостатки существующих реализаций, гармонизируют процедуру линейной регрессии в BIO и CCLM и предлагают модификации BIO, тем самым обеспечивая кодирование видео с более высокой эффективностью кодирования. Гармонизация предсказания линейного режима на основе раскрытой технологии позволяет улучшить как существующие, так и будущие стандарты кодирования видео, что поясняется в приведенных ниже примерах, описанных для различных реализаций. Примеры раскрытой технологии, представленные ниже, объясняют общие концепции и не предназначены для интерпретации как ограничивающие. В качестве примера, если явно не указано обратное, различные признаки, описанные в этих примерах, могут быть объединены.
Обозначим опорное изображение текущего изображения из списка 0 и списка 1, соответственно, Ref0 и Ref1, обозначим τ0=POC(текущий) − POC(Ref0), τ1= POC(Ref1) − POC(текущий), и обозначим опорный блок текущего блока из Ref0 и Ref1, соответственно, refblk0 и refblk1. Для подблока в текущем блоке, MV его соответствующего подблока в refblk0, указывающем на refblk1, обозначается как (vx, vy). MV подблока в Ref0 и Ref1 обозначены (mvL0x, mvL0y) и (mvL1x, mvL1y), соответственно.
Shift(x, s) определяется как Shift(x, s) = (x + off) >> s
SignShift(x, s) определяется как
Здесь off представляет смещение, которое является целым числом, например, 0 или 2s-1.
Clip3(x, min, max) определяется как
Пример 1. Предлагается, что модуль линейной оптимизации, используемый в BIO, может использоваться другими инструментами кодирования в системе кодирования видео.
(a) Модуль линейной оптимизации включает в себя группу выборок (uk, vk, wk) при k, принимающем значения от 0 до N-1, в качестве входных данных, два параметра a и b в качестве выходных данных, поэтому можно минимизировать или приблизительно минимизировать. Из уравнения (9) и уравнения (10) известно, что в BIO:
В данном документе Gx(x,y) и Gy(x,y) представляют горизонтальный и вертикальный градиенты, соответственно.
(b) В одном примере модуль линейной оптимизации, используемый в BIO, используется для получения параметров для CCLM. Исходя из уравнений (18) и (19), обозначения можно записать в виде:
(c) В качестве альтернативы, модуль линейной оптимизации, используемый в другом инструменте кодирования, таком как CCLM, может использоваться для получения vx и vy в BIO.
Пример 2. Предполагается, что то, применять ли и как применять процедуру BIO, зависит от расстояний POC.
(a) Процедура BIO не применяется, если abs(τ0) ≥ T0 или abs(τ1) ≥ T1. T0 и T1 – целые числа, например, T0=T1=4. T0 и T1 могут быть фиксированными числами или сигнализироваться из кодера в декодер в VPS/SPS/PPS/заголовке среза/заголовке группы тайлов/тайле/CTU/CU.
(b) Процедура BIO не применяется, если abs(τ0) ≥ T0 и abs(τ1) ≥ T1. T0 и T1 – целые числа, например, T0=T1=4. T0 и T1 могут быть фиксированными числами или передаваться из кодера в декодер в VPS/SPS/PPS/заголовке среза/заголовке группы тайлов/тайле/CTU/CU.
(c) Процедура BIO не применяется, если abs(τ0) + abs(τ1) ≥ T. T – целое число, например, T=8. T может быть фиксированным числом или передаваться из кодера в декодер в VPS/SPS/PPS/заголовке среза/заголовке группы тайлов/тайле/CTU/CU.
(d) Процедура BIO не применяется, если abs(abs(τ0) - abs(τ1)) ≥ T. T – целое число, например, T=8. T может быть фиксированным числом или передаваться из кодера в декодер в VPS/SPS/PPS/заголовке среза/заголовке группы тайлов/тайле/CTU/CU.
(e) Процедура BIO не применяется, если abs(τ0) ≥ T*abs(τ1) или abs(τ1) ≥ T*abs(τ0). T – целое число, например, T = 4. T может быть фиксированным числом или передаваться из кодера в декодер в VPS/SPS/PPS/заголовке среза/заголовке группы тайлов/тайле/CTU/CU.
Пример 3. Предполагается, что векторы скорости, используемые для уточнения значения предсказания в процессе BIO, зависят от расстояний POC. Предсказание после процедуры BIO вычисляется как
(22)
где G(0)x и G(0)y представляют горизонтальный и вертикальный градиенты на Ref0, и G(0)x и G(0)y представляют горизонтальные и вертикальные градиенты на Ref0.
1) При проектировании BIO в VTM-3.0, и , где и являются производными. Таким образом, уравнение (22) идентично уравнению (9).
2) В одном примере:
В данном документе операции деления могут быть реализованы как умножение, и операции сдвига могут быть реализованы как операции масштабирования MV в HEVC.
Пример 4. Вместо того чтобы всегда сначала принимать vy равным 0 для получения vx, предлагается сначала получить vy, и на основе vy получить vx. В качестве альтернативы, то, получить ли сначала vy или vx, может зависеть от кодированной информации, например, от значений горизонтальных и вертикальных составляющих векторов движения, размеров блоков и т.д.
Пример 5. Предлагается, чтобы vx и vy получались итеративным способом.
a) В одном примере vx, полученный на i-м шаге, используется для получения vy на i-м шаге, и полученный vy на i-м шаге используется для получения vx, полученного на i+1-м шаге. Получение выполняется итеративно.
b) В качестве альтернативы, vy, полученный на i-м шаге, используется для получения vx на i-м шаге, и полученный vx на i-м шаге используется для получения vy, полученного на i+1-м шаге. Получение выполняется итеративно.
c) Использование vx для получения vy или vy для получения vx на одном и том же этапе может зависеть от кодированной информации, такой как значения горизонтальных и вертикальных составляющих векторов движения, размеры блоков и т.д.
d) В одном примере , где s2, s5, s6 определены как в (13). ε является целым или дробным числом, например, ½ или ¼.
1) Операция деления может быть упрощена, например, путем замены сдвигом MSB, как в JEM-3.0.
2) Операция ограничения может выполняться после операции деления.
e) В одном примере , где s1, s2, s3 определены, как в (13). ε является целым или дробным числом, например, ½ или ¼.
1) Операция деления может быть упрощена, например, путем замены сдвигом MSB, как в JEM-3.0.
2) Операция ограничения может выполняться после операции деления.
f) Получение выполняется итеративно, пока i не достигнет числа с префиксом, например, 2.
g) В качестве альтернативы, получение выполняется итеративно до тех пор, пока абсолютная разница между vx и/или vy до и после одного цикла получения не станет меньше порогового значения.
Пример 6. Получение vx и vy в BIO может быть объединено с DMVR, двусторонним согласованием или другими способами получения движения на стороне декодера.
a) vx и vy, полученные в BIO для блока или подблока (например, блока 4×4), могут использоваться для получения начальной точки поиска DMVR, двустороннего согласования или других способов получения движения на стороне декодера. Предположим, что исходные MV для Ref0 и Ref1 представляют собой MV0 и MV1, MV, обозначенные как MV0’и MV1’ в качестве начальной точки DMVR, двустороннего согласования или других способов получения движения на стороне декодера, могут быть вычислены следующим образом:
1) в одном примере MV0’ = MV0+ (vx, vy), MV1’=MV1-(vx, vy);
2) в одном примере MV0’ = MV0- (vx, vy), MV1’=MV1+(vx, vy);
3) в одном примере MV0’ = MV0 + Scale(vx, vy), MV1’=MV1 - Scale (vx, vy);
4) в одном примере MV0’ = MV0 - Scale (vx, vy), MV1’=MV1 + Scale (vx, vy);
5) в одном примере MV0’ = Clip(MV0 + Scale(vx, vy)), MV1’= Clip(MV1 - Scale (vx, vy));
6) в одном примере MV0’ = Clip(MV0 - Scale (vx, vy)), MV1’= Clip(MV1 + Scale (vx, vy));
b) В качестве альтернативы, выходные MV DMVR, двустороннего согласования или других способов получения движения на стороне декодера для блока или подблока (например, блока 4×4) могут использоваться для получения vx и vy, используемых в BIO. Предположим, что исходные MV для Ref0 и Ref1 представляют собой MV0 и MV1, выходные MV – MV0’и MV1’, то vx и vy могут быть вычислены следующим образом:
1) в одном примере (vx, vy)= Scale (MV0’ - MV0);
2) в одном примере (vx, vy)= Scale (MV0 - MV0’);
3) в одном примере (vx, vy)= Scale (MV1’- MV1);
4) в одном примере (vx, vy)= Scale (MV1 - MV1’);
5) в одном примере (vx, vy)=(Scale (MV0’- MV0)+Scale (MV1’ - MV1))/2;
6) в одном примере (vx, vy)= (Scale (MV0 - MV0’)+ Scale (MV1 – MV1’))/2;
Пример 7. Предлагается, чтобы полученные vx и vy можно было использовать для уточнения предсказаний и градиентов в отношении Ref0 и Ref1. Затем уточненные предсказания и градиенты используются для получения новых vx и vy.
a) Процедура получения и уточнения может выполняться итеративно до тех пор, пока абсолютная разница между vx или vy до и после одного цикла получения не станет меньше порогового значения. В качестве альтернативы, процедура получения и уточнения может выполняться итеративно до тех пор, пока итерация не достигнет заданного количества раз, например, числа 2.
b) Предположим, что исходные MV для Ref0 и Ref1 представляют собой MV0 и MV1, MV обозначены как MV0’и MV1’ для получения уточненных предсказаний, и градиенты могут быть вычислены следующим образом:
1) в одном примере MV0’ = MV0+ (vx, vy), MV1’=MV1-(vx, vy);
2) в одном примере MV0’ = MV0- (vx, vy), MV1’=MV1+(vx, vy);
3) в одном примере MV0’ = MV0 + Scale(vx, vy), MV1’=MV1 - Scale (vx, vy);
4) в одном примере MV0’ = MV0 - Scale (vx, vy), MV1’=MV1 + Scale (vx, vy);
5) в одном примере MV0’ = Clip(MV0 + Scale(vx, vy)), MV1’= Clip(MV1 - Scale (vx, vy));
6) в одном примере MV0’ = Clip(MV0 - Scale (vx, vy)), MV1’= Clip(MV1 + Scale (vx, vy)).
Пример 8. Предлагается, что BIO может применяться к частичным выборкам в пределах одного блока или одного подблока. В одном примере для выборок, расположенных в первой/последней строке/первом/последнем столбце, BIO не применяется.
Пример 9. Предлагается использовать интерполяционный фильтр только одного вида для одного цветового компонента тогда, когда применяется BIO.
a) В одном примере только интерполяционный фильтр с 8 отводами используется для компонента яркости тогда, когда применяется BIO.
b) Кроме того, в качестве альтернативы, для уменьшения пропускной способности памяти предлагается ограничить размер/диапазон выборок, которые должны быть извлечены, в меньшей степени, чем это требуется для интерполяционных фильтров.
c) Кроме того, в качестве альтернативы, может применяться заполнение, если некоторые выборки расположены в позициях за пределами заданного размера/диапазона.
d) Предположим, что текущий блок имеет размер M×N, требуемый размер подвыборок составляет (M+G)×(N+G), требуемый размер для интерполяционного фильтра с L-отводами должен быть равен (M+G+L-1)×(N+G+L-1). Предлагается, чтобы разрешенный размер целочисленных выборок яркости, извлекаемых с помощью процедуры BIO, составлял (M+L-1+k)×(N+L-1+k), например, k равно 0 или 1, и k меньше G. Если целочисленная выборка яркости требуется в процессе интерполяции, но не может быть извлечена, то она будет дополнена соседней выборкой яркости.
1) На фиг.27 показан пример интерполяционной фильтрации в процедуре BIO. Текущий размер блока составляет M×N, в примере M=N=8. Требуемый размер подвыборок составляет (M+2)×(N+2) из-за вычисления градиента. Таким образом, целочисленные выборки, необходимые для интерполяционного фильтра, представляют собой (M+2+7)×(N+2+7), что в примере равно 17×17. Однако требуется выбрать только (M+7)×(N+7) целочисленных выборок, что в примере равно 15×15. Другие выборки (черные кружки в фильтре), требуемые интерполяционным фильтром, дополняются соседними выбранными выборками.
e) В одном примере градиенты позиций (x, y), где x=-1 или y=-1, или x=W или y=H, не вычисляются, и BIO не применяется к этим позициям. Предположим, что верхний левый угол текущего блока равен (0,0), и ширина/высота текущего блока равна W/H.
f) В одном примере градиенты позиций (x, y), где x=-1 или y=-1, или x=W или y=H, вычисляются другим способом. Например,
○ gradientHL0[x][y] =
(predSamplesL0[hx +1][vy] – predSampleL0[hx][vy])>>4, если hx==1,
(predSamplesL0[hx][vy] – predSampleL0[hx-1][vy])>>4, если hx== nCbW,
(predSamplesL0[hx+1][vy] – predSampleL0[hx-1][vy])>>4, в иных случаях.
○ gradientVL0[x][y] =
(predSampleL0[hx][vy+1] - predSampleL0[hx][vy])>>4, если vy ==1,
(predSampleL0[hx][vy] - predSampleL0[hx][vy-1])>>4, если vy ==nCbH,
(predSampleL0[hx][vy+1] - predSampleL0[hx][vy-1])>>4, в иных случаях.
○ gradientHL1[x][y] =
(predSamplesL1[hx +1][vy] – predSampleL1[hx][vy])>>4, если hx==1,
(predSamplesL1[hx][vy] – predSampleL1[hx-1][vy])>>4, если hx== nCbW,
(predSamplesL0[hx+1][vy] – predSampleL1[hx-1][vy])>>4, в иных случаях.
○ gradientVL1[x][y] =
(predSampleL1[hx][vy+1] – predSampleL1[hx][vy])>>4, если vy ==1,
(predSampleL1[hx][vy] – predSampleL1[hx][vy-1])>>4, если vy ==nCbH,
(predSampleL1[hx][vy+1] – predSampleL1[hx][vy-1])>>4 в иных случаях.
В другом примере
○ gradientHL0[x][y] =
(predSamplesL0[hx +1][vy] – predSampleL0[hx][vy])>>3, если hx==1,
(predSamplesL0[hx][vy] – predSampleL0[hx-1][vy])>>3, если hx== nCbW,
(predSamplesL0[hx+1][vy] – predSampleL0[hx-1][vy])>>4, в иных случаях.
○ gradientVL0[x][y] =
(predSampleL0[hx][vy+1] - predSampleL0[hx][vy])>>3, если vy ==1,
(predSampleL0[hx][vy] - predSampleL0[hx][vy-1])>>3, если vy ==nCbH,
(predSampleL0[hx][vy+1] - predSampleL0[hx][vy-1])>>4, в иных случаях.
○ gradientHL1[x][y] =
(predSamplesL1[hx +1][vy] – predSampleL1[hx][vy])>>3, если hx==1,
(predSamplesL1[hx][vy] – predSampleL1[hx-1][vy])>>3, если hx== nCbW,
(predSamplesL0[hx+1][vy] – predSampleL1[hx-1][vy])>>4, в иных случаях.
○ gradientVL1[x][y] =
(predSampleL1[hx][vy+1] – predSampleL1[hx][vy])>>3, если vy ==1,
(predSampleL1[hx][vy] – predSampleL1[hx][vy-1])>>3, если vy ==nCbH,
(predSampleL1[hx][vy+1] – predSampleL1[hx][vy-1])>>4, в иных случаях.
g) В одном примере перед вычислением градиентов внешние выборки (черные кружки на фиг.23) не интерполируются путем заполнения.
1) Например, predSampleL0[0][vy]= predSampleL0[1][vy], predSampleL0[nCbW+1][vy]= predSampleL0[nCbW][vy], predSampleL0[hx][0]= predSampleL0[hx][1], predSampleL0[hx][nCbH+1]= predSampleL0[hx][nCbH] и predSampleL1[0][vy]= predSampleL1[1][vy], predSampleL1[nCbW+1][vy]= predSampleL1[nCbW][vy], predSampleL1[hx][0]= predSampleL1[hx][1], predSampleL1[hx][nCbH+1]= predSampleL1[hx][nCbH] для всех действительных hx и vy.
h) В одном примере способ вычисления градиентов в BIO и способ вычисления градиентов в фильтре адаптивного контура (ALF) является одним и тем же способом.
1) В одном примере способ вычисления градиентов для BIO в VTM-3 также используется для вычисления градиентов для ALF.
2) В одном примере способ вычисления градиентов для ALF в VTM-3 также используется для вычисления градиентов для BIO.
Пример 10. В процессе предсказания двунаправленного оптического потока предлагаются следующие изменения.
a) Значения градиента могут быть сдвинуты на другое значение, кроме 4. В одном примере переменные gradientHL0[x][y], gradientVL0[x][y], gradientHL1[x][y] и gradientVL1[x][y] получаются следующим образом:
gradientHL0[x][y] = SignShift (predSamplesL0[hx +1][vy] – predSampleL0[hx-1][vy], S)
gradientVL0[x][y] = SignShift (predSampleL0[hx][vy+1] - predSampleL0[hx][vy-1], S)
gradientHL1[x][y] = SignShift (predSamplesL1[hx+1][vy] – predSampleL1[hx-1][vy], S)
gradientVL1[x][y] = SignShift (predSampleL1[hx][vy+1] – predSampleL1[hx][vy-1], S)
1) В одном примере S – фиксированное число, например, 4 или 5.
2) В одном примере S зависит от битовой глубины выборки. Например, S равно B-P, где B – битовая глубина выборки, такая как 8, 10 или 12, и P – целое число, например, 6.
b) Значения градиента должны находиться в пределах диапазона. В одном примере переменные gradientHL0[x][y], gradientVL0[x][y], gradientHL1[x][y] и gradientVL1[x][y] должны быть гарантированно представлены K-битовым целым числом, например, K = 8 или 16.
Например, после вывода градиенты ограничиваются как
gradientHL0[x][y] = Clip3(-2K-1, 2K-1-1, gradientHL0[x][y])
gradientVL0[x][y] = Clip3(-2K-1, 2K-1-1, gradientVL0[x][y])
gradientHL1[x][y] = Clip3(-2K-1, 2K-1-1, gradientHL1[x][y])
gradientVL1[x][y] = Clip3(-2K-1, 2K-1-1, gradientVL1[x][y]).
c) Внутренние переменные temp, tempX и tempY получаются следующим образом:
temp[x][y] = SignShift(predSamplesL0[hx][vy] – predSamplesL1[hx][vy], S1)
tempX[x][y] = SignShift(gradientHL0[x][y] + gradientHL1[x][y], S2)
tempY[x][y] = SignShift(gradientVL0[x][y] + gradientVL1[x][y], S3).
1) В одном примере S1, S2 и S3 – фиксированные числа, такие как S1 = 6, S2=S3=3.
2) В одном примере S1, S2 и S3 зависят от битовой глубины выборки. Например, S1=B-P1, S2=B-P2 и S3=B-P3, где B – битовая глубина выборки, такая как 8, 10 или 12, и P1, P2 и P3 – целые числа, например, P1=4, P2=P3=7.
d) Внутренние переменные temp, tempX и tempY должны быть гарантированно представлены K1-битовым целым числом, K2-битовым целым числом и K3-битовым целым числом, например, K1 = 8 или 16, K2 = 8 или 16, K3 = 8 или 16.
1) Например, внутренние переменные ограничиваются после получения как
temp [x][y] = Clip3(-2K1-1, 2K1-1-1, gradientHL0[x][y])
tempX [x][y] = Clip3(-2K2-1, 2K2-1-1, gradientVL0[x][y])
tempY [x][y] = Clip3(-2K3-1, 2K3-1-1, gradientHL1[x][y]) .
e) Внутренние переменные sGx2, sGy2, sGxGy, sGxdI и sGydI должны находиться в пределах диапазона. В одном примере эти переменные должны быть гарантированно представлены K1-битовым целым числом, K2-битовым целым числом, K3-битовым целым числом, K4-битовым целым числом и K5-битовым целым числом, например, K1 = 8 или 16, K2 = 8 или 16, K3 = 8 или 16.
1) Например, внутренние переменные сдвигаются вправо после получения как
sGx2 = Shift(sGx2, S1)
sGy2 = Shift(sGy2, S2)
sGxGy = SignShift (sGxGy, S3)
sGxdI = SignShift (sGxdI, S4)
sGydI = SignShift (sGydI, S5).
В одном примере S1, S2, S3, S4 и S5 – фиксированные числа, такие как 4 или 5.
В качестве альтернативы, S1, S2, S3, S4 и S5 зависят от битовой глубины выборки. Например, S1=B-P1, S2=B-P2, S3=B-P3, S4=B-P4, и S5=B-P5, где B – битовая глубина выборки, такая как 8, 10 или 12, и P1, P2, P3, P4 и P5 – целые числа.
2) Например, внутренние переменные ограничиваются после получения как
sGx2 = Clip3(0, 2K1-1, sGx2)
sGy2 = Clip3(0, 2K2-1, sGy2)
sGxGy = Clip3(-2K3-1, 2K3-1-1, sGxGy)
sGxdI = Clip3(-2K4-1, 2K4-1-1, sGxdI)
sGydI = Clip3(-2K5-1, 2K5-1-1, sGydI).
f) Переменные gradientHL0[x][y], gradientVL0[x][y], gradientHL1[x][y] и gradientVL1[x][y] получаются только для выбранных позиций.
1) В одном примере они вычисляются только для выборок в позиции (x, y) при x%Q == 0. Например, Q =2
2) В одном примере они вычисляются только для выборок в позиции (x, y) при x%Q == 1. Например, Q =2
3) В одном примере они вычисляются только для выборок в позиции (x, y) при y%Q == 0. Например, Q =2
4) В одном примере они вычисляются только для выборок в позиции (x, y) при y%Q == 1. Например, Q =2
5) В одном примере они вычисляются только для выборок в позиции (x, y) при y%Q == 0 или y%Q == 3. Например, Q = 4;
g) Внутренние переменные temp[x][y], tempX[x][y] и tempY[x][y] получаются только для выбранных позиций:
1) В одном примере они вычисляются только для выборок в позиции (x, y) при x%Q == 0. Например, Q =2
2) В одном примере они вычисляются только для выборок в позиции (x, y) при x%Q == 1. Например, Q =2
3) В одном примере они вычисляются только для выборок в позиции (x, y) при y%Q == 0. Например, Q =2
4) В одном примере они вычисляются только для выборок в позиции (x, y) при y%Q == 1. Например, Q =2
5) В одном примере они вычисляются только для выборок в позиции (x, y) при y%Q == 0 или y%Q == 3. Например, Q = 4;
6) В одном примере, temp[x][y], tempX[x][y], tempY[x][y] и gradientHL0[x][y], gradientVL0[x][y], gradientHL1[x][y], gradientVL1[x][y] вычисляются для выборок в одних тех же позициях, например, в позициях, показанных в примерах g.i~g.v.
h) Внутренние переменные sGx2, sGy2, sGxGy, sGxdI и sGydI вычисляются только при накоплении выборок в выбранных позициях. В следующей формулировке
sGx2 = ΣxΣy (tempX[xSb+x][ySb+y]*tempX[xSb+x][ySb+y]) при x, y S
sGy2 = ΣxΣy (tempY[xSb+x][ySb+y]*tempY[xSb+x][ySb+y]) при x, y S
sGxGy = ΣxΣy (tempX[xSb+x][ySb+y]*tempY[xSb+x][ySb+y]) при x, y S
sGxdI = ΣxΣy (-tempX[xSb+x][ySb+y]*temp[xSb+x][ySb+y]) при x, y S
sGydI = ΣxΣy (-tempY[xSb+x][ySb+y]*temp[xSb+x][ySb+y]) при x, y S
где S – набор выбранных позиций.
i) В одном примере выбранные позиции: x=0, 1, 2, 3, и y = 0, 1, 2, 3;
ii) В одном примере выбранные позиции: x=0, 2, и y = 0, 1, 2, 3;
iii) В одном примере выбранные позиции: x=1, 2, и y = 0, 1, 2, 3;
iv) В одном примере выбранные позиции: x=1, 3, и y = 0, 1, 2, 3;
v) В одном примере выбранные позиции: x=2, 3, и y = 0, 1, 2, 3;
vi) В одном примере выбранные позиции: x=0, 3, и y = 0, 1, 2, 3;
vii) В одном примере выбранные позиции: y=0, 2, и x = 0, 1, 2, 3;
viii) В одном примере выбранными позициями являются y=1, 2, и x = 0, 1, 2, 3;
ix) В одном примере выбранные позиции: y=1, 3, и x = 0, 1, 2, 3;
x) В одном примере выбранные позиции y=2, 3, и x = 0, 1, 2, 3;
xi) В одном примере выбранные позиции: y=0, 3, и x = 0, 1, 2, 3;
xii) В одном примере выбранные позиции: x=-1, 4, и y = -1, 0, 1, 2, 3, 4;
xiii) В одном примере выбранные позиции: x=0, 3, и y = -1, 0, 1, 2, 3, 4;
xiv) В одном примере выбранные позиции: x=1, 2, и y = -1, 0, 1, 2, 3, 4;
xv) В одном примере выбранные позиции: x=-1, 1, 3, и y = -1, 0, 1, 2, 3, 4;
xvi) В одном примере выбранные позиции: x=0, 2, 4, и y = -1, 0, 1, 2, 3, 4;
xvii) В одном примере выбранные позиции: x=-1, 1, 2, 4, и y = -1, 0, 1, 2, 3, 4;
xviii) В одном примере выбранные позиции: x=0, 1, 2, 3, и y = -1, 0, 1, 2, 3, 4;
xix) В одном примере выбранные позиции: y=-1, 4, и x = -1, 0, 1, 2, 3, 4;
xx) В одном примере выбранные позиции: y=0, 3, и x = -1, 0, 1, 2, 3, 4;
xxi) В одном примере выбранные позиции: y=1, 2, и x = -1, 0, 1, 2, 3, 4;
xxii) В одном примере выбранные позиции: y=-1, 1, 3, и x = -1, 0, 1, 2, 3, 4;
xxiii) В одном примере выбранные позиции: y=0, 2, 4, и x = -1, 0, 1, 2, 3, 4;
xxiv) В одном примере выбранные позиции: y=-1, 1, 2, 4, и x = -1, 0, 1, 2, 3, 4;
xxv) В одном примере выбранные позиции: y=0, 1, 2, 3, и x = -1, 0, 1, 2, 3, 4;
i. Операция деления, используемая для получения vx и vy, заменена более сложным способом.
i) В одном примере vx = sGx2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, -(sGxdI<<3)>>M): 0. M может быть равно Floor(Log2(sGx2)) или Ceiling(Log2(sGx2)), в зависимости от значения sGx2. Например, M равно Ceiling(Log2(sGx2)), если 3*sGx2 больше, чем 22*Floor(Log2(sGx2))+1, в иных случаях M равно Floor(Log2(sGx2)). В другом примере M равно Ceiling(Log2(sGx2)), если sGx2 больше T, в иных случаях M равно Floor(Log2(sGx2)). Например, T=(Floor(Log2(sGx2))+Ceiling(Log2(sGx2)))/2. В другом примере M равно Ceiling(Log2(sGx2)), если sGx2*sGx2 больше, чем 22*Floor(Log2(sGx2))+1, в иных случаях M равно Floor(Log2(sGx2)).
l) В качестве альтернативы, vx = sGx2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, -((sGxdI<<3)+Offset)>>M): 0. Смещение Offset является целым числом, например, 1<<(M-1).
a) Смещение может зависеть от sGx2.
ii) В одном примере vy = sGy2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, ((sGydI<<3) - ((vx*sGxGym)<<12 + vx*sGxGys)>>1)>>M : 0. M может быть равно Floor(Log2(sGy2)) или Ceiling(Log2(sGy2)), в зависимости от значения sGy2. Например, M равно Ceiling(Log2(sGy2)), если 3*sGy2 больше 22*Floor(Log2(sGy2))+1, в иных случаях M равно Floor(Log2(sGy2)). В другом примере M равно Ceiling(Log2(sGy2)), если sGy2 больше T, в иных случаях M равно Floor(Log2(sGy2)). Например, T=(Floor(Log2(sGy2))+Ceiling(Log2(sGy2)))/2. В другом примере M равно Ceiling(Log2(sGy2)), если sGy2*sGy2 больше 22*Floor(Log2(sGy2))+1, в иных случаях M равно Floor(Log2(sGy2)).
В качестве альтернативы, vy = sGy2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, (((sGydI<<3) - ((vx*sGxGym) <<12 + vx*sGxGys)>>1)+Offset)>>M : 0. Смещение Offset является целым числом, например, 1<<(М-1).
Смещение может зависеть от sGy2.
iii) sGxGym и sGxGys рассчитываются в зависимости от знака sGxGy. Предположим, что sign(x)=1, если x>=0, и sign(x)=- 1, если x <0, то sGxGym = sign(sGxGy) *|sGxGy|>>W; sGxGys = sign(sGxGy) *(| sGxGy| & ((1<<W)-1)).
1. W может быть фиксированным числом, например, 12, или может зависеть от битовой глубины выборки.
iv) Операция деления в процедуре BIO вычисляется с помощью справочной таблицы.
(i) Такая же справочная таблица также используется в CCLM для замены операции деления.
Пример 11. Решение о включении/выключении BIO на основе вычислений SAD всего блока и подблока может быть упрощено путем простого вычисления SAD подблока. В качестве альтернативы, вычисление SAD может быть заменено другими правилами, такими как MR-SAD.
Пример 12. Вычисление SAD в BIO выполняется только с выборками в выбранных позициях.
a) subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ]= ΣiΣj
Abs(predSamplesL0L[(xSbIdx<<2)+1+i][(ySbIdx<<2)+1+j] -
predSamplesL1L[(xSbIdx<<2)+1+i][ (ySbIdx<<2)+1+j]) при i, j S
где S – набор выбранных позиций.
i) В одном примере выбранные позиции: i=0, 2, и j=0, 1, 2, 3;
ii) В одном примере выбранные позиции: i=1, 2, и j=0, 1, 2, 3;
iii) В одном примере выбранные позиции: i=1, 3, и j=0, 1, 2, 3;
iv) В одном примере выбранные позиции: i=2, 3, и j=0, 1, 2, 3;
v) В одном примере выбранные позиции: i=0, 3, и j=0, 1, 2, 3;
vi) В одном примере выбранные позиции j=0, 2, и i=0, 1, 2, 3;
vii) В одном примере выбранные позиции j=1, 2, и i=0, 1, 2, 3;
viii) В одном примере выбранные позиции j=1, 3, и i=0, 1, 2, 3;
ix) В одном примере выбранные позиции j=2, 3, и i=0, 1, 2, 3;
x) В одном примере выбранные позиции j=0, 3, и i=0, 1, 2, 3;
xi) В одном примере выбранные позиции: i=0, 3, и j=0, 3;
xii) В одном примере выбранные позиции: i=1, 2, и j=1, 2;
b) В качестве альтернативы, subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ]= maxi, j Abs(predSamplesL0L[(xSbIdx<<2)+1+i][(ySbIdx<<2)+1+j] - predSamplesL1L[(xSbIdx<<2)+1+i][ (ySbIdx<<2)+1+j]) при i, j S
где S – набор выбранных позиций.
с) В качестве альтернативы, , subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ]= mini, j Abs(predSamplesL0L[(xSbIdx<<2)+1+i][(ySbIdx<<2)+1+j] - predSamplesL1L[(xSbIdx<<2)+1+i][ (ySbIdx<<2)+1+j]) при i, j S
где S – набор выбранных позиций.
d) Пороговое значение subCuLevelAbsDiffThres может быть адаптивным.
i) Это значение может зависеть от информации о кодировании, такой как расстояние QP и POC.
ii) Это значение может сигнализироваться из кодера в декодер в VPS/SPS/PPS/заголовке среза/заголовке группы тайлов/тайле/CTU/CU.
Пример 13. Вычисление SAD в BIO выполняется только с выборками в выбранных подблоках.
a) В качестве альтернативы, вычисление SAD для каждого подблока может дополнительно включать только часть выборок в пределах одного подблока.
b) cuLevelSumAbsoluteDiff = Σ xSbIdx Σ ySbIdx subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ] при xSbIdx, ySbIdx S
где S – набор выбранных подблоков.
i) В одном примере выбранные позиции: xSbIdx % 2 == 0;
ii) В одном примере выбранные позиции: xSbIdx % 2 == 1;
iii) В одном примере выбранные позиции: xSbIdx % 4 == 0;
iv) В одном примере выбранные позиции: xSbIdx == 0 или xSbIdx == (cbWidth>>2)-1;
v) В одном примере выбранные позиции: xSbIdy % 2 == 0;
vi) В одном примере выбранные позиции: xSbIdy % 2 == 1;
vii) В одном примере выбранные позиции: xSbIdy % 4 == 0;
viii) В одном примере выбранные позиции: xSbIdy == 0 или xSbIdy == (cbHeight>>2)-1;
ix) В одном примере выбранные позиции (xSbIdy == 0 или xSbIdy == (cbHeight>>2)−1) и (xSbIdy == 0 или xSbIdy == (cbHeight>>2)-1);
c) cuLevelSumAbsoluteDiff = Max xSbIdx, ySbIdx subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ] with xSbIdx, ySbIdx S
d) cuLevelSumAbsoluteDiff = Min xSbIdx, ySbIdx subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ] with xSbIdx, ySbIdx S
e) Пороговое значение cuLevelAbsDiffThres может быть адаптивным.
i) Это значение может зависеть от информации о кодировании, такой как расстояние QP и POC.
ii) Это значение может зависеть от режима кодирования, такого как режим AMVP, режим слияния или режим MMVD (слияние с разницей MV).
iii) Это значение можно сигнализировать из кодера в декодер в VPS/SPS/PPS/заголовке среза/заголовке группы тайлов/тайле/CTU/CU.
Пример 14. Для примеров 12 и 13 предложенные способы также могут быть применимы к другим случаям, когда SAD заменяется другими правилами. То есть только часть выборок в одном подблоке и/или часть подблоков может рассматриваться для принятия решения об использовании BIO.
Пример 15. То, как получить переменные в процедуре BIO, может быть разным тогда, когда применяется или нет GBi.
a) Кроме того, в качестве альтернативы, получение может быть разным для GBi с разными значениями весовых коэффициентов.
b) Предположим, что значениями весовых коэффициентов являются W0 и W1 для Ref0 и Ref1 в процессе GBi, то блоки предсказания сначала взвешиваются перед получением переменных, используемых в процедуре BIO, таких как вычисление SAD, вычисление градиента.
i) Обозначенные два блока предсказания predSamplesL0[x][y] и predSamplesL1[x][y]. W0* predSamplesL0[x][y] и predSamplesL1[x][y] и W1* predSamplesL1[x][y] используются в качестве входных данных для BIO.
c) В качестве альтернативы, predSamplesL0[x][y] предварительно вычисляется как Shift(W0* predSamplesL0[x][y], S0), и predSamplesL1[x][y] предварительно вычисляется как Shift(W1* predSamplesL1[x][y], S1) перед получением переменных, используемых в процедуре BIO.
i) S0 и S1 могут зависеть от битовой глубины выборки.
ii) S0 и S1 могут зависеть от W0 и W1.
iii) S0 и S1 могут быть фиксированными числами, например, 2.
d) В качестве альтернативы, значения поправочного члена также могут быть взвешены при выработке окончательного блока предсказания одного блока.
i) При получении параметров, используемых в процедуре BIO, два блока предсказания без взвешивания используются в качестве входных данных для BIO как в предшествующем уровне техники. Однако блоки окончательного предсказания вырабатываются с помощью взвешенных значений блоков предсказания и взвешенных значений поправочного члена.
ii) Весовые коэффициенты, применяемые к поправочному члену, могут быть такими же, как и весовые коэффициенты, используемые для блоков предсказания. В качестве альтернативы, к поправочному члену могут быть применены другие весовые коэффициенты.
Пример 16. Предлагается, чтобы значение поправочного члена находилось в определенном диапазоне.
(a) Например, элемент коррекции обрезается до [minCorrection, maxCorrection].
i) minCorrection и maxCorrection могут иметь фиксированные значения, например, -32 и 32;
ii) minCorrection и maxCorrection могут зависеть от битовой глубины выборки. Например, minCorrection = -(32<<(BitDepth-8)), maxCorrection = 32<<(BitDepth-8)).
iii) minCorrection и maxCorrection могут зависеть от ширины и/или высоты блока.
iv) minCorrection и maxCorrection могут передаваться из кодера в декодер в VPS/SPS/PPS/заголовке среза/заголовке группы тайлов/тайле/строке CTU/CTU/CU.
(b) Например, элемент коррекции делится на коэффициент или сдвигается вправо, если он выходит за пределы диапазона.
Пример 17. Предлагается, чтобы окончательный результат предсказания в BIO находился в определенном диапазоне.
(a) Например, окончательный результат предсказания в BIO ограничен до [minPred, maxPred].
i) minPred и maxPred могут быть фиксированными числами, такими как -32 и 32;
ii) minPred и maxPred могут зависеть от битовой глубины выборки. Например, minPred=-(32<<(BitDepth-8)), maxCorrection=32<<(BitDepth-8)).
iii) minPred и maxPred могут зависеть от ширины и/или высоты блока.
iv) minPred и maxPred могут сигнализироваться из кодера в декодер в VPS/SPS/PPS/заголовке среза/заголовке группы тайлов/тайле/строке CTU/CTU/CU.
Примеры, описанные выше, могут быть включены в контекст способа, описанного ниже, например, способов 2810, 2820, 2830, 2840, 2850 и 2860, который может быть реализован в видеодекодере или видеокодере.
На фиг.28A показана блок-схема примерного способа обработки видео. Способ 2810 включает в себя, на этапе 2812, определение относительно того, чтобы использовать, для преобразования между текущим блоком видео и представлением битового потока видео, первую модель линейной оптимизации для преобразования с использованием первого режима кодирования, причем первая модель линейной оптимизации получается из второй модели линейной оптимизации, которая используется для преобразования с использованием второго режима кодирования.
Способ 2810 включает в себя, на этапе 2814, выполнение, на основе определения, преобразования.
На фиг.28B показана блок-схема последовательности операций примерного способа обработки видео. Способ 2820 включает в себя, на этапе 2822, включение, на основе одного или более параметров отсчетов последовательности изображения (РОС), ассоциированных с изображением текущего блока видео, либо первого режима предсказания, либо второго режима предсказания, который отличается от первого режима предсказания, причем первым режимом предсказания является режим кодирования с использованием оптического потока.
Способ 2820 включает в себя, на этапе 2824, выполнение, на основе первого режима или второго режима, преобразования между текущим блоком и представлением битового потока видео.
На фиг.28C показана блок-схема последовательности операций примерного способа обработки видео. Способ 2830 включает в себя, на этапе 2832, последовательное получение, на основе кодированной информации, ассоциированной с текущим блоком видео, одного или более векторов (vx, vy) скорости, ассоциированных с опорным изображением текущего блока.
Способ 2830 включает в себя, на этапе 2834, выполнение, на основе одного или более векторов скорости, преобразования между текущим блоком и представлением битового потока видео, причем кодированная информация содержит значение горизонтальной составляющей вектора движения текущего блока, значение вертикальной составляющей вектора движения текущего блока или размер текущего блока.
На фиг.28D показана блок-схема примерного способа обработки видео. Способ 2840 включает в себя, на этапе 2842, выполнение, после определения того, что режим кодирования с использованием оптического потока был включен для текущего блока видео, операции фильтрации с использованием интерполяционного фильтра одного типа для каждого цветового компонента текущего блока.
Способ 2840 включает в себя, на этапе 2844, выполнение, на основе операции фильтрации, преобразования между текущим блоком и представлением битового потока видео.
На фиг.28E показана блок-схема примерного способа обработки видео. Способ 2850 включает в себя, на этапе 2852, определение относительно того, чтобы использовать, для преобразования между текущим блоком видео и представлением битового потока видео, алгоритм вычисления значения градиента для инструмента оптического потока.
Способ 2850 включает в себя, на этапе 2854, выполнение, на основе определения, преобразования.
На фиг.28F показана блок-схема последовательности операций примерного способа обработки видео. Способ 2860 включает в себя, на этапе 2862, принятие решения, на основе одного или более вычислений суммы абсолютных разностей (SAD) для подблока текущего блока видео, относительно выборочного включения режима кодирования с использованием оптического потока для текущего блока.
Способ 2860 включает в себя, на этапе 2864, выполнение, на основе решения, преобразования между текущим блоком и представлением битового потока текущего блока.
На фиг.28G показана блок-схема последовательности операций примерного способа обработки видео. Способ 2870 включает в себя, на этапе 2872, получение, на основе выборочного включения процесса обобщенного би-предсказания (GBi) для текущего блока видео, одного или более параметров режима кодирования с использованием оптического потока для текущего блока.
Способ 2870 включает в себя, на этапе 2874, выполнение, на основе одного или более параметров кодирования режима с использованием оптического потока, преобразования между текущим блоком и представлением битового потока видео.
На фиг.28H показана блок-схема примерного способа обработки видео. Способ 2880 включает в себя, на этапе 2882, выполнение, для текущего блока видео, кодированного с помощью режима кодирования с использованием оптического потока, операции ограничения над поправочным членом окончательного результата предсказания режима кодирования с использованием оптического потока.
Способ 2880 включает в себя, на этапе 2884, выполнение, на основе окончательного результата предсказания, преобразования между текущим блоком и представлением битового потока видео.
На фиг.28I показана блок-схема примерного способа обработки видео. Способ 2890 включает в себя, на этапе 2892, выполнение, после определения того, что режим кодирования с использованием оптического потока был включен для текущего блока видео, операции фильтрации с использованием интерполяционного фильтра одного типа для каждого цветового компонента текущего блока.
Способ 2890 включает в себя, на этапе 2894, выполнение, после определения того, что по меньшей мере одна выборка текущего блока находится за пределами заданного диапазона, операции заполнения.
Способ 2890 включает в себя, на этапе 2896, выполнение, на основе операции фильтрации и операции заполнения, преобразования между текущим блоком и представлением битового потока видео.
В некоторых вариантах реализации могут быть реализованы следующие технические решения:
А1. Способ обработки видео, содержащий: определение относительно того, чтобы использовать, для преобразования между текущим блоком видео и представлением битового потока видео, первую модель линейной оптимизации для преобразования с использованием первого режима кодирования, причем первая модель линейной оптимизации получается из второй модели линейной оптимизации, которая используется для преобразования с использованием второго режима кодирования; и выполнение, на основе определения, преобразования.
A2. Способ согласно решению A1, в котором вторым режимом кодирования является режим предсказания двунаправленного оптического потока (BDOF).
А3. Способ согласно решению А2, в котором вторая модель линейной оптимизации содержит N групп выборок (uk, vk, wk) в качестве входного и двух выходных параметров a и b, и в котором вторая модель линейной оптимизации минимизирует или приблизительно минимизирует
.
А4. Способ согласно решению A3, в котором , , , , и , где представляет собой выборку яркости в местоположении пикселя в опорном кадре i, и где и представляют собой горизонтальный градиент и вертикальный градиент выборки яркости, соответственно.
А5. Способ согласно решению A3, в котором , , , , и , где представляет собой верхнюю и левую соседнюю восстановленную выборку цветности, представляет собой верхнюю и левую соседнюю восстановленную выборку яркости, и α и β представляют собой параметры второй модели линейной оптимизации.
A6. Способ согласно решению A1, в котором вторым режимом кодирования является режим предсказания межкомпонентной линейной модели.
А7. Способ обработки видео, содержащий: включение, на основе одного или более параметров подсчета последовательности изображений (POC), ассоциированных с изображением текущего блока видео, либо первого режима предсказания, либо второго режима предсказания, который отличается от первого режима предсказания, причем первым режимом предсказания является режим кодирования с использованием оптического потока; и выполнение, на основе первого режима или второго режима, преобразования между текущим блоком и представлением битового потока видео.
А8. Способ согласно решению А7, дополнительно содержащий: воздержание от включения режима кодирования с использованием оптического потока, в котором первое опорное изображение () и второе опорное изображение () ассоциируются с текущим изображением, содержащим текущий блок, в котором представляет собой разницу между отсчетом последовательности изображения текущего изображения и отсчетом последовательности изображения первого опорного изображения (), и в котором представляет собой разницу между отсчетом последовательности изображения второго опорного изображения и отсчетом последовательности изображения текущего кадра ().
A9. Способ согласно решению A8, в котором или , где T0 и T1 являются целыми числами.
A10. Способ согласно решению A8, в котором и , где T0 и T1 являются целыми числами.
A11. Способ согласно решению A9 или A10, в котором T0 = T1 = 4.
A12. Способ согласно решению A8, в котором , где T0 является целым числом.
A13. Способ согласно решению A12, в котором T0 = 8.
A14. Способ согласно решению A8, в котором T0 является целым числом.
A15. Способ согласно решению A14, в котором T0 = 0.
A16. Способ согласно решению A8, в котором и , где T0 является целым числом.
A17. Способ согласно решению A16, в котором T0 = 8.
A18. Способ согласно любому из решений A9-A17, в котором T0 сигнализируется в наборе параметров видео (VPS), наборе параметров последовательности (SPS), наборе параметров изображения (PPS), заголовке среза, заголовке группы тайлов/тайле, единице кодирования (CU) или блоке дерева кодирования (CTU).
A19. Способ согласно решению A7, в котором включен режим кодирования с использованием оптического потока, в котором один или более векторов (, ) скорости для текущего изображения, содержащего текущий блок, основаны на одном или более расстояниях POC, и в котором первое опорное изображение () и второе опорное изображение () связаны с текущим изображением.
А20. Способ согласно решению A19, в котором разница между отсчетом последовательности изображения текущего изображения и отсчетом последовательности изображения первого опорного изображения (), где разница между отсчетом последовательности изображения второго опорного изображения и отсчетом последовательности изображения текущего изображения (), при этом
где – векторы скоростей для первого опорного изображения, и – векторы скоростей для второго опорного изображения.
A21. Способ согласно решению A19, в котором один или более векторов скорости получаются итеративным образом.
A22. Способ согласно решению A19, в котором один или более векторов скорости основаны на третьем режиме предсказания, и третий режим предсказания представляет собой DMVR или двустороннее согласование.
A23. Способ согласно решению A22, в котором MV0 и MV1 представляют собой векторы движения для первого и второго опорных изображений, соответственно, и MV0’ и MV1’ представляют собой начальные векторы движения для третьего режима предсказания.
A24. Способ согласно решению A23, в котором MV0' = MV0 + (vx, vy) и MV1' = MV1 − (vx, vy).
A25. Способ согласно решению A23, в котором MV0' = MV0 − (vx, vy) и MV1' = MV1 + (vx, vy).
A26. Способ согласно решению A7, в котором режим кодирования с использованием оптического потока включен и применяется к поднабору выборок текущего блока, причем поднабор выборок исключает все выборки текущего блока.
A27. Способ согласно решению A26, в котором поднабор выборок исключает выборки в первой строке, последней строке, первом столбце или последнем столбце текущего блока.
A28. Способ согласно решению A7, в котором режим кодирования с использованием оптического потока включен и применяется к поднабору выборок подблока текущего блока, причем поднабор выборок не эквивалентен всем выборкам подблока текущего блока.
A29. Способ согласно решению A28, в котором поднабор выборок исключает выборки в первой строке, последней строке, первом столбце или последнем столбце подблока текущего блока.
A30. Способ согласно любому из решений A1-A29, в котором режимом кодирования с использованием оптического потока является режим предсказания двунаправленного оптического потока (BDOF).
A31. Способ обработки видео, содержащий: последовательное получение, на основе кодированной информации, ассоциированной с текущим блоком видео, одного или более векторов (, ) скорости, ассоциированных с опорным изображением текущего блока; и выполнение, на основе одного или более векторов скорости, преобразования между текущим блоком и представлением битового потока видео, причем кодированная информация содержит значение горизонтальной составляющей вектора движения текущего блока, значение вертикальной составляющей вектора движения текущего блока или размер текущего блока.
A32. Способ согласно решению А31, в котором получается первым, и получается на основе значения .
А33. Способ согласно решению А31, дополнительно содержащий: уточнение, на основе одного или более векторов скорости, по меньшей мере одного предсказания или по меньшей мере одного градиента опорного изображения; и получение, после уточнения, одного или более векторов скорости на основе опорного изображения.
A34. Способ согласно решению A33, в котором уточнение и получение выполняются несколько раз до тех пор, пока разница между последовательными значениями одного из одного или более векторов скорости не станет меньше заданного порога.
A35. Способ согласно любому из решений A1-A34, в котором преобразование вырабатывает текущий блок из представления битового потока.
A36. Способ согласно любому из решений A1-A34, в котором преобразование вырабатывает представление битового потока из текущего блока.
A37. Устройство в видеосистеме, содержащее процессор и энергонезависимую память с инструкциями на ней, причем инструкции после их исполнения процессором предписывают процессору реализовать способ в любом из решений A1-A36.
A38. Компьютерный программный продукт, хранящийся на энергонезависимом машиночитаемом носителе информации, причем компьютерный программный продукт включает в себя программный код для выполнения способа в любом из решений A1-A36.
В некоторых вариантах реализации могут быть реализованы следующие технические решения:
B1. Способ обработки видео, содержащий: выполнение, после определения того, что режим кодирования с использованием оптического потока был включен для текущего блока видео, операции фильтрации с использованием одного типа интерполяционного фильтра для каждого цветового компонента текущего блока; и выполнение, на основе операции фильтрации, преобразования между текущим блоком и представлением битового потока видео.
B2. Способ согласно решению B1, в котором цветовой компонент содержит компонент яркости, и интерполяционный фильтр одного типа содержит 8-отводный интерполяционный фильтр.
B3. Способ согласно решению B1, в котором первое количество выборок текущего блока, используемое в операции фильтрации, меньше, чем второе количество выборок, требуемых для интерполяционного фильтра одного типа, за счет чего уменьшается пропускная способность памяти для операции фильтрации.
B4. Способ согласно решению B3, в котором второе количество выборок равно количеству выборок текущего блока, используемого в операции фильтрации в случае, когда не применяется режим кодирования с использованием оптического потока.
B5. Способ согласно решению B1, в котором ряд выборок текущего блока используется в операции фильтрации, причем способ дополнительно содержит: выполнение операции заполнения после определения того, что применяется режим кодирования с использованием оптического потока.
B6. Способ согласно решению B1, в котором размер текущего блока составляет M×N, первое количество выборок, необходимых для вычисления градиента, равно (M+G)×(N+G), интерполяционный фильтр одного типа содержит L отводов, второе количество выборок, необходимое для операции фильтрации, равно (M+G+L−1)×(N+G+L−1), третье количество выборок, используемых в операции фильтрации, равно (M+L−1+k)×(N+L−1+k), где M, N, G и L являются положительными целыми числами, k является целым числом меньше G, и заполняется четвертое количество выборок, содержащих разность между вторым количеством выборок и третьим количеством выборок.
B7. Способ согласно решению B6, в котором M = N = 8, L = 8 и G = 2.
B8. Способ согласно решению B6 или B7, где k = 0 или k = 1.
B9. Способ согласно решению B1, в котором верхний левый пиксель текущего блока имеет координаты (0,0), причем способ дополнительно содержит: воздержание от вычисления значения градиента и применение режима кодирования с использованием оптического потока к пикселю в заданной позиции.
B10. Способ согласно решению B9, в котором координата x заданной позиции равна -1 или W, где W – ширина текущего блока, и W – положительное целое число.
B11. Способ согласно решению B9, в котором координата y заданной позиции равна -1 или H, где H – высота текущего блока, и H – положительное целое число.
B12. Способ согласно решению B1, в котором верхний левый пиксель текущего блока имеет координаты (0,0), причем способ дополнительно содержит: модификацию вычисления значения градиента для пикселя в заданной позиции.
B13. Способ согласно решению B12, в котором координата x заданной позиции равна -1 или W, где W – ширина текущего блока, и W – положительное целое число.
B14. Способ согласно решению B12, в котором координата y заданной позиции равна -1 или H, где H – высота текущего блока, и H – положительное целое число.
B15. Способ согласно решению B13 или B14, в котором вычисление значения градиента содержит:
где W – ширина текущего блока, predSampleL0 – массив, содержащий выборки предсказания яркости для текущего блока из списка опорных изображений L0, gradientHL0 – горизонтальная составляющая значения градиента, полученная из списка опорных изображений L0, и hx и vy – целочисленные индексы координат.
B16. Способ согласно решению B13 или B14, в котором вычисление значения градиента содержит:
где W – ширина текущего блока, predSampleL0 – массив, содержащий выборки предсказания яркости из текущего блока, градиент VL0 – вертикальная составляющая значения градиента, полученная из списка опорных изображений L0, и hx и vy – целочисленные индексы координат.
B17. Способ согласно решению B1, дополнительно содержащий: заполнение, перед вычислением значения градиента, одной или более внешних выборок текущего блока вместо интерполяции одной или более внешних выборок.
B18. Способ согласно решению B1, в котором одно или более вычислений градиента, используемых в режиме кодирования с оптическим потоком, идентичны тем, которые используются в фильтре адаптивного контура (ALF).
B19. Способ обработки видео, содержащий: выполнение, после определения того, что режим кодирования с использованием оптического потока был включен для текущего блока видео, операции фильтрации с использованием интерполяционного фильтра одного типа для каждого цветового компонента текущего блока; выполнение, после определения того, что по меньшей мере одна выборка текущего блока находится за пределами заданного диапазона, операции заполнения; и выполнение, на основе операции фильтрации и операции заполнения, преобразования между текущим блоком и представлением битового потока видео.
B20. Способ согласно решению B19, в котором операция заполнения выполняется до выполнения вычисления градиента.
B21. Способ согласно решению B19, в котором заданный диапазон основан на высоте или ширине текущего блока.
B22. Способ согласно любому из решений B1-B21, в котором режим кодирования с использованием оптического потока содержит режим предсказания двунаправленного оптического потока (BDOF).
В23. Способ согласно любому из решений B1-B22, в котором преобразование вырабатывает текущий блок из представления битового потока.
В24. Способ согласно любому из решений B1-B22, в котором преобразование вырабатывает представление битового потока из текущего блока.
В25. Устройство в видеосистеме, содержащее процессор и энергонезависимую память с инструкциями на ней, причем инструкции после их исполнения процессором предписывают процессору реализовать способ в любом из решений B1-B24.
В26. Компьютерный программный продукт, хранящийся на энергонезависимом машиночитаемом носителе информации, причем компьютерный программный продукт включает в себя программный код для выполнения способа в любом из решений B1-B24.
В некоторых вариантах реализации могут быть реализованы следующие технические решения:
C1. Способ обработки видео, содержащий: определение относительно того, чтобы использовать, для преобразования между текущим блоком видео и представлением битового потока видео, алгоритм вычисления значения градиента для инструмента оптического потока; и выполнение, на основе определения преобразования, причем алгоритм вычисления значения градиента отличается от унаследованного алгоритма вычисления значения градиента, который содержит:
gradientHL0[x][y] = (predSampleL0[hx+1][vy]–predSampleL0[hx−1][vy]) >> 4,
gradientVL0[x][y] = (predSampleL0[hx][vy+1]–predSampleL0[hx][vy-1]) >> 4,
gradientHL1[x][y] = (predSampleL1[hx+1][vy]–predSampleL1[hx-1][vy]) >> 4 и
gradientVL1[x][y] = (predSampleL1[hx][vy+1]–predSampleL1[hx][vy−1]) >> 4,
где gradientHL0 – горизонтальная составляющая значения градиента, полученная из списка опорных изображений L0, gradientVL0 – вертикальная составляющая значения градиента, полученная из списка опорных изображений L0, gradientHL1 – горизонтальная составляющая значения градиента, полученная из списка опорных изображений L1, gradientVL1 – вертикальная составляющая значения градиента, полученная из списка опорных изображений L1, predSampleL0 – массив, содержащий выборки предсказания яркости для текущего блока из списка опорных изображений L0, predSampleL1 – массив, содержащий выборки предсказания яркости для текущего блока из списка опорных изображений L1, и hx и vy – целочисленные индексы координат.
C2. Способ согласно решению C1, в котором модификация вычисления значения градиента содержит сдвиг значения градиента на заданное положительное целое число (S), и где S ≠ 4.
C3. Способ согласно решению C2, в котором S = 6.
C4. Способ согласно решению C2, в котором S=B-P, где B – битовая глубина выборки текущего блока, и P – положительное целое число.
C5. Способ согласно решению C4, в котором P=6, и B=8 или 12.
C6. Способ согласно решению C1, в котором модификация вычисления значения градиента содержит ограничение значения градиента, поэтому значение градиента может быть представлено как K-битовое целое число, и где K – положительное целое число.
C7. Способ согласно решению C6, в котором K = 8 или 16.
C8. Способ согласно решению C1, в котором алгоритм вычисления значения градиента для инструмента оптического потока содержит вычисление первой внутренней переменной (temp), второй внутренней переменной (tempX) и третьей внутренней переменной (tempY), и в котором вычисление определяется как:
temp[x][y] = SignShift(predSampleL0[hx][vy] – predSampleL1[hx][vy], S1),
tempX[x][y] = SignShift(gradientHL0[x][y] + gradientHL1[x][y], S2), и
tempY[x][y] = SignShift(gradientVL0[x][y] + gradientVL1[x][y], S3),
где S1, S2 и S3 являются целыми числами, и где SignShift(x, s) определяется как:
и
где – целое число.
C9. Способ согласно решению C8, в котором S1 = 6, и S2 = S3 = 3.
C10. Способ согласно решению C8, в котором S1, S2 и S3 основаны на битовой глубине выборки текущего блока (B).
C11. Способ согласно решению C10, в котором S1 = B − P1, S2 = B − P2 и S3 = B − P3, где P1, P2 и P3 – целые числа.
C12. Способ согласно решению C11, в котором B = 8, 10 или 12, и где P1 = 4, и P2 = P3 = 7.
C13. Способ согласно решению C1, в котором алгоритм вычисления значения градиента для инструмента оптического потока содержит вычисление первой внутренней переменной (temp), второй внутренней переменной (tempX) и третьей внутренней переменной (tempY), которые могут быть представлены K1-битовым целым числом, K2-битовым целым числом и K3-битовым целым числом, соответственно, и где K1, K2 и K3 являются положительными целыми числами.
C14. Способ согласно решению C13, в котором K1 = 8 или 16, K2 = 8 или 16, и K3 = 8 или 16.
C15. Способ согласно решению C13 или C14, в котором за вычислением temp, tempX и tempY следует операция ограничения, определяемая как:
temp[x][y] = Clip3(−2K1−1, 2K1−1−1, gradientHL0[x][y]),
tempX[x][y] = Clip3(−2K2−1, 2K2−1−1, gradientVL0[x][y]), и
tempY[x][y] = Clip3(−2K3−1, 2K3−1−1, gradientHL1[x][y]),
где Clip3(x, min, max) определяется как:
C16. Способ согласно решению C1, в котором алгоритм вычисления значения градиента для инструмента оптического потока содержит вычисление множества внутренних переменных, содержащих sGx2, sGy2, sGxGy, sGxdI и sGydI, которые могут быть представлены K1-битовым целым числом, K2-битовым целым числом, K3-битовым целым числом, K4-битовым целым числом и K5-битовым целым числом, соответственно, и где K1, K2, K3, K4 и K5 являются положительными целыми числами.
C17. Способ согласно решению C16, в котором K1 = 8 или 16, K2 = 8 или 16, K3 = 8 или 16, K4 = 8 или 16 и K5 = 8 или 16.
C18. Способ согласно решению C16 и C17, в котором за вычислением sGx2, sGy2, sGxGy, sGxdI и sGydI следует операция сдвига, определяемая как:
sGx2 = Shift(sGx2, S1),
sGy2 = Shift(sGy2, S2),
sGxGy = SignShift(sGxGy, S3),
sGxdI = SignShift(sGxdI, S4) и
sGydI = SignShift(sGydI, S5),
где S1, S2, S3, S4 и S5 – положительные целые числа, , и где SignShift(x, s) определяется как:
и
где – целое число.
C19. Способ согласно решению C18, в котором S1, S2, S3, S4 и S5 равны 4 или 5.
C20. Способ согласно решению C18, в котором S1, S2, S3, S4 и S5 основаны на битовой глубине выборки текущего блока (B).
C21. Способ согласно решению C8, в котором S1 = B − P1, S2 = B − P2, S3 = B − P3, S4 = B − P4 и S5 = B − P5, где P1, P2, P3, P4 и P5 – целые числа.
C22. Способ согласно решению C21, в котором B = 8, 10 или 12.
C23. Способ согласно решению C16 и C17, в котором за вычислением sGx2, sGy2, sGxGy, sGxdI и sGydI следует операция ограничения, определяемая как:
sGx2 = Clip3(0, 2K1−1, sGx2),
sGy2 = Clip3(0, 2K2−1, sGy2),
sGxGy = Clip3(−2K3−1, 2K3−1−1, sGxGy),
sGxdI = Clip3(−2K4−1, 2K4−1−1, sGxdI), и
sGydI = Clip3(−2K5−1, 2K5−1−1, sGydI),
где Clip3(x, min, max) определяется как:
C24. Способ согласно любому из решений C1-C23, в котором инструмент оптического потока содержит инструмент двунаправленного оптического потока (BDOF).
C25. Способ обработки видео, содержащий: принятие решения, на основе одного или более вычислений суммы абсолютной разности (SAD) для подблока текущего блока видео, относительно выборочного включения режима кодирования с использованием оптического потока для текущего блока; и выполнение, на основе принятого решения, преобразования между текущим блоком и представлением битового потока текущего блока.
C26. Способ согласно решению C25, в котором вычисления SAD содержат вычисления суммы удаленных средних абсолютных разностей (MR-SAD).
C27. Способ согласно решению C25 или C26, в котором вычисления SAD выполняются для выборок в заданных местоположениях в текущем блоке.
C28. Способ согласно решению C25 или C26, в котором вычисления SAD выполняются для выборок в заданных местоположениях в подблоке текущего блока.
C29. Способ обработки видеосигнала, содержащий: получение, на основе выборочного включения процесса обобщенного би-предсказания (GBi) для текущего блока видео, одного или более параметров режима кодирования с использованием оптического потока для текущего блока; и выполнение, на основе одного или более параметров режима предсказания BDOF, преобразования между текущим блоком и представлением битового потока видео.
C30. Способ обработки видео, содержащий: выполнение, для текущего блока видео, кодированного с использованием оптического потока, операции ограничения над членом коррекции окончательного результата предсказания режима кодирования с использованием оптического потока; и выполнение, на основе окончательного результата предсказания, преобразования между текущим блоком и представлением битового потока видео.
C31. Способ согласно решению C30, в котором поправочный член ограничивается до диапазона [minCorrection, maxCorrection], где minCorrection и maxCorrection являются целыми числами.
C32. Способ согласно решению C31, в котором minCorrection = −32 и maxCorrection = 32.
C33. Способ согласно решению C31, в котором minCorrection и maxCorrection основаны на битовой глубине выборки.
C34. Способ согласно решению C31, в котором minCorrection и maxCorrection основаны на высоте или ширине текущего видеоблока.
C35. Способ согласно решению C31, в котором minCorrection и maxCorrection сигнализируются в наборе параметров видео (VPS), наборе параметров последовательности (SPS), наборе параметров изображения (PPS), заголовке среза, заголовке группы тайлов, тайле, единице кодирования (CU) или единице дерева кодирования (CTU).
C36. Способ согласно решению C30, в котором окончательный результат предсказания ограничивается до диапазона [minPred, maxPred], где minPred и maxPred являются целыми числами.
C37. Способ согласно решению C36, в котором minPred = −32 и maxPred = 32.
C38. Способ согласно решению C36, в котором midPred и maxPred основаны на битовой глубине выборки.
C39. Способ согласно решению C36, в котором midPred и maxPred основаны на высоте или ширине текущего видеоблока.
C40. Способ согласно решению C36, в котором midPred и maxPred сигнализируются в наборе параметров видео (VPS), наборе параметров последовательности (SPS), наборе параметров изображения (PPS), заголовке среза, заголовке группы тайлов, тайле, единице кодирования (CU) или блоке дерева кодирования (CTU).
C41. Способ согласно любому из решений C30-C40, в котором поправочный член содержит полученное смещение предсказания для выборки на основе режима кодирования с использованием оптического потока.
C42. Способ согласно любому из решений C25-C41, в котором режим кодирования с использованием оптического потока содержит режим предсказания двунаправленного оптического потока (BDOF).
C43. Способ согласно любому из решений C1-C42, в котором преобразование вырабатывает текущий блок из представления битового потока.
С44. Способ согласно любому из решений C1-C42, в котором преобразование вырабатывает представление битового потока из текущего блока.
С45. Устройство в видеосистеме, содержащее процессор и энергонезависимую память с инструкциями на ней, причем инструкции при их исполнении процессором предписывают процессору реализовать способ в любом из решений C1-C44.
С46. Компьютерный программный продукт, хранящийся на энергонезависимом машиночитаемом носителе информации, причем компьютерный программный продукт включает в себя программный код для выполнения способа в любом из решений C1-C44.
6. Примеры реализации раскрытой технологии
На фиг.29 показана блок-схема устройства 2900 обработки видео. Устройство 2900 можно использовать для реализации одного или более способов, описанных в данном документе. Устройство 2900 может быть воплощено в смартфоне, планшетном компьютере, компьютере, приемнике Интернета вещей (IoT) и т.д. Устройство 2900 может включать в себя один или более процессоров 2902, один или более устройств 2904 памяти и аппаратные средства 2906 обработки видео. Процессор(ы) 2902 может быть выполнен с возможностью реализации одного или более способов (включая, но не ограничиваясь, способ 2800), описанных в настоящем документе. Память (устройств памяти) 2904 может быть использована для хранения данных и кода, используемых для реализации способов и технологий, описанных в данном документе. Аппаратные средства 2906 обработки видео может использоваться для реализации в аппаратных схемах некоторых способов, описанных в данном документе.
В некоторых вариантах осуществления способы кодирования видео могут быть реализованы с использованием аппаратного устройства, которое реализовано на аппаратной платформе, как описано со ссылкой на фиг.29.
Некоторые варианты осуществления раскрытой технологии включают в себя принятие решения или определение включения инструмента или режима обработки видео. В одном примере, когда включены инструмент или режим обработки видео, кодер будет использовать или реализовывать инструмент или режим при обработке блока видео, но необязательно может модифицировать результирующий битовый поток на основе использования инструмента или режима. То есть преобразование из блока видео в представление битового потока видео будет использовать инструмент или режим обработки видео, когда он включен на основе решения или определения. В другом примере, когда инструмент или режим обработки видео включены, декодер будет обрабатывать битовый поток, зная, что битовый поток был модифицирован на основе инструмента или режима обработки видео. То есть преобразование из представления битового потока видео в блок видео будет выполняться с использованием инструмента обработки видео или режима, который был включен на основе решения или определения.
Некоторые варианты осуществления раскрытой технологии включают в себя принятие решения или определение отключить инструмент или режим обработки видео. В одном примере, когда инструмент или режим обработки видео отключены, кодер не будет использовать инструмент или режим при преобразовании блока видео в представление битового потока видео. В другом примере, когда инструмент или режим обработки видео отключены, декодер будет обрабатывать битовый поток, зная, что битовый поток не был модифицирован с использованием инструмента или режима обработки видео, которые были включены на основе решения или определения.
На фиг.30 показана блок-схема примерной системы 3000 обработки видео, в которой могут быть реализованы различные способы, раскрытые в данном документе. Различные реализации могут включать в себя некоторые или все компоненты системы 3000. Система 3000 может включать в себя вход 3002 для приема видеосодержания. Видеосодержание может приниматься в необработанном или несжатом формате, например, с 8- или 10-битовыми значениями многокомпонентных пикселей, или может находиться в сжатом или кодированном формате. Вход 3002 может представлять сетевой интерфейс, интерфейс периферийной шины или интерфейс хранения. Примеры сетевого интерфейса включают в себя проводные интерфейсы, такие как Ethernet, пассивную оптическую сеть (PON) и т.д., и беспроводные интерфейсы, такие как Wi-Fi или сотовые интерфейсы.
Система 3000 может включать в себя компонент 3004 кодирования, который может реализовывать различные способы кодирования или кодировки, описанные в настоящем документе. Компонент 3004 кодирования может снизить среднюю скорость передачи битов видео от входа 3002 к выходу компонента 3004 кодирования, чтобы создать кодированное представление видео. Поэтому технологии кодирования иногда называют технологиями сжатия видео или перекодирования видео. Выходные данные компонента 3004 кодирования могут быть либо сохранены, либо переданы через соединение, подключенное таким образом, как представлено компонентом 3006. Сохраненное или переданное (или кодированное) представление битового потока видео, принятого на входе 3002, может использоваться компонентом 3008 для выработки значений пикселей или отображаемого видео, которое отправляется в интерфейс 3010 дисплея. Процесс выработки видео, доступного для просмотра пользователем, из представления битового потока иногда называется декомпрессией видео. Кроме того, хотя определенные операции обработки видео называются операциями или инструментами "кодирования", следует понимать, что инструменты или операции кодирования используются в кодере, и соответствующие инструменты или операции декодирования, которые обращают результаты кодирования, будут выполняться с помощью декодера.
Примеры интерфейса периферийной шины или интерфейса дисплея могут включать в себя универсальную последовательную шину (USB), мультимедийный интерфейс высокого разрешения (HDMI) или дисплейный порт (Displayport) и т.д. Примеры интерфейсов хранения включают в себя интерфейс последовательного подключения по передовым технологиям (SATA), интерфейс PCI, интерфейс IDE и т.п. Технологии, описанные в настоящем документе, могут быть воплощены в различных электронных устройствах, таких как мобильные телефоны, ноутбуки, смартфоны или другие устройства, которые способны выполнять обработку цифровых данных и/или отображение видео.
Из вышеизложенного следует понимать, что конкретные варианты осуществления раскрытой в настоящее время технологии были описаны в данном документе для целей иллюстрации, но при этом различные модификации могут быть выполнены без отклонения от объема изобретения. Соответственно, раскрытая в настоящее время технология не ограничивается, за исключением прилагаемой формулы изобретения.
Реализации предмета изобретения и функциональные операции, описанные в данном патентном документе, могут быть реализованы в виде различных систем, цифровых электронных схем или в виде компьютерного программного обеспечения, программно-аппаратных средств или аппаратных средств, включая структуры, раскрытые в настоящем описании, и их структурные эквиваленты, или в комбинации с одним или несколькими из них. Реализации предмета изобретения, описанного в настоящем описании, могут быть реализованы как один или более компьютерных программных продуктов, то есть как один или более модулей инструкций компьютерной программы, закодированных на материальном и невременном машиночитаемом носителе информации для исполнения устройством обработки данных или управления его функционированием. Машиночитаемой средой может быть машиночитаемое запоминающее устройство, машиночитаемый носитель информации, запоминающее устройство, состав вещества, влияющий на машиночитаемый распространяемый сигнал, или комбинацией одного или нескольких из них. Термин "блок обработки данных" или "устройство обработки данных" охватывает все аппаратные устройства, устройства и машины для обработки данных, включая, посредством примера, программируемый процессор, компьютер и многочисленные процессоры или компьютеры. Устройство может включать в себя, помимо аппаратных средств, код, который создает среду исполнения для рассматриваемой компьютерной программы, например, код, составляющий микропрограммное обеспечение процессора, стек протоколов, систему управления базой данных, операционную систему или комбинацию из одного или более из них.
Компьютерная программа (также известная как программа, программное обеспечение, программное приложение, сценарий или код) может быть написана на языка программирования любого вида, включая скомпилированные или интерпретируемые языки, и ее можно развернуть в любом виде, в том числе как автономную программу или как модуль, компонент, подпрограмму или другой блок, подходящий для использования в вычислительной среде. Компьютерная программа необязательно соответствует файлу в файловой системе. Программа может храниться в части файла, который содержит другие программы или данные (например, один или несколько сценариев, хранящихся в документе на языке разметки), в одном файле, выделенном рассматриваемой программе, или в нескольких скоординированных файлах (например, в файлах, в которых хранятся один или более модулей, подпрограмм или частей кода). Компьютерная программа может быть развернута для ее исполнения на одном компьютере или на нескольких компьютерах, которые расположены в одном месте или распределены по многочисленным местам и связаны между собой сетью связи.
Процессы и логические потоки, описанные в настоящем описании, могут выполняться одним или более программируемыми процессорами, исполняющими одну или более компьютерных программ для выполнения функций, оперируя входными данными и вырабатывая выходные данные. Процессы и логические потоки могут также выполняться логической схемой специального назначения, например, программируемой вентильной матрицей (FPGA) или специализированной интегральной схемой (ASIC), и устройство может быть также реализовано в виде них.
Процессоры, подходящие для исполнения компьютерной программы, включают в себя, посредством примера, микропроцессоры как общего, так и специального назначения, и любой один или более процессоров цифрового компьютера любого типа. В общем, процессор будет принимать инструкции и данные из постоянного запоминающего устройства или оперативного запоминающего устройства, либо из обоих. Существенными элементами компьютера являются процессор для выполнения инструкций и одно или более запоминающих устройств для хранения инструкций и данных. В общем, компьютер также будет включать в себя или функционально связан для приема данных из или передачи данных в одно или оба устройства хранения большой емкости для хранения данных, например, магнитные, магнитооптические диски или оптические диски. Однако в компьютере такие устройства не обязательны. Машиночитаемые носители информации, подходящие для хранения инструкций и данных компьютерных программ, включают в себя все виды энергонезависимой памяти, носителей информации и запоминающих устройств, в том числе, например, полупроводниковые запоминающие устройства, например, EPROM, EEPROM и устройства флэш-памяти. Процессор и память могут быть дополнены логической схемой специального назначения или включены в нее.
Предполагается, что описание вместе с чертежами должно рассматриваться только в качестве примерного варианта, где примерный вариант означает пример. В данном контексте использование "или" включает в себя "и/или", если в контексте явно не указано иное.
Хотя данный патентный документ содержит много специфичных деталей, их не следует рассматривать не как ограничение объема любого изобретения или того, что может быть заявлено, а скорее как описания признаков, которые могут быть специфичными для конкретных вариантов осуществления конкретных идей изобретений. Некоторые признаки, которые описаны в данном патентном документе в контексте отдельных вариантов осуществления, также могут быть реализованы в виде комбинации в одном варианте осуществления. Напротив, различные признаки, которые описаны в контексте одного варианта осуществления, могут быть также реализованы во множестве вариантов осуществления отдельно или в любой подходящей подкомбинации. Более того, хотя признаки могут быть описаны выше как действующие в определенных комбинациях и даже изначально заявлены как таковые, в некоторых случаях один или более признаков заявленной комбинации могут быть исключены из комбинации, и заявленная комбинация может быть сориентирована на подкомбинацию или вариацию подкомбинации.
Аналогичным образом, хотя операции изображены на чертежах в определенном порядке, это не следует понимать как требование того, чтобы такие операции выполнялись в конкретном показанном порядке или в последовательном порядке, или чтобы все проиллюстрированные операции выполнялись для достижения желаемых результатов. Более того, разделение различных компонентов системы в вариантах осуществления, описанных в данном патентном документе, не следует понимать как требующее такого разделения во всех вариантах осуществления.
Выше было описано только несколько реализаций и примеров, и другие реализации, улучшения и изменения могут быть выполнены на основе того, что описано и проиллюстрировано в данном патентном документе.
Изобретение относится к области кодирования/декодирования видео. Техническим результатом является повышение эффективности кодирования/декодирования. Предложен способ кодирования цифрового видео, который включает определение относительно того, чтобы использовать, для преобразования между текущим блоком видео и битовым потоком видео, первую модель линейной оптимизации для преобразования с использованием первого режима кодирования, причем первая модель линейной оптимизации получается из второй модели линейной оптимизации, которая используется для преобразования с использованием второго режима кодирования, и выполнение, на основе определения, преобразования. Другой способ включает определение относительно того, чтобы использовать, для преобразования между текущим блоком видео и битовым потоком видео, алгоритм вычисления значения градиента для инструмента двунаправленного оптического потока, и выполнение, на основе определения, преобразования. 4 н. и 11 з.п. ф-лы, 42 ил., 3 табл.
1. Способ обработки видео, содержащий этапы, на которых:
определяют, что режим кодирования с использованием оптического потока был включен для текущего блока видео для видео;
извлечение, с операцией заполнения вместо первой операции интерполяционной фильтрации, одной или более выборок являющихся внешними относительно текущего блока видео;
выполняют вторую операцию интерполяционной фильтрации для текущего блока видео; и
выполняют, на основе операции заполнения и второй операции интерполяционной фильтрации, преобразование между текущим блоком видео и потоком битов видео; причем
размер текущего блока видео составляет M×N, первое количество выборок, необходимых для вычисления градиента, равно (M+G) × (N+G), интерполяционный фильтр, используемый во второй операции интерполяционной фильтрации для компоненты яркости текущего блока видео, содержит L отводов, а третье количество выборок, требующееся для второй операции интерполяционной фильтрации с режимом кодирования с использованием оптического потока, равно (M+k+L−1) × (N+k+L−1), где M, N, G и L являются положительными целыми числами, k является целым числом меньше G.
2. Способ по п.1, в котором при первой операции интерполяционной фильтрации используется билинейный фильтр.
3. Способ по п.1 или 2, в котором для второй операции интерполяционной фильтрации используется только 8-отводный интерполяционный фильтр для компоненты яркости текущего блока видео.
4. Способ по любому из пп.1-3, в котором второе количество выборок, требующееся для второй операции интерполяционной фильтрации без режима кодирования с использованием оптического потока, равно (M+L−1) × (N+L−1).
5. Способ по п.4, в котором четвертое количество выборок, содержащих разность между вторым количеством выборок и третьим количеством выборок, заполняется при операции заполнения.
6. Способ по п.4 или 5, в котором L = 8, а G = 2.
7. Способ по любому из пп.4-6, в котором k = 0.
8. Способ по любому из пп.4-7, в котором M равно 8 или 16 и N равно 8 или 16.
9. Способ по любому из пп.1-8, в котором режим кодирования с использованием оптического потока содержит режим предсказания двунаправленного оптического потока (BDOF).
10. Способ по п.1, в котором одна или более выборок являющихся внешними относительно текущего блока видео включают в себя верхний и нижний ряд, левый и правый столбец области предсказания выборки соответствующей текущему блоку видео, при этом область предсказания выборки имеет размер (M+G) × (N+G).
11. Способ по любому из пп.1-9, в котором преобразование включает в себя кодирование текущего блока видео в поток битов.
12. Способ по любому из пп.1-9, в котором преобразование включает в себя декодирование текущего блока видео из потока битов.
13. Устройство обработки видеоданных, содержащее процессор и энергонезависимую память, хранящую инструкции, вызывающие, при исполнении процессором, выполнение, процессором:
определения, что режим кодирования с использованием оптического потока был включен для текущего блока видео для видео;
извлечения, с операцией заполнения вместо первой операции интерполяционной фильтрации, одной или более внешних выборок текущего блока видео;
выполнения второй операции интерполяционной фильтрации для текущего блока видео; и
выполнения, на основе операции заполнения и второй операции интерполяционной фильтрации, преобразования между текущим блоком видео и представлением потока битов видео, причем
размер текущего блока видео составляет M×N, первое количество выборок, необходимых для вычисления градиента, равно (M+G) × (N+G), интерполяционный фильтр, используемый во второй операции интерполяционной фильтрации для компоненты яркости текущего блока видео, содержит L отводов, а третье количество выборок, требующееся для второй операции интерполяционной фильтрации с режимом кодирования с использованием оптического потока, равно (M+k+L−1) × (N+k+L−1), где M, N, G и L являются положительными целыми числами, k является целым числом меньше G.
14. Энергонезависимый машиночитаемый носитель информации, хранящий инструкции, вызывающие, при исполнении процессором, выполнение процессором:
определения, что режим кодирования с использованием оптического потока был включен для текущего блока видео для видео;
извлечения, с операцией заполнения вместо первой операции интерполяционной фильтрации, одной или более выборок являющегося внешним относительно текущего блока видео;
выполнения второй операции интерполяционной фильтрации для текущего блока видео; и
выполнения, на основе операции заполнения и второй операции интерполяционной фильтрации, преобразования между текущим блоком видео и представлением потока битов видео; причем
размер текущего блока видео составляет M×N, первое количество выборок, необходимых для вычисления градиента, равно (M+G) × (N+G), интерполяционный фильтр, используемый во второй операции интерполяционной фильтрации для компоненты яркости текущего блока видео, содержит L отводов, а третье количество выборок, требующееся для второй операции интерполяционной фильтрации с режимом кодирования с использованием оптического потока, равно (M+k+L−1) × (N+k+L−1), где M, N, G и L являются положительными целыми числами, k является целым числом меньше G.
15. Способ сохранения потока битов видео, содержащий этапы, на которых:
определяют, что режим кодирования с использованием оптического потока был включен для текущего блока видео для видео;
извлекают, с операцией заполнения вместо первой операции интерполяционной фильтрации, одной или более выборок, являющихся внешними относительно текущего блока видео;
выполняют вторую операцию интерполяционной фильтрации для текущего блока видео;
выполняют, на основе операции заполнения и второй операции интерполяционной фильтрации, преобразование между текущим блоком видео и представлением потока битов видео; и
сохраняют поток битов на энергонезависимом машиночитаемом носителе информации; причем
размер текущего блока видео составляет M×N, первое количество выборок, необходимых для вычисления градиента, равно (M+G) × (N+G), интерполяционный фильтр, используемый во второй операции интерполяционной фильтрации для компоненты яркости текущего блока видео, содержит L отводов, а третье количество выборок, требующееся для второй операции интерполяционной фильтрации с режимом кодирования с использованием оптического потока, равно (M+k+L−1) × (N+k+L−1), где M, N, G и L являются положительными целыми числами, k является целым числом меньше G.
XIAOYU XIU et al., CE9-related: A simplified bi-directional optical flow (BIO) design based on the combination of CE9.5.2 test 1 and CE9.5.3, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-K0485-v1, 11th Meeting: Ljubljana, 10-18 July 2018 | |||
XIAOYU XIU et al., CE9-related: Complexity reduction and bit-width |
Авторы
Даты
2023-11-29—Публикация
2019-11-05—Подача