ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ
Данная патентная заявка испрашивает приоритет предварительной патентной заявки США № 62/809,551, поданной 22 февраля 2019 г., приоритет предварительной патентной заявки США № 62/823653, поданной 25 марта 2019 г. и приоритет предварительной патентной заявки США № 62/824,302, поданной 26 марта 2019 г. Раскрытие вышеупомянутых патентных заявок полностью включено сюда посредством ссылки.
Область техники
Варианты осуществления настоящего раскрытия в основном относятся к области обработки картинок и, более конкретно, к аффинному внешнему предсказанию (аффинной компенсации движения), в частности, к способу и аппаратуре для вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности, и способу и аппаратуре для аффинного внешнего предсказания субблоков цветности.
Уровень техники
Кодирование видео (кодирование и/или декодирование видео) используется в широком спектре приложений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Диски Blu-ray, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.
Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть существенным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для видеокодированияданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеокартинок. Сжатые данные затем принимаются в месте назначения устройством декомпрессии видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные методики сжатия и декомпрессии с более высокой степенью сжатия и практически без потери качества картинки.
В частности, текущий кодер универсальной модели видеокодирования и тестирования (VTM) в основном поддерживает формат цветности 4:2:0 в качестве входного формата картинки. Сбой кодера VTM может произойти, когда входной формат цветности становится 4:4:4. Чтобы избежать такой проблемы, очень желателен и даже обязателен кодер, поддерживающий другие форматы цветности (например, 4:4:4 или 4:2:2) для самых разных приложений.
Сущность изобретения
Ввиду вышеупомянутых проблем в настоящем раскрытии предлагается модификация процесса видеокодирования для поддержки множества форматов цветности. В частности, варианты осуществления настоящего приложения нацелены на предоставление устройства, кодера, декодера и соответствующих способов для вывода вектора движения для аффинного взаимного предсказания субблоков цветности на основе формата цветности, который может быть одним из множества поддерживаемых форматов цветности, чтобы улучшить производительность кодирования.
Варианты осуществления изобретения определяются признаками независимых пунктов формулы изобретения, а дополнительные преимущественные реализации вариантов осуществления - признаками зависимых пунктов формулы изобретения.
Конкретные варианты осуществления изложены в прилагаемых независимых пунктах формулы изобретения, а другие варианты осуществления - в зависимых пунктах формулы изобретения.
Вышеупомянутые и другие цели достигаются изобретением по независимым пунктам формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.
Согласно первому аспекту настоящего раскрытия, предоставляется способ вывода вектора движения цветности, используемый в аффинном внешнем предсказании блока текущей картинки, содержащего блок яркости и совместно расположенный блок цветности, причем способ содержит
определение коэффициентов масштабирования цветности (то есть значения коэффициентов масштабирования цветности) в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит текущий блок изображения;
определение набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; и определение вектора движения для субблока цветности для блока цветности на основе векторов движения одного или более субблоков яркости (например, одного или двух субблоков яркости) в наборе (S) субблоков яркости.
В представленном раскрытии, поскольку блок или субблок (яркости или цветности) может быть представлен его местоположением, позицией или индексом, выбор/определение блока или субблока подразумевает, что позиция, местоположение или индекс блока или субблока выбран или определен.
Следует отметить, что термин «блок», «блок кодирования» или «блок изображения», используемый в настоящем раскрытии сущности, может представлять единицы преобразования (TU), единицу предсказания (PU), единицу кодирования (CU) и т. д. В универсальном кодировании видео (VVC) единицы преобразования и единицы кодирования обычно выровнены друг с другом, за исключением случаев, когда используется мозаика TU или преобразование субблоков (SBT). По существу, термины «блок», «блок изображения», «блок кодирования» и «блок преобразования» могут использоваться взаимозаменяемо в настоящем раскрытии; и термины «размер блока» и «размер блока преобразования» могут использоваться взаимозаменяемо в настоящем раскрытии сущности. Термины «выборка» и «пиксель» также могут использоваться взаимозаменяемо в настоящем раскрытии.
Настоящее раскрытие направлено на способ учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов движения яркости выполняется линейная подвыборка поля движения яркости. Когда цветовые плоскости цветности имеют ту же высоту, что и плоскость яркости, более целесообразно выбирать векторы движения из блоков яркости, которые смежны по горизонтали, чтобы они имели одинаковую вертикальную позицию. Выбор векторов движения яркости в зависимости от формата цветности картинки приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие блоки яркости при усреднении векторов движения яркости для генерации вектора движения цветности. Как следствие более точной интерполяции поля движения, ошибка предсказания уменьшается, что приводит к техническому результату повышения производительности сжатия, таким образом, улучшается производительность кодировки.
В возможной форме реализации способа согласно первому аспекту набор (S) субблоков яркости определяется на основе значений коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях. То есть один или несколько субблоков яркости (например, один или два субблока яркости) определяются на основе значений коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях.
В возможной форме реализации способа согласно первому аспекту коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях представлены переменными SubWidthC и SubHeightC.
В возможной форме реализации способа согласно первому аспекту позиция каждого из субблоков яркости представлена индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении, и позиция каждого из субблоков цветности представлена индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении.
В возможной форме реализации способа согласно первому аспекту позиции каждого из одного или нескольких субблоков яркости (например, одного или двух субблоков яркости) в наборе (S) представлены индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, если обе переменные SubWidthC и SubHeightC равны 1, набор субблоков (S) яркости содержит:
субблок яркости, индексированный S0 = (xSbIdx, ySbIdx);
если по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит:
первый субблок яркости, индексированный как S0 = ((xSbIdx >> (SubWidthC- 1) << (SubWidthC - 1)), (ySbIdx >> (SubHeightC - ) << (SubHeightC - 1))), и
второй субблок яркости, индексированный как S1 = ((xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1), (ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)),
где SubWidthC и SubHeightC представляют соответственно коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях;
xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении для субблока яркости в наборе (S), соответственно; “<< ” представляет арифметический сдвиг влево, и “>>” представляет арифметический сдвиг вправо; и xSbIdx=0..numSbX - 1 и ySbIdx=0..numSbY - 1, и numSbX указывает количество субблоков яркости в блоке яркости вдоль горизонтального направления, а numSbY указывает количество субблоков яркости в блоке яркости вдоль вертикального направления.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, количества субблоков цветности в горизонтальном и вертикальном направлениях такие же, как количества субблоков яркости в горизонтальном и вертикальном направлениях, соответственно.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором, если и SubWidthC, и SubHeightC равны 1, набор субблоков (S) яркости содержит:
субблок яркости, индексированный S0 = (xCSbIdx, yCSbIdx);
если по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит:
первый субблок яркости, индексированный как S0 = ((xCSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)), (yCSbIdx >> (SubHeightC - 1) << (SubHeightC - 1))), и
второй субблок яркости, индексированный как S1 = (xCSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1), (yCSbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)),
при этом переменные SubWidthC и SubHeightC представляют соответственно коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях; xCSbIdx и yCSbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении, соответственно, для субблока яркости в наборе (S); и xCSbIdx=0..numCSbX - 1 и yCSbIdx=0..numCSbY - 1, и numCSbX указывает количество субблоков цветности в блоке цветности вдоль горизонтального направления, и numCSbY указывает количество субблоков цветности в блоке цветности вдоль вертикального направления.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором размер каждого из субблоков цветности является таким же, как размер каждого из субблоков яркости. Допускается, что, когда количество субблоков цветности определено равным количеству субблоков яркости, и когда размер цветовой плоскости цветности равен размеру плоскости яркости (например, формат цветности входной картинки 4: 4: 4), векторы движения смежных субблоков цветности могут принимать одинаковое значение. При реализации этого этапа обработки можно выполнить оптимизацию, пропустив этап вычисления повторяющихся значений.
Предлагаемое изобретение раскрывает способ определения размера субблока цветности, равного размеру субблока яркости. В этом случае реализация может быть упрощена за счет унификации обработки яркости и цветности, и, естественно, можно избежать избыточных вычислений векторов движения.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в случае, когда размер каждого из субблоков цветности такой же, как размер каждого из субблоков яркости, количество субблоков цветности в горизонтальном направлении зависит от количества субблоков яркости в горизонтальном направлении и значения коэффициента масштабирования цветности в горизонтальном направлении;
количество субблоков цветности в вертикальном направлении зависит от количества субблоков яркости в вертикальном направлении и значения коэффициента масштабирования цветности в вертикальном направлении.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, xCSbIdx получается на основе xSbIdx и значения шага SubWidth; и yCSbIdx получается на основе ySbIdx и значения шага SubHeightC.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового,
numCSbX = numSbX>>(SubWidthC-1)
numCSbY = numSbY>>(SubHeightC - 1);
numCSbX и numCSbY представляют количество субблоков цветности в горизонтальном и вертикальном направлениях соответственно; и
numSbX и numSbY представляют количество субблоков яркости в блоке яркости в горизонтальном и вертикальном направлениях соответственно.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового для блока цветности набор субблоков (S) яркости содержит один или несколько субблоков, индексированных:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))
S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)
S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))
при этом позиция или индекс S0 блока яркости представлена индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;
для позиции блока цветности (например, [xSbIdxL] [ySbIdxL] в mvCLX [xSbIdxL] [ySbIdxL],
позиция блока яркости или индекс S1 представлен индексом субблока в горизонтальном направлении, xSbIdxL, и индексом субблока в вертикальном направлении, ySbIdxL + (SubHeightC-1);
позиция блока яркости или индекс S2 представлен индексом субблока в горизонтальном направлении, xSbIdxL + (SubWidthC-1), и индексом субблока в вертикальном направлении, ySbIdxL;
позиция блока яркости или индекс S3 представлен индексом субблока в горизонтальном направлении, xSbIdxL + (SubWidthC-1), и индексом субблока в вертикальном направлении, ySbIdxL + (SubHeightC-1).
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором набор субблоков (S) яркости содержит два субблока яркости, индексированных:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1)),
при этом позиция или индекс S0 блока яркости представлены индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;
позиция блока яркости или индекс S1 представлен индексом субблока в горизонтальном направлении, xSbIdxL + (SubWidthC-1), и индексом субблока в вертикальном направлении, ySbIdxL + (SubHeightC-1).
В возможной форме реализации способа согласно любой предшествующей реализации первого аспекта или первому аспекту как таковому,
в случае, когда форматом цветности является 4: 4: 4, набор (S) содержит (состоит из) один субблок яркости, который совмещен с субблоком цветности;
при этом в случае, если формат цветности равен 4: 2: 2, набор (S) содержит два субблока яркости, которые смежны по горизонтали;
при этом в случае, если формат цветности равен 4: 2: 0 набор (S) содержит два субблока яркости, которые диагональны.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором, если имеется более одного субблока яркости в наборе (S), определение вектора движения для субблока цветности на основе вектора движения по меньшей мере одного субблока яркости в наборе (S) субблоков яркости, содержит:
усреднение векторов движения субблоков яркости в наборе S; и
вывод вектора движения для субблока цветности на основе среднего вектора движения яркости.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, усреднение векторов движения субблоков яркости в наборе S содержит:
усреднение горизонтальных составляющих векторов движения субблоков яркости в наборе S; и/или
усреднение вертикальных составляющих векторов движения субблоков яркости в наборе S.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит проверку, является ли сумма векторов движения субблоков яркости в наборе S большей или равной 0.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит:
mvAvgLX = если mvAvgLX[ 0 ] больше чем или равно 0, тогда mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) ) если mvAvgLX[ 1 ] больше чем или равно 0, тогда mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N)), где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в наборе субблоков (S) яркости в массиве векторов движения, , вектор движения субблока яркости с индексами и , N - количество элементов (например, субблоков яркости) в наборе субблоков (S) яркости, log2 (N) представляет собой логарифм N по основанию 2 и степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового N равно 2.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, усреднение векторов движения субблоков яркости в наборе S содержит:
mvAvgLX = mvLX[(xSbIdx>>(SubWidthC - 1)<<(SubWidthC - 1))]
[(ySbIdx>>(SubHeightC - 1)<<(SubHeightC - 1))]+
mvLX[(xSbIdx>>(SubWidthC - 1)<<(SubWidthC - 1))+(SubWidthC - 1)]
[(ySbIdx>>(SubHeightC - 1)<<(SubHeightC - 1))+(SubHeightC - 1)]
если mvAvgLX[0] >= 0 то mvAvgLX[ 0 ] =( mvAvgLX[ 0 ] + 1 - (mvAvgLX[0] >= 0)) >> 1
если mvAvgLX[1] >= 0 то mvAvgLX[ 1 ] =( mvAvgLX[ 1 ] + 1 - (mvAvgLX[1] >= 0)) >> 1
где mvAvgLX [0] - горизонтальная составляющая усредненного вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая усредненного вектора движения mvAvgLX; где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно; xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и вертикальном направлении, соответственно, для субблока яркости в наборе (S), “<<” - это арифметический сдвиг влево, а “>>” - арифметический сдвиг вправо.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, если Случай 1: mvAvgLX[ 0 ] >= 0, тогда значение для “(mvAvgLX[0] >= 0)” =1; если случай 2:mvAvgLX[ 0 ] < 0, тогда значение для “(mvAvgLX[0] >= 0)” =0;
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, усреднение векторов движения субблоков яркости в наборе S содержит:
когда сумма векторов движения субблоков яркости в наборе S больше или равна 0, сумма векторов движения субблоков яркости в наборе S делится операцией сдвига вправо в зависимости от количества элементов (например, субблоков яркости) в наборе субблоков (S) яркости.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности содержит:
определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе сопоставления между информацией формата цветности и коэффициентами масштабирования цветности в горизонтальном и вертикальном направлениях.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, дополнительно содержащего
генерирование предсказания субблока цветности на основе определенного вектора движения.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, формат цветности содержит один из формата YUV 4: 2: 2, формата YUV 4: 2: 0 или формата YUV 4: 4: 4.
Способ согласно любой предыдущей реализации первого аспекта или первого аспекта как такового реализуется устройством кодирования.
Способ согласно любой предыдущей реализации первого аспекта или первого аспекта как такового реализуется устройством декодирования.
Согласно второму аспекту изобретения предоставляется аппаратура для аффинного внешнего предсказания блока текущей картинки, содержащего совмещенные блоки яркости и цветности, при этом аппаратура содержит
модуль определения, сконфигурированный для определения коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит текущий блок изображения; и определения набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; и
модуль вывода вектора движения, сконфигурированный для определения вектора движения для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости.
Способ согласно первому аспекту изобретения может выполняться аппратурой согласно второму аспекту изобретения. Дополнительные признаки и формы реализации аппаратуры согласно второму аспекту изобретения соответствуют характеристикам и формам реализации способа согласно первому аспекту изобретения.
Согласно третьему аспекту изобретение относится к аппаратуре для девидеокодированияпотока, включающей в себя процессор и память. В памяти хранятся инструкции, которые заставляют процессор выполнять способ согласно первому аспекту.
Согласно четвертому аспекту изобретение относится к аппаратуре для видеокодированияпотока, включающей в себя процессор и память. В памяти хранятся инструкции, которые заставляют процессор выполнять способ согласно первому аспекту.
Согласно пятому аспекту предлагается машиночитаемый носитель данных, на котором хранятся инструкции, которые при исполнении вызывают один или несколько процессоров, сконфигурированных для видеокодированияданных. Инструкции вызывают один или несколько процессоров выполнять способ согласно первому аспекту или любому возможному варианту осуществления первого аспекта.
Согласно шестому аспекту изобретение относится к компьютерной программе, содержащей программный код для выполнения способа согласно первому или второму аспекту или любому возможному варианту осуществления первого при выполнении на компьютере.
Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в нижеследующем описании. Другие особенности, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
В следующих вариантах осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:
Фиг. 1A - блок-схема, показывающая пример системы видеокодирования, сконфигурированной для реализации представленных здесь вариантов осуществления;
Фиг. 1B - блок-схема, показывающая другой пример системы видеокодирования, сконфигурированной для реализации представленных здесь вариантов осуществления;
Фиг. 2 - блок-схема, показывающая пример видеокодера, сконфигурированного для реализации представленных здесь вариантов осуществления;
Фиг. 3 - блок-схема, показывающая примерную структуру видеодекодера, сконфигурированного для реализации представленных здесь вариантов осуществления;
Фиг. 4 является блок-схемой, иллюстрирующей пример аппаратуры кодирования или аппаратуры декодирования;
Фиг. 5 является блок-схемой, иллюстрирующей другой пример аппаратуры кодирования или аппаратуры декодирования;
Фиг. 6а показывает пример позиций вектора движения контрольной точки для аффинной модели движения с 4 параметрами;
Фиг. 6b показывает пример позиций вектора движения контрольной точки для аффинной модели движения с 6 параметрами;
Фиг. 7 показывает пример поля вектора движения субблока для аффинной модели движения;
Фиг. 8 - блок-схема, иллюстрирующая компенсацию движения с использованием аффинной модели движения;
Фиг. 9A показывает пример номинальных вертикальных и горизонтальных местоположений выборок яркости и цветности 4:2:0 на картинке;
Фиг. 9B показывает пример номинальных вертикальных и горизонтальных положений выборок яркости и цветности 4:2:2 на картинке;
Фиг. Фиг. 9С показывает пример номинальных вертикальных и горизонтальных положений выборок яркости и цветности 4:4:4 на картинке;
Фиг. 9D иллюстрирует различные шаблоны выборки;
Фиг. 10A показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в текущий блок изображения текущей картинки, где формат цветности текущей картинки составляет 4:2:0.
Фиг. 10В показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в текущий блок изображения текущей картинки, где формат цветности текущей картинки составляет 4:2:2;
Фиг. 10C показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в текущий блок изображения текущей картинки, где формат цветности текущей картинки составляет 4:4:4;
Фиг. 11A - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки 4:2:0, как показано на фиг. 10А;
Фиг. 11В - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:2:2, как показано на фиг. 10B;
Фиг. 11С - пример, иллюстрирующий позицию субблока яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:4:4, как показано на фиг. 10С;
Фиг. 12A показывает различные примеры поднабора S, который содержит позиции субблоков яркости для данной позиции субблока цветности, когда формат цветности установлен на 4:4:4;
Фиг. 12B показывает различные примеры поднабора S, в котором субблоки цветности, расположенные на границе блока цветности, имеют соответствующие позиции в блоке яркости, как в четвертом случае «D», показанном на фиг. 12A;
Фиг. 13A показывает пример, иллюстрирующий выбор двух субблоков яркости для выведения вектора движения для данного субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки равен 4:2:0;
Фиг. 13B показывает пример, иллюстрирующий выбор двух субблоков яркости для данного субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:2:2;
Фиг. 13C показывает пример, иллюстрирующий выбор субблока яркости для данного субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4:4:4;
Фиг. 14A показывает пример подразделения блока яркости 16×16 на субблоки и подразделения блока цветности, совмещенного с блоком яркости, когда формат цветности - YUV 4:2:0;
Фиг. 14B показывает пример подразделения блока яркости 16×16 на субблоки и подразделения блока цветности, совмещенного с блоком яркости, когда формат цветности - YUV 4:2:2;
Фиг. 14C показывает пример подразделения блока яркости 16×16 на субблоки и подразделения блока цветности, совмещенного с блоком яркости, когда формат цветности - YUV 4:4:4;
Фиг. 15 показывает блок-схему, изображающую примерный процесс вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности согласно некоторым аспектам настоящего раскрытия;
Фиг. 16 показывает блок-схему, изображающую другой примерный процесс вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности согласно некоторым аспектам настоящего раскрытия;
Фиг. 17 показывает схематическую диаграмму устройства для аффинного внешнего предсказания согласно некоторым аспектам настоящего раскрытия;
Фиг. 18 является блок-схемой, показывающей примерную структуру системы подачи контента, которая реализует услугу доставки контента; и
Фиг. 19 является блок-схемой, показывающей структуру примерного терминального устройства.
Следующие одинаковые ссылочные позиции относятся к одинаковым или, по меньшей мере, функционально эквивалентным признакам, если явно не указано иное.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков не описаны явным образом или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов не описаны явным образом или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если конкретно не указано иное.
Видеокодирование обычно относится к обработке последовательности картинок, которые образуют видео или видеопоследовательность. Вместо термина «картинка» термины «кадр» или «изображение» могут использоваться как синонимы в области видеокодирования. Видеокодирование (или кодировка (coding) в целом) содержит две части: видеокодирование и видеодекодирование. Видеокодирование выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеокартинок для сокращения объема данных, требуемого для представления видеокартинок (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне получателя (адресата) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеокартинок. Варианты осуществления, относящиеся к «кодировке» видеокартинок (или картинок в целом), должны пониматься как относящиеся к «кодированию» или «декодированию» видеокартинок или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется CODEC (кодирование и декодирование).
В случае видеокодирования без потерь исходные видеокартинки могут быть восстановлены, т.е. восстановленные видеокартинки имеют такое же качество, что и исходные видеокартинки (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае видеокодирования с потерями выполняется дополнительное сжатие, например, посредством квантования, для сокращения объема данных, представляющих видеокартинки, которые не могут быть полностью восстановлены на декодере, т.е. качество восстановленных видеокартинок ниже или хуже по сравнению с качеством исходных видеокартинок.
Несколько стандартов видеокодирования принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборки и кодирование с 2D преобразованием для применения квантования в области преобразования). Каждая картинка видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодировка обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например, с использованием пространственного (внутри картинки) предсказания и/или временного (внешнего) предсказания для генерирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут генерировать идентичные предсказания (например, внутреннее (intra) и внешнее (inter) предсказания) и/или реконструкции для обработки, то есть кодирования, последующих блоков.
Настоящее раскрытие относится к улучшениям в процессе внешнего предсказания. В частности, настоящее раскрытие относится к усовершенствованиям в процессе вывода векторов движения цветности. В частности, настоящее раскрытие относится к усовершенствованиям в процессе вывода вектора движения аффинных блоков цветности (например, субблоков цветности). Более конкретно, настоящее раскрытие относится к улучшениям в процессе вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности.
В данном документе раскрыты улучшенные механизмы для поддержки множества форматов цветности для процесса вывода векторов движения цветности.
В нижеследующих вариантах осуществления системы 10 видеокодировки, видеокодер 20 и видеодекодер 30 описаны на основе Фиг. с 1 по 3.
Фиг. 1A представляет собой схематичное блочное представление, иллюстрирующее примерную систему 10 кодировки, например систему 10 видеокодировки (или сокращенно систему 10 кодировки), которая может использовать методики из настоящей заявки. Видеокодер 20 (или сокращенно кодер 20) и видеодекодер 30 (или сокращенно декодер 30) системы 10 видеокодировки представляют примеры устройств, которые могут быть выполнены с возможностью выполнения методик в соответствии с различными примерами, описанными в настоящей заявке.
Как показано на ФИГ. 1A, система 10 кодировки содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 картинки, например в устройство-получатель 14 для декодирования кодированных данных 21 картинки.
Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. необязательно, содержать источник 16 картинки, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 картинки, а также интерфейс связи или блок 22 связи.
Источник 16 картинки может содержать или быть устройством захвата картинки любого типа, например, камерой для захвата картинки реального мира, и/или устройством генерирования картинки любого типа, например, процессором компьютерной графики для генерирования компьютерной анимированной картинки, или любым типом другого устройства для получения и/или предоставления картинки реального мира, генерируемой компьютером картинки (например, содержимого экрана, картинки виртуальной реальности (VR)) и/или любой их комбинации (например, картинки дополненной реальности (AR)). Источником картинки может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых картинок.
В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 предварительной обработки, картинка или данные 17 картинки также могут именоваться необработанной картинкой или необработанными данными 17 картинки.
Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 картинки и выполнения предварительной обработки в отношении этих данных 17 картинки для получения предварительно обработанной картинки 19 или предварительно обработанных данных 19 картинки. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.
Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 картинки и предоставления кодированных данных 21 картинки (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2).
Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема кодированных данных 21 картинки и передачи этих кодированных данных 21 картинки (или любой их дополнительно обработанной версии) по каналу 13 связи в другое устройство, например устройство-получатель 14 или любое другое устройство, для сохранения или непосредственного восстановления.
Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство 34 отображения.
Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема кодированных данных 21 картинки (или любой их дополнительно обработанной версии), например непосредственно от устройства-источника 12 или из любого другого источника, например, запоминающего устройства, например, устройства хранения кодированных данных картинки, и предоставления кодированных данных 21 картинки в декодер 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 картинки или кодированных данных 21 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки кодированных данных 21 картинки в соответствующий формат, например, в пакеты, и/или обработки кодированных данных картинки с использованием любого типа кодирования передачи или обработки для передачи по линии связи или сети связи.
Интерфейс 28 связи, являющийся аналогом интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого типа соответствующего декодирования передачи или обработки и/или распаковки для получения кодированных данных 21 картинки.
Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены как интерфейсы однонаправленной связи, как показано стрелкой для канала 13 связи на Фиг. 1A, указывающей от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например, отправки и приема сообщений, например для установления соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например передаче кодированных данных изображения.
Декодер 30 выполнен с возможностью приема кодированных данных 21 картинки и предоставления декодированных данных 31 картинки или декодированной картинки 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг. 3 или Фиг. 5.
Постпроцессор 32 устройства-получателя 14 выполнен с возможностью постобработки декодированных данных 31 картинки (также называемых данными восстановленной картинки), таких как декодированная картинка 31, чтобы получить пост-обработанные данные 33 картинки, такие как пост-обработанная картинка 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например, для подготовки декодированных данных 31 картинки для отображения, например с помощью устройства 34 отображения.
Устройство 34 отображения из состава устройства-получателя 14 выполнено с возможностью приема пост-обработанных данных 33 картинки для отображения картинки, например пользователю или зрителю. Устройство 34 отображения может представлять собой или содержать дисплей любого типа для представления восстановленной картинки, например, интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, жидко-кристаллические на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа.
Хотя Фиг. 1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать оба или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.
Как будет очевидно для специалиста на основании описания, существование и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг.1A, может варьироваться в зависимости от фактического устройства и применения.
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на Фиг. 1B, такую как один или более микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA), дискретную логику, аппаратное обеспечение, выделенное видеокодирование или любые их комбинации. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 с ФИГ. 2 и/или любой другой системы кодера или подсистемы, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 с ФИГ. 3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на Фиг.5, если методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем долговременном машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения методик этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг. 1B.
Устройство-источник 12 и устройство-получатель 14 могут содержать любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства потоковой передачи видео (например, серверы служб контента или серверы доставки контента), широковещательное приемное устройство, широковещательное передающее устройство или подобное, и могут использовать операционную систему любого типа или обходиться без нее. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи.
В некоторых случаях система 10 видеокодировки, проиллюстрированная на Фиг. 1A, является лишь примером, а методики настоящей заявки могут применяться к настройкам видеокодирования (такого как видеокодирование или видеодекодирование), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство видеокодирования может кодировать и сохранять данные в память, и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые не осуществляют связь друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективное видеокодирование (HEVC) или на эталонное программное обеспечение универсального видеокодирования (VVC), стандарт видеокодирования следующего поколения, разрабатываемый объединенной группой сотрудничества по видеокодированию (JCT-VC) экспертной группы по видеокодированию ITU-T (VCEG) и экспертной группы по движущимся изображениям ISO/IEC (MPEG). Обычный специалист в данной области техники поймет, что варианты осуществления данного изобретения не ограничиваются HEVC или VVC.
Кодер и способ кодирования
Фиг. 2 показывает схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации методик настоящей заявки. В примере на Фиг. 2 видеокодер 20 содержит ввод 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 (DPB) декодированных картинок, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разбиения. Модуль 244 внешнего предсказания может включать в себя модуль оценки движения и модуль компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.
Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относится к формированию прямого пути прохождения сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных картинок, блок 244 внешнего предсказания и блок 254 внутреннего предсказания могут относится к формированию обратного пути прохождения сигнала видеокодера 20, при этом обратный путь прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (см. видеодекодер 30 на Фиг. 3). Блок 210 обратного квантования, модуль 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 декодированных картинок (DPB), модуль 244 внешнего предсказания и блок 254 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20.
Картинки и разбиение картинок (картинки и блоки)
Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 картинки 17 (или данных 17 картинки), например картинки из последовательности картинок, образующих видео или видеопоследовательность. Принятая картинка или данные картинки также могут представлять собой предварительно обработанную картинку 19 (или предварительно обработанные данные 19 картинки). Для простоты нижеследующее описание ссылается на картинку 17. Картинка 17 также может именоваться текущей картинкой или картинкой, которая подлежит кодированию (в частности, при видеокодировании, чтобы отличать текущую картинку от других картинок, например, ранее кодированных и/или декодированных картинок той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущую картинку).
(Цифровая) картинка является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента картинки) или пэл. Число выборок в горизонтальном и вертикальном направлении (или оси) массива или картинки определяет размер и/или разрешение картинки. Для представления цвета обычно используются три цветовые компоненты, т.е. картинка может быть представлена или включать в себя три массива выборок. В формате RGB или цветовом пространстве картинка содержит соответствующий массив красных, зеленых или синих выборок. Однако при видеокодировке каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (или сокращенно яркость (luma)) представляет яркость или интенсивность уровня серого (например, как в полутоновой картинке), в то время как две компоненты Cb и Cr цветности (или сокращенно цветности (chroma)) представляют компоненты информации о цветности или цвете. Соответственно, картинка в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Картинки в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конверсия. Если картинка является монохромной, она может содержать только массив выборок яркости. Соответственно, картинка может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.
Варианты осуществления видеокодера 20 могут содержать блок разбиения картинки (не показан на Фиг. 2), выполненный с возможностью разбиения картинки 17 на множество (обычно не перекрывающихся) блоков 203 картинки. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единицами дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разбиения картинки может быть выполнен с возможностью использования одного и того же размера блока для всех картинок в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между картинками или поднаборами или группами картинок и разбиения каждой картинки на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 картинки 17, например одного, нескольких или всех блоков, формирующих картинку 17. Блок 203 картинки также может именоваться текущим блоком картинки или блоком картинки, подлежащим кодированию.
Подобно картинке 17, блок 203 картинки снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем картинка 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромной картинки 17 или массив яркости или цветности в случае цветной картинки) или три массива выборок (например, яркость и два массива цветности в случае цветной картинки 17) или любое другое число и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, массив выборок MxN (M-столбец на N-строка) или массив MxN коэффициентов преобразования.
Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть выполнены с возможностью кодирования картинки 17 блок за блоком, например кодирование и предсказание выполняется для каждого блока 203.
Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разбиения и/или кодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разбита на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).
Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть дополнительно выполнены с возможностью разбиения и/или кодирования картинки с использованием групп тайлов (также называемых группами видеотайлов) и/или тайлов (также называемых видеотайлами), при этом картинка может быть разбита на или закодировано с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или фракционные блоки.
Вычисление остатка
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также именуемого остатком 205) на основе блока 203 картинки и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания приведены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 картинки, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборок.
Преобразование
Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например, дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям выборок остаточного блока 205, чтобы получить коэффициенты 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, определенные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабируются с некоторым коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, дополнительные коэффициенты масштабирования применяются как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основе некоторых ограничений, например коэффициенты масштабирования представляют собой степень двойки для операций сдвига, битовую глубину коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т. д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например блоком 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например, блоком 312 обработки обратного преобразования в видеодекодере 30), а соответствующие коэффициенты масштабирования для прямого преобразования, например блоком 206 обработки преобразования, могут быть заданы надлежащим образом в кодере 20.
Варианты осуществления видеокодера 20 (соответственно блока 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например, типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через модуль 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.
Квантование
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.
Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть модифицирована посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для предопределенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать тонкому квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, а соответствующее деквантование и/или обратное квантование, например, блоком 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления в соответствии с некоторыми стандартами, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть модифицирована из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы настроенные таблицы квантования могут использоваться и сигнализироваться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования.
Варианты осуществления видеокодера 20 (соответственно блока 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированных через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения обратной схемы квантования относительно схемы, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать, хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании, коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования относительно преобразования, применяемого блоком 206 обработки преобразования, например, обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST) или других обратных преобразований для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования.
Восстановление
Блок 214 восстановления (например, блок сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т. е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например, посредством сложения, выборка за выборкой, значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.
Фильтрация
Блок 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на Фиг.2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация адаптивного к выборке смещения), например непосредственно или кодированных через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять аналогичные параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Буфер декодированных картинок
Буфер 230 декодированных картинок (DPB) может быть памятью, в которой хранятся опорные картинки или, в общем, данные опорных картинок для видеокодирования данных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных картинок может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных картинок может быть дополнительно выполнен с возможностью сохранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущей картинки или разных картинок, например, ранее восстановленных картинок, и может предоставлять полные ранее восстановленные, т.е. декодированные, картинки (и соответствующие опорные блоки и выборки) и/или частично восстановленную текущую картинку (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. Буфер 230 декодированных картинок (DPB) также может быть выполнен с возможностью сохранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например, если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.
Выбор режима (разбиение и предсказание)
Блок 260 выбора режима содержит блок 262 разбиения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и сконфигурирован для приема или получения данных исходной картинки, например, исходного блока 203 (текущего блока 203 текущей картинки 17), и данные восстановленной картинки, например отфильтрованные и/или нефильтрованные восстановленные выборки или блоки одной и той же (текущей) картинки и/или из одного или множества ранее декодированных картинок, например, из буфера 230 декодированных картинок или других буферов (например, строкового буфера, не показано). Данные восстановленной картинки используются в качестве данных опорной картинки для предсказания, например, внешнего предсказания или внутреннего предсказания, чтобы получить блок 265 предсказания или предиктор 265. Как будет подробно описано ниже, варианты осуществления, представленные в данном документе, обеспечивают улучшение блока 244 внешнего предсказания, обеспечивая более точное предсказание вектора движения, используемое блоком внешнего предсказания при выполнении внешнего предсказания, например, аффинное внешнее предсказание или внешнее предсказание на основе субблоков.
Модуль 260 выбора режима может быть выполнен с возможностью определения или выбора разбиения для текущего режима предсказания блока (в том числе отсутствие разбиения) и режима предсказания (например, режима внутреннего или внешнего предсказания) и генерации соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разбиения и режима предсказания (например, из тех, которые поддерживаются блоком 260 выбора режима или доступны для него), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные непроизводительные затраты на сигнализацию (минимальные непроизводительные затраты на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба фактора. Блок 260 выбора режима может быть выполнен с возможностью определения режима разбиения и предсказания на основе оптимизации искажения скорости (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как «лучший», «минимальный», «оптимальный» и т. д. в этом контексте не обязательно относятся к всеобъемлющему «лучшему», «минимуму», «оптимальному» и т. д., но также могут относиться к выполнению критерия выбора или прекращения, например, когда значение превышает или падает ниже порогового значения, или других ограничений, потенциально ведущих к «субоптимальному выбору», но уменьшающих сложность и время обработки.
Другими словами, блок 262 разбиения может быть выполнен с возможностью разбиения блока 203 на более мелкие разбиения блока или субблоки (которые снова образуют блоки), например итеративно с использованием разбиения квадродерева (QT), двоичного разбиения (BT), или разбиеня троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разбиений блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разбиваемого блока 203, а режимы предсказания применяются к каждому из разбиений блока или субблоков.
Далее более подробно поясняется разбиение (например, посредством блока 260 разбиения) и обработка предсказания (посредством блока 244 внешнего предсказания и блока 254 внутреннего предсказания), выполняемые примерным видеокодером 20.
Разбиение
Блок 262 разбиения может разбивать (или разделять) текущий блок 203 на более мелкие разбиения, например, блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разбиты на еще меньшие разбиения. Это также называется разбиением дерева или иерархическим разбиением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разбит, например, разбит на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разбиты на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т. д. пока разбиение не будет завершено, например, из-за выполнения критерия прекращения, например, достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разбиваются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разбиение на два разбиения, называется двоичным деревом (BT), дерево, использующее разбиение на три разбиения, называется троичным деревом (TT), а дерево, использующее разбиение на четыре разбиения, называется квадродеревом (QT).
Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью картинки. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).
Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности картинки, которая имеет три массива выборок, или CTB выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть N×N блоком выборок для некоторого значения N, так что деление компоненты на CTB является разбиением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности картинки, которое имеет три массива выборок, или блок кодирования выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть M×N блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разбиением.
В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разбита на CU с использованием структуры квадродерева, обозначенной в качества дерева кодирования. Решение о том, следует ли кодировать область картинки с использованием внешнего предсказания (временного) или внутреннего предсказания (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разбита на одну, две или четыре PU в соответствии с типом разбиения на PU. Внутри одной PU применяется одинаковый процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU.
В вариантах осуществления, например в соответствии с разрабатываемым в настоящее время наиболее новым стандартом видеокодирования, который называется универсальное видеокодирование (VVC), для разбиения блока кодирования используется, например, разбиение комбинированного квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разбивается на структуру квадродерева. Листовые узлы квадродерева дополнительно разбиваются двоичным деревом или тройчной (или тройной) древовидной структурой. Листовые узлы дерева разбиения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дополнительного разбиения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с блочной структурой QTBT можно использовать множественное разбиение, например разбиение троичного дерева.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способа разбиения, описанных в данном документе.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.
Внутреннее предсказание
Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в HEVC, или может содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в VVC.
Блок 254 внутреннего предсказания выполнен с возможностью использования восстановленных выборок смежных блоков одной и той же текущей картинки для генерации блока 265 внутреннего предсказания согласно режиму внутреннего предсказания набора режимов внутреннего предсказания.
Блок 254 внутреннего предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутреннего предсказания (или, в общем, информации, указывающей выбранный режим внутреннего предсказания для блока) в блок 270 энтропийного кодирования в форме элементов 266 синтаксиса для включения в данные 21 кодированной картинки, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Внешнее предсказание
Набор (возможных) режимов внешнего предсказания зависит от доступных опорных картинок (то есть предыдущих, по меньшей мере, частично декодированных картинок, например, сохраненных в DPB 230) и других параметров внешнего предсказания, например используется ли опорная картинка целиком или только часть, например область окна поиска вокруг области текущего блока, опорной картинки для поиска наиболее совпадающего опорного блока и/или, например, применяется ли интерполяция пикселей, например, полупиксельная и/или четвертьпиксельная интерполяция, или нет.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 244 внешнего предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба на Фиг. 2 не показаны). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 картинки (блока 203 текущей картинки для текущей картинки 17) и декодированной картинки 231, или по меньшей мере одного или множества ранее восстановленных блоков, например, восстановленных блоков одного или множества других/отличных ранее декодированных картинок 231, для оценки движения. Например, видеопоследовательность может содержать текущую картинку и ранее декодированные картинки 231 или, другими словами, текущую картинку и ранее декодированные картинки 231 могут быть частью или формировать последовательность картинок, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или разных картинок из множества других картинок и обеспечения опорной картинки (или индекса опорной картинки) и/или смещения (пространственного смещения) между позицией (x, y координатами) опорного блока и позицией текущего блока в качестве параметров внешнего предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).
Блок компенсации движения выполнен с возможностью получения, например, приема параметра внешнего предсказания и выполнения внешнего предсказания на основе или с использованием параметра внешнего предсказания для получения блока 265 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или генерирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может генерировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число кандидатных блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU блока текущей картинки блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных картинок. В настоящем раскрытии усовершенствования внешнего предсказания (в частности, афинного внешнего предсказания или внешнего предсказания на основе субблока) выполняются посредством поддержки множества форматов цветности и уточнения процесса вывода вектора движения аффинного субблока. В частности, ниже будут представлены улучшенный способ и аппаратура для вывода вектора движения для аффинного внешнего предсказания субблоков цветности на основе формата цветности.
Блок компенсации движения может также генерировать элементы синтаксиса, ассоциированные с блоками и слайсами видео, для использования видеодекодером 30 при декодировании блоков картинки видеослайса. В дополнение или в качестве альтернативы для слайсов и соответствующих элементов синтаксиса могут генерироваться или использоваться группы тайлов и/или тайлы и соответствующие элементы синтаксиса.
Энтропийное кодирование
Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другого способа или методологии энтропийного кодирования) или обхода (без сжатия) в отношении квантованных коэффициентов 209, параметров внешнего предсказания, параметров внутреннего предсказания, параметров контурного фильтра и/или других элементов синтаксиса для получения кодированных данных 21 картинки, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.
Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для некоторых блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
Декодер и способ декодирования
Фиг. 3 показывает пример видеодекодера 30, который выполнен с возможностью реализации методик настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 картинки (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированную картинку 331. Кодированные данные изображения или битовый поток содержит информацию для декодирования кодированных данных картинки, например, данных, которые представляют блоки картинки кодированного видеослайса (и/или тайлов или групп тайлов) и ассоциированные элементы синтаксиса.
В примере на Фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных картинок, блок 360 применения режима, блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг.2.
Как описано в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных картинок, блок 344 внешнего предсказания и блок 354 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных картинок может быть идентичен по функции буферу 230 декодированных картинок. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.
Энтропийное декодирование
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, кодированных данных 21 картинки) и выполнения, например, энтропийного декодирования для кодированных данных 21 картинки, чтобы получить, например, квантованные коэффициенты 309 и/или параметры декодированного кодирования (не показаны на Фиг.3), например, любые или все из параметров внешнего предсказания (например, индекс опорной картинки и вектор движения), параметр внутреннего предсказания (например, индекс или режим внутреннего предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие элементы синтаксиса. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров внешнего предсказания, параметра внутреннего предсказания и/или других элементов синтаксиса блоку 360 применения режима и других параметров другим блокам декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне видеослайса и/или уровне видеоблока. В дополнение или в качестве альтернативы для слайсов и соответствующих элементов синтаксиса могут приниматься и/или использоваться группы тайлов и/или тайлы и соответствующие элементы синтаксиса.
Обратное квантование
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 картинки (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированным квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе (или тайле или группе тайлов), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.
Обратное преобразование
Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также могут именоваться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 картинки (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое подлежит применению к деквантованным коэффициентам 311.
Восстановление
Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Фильтрация
Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 320 контурного фильтра показан на Фиг.3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.
Буфер декодированных картинок
Декодированные видеоблоки 321 картинки затем сохраняются в буфере 330 декодированных картинок, который сохраняет декодированные картинки 331 в качестве опорных картинок для последующей компенсации движения для других картинок и/или для вывода, соответственно, отображения.
Декодер 30 выполнен с возможностью вывода декодированной картинки 311, например, через вывод 312 для представления или просмотра пользователю.
Предсказание
Блок 344 внешнего предсказания может быть идентичен блоку 244 внешнего предсказания (в частности, блоку компенсации движения), а блок 354 внутреннего предсказания может быть идентичен блоку 254 внешнего предсказания по функции, и принимает решения по разбиению или разделению и выполняет предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 картинки (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 применения режима может быть выполнен с возможностью осуществления предсказания (внутреннего или внешнего предсказания) для каждого блока на основе восстановленных картинок, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.
Когда видеослайс кодируется как внутренне-кодируемый (I) слайс, блок 354 внутреннего предсказания блока 360 применения режима выполнен с возможностью генерирования блока 365 предсказания для блока картинки текущего видеослайса на основе просигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущей картинки. Когда видеокартинка кодируется как внешне-кодируемая (т.е. B или P) слайс, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 применения режима выполнен с возможностью создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других элементов синтаксиса, принимаемых от блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть созданы из одной из опорных картинок в пределах одного из списков опорных картинок. Видеодекодер 30 может строить списки опорных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе опорных картинок, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.
Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения или связанной информации и других элементов синтаксиса, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (внутреннее или внешнее предсказание), используемого для кодирования видео блоков видеослайса, типа слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных картинок для слайса, векторов движения для каждого внешне-кодированного видеоблока слайса, статуса внешнего предсказания для каждого внешне-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.
Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разбиения и/или декодирования картинки с использованием слайсов (также именуемых видеослайсами), при этом картинка может быть разбита на или кодирована с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).
Варианты осуществления видеодекодера 30, показанные на Фиг. 3, могут быть выполнены с возможностью разбиения и/или декодирования картинки с использованием групп тайлов (также называемых группами тайлов видео) и/или тайлов (также называемых видеотайлами), при этом картинка может быть разбита на или декодирована с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или фракционные блоки.
Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 картинки. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.
Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, выведения вектора движения или контурной фильтрации, дополнительная операция, такая как усечение или смещение, может выполняться над результатом обработки интерполяционной фильтрации, выведения вектора движения или контурной фильтрации.
Следует отметить, что дополнительные операции могут применяться к выведенным векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предопределенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth равна 16, диапазон составляет -32768~32767; если bitDepth равна 18, диапазон составляет -131072~131071. Например, значение выведенного вектора движения (например, MV четырех субблоков 4×4 в одном блоке 8×8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех субблоков 4×4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth.
Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операций
ux=(mvx+2bitDepth ) % 2bitDepth (1)
mvx=( ux >= 2bitDepth-1 ) ? (ux - 2bitDepth ) : ux (2)
uy=(mvy+2bitDepth ) % 2bitDepth (3)
mvy=( uy >= 2bitDepth-1 ) ? (uy - 2bitDepth ) : uy (4)
где mvx представляет собой горизонтальную составляющую вектора движения блока картинки или субблока, mvy представляет собой вертикальную составляющую вектора движения блока картинки или субблока, а ux и uy указывает промежуточное значение;
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные числа хранятся как дополнение до двойки. Дополнением до двойки для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двойки является 0111,1111,1111,1111 (десятичное число составляет 32767), что совпадает с выходными данными от применения формул (1) и (2).
ux=(mvpx + mvdx +2bitDepth ) % 2bitDepth (5)
mvx=( ux >= 2bitDepth-1 ) ? (ux - 2bitDepth ) : ux (6)
uy=(mvpy + mvdy +2bitDepth ) % 2bitDepth (7)
mvy=( uy >= 2bitDepth-1 ) ? (uy - 2bitDepth ) : uy (8)
Операции могут применяться во время суммирования mvp и mvd, как показано в формулах с (5) по (8).
Способ 2: удаление MSB переполнения посредством усечения значения
vx=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)
vy=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
где vx представляет собой горизонтальную составляющую вектора движения блока картинки или субблока, vy представляет собой вертикальную составляющую вектора движения блока картинки или субблока; x, y и z соответственно соответствуют трем входным значениям процесса усечения MV, а определение функции Clip3 является следующим:
Clip3( x, y, z ) =
Фиг. 4 является схематичным представлением устройства 400 видеокодирования согласно варианту осуществления настоящего раскрытия. Устройство 400 видеокодирования подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30 по ФИГ. 1A, или кодером, таким как видеокодер 20 по ФИГ. 1А.
Устройство 400 видеокодирования содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.
Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Следовательно, включение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и обеспечивает трансформацию устройства 400 видеокодирования в другое состояние. В качестве альтернативы модуль 470 кодирования реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430.
Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM).
Фиг. 5 является упрощенной блок-схемой аппаратуры 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с Фиг. 1 согласно примерному варианту осуществления.
Процессор 502 в аппаратуре 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, которая существует в настоящее время или будет разработана в будущем. Хотя раскрытые реализации могут быть осуществлены на практике с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более одного процессора.
Память 504 в аппаратуре 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, причем прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способа. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение видеокодирования, которое выполняет описанные в данном документе способа.
Устройство 500 может также включать в себя одно или более устройств вывода, например, дисплей 518. Дисплей 518 может быть, в одном примере, чувствительным к касанию дисплеем, который объединяет дисплей с чувствительным к касанию элементом, способным считывать вводы касанием. Дисплей 518 может быть соединен с процессором 502 через шину 512.
Хотя здесь изображена как одна шина, шина 512 аппаратура 500 может состоять из многочисленных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами аппаратуры 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, аппаратура 500 может быть реализована в самых разнообразных конфигурациях.
Представленные здесь варианты осуществления будут описаны более подробно следующим образом. Источник видео, представленный потоком битов, может включать в себя последовательность картинок в порядке декодирования. Каждая из картинок (которая может быть исходной картинкой или декодированной картинкой) включает в себя один или несколько из следующих массивов выборок:
-- Только яркость (Y) (монохромная).
- - Яркость и две цветности (YCbCr или YCgCo).
- - Зеленый, синий и красный (GBR, также известный как RGB).
-- Массивы, представляющие другие неопределенные монохромные или трехцветные выборки цветов (например, YZX, также известные как XYZ).
Для удобства обозначений и терминологии в настоящем раскрытии, переменные и термины, ассоциированные с этими массивами, упоминаются как яркость (или L или Y) и цветность, где два массива цветности упоминаются как Cb и Cr.
Фиг. 9A иллюстрирует расположение компоненты цветности в случае схемы дискретизации (выборки) 4: 2: 0. Примеры других схем дискретизации показаны на рис. 9B и 9C.
Как показано на фиг. 9A, в схеме дискретизации 4:2:0 может иметь место сдвиг между сетками компонент яркости и цветности. В блоке 2 × 2 пикселя компоненты цветности фактически сдвинуты на половину пикселя по вертикали по сравнению с компонентой яркости (см. Фиг. 9A). Такой сдвиг может влиять на фильтры интерполяции при понижении дискретизации картинки или при повышении дискретизации картинки. На фиг. 9D представлены различные шаблоны дискретизации (выборки) в случае чересстрочной картинки. Это означает, что также учитывается четность, то есть то, находятся ли пиксели в верхнем или нижнем полях чересстрочной картинки.
Согласно проекту спецификации универсального видеокодирования (VVC), специальный флаг «sps_cclm_colocated_chroma_flag» сигнализируется на уровне параметров последовательности. Флаг «sps_cclm_colocated_chroma_flag», равный 1, указывает, что верхняя левая субдискретизированная выборка яркости в межкомпонентном линейном моделировании внутреннего предсказания совмещена с верхней левой выборкой яркости. sps_cclm_colocated_chroma_flag, равное 0, указывает, что верхняя левая субдискретизированная выборка яркости в межкомпонентной линейной модели внутреннего предсказания совмещена по горизонтали с верхней левой выборкой яркости, но сдвинута по вертикали на 0,5 единицы выборкок яркости относительно верхней левой выборки яркости.
Аффинное предсказание с компенсацией движения
В реальном мире существует множество видов движения, например увеличение/уменьшение, вращение, перспективные движения, поступательное движение и другие нерегулярные движения. В HEVC (ITU-T H.265) для предсказания компенсации движения (MCP) используется только модель движения смещения. В VVC применяется предсказание компенсации движения с аффинным преобразованием. Аффинное поле движения блока описывается двумя или тремя векторами движения контрольной точки (CPMV), которые соответствуют аффинной модели движения с четырьмя параметрами и аффинной модели движения с шестью параметрами соответственно. Положения CPMV для аффинной модели движения с 4 параметрами изображены на рис. 6a, а положения CPMV для аффинной модели движения с 6 параметрами изображены на рис. 6b.
В случае модели движения с 4 параметрами поле вектора движения (MVF) блока описывается следующим уравнением:
(1)
Где (v0x, v0y) - вектор движения контрольной точки верхнего левого угла, а (v1x, v1y) - вектор движения контрольной точки верхнего правого угла. (vx, vy) - вектор движения в заданном местоположении (x, y) в блоке. Проверка издержек искажения скорости (RDC) используется для определения какая пара векторов движения выбрана в качестве векторов движения контрольной точки текущего CU.
CPMV могут быть выведены на основе информации движении соседних блоков (например, в процессе режима слияния субблоков). Альтернативно или дополнительно, CPMV могут быть получены путем выведения предикторов CPMV (CPMVP) и получения разницы между CPMV и CPMVP из потока битов.
Чтобы упростить предсказание компенсации движения, применяется аффинное предсказание преобразования на основе блоков. Например, чтобы вывести вектор движения каждого субблока 4 × 4, вектор движения центральной выборки каждого субблока, как показано на фиг.7, вычисляется согласно приведенному выше уравнению (1) и округляется с точностью до 1/16 доли. Фильтры интерполяции компенсации движения применяются для генерации предсказания каждого субблока с выведенным вектором движения.
После предсказания компенсации движения (MCP) вектор движения с более высокой точностью для каждого субблока округляется и сохраняется с той же точностью, что и нормальный вектор движения, с точностью ¼.
Фиг. 8 показывает пример блок-схемы, изображающей процесс 800 для аффинного внешнего предсказания (то есть компенсации движения с использованием аффинной модели движения). Процесс 800 может включать в себя следующие этапы:
На этапе 810 выполняется вывод вектора движения контрольной точки для генерации векторов движения контрольной точки cpMvLX [cpIdx];
На этапе 830 выполняется вывод массива векторов движения для создания массива mvLX [xSbIdx] [ySbIdx] векторов движения субблоков яркости и массива mvCLX [xSbIdx] [ySbIdx] векторов движения субблоков цветности. Этап 830 может включать в себя:
Этап 831, где выполняется вывод массива векторов движения яркости, чтобы сгенерировать массив mvLX [xSbIdx] [ySbIdx] векторов движения субблока яркости;
Этап 833, где выполняется вывод массива векторов движения цветности для генерации массива mvCLX [xSbIdx] [ySbIdx] векторов движения субблока цветности;
На этапе 850 выполняется процесс интерполяции, чтобы сгенерировать предсказание каждого субблока с выведенным вектором движения, то есть массив predSamples выборок предсказания.
Представленные здесь варианты осуществления в основном сосредоточены на этапе 833 для вывода массива векторов движения цветности (этот блок выделен жирным шрифтом на фиг.8).
Детали процесса выведения вектора движения цветности в предыдущем исполнении (традиционным способом) описываются следующим образом:
Входные данные для этого процесса (вывод массива векторов движения цветности) включают в себя:
массив mvLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 векторов движения субблока яркости и X равным 0 или 1
Коэффициент дискретизации цветности по горизонтали, SubWidthC
Коэффициент дискретизации цветности по вертикали, SubHeightC
Выходные данные:
массив mvCLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 векторов движения субблока цветности и X равным 0 или 1.
Этот процесс реализован следующим образом:
Средний вектор mvAvgLX движения яркости выводится следующим образом:
mvAvgLX = mvLX[ ( xSbIdx >> 1 << 1) ][ (ySbIdx>>1<<1) ] +
mvLX[ ( xSbIdx >> 1 << 1 ) + 1 ][ (ySbIdx>>1<<1) + 1 ] (2)
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :
- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) ) (3)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :
- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) ) (4)
- - Масштабирование mvAvgLX в соответствии со значением refIdxLX опорного индекса. Конкретно,
Если опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, не является текущей картинкой, применяется следующее:
mvCLX [0] = mvLX [0] * 2/SubWidthC
mvCLX [1] = mvLX [1] * 2/SubHeightC
В противном случае (опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, является текущей картинкой), применяется следующее:
mvCLX [0] = ((mvLX [0] >> (3+SubWidthC)) * 32
mvCLX [1] = ((mvLX [1] >> (3+SubHeightC)) * 32
В приведенной выше схеме при вычислении mvAvgLX не учитывается подвыборка цветности. Это приводит к неточной оценке поля движения для случаев, когда одна из переменных SubWidthC и SubHeightC равна 1.
Варианты осуществления настоящего изобретения решают эту проблему путем подвыборки поля движения яркости на основе формата цветности картинки, тем самым повышая точность поля движения цветности. Более конкретно, варианты осуществления настоящего изобретения раскрывают способ учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов движения яркости выполняется линейная подвыборка поля движения яркости. Выбор векторов движения яркости на основе формата цветности картинки приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие блоки яркости при усреднении векторов движения яркости. Как следствие более точной интерполяции поля движения, ошибка прогнозирования уменьшается, что дает технический результат повышения эффективности сжатия.
В одной примерной реализации таблица 1-1 показывает форматы цветности, которые могут поддерживаться в настоящем раскрытии. Информация формата цветности, такая как chroma_format_idc и/или own_colour_plane_flag, может использоваться для определения значений переменных SubWidthC и SubHeightC.
Таблица 1-1.
chroma_format_idc определяет выборку цветности относительно выборки яркости. Значение chroma_format_idc должно быть в диапазоне от 0 до 3 включительно.
separate_colour_plane_flag, равный 1, указывает, что три цветовых компоненты формата цветности 4: 4: 4 кодируются отдельно. separate_colour_plane_flag, равный 0, указывает, что компоненты цвета не кодируются отдельно. Когда separate_colour_plane_flag отсутствует, предполагается, что он равен 0. Когда separate_colour_plane_flag равен 1, кодированная картинка состоит из трех отдельных компонент, каждая из которых состоит из кодированных выборок одной цветовой плоскости (Y, Cb или Cr) и использует синтаксис монохромного кодирования.
Chroma format (Формат цветности) определяет приоритет и субдискретизацию массивов цветности;
В монохромной выборке есть только один массив выборок, который номинально считается массивом яркости.
При выборке 4:2:0 каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости, как показано на рис. 9А.
При выборке 4:2:2 каждый из двух массивов цветности имеет одинаковую высоту и половину ширины массива яркости, как показано на рис. 9B.
При выборке 4:4:4, в зависимости от значения own_colour_plane_flag, применяется следующее:
-- Если separate_colour_plane_flag равен 0, каждый из двух массивов цветности имеет ту же высоту и ширину, что и массив яркости, как показано на рис. 9C.
-- В противном случае (separate_colour_plane_flag равен 1) три цветовые плоскости обрабатываются отдельно как монохромные дискретизированные картинки.
В других примерных реализациях Таблица 1-2 также показывает форматы цветности, которые могут поддерживаться в настоящем раскрытии. Информация формата цветности, такая как chroma_format_idc и/или own_colour_plane_flag, может использоваться для определения значений переменных SubWidthC и SubHeightC.
Таблица 1-2.
Количество битов, необходимых для представления каждой из выборок в массивах яркости и цветности в видеопоследовательности, находится в диапазоне от 8 до 16 включительно, а количество битов, используемых в массиве яркости, может отличаться от количества битов, используемых в массивах цветности.
Когда значение chroma_format_idc равно 1, номинальные вертикальные и горизонтальные относительные местоположения выборок яркости и цветности в картинках показаны на фиг. 9A. Альтернативные относительные местоположения выборок цветности могут быть указаны в информации о пригодности видео.
Когда значение chroma_format_idc равно 2, выборки цветности совмещаются с соответствующими выборками яркости, а номинальные местоположения в картинке такие, как показано на фиг. 9B.
Когда значение chroma_format_idc равно 3, все выборки массива совмещаются для всех случаев картинок, а номинальные местоположения в картинке такие, как показано на фиг. 9C.
В одной примерной реализации переменные SubWidthC и SubHeightC указаны в таблице 1-1 или 1-2, в зависимости от структуры выборки формата цветности, которая задается через chroma_format_idc и own_colour_plane_flag. Можно понять, что информация формата цветности, такая как структура выборки формата цветности, указывается через chroma_format_idc и own_colour_plane_flag.
В отличие от предыдущего исполнения, в настоящем раскрытии изобретения определение позиций в массиве векторов движения субблока яркости может применяться для различных форматов цветности и зависит от значения коэффициента масштабирования цветности (например, SubWidthC и SubHeightC). Следует понимать, что «коэффициент масштабирования цветности в горизонтальном и вертикальном направлениях» также может упоминаться как «коэффициент дискретизации цветности в горизонтальном и вертикальном направлениях».
В качестве альтернативы, в другой примерной реализации SubWidthC и SubHeightC могут быть определены как SubWidthC = (1 + log2(wluma)-log2(wchroma)) and SubHeightC = (1 + log2(hluma)-log2(hchroma)), где wluma и hluma - ширина и высота массива яркости соответственно, а wchroma и hchroma - ширина и высота массива цветности соответственно.
В возможных реализациях некоторых вариантов осуществления настоящего раскрытия для заданного формата цветности процесс определения позиций или индексов в массиве вектора движения яркости для данного индекса совместно расположенного субблока цветности может выполняться следующим образом:
Вначале значения SubWidthC и SubHeightC определяются на основе формата цветности в настоящий момент кодируемой или декодируемой картинки (или кадра).
Затем для каждой из пространственных позиций цветности, указанных индексами xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 и X, равным 0 или 1, значение вектора движения цветности сохраняется как соответствующий элемент mvCLX. Этапы для определения вектора движения цветности следующие:
Первый этап - выполнить округление, чтобы определить индексы x и y совместно расположенного субблока яркости:
xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);
ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).
Второй этап - определить набор позиций субблока яркости, которые дополнительно определяют вектор движения цветности. Возможный пример определения такого набора S может быть описан ниже:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1))
Третий этап - вычислить средний вектор mvAvgLX:
Когда набор S содержит N элементов, N является степенью двойки, в одной примерной реализации вектор движения mvAvgLX определяется следующим образом:
- mvAvgLX =
- mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
- mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N)
где и координаты x и y позиции Si.
Подводя итог, в одной примерной реализации определение среднего вектора mvAvgLX для усреднения можно сформулировать следующим образом:
mvAvgLX = mvLX[(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]
[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]+
mvLX[(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))+(SubWidthC - 1)]
[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))+(SubHeightC - 1)] (уравнение 1)
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N) (уравнение 2)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N) (уравнение 3)
Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована в различных реализациях.
Следует понимать, что, хотя вышеописанный процесс описывается как трехэтапный процесс, определение среднего вектора mvAvgLX, как сформулировано выше в уравнении 1- 3 могут выполняться в любом порядке.
В другой примерной реализации третий этап также может быть реализован следующим образом:
mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + N>>1) >> log2(N) :
- ( (- mvAvgLX[ 0 ] + N>>1 ) >> log2(N) ) (5)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + N>>1) >> log2(N) :
- ( (- mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ) ) (6)
где и координаты x и y позиции Si.
Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована в различных реализациях.
Следующим этапом является масштабирование mvAvgLX в соответствии со значением опорного индекса refIdxLX. В некоторых примерах процесс масштабирования выполняется следующим образом путем замены mvLX на mvAvgLX (т.е. mvLX [0] будет заменен на mvAvgLX [0], а mvLX [1] будет заменен на mvAvgLX [1]):
Если опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, не является текущей картинкой, применяется следующее:
mvCLX [0] = mvLX [0] * 2/SubWidthC
mvCLX [1] = mvLX [1] * 2/SubHeightC
В противном случае (опорная картинка, соответствующая refIdxLX для текущей единицы кодирования, является текущей картинкой), применяется следующее:
mvCLX[0]=((mvLX[0]>>(3 + SubWidthC ) ) * 32
mvCLX[1]=((mvLX[1]>>(3 + SubHeightC ) ) * 32
Аналогичным образом, процесс вывода векторов движения цветности в пункте 8.5.2.13, описанный ниже, может быть вызван с mvAvgLX и refIdxLX в качестве входных данных и с массивом векторов движения цветности mvCLXSub [xCSbIdx] [yCSbIdx] в качестве выходных данных. В процессе, описанном в пункте 8.5.2.13, mvLX будет заменен на mvAvgLX, и, в частности, mvLX [0] будет заменен на mvAvgLX [0], а mvLX [1] будет заменен на mvAvgLX [1].
Подробности возможных реализаций вычисления среднего вектора mvAvgLX в процессе вывода вектора движения цветности предлагаемого способа описаны ниже в формате модификации спецификации проекта VVC. Есть несколько вариантов этого процесса.
1. Один из вариантов вычисления среднего вектора mvAvgLX в процессе вывода вектора движения цветности предлагаемого способа можно описать следующим образом в формате модификации спецификации проекта VVC :
…
Средний вектор движения яркости mvAvgLX выводится следующим образом:
mvAvgLX =
mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]
[ ( ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))] +
mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + ( 1 >> ( 2 - SubWidthC))]
[ ( ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1) ) + (1 >> (2 - SubHeightC))]
Пояснительные примечания: Вышеприведенное уравнение показывает пример выбора векторов движения яркости для вычисления среднего вектора движения (например, выбор позиций субблока яркости для данной позиции субблока цветности). Выбранные субблоки яркости (и, следовательно, их соответствующие позиции) представлены их соответствующими индексами субблока в горизонтальном и вертикальном направлениях. Например, как показано выше, для данного субблока цветности (xSbIdx, ySbIdx), где xSbIdx и ySbIdx - индексы субблока для субблока цветности в горизонтальном и вертикальном направлении, соответственно, два субблока яркости (и, следовательно, их соответствующие позиции, например, их соответствующие индексы субблока) могут быть выбраны. Один из двух выбранных субблоков яркости может быть представлен индексом субблока в горизонтальном направлении как [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))] и индексом субблока в вертикальном направлении как [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]. Другой выбранный субблок яркости может быть представлен индексом субблока в горизонтальном направлении как [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + (1 >> (2 - SubWidthC))] и индексом субблока в вертикальном направлении как [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) + (1 >> (2 - SubHeightC))]). Соответственно, выбор блоков яркости для усреднения векторов движения яркости зависит от формата цветности картинки. В частности, выбор блоков яркости для усреднения векторов движения яркости зависит от коэффициентов SubWidthC и SubHeightC масштабирования цветности, которые определяются на основе формата цветности картинки //
Полученный выше mvAvgLX может быть дополнительно обработан:
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :
- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) )
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :
- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) )
Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована по-разному.
-- Процесс вывода векторов движения цветности в пункте 8.5.2.13, представленный далее в этом раскрытии, вызывается с mvAvgLX и refIdxLX в качестве входных данных и вектором движения цветности mvCLX [xSbIdx] [ySbIdx] в качестве выходных данных.
…
2. Другой вариант вычисления среднего вектора mvAvgLX в процессе вывода вектора движения цветности предлагаемого способа можно описать следующим образом в формате модификации спецификации проекта VVC:
…
Средний вектор движения яркости mvAvgLX выводится следующим образом:
mvAvgLX =
mvLX [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]
[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))] +
mvLX [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1)) + (1 >> (4 - SubWidthC - SubHeightC))]
[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1)) + ( 1 >> (4 - SubWidthC - SubHeightC))]
// Пояснительные примечания: вышеприведенное уравнение показывает пример выбора векторов движения яркости для вычисления среднего вектора движения (например, выбор позиций субблока яркости для данной позиции субблока цветности). Выбранные субблоки яркости (и, следовательно, их соответствующие позиции) представлены их соответствующими индексами субблока в горизонтальном и вертикальном направлениях. Например, как показано выше, для данного субблока цветности (xSbIdx, ySbIdx), где xSbIdx и ySbIdx - индексы субблока для субблока цветности в горизонтальном и вертикальном направлении, соответственно, два субблока яркости (и, следовательно, их соответствующие позиции, например, их соответствующие индексы субблока) могут быть выбраны. Один из двух выбранных субблоков яркости может быть представлен индексом субблока в горизонтальном направлении как [( xSbIdx >> (SubWidthC 1) << (SubWidthC 1) ) ] и индексом субблока в вертикальном направлении как [( ySbIdx >> (SubHeightC 1) << (SubHeightC 1) ) ]. Другой выбранный субблок яркости может быть представлен индексом субблока в горизонтальном направлении как [( xSbIdx >> (SubWidthC 1) << (SubWidthC 1) ) + ( 1 >> ( 4 SubWidthC SubHeightC) )] и индекс субблока в вертикальном направлении как [( ySbIdx >> (SubHeightC 1) << (SubHeightC - 1) ) + ( 1 >> ( 4 SubWidthC SubHeightC ) )]) . Соответственно, выбор блоков яркости для усреднения векторов движения яркости зависит от формата цветности картинки. В частности, выбор блоков яркости для усреднения векторов движения яркости зависит от коэффициентов масштабирования цветности SubWidthC и SubHeightC, которые определяются на основе формата цветности картинки //
По сравнению с первым вариантом в этом варианте используются разные способы определения набора субблоков яркости. В частности, 1 >> ( 4 - SubWidthC - SubHeightC) используется для определения индекса второго субблока яркости (соседнего субблока яркости для первого субблока яркости) в этом варианте, тогда как 1 >> ( 2 - SubWidthC ) и 1 >> ( 2 - SubHeightC ) используются в первом варианте. В первом варианте сам первый субблок яркости, его диагональный сосед или его горизонтальный сосед могут использоваться в качестве второго субблока. Во втором варианте либо сам первый субблок яркости, либо его диагональный сосед может использоваться в качестве второго субблока яркости в зависимости от значений коэффициента масштабирования цветности.
Полученный выше mvAvgLX может быть дополнительно обработан:
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] >= 0 ? ( mvAvgLX[ 0 ] + 1) >> 1 :
- ( (- mvAvgLX[ 0 ] + 1 ) >>1 ) )
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] >= 0 ? ( mvAvgLX[ 1 ] + 1) >> 1 :
- ( (- mvAvgLX[ 1 ] + 1 ) >> 1 ) )
- Процесс вывода векторов движения цветности в пункте 8.5.2.13 вызывается с mvAvgLX и refIdxLX в качестве входных данных и вектором движения цветности mvCLX [xSbIdx] [ySbIdx] в качестве выходных данных.
…
Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована по-разному.
3. Другой вариант процесса вывода вектора движения цветности предложенного способа можно описать следующим образом в формате модификации спецификации проекта VVC:
…
Средний вектор движения яркости mvAvgLX выводится следующим образом:
mvAvgLX = mvLX[ ( xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))]
[(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]
-- Процесс вывода векторов движения цветности в пункте 8.5.2.13 вызывается с mvAvgLX и refIdxLX в качестве входных данных и вектором движения цветности mvCLX [xSbIdx] [ySbIdx] в качестве выходных данных.
…
4. Другой вариант процесса вывода вектора движения цветности предлагаемого способа можно описать следующим образом в формате модификации спецификации проекта VVC:
…
Средний вектор движения яркости mvAvgLX выводится следующим образом:
Если SubWidthC == 1 и SubHeightC == 1:
mvAvgLX=mvLX [xSbIdx] [ySbIdx]
иначе
xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);
ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).
mvAvgLX = mvLX[xSbIdxL ][ySbIdxL ]+ mvLX[xSbIdxL + (SubWidthC-1)][ySbIdxL+(SubHeightC-1)]
// Пояснительные примечания: вышеприведенное уравнение показывает пример выбора векторов движения яркости для вычисления среднего вектора движения (например, выбор позиций субблока яркости для данной позиции субблока цветности). Выбранные субблоки яркости (и, следовательно, их соответствующие позиции) представлены их соответствующими индексами субблока в горизонтальном и вертикальном направлениях. Например, как показано выше, для данного субблока цветности (xSbIdx, ySbIdx), где xSbIdx и ySbIdx - индексы субблока для субблока цветности в горизонтальном и вертикальном направлении, соответственно, два субблока яркости (и, следовательно, их соответствующие позиции, например, их соответствующие индексы субблока) могут быть выбраны. Один из двух выбранных субблоков яркости может быть представлен индексом субблока в горизонтальном направлении как [(xSbIdx >> (SubWidthC - 1) << (SubWidthC - 1))] и индексом субблока в вертикальном направлении как [(ySbIdx >> (SubHeightC - 1) << (SubHeightC - 1))]; Другой выбранный субблок яркости может быть представлен индексом субблока в горизонтальном направлении как [( xSbIdx >> (SubWidthC - 1 ) << ( SubWidthC - 1) ) + ( SubWidthC - 1 )] и индексом субблока в вертикальном направлении как [( ySbIdx >> ( SubHeightC - 1 ) << ( SubHeightC - 1 ) ) + ( SubHeightC - 1 )]). Соответственно, выбор блоков яркости для усреднения векторов движения яркости зависит от формата цветности картинки. В частности, выбор блоков яркости для усреднения векторов движения яркости зависит от коэффициентов SubWidthC и SubHeightC масштабирования цветности, которые определяются на основе формата цветности картинки //
Полученный выше mvAvgLX может быть дополнительно обработан:
mvAvgLX[0] = mvAvgLX[0]>=0 ? mvAvgLX[0] >> 1 : -(( -mvAvgLX[0]) >> 1)
mvAvgLX[1] = mvAvgLX[1]>= 0 ? mvAvgLX[1] >> 1 : -(( -mvAvgLX[1]) >> 1)
Следует отметить, что представленный здесь способ усреднения векторов движения яркости не ограничен, как указано выше, и что функция усреднения в настоящем раскрытии сущности может быть реализована по-разному.
Детали определения позиций субблока яркости, которые дополнительно используются при определении вектора движения цветности для различных форматов цветности, будут объяснены в комбинации с фиг.10A-10C и фигурами 11A-11C, как показано ниже.
Фиг. 10A показывает пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в блок текущей картинки (например, блок кодирования) текущей картинки, где формат цветности текущей картинки составляет 4: 2: 0. Как показано на фиг. 10A и в таблице 1-1, когда формат цветности текущей картинки составляет 4: 2: 0, SubWidthC=2 и SubHeightC=2. Если ширина блока яркости равна W, а высота блока яркости - H, ширина соответствующего блока цветности равна W/SubWidthC, а высота соответствующего блока цветности - H/SubHeightC. В частности, для блока текущей картинки, содержащего совмещенные блоки яркости и цветности, блок яркости обычно содержит в четыре раза больше выборок соответствующего блока цветности.
Фиг. 10В - пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в блок текущей картинки для текущей картинки, где формат цветности текущей картинки составляет 4: 2: 2. Как показано на фиг. 10B и в таблице 1-1 или 1-2, когда формат цветности текущей картинки составляет 4: 2: 2, SubWidthC=2 и SubHeightC=1. Если ширина блока яркости равна W, а высота блока яркости - H, ширина соответствующего блока цветности равна W/SubWidthC, а высота соответствующего блока цветности - H/SubHeightC. В частности, для блока текущей картинки, содержащего совмещенные блоки яркости и цветности, блок яркости обычно содержит в два раза больше выборок соответствующего блока цветности.
Фиг. 10C - пример, иллюстрирующий совмещенные блоки яркости и цветности, которые включены в блок текущей картинки для текущей картинки, где формат цветности текущей картинки составляет 4: 4: 4. Как показано на фиг. 10C и в таблице 1-1 или 1-2, когда формат цветности текущей картинки составляет 4: 2: 2, SubWidthC=1 и SubHeightC=1. Если ширина блока яркости равна W, а высота блока яркости - H, ширина соответствующего блока цветности равна W/SubWidthC, а высота соответствующего блока цветности - H/SubHeightC. В частности, для блока текущей картинки, содержащего совмещенные блоки яркости и цветности, блок яркости обычно содержит такое же количество выборок соответствующего блока цветности.
Фиг. 11A - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки равен 4: 2: 0, как показано на фиг. 10А.
Индексы x и y совместно расположенного субблока яркости определяются с использованием соответствующих индексов x и y субблока цветности (обозначаемых как xSbIdx, ySbIdx):
xSbIdxL = (xSbIdx >> (SubWidthC - 1)) << (SubWidthC - 1);
ySbIdxL = (ySbIdx >> (SubHeightC - 1)) << (SubHeightC - 1).
Два аффинных субблока яркости выбираются для дополнительного усреднения их векторов движения. Позиции этих двух субблоков определяются как:
(xSbIdxL, ySbIdxL) и
(xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).
Как показано на фиг. 11A, в случае формата YUV 4: 2: 0, векторы движения двух субблоков яркости блока 1010 яркости (размер яркости 8×8) по диагонали используются для усреднения, а усредненное MV используется для аффинного процесса выведения вектора движения субблока для субблока цветности. В частности,
Индекс субблока яркости или субблока цветности 0: xSbIdx=0, ySbIdx=0
Индекс субблока яркости или субблока цветности 1: xSbIdx=1, ySbIdx=0
Индекс субблока яркости или субблока цветности 2: xSbIdx=0, ySbIdx=1
Индекс субблока яркости или субблока цветности 3: xSbIdx=1, ySbIdx=1;
Следуя варианту 4 исполнения, вектор движения каждого сублока цветности выводится на основе усредненного значения, и усредненное значение получается на основе вектора движения сублока 0 яркости (mvLX [0] [0]) и сублока 3 яркости ( mvLX [1] [1]), которые являются диагональными.
Фиг. 11В - пример, иллюстрирующий позиции двух субблоков яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4: 2: 2, как показано на фиг. 10B; Как показано на фиг. 11B, в случае формата YUV 4: 2: 2, векторы движения двух смежных по горизонтали субблоков яркости блока 1010 яркости (размер яркости 8×8) используются для усреднения, а усредненное MV используется для аффинного процесса выведения векторов движения субблока для субблока цветности. В частности,
Индекс субблока яркости или субблока цветности 0: xSbIdx=0, ySbIdx=0
Индекс субблока яркости или субблока цветности 1: xSbIdx=1, ySbIdx=0
Индекс субблока яркости или субблока цветности 2: xSbIdx=0, ySbIdx=1
Индекс субблока яркости или субблока цветности 3: xSbIdx=1, ySbIdx=1;
Следуя приведенному выше варианту 4 исполнения, вектор движения каждого субблока цветности в первой строке блока 920 цветности выводится на основе усредненного значения, и усредненное значение получается на основе векторов движения субблока яркости 0 (mvLX [0 ] [0]) и субблок 1 яркости (mvLX [1] [0]), которые смежны по горизонтали. Вектор движения каждого субблока цветности во второй строке блока 920 цветности выводится на основе усредненного значения, и усредненное значение получается на основе векторов движения сублока 2 яркости (mvLX [0] [1]) и субблока 3 яркости (mvLX [1] [1]), которые смежны по горизонтали.
Фиг. 11С - пример, иллюстрирующий позицию субблока яркости для данной позиции субблока цветности во время вывода векторов движения цветности из векторов движения яркости, когда формат цветности текущей картинки составляет 4: 4: 4, как показано на фиг. 10C.
Как показано на фиг. 11C, в случае формата YUV 4: 4: 4 вектор(ы) движения совместно расположенного субблока яркости блока 1010 яркости (размер яркости 8×8) используется для каждого субблока цветности для выполнения аффинного предсказания, т. е. аффинный процесс выведения вектора движения субблока для цветности такой же, как и для яркости.
Следует понимать, что усреднение не требуется, то есть вектор движения может быть определен с использованием вектора движения совместно расположенного субблока яркости, или эта операция усреднения будет принимать в качестве входных данных один и тот же MV дважды и генерировать один и тот же вектор движения как выходные данные. Размер субблока яркости или цветности может быть 4×4.
Фиг. 12A показывает несколько примеров поднабора S, который содержит позиции субблоков яркости для данной позиции субблока цветности, когда формат цветности установлен на 4:4:4. В этом примере рассматриваются четыре случая вывода поднабора S.
В первом случае позиция «A» (1201) цветности имеет соответствующие соседние блоки яркости, расположенные в позициях «A» (1202).
Во втором случае позиция «B» (1203) цветности выбирается на нижней границе блока цветности. В этом случае (кроме позиции справа-внизу) соответствующие позиции 1204 субблоков яркости, принадлежащих S, выбираются смежными по горизонтали.
В третьем случае позиция «C» (1205) цветности выбирается на правой границе блока цветности. В этом случае (за исключением правой нижней позиции) соответствующие позиции 1206 субблоков яркости, принадлежащих S, выбираются смежными по вертикали.
В четвертом случае позиция «D» (1207) цветности выбирается в нижнем правом углу блока цветности. В этом случае набор S содержит единственный субблок яркости, который расположен в нижнем правом углу блока яркости.
Фиг. 12B показывает другой вариант осуществления получения поднабора S. В этом варианте осуществления блоки цветности, расположенные на границе блока цветности, имеют соответствующие позиции в блоке яркости, как в четвертом случае «D», показанном на фиг. 12A.
В вариантах осуществления настоящего раскрытия, описанных выше, количество субблоков цветности такое же, как количество совместно расположенных субблоков яркости в случае, когда используется подвыборка цветности. В частности, количество субблоков яркости в горизонтальном направлении numSbX такое же, как количество субблоков цветности в горизонтальном направлении numSbX, а количество субблоков яркости в вертикальном направлении numSbY такое же, как количество субблоков цветности в вертикальном направлении numSbY. Соответственно, размеры субблоков цветности отличаются от размеров совместно расположенных субблоков яркости в случае, когда используется подвыборка цветности.
В других сценариях размеры субблоков цветности и субблоков яркости сохраняются одинаковыми независимо от формата цветности. В этих сценариях количество субблоков цветности в блоке цветности и количество субблоков яркости в совмещенном блоке яркости может быть различным. Следующий вариант осуществления направлен на вывод вектора движения цветности для субблоков одинакового размера для компоненты цветности и яркости. То есть для текущей картинки, содержащей блок текущей картинки, содержащий совместно расположенные блоки яркости и цветности, блок яркости текущей картинки включает в себя набор субблоков яркости одинакового размера, а блок цветности текущей картинки включает в себя набор одинакового размера субблоков цветности, а размер субблока цветности устанавливается равным размеру субблока яркости. Можно понять, что количество субблоков цветности отличается от количества совместно расположенных субблоков яркости в случае, когда используется подвыборка цветности. В частности, количество субблоков яркости в горизонтальном направлении, numSbX, отличается от количества субблоков цветности в горизонтальном направлении, numSbX, а количество субблоков яркости в вертикальном направлении, numSbY, отличается от количества субблоков цветности в вертикальном направлении, numSbY.
Как показано на фиг. 13A, в случае формата YUV 4: 2: 0, например, блок яркости текущей картинки имеет размер 8×8, четыре субблока яркости одинакового размера включены в блок яркости, и набор субблоков цветности одинакового размера включены в блок цветности текущей картинки (субблок цветности=блок цветности), при этом размер субблока цветности устанавливается равным размеру субблока яркости. Векторы движения двух субблоков яркости по диагонали усредняются, и усредненное MV используется для аффинного процесса вывода вектора движения субблока для субблока цветности. В частности, поскольку количество субблоков отличается, xSbIdx (индекс субблока субблока яркости в горизонтальном направлении) будет изменяться с размером шага SubWidth, и ySbIdx (индекс субблока субблока яркости в вертикальном направлении) будет изменяться с размером шага SubHeightC. Например, для формата 4: 2: 0 xSbIdx=0, 2, 4, 6 ... и ySbIdx=0, 2, 4, 6 …
Как показано на фиг. 13B, в случае формата YUV 4: 2: 2 векторы движения двух смежных по горизонтали субблоков яркости используются для усреднения согласно уравнению вышеприведенного варианта 4, чтобы сгенерировать вектор движения для субблока цветности. Усредненное MV используется для аффинного процесса вывода вектора движения субблока для субблока цветности. В частности, поскольку количество субблоков отличается, xSbIdx будет изменяться с размером шага SubWidth, а ySbIdx будет изменяться с размером шага SubHeightC. Например, для 4: 2: 2 xSbIdx=0, 2, 4, 8 ... и ySbIdx=0, 1, 2, 3 …
Как показано на фиг. 13C, в случае формата YUV 4:4:4 и количество, и размер равны для субблоков яркости и субблоков цветности. В этом случае для каждого субблока цветности вектор(ы) движения совместно расположенного субблока яркости используется для выполнения аффинного предсказания. Другими словами, аффинный процесс вывода вектора движения субблока для блока цветности такой же, как и для блока яркости. Например, для формата 4: 4: 4 xSbIdx=0, 1, 2, 3 ... и ySbIdx=0, 1, 2, 3 ... Следует отметить, что в этом случае операцию усреднения, указанную в уравнении вышеприведенного варианта 4, не нужно выполнять, потому что два субблока, используемые для усреднения, одинаковы, и операция усреднения будет выводить то же значение, что и входные данные. По существу, в этом случае вектор движения субблока яркости может быть выбран для субблока цветности без прохождения операции усреднения, сформулированной в уравнении любого предыдущего варианта.
Из вышеизложенного можно видеть, что блок будет иметь количество субблоков цветности, которое отличается от количества субблоков яркости, когда SubWidthC больше 1 или SubHeightC больше 1. Фиг. 14A показывает пример подразделения блока яркости 16×16 и подразделения совместно размещенного блока цветности для формата цветности YUV 4:2:0. В этом примере блок яркости разделен на 16 субблоков, каждый размером 4×4. Блок цветности имеет размер 8×8 выборок и разделен на 4 субблока, каждый из которых имеет размер 4×4 выборки. Эти 4 субблока цветности сгруппированы в 2 строки, каждая из которых имеет по 2 субблока. Буквы «A», «B», «C» и «D» указывают, какие субблоки яркости используются для выведения вектора движения для соответствующего субблока цветности, обозначенного той же буквой.
Фиг. 14B иллюстрирует подразделение блока яркости 16×16 и его совмещенного блока цветности на картинке, имеющей формат цветности YUV 4: 2: 2. В этом случае блок цветности имеет размер 8×16 выборок и подразделяется на 8 субблоков, сгруппированных в 4 строки, причем каждая строка имеет 2 субблока. Каждый субблок яркости и субблок цветности имеет размер 4×4 выборки. Буквы «A», «B», «C», «D», «E», «F», «G» и «H» указывают, какие субблоки яркости используются для выведения вектора движения для соответствующего субблока цветности, обозначенного той же буквой.
Предполагая, что блок яркости разделен на numSbY строк субблоков, каждая строка имеет numSbX субблоков, и что вектор движения задан или получен для каждого из субблоков яркости, представленный здесь вариант осуществления может быть определен следующим образом:
1. Первым этаповом является определение значений SubWidthC и SubHeightC на основе информации формата цветности, указывающей формат цветности текущей картинки (или кадра) кодирования или декодирования. Например, информация формата цветности может содержать информацию, представленную в приведенной выше таблице 1-1 или 1-2.
2. Второй этап может включать в себя: получение количества субблоков цветности вдоль горизонтального направления, numCSbX, и количества субблоков цветности вдоль вертикального направления, numCSbY, следующим образом:
numCSbX = numSbX >>( SubWidthC - 1), где numSbX - количество субблоков яркости в блоке яркости в горизонтальном направлении;
numCSbY = numSbY >>( SubHeightC - 1), где numSbY - количество субблоков яркости в блоке яркости в вертикальном направлении.
Блок яркости может быть кодируемым или декодируемым в настоящее время блоком кодируемой или декодируемой в настоящее время картинки.
3. Обозначение субблока цветности, расположенного в строке yCSbIdx и столбце xCSbIdx, с использованием пространственных индексов (xCSbIdx, yCSbIdx), где xCSbIdx=0, ..., numCSbX - 1 и yCSbIdx=0 .. numCSbY - 1, значение вектора движения цветности для субблока цветности можно определить следующим образом:
Пространственные индексы (xSbIdxL, ySbIdxL) совместно расположенного субблока яркости определяются следующим образом:
xSbIdxL = xCSbIdx << (SubWidthC - 1);
ySbIdxL = yCSbIdx << (SubHeightC - 1).
Пространственная позиция субблока цветности (sbX, sbY) внутри блока цветности может быть выведена с использованием пространственных индексов (xCSbIdx, yCSbIdx) следующим образом:
sbX=xCSbIdx * sbX;
sbY=yCSbIdx * sbY.
То же самое применимо к определению пространственной позиции для субблока яркости в пределах пространственных индексов (xSbIdx, ySbIdx) блока яркости для субблока яркости:
sbX=xSbIdx * sbX;
sbY=ySbIdx * sbY.
Определенные пространственные индексы совместно размещенного субблока яркости (xSbIdxL, ySbIdxL) могут быть дополнительно использованы при определении вектора движения цветности. Например, набор субблоков яркости может быть определен, как описано ниже:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))
В этом примере набор субблоков яркости включает в себя два субблока, проиндексированных S0 и S1, вычисленные выше. Каждый из S0 и S1 включает в себя пару пространственных индексов, определяющих позицию субблока.
Набор субблоков яркости используется для вычисления среднего вектора движения mvAvgLX. Здесь и в обозначениях вектора движения, используемых ниже, X может быть либо 0, либо 1, соответственно указывая индекс списка ссылок для вектора движения, являющийся либо L0, либо L1. L0 указывает список ссылок 0, а L1 указывает список ссылок 1. Предполагается, что вычисления вектора движения выполняются путем применения соответствующих формул независимо к горизонтальной составляющей mvAvgLX [0] и вертикальной составляющей mvAvgLX [1] вектора движения.
Если вектор движения яркости субблока с пространственными индексами (xSbIdxL, ySbIdxL) обозначен как mvLX[ xSbIdxL][ ySbIdxL], средний вектор движения mvAvgLX может быть получен следующим образом:
mvAvgLX = mvAvgLX 0>= 0 ? mvAvgLX >> 1 : -(( -mvAvgLX) >> 1)
где и горизонтальные и вертикальные пространственные индексы элемента Si, как обсуждалось выше, где i=0, 1.
Вектор движения субблока mvCLX цветности с пространственными индексами (xCSbIdx, yCSbIdx) получается из среднего вектора движения mvAvgLX следующим образом:
mvCLX [0] = mvAvgLX [0] * 2/SubWidthC
mvCLX [1] = mvAvgLX [1] * 2/SubHeightC
Подробности процесса выведения вектора движения яркости и цветности согласно представленным здесь вариантам осуществления описаны следующим образом в формате части спецификации проекта VVC:
8.5.5.9 Процесс выведения массивов векторов движения из аффинных векторов движения контрольных точек
Входные данные для этого процесса являются следующими:
местоположение яркости (xCb, yCb) верхней левой выборки текущего блока кодирования яркости относительно верхней левой выборки яркости текущей картинки,
две переменные cbWidth и cbHeight, определяющие ширину и высоту блока кодирования яркости соответственно,
количество векторов движения контрольной точки numCpMv,
векторы движения контрольной точки cpMvLX [cpIdx], с cpIdx=0..numCpMv - 1 и X равным 0 или 1,
ссылочный индекс refIdxLX и X равны 0 или 1,
количество субблоков кодирования яркости в горизонтальном направлении (numSbX) и в вертикальном направлении (numSbY).
Выходными данными этого процесса являются:
массив векторов движения субблока яркости mvLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 и X равным 0 или 1,
массив векторов движения субблока цветности mvCLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 и X равным 0 или 1.
Следующие присвоения сделаны для x=xCb..xCb+cbWidth - 1 и y=yCb..yCb+cbHeight - 1:
CpMvLX [x] [y] [0] = cpMvLX [0]
CpMvLX [x] [y] [1] = cpMvLX [1]
CpMvLX [x] [y] [2] = cpMvLX [2]
Переменные log2CbW и log2CbH выводятся следующим образом:
log2CbW=Log2 (cbWidth)
log2CbH=Log2 (cbHeight)
Переменные mvScaleHor, mvScaleVer, dHorX и dVerX выводятся следующим образом:
mvScaleHor = cpMvLX[0][0] << 7
mvScaleVer = cpMvLX[0][1] << 7
dHorX = (cpMvLX[1][0] - cpMvLX[0][0]) << (7 - log2CbW)
dVerX = (cpMvLX[1][1] - cpMvLX[0][1]) << (7 - log2CbW)
Переменные dHorY и dVerY выводятся следующим образом:
Если numCpMv равно 3, применяется следующее:
dHorY =(cpMvLX[2][0] - cpMvLX[0][0]) << (7 - log2CbH)
dVerY = (cpMvLX[2][1] - cpMvLX[0][1]) << (7 - log2CbH
В противном случае (numCpMv равно 2) применяется следующее:
dHorY = - dVerX
dVerY=dHorX
Для xSbIdx=0..numSbX - 1 и ySbIdx=0..numSbY - 1 применяется следующее:
Вектор движения яркости mvLX [xSbIdx] [ySbIdx] выводится следующим образом:
xPosCb=2+(xSbIdx << 2)
yPosCb = 2+(ySbIdx << 2)
mvLX[xSbIdx][ySbIdx][0]=(mvScaleHor+dHorX*xPosCb+dHorY*yPosCb)
mvLX[xSbIdx][ySbIdx][1] = (mvScaleVer + dVerX * xPosCb + dVerY * yPosCb)
Процесс округления для векторов движения, как указано в пункте 8.5.2.14, вызывается с mvX, установленным равным mvLX [xSbIdx] [ySbIdx], rightShift установлен равным 7, а leftShift установлен равным 0 в качестве входных данных и округленным mvLX [xSbIdx] [ ySbIdx] в качестве вывходных данных.
Векторы движения mvLX [xSbIdx] [ySbIdx] отсекаются следующим образом:
mvLX[xSbIdx][ySbIdx][0] = Clip3( -217, 217 - 1, mvLX[xSbIdx][ySbIdx][0])
mvLX[xSbIdx][ySbIdx][1] = Clip3( -217, 217 - 1, mvLX[xSbIdx][ySbIdx][1])
Переменные numCSbX и numCSbY определены следующим образом:
numCSbX = numCSbX >> (SubWidthC - 1)
numCSbY = numCSbY >> (SubHeightC - 1)
Следует отметить, что этот вариант осуществления отличается от предыдущих вариантов осуществления. В предыдущих вариантах осуществления количество субблоков яркости в блоке яркости и количество субблоков цветности в совмещенном блоке цветности одинаковы. В этом варианте осуществления, однако, для форматов цветности 4: 2: 0 и 4: 2: 2 количество субблоков яркости в блоке яркости и количество субблоков цветности в совмещенном блоке цветности различаются. Поскольку количество субблоков в блоке цветности и в блоке яркости различается, xSbIdx будет изменяться с размером шага SubWidth, а ySbIdx будет изменяться с размером шага SubHeightC, как можно видеть ниже.
Для xCSbIdx=0..numCSbX - 1 и yCSbIdx=0..numCSbY - 1 применяется следующее:
Средний вектор движения яркости mvAvgLX выводится следующим образом:
Если SubWidthC == 1 и SubHeightC == 1:
mvAvgLX=mvLX [xCSbIdx] [yCSbIdx]
Иначе
– xSbIdxL = xCSbIdx << (SubWidthC - 1)
– ySbIdxL = yCSbIdx << (SubHeightC - 1)
– mvAvgLX = mvLX[xSbIdxL ][ySbIdxL ]+ mvLX[ xSbIdxL + (SubWidthC-1)][ySbIdxL + (SubHeightC-1)]
mvAvgLX[0] = mvAvgLX[0] >= 0 ? (mvAvgLX[0]) >> 1 : -(( -mvAvgLX[0]) >> 1)
mvAvgLX[1] = mvAvgLX[1] >= 0 ? (mvAvgLX[1]) >> 1 : -(( -mvAvgLX[1]) >> 1)
Процесс вывода векторов движения цветности в пункте 8.5.2.13, представленный ниже, вызывается с mvAvgLX и refIdxLX в качестве входных данных и с массивом векторов движения цветности mvCLXSub [xCSbIdx] [yCSbIdx] в качестве выходных данных.
Массив векторов движения субблока цветности mvCLX [xSbIdx] [ySbIdx] с xSbIdx=0..numSbX - 1, ySbIdx=0 .. numSbY - 1 выводится из mvCLXSub следующим образом:
mvCLX[xSbIdx][ySbIdx] = mvCLXSub[xSbIdx>>(SubWidthC-1) ][ySbIdx >> (SubHeightC - 1)]
Следует отметить, что операция усреднения, представленная выше, предназначена для иллюстрации и не должна рассматриваться как ограничение. Различные другие способа выполнения операции усреднения могут использоваться при определении векторов движения цветности из векторов движения яркости.
8.5.2.13 Процесс вывода векторов движения цветности
Входными данными для этого процесса является следующее:
вектор движения яркости с точностью 1/16 фракционной выборки mvLX,
ссылочный индекс refIdxLX.
Выходными данными этого процесса является вектор движения цветности с точностью до 1/32 фракционной выборки mvCLX.
Вектор движения цветности выводится из соответствующего вектора движения яркости.
Вектор движения цветности mvCLX выводится следующим образом:
mvCLX [0] = mvLX [0] * 2/SubWidthC
mvCLX [1] = mvLX [1] * 2/SubHeightC
Операции этого процесса деривации зависят от того, как этот процесс вызывается. Например, ранее было описано, что «процесс вывода векторов движения цветности в пункте 8.5.2.13 вызывается с mvAvgLX и refIdxLX в качестве входных данных, а также с массивом векторов движения цветности mvCLXSub [xCSbIdx] [yCSbIdx] в качестве выходных данных». В этом примере mvLX в пункте 8.5.2.13, описанном здесь, будет заменен на mvAvgLX для выполнения операций по мере его вызова.
Существуют дополнительные аспекты, относящиеся к вариантам осуществления, которые учитывают смещение между позициями подвыборки для выборок цветности относительно позиции выборок яркости.
Примерный вариант осуществления должен задавать или определять набор S субблоков яркости в соответствии со значением sps_cclm_colocated_chroma_flag. Конкретно,
Когда SubHeightC=1 и SubWidthC=2 и sps_cclm_colocated_chroma_flag установлен равным 1, набор S состоит из одного элемента S0 = (xSbIdxL, ySbIdxL)
В противном случае набор S включает в себя
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))
Другой примерный вариант осуществления вводит зависимость между определением среднего вектора движения и значением «sps_cclm_colocated_chroma_flag». В частности, веса вводятся в операциях усреднения и могут указываться по-разному для разных субблоков яркости. Примерный процесс получения среднего вектора движения выглядит следующим образом:
xSbIdxL = xCSbIdx << (SubWidthC - 1)
ySbIdxL = yCSbIdx << (SubHeightC - 1).
sps_cclm_colocated_chroma_flag устанавливается равным 1, весовые коэффициенты w0 и w1 устанавливаются следующим образом: w0=5, w1=3;
mvAvgLX = w0 * mvLX[ xSbIdxL ][ySbIdxL ] +
+ w1 * mvLX[xSbIdxL + (SubWidthC-1)][ySbIdxL + (SubHeightC-1)]
mvAvgLX[0] = mvAvgLX[0] >= 0 ? (mvAvgLX[0] + 3) >>3 : -(( -mvAvgLX[0] +3) >> 3)
mvAvgLX[1] = mvAvgLX[1] >= 0 ? (mvAvgLX[1] + 3) >> 3 : -( -AvgLX[1]+3) >> 3)
Следует отметить, что операция усреднения, представленная в этом примере, предназначена для иллюстрации и не должна рассматриваться как ограничение. Различные другие способы выполнения операции усреднения могут использоваться при определении векторов движения цветности из векторов движения яркости.
Фиг. 15 является блок-схемой примерного способа 1300 для аффинного внешнего предсказания субблоков цветности, при этом способ включает:
На этапе 1501 определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки;
На этапе 1503 определение набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; и
На этапе 1505 определение вектора движения для субблока цветности упомянутого блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости.
Фиг. 16 является блок-схемой другого примерного способа 1300 для аффинного внешнего предсказания субблоков цветности, при этом способ содержит:
На этапе 1601 определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки;
На этапе 1603 определение значения вектора движения для каждого субблока яркости во множестве субблоков яркости, при этом N субблоков яркости включены в блок яркости;
На этапе 1605 выполняется усреднение векторов движения субблоков яркости в наборе S субблоков яркости, при этом набор (S) определяется на основе коэффициентов масштабирования цветности; и
На этапе 1607 для субблока цветности во множестве субблоков цветности выводят вектор движения для субблока цветности на основе среднего вектора движения яркости, при этом субблоки цветности включены в блок цветности.
Настоящее изобретение раскрывает способ учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов яркости выполняется линейная подвыборка поля движения яркости. Когда цветовые плоскости цветности имеют ту же высоту, что и плоскость яркости, более целесообразно выбирать векторы движения из блоков яркости, которые смежны по горизонтали, чтобы они имели одинаковую вертикальную позицию. Выбор векторов движения яркости, который зависит от формата цветности картинки, приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие позиции блоков яркости при усреднении векторов движения яркости. Как следствие более точной интерполяции поля движения, ошибка предсказания уменьшается, что имеет технический результат в улучшении характеристик сжатия.
Кроме того, когда количество субблоков цветности задано равным количеству субблоков яркости, и когда размер цветовой плоскости цветности не равен размеру плоскости яркости, векторы движения смежных субблоков цветности могут принимать одинаковое значение. При реализации этих этапов обработки можно выполнить оптимизацию, пропустив этап вычисления повторяющихся значений. Предлагаемое изобретение раскрывает способ определения размера субблока цветности, равного размеру субблока яркости. В этом случае реализация может быть упрощена за счет унификации обработки яркости и цветности, и, естественно, можно избежать избыточных вычислений вектора движения.
Фиг. 17 иллюстрирует устройство для аффинного внешнего предсказания согласно другому аспекту изобретения. Устройство 1700 содержит:
модуль 1701 определения, сконфигурированный для определения коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки; и определять набор (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; и
модуль 1703 выведения вектора движения, сконфигурированный для определения вектора движения для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости.
В примере модуль 1703 вывода вектора движения может содержать:
модуль 1703a выведения вектора движения яркости, сконфигурированный для определения значения вектора движения для каждого субблока яркости во множестве субблоков яркости, при этом множество субблоков яркости включено в блок яркости;
модуль 1703b выведения вектора движения цветности, сконфигурированный для субблока цветности во множестве субблоков цветности, определения вектора движения для субблока цветности на основе вектора движения по меньшей мере одного субблока яркости в наборе (S) субблоков яркости, при этом набор (S) определяется на основе коэффициентов масштабирования цветности; при этом субблоки цветности включены в блок цветности. В схеме равного размера, множество субблоков цветности может составлять только один субблок цветности.
Устройство 1700 дополнительно содержит: модуль 1705 компенсации движения, сконфигурированный для генерации предсказания субблока цветности на основе определенного вектора движения.
Соответственно, в некотором примере, примерная структура устройства 1700 может соответствовать кодеру 200 на фиг. 2. В другом примере примерная структура устройства 1700 может соответствовать декодеру 300 на фиг. 3.
В другом примере примерная структура устройства 1700 может соответствовать блоку 244 внешнего предсказания на фиг. 2. В другом примере примерная структура устройства 1700 может соответствовать блоку 344 внешнего предсказания на фиг. 3.
Настоящее раскрытие предоставляет следующие дополнительные аспекты.
Согласно первому аспекту изобретения предоставляется способ вывода вектора движения цветности, используемый в аффинной компенсации движения блока внешнего предсказания, PU, причем PU, содержит совмещенные блоки яркости и цветности, причем способ содержит
определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях (SubWidthC и SubHeightC) на основе формата цветности текущей картинки (например, текущего кодирования или декодирования картинки);
разделение блока яркости текущей картинки на первый набор субблоков яркости;
получение значения вектора движения для каждого субблока яркости в первом наборе субблоков яркости;
разделение блока цветности текущей картинки (в примере, блок цветности и блок яркости содержатся в одном и том же PU) на набор субблоков цветности;
для субблока цветности в наборе субблоков цветности определяют второй набор субблоков (S) яркости, при этом позиции субблоков яркости во втором наборе определяются форматом цветности текущей картинки; и
получение вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе S.
В возможной форме реализации способа согласно первому аспекту как таковому второй набор субблоков (S) яркости содержит любую комбинацию следующих субблоков:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))
S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)
S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором второй набор субблоков (S) яркости содержит два субблока:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором получение вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе S содержит усреднение векторов движения субблоков яркости во втором наборе S.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:
mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2(N) - это степень, до которой число 2 должно быть увеличено, чтобы получить значение N, а “>>” - это арифметический сдвиг вправо.
В возможной форме реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S включает следующие этапы:
mvAvgLX =
если mvAvgLX[ 0 ] больше или равно 0, то
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), иначе,
mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )
если mvAvgLX[ 1 ] больше или равно 0, то
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), иначе,
mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N)), где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока Luma с индексами и , N - это количество элементов во втором наборе субблоков (S) яркости, log2 (N) - это степень, до которой число 2 должно быть увеличено, чтобы получить значение N, а “>>” -арифметический сдвиг вправо.
Согласно второму аспекту изобретения предоставляется способ вывода вектора движения цветности, используемый в аффинной компенсации движения блока внешнего предсказания, PU, содержащего совместно расположенные блоки яркости и цветности, причем способ содержит:
получение первого набора субблоков яркости, при этом первый набор субблоков яркости включен в блок яркости текущей картинки (например, текущего кодирования или декодирования картинки);
получение значения вектора движения для каждого субблока яркости в первом наборе субблоков яркости;
получение набора субблоков цветности, причем набор субблоков цветности включен в блок цветности текущей картинки (в примере, блок цветности и блок яркости содержатся в одном и том же PU); и
получение вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе (S) субблоков яркости, при этом для субблока цветности в наборе субблоков цветности второй набор (S) субблоков яркости (S) определяется из первого набора субблоков яркости согласно формату цветности текущей картинки.
В возможной форме реализации способа согласно второму аспекту как таковому, в котором второй набор субблоков (S) яркости содержит любую комбинацию следующих субблоков:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))
S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)
S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором второй набор субблоков (S) яркости содержит два субблока:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором вывод вектора движения для субблока цветности на основе векторов движения субблоков яркости во втором наборе S содержит:
усреднение векторов движения субблоков яркости во втором наборе S.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит:
усреднение горизонтальной составляющей векторов движения субблоков яркости во втором наборе S; и/или
усреднение вертикальной составляющей векторов движения субблоков яркости во втором наборе S.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение элементов содержит проверку того, является ли сумма элементов (например, больше или равна 0,
в случае, если сумма элементов больше или равна 0, сумма элементов делится операцией сдвига в зависимости от количества элементов;
в противном случае абсолютное значение суммы элементов делится с помощью операции сдвига в зависимости от количества элементов, и из сдвинутого результата получается отрицательное значение.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап разделения посредством операции сдвига содержит:
округление до нуля;
округление от нуля;
округление от бесконечности; или
округление к бесконечности.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит: усреднение или округление от нуля.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит усреднение или округление до нуля.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит усреднение или округление от бесконечности.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором этап усреднения содержит усреднение или округление до бесконечности.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:
mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:
mvAvgLX =
если mvAvgLX[ 0 ] больше или равно 0, то
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), иначе,
mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )
если mvAvgLX[ 1 ] больше или равно 0, то
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), иначе,
mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо.
В возможной форме реализации способа согласно любой предыдущей реализации второго аспекта или второго аспекта как такового, в котором усреднение векторов движения субблоков яркости во втором наборе S содержит следующие этапы:
mvAvgLX = если mvAvgLX[ 0 ] больше или равно 0, то mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) ) если mvAvgLX[ 1 ] больше или равно 0, то mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), иначе, mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N) ),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо.
Согласно третьему аспекту изобретения предоставляется способ аффинной компенсации движения текущей картинки, который содержит:
разделение блока яркости текущей картинки на набор субблоков яркости одинакового размера, и
разделение блока цветности текущей картинки на набор субблоков цветности одинакового размера, при этом размер субблока цветности устанавливается равным размеру субблока яркости.
В возможной форме реализации способа согласно третьему аспекту как такового, причем способ дополнительно включает:
определение количества субблоков цветности в горизонтальном и вертикальном направлениях на основе значений коэффициентов масштабирования цветности.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях (SubWidthC и SubHeightC) определяются на основе формата цветности текущей картинки (например, текущее кодирование или декодирование картинки).
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором
numCSbX = numSbX >>(SubWidthC-1) and
numCSbY = numSbY >>( SubHeightC -1);
numCSbX и numCSbY представляют количество субблоков цветности в горизонтальном и вертикальном направлениях соответственно.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором разделение блока цветности текущей картинки содержит:
разделение блока цветности текущей картинки (в примере, блок цветности и блок яркости содержатся в одном и том же PU) на numCSbY строк, каждая строка имеет numCSbX субблоков цветности.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где способ дополнительно включает:
для каждого из субблоков цветности определяют набор субблоков (S) яркости, при этом позиции субблоков яркости в наборе определяются форматом цветности текущей картинки; и
выводят вектор движения для субблока цветности на основе векторов движения субблоков яркости в наборе S.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором вектор движения определяется для каждого из субблоков яркости, принадлежащих набору S.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором набор субблоков (S) яркости содержит любую комбинацию следующих субблоков:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1))
S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL)
S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1))
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором набор субблоков (S) яркости содержит два субблока:
S0 = (xSbIdxL, ySbIdxL)
S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1)).
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором выведение вектора движения для субблока цветности на основе векторов движения субблоков яркости в наборе S включает усреднение векторов движения субблоков яркости в наборе S.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит:
усреднение горизонтальной составляющей векторов движения субблоков яркости в наборе S,
усреднение вертикальной составляющей векторов движения субблоков яркости в наборе S.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение элементов включает проверку того, больше ли сумма элементов или равна 0.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение, отличное от нуля.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение к нулю.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение от бесконечности.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где усреднение означает усреднение до бесконечности.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит следующие этапы:
mvAvgLX =
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N)
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит следующие этапы:
mvAvgLX =
если mvAvgLX[ 0 ] больше или равно 0, то
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + N>>1) >> log2(N), иначе,
mvAvgLX[ 0 ] = - ( - mvAvgLX[ 0 ] + N>>1 ) >> log2(N) )
если mvAvgLX[ 1 ] больше или равно 0, то
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + N>>1) >> log2(N), иначе,
mvAvgLX[ 1 ] = - ( - mvAvgLX[ 1 ] + N>>1 ) >> log2(N) ),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором усреднение векторов движения субблоков яркости в наборе S содержит следующие этапы:
mvAvgLX =
если mvAvgLX[ 0 ] больше или равно 0, то
mvAvgLX[ 0 ] = ( mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N), иначе,
mvAvgLX[ 0 ] = - ( (- mvAvgLX[ 0 ] + (N>>1) - 1) >> log2(N) )
если mvAvgLX[ 1 ] больше или равно 0, то
mvAvgLX[ 1 ] = ( mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N), иначе,
mvAvgLX[ 1 ] = - ( (- mvAvgLX[ 1 ] + (N>>1) - 1) >> log2(N)),
где mvAvgLX - результат усреднения, mvAvgLX [0] - горизонтальная составляющая вектора движения mvAvgLX, mvAvgLX [1] - вертикальная составляющая вектора движения mvAvgLX, и - горизонтальные и вертикальные индексы субблока Si в массиве векторов движения, - вектор движения субблока яркости с индексами и , N - количество элементов во втором наборе субблоков (S) яркости, log2 (N) - представляет собой степень, до которой число 2 возводится для получения значения N, и “>>” - это арифметический сдвиг вправо.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, где N равно 1.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором набор S определяется на основе значения sps_cclm_colocated_chroma_flag.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором вывод среднего вектора движения выполняется на основе значения sps_cclm_colocated_chroma_flag.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором формат цветности определяется как YUV 4: 2: 2.
В возможной форме реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором блок цветности и блок яркости содержатся в одном и том же PU, а блоки яркости и цветности совмещены.
Четвертый аспект кодера (20), содержащий схему обработки для выполнения способа согласно любому из аспектов с первого по третий.
Пятый аспект декодера (30), содержащий схему обработки для выполнения способа согласно любому из аспектов с первого по третий.
Шестой аспект компьютерного программного продукта, содержащий программный код для выполнения способа согласно любому из аспектов с первого по третий.
Седьмой аспект декодера, содержащий:
один или несколько процессоров; и энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа в соответствии с любым из аспектов с первого по третий.
Восьмой аспект кодера, содержащий:
один или несколько процессоров; и энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа в соответствии с любым из аспектов с первого по третий.
На основании вышеизложенного настоящее раскрытие направлено на раскрытие способа учета формата цветности картинки при получении векторов движения цветности из векторов движения яркости. Путем усреднения векторов движения яркости выполняется линейная подвыборка поля движения яркости. Когда цветовые плоскости цветности имеют ту же высоту, что и плоскость яркости, более целесообразно выбирать векторы движения из блоков яркости, которые смежны по горизонтали, чтобы они имели одинаковую вертикальную позицию. Выбор векторов движения яркости в зависимости от формата цветности картинки приводит к более точному полю движения цветности благодаря более точной подвыборки поля вектора движения яркости. Эта зависимость от формата цветности позволяет выбирать наиболее подходящие блоки яркости при усреднении векторов движения яркости для генерации вектора движения цветности. Как следствие более точной интерполяции поля движения, ошибка предсказания уменьшается, что приводит к техническому результату улучшения характеристик сжатия.
Ниже приводится объяснение применений способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.
Фиг. 18 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Данная система 3100 поставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и необязательно включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.
Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по-отдельности.
В системе 3100 поставки контента терминальное устройство 3106 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинацию, или подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда закодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда закодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.
Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования картинки или устройство декодирования картинки, как показано в вышеупомянутых вариантах осуществления.
Фиг. 19 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.
После того, как блок 3202 обработки протокола обработает поток, генерируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на закодированные аудиоданные и закодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, закодированные аудиоданные и закодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.
Посредством обработки демультиплексирования генерируются элементарный видеопоток (ES), аудио ES и, необязательно, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерирования видеокадра и подает эти данные в синхронный блок 3212. Аудиодекодер 3212 декодирует аудио ES для генерации аудиокадра и подает эти данные в синхронный блок 3212. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на ФИГ. Y) перед его подачей в синхронный блок 3212. Аналогично аудиокадр может сохраняться в буфере (не показан на ФИГ. Y) перед его подачей в синхронный блок 3212.
Синхронный блок 3212 синхронизирует видеокадр и аудиокадр и подает видео/аудио на видео/аудио дисплей 3214. Например, синхронный блок 3212 синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.
Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования картинки, либо устройство декодирования картинки в вышеупомянутых вариантах осуществления может быть включено в другую систему, например, автомобильную систему.
Математические операторы
Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, и определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т. д.
Арифметические операторы
Следующие арифметические операторы определены следующим образом:
Логические операторы
Следующие логические операторы определены следующим образом:
x && y
х || y Булево логическое "или" для x и y
! Булево логическое «не»
x?y:z Если x равен ИСТИНЕ или не равен 0, вычисляется значение y; в противном случае вычисляется значение z.
Операторы отношения
Следующие операторы отношения определены следующим образом:
> Больше
>= Больше или равно
< Меньше
<= Меньше или равно
= == Равно
!=Не равно
Когда оператор сравнения применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение «na» не считается равным любому другому значению.
Битовые операторы
Следующие битовые операторы определены следующим образом:
& Побитовое «и». При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более старших битов, равных 0.
| При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более старших битов, равных 0.
^ При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более старших битов, равных 0.
x >> y Арифметический сдвиг вправо целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB для x до операции сдвига.
x << y Арифметический сдвиг влево целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие биты (LSB) в результате сдвига влево, имеют значение, равное 0.
Операторы присваивания
Следующие арифметические операторы определены следующим образом:
= оператор присваивания
+ +Приращение, т.е. x+ + эквивалентно x=x+1; при использовании в индексе массива оценивается в значение переменной до операции приращения.
- - Уменьшение, т.е. x- - эквивалентно x=x - 1; при использовании в индексе массива оценивает значение переменной до операции уменьшения.
+= Приращение на указанную величину, т.е. x += 3 эквивалентно x=x+3, а x += (-3) эквивалентно x=x + (-3).
-= Уменьшение на указанную величину, т.е. x -= 3 эквивалентно x=x - 3, а x -= (-3) эквивалентно x=x - (-3).
Обозначение диапазона
Следующее обозначение используется для указания диапазона значений:
x = y..z x принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, а z больше y.
Математические функции
Определены следующие математические функции:
Abs( x ) =
Asin( x ) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от 1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан.
Atan(x) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан.
Atan2( y, x ) =
Ceil( x )наименьшее целое, большее чем или равное x.
Clip1Y( x ) = Clip3( 0, ( 1 << BitDepthY ) - 1, x )
Clip1C( x ) = Clip3( 0, ( 1 << BitDepthC ) - 1, x )
Clip3( x, y, z ) =
Cos( x ) тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан.
Floor( x ) наибольшее целое число, меньшее или равное x.
GetCurrMsb( a, b, c, d ) =
Ln( x ) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2.718 281 828...).
Log2( x ) логарифм x по основанию 2
Log10( x ) логарифм x по основанию 10.
Min( x, y ) =
Max( x, y ) =
Round( x ) = Sign( x ) * Floor( Abs( x ) + )
Sign( x ) =
Sin( x ) тригонометрическая функция синуса, работающая с аргументом x в единицах радиан.
Sqrt( x ) =
Swap( x, y ) = ( y, x )
Tan( x ) тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан.
Порядок приоритетности операций
Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:
-- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.
-- Операции с одинаковым приоритетом оцениваются последовательно слева направо.
В таблице ниже указан приоритет операций от наивысшей к низшей; более высокая позиция в таблице указывает на более высокий приоритет.
Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.
Таблица: Приоритетность операций от наивысшей (в верхней части таблицы) до низшей (в нижней части таблицы)
Текстовое описание логических операций
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
если (условие 0 )
определение 0
иначе если (условие 1)
определение 1 ...
иначе /* информативный комментарий по оставшемуся условию */ определение n
может быть описано следующим образом:
... как указано ниже / ... применяется следующее:
- если условие 0, определение 0
- Иначе, если условие 1, определение 1
- …
-- Иначе (информативный комментарий по оставшемуся условию), определение n.
Каждое определение «если … иначе, если … иначе, …» в тексте вводится словами «… как указано ниже» или «…применяется следующее», за которым сразу следует «если …». Последним условием «если … иначе, если … иначе, …» всегда является «иначе, …». Чередование определений «если … иначе, если … иначе, …» могут быть идентифицированы путем сопоставления «… как указано ниже» или «… применяется следующее» с завершающим «иначе,…».
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
если ( условие 0a && условие 0b )
определение 0
иначе если( условие 1a | | условие 1b )
определение 1 …
мначе определение n
может быть описано следующим образом:
… как указано ниже / … применяется следующее:
-- Если все из следующих условий истинны, определение 0:
- условие 0a
- условие 0b
-- Иначе, если истинными являются одно или более из следующих условий, определение 1:
- условие 1a
- условие 1b
- …
- Иначе, определение n
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
если (условие 0 )
определение 0
если (условие 1)
определение 1
может быть описано следующим образом:
Когда условие 0, определение 0
Когда условие 1, определение 1
Изобретение было описано в связи с различными вариантами осуществления в данном документе. Однако другие варианты раскрытых вариантов осуществления могут быть поняты и осуществлены специалистами в данной области техники при практической реализации заявленного изобретения на основе изучения чертежей, данного раскрытия и прилагаемой формулы изобретения. В формуле изобретения слово «содержащий» не исключает другие элементы или этапы, а упоминание чего-либо в единственном числе, не исключает множественности. Один процессор или другой блок может выполнять функции нескольких элементов, указанных в формуле изобретения. Простой факт, что определенные меры изложены в обычно различных зависимых пунктах формулы изобретения, не означает, что комбинация этих мер не может быть использована с выгодой. Компьютерная программа может храниться/распространяться на подходящем носителе, таком как оптический носитель данных или твердотельный носитель, поставляемый вместе с другим аппаратным обеспечением или как его часть, но также может распространяться в других формах, например, через Интернет или другие системы проводной или беспроводной связи.
Специалист в данной области техники поймет, что «блоки» («модули») на различных фигурах (способ и устройство) представляют или описывают функциональные возможности вариантов осуществления изобретения (а не обязательно отдельные «блоки» в аппаратном или программном обеспечении) и таким образом они в равной степени описывают функции или особенности вариантов осуществления устройства, а также варианты осуществления способа (блок=этап).
Термин «блок» используется лишь для целей иллюстрации функциональных возможностей вариантов осуществления кодера/декодера и не предназначен для ограничения данного раскрытия.
В нескольких вариантах осуществления, представленных в данной заявке, следует понимать, что раскрытые система, аппаратура и способ могут быть реализованы другими способами. Например, описанный вариант осуществления аппаратуры является лишь примерным. Например, разделение на блоки является лишь логическим разделением по функциям, а в фактической реализации может иметь место другое разделение. Например, множество блоков или составляющих могут быть объединены или интегрированы в другую систему, или некоторые признаки могут игнорироваться или не выполняться. Кроме того, показанные или описанные взаимные связи или прямые связи или коммуникационные соединения могут быть реализованы с использованием некоторых интерфейсов. Непрямые связи или коммуникационные соединения между аппаратурами или блоками могут быть реализованы электрическими, механическими или иметь другие формы.
Блоки, описанные как отдельные части, могут быть или могут не быть физически отдельными, а части, показанные как блоки, могут быть или могут не быть физическими блоками, могут быть расположены в одном месте или могут быть распределены по множеству сетевых блоков. Некоторые или все блоки могут быть выбраны согласно фактическим требованиям для достижения целей решений в вариантах осуществления.
Кроме того, функциональные блоки в вариантах осуществления настоящего изобретения могут быть интегрированы в один блок обработки, или каждый из блоков может существовать физически отдельно, или два или более блоков интегрируются в один блок.
Варианты осуществления изобретения могут дополнительно включать в себя аппаратуру, например кодер и/или декодер, который содержит схему обработки, выполненную с возможностью выполнения любого из способа и/или процессов, описанных в данном документе.
Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодирования, следует отметить, что варианты осуществления системы 10 кодировки, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижной картинки, т.е. обработки или кодирования отдельной картинки независимо от любого предшествующей или последующей картинки, как при видеокодировании. В общем, только блоки 244 внешнего предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодирование для обработки картинки ограничено одной картинкой 17. Все другие функциональные возможности (также именуемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных картинок, например вычисления 204/304 остатка, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, внутреннего предсказания 254/354 и/или контурной фильтрации 220, 320 и энтропийного кодирования 270 и энтропийного декодирования 304.
Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, микропрограммным обеспечением или любой их комбинацией. Если реализованы в программном обеспечении, функции могут храниться на считываемом компьютером носителе или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером носителям, которые являются долговременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на долговременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.
Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации методик, описанных в данном документе. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования или включенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.
Методики этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных составляющих, в том числе беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением.
название | год | авторы | номер документа |
---|---|---|---|
СПОСОБ И УСТРОЙСТВО ДЛЯ ВНУТРИКАДРОВОГО ПРЕДСКАЗАНИЯ С ИСПОЛЬЗОВАНИЕМ ЛИНЕЙНОЙ МОДЕЛИ | 2020 |
|
RU2809841C2 |
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ, ИСПОЛЬЗУЮЩИЕ ВЫДЕЛЕННЫЙ БУФЕР IBC, И ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ, ОБНОВЛЯЮЩЕЕ КОМПОНЕНТ ЯРКОСТИ И ЦВЕТНОСТИ | 2020 |
|
RU2801326C2 |
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2020 |
|
RU2801587C1 |
ОГРАНИЧЕНИЕ РАЗМЕРА НА ОСНОВЕ ВНУТРИКАДРОВОГО РЕЖИМА ЦВЕТНОСТИ | 2020 |
|
RU2807441C2 |
ИНТЕРПОЛЯЦИЯ ДЛЯ ВНЕШНЕГО ПРЕДСКАЗАНИЯ С УТОЧНЕНИЕМ | 2019 |
|
RU2808586C2 |
СПОСОБ И УСТРОЙСТВО ДЛЯ ХРАНЕНИЯ ИНФОРМАЦИИ О ДВИЖЕНИИ | 2023 |
|
RU2815734C1 |
СПОСОБ И УСТРОЙСТВО ДЛЯ ХРАНЕНИЯ ИНФОРМАЦИИ О ДВИЖЕНИИ | 2019 |
|
RU2793825C1 |
СПОСОБ КОНТЕКСТНО-ЗАВИСИМОГО КОДИРОВАНИЯ ДЛЯ РЕЖИМА С ПРОПУСКОМ ПРЕОБРАЗОВАНИЯ | 2020 |
|
RU2817139C2 |
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ РЕЖИМА СУББЛОЧНОГО РАЗДЕЛЕНИЯ | 2020 |
|
RU2811983C2 |
ПЕРЕДАЧА В СЛУЖЕБНЫХ СИГНАЛАХ ПРЕДИКТОРА ВЕКТОРА ДВИЖЕНИЯ НА ОСНОВЕ СУБЪЕДИНИЦ ПРЕДСКАЗАНИЯ | 2019 |
|
RU2783333C2 |
Изобретение относится к средствам для кодирования изображений. Технический результат заключается в повышении эффективности кодирования изображений. Определяют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности. При этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки. Определяют набор (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности. Определяют вектор движения цветности для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости. Когда SubWidthC и SubHeightC равны 1, набор субблоков (S) яркости содержит субблок яркости, индексированный как S0 = (xSbIdx, ySbIdx). Когда по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит: первый субблок яркости, индексированный как S0 = ((xSbIdx >> (SubWidthC – 1) << (SubWidthC – 1)), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))), и второй субблок яркости, индексированный как S1 = ((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + ( SubHeightC − 1)). 7 н. и 26 з.п. ф-лы, 33 ил.
1. Способ получения вектора движения цветности, используемый в аффинном внешнем предсказании блока текущей картинки, содержащего блок яркости и совместно расположенный блок цветности, причем способ содержит
определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки;
определение набора (S) субблоков яркости блока яркости на основе значений коэффициентов масштабирования цветности; и
определение вектора движения цветности для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости;
когда SubWidthC и SubHeightC равны 1, набор субблоков (S) яркости содержит субблок яркости, индексированный как
S0 = (xSbIdx, ySbIdx);
когда по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит: первый субблок яркости, индексированный как
S0=((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))), и второй субблок яркости, индексированный как
S1=((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1)),
где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно;
xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении соответственно для субблока яркости в наборе (S);
«<<» представляет собой арифметический сдвиг влево;
«>>» представляет собой арифметический сдвиг вправо;
xSbIdx = 0...numSbX - 1 и ySbIdx = 0...numSbY - 1;
numSbX указывает количество субблоков яркости в блоке яркости в горизонтальном направлении; и
numSbY указывает количество субблоков яркости в блоке яркости в вертикальном направлении.
2. Способ по п. 1, в котором каждый из одного или нескольких субблоков яркости в наборе (S) представлен индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении.
3. Способ по п. 1 или 2, в котором количество субблоков цветности в блоке цветности в горизонтальном направлении и вертикальном направлении совпадает с количеством субблоков яркости в блоке яркости в горизонтальном и вертикальном направлениях соответственно.
4. Способ по любому из пп. 1-3, в котором для субблока цветности, индексированного индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении, набор субблоков (S) яркости содержит один или несколько субблоков, индексированных как:
S0 = (xSbIdxL, ySbIdxL),
S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1)),
S2 = (xSbIdxL + (SubWidthC-1), ySbIdxL), или
S3 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1));
при этом индекс S0 субблока яркости представлен индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;
индекс S1 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1);
индекс S2 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL; и
индекс S3 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1).
5. Способ по любому из пп. 1-4, в котором набор субблоков (S) яркости содержит:
первый субблок яркости, индексированный как S0 = (xSbIdxL, ySbIdxL), и второй субблок яркости, индексированный как S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1));
при этом позиция S0 блока яркости представлена индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;
позиция S1 блока яркости представлена индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1).
6. Способ по любому из пп. 1-5, в котором:
когда форматом цветности является 4:4:4, набор (S) содержит один субблок яркости, совмещенный с субблоком цветности;
когда форматом цветности является 4:2:2, набор (S) содержит два субблока яркости, горизонтально смежные друг с другом;
когда форматом цветности является 4:2:0, набор (S) содержит два субблока яркости, которые диагональны.
7. Способ по любому из пп. 1-6, в котором, когда имеется более одного субблока яркости в наборе (S), упомянутое определение вектора движения для субблока цветности на основе вектора движения одного или нескольких субблоков яркости в наборе (S) субблоков яркости содержит:
усреднение векторов движения субблоков яркости в наборе (S), чтобы сгенерировать усредненный вектор движения яркости; и
получение вектора движения для субблока цветности на основе усредненного вектора движения яркости.
8. Способ по п. 7, в котором усреднение векторов движения субблоков яркости в наборе (S) содержит одно или несколько из:
усреднения горизонтальной составляющей векторов движения субблоков яркости в наборе (S); и
усреднения вертикальной составляющей векторов движения субблоков яркости в наборе (S).
9. Способ по п. 7 или 8, в котором усреднение векторов движения субблоков яркости в наборе (S) для генерации усредненного вектора движения яркости содержит:
mvAvgLX = ,
когда mvAvgLX[0] больше или равно 0, mvAvgLX[0] = (mvAvgLX[0] + (N>>1) – 1) >> log2(N), иначе
mvAvgLX[0] = −((−mvAvgLX[0] + (N>>1) – 1) >> log2(N));
когда mvAvgLX[1] больше или равно 0, mvAvgLX[1] = (mvAvgLX[1] + (N>>1) – 1) >> log2(N), иначе
mvAvgLX[1] = −((−mvAvgLX[1] + (N>>1) – 1) >> log2(N)), причем
mvAvgLX - результирующий вектор движения усреднения;
mvAvgLX[0] - горизонтальная составляющая результирующего вектора mvAvgLX движения и
mvAvgLX[1] - вертикальная составляющая результирующего вектора mvAvgLX движения;
и - горизонтальный и вертикальный индексы субблока Si в наборе субблоков (S) яркости в массиве векторов движения,
- вектор движения субблока яркости с индексами и , N - количество элементов в наборе (S) субблока яркости, log2(N) - представляет собой логарифм N c основанием 2 и является степенью, в которую возводится число 2 для получения значения N, и «>>» - это арифметический сдвиг вправо.
10. Способ по любому из пп. 7-9, в котором усреднение векторов движения субблоков яркости в наборе (S) содержит:
mvAvgLX = mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1))] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))] + mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1)] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1)],
если mvAvgLX[0] ≥0, то
mvAvgLX[0] = (mvAvgLX[0] + 1 –(mvAvgLX[0] >= 0)) >> 1,
если mvAvgLX[1] ≥ 0, то
mvAvgLX[1] = (mvAvgLX[1] + 1 –(mvAvgLX[1] >= 0)) >> 1,
причем mvAvgLX[0] - горизонтальная составляющая усредненного вектора движения mvAvgLX, mvAvgLX[1] - вертикальная составляющая усредненного вектора движения mvAvgLX; где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно; xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении соответственно для субблока яркости в наборе (S), «<<» - это арифметический сдвиг влево, а «>>» - арифметический сдвиг вправо.
11. Способ по любому из пп. 1-10, в котором упомянутое определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности содержит:
определение коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе сопоставления между информацией формата цветности и парой коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях.
12. Способ по любому из пп. 1-11, дополнительно содержащий генерирование предсказания субблока цветности на основе упомянутого определенного вектора движения.
13. Способ по любому из пп. 1-12, в котором формат цветности содержит один из формата YUV 4:2:2, формата YUV 4:2:0 или формата YUV 4:4:4.
14. Способ по любому из пп. 1-13, реализуемый устройством кодирования.
15. Способ по любому из пп. 1-13, реализуемый устройством декодирования.
16. Кодер (20), содержащий схему обработки для выполнения способа по любому из пп. 1-14.
17. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп. 1-13 и 15.
18. Декодер, содержащий:
один или более процессоров; и
энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для исполнения процессорами, причем программа, когда исполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп. 1-13 и 15.
19. Кодер, содержащий:
один или более процессоров; и
энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для исполнения процессорами, причем программа, когда исполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп. 1-14.
20. Энергонезависимый машиночитаемый носитель данных, несущий программный код, который при исполнении компьютерным устройством заставляет компьютерное устройство выполнять способ по любому из пп. 1-15.
21. Устройство для аффинного внешнего предсказания блока текущей картинки, содержащего совместно расположенные блоки яркости и цветности, причем устройство содержит:
модуль определения, выполненный с возможностью определять коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях на основе информации формата цветности, при этом информация формата цветности указывает формат цветности текущей картинки, которой принадлежит блок текущей картинки, и определять набор (S) субблоков яркости упомянутого блока яркости на основе значений коэффициентов масштабирования цветности; и
модуль вывода вектора движения, выполненный с возможностью определять вектор движения для субблока цветности блока цветности на основе векторов движения одного или более субблоков яркости в наборе (S) субблоков яркости;
причем:
когда SubWidthC и SubHeightC равны 1, набор субблоков (S) яркости содержит субблок яркости, индексированный как
S0 = (xSbIdx, ySbIdx);
когда по меньшей мере один из SubWidthC и SubHeightC не равен 1, набор субблоков (S) яркости содержит: первый субблок яркости, индексированный как
S0 = ((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))), и второй субблок яркости, индексированный как
S1=((xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1), (ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1)),
где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно;
xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении соответственно для субблока яркости в наборе (S);
«<<» представляет собой арифметический сдвиг влево;
«>>» представляет собой арифметический сдвиг вправо;
xSbIdx = 0...numSbX - 1 и ySbIdx = 0...numSbY - 1;
numSbX указывает количество субблоков яркости в блоке яркости в горизонтальном направлении; и
numSbY указывает количество субблоков яркости в блоке яркости в вертикальном направлении.
22. Устройство по п. 21, при этом каждый из одного или более субблоков яркости в наборе (S) представлен индексом субблока в горизонтальном направлении и индексом субблока в вертикальном направлении.
23. Устройство по п. 22, при этом количество субблоков цветности в блоке цветности в горизонтальном направлении и вертикальном направлении совпадает с количеством субблоков яркости в блоке яркости в горизонтальном и вертикальном направлениях соответственно.
24. Устройство по любому из пп. 21-23, при этом для субблока цветности, индексированного индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении, набор субблоков (S) яркости содержит один или несколько индексированных субблоков:
S0 = (xSbIdxL, ySbIdxL),
S1 = (xSbIdxL, ySbIdxL + (SubHeightC-1)),
S2 = (xSbIdxL+ (SubWidthC-1), ySbIdxL) или
S3 = (xSbIdxL+ (SubWidthC-1), ySbIdxL + (SubHeightC-1));
при этом индекс S0 субблока яркости представлен индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;
индекс S1 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1);
индекс S2 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL; и
индекс S3 блока яркости представлен индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1).
25. Устройство по любому из пп. 21-24, при этом набор субблоков (S) яркости содержит:
первый субблок яркости, индексированный как S0 = (xSbIdxL, ySbIdxL), и второй субблок яркости, индексированный как S1 = (xSbIdxL + (SubWidthC-1), ySbIdxL + (SubHeightC-1));
при этом позиция S0 блока яркости представлена индексом xSbIdxL субблока в горизонтальном направлении и индексом ySbIdxL субблока в вертикальном направлении;
позиция S1 блока яркости представлена индексом субблока в горизонтальном направлении xSbIdxL + (SubWidthC-1) и индексом субблока в вертикальном направлении ySbIdxL + (SubHeightC-1).
26. Устройство по любому из пп. 21-25, при этом:
когда форматом цветности является 4:4:4, набор (S) содержит один субблок яркости, совмещенный с субблоком цветности;
когда форматом цветности является 4:2:2, набор (S) содержит два субблока яркости, горизонтально смежные друг с другом;
когда форматом цветности является 4:2:0 набор (S) содержит два субблока яркости, которые диагональны.
27. Устройство по любому из пп. 21-26, при этом, когда имеется более одного субблока яркости в наборе (S), модуль вывода вектора движения сконфигурирован для:
усреднения векторов движения субблоков яркости в наборе (S), чтобы сгенерировать усредненный вектор движения яркости; и
получения вектора движения для субблока цветности на основе усредненного вектора движения яркости.
28. Устройство по п. 27, в котором модуль вывода вектора движения сконфигурирован для:
усреднения горизонтальной составляющей векторов движения субблоков яркости в наборе (S); или
усреднения вертикальной составляющей векторов движения субблоков яркости в наборе (S).
29. Устройство по п. 27 или 28, в котором модуль вывода вектора движения сконфигурирован для усреднения векторов движения субблоков яркости в наборе (S) для генерирования усредненного вектора движения яркости следующим образом:
mvAvgLX = ,
когда mvAvgLX[0] больше или равно 0, mvAvgLX[0] = (mvAvgLX[0] + (N>>1) – 1) >> log2(N), иначе
mvAvgLX[0] = − ((−mvAvgLX[0] + (N>>1) – 1) >> log2(N) );
когда mvAvgLX[1] больше или равно 0, mvAvgLX[1] = (mvAvgLX[1] + (N>>1) – 1) >> log2(N), иначе
mvAvgLX[1] = −((−mvAvgLX[1] + (N>>1) – 1) >> log2(N) ),
где mvAvgLX - результирующий вектор движения усреднения;
mvAvgLX[0] - горизонтальная составляющая результирующего вектора mvAvgLX движения, а mvAvgLX[1] - вертикальная составляющая результирующего вектора mvAvgLX движения;
и - горизонтальные и вертикальные индексы субблока Si в наборе субблоков (S) яркости в массиве векторов движения,
- вектор движения субблока яркости с индексами и , N - количество элементов в наборе (S) субблоков яркости, log2(N) представляет собой логарифм N по основанию 2 и представляет собой степень, в которую должно быть возведено число 2 для получения значения N, а «>>» представляет собой арифметический сдвиг вправо.
30. Устройство по любому из пп. 27-29, в котором модуль вывода вектора движения сконфигурирован для усреднения векторов движения субблоков яркости в наборе (S) для генерирования усредненного вектора движения яркости следующим образом:
mvAvgLX = mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1))] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1))] + mvLX[(xSbIdx >> (SubWidthC − 1) << (SubWidthC − 1)) + (SubWidthC − 1)] [(ySbIdx >> (SubHeightC − 1) << (SubHeightC − 1)) + (SubHeightC − 1)],
если mvAvgLX[0] ≥0, тогда
mvAvgLX[0] = (mvAvgLX[0] + 1 –(mvAvgLX[0] >= 0)) >> 1,
если mvAvgLX[1] ≥0, тогда
mvAvgLX[1] = (mvAvgLX[1] + 1 –(mvAvgLX[1] >= 0)) >> 1,
где mvAvgLX[0] - горизонтальная составляющая усредненного вектора движения mvAvgLX, mvAvgLX[1] - вертикальная составляющая усредненного вектора движения mvAvgLX; где SubWidthC и SubHeightC представляют коэффициенты масштабирования цветности в горизонтальном и вертикальном направлениях соответственно; xSbIdx и ySbIdx представляют индекс субблока в горизонтальном направлении и индекс субблока в вертикальном направлении соответственно для субблока яркости в наборе (S), «<<» - это арифметический сдвиг влево, а «>>» - арифметический сдвиг вправо.
31. Устройство по любому из пп. 21-30, в котором модуль определения сконфигурирован для определения коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях на основе сопоставления между информацией формата цветности и парой коэффициентов масштабирования цветности в горизонтальном и вертикальном направлениях.
32. Устройство по любому из пп. 21-31, дополнительно содержащее модуль компенсации движения, сконфигурированный для генерирования предсказания субблока цветности на основании определенного вектора движения.
33. Устройство по любому из пп. 21-32, при этом формат цветности содержит один из формата YUV 4:2:2, формата YUV 4:2:0 и формата YUV 4:4:4.
Anish Tamse et al, "Proposed WD for CE2-related: MV Derivation for Affine Chroma", JVET- M0192_WD, 13th Meeting: Marrakech, January 2019 | |||
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Yi-Wen Chen et al, "CE2-related: Affine mode modifications", JVET- M0228, 13th Meeting: Marrakech, January 2019 | |||
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
US |
Авторы
Даты
2024-03-27—Публикация
2020-02-24—Подача