Область техники, к которой относится изобретение
Данная заявка относится, в общем, к области технологий кодирования видео и, в частности, к видеокодеру, видеодекодеру и соответствующему способу.
Уровень техники
Возможности цифрового видео могут быть включены в устройства самых разных типов, включая цифровые телевизоры, системы цифрового прямого вещания, системы беспроводного вещания, карманные персональные компьютеры (PDA), портативные или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, устройства для видеоигр, игровые видеоприставки, сотовые или спутниковые радиотелефоны (так называемые "смартфоны"), устройства для видеоконференцсвязи, устройства для потоковой передачи видео и т.п. Цифровые видеоустройства реализуют технологии сжатия видео, например, технологии сжатия видео, описанные в стандартах, определенных в стандартах MPEG-2, MPEG-4, ITU-T H.263 и ITU-T H.264/MPEG-4, часть 10: усовершенствованное кодирование видео (AVC), стандарт кодирования видео H.265/стандарт высокоэффективного кодирования видео (HEVC) и расширения таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить цифровую видеоинформацию более эффективно за счет реализации таких технологий сжатия видео.
Технологии сжатия видео используются для выполнения пространственного (внутрикадрового) предсказания и/или временного (межкадрового) предсказания для уменьшения или устранения избыточности, присущей видеопоследовательности. При блочном кодировании видеослайс видео (то есть видеокадр или часть видеокадра) может быть разделен на блоки изображения, и блок изображения также может называться блоком дерева, единицей кодирования (CU) и/или узлом кодирования. Блок изображения в подлежащем внутрикадровому кодированию (I) слайсе изображения кодируется посредством пространственного предсказания на основе опорной выборки в соседнем блоке на одном и том же изображении. Для блока изображения в подлежащем межкадровому кодированию (P или B) слайсе изображения можно использовать пространственное предсказание на основе опорной выборки в соседнем блоке на одном и том же изображении или временное предсказание на основе опорной выборки на другом опорном изображении. Изображение может называться кадром, и опорное изображение может называться опорным кадром.
Различные стандарты кодирования видео, включая стандарт высокоэффективного кодирования видео (HEVC), предусматривают режим кодирования с предсказанием, используемый для блока изображения. В частности, текущий блок, подлежащий кодированию, предсказывается на основе кодированного блока видеоданных. В режиме внутрикадрового предсказания текущий блок предсказывается на основе одного или нескольких ранее декодированных соседних блоков на том же изображении, что и текущий блок. В режиме межкадрового предсказания текущий блок предсказывается на основе декодированного блока на другом изображении.
Предсказание включает в себя прямое предсказание, обратное предсказание, двунаправленное предсказание и т.п. Для двунаправленного предсказания необходимо, соответственно, получить блок прямого предсказания (например, соответствующий предсказанному значению выборки в первом списке) и блок обратного предсказания (например, соответствующий предсказанному значению выборки во втором списке) на основе информации движения в процессе компенсации движения при прямом предсказании и в процессе компенсации движения при обратном предсказании, и затем определяется блок предсказания текущего блока на основе блока прямого предсказания и блока обратного предсказания. То, как уменьшить сложность кодирования при одновременном повышении точности предсказания блока предсказания текущего блока, является технической задачей, изучаемой специалистами в данной области техники.
Раскрытие сущности изобретения
Варианты осуществления настоящего изобретения раскрывают видеокодер, видеодекодер и соответствующий способ, чтобы сбалансировать до некоторой степени сложность кодирования/декодирования и точность предсказания.
Согласно первому аспекту вариант осуществления настоящей заявки обеспечивает способ кодирования видео, и этот способ включает в себя:
если выполнено множество заданных условий, выполнение обработки на основе двунаправленного оптического потока (Bi-directional optical flow, BIO или BDOF для краткости) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру.
Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Например, если размер текущего блока изображения составляет 8×8, первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок. В качестве другого примера, если размер текущего блока изображения составляет 8×16, число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и число 16 указывает то, что высота текущего блока изображения составляет 16 выборок.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Способ дополнительно включает в себя: восстановление текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения; и
кодирование синтаксического элемента в подлежащем передаче битовом потоке, где синтаксический элемент по меньшей мере используется для указания того, что применяется двунаправленное предсказание.
Следует понимать, что в процессе выполнения BDOF над текущим блоком изображения предсказание выполняется с помощью подблока. Более конкретно, выполнение обработки на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения может представлять собой, в частности: выполнение обработки на основе двунаправленного оптического потока (BDOF) над текущим подблоком текущего блока изображения для получения предсказанного значения выборки текущего подблока текущего блока изображения. Предсказанное значение выборки текущего блока изображения включает в себя предсказанные значения выборки одного или нескольких подблоков, и один или более подблоков включают в себя текущий подблок. Если текущий блок изображения включает в себя только один подблок, размер подблока может быть равен размеру текущего блока изображения.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения в соответствии с технологией BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина" (true). Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе кодирования текущий блок изображения является блоком изображения, подлежащим кодированию (блоком кодирования).
В данном варианте осуществления настоящей заявки может быть дополнительно включено действие по определению условий. Например, определяется то, выполнено ли множество заданных условий.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Следует понимать, что способ в данном варианте осуществления настоящей заявки может выполняться видеокодером или электронным устройством, имеющим функцию кодирования видео.
Более конкретно, условие для включения или использования технологии BDOF в этом решении отличается от условия для включения или использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к исходному значению выборки, и можно надлежащим образом управлять сложностью кодирования. Это до некоторой степени уравновешивает сложность кодирования/декодирования и точность предсказания, тем самым повышая эффективность кодирования.
В дополнительном решении синтаксический элемент включает в себя индекс (например, merge_idx[xCb][yCb]) информации движения целевого кандидата, причем информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания (например, predFlagL0=1 и predFlagL1=1), информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку (то есть list0), и второй вектор движения, соответствующий второму списку (то есть list1), и индексы опорных кадров включают в себя индекс (например, refIdxL0) первого опорного кадра, соответствующего первому списку, и индекс (например, refIdxL1) второго опорного кадра, соответствующего второму списку.
В данном варианте осуществления настоящей заявки индекс опорного кадра используется для идентификации опорного изображения, соответствующего используемому вектору движения (например, первому вектору движения или второму вектору движения) в заданном списке опорных изображений (первый список list0 или второй список list1). Изображение может называться кадром, и опорное изображение может называться опорным кадром.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении синтаксический элемент включает в себя первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы (например, mvp_lX_flag[xCb][yCb]) используются для указания предиктора целевого вектора движения-кандидата, предикторы целевых векторов движения-кандидатов включают в себя первый предиктор вектора движения, соответствующий первому списку (например, list0), и второй предиктор вектора движения, соответствующий второму списку (например, list1), и разность векторов движения (MVD) включает в себя первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку (при необходимости, когда используется технология MMVD, может быть передана только одна MVD, и MVD, которая находится в другом направлении и которая должна использоваться на стороне декодера может быть получен на основе переданной MVD). Вторые индексы (которые также называются индексами опорных кадров) используются для указания опорных кадров текущего блока изображения, и опорные кадры включают в себя первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку. Например, вторыми индексами являются refIdxL0 и refIdxL1, refIdxL0 представляет собой индекс первого опорного кадра, соответствующего первому списку, и refIdxL1 представляет собой индекс второго опорного кадра, соответствующего второму списку. Информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1) используется для указания того, что применяется двунаправленное предсказание.
Первый вектор движения (например, Mv0_L0), соответствующий первому списку, получается на основе первого предиктора вектора движения (например, Mvp0_L0), соответствующего первому списку, и первой MVD (например, MVD0), соответствующей первому списку. Например, Mv0_L0=Mvp0_L0+MVD0.
Второй вектор движения (например, Mv1_L1), соответствующий второму списку, получается на основе второго предиктора вектора движения (например, Mvp1_L1), соответствующего второму списку, и второй MVD (например, MVD1), соответствующей второму списку. Например, Mv1_L1=Mvp1_L1+MVD1.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении способ дополнительно включает в себя: определение остатка выборки на основе значения выборки текущего блока изображения и предсказанного значения выборки текущего блока изображения; и кодирование синтаксического элемента в подлежащем передаче битовом потоке включает в себя: кодирование синтаксического элемента и остатка выборки в подлежащем передаче битовом потоке. Другими словами, в дополнение к синтаксическому элементу остаток выборки может быть дополнительно кодирован в подлежащем передаче битовом потоке (остаток выборки может быть получен путем вычисления с использованием блока вычисления остатка, и, например, остаток выборки равен 0 или не равен 0). Это решение можно применить к режиму AMVP и режиму слияния. Кроме того, также имеет место случай, когда не требуется кодировать остаток выборки в подлежащем передаче битовом потоке. Например, в режиме пропуска не требуется кодирования остатка выборки в подлежащем передаче битовом потоке.
Согласно второму аспекту вариант осуществления настоящей заявки обеспечивает способ кодирования, который включает в себя:
когда размер текущего блока изображения является вторым заданным размером, определение (или получение путем предсказания) предсказанного значения выборки текущего блока изображения (например, предсказанных выборок текущего блока кодирования) первым способом обработки на основе значения опорной выборки, соответствующего первому списку (то есть list0), и значения опорной выборки, соответствующего второму списку (то есть list1), где первый способ обработки не является BDOF (или называется двунаправленным оптическим потоком (Bi-directional optical flow, BIO). Другими словами, когда размер текущего блока изображения является вторым заданным размером, BDOF не может использоваться для определения предсказанного значения выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Второй заданный размер составляет 8×8 (первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок), 4×N (4 указывает то, что ширина текущего блока изображения составляет 4 выборки, N указывает то, что высота текущего блока изображения составляет N выборок, и другие размеры выводятся по аналогии), 8×16 или 16×8. N равно степени 2 и больше или равно 8. Например, значение N может быть равным 16, 32, 64 или т.п.
В данном варианте осуществления настоящей заявки значение опорной выборки, соответствующее первому списку, и значение опорной выборки, соответствующее второму списку, соответственно, получают путем предсказания на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1). Например, значение опорной выборки, соответствующее первому списку (то есть list0), может быть определено на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и значение опорной выборки, соответствующее второму списку (то есть list1), может быть определено на основе второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1).
Затем способ включает в себя: восстановление текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения. Термин "по меньшей мере" в данном документе указывает то, что предсказанное значение выборки текущего блока изображения необходимо использовать для восстановления текущего блока изображения, и может также использоваться другая информация.
Далее, способ включает в себя: кодирование синтаксического элемента в подлежащем передаче битовом потоке, где синтаксический элемент используется по меньшей мере для указания того, что применяется двунаправленное предсказание.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе кодирования текущий блок изображения является блоком изображения, подлежащим кодированию (блоком кодирования).
Кроме того, вышеописанный случай, когда второй заданный размер составляет 8×8, 4×N, 8×16 или 16×8, также может быть ограничен вторым заданным размером, равным 8×8, 4×N, 8×16 или 16×8. Другими словами, BDOF запрещено использовать для одного из размеров 8×8, 4×N, 8×16 и 16×8, перечисленных выше, или BDOF запрещено использовать для множества их размеров. Далее для описания используются примеры.
Пример 1: Второй заданный размер включает в себя (или составляет) 8×8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 8×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен 8×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 2: Второй заданный размер включает в себя (или составляет) 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 3: Второй заданный размер включает в себя (или составляет) 8×8 или 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размеров 8×8 и 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 8×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 4: Второй заданный размер включает в себя (или составляет) 8×8, 4×N, 8×16 или 16×8, где N больше или равно 8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещено использовать для размеров 8×8, 4×N, 8×16 и 16×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения является любым из 8×8, 4×N, 8×16 и 16×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 5: Второй заданный размер включает в себя (или составляет) N×8, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блок изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 6: Второй заданный размер включает в себя (или составляет) N×8 или 4×N, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8 или 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку. Кроме того, так как BDOF также запрещено использовать для размера M×4 в некоторых сценариях, в настоящей заявке, когда BDOF запрещено использовать для второго заданного размера, BDOF дополнительно запрещено использовать для размера M×4, где M - целое число, большее или равное 4.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Следует понимать, что способ в данном варианте осуществления настоящей заявки может выполняться видеокодером или электронным устройством, имеющим функцию кодирования видео.
Согласно вышеизложенному способу, при использовании технологии BDOF полностью учитываются особенности текущих блоков изображения различных размеров. Когда размер текущего блока изображения является вторым заданным размером, предсказанное значение выборки текущего блока изображения определяется в соответствии с технологией, отличной от технологии BDOF. Это значительно снижает сложность кодирования и повышает эффективность кодирования.
В дополнительном решении определение предсказанного значения выборки текущего блока изображения первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, включает в себя:
выполнение взвешенного вычисления для значений выборок, имеющих одно и то же местоположение в значении опорной выборки, соответствующем первому списку, и в значении опорной выборки, соответствующем второму списку, для получения предсказанного значения выборки текущего блока изображения; или
получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии разности векторов движения в режиме слияния (MMVD); или
получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии объединенного межкадрового/внутрикадрового предсказания (CIIP).
В данном варианте осуществления настоящей заявки то, используется ли способ взвешенного вычисления, технология MMVD, технология CIIP или другая технология предсказания, может быть определено с использованием соответствующего условия или может быть указано с использованием соответствующей информации указания.
Следует отметить, что технология BDOF эквивалентна технологии оптимизации исправлений для традиционной технологии предсказания предсказанного значения выборки текущего блока изображения. Во многих сценариях предсказанное значение выборки, более близкое к реальному значению выборки текущего блока изображения, может быть получено в соответствии с технологией BDOF. Таким образом, остаток выборки, полученный на основе предсказанного значения выборки, может быть меньше, поэтому можно повысить эффективность кодирования. Вышеупомянутый способ взвешенного вычисления можно рассматривать как традиционную технологию для получения предсказанного значения выборки текущего блока изображения, и каждую из вышеизложенных технологий MMVD и CIIP можно рассматривать как технологию оптимизации исправлений для традиционной технологии. В данном варианте осуществления настоящей заявки, когда размер текущего блока изображения является вторым заданным размером, предсказанное значение выборки текущего блока изображения определяется в соответствии с традиционной технологией (например, способом взвешенного вычисления) или другой технологией оптимизации исправлений (например, MMVD или CIIP), а не технологией BDOF. Это позволяет значительно снизить сложность кодирования и повысить эффективность кодирования.
В дополнительном решении этот способ также включает в себя:
если выполнено множество заданных условий, выполнение обработки на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения соответствует первому заданному размеру.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Способ дополнительно включает в себя: восстановление текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения.
Более конкретно, условие для включения или использования технологии BDOF в этом решении отличается от условия для включения или использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к исходному значению выборки, и можно надлежащим образом управлять сложностью кодирования. Это до некоторой степени уравновешивает сложность кодирования/декодирования и точность предсказания, тем самым повышая эффективность кодирования.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
В дополнительном решении синтаксический элемент включает в себя индекс (например, merge_idx[xCb][yCb]) информации движения целевого кандидата, при этом информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания (например, predFlagL0=1 и predFlagL1=1), информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку (то есть list0), и второй вектор движения, соответствующий второму списку (то есть list1), и индексы опорных кадров включают в себя индекс (например, refIdxL0) первого опорного кадра, соответствующего первому списку, и индекс (например, refIdxL1) второго опорного кадра, соответствующего второму списку.
В данном варианте осуществления настоящей заявки индекс опорного кадра используется для идентификации опорного изображения, соответствующего используемому вектору движения (например, первому вектору движения или второму вектору движения) в заданном списке опорных изображений (первый список list0 или второй список list1). Изображение может называться кадром, и опорное изображение может называться опорным кадром.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении синтаксический элемент включает в себя первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы (например, mvp_lX_flag[xCb][yCb]) используются для указания предиктора целевого вектора движения-кандидата, предикторы целевых векторов движения-кандидатов включают в себя первый предиктор вектора движения, соответствующий первому списку (например, list0), и второй предиктор вектора движения, соответствующий второму списку (например, list1), и разность векторов движения (MVD) включает в себя первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку (при необходимости, когда используется технология MMVD, может быть передана только одна MVD, и MVD, которая находится в другом направлении и которая должна использоваться на стороне декодера может быть получен на основе переданной MVD). Вторые индексы (которые также называются индексами опорных кадров) используются для указания опорных кадров текущего блока изображения, и опорные кадры включают в себя первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку. Например, вторыми индексами являются refIdxL0 и refIdxL1, refIdxL0 представляет собой индекс первого опорного кадра, соответствующего первому списку, и refIdxL1 представляет собой индекс второго опорного кадра, соответствующего второму списку. Информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1) используется для указания того, что применяется двунаправленное предсказание.
Первый вектор движения (например, Mv0_L0), соответствующий первому списку, получается на основе первого предиктора вектора движения (например, Mvp0_L0), соответствующего первому списку, и первой MVD (например, MVD0), соответствующей первому списку. Например, Mv0_L0=Mvp0_L0+MVD0.
Второй вектор движения (например, Mv1_L1), соответствующий второму списку, получается на основе второго предиктора вектора движения (например, Mvp1_L1), соответствующего второму списку, и второй MVD (например, MVD1), соответствующей второму списку. Например, Mv1_L1=Mvp1_L1+MVD1.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении способ может дополнительно включать в себя: определение остатка выборки на основе значения выборки текущего блока изображения и предсказанного значения выборки текущего блока изображения; и кодирование синтаксического элемента в подлежащем передаче битовом потоке включает в себя: кодирование синтаксического элемента и остатка выборки в подлежащем передаче битовом потоке.
Согласно третьему аспекту вариант осуществления настоящей заявки обеспечивает способ декодирования, который включает в себя:
синтаксический анализ битового потока для получения синтаксического элемента, где этот синтаксический элемент по меньшей мере используется для указания того, что применяется двунаправленное предсказание; и
если выполнено множество заданных условий, выполнение обработки двунаправленного оптического потока BDOF (Bi-directional optical flow или BDOF для краткости, или называемого двунаправленным оптическим потоком (Bi-directional optical flow, BIO) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего изображения блок удовлетворяет первому заданному размеру. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Например, если размер текущего блока изображения составляет 8×8, первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок. В качестве другого примера, если размер текущего блока изображения составляет 8×16, число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и число 16 указывает то, что высота текущего блока изображения составляет 16 выборок.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Способ дополнительно включает в себя: определение значения выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения, где предсказанное значение выборки текущего блока изображения включает в себя предсказанные значения выборки одного или нескольких подблоков.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе декодирования текущий блок изображения представляет собой блок изображения, подлежащий декодированию (блок декодирования).
В данном варианте осуществления настоящей заявки может быть дополнительно включено действие по определению условия. Например, определяется то, выполнено ли множество заданных условий.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Следует понимать, что способ в данном варианте осуществления настоящей заявки может выполняться видеодекодером или электронным устройством, имеющим функцию декодирования видео.
Более конкретно, условие для включения или использования технологии BDOF в этом решении отличается от условия для включения или использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к исходному значению выборки, и можно надлежащим образом управлять сложностью кодирования. Это до некоторой степени уравновешивает сложность кодирования/декодирования и точность предсказания, тем самым повышая эффективность кодирования.
В дополнительном решении синтаксический элемент включает в себя индекс (например, merge_idx[xCb][yCb]) информации движения целевого кандидата, информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания (например, predFlagL0=1 и predFlagL1=1), информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку (то есть list0), и второй вектор движения, соответствующий второму списку (то есть list1), и индексы опорных кадров включают в себя индекс (например, refIdxL0) первого опорного кадра, соответствующего первому списку, и индекс (например, refIdxL1) второго опорного кадра, соответствующего второму списку.
В данном варианте осуществления настоящей заявки индекс опорного кадра используется для идентификации опорного изображения, соответствующего используемому вектору движения (например, первому вектору движения или второму вектору движения) в заданном списке опорных изображений (первый список list0 или второй список list1). Изображение может называться кадром, и опорное изображение может называться опорным кадром.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении синтаксический элемент включает в себя первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы (например, mvp_lX_flag[xCb][yCb]) используются для указания предиктора целевого вектора движения-кандидата, предикторы целевых векторов движения-кандидатов включают в себя первый предиктор вектора движения, соответствующий первому списку (например, list0), и второй предиктор вектора движения, соответствующий второму списку (например, list1), и разность векторов движения (MVD) включает в себя первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку (например, когда включена только одна MVD, MVD, которая не передается, может быть получена на основе переданной MVD). Вторые индексы (которые также называются индексами опорных кадров) используются для указания опорных кадров текущего блока изображения, и опорные кадры включают в себя первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку. Например, вторыми индексами являются refIdxL0 и refIdxL1, refIdxL0 представляет собой индекс первого опорного кадра, соответствующего первому списку, и refIdxL1 представляет собой индекс второго опорного кадра, соответствующего второму списку. Информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1) используется для указания того, что применяется двунаправленное предсказание.
Первый вектор движения (например, Mv0_L0), соответствующий первому списку, получается на основе первого предиктора вектора движения (например, Mvp0_L0), соответствующего первому списку, и первой MVD (например, MVD0), соответствующей первому списку. Например, Mv0_L0=Mvp0_L0+MVD0.
Второй вектор движения (например, Mv1_L1), соответствующий второму списку, получается на основе второго предиктора вектора движения (например, Mvp1_L1), соответствующего второму списку, и второй MVD (например, MVD1), соответствующей второму списку. Например, Mv1_L1=Mvp1_L1+MVD1.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении синтаксический анализ битового потока для получения синтаксического элемента включает в себя: синтаксический анализ битового потока для получения остатка выборки и синтаксического элемента; и определение значения выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения включает в себя: определение значения выборки текущего блока изображения на основе остатка выборки и предсказанного значения выборки текущего блока изображения.
Согласно четвертому аспекту вариант осуществления настоящей заявки обеспечивает способ декодирования, который включает в себя:
синтаксический анализ битового потока для получения синтаксического элемента, где этот синтаксический элемент по меньшей мере используется для указания того, что применяется двунаправленное предсказание; и
когда размер текущего блока изображения является вторым заданным размером, определение (или получение путем предсказания) предсказанного значения выборки текущего блока изображения (например, предсказанных выборок текущего блока кодирования) первым способом обработки на основе значения опорной выборки, соответствующего первому списку (то есть list0), и значения опорной выборки, соответствующего второму списку (то есть list1), где первый способ обработки не является BDOF (или называется двунаправленным оптическим потоком (Bi-directional optical flow, BIO). Другими словами, когда размер текущего блока изображения является вторым заданным размером, BDOF не может использоваться для определения предсказанного значения выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Второй заданный размер включает в себя 8×8 (первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок), 4×N (4 указывает то, что ширина текущего блока изображения составляет 4 выборки, N указывает то, что высота текущего блока изображения составляет N выборок, и другие размеры выводятся по аналогии), 8×16 или 16×8. N равно степени 2 и больше или равно 8. Например, значение N может быть равным 16, 32, 64 или т.п.
В данном варианте осуществления настоящей заявки значение опорной выборки, соответствующее первому списку, и значение опорной выборки, соответствующее второму списку, соответственно, получают путем предсказания на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1). Например, значение опорной выборки, соответствующее первому списку (то есть list0), может быть определено на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и значение опорной выборки, соответствующее второму списку (то есть list1), может быть определено на основе второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1).
Способ дополнительно включает в себя: определение значения выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе декодирования текущий блок изображения представляет собой блок изображения, подлежащий декодированию (блок декодирования).
Кроме того, вышеописанный случай, когда второй заданный размер включает в себя 8×8, 4×N, 8×16 или 16×8, также может быть ограничен вторым заданным размером, равным 8×8, 4×N, 8×16 или 16×8. Другими словами, BDOF запрещено использовать для одного из размеров 8×8, 4×N, 8×16 и 16×8, перечисленных выше, или BDOF запрещено использовать для множества их размеров. Далее для описания используются примеры.
Пример 1: Второй заданный размер включает в себя (или составляет) 8×8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 8×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен 8×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 2: Второй заданный размер включает в себя (или составляет) 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 3: Второй заданный размер включает в себя (или составляет) 8×8 или 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размеров 8×8 и 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 8×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 4: Второй заданный размер включает в себя (или составляет) 8×8, 4×N, 8×16 или 16×8, где N больше или равно 8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещено использовать для размеров 8×8, 4×N, 8×16 и 16×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения является любым из 8×8, 4×N, 8×16 и 16×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 5: Второй заданный размер включает в себя (или составляет) N×8, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блок изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 6: Второй заданный размер включает в себя (или составляет) N×8 или 4×N, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8 или 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Кроме того, так как BDOF также запрещено использовать для размера M×4 в некоторых сценариях, в настоящей заявке, когда BDOF запрещено использовать для второго заданного размера, BDOF дополнительно запрещено использовать для размера M×4, где M - целое число, большее или равное 4.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Следует понимать, что способ в данном варианте осуществления настоящей заявки может выполняться видеодекодером или электронным устройством, имеющим функцию декодирования видео.
Согласно вышеизложенному способу при использовании технологии BDOF полностью учитываются особенности текущих блоков изображения различных размеров. Когда размер текущего блока изображения является вторым заданным размером, предсказанное значение выборки текущего блока изображения определяется в соответствии с технологией, отличной от технологии BDOF. Это значительно снижает сложность кодирования и повышает эффективность кодирования.
В дополнительном решении получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, включает в себя:
выполнение взвешенного вычисления для значений выборок, имеющих одно и то же местоположение в значении опорной выборки, соответствующем первому списку, и в значении опорной выборки, соответствующем второму списку, для получения предсказанного значения выборки текущего блока изображения; или
получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии разности векторов движения в режиме слияния (MMVD); или
получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии объединенного межкадрового/внутрикадрового предсказания (CIIP); или
получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии уточнения вектора движения на стороне декодера (DMVR).
В данном варианте осуществления настоящей заявки то, используется ли способ взвешенного вычисления, технология MMVD или технология CIIP, может быть определено с использованием соответствующего условия или может быть указано с использованием соответствующей информации указания.
Следует отметить, что технология BDOF эквивалентна технологии оптимизации исправлений для традиционной технологии предсказания предсказанного значения выборки текущего блока изображения. Во многих сценариях предсказанное значение выборки, более близкое к реальному значению выборки текущего блока изображения, может быть получено в соответствии с технологией BDOF. Поэтому остаток выборки, полученный на основе предсказанного значения выборки, может быть меньше, поэтому можно повысить эффективность кодирования. Таким образом, на стороне кодера обычно используется технология BDOF. Для более точного восстановления предсказанного значения выборки технология BDOF используется также, соответственно, на стороне декодера. Вышеупомянутый способ взвешенного вычисления можно рассматривать как традиционную технологию для получения предсказанного значения выборки текущего блока изображения, и каждую из вышеизложенных технологий MMVD, CIIP и DMVR можно рассматривать как технология оптимизации исправлений для традиционной технологии. В данном варианте осуществления настоящей заявки, когда размер текущего блока изображения является вторым заданным размером, предсказанное значение выборки текущего блока изображения определяется в соответствии с традиционной технологией (например, способом взвешенного вычисления) или другой технологией оптимизации исправлений (например, MMVD, CIIP или DMVR), а не технологией BDOF. Это позволяет значительно снизить сложность декодирования и повысить эффективность декодирования.
В дополнительном решении способ дополнительно включает в себя: если выполнено множество заданных условий, выполнение обработки на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Способ дополнительно включает в себя: восстановление текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения.
Более конкретно, условие для включения или использования технологии BDOF в этом решении отличается от условия для включения или использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к исходному значению выборки, и можно надлежащим образом управлять сложностью кодирования. Это до некоторой степени уравновешивает сложность кодирования/декодирования и точность предсказания, тем самым повышая эффективность кодирования.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
В дополнительном решении синтаксический элемент включает в себя индекс (например, merge_idx[xCb][yCb]) информации движения целевого кандидата, информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания (например, predFlagL0=1 и predFlagL1=1), информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку (то есть list0), и второй вектор движения, соответствующий второму списку (то есть list1), и индексы опорных кадров включают в себя индекс (например, refIdxL0) первого опорного кадра, соответствующего первому списку, и индекс (например, refIdxL1) второго опорного кадра, соответствующего второму списку.
В данном варианте осуществления настоящей заявки индекс опорного кадра используется для идентификации опорного изображения, соответствующего используемому вектору движения (например, первому вектору движения или второму вектору движения) в заданном списке опорных изображений (первый список list0 или второй список list1). Изображение может называться кадром, и опорное изображение может называться опорным кадром.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении синтаксический элемент включает в себя первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы (например, mvp_lX_flag[xCb][yCb]) используются для указания предиктора целевого вектора движения-кандидата, предикторы целевых векторов движения-кандидатов включают в себя первый предиктор вектора движения, соответствующий первому списку (например, list0), и второй предиктор вектора движения, соответствующий второму списку (например, list1), и разность векторов движения (MVD) включает в себя первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку (при необходимости, когда используется технология MMVD, может быть передана только одна MVD, и MVD, которая находится в другом направлении и которая должна использоваться на стороне декодера может быть получен на основе переданной MVD). Вторые индексы (которые также называются индексами опорных кадров) используются для указания опорных кадров текущего блока изображения, и опорные кадры включают в себя первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку. Например, вторыми индексами являются refIdxL0 и refIdxL1, refIdxL0 представляет собой индекс первого опорного кадра, соответствующего первому списку, и refIdxL1 представляет собой индекс второго опорного кадра, соответствующего второму списку. Информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1) используется для указания того, что применяется двунаправленное предсказание.
Первый вектор движения (например, Mv0_L0), соответствующий первому списку, получается на основе первого предиктора вектора движения (например, Mvp0_L0), соответствующего первому списку, и первой MVD (например, MVD0), соответствующей первому списку. Например, Mv0_L0=Mvp0_L0+MVD0.
Второй вектор движения (например, Mv1_L1), соответствующий второму списку, получается на основе второго предиктора вектора движения (например, Mvp1_L1), соответствующего второму списку, и второй MVD (например, MVD1), соответствующей второму списку. Например, Mv1_L1=Mvp1_L1+MVD1.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении синтаксический анализ битового потока для получения синтаксического элемента включает в себя: синтаксический анализ битового потока для получения остатка выборки и синтаксического элемента; и определение значения выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения включает в себя: определение значения выборки текущего блока изображения на основе остатка выборки и предсказанного значения выборки текущего блока изображения.
Согласно пятому аспекту вариант осуществления настоящей заявки обеспечивает способ межкадрового предсказания, который включает в себя:
определение того, удовлетворяет ли текущий блок изображения множеству заданных условий; и
если выполнено множество заданных условий, выполнение обработки на основе двунаправленного оптического потока (Bi-directional optical flow, BIO или BDOF для краткости) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Например, если размер текущего блока изображения составляет 8×8, первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок. В качестве другого примера, если размер текущего блока изображения составляет 8×16, число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и число 16 указывает то, что высота текущего блока изображения составляет 16 выборок.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе кодирования текущий блок изображения является блоком изображения, подлежащим кодированию (блоком кодирования). Конечно, текущий блок изображения в данном документе альтернативно может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе декодирования текущий блок изображения представляет собой блок изображения, подлежащий декодированию (блок декодирования).
В дополнительном решении способ дополнительно включает в себя: если не выполнено по меньшей мере одно из множества заданных условий, пропуск выполнения обработки двунаправленного оптического потока BDOF (Bi-directional optical flow, BIO или BDOF для краткости) обработки текущего блока изображения. Более конкретно, предсказанное значение выборки текущего блока изображения может быть получено путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку. Первым способом обработки не является BDOF. Для получения подробной информации следует обратиться к соответствующим частям этой спецификации. Подробности здесь снова не описываются.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Следует понимать, что способ в данном варианте осуществления настоящей заявки может выполняться видеокодером или электронным устройством, имеющим функцию кодирования видео, или может выполняться видеодекодером или электронным устройством, имеющим функцию декодирования видео. Например, способ может быть специально реализован блоком межкадрового предсказания, находящимся в этих устройствах.
Более конкретно, условие для включения или использования технологии BDOF в этом решении отличается от условия для включения или использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к исходному значению выборки, и можно надлежащим образом управлять сложностью кодирования. Это до некоторой степени уравновешивает сложность кодирования/декодирования и точность предсказания, тем самым повышая эффективность кодирования.
Согласно шестому аспекту вариант осуществления настоящей заявки обеспечивает устройство для кодирования видео, и устройство кодирования включает в себя блок межкадрового предсказания, блок восстановления и блок энтропийного кодирования.
Блок межкадрового предсказания выполнен с возможностью: если выполнено множество заданных условий, выполнения обработки на основе двунаправленного оптического потока (BDOF) (Bi-directional optical flow, BIO или BDOF для краткости) над текущими блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Например, если размер текущего блока изображения составляет 8×8, первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок. В качестве другого примера, если размер текущего блока изображения составляет 8×16, число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и число 16 указывает то, что высота текущего блока изображения составляет 16 выборок.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Блок восстановления выполнен с возможностью восстановления текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения.
Блок энтропийного кодирования выполнен с возможностью кодирования синтаксического элемента в подлежащем передаче битовом потоке, где синтаксический элемент по меньшей мере используется для указания того, что применяется двунаправленное предсказание.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе кодирования текущий блок изображения является блоком изображения, подлежащим кодированию (блоком кодирования).
В данном варианте осуществления настоящей заявки может быть дополнительно включено действие по определению условий. Например, блок межкадрового предсказания дополнительно выполнен с возможностью определения того, выполнено ли множество заданных условий.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Более конкретно, условие для включения или использования технологии BDOF в этом решении отличается от условия для включения или использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к исходному значению выборки, и можно надлежащим образом управлять сложностью кодирования. Это до некоторой степени уравновешивает сложность кодирования/декодирования и точность предсказания, тем самым повышая эффективность кодирования.
В дополнительном решении синтаксический элемент включает в себя индекс (например, merge_idx[xCb][yCb]) информации движения целевого кандидата, информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания (например, predFlagL0=1 и predFlagL1=1), информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку (то есть list0), и второй вектор движения, соответствующий второму списку (то есть list1), и индексы опорных кадров включают в себя индекс (например, refIdxL0) первого опорного кадра, соответствующего первому списку, и индекс (например, refIdxL1) второго опорного кадра, соответствующего второму списку.
В данном варианте осуществления настоящей заявки индекс опорного кадра используется для идентификации опорного изображения, соответствующего используемому вектору движения (например, первому вектору движения или второму вектору движения) в заданном списке опорных изображений (первый список list0 или второй список list1). Изображение может называться кадром, и опорное изображение может называться опорным кадром.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении синтаксический элемент включает в себя первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы (например, mvp_lX_flag[xCb][yCb]) используются для указания предиктора целевого вектора движения-кандидата, предикторы целевых векторов движения-кандидатов включают в себя первый предиктор вектора движения, соответствующий первому списку (например, list0), и второй предиктор вектора движения, соответствующий второму списку (например, list1), и разность векторов движения (MVD) включает в себя первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку (при необходимости, когда используется технология MMVD, может быть передана только одна MVD, и MVD, которая находится в другом направлении и которая должна использоваться на стороне декодера может быть получен на основе переданной MVD). Вторые индексы (которые также называются индексами опорных кадров) используются для указания опорных кадров текущего блока изображения, и опорные кадры включают в себя первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку. Например, вторыми индексами являются refIdxL0 и refIdxL1, refIdxL0 представляет собой индекс первого опорного кадра, соответствующего первому списку, и refIdxL1 представляет собой индекс второго опорного кадра, соответствующего второму списку. Информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1) используется для указания того, что применяется двунаправленное предсказание.
Первый вектор движения (например, Mv0_L0), соответствующий первому списку, получается на основе первого предиктора вектора движения (например, Mvp0_L0), соответствующего первому списку, и первой MVD (например, MVD0), соответствующей первому списку. Например, Mv0_L0=Mvp0_L0+MVD0.
Второй вектор движения (например, Mv1_L1), соответствующий второму списку, получается на основе второго предиктора вектора движения (например, Mvp1_L1), соответствующего второму списку, и второй MVD (например, MVD1), соответствующей второму списку. Например, Mv1_L1=Mvp1_L1+MVD1.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении устройство для кодирования видео дополнительно включает в себя блок вычисления остатка, выполненный с возможностью определения остатка выборки на основе значения выборки текущего блока изображения и предсказанного значения выборки текущего блока изображения; и блок энтропийного кодирования специально выполнен с возможностью кодирования синтаксического элемента и остатка выборки в подлежащем передаче битовом потоке. Другими словами, в дополнение к синтаксическому элементу остаток выборки может быть дополнительно кодирован в подлежащем передаче битовом потоке (остаток выборки может быть получен путем вычисления с использованием блока вычисления остатка). Это решение можно применить к режиму AMVP и режиму слияния. Кроме того, также имеет место случай, когда не требуется кодировать остаток выборки в подлежащем передаче битовом потоке. Например, в режиме пропуска не требуется кодирования остатка выборки в подлежащем передаче битовом потоке.
Согласно седьмому аспекту вариант осуществления настоящей заявки обеспечивает устройство для кодирования видео, и устройство для кодирования видео включает в себя блок межкадрового предсказания, блок восстановления и блок энтропийного кодирования.
Блок межкадрового предсказания выполнен с возможностью: когда размер текущего блока изображения является вторым заданным размером, определения (или получения путем предсказания) предсказанного значения выборки текущего блока изображения (например, выборки предсказания текущего блока кодирования) первым способом обработки на основе значения опорной выборки, соответствующего первому списку (то есть list0), и значения опорной выборки, соответствующего второму списку (то есть list1), где первым способом обработки не является BDOF (называемый двунаправленным оптическим потоком (Bi-directional optical flow, BIO)). Другими словами, когда размер текущего блока изображения является вторым заданным размером, BDOF не может использоваться для определения предсказанного значения выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Второй заданный размер включает в себя 8×8 (первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок), 4×N (4 указывает то, что ширина текущего блока изображения составляет 4 выборки, N указывает то, что высота текущего блока изображения составляет N выборок, и другие размеры выводятся по аналогии), 8×16 или 16×8. N равно степени 2 и больше или равно 8. Например, значение N может быть равным 16, 32, 64 или т.п.
В данном варианте осуществления настоящей заявки значение опорной выборки, соответствующее первому списку, и значение опорной выборки, соответствующее второму списку, соответственно, получают путем предсказания на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1). Например, значение опорной выборки, соответствующее первому списку (то есть list0), может быть определено на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и значение опорной выборки, соответствующее второму списку (то есть list1), может быть определено на основе второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1).
Блок восстановления выполнен с возможностью восстановления текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения. Термин "по меньшей мере" в данном документе указывает то, что предсказанное значение выборки текущего блока изображения необходимо использовать для восстановления текущего блока изображения, и может также использоваться другая информация.
Блок энтропийного кодирования выполнен с возможностью кодирования синтаксического элемента в подлежащем передаче битовом потоке, где синтаксический элемент по меньшей мере используется для указания того, что применяется двунаправленное предсказание.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе кодирования текущий блок изображения является блоком изображения, подлежащим кодированию (блоком кодирования).
Кроме того, вышеописанный случай, когда второй заданный размер включает в себя 8×8, 4×N, 8×16 или 16×8, также может быть ограничен вторым заданным размером, равным 8×8, 4×N, 8×16 или 16×8. Другими словами, BDOF запрещено использовать для одного из размеров 8×8, 4×N, 8×16 и 16×8, перечисленных выше, или BDOF запрещено использовать для множества их размеров. Далее для описания используются примеры.
Пример 1: Второй заданный размер включает в себя (или составляет) 8×8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 8×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен 8×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 2: Второй заданный размер включает в себя (или составляет) 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 3: Второй заданный размер включает в себя (или составляет) 8×8 или 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размеров 8×8 и 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 8×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 4: Второй заданный размер включает в себя (или составляет) 8×8, 4×N, 8×16 или 16×8, где N больше или равно 8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещено использовать для размеров 8×8, 4×N, 8×16 и 16×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения является любым из 8×8, 4×N, 8×16 и 16×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 5: Второй заданный размер включает в себя (или составляет) N×8, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блок изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 6: Второй заданный размер включает в себя (или составляет) N×8 или 4×N, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8 или 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Кроме того, так как BDOF также запрещено использовать для размера M×4 в некоторых сценариях, в настоящей заявке, когда BDOF запрещено использовать для второго заданного размера, BDOF дополнительно запрещено использовать для размера M×4, где M - целое число, большее или равное 4.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Согласно вышеизложенному способу, при использовании технологии BDOF полностью учитываются особенности текущих блоков изображения различных размеров. Когда размер текущего блока изображения является вторым заданным размером, предсказанное значение выборки текущего блока изображения определяется в соответствии с технологией, отличной от технологии BDOF. Это значительно снижает сложность кодирования и повышает эффективность кодирования.
В дополнительном решении, в процессе определения предсказанного значения выборки текущего блока изображения первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, блок межкадрового предсказания специально выполнен с возможностью:
выполнения взвешенного вычисления над значениями выборок, имеющими одно и то же местоположение в значении опорной выборки, соответствующем первому списку, и в значении опорной выборки, соответствующем второму списку, для получения предсказанного значения выборки текущего блока изображения; или
получения предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии разности векторов движения в режиме слияния (MMVD); или
получения предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии объединенного межкадрового/внутрикадрового предсказания (CIIP).
В данном варианте осуществления настоящей заявки то, используется ли способ взвешенного вычисления, технология MMVD или технология CIIP, может быть определено с использованием соответствующего условия или может быть указано с использованием соответствующей информации указания.
Следует отметить, что технология BDOF эквивалентна технологии оптимизации исправлений для традиционной технологии предсказания предсказанного значения выборки текущего блока изображения. Во многих сценариях предсказанное значение выборки, более близкое к реальному значению выборки текущего блока изображения, может быть получено в соответствии с технологией BDOF. Таким образом, остаток выборки, полученный на основе предсказанного значения выборки, может быть меньше, поэтому можно повысить эффективность кодирования. Вышеупомянутый способ взвешенного вычисления можно рассматривать как традиционную технологию для получения предсказанного значения выборки текущего блока изображения, и каждую из вышеизложенных технологий MMVD и CIIP можно рассматривать как технологию оптимизации исправлений для традиционной технологии. В данном варианте осуществления настоящей заявки, когда размер текущего блока изображения является вторым заданным размером, предсказанное значение выборки текущего блока изображения определяется в соответствии с традиционной технологией (например, способом взвешенного вычисления) или другой технологией оптимизации исправлений (например, MMVD или CIIP), а не технологией BDOF. Это позволяет значительно снизить сложность кодирования и повысить эффективность кодирования.
В дополнительном решении блок межкадрового предсказания дополнительно выполнен с возможностью: если выполнено множество заданных условий, выполнения обработки на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Блок восстановления дополнительно выполнен с возможностью восстановления текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения.
Более конкретно, условие для включения или использования технологии BDOF в этом решении отличается от условия для включения или использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к исходному значению выборки, и можно надлежащим образом управлять сложностью кодирования. Это до некоторой степени уравновешивает сложность кодирования/декодирования и точность предсказания, тем самым повышая эффективность кодирования.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
В дополнительном решении синтаксический элемент включает в себя индекс (например, merge_idx[xCb][yCb]) информации движения целевого кандидата, информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания (например, predFlagL0=1 и predFlagL1=1), информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку (то есть list0), и второй вектор движения, соответствующий второму списку (то есть list1), и индексы опорных кадров включают в себя индекс (например, refIdxL0) первого опорного кадра, соответствующего первому списку, и индекс (например, refIdxL1) второго опорного кадра, соответствующего второму списку.
В данном варианте осуществления настоящей заявки индекс опорного кадра используется для идентификации опорного изображения, соответствующего используемому вектору движения (например, первому вектору движения или второму вектору движения) в заданном списке опорных изображений (первый список list0 или второй список list1). Изображение может называться кадром, и опорное изображение может называться опорным кадром.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении синтаксический элемент включает в себя первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы (например, mvp_lX_flag[xCb][yCb]) используются для указания предиктора целевого вектора движения-кандидата, предикторы целевых векторов движения-кандидатов включают в себя первый предиктор вектора движения, соответствующий первому списку (например, list0), и второй предиктор вектора движения, соответствующий второму списку (например, list1), и разность векторов движения (MVD) включает в себя первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку (при необходимости, когда используется технология MMVD, может быть передана только одна MVD, и MVD, которая находится в другом направлении и которая должна использоваться на стороне декодера может быть получен на основе переданной MVD). Вторые индексы (которые также называются индексами опорных кадров) используются для указания опорных кадров текущего блока изображения, и опорные кадры включают в себя первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку. Например, вторыми индексами являются refIdxL0 и refIdxL1, refIdxL0 представляет собой индекс первого опорного кадра, соответствующего первому списку, и refIdxL1 представляет собой индекс второго опорного кадра, соответствующего второму списку. Информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1) используется для указания того, что применяется двунаправленное предсказание.
Первый вектор движения (например, Mv0_L0), соответствующий первому списку, получается на основе первого предиктора вектора движения (например, Mvp0_L0), соответствующего первому списку, и первой MVD (например, MVD0), соответствующей первому списку. Например, Mv0_L0=Mvp0_L0+MVD0.
Второй вектор движения (например, Mv1_L1), соответствующий второму списку, получается на основе второго предиктора вектора движения (например, Mvp1_L1), соответствующего второму списку, и второй MVD (например, MVD1), соответствующей второму списку. Например, Mv1_L1=Mvp1_L1+MVD1.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении устройство для кодирования видео дополнительно включает в себя блок вычисления остатка, выполненный с возможностью определения остатка выборки на основе значения выборки текущего блока изображения и предсказанного значения выборки текущего блока изображения; и блок энтропийного кодирования специально выполнен с возможностью кодирования синтаксического элемента и остатка выборки в подлежащем передаче битовом потоке.
Согласно восьмому аспекту вариант осуществления настоящей заявки обеспечивает устройство для декодирования видео, и устройство для декодирования видео включает в себя блок энтропийного декодирования, блок межкадрового предсказания и блок восстановления.
Блок энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока для получения синтаксического элемента, причем этот синтаксический элемент по меньшей мере используется для указания того, что применяется двунаправленное предсказание.
Блок межкадрового предсказания выполнен с возможностью: если выполнено множество заданных условий, выполнения обработки двунаправленного оптического потока (BDOF) (Bi-directional optical flow, BIO или BDOF для краткости) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Например, если размер текущего блока изображения составляет 8×8, первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок. В качестве другого примера, если размер текущего блока изображения составляет 8×16, число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и число 16 указывает то, что высота текущего блока изображения составляет 16 выборок.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Блок восстановления выполнен с возможностью определения значения выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе декодирования текущий блок изображения представляет собой блок изображения, подлежащий декодированию (блок декодирования).
В данном варианте осуществления настоящей заявки может быть дополнительно включено действие по определению условий. Например, блок межкадрового предсказания дополнительно выполнен с возможностью определения того, выполнено ли множество заданных условий.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Более конкретно, условие для включения или использования технологии BDOF в этом решении отличается от условия для включения или использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к исходному значению выборки, и можно надлежащим образом управлять сложностью кодирования. Это до некоторой степени уравновешивает сложность кодирования/декодирования и точность предсказания, тем самым повышая эффективность кодирования.
В дополнительном решении синтаксический элемент включает в себя индекс (например, merge_idx[xCb][yCb]) информации движения целевого кандидата, информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания (например, predFlagL0=1 и predFlagL1=1), информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку (то есть list0), и второй вектор движения, соответствующий второму списку (то есть list1), и индексы опорных кадров включают в себя индекс (например, refIdxL0) первого опорного кадра, соответствующего первому списку, и индекс (например, refIdxL1) второго опорного кадра, соответствующего второму списку.
В данном варианте осуществления настоящей заявки индекс опорного кадра используется для идентификации опорного изображения, соответствующего используемому вектору движения (например, первому вектору движения или второму вектору движения) в заданном списке опорных изображений (первый список list0 или второй список list1). Изображение может называться кадром, и опорное изображение может называться опорным кадром.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении синтаксический элемент включает в себя первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы (например, mvp_lX_flag[xCb][yCb]) используются для указания предиктора целевого вектора движения-кандидата, предикторы целевых векторов движения-кандидатов включают в себя первый предиктор вектора движения, соответствующий первому списку (например, list0), и второй предиктор вектора движения, соответствующий второму списку (например, list1), и разность векторов движения (MVD) включает в себя первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку (например, когда включена только одна MVD, MVD, которая не передается, может быть получена на основе переданной MVD). Вторые индексы (которые также называются индексами опорных кадров) используются для указания опорных кадров текущего блока изображения, и опорные кадры включают в себя первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку. Например, вторыми индексами являются refIdxL0 и refIdxL1, refIdxL0 представляет собой индекс первого опорного кадра, соответствующего первому списку, и refIdxL1 представляет собой индекс второго опорного кадра, соответствующего второму списку. Информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1) используется для указания того, что применяется двунаправленное предсказание.
Первый вектор движения (например, Mv0_L0), соответствующий первому списку, получается на основе первого предиктора вектора движения (например, Mvp0_L0), соответствующего первому списку, и первой MVD (например, MVD0), соответствующей первому списку. Например, Mv0_L0=Mvp0_L0+MVD0.
Второй вектор движения (например, Mv1_L1), соответствующий второму списку, получается на основе второго предиктора вектора движения (например, Mvp1_L1), соответствующего второму списку, и второй MVD (например, MVD1), соответствующей второму списку. Например, Mv1_L1=Mvp1_L1+MVD1.
[00306] В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении блок энтропийного декодирования специально выполнен с возможностью синтаксического анализа битового потока для получения остатка выборки и синтаксического элемента; и блок восстановления специально выполнен с возможностью определения значения выборки текущего блока изображения на основе остатка выборки и предсказанного значения выборки текущего блока изображения.
Согласно девятому аспекту вариант осуществления настоящей заявки обеспечивает устройство для декодирования видео, и устройство для декодирования видео включает в себя блок энтропийного декодирования, блок межкадрового предсказания и блок восстановления.
Блок энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока для получения синтаксического элемента, причем этот синтаксический элемент по меньшей мере используется для указания того, что применяется двунаправленное предсказание.
Блок межкадрового предсказания выполнен с возможностью: когда размер текущего блока изображения является вторым заданным размером, определения (или получения путем предсказания) предсказанного значения выборки текущего блока изображения (например, выборки предсказания текущего блока кодирования) первым способом обработки на основе значения опорной выборки, соответствующего первому списку (то есть list0), и значения опорной выборки, соответствующего второму списку (то есть list1), где первым способом обработки не является BDOF (называемый двунаправленным оптическим потоком (Bi-directional optical flow, BIO)). Другими словами, когда размер текущего блока изображения является вторым заданным размером, BDOF не может использоваться для определения предсказанного значения выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Второй заданный размер включает в себя 8×8 (первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок), 4×N (4 указывает то, что ширина текущего блока изображения составляет 4 выборки, N указывает то, что высота текущего блока изображения составляет N выборок, и другие размеры выводятся по аналогии), 8×16 или 16×8. N равно степени 2 и больше или равно 8. Например, значение N может быть равным 16, 32, 64 или т.п.
В данном варианте осуществления настоящей заявки значение опорной выборки, соответствующее первому списку, и значение опорной выборки, соответствующее второму списку, соответственно, получают путем предсказания на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1). Например, значение опорной выборки, соответствующее первому списку (то есть list0), может быть определено на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и значение опорной выборки, соответствующее второму списку (то есть list1), может быть определено на основе второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1).
Блок восстановления выполнен с возможностью определения значения выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе декодирования текущий блок изображения представляет собой блок изображения, подлежащий декодированию (блок декодирования).
Кроме того, вышеописанный случай, когда второй заданный размер включает в себя 8×8, 4×N, 8×16 или 16×8, также может быть ограничен вторым заданным размером, равным 8×8, 4×N, 8×16 или 16×8. Другими словами, BDOF запрещено использовать для одного из размеров 8×8, 4×N, 8×16 и 16×8, перечисленных выше, или BDOF запрещено использовать для множества их размеров. Далее для описания используются примеры.
Пример 1: Второй заданный размер включает в себя (или составляет) 8×8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 8×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен 8×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 2: Второй заданный размер включает в себя (или составляет) 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 3: Второй заданный размер включает в себя (или составляет) 8×8 или 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размеров 8×8 и 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 8×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 4: Второй заданный размер включает в себя (или составляет) 8×8, 4×N, 8×16 или 16×8, где N больше или равно 8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещено использовать для размеров 8×8, 4×N, 8×16 и 16×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения является любым из 8×8, 4×N, 8×16 и 16×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 5: Второй заданный размер включает в себя (или составляет) N×8, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блок изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 6: Второй заданный размер включает в себя (или составляет) N×8 или 4×N, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8 или 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Кроме того, так как BDOF также запрещено использовать для размера M×4 в некоторых сценариях, в настоящей заявке, когда BDOF запрещено использовать для второго заданного размера, BDOF дополнительно запрещено использовать для размера M×4, где M - целое число, большее или равное 4.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Согласно вышеизложенному способу, при использовании технологии BDOF полностью учитываются особенности текущих блоков изображения различных размеров. Когда размер текущего блока изображения является вторым заданным размером, предсказанное значение выборки текущего блока изображения определяется в соответствии с технологией, отличной от технологии BDOF. Это значительно снижает сложность кодирования и повышает эффективность кодирования.
В дополнительном решении в процессе получения предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, блок межкадрового предсказания специально выполнен с возможностью:
выполнения взвешенного вычисления над значениями выборок, имеющими одно и то же местоположение в значении опорной выборки, соответствующем первому списку, и в значении опорной выборки, соответствующем второму списку, для получения предсказанного значения выборки текущего блока изображения; или
получения предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии разности векторов движения в режиме слияния (MMVD); или
получения предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии объединенного межкадрового/внутрикадрового предсказания (CIIP); или
получения предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии уточнения вектора движения на стороне декодера (DMVR).
В данном варианте осуществления настоящей заявки то, используется ли способ взвешенного вычисления, технология MMVD или технология CIIP, может быть определено с использованием соответствующего условия или может быть указано с использованием соответствующей информации указания.
Следует отметить, что технология BDOF эквивалентна технологии оптимизации исправлений для традиционной технологии предсказания предсказанного значения выборки текущего блока изображения. Во многих сценариях предсказанное значение выборки, более близкое к реальному значению выборки текущего блока изображения, может быть получено в соответствии с технологией BDOF. Поэтому остаток выборки, полученный на основе предсказанного значения выборки, может быть меньше, поэтому можно повысить эффективность кодирования. Таким образом, на стороне кодера обычно используется технология BDOF. Для более точного восстановления предсказанного значения выборки технология BDOF используется также, соответственно, на стороне декодера. Вышеупомянутый способ взвешенного вычисления можно рассматривать как традиционную технологию для получения предсказанного значения выборки текущего блока изображения, и каждую из вышеизложенных технологий MMVD, CIIP и DMVR можно рассматривать как технология оптимизации исправлений для традиционной технологии. В данном варианте осуществления настоящей заявки, когда размер текущего блока изображения является вторым заданным размером, предсказанное значение выборки текущего блока изображения определяется в соответствии с традиционной технологией (например, способом взвешенного вычисления) или другой технологией оптимизации исправлений (например, MMVD, CIIP или DMVR), а не технологией BDOF. Это позволяет значительно снизить сложность декодирования и повысить эффективность декодирования.
В дополнительном решении блок межкадрового предсказания дополнительно выполнен с возможностью: если выполнено множество заданных условий, выполнения обработки на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Блок восстановления дополнительно выполнен с возможностью восстановления текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения.
Более конкретно, условие для включения или использования технологии BDOF в этом решении отличается от условия для включения или использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к исходному значению выборки, и можно надлежащим образом управлять сложностью кодирования. Это до некоторой степени уравновешивает сложность кодирования/декодирования и точность предсказания, тем самым повышая эффективность кодирования.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
В дополнительном решении синтаксический элемент включает в себя индекс (например, merge_idx[xCb][yCb]) информации движения целевого кандидата, информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания (например, predFlagL0=1 и predFlagL1=1), информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку (то есть list0), и второй вектор движения, соответствующий второму списку (то есть list1), и индексы опорных кадров включают в себя индекс (например, refIdxL0) первого опорного кадра, соответствующего первому списку, и индекс (например, refIdxL1) второго опорного кадра, соответствующего второму списку.
В данном варианте осуществления настоящей заявки индекс опорного кадра используется для идентификации опорного изображения, соответствующего используемому вектору движения (например, первому вектору движения или второму вектору движения) в заданном списке опорных изображений (первый список list0 или второй список list1). Изображение может называться кадром, и опорное изображение может называться опорным кадром.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении синтаксический элемент включает в себя первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы (например, mvp_lX_flag[xCb][yCb]) используются для указания предиктора целевого вектора движения-кандидата, предикторы целевых векторов движения-кандидатов включают в себя первый предиктор вектора движения, соответствующий первому списку (например, list0), и второй предиктор вектора движения, соответствующий второму списку (например, list1), и разность векторов движения (MVD) включает в себя первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку (при необходимости, когда используется технология MMVD, может быть передана только одна MVD, и MVD, которая находится в другом направлении и которая должна использоваться на стороне декодера может быть получен на основе переданной MVD). Вторые индексы (которые также называются индексами опорных кадров) используются для указания опорных кадров текущего блока изображения, и опорные кадры включают в себя первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку. Например, вторыми индексами являются refIdxL0 и refIdxL1, refIdxL0 представляет собой индекс первого опорного кадра, соответствующего первому списку, и refIdxL1 представляет собой индекс второго опорного кадра, соответствующего второму списку. Информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1) используется для указания того, что применяется двунаправленное предсказание.
Первый вектор движения (например, Mv0_L0), соответствующий первому списку, получается на основе первого предиктора вектора движения (например, Mvp0_L0), соответствующего первому списку, и первой MVD (например, MVD0), соответствующей первому списку. Например, Mv0_L0=Mvp0_L0+MVD0.
Второй вектор движения (например, Mv1_L1), соответствующий второму списку, получается на основе второго предиктора вектора движения (например, Mvp1_L1), соответствующего второму списку, и второй MVD (например, MVD1), соответствующей второму списку. Например, Mv1_L1=Mvp1_L1+MVD1.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В дополнительном решении блок энтропийного декодирования специально выполнен с возможностью синтаксического анализа битового потока для получения остатка выборки и синтаксического элемента; и блок восстановления специально выполнен с возможностью определения значения выборки текущего блока изображения на основе остатка выборки и предсказанного значения выборки текущего блока изображения.
Согласно десятому аспекту вариант осуществления настоящей заявки обеспечивает устройство для межкадрового предсказания (например, блок межкадрового предсказания), и устройство для межкадрового предсказания включает в себя:
блок определения, выполненный с возможностью определения того, удовлетворяет ли текущий блок изображения множеству заданных условий; и
блок обработки межкадрового предсказания, выполненный с возможностью: если выполнено множество заданных условий, выполнения двунаправленный оптический поток BDOF (Bi-directional optical flow, BIO или BDOF для краткости) обработки над текущим блоком изображения, чтобы получить предсказанный образец значение текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Например, если размер текущего блока изображения составляет 8×8, первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок. В качестве другого примера, если размер текущего блока изображения составляет 8×16, число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и число 16 указывает то, что высота текущего блока изображения составляет 16 выборок.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе кодирования текущий блок изображения является блоком изображения, подлежащим кодированию (блоком кодирования). Конечно, текущий блок изображения в данном документе альтернативно может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе декодирования текущий блок изображения представляет собой блок изображения, подлежащий декодированию (блок декодирования).
В дополнительном решении блок обработки межкадрового предсказания дополнительно выполнен с возможностью: когда не выполнено по меньшей мере одно из множества заданных условий, пропуска выполнения обработки двунаправленного оптического потока BDOF (Bi-directional optical flow, BIO или BDOF для краткости) текущего блока изображения.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Следует понимать, что способ в данном варианте осуществления настоящей заявки может выполняться видеокодером или электронным устройством, имеющим функцию кодирования видео, или может выполняться видеодекодером или электронным устройством, имеющим функцию декодирования видео. Например, способ может быть специально реализован блоком межкадрового предсказания, находящимся в этих устройствах.
Более конкретно, условие для включения или использования технологии BDOF в этом решении отличается от условия для включения или использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к исходному значению выборки, и можно надлежащим образом управлять сложностью кодирования. Это до некоторой степени уравновешивает сложность кодирования/декодирования и точность предсказания, тем самым повышая эффективность кодирования.
Согласно одиннадцатому аспекту вариант осуществления настоящей заявки обеспечивает устройство для декодирования видеоданных, и устройство включает в себя:
память, выполненную с возможностью хранения видеоданных в виде битового потока; и
видеодекодер, выполненный с возможностью: декодирования битового потока для получения синтаксического элемента, где этот синтаксический элемент по меньшей мере используется для указания того, что применяется двунаправленное предсказание; и если выполнено множество заданных условий, выполнения обработки на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Согласно двенадцатому аспекту вариант осуществления настоящей заявки обеспечивает устройство для кодирования видеоданных, и устройство включает в себя:
память, выполненную с возможностью хранения видеоданных, где видеоданные включают в себя один или более блоков изображения; и
видеокодер, выполненный с возможностью: если выполнено множество заданных условий, выполнения обработки на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя: по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Видеокодер дополнительно выполнен с возможностью кодирования синтаксического элемента в подлежащем передаче битовом потоке, где синтаксический элемент используется по меньшей мере для указания того, что применяется двунаправленное предсказание.
Согласно тринадцатому аспекту вариант осуществления настоящей заявки обеспечивает устройство кодирования, включающее в себя энергонезависимую память и процессор, которые электрически соединены друг с другом. Процессор вызывает программный код, хранящийся в памяти, для выполнения некоторых или всех этапов любого способа в первом аспекте.
Согласно четырнадцатому аспекту вариант осуществления настоящей заявки обеспечивает устройство декодирования, включающее в себя энергонезависимую память и процессор, которые электрически соединены друг с другом. Процессор вызывает программный код, хранящийся в памяти, для выполнения некоторых или всех этапов любого способа в третьем аспекте.
Согласно пятнадцатому аспекту вариант осуществления настоящей заявки обеспечивает машиночитаемый носитель информации. Машиночитаемый носитель информации хранит программный код, и программный код включает в себя инструкцию, используемую для выполнения некоторых или всех этапов любого способа в первом аспекте.
Согласно шестнадцатому аспекту вариант осуществления настоящей заявки обеспечивает компьютерный программный продукт. Когда компьютерный программный продукт запускается на компьютере, компьютер может выполнять некоторые или все этапы любого способа в первом аспекте.
Следует понимать, что технические решения во втором - шестнадцатом аспектах настоящей заявки согласуются с техническими решениями в первом аспекте настоящей заявки, и положительные эффекты, достигаемые аспектами и соответствующими возможными реализациями, являются аналогичными. Подробности повторно не описываются.
Краткое описание чертежей
Для более четкого описания технических решений вариантов осуществления настоящей заявки или предшествующего уровня техники ниже приведено описание сопроводительных чертежей, которые используются для описания вариантов осуществления настоящей заявки или предшествующего уровня техники.
фиг. 1A - блок-схема примера системы 10 кодирования и декодирования видео для реализации варианта осуществления настоящей заявки;
фиг. 1B - блок-схема примера системы 40 кодирования видео для реализации варианта осуществления настоящей заявки;
фиг. 2 - блок-схема примерной структуры кодера 20 для реализации варианта осуществления настоящей заявки;
фиг. 3 - блок-схема примерной структуры декодера 30 для реализации варианта осуществления настоящей заявки;
фиг. 4 - блок-схема примера устройства 400 для кодирования видео для реализации варианта осуществления настоящей заявки;
фиг. 5 - блок-схема другого примера устройства кодирования или устройства декодирования для реализации варианта осуществления настоящей заявки;
фиг. 5A - схематичное представление информации движения текущего блока изображения и опорного блока согласно варианту осуществления настоящей заявки;
фиг. 5B - схематичное представление сценария межкадрового предсказания согласно варианту осуществления настоящей заявки;
фиг. 5C - схематичное представление сценария межкадровых соседних блоков согласно варианту осуществления настоящей заявки;
фиг. 6A - схематичная блок-схема способа кодирования согласно варианту осуществления настоящей заявки;
фиг. 6B - схематичное представление прямого опорного изображения и обратного опорного изображения для реализации варианта осуществления настоящей заявки;
фиг. 6С - схематичное представление процесса уточнения вектора движения для реализации варианта осуществления настоящей заявки;
фиг. 6D - схематичное представление сценария способа расширения на основе заполнения согласно варианту осуществления настоящей заявки;
фиг. 7 - схематичная блок-схема способа декодирования согласно варианту осуществления настоящей заявки; и
фиг. 8 - схематичная структурная схема устройства межкадрового предсказания согласно варианту осуществления настоящей заявки.
Осуществление изобретения
Ниже описаны варианты осуществления настоящей заявки со ссылкой на сопроводительные чертежи в вариантах осуществления настоящей заявки. В последующем описании сделана ссылка на сопроводительные чертежи, которые составляют часть настоящего раскрытия и показывают в качестве иллюстрации конкретные аспекты вариантов осуществления настоящей заявки или конкретные аспекты, в которых могут использоваться варианты осуществления настоящей заявки. Следует понимать, что варианты осуществления настоящей заявки могут использоваться в других аспектах и могут включать в себя структурные или логические изменения, не показанные на сопроводительных чертежах. Таким образом, последующее подробное описание не следует истолковывать в ограничивающем смысле, и объем настоящей заявки ограничен прилагаемой формулой изобретения. Например, следует понимать, что раскрытое содержание в сочетании с описанным способом также может быть верным для соответствующего устройства или системы, выполненной с возможностью выполнения способа, и наоборот. Например, при описании одного или нескольких конкретных этапов способа соответствующее устройство может включать в себя один или более блоков, таких как функциональные блоки, для выполнения описанных одного или нескольких этапов способа (например, один блок, выполняющий один или более этапов; или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков явно не описаны или не проиллюстрированы на сопроводительных чертежах. В дополнение к этому, например, если конкретное устройство описывается на основе одного или нескольких блоков, таких как функциональные блоки, соответствующий способ может включать в себя один этап, используемый для выполнения функций одного или нескольких блоков (например, один этап, используемый для выполнения функций одного или нескольких блоков, или множество этапов, каждый из которых используется для выполнения функций одного или нескольких из множества блоков), даже если такой один или более этапов явно не описаны или не проиллюстрированы на сопроводительных чертежах. Кроме того, следует понимать, что особенности различных примерных вариантов осуществления и/или аспектов, описанных в настоящем описании, могут быть объединены друг с другом, если особым образом не указано иное.
Технические решения, представленные в вариантах осуществления настоящей заявки, могут не только применяться к существующим стандартам кодирования видео (например, таким стандартам, как H.264 и HEVC), но также могут применяться к будущим стандартам кодирования видео (например, стандарт H.266). Термины, используемые в реализациях настоящей заявки, предназначены только для объяснения конкретных вариантов реализации настоящей заявки и не предназначены для ограничения настоящей заявки. Ниже сначала кратко описаны концепции, которые относятся к вариантам осуществления настоящей заявки.
Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. В области кодирования видео термины "картинка (picture)", "кадр (frame)" и "изображение (image)" могут использоваться как синонимы. Кодирование видео, используемое в данной спецификации, включает в себя кодирование видео и декодирование видео. Кодирование видео выполняется на стороне-адресате и обычно включает в себя обработку (например, путем сжатия) исходного видеоизображения для того, чтобы уменьшить количество данных для представления видеоизображения с целью более эффективного хранения и/или передачи. Декодирование видео выполняется на стороне-адресате и обычно включает в себя обратную обработку по отношению к кодеру для восстановления видеоизображения. "Кодирование" видеоизображения в вариантах осуществления следует понимать как "кодирование" или "декодирование" видеопоследовательности. Комбинация части кодирования и части декодирования также называется кодированием (кодированием и декодированием).
Видеопоследовательность включает в себя ряд изображений (picture), изображение дополнительно разбивается на слайсы (slice), и слайс дополнительно разбивается на блоки (block). Кодирование видео выполняется поблочно. В некоторых новых стандартах кодирования видео концепция "блок" дополнительно расширена. Например, в стандарт H.264 введен макроблок (macroblock, MB). Макроблок дополнительно может быть разделен на множество блоков предсказания, которые могут использоваться для кодирования с предсказанием (разделением). В стандарте высокоэффективного кодирования видео (high efficiency video coding, HEVC) используются основные концепции, такие как "единица кодирования" (coding unit, CU), "единица предсказания" (prediction unit, PU) и "единица преобразования" (transform unit, TU). Множество блочных единиц получается посредством разделения функций и описывается с использованием новой древовидной структуры. Например, CU может быть разделена на меньшие CU на основе квадродерева, и меньшая CU может быть дополнительно разделена, чтобы выработать структуру квадродерева. CU представляет собой базовую единицу для разделения и кодирования кодированного изображения. PU и TU также имеют аналогичные древовидные структуры. PU может соответствовать блоку предсказания и является базовой единицей для предсказанного кодирования. CU дополнительно разбивается на множество PU в режиме разделения. TU может соответствовать блоку преобразования и является базовой единицей, используемой для преобразования остатка предсказания. Однако по существу все CU, PU и TU концептуально являются блоками (или блоками изображения).
Например, в HEVC CTU разбивается на множество CU с использованием структуры квадродерева, представленной как дерево кодирования. Решение о кодировании зоны изображения с помощью межкадрового (временного) или внутрикадрового (пространственного) предсказания принимается на уровне CU. Каждая CU может быть дополнительно разделена на одну, две или четыре PU на основе типа разделения PU. В одной PU применяется один и тот же процесс предсказания, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разделения PU, CU может быть разделена на блоки преобразования (transform unit, TU) на основе другой структуры квадродерева, аналогичной дереву кодирования, используемому для CU. В последних разработках технологий сжатия видео для разделения блока кодирования используется кадр разделения "квадродерево плюс двоичное дерево" (quadtree plus binary tree, QTBT). В блочной структуре QTBT CU может иметь форму квадрата или прямоугольника.
В данном описании для простоты описания и понимания блок изображения, который должен быть обработан в текущем изображении, может упоминаться как текущий блок или блок изображения, подлежащий обработке. Например, при кодировании блок изображения представляет собой блок, который кодируется, и при декодировании блок изображения представляет собой блок, который декодируется. Блок декодированных изображений в опорном изображении, используемый для предсказания текущего блока, называется опорным блоком. Более конкретно, опорный блок представляет собой блок, который предоставляет опорный сигнал для текущего блока, и опорный сигнал представляет собой значение выборки в блоке изображения. Блок, который предоставляет сигнал предсказания для текущего блока в опорном изображении, может называться блоком предсказания. Сигнал предсказания представляет значение пикселя, значение выборки или дискретизированный сигнал в блоке предсказания. Например, после прохождения множества опорных блоков находится оптимальный опорный блок. Оптимальный опорный блок обеспечивает предсказание для текущего блока, и этот блок называется блоком предсказания.
В случае кодирования видео без потерь могут быть восстановлены исходные видеоизображения. Более конкретно, восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии, что во время хранения или передачи не происходит потерь данных при передаче или других потерь данных). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, путем квантования, чтобы уменьшить количество данных, требуемых для представления видеоизображений, и видеоизображения не могут быть полностью восстановлены на стороне декодера. Более конкретно, качество восстановленных видеоизображений ниже или хуже, чем у исходных видеоизображений.
Некоторые стандарты H.261 кодирования видео предназначены для "гибридного кодирования видео с потерями" (более конкретно, пространственное и временное предсказание в области выборки объединяется с кодированием с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разбивается на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Более конкретно, на стороне кодера видео обычно обрабатывается, то есть кодируется на уровне блока (видеоблока). Например, блок предсказания вырабатывается посредством пространственного (внутрикадрового) предсказания и временного (межкадрового) предсказания, блок предсказания вычитается из текущего блока (блока, который обрабатывается или должен быть обработан) для получения остаточного блока, и блок остатка преобразуется в области преобразования и квантуется для уменьшения количества данных, которые должны быть переданы (сжаты). На стороне декодера часть обратной обработки по отношению к кодеру применяется к кодированному блоку или сжатому блоку, чтобы восстановить текущий блок для представления. Кроме того, кодер дублирует цикл обработки декодера, так что кодер и декодер вырабатывают одинаковое предсказание (например, внутрикадровое предсказание и межкадровое предсказание) и/или восстановление для обработки, то есть для кодирования, последующих блоков.
Ниже описывается архитектура системы, к которой применимы варианты осуществления настоящей заявки. На фиг. 1A показана схематичная блок-схема примера системы 10 кодирования и декодирования видео, к которой применимы варианты осуществления настоящей заявки. Как показано на фиг. 1A, система 10 кодирования и декодирования видео может включать в себя устройство-источник 12 и устройство-адресат 14. Устройство-источник 12 вырабатывает кодированные видеоданные, и поэтому устройство-источник 12 может называться устройством для кодирования видео. Устройство-адресат 14 может декодировать кодированные видеоданные, выработанные устройством-источником 12, и поэтому устройство-адресат 14 может называться устройством для декодирования видео. В различных решениях реализации устройство-источник 12, устройство-адресат 14 или как устройство-источник 12, так и устройство-адресат 14 могут включать в себя один или более процессоров и память, подключенную к одному или нескольким процессорам. Память может включать в себя, но без ограничений, RAM, ROM, EEPROM, флэш-память или любой другой носитель информации, который может использоваться для хранения желаемого программного кода в виде инструкции или структуры данных, доступной для компьютера, как описано в данной спецификации. Устройство-источник 12 и устройство-адресат 14 могут включать в себя различные устройства, включая настольный компьютер, мобильное вычислительное устройство, портативный компьютер (например, портативный компьютер), планшетный компьютер, телевизионную приставку, телефонную гарнитуру, например, так называемый "умный" телефон, телевизор, камеру, устройство отображения, цифровой медиаплеер, игровую приставку, бортовой компьютер, устройство беспроводной связи и т.п.
Хотя на фиг. 1A устройство-источник 12 и устройство-адресат 14 показаны как отдельные устройства, вариант осуществления устройства может альтернативно включать в себя как устройство-источник 12, так и устройство-адресат 14, или функции как устройства-источника 12, так и устройства-адресата 14, то есть устройство-источник 12 или соответствующую функцию и устройство-адресат 14 или соответствующую функцию. В данном варианте осуществления устройство-источник 12 или соответствующая функция и устройство-адресат 14 или соответствующая функция могут быть реализованы с использованием одних и тех же аппаратных средств и/или программного обеспечения, отдельных аппаратных средств и/или программного обеспечения или любой их комбинации.
Соединение связи между устройством-источником 12 и устройством-адресатов 14 может быть реализовано через линию 13 связи. Устройство-адресат 14 может принимать кодированные видеоданные из устройства-источника 12 по линии 13 связи. Линия 13 связи может включать в себя один или более носителей информации или одно или более устройств, способных перемещать кодированные видеоданные из устройства-источника 12 в устройство-адресат 14. В примере линия 13 связи может включать в себя одну или более средств связи, которые позволяют устройству-источнику 12 напрямую передавать кодированные видеоданные в устройство-адресат 14 в реальном времени. В этом примере устройство-источник 12 может модулировать кодированные видеоданные в соответствии со стандартом связи (например, протоколом беспроводной связи) и может передавать модулированные видеоданные в устройство-адресат 14. Одно или более средств связи могут включать в себя средство беспроводной связи и/или средство проводной связи, например, радиочастотный (RF) спектр или один или более физических кабелей передачи. Одно или более средств связи могут быть частью пакетной сети, и пакетная сеть представляет собой, например, локальную сеть, глобальную сеть или глобальную сеть (например, интернет). Одно или более средств связи могут включать в себя маршрутизатор, коммутатор, базовую станцию или другое устройство, которое обеспечивает связь от устройства-источника 12 до устройства-адресата 14.
Устройство-источник 12 включает в себя кодер 20. При необходимости устройство-источник 12 может дополнительно включать в себя источник 16 изображения, препроцессор 18 изображения и интерфейс 22 связи. В конкретной форме реализации кодер 20, источник 16 изображения, препроцессор 18 изображения и интерфейс 22 связи могут быть аппаратными компонентами в устройстве-источнике 12 или могут быть программами программного обеспечения в устройстве-источнике 12. Ниже приводится по отдельности их описание.
Источник 16 изображения может включать в себя или может быть устройством захвата изображения любого типа, выполненным, например, с возможностью захвата реального изображения; и/или устройством любого типа для выработки изображения или комментария (для кодирования содержания экрана некоторый текст на экране также рассматривается как часть картинки или изображения, подлежащего кодированию), например, процессором компьютерной графики, выполненным с возможностью создания компьютерной анимационной картинки; или устройством любого типа, выполненным с возможностью получения и/или предоставления реального изображения или компьютерного анимационного изображения (например, содержания экрана или изображения виртуальной реальности (virtual reality, VR)), и/или любой их комбинацией (например, изображения дополненной реальности (augmented reality, AR)). Источник 16 изображения может быть камерой, выполненной с возможностью захвата изображения, или памятью, выполненной с возможностью хранения изображения. Источник 16 изображения может дополнительно включать в себя интерфейс любого типа (внутренний или внешний), через который сохраняется ранее захваченное или выработанное изображение и/или получается или принимается изображение. Когда источником 16 изображения является камера, источником 16 изображения может быть, например, локальная камера или интегрированная камера, встроенная в устройство-источник. Когда источником 16 изображения является память, источником 16 изображения может быть локальная памятью или, например, интегрированная память, встроенная в устройство -источник. Когда источник 16 изображения включает в себя интерфейс, интерфейс может быть, например, внешним интерфейсом для приема изображения из внешнего источника видео. Внешний источник видео представляет собой, например, внешнее устройство захвата изображения, такое как камера, внешняя память или внешнее устройство выработки изображения. Внешнее устройство выработки изображения представляет собой, например, внешний компьютерный графический процессор, компьютер или сервер. Интерфейс может быть интерфейсом любого типа, например, проводным или беспроводным интерфейсом или оптическим интерфейсом, в соответствии с любым частным или стандартизированным интерфейсным протоколом.
Изображение можно рассматривать как двумерный массив или матрицу элементов изображения (picture element). Элемент изображения в массиве может также называться выборкой. Количество выборок в горизонтальном и вертикальном направлениях (или по горизонтальной и вертикальной осям) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, в частности, изображение может быть представлено в виде трех массивов выборок или может включать в себя их. Например, в формате RBG или цветовом пространстве изображение включает в себя соответствующие массивы выборок красного, зеленого и синего цветов. Однако при кодировании видео каждая выборка обычно представлена в формате яркости/цветности или цветовом пространстве. Например, изображение в формате YUV включает в себя компонент яркости, обозначенный Y (иногда обозначаемый альтернативно L), и два компонента цветности, обозначенные U и V. Компонент яркости (luma) Y представляет яркость или уровни интенсивности серого цвета (например, на изображении с оттенками серого они представляют собой одно и то же), и два компонента цветности (chroma) U и V представляют собой компоненты цветности или информации о цвете. Соответственно, изображение в формате YUV включает в себя массив выборок яркости со значениями выборок яркости (Y) и два массива выборок цветности со значениями цветности (U и V). Изображения в формате RGB можно трансформировать или преобразовать в формат YUV и наоборот. Этот процесс также называется преобразованием или трансформацией цвета. Если изображение является монохромным, оно может включать в себя только массив выборок яркости. В данном варианте осуществления настоящей заявки изображение, переданное источником 16 изображения в процессор изображения, может также называться необработанными данными 17 изображения.
Препроцессор 18 изображения выполнен с возможностью приема необработанных данных 17 изображения и выполнения предварительной обработки необработанных данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Например, предварительная обработка, выполняемая препроцессором 18 изображения, может включать в себя обрезку, преобразование цветового формата (например, из формата RGB в формат YUV), коррекцию цвета или шумоподавление.
Кодер 20 (также называемый видеокодером 20) выполнен с возможностью приема предварительно обработанных данных 19 изображения и обработки предварительно обработанных данных 19 изображения в соответствующем режиме предсказания (таком как режим предсказания в вариантах осуществления данной спецификации), чтобы предоставить данные 21 кодированного изображения (структурные подробности кодера 20 дополнительно описаны ниже на основе фиг. 2, фиг. 4 или фиг. 5). В некоторых вариантах осуществления кодер 20 может быть выполнен с возможностью выполнения различных вариантов осуществления, описанных ниже, для реализации на стороне кодера способа предсказания блока цветности, описанного в настоящей заявке.
Интерфейс 22 связи может быть выполнен с возможностью приема кодированных данных 21 изображения и передачи кодированных данных 21 изображения в устройство-адресат 14 или любое другое устройство (например, в память) через линию 13 связи для хранения или прямого восстановления. Другое устройство может быть любым устройством, используемым для декодирования или хранения. Интерфейс 22 связи может быть, например, выполнен с возможностью инкапсуляции кодированных данных 21 изображения в соответствующий формат, например, пакет данных, для передачи по линии 13 связи.
Устройство-адресат 14 включает в себя декодер 30. При необходимости устройство-адресат 14 может дополнительно включать в себя интерфейс 28 связи, постпроцессор 32 изображения и устройство 34 отображения. Ниже приводится по отдельности их описание.
Интерфейс 28 связи может быть выполнен с возможностью приема кодированных данных 21 изображения из устройства-источника 12 или любого другого источника. Любой другой источник представляет собой, например, запоминающее устройство. Запоминающее устройство представляет собой, например, устройство для хранения данных кодированного изображения. Интерфейс 28 связи может быть выполнен с возможностью передачи или приема кодированных данных 21 изображения через линию 13 связи между устройством-источником 12 и устройством-адресатов 14 или через сеть любого типа. Линия 13 связи представляет собой, например, прямое проводное или беспроводное соединение. Сеть любого типа представляет собой, например, проводную или беспроводную сеть или любую их комбинацию, или частную или общедоступную сеть любого типа или любую их комбинацию. Интерфейс 28 связи может быть выполнен, например, с возможностью декапсуляции пакета данных, переданного через интерфейс 22 связи, для получения кодированных данных 21 изображения.
Как интерфейс 28 связи, так и интерфейс 22 связи могут быть сконфигурированы как однонаправленные интерфейсы связи или как двунаправленные интерфейсы связи, и могут быть сконфигурированы, например, для отправки и приема сообщений для установления соединения, а также для подтверждения и обмена любой другой информацией, которая относится к линии связи, и/или передаче данных, такой как передача данных кодированного изображения.
Декодер 30 выполнен с возможностью приема кодированных данных 21 изображения и предоставления данных 31 декодированного изображения или декодированного изображения 31 (структурные подробности декодера 30 дополнительно описаны ниже со ссылкой на фиг. 3, фиг. 4 или 5). В некоторых вариантах осуществления декодер 30 может быть выполнен с возможностью выполнения различных вариантов осуществления, описанных ниже, для реализации на стороне декодера способа предсказания блока цветности, описанного в настоящей заявке.
Постпроцессор 32 изображения выполнен с возможностью постобработки данных 31 декодированного изображения (также называемых данными восстановленного изображения) для получения постобработанных данных 33 изображения. Постобработка, выполняемая постпроцессором 32 изображения, может включать в себя преобразование цветового формата (например, из формата YUV в формат RGB), коррекцию цвета, обрезку, повторную дискретизацию или любую другую обработку. Постпроцессор 32 изображения может быть дополнительно выполнен с возможностью передачи постобработанных данных 33 изображения в устройство 34 отображения.
Устройство 34 отображения выполнено с возможностью приема данных 33 изображения с постобработкой, чтобы отображать изображение, например, пользователю или зрителю. Устройство 34 отображения может быть или может включать в себя дисплей любого типа для представления восстановленного изображения, например, интегрированный или внешний дисплей или монитор. Например, дисплей может включать в себя жидкокристаллический дисплей (liquid crystal display, LCD), дисплей на органических светодиодах (organic light-emitting diode, OLED), плазменный дисплей, проектор, микросветодиодный дисплей, жидкие кристаллы на кремнии (liquid crystal on silicon, LCoS), цифровой световой процессор (digital light processor, DLP) или любой другой дисплей.
Хотя на фиг. 1A показано устройство-источник 12 и устройство-адресат 14 как отдельные устройства, вариант осуществления устройства может альтернативно включать в себя как устройство-источник 12, так и устройство-адресат 14, или функции как устройства-источника 12, так и устройства-адресата 14, то есть как устройство-источник 12 или соответствующую функцию, так и устройство-адресат 14 или соответствующую функцию. В таком варианте осуществления устройство-источник 12 или соответствующая функция и устройство-адресат 14 или соответствующая функция могут быть реализованы с использованием одних и тех же аппаратных средств и/или программного обеспечения, отдельных аппаратных средств и/или программного обеспечения или любой их комбинации.
Основываясь на описании, специалистам в данной области техники будет очевидно, что наличие и (точное) разделение функций различных блоков или функций устройства-источника 12 и/или устройства-адресата 14, показанных на фиг. 1A, может отличаться в зависимости от реального устройства и приложения. Устройство-источник 12 и устройство-адресат 14 могут включать в себя любое из широкого разнообразия устройств, включая портативное или стационарное устройство любого типа, например, ноутбук или портативный компьютер, мобильный телефон, смартфон, планшет или планшетный компьютер, видеокамеру, настольный компьютер, телевизионную приставку, телевизор, камеру, устройство, установленное на транспортном средстве, устройство отображения, цифровой медиаплеер, игровую консоль, устройство потоковой передачи видео (например, сервер услуг по передаче содержания или сервер доставки содержания), широковещательное приемное устройство или широковещательное передающее устройство, и могут использовать или не использовать операционную систему любого типа.
Каждый из кодера 20 и декодера 30 может быть реализован как любая из различных подходящих схем, например, один или более микропроцессоров, процессоры цифровых сигналов (процессор цифровых сигналов, DSP), специализированные интегральные схемы (application-specific integrated circuit, ASIC), программируемые пользователем вентильные матрицы (field-programmable gate array, FPGA), дискретная логика, аппаратные средства или любая их комбинация. Если технологии реализованы частично с использованием программного обеспечения, устройство может хранить инструкцию программного обеспечения на подходящем энергонезависимом машиночитаемом носителе информации и может исполнять инструкцию с использованием аппаратных средств, таких как один или более процессоров, для реализации технологий настоящего раскрытия. Любое из вышеуказанного содержания (включая аппаратные средства, программное обеспечение, комбинацию аппаратных средств и программного обеспечения и т.п.) может рассматриваться как один или более процессоров.
В некоторых случаях система 10 кодирования и декодирования видео, показанная на фиг. 1A является просто примером, и способы настоящей заявки могут применяться к настройкам кодирования видео (например, к кодированию видео или декодированию видео), которые не обязательно включают в себя какой-либо обмен данными между устройством кодирования и устройством декодирования. В другом примере данные могут быть извлечены из локальной памяти, переданы в потоковом режиме по сети и т.п. Устройство для кодирования видео может кодировать данные и сохранять данные в памяти, и/или устройство для декодирования видео может извлекать данные из памяти и декодировать данные. В некоторых примерах устройства, которые только кодируют данные и хранят данные в памяти и/или извлекают данные из памяти и декодируют данные, и которые не обмениваются данными друг с другом, выполняют кодирование и декодирование.
На фиг. 1B показана иллюстративная схема примера системы 40 кодирования видео, включающей в себя кодер 20 (фиг. 2) и/или декодер 30 (фиг. 3) согласно примерному варианту осуществления. Система 40 кодирования видео может реализовывать комбинацию различных технологий в вариантах осуществления настоящей заявки. В проиллюстрированной реализации система 40 кодирования видео может включать в себя устройство 41 формирования изображения, кодер 20, декодер 30 (и/или видеокодер/декодер, реализованный с помощью логической схемы 47 схемы 46 обработки), антенну 42, один или более процессоров 43, одно или более запоминающих устройств 44 и/или устройство 45 отображения.
Как показано на фиг. 1B, устройство 41 формирования изображения, антенна 42, схема 46 обработки, логическая схема 47, кодер 20, декодер 30, процессор 43, память 44 и/или устройство 45 отображения могут обмениваться данными друг с другом. Как описано, хотя система 40 кодирования видео проиллюстрирована с помощью кодера 20 и декодера 30, в различных примерах система 40 кодирования видео может включать в себя только кодер 20 или только декодер 30.
В некоторых примерах антенна 42 может быть выполнена с возможностью передачи или приема кодированного битового потока видеоданных. Кроме того, в некоторых примерах устройство 45 отображения может быть выполнено с возможностью представления видеоданных. В некоторых примерах логическая схема 47 может быть реализована с помощью схемы 46 обработки. Схема 46 обработки может включать в себя логическую схему на основе специализированной интегральной схемы (application-specific integrated circuit, ASIC), графический процессор, процессор общего назначения или т.п. Система 40 кодирования видео также может включать в себя дополнительный процессор 43. Дополнительный процессор 43 может аналогичным образом включать в себя логику на основе специализированной интегральной схемы (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. В некоторых примерах логическая схема 47 может быть реализована с помощью аппаратных средств, например, с помощью выделенных аппаратных средств для кодирования видео. Процессор 43 может быть реализован с помощью программного обеспечения общего назначения, операционной системы и т.п. В дополнение к этому, память 44 может быть памятью любого типа, например, энергозависимой памятью (например, статической памятью с произвольным доступом (Static Random Access Memory, SRAM) или динамической памятью с произвольным доступом (Dynamic Random Access Memory, DRAM) или энергонезависимой памятью (например, флэш-памятью). В неограничивающем примере память 44 может быть реализована с помощью кэш-памяти. В некоторых примерах логическая схема 47 может обращаться к памяти 44 (например, для реализации буфера изображений). В других примерах логическая схема 47 и/или схема 46 обработки могут включать в себя память (например, кэш) для реализации буфера изображений.
В некоторых примерах видеокодер 20, реализованный с использованием логической схемы, может включать в себя буфер изображений (который реализован, например, с использованием схемы 46 обработки или памяти 44) и блок обработки графики (который реализован, например, с использованием схемы 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Блок обработки графики может включать в себя кодер 20, реализованный с использованием логической схемы 47, для реализации различных блоков, которые описаны со ссылкой на фиг. 2, и/или любую другую систему или подсистему кодера, описанную в данной спецификации. Логическая схема может быть выполнена с возможностью выполнения различных операций, описанных в данной спецификации.
В некоторых примерах декодер 30 может быть реализован логической схемой 47 аналогичным образом для реализации различных блоков, которые описаны со ссылкой на декодер 30, показанный на фиг. 3, и/или любую другую систему или подсистему декодера, описанную в данной спецификации. В некоторых примерах декодер 30, реализованный с использованием логической схемы, может включать в себя буфер изображений (который реализуется схемой 46 обработки или памятью 44) и блок обработки графики (который реализован, например, схемой 46 обработки.). Графический процессор может быть коммуникативно связан с буфером изображения. Блок обработки графики может включать в себя декодер 30, реализованный логической схемой 47, для реализации различных блоков, которые описаны со ссылкой на фиг. 3 и/или любую другую систему или подсистему декодера, описанную в данной спецификации.
В некоторых примерах антенна 42 может быть выполнена с возможностью приема кодированного битового потока видеоданных. Как описано, кодированный битовый поток может включать в себя данные, указатель, значение индекса, данные выбора режима и т.п., которые относятся к кодированию видеокадров и которые описаны в данной спецификации, например, данные, которые относятся к разделению кодирования (например, коэффициент преобразования или квантованный коэффициент преобразования, дополнительный указатель (как описано) и/или данные, определяющие разделение кодирования). Система 40 кодирования видео может дополнительно включать в себя декодер 30, который подключен к антенне 42 и выполнен с возможностью декодирования кодированного битового потока. Устройство 45 отображения выполнено с возможностью представления видеокадра.
Следует понимать, что в данном варианте осуществления настоящей заявки для примера, описанного со ссылкой на кодер 20, декодер 30 может быть выполнен с возможностью выполнения обратного процесса. Что касается сигнализации синтаксического элемента, декодер 30 может быть выполнен с возможностью приема и синтаксического анализа такого синтаксического элемента и, соответственно, декодирования связанных с ним видеоданных. В некоторых примерах кодер 20 может энтропийно кодировать синтаксический элемент в кодированный битовый поток видео. В таких примерах декодер 30 может синтаксически проанализировать синтаксический элемент и, соответственно, декодировать связанные с ним видеоданные.
Следует отметить, что способ кодирования видеоизображений, описанный в вариантах осуществления настоящей заявки, выполняется в кодере 20, и способ декодирования видеоизображений, описанный в вариантах осуществления настоящей заявки, выполняется в декодере 30. Кодер 20 и декодер 30 в вариантах осуществления настоящей заявки может быть, например, кодером/декодером, соответствующим протоколу стандарта видео, например, H.263, H.264, HEVC, MPEG-2, MPEG-4, VP8 или VP9, или стандартный протокол видео следующего поколения (например, H.266).
На фиг. 2 показана схематичная/концептуальная блок-схема примера кодера 20, выполненного с возможностью реализации варианта осуществления настоящей заявки. В примере, показанном на фиг. 2, кодер 20 включает в себя блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений (decoded picture buffer, DPB), блок 260 обработки предсказания и блок 270 энтропийного кодирования. Блок 260 обработки предсказания может включать в себя блок 244 межкадрового предсказания, блок 254 внутрикадрового предсказания и блок 262 выбора режима. Блок 244 межкадрового предсказания может включать в себя блок оценки движения и блок компенсации движения (на чертеже не показаны). Кодер 20, показанный на фиг. 2, также может называться гибридным видеокодером или видеокодером на основе гибридного видеокодека.
Например, блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 обработки предсказания и блок 270 энтропийного кодирования образуют прямой путь прохождения сигнала кодера 20, тогда как, например, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений (decoded picture buffer, DPB) и блок 260 обработки предсказания образуют обратный путь прохождения сигнала кодера. Обратный путь прохождения сигнала кодера соответствует пути прохождения сигнала декодера (смотри декодер 30, показанный на фиг. 3).
Кодер 20 принимает, например, через вход 202, изображение 201 или блок 203 изображения для изображения 201, например, изображение в виде последовательности изображений, образующих видео или видеопоследовательность. Блок 203 изображения также может упоминаться как текущий блок изображения или блок изображения, который должен быть кодирован, и изображение 201 может упоминаться как текущее изображение или изображение, которое должно быть кодировано (в частности, при кодировании видео, чтобы отличить текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений в одной и той же видеопоследовательности, а именно видеопоследовательности, которая также включает в себя текущее изображение).
Вариант осуществления кодера 20 может включать в себя блок разделения (не показан на фиг. 2), выполненный с возможностью разделения изображения 201 на множество блоков, таких как блок 203 изображения. Изображение 201 обычно разбивается на множество не перекрывающихся блоков. Блок разделения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями, или подмножествами, или группами изображений, и разделения каждого изображения на соответствующие блоки.
В одном примере блок 260 обработки предсказания кодера 20 может быть выполнен с возможностью выполнения любой комбинации технологий разделения, описанных выше.
Как и изображение 201, блок 203 изображения также представляет собой или может рассматриваться как двумерный массив или матрица выборок со значениями выборок, хотя размер блока 203 изображения меньше, чем размер изображения 201. Другими словами, блок 203 изображения может включать в себя, например, один массив выборок (например, массив яркости в случае монохромного изображения 201), три массива выборок (например, один массив яркости и два массива цветности в случае цветного изображения) или любое другое количество и/или тип массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлениях (или по горизонтальной и вертикальной осям) блока 203 изображения определяет размер блока 203 изображения.
Кодер 20, показанный на фиг. 2 выполнен с возможностью поблочного кодирования изображения 201, например, для выполнения кодирования и предсказания для каждого блока 203 изображения.
Блок 204 вычисления остатка выполнен с возможностью вычисления остаточного блока 205 на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания будут представлены ниже), например, путем вычитания значений выборок блока 265 предсказания из значения выборки блока 203 изображения выборка за выборкой (пиксель за пикселем) с тем, чтобы получить остаточный блок 205 в области выборки.
Блок 206 обработки преобразования выполнен с возможностью применения преобразования, например, дискретного косинусного преобразования (discrete cosine transform, DCT) или дискретного синусоидального преобразования (discrete sine transform, DST), к значениям выборки остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициент 207 преобразования также может называться остаточным коэффициентом преобразования и представляет остаточный блок 205 в области преобразования.
Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные в HEVC/H.265. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются на основе коэффициента. Чтобы сохранить норму остаточного блока, который обрабатывается с использованием прямого и обратного преобразований, дополнительный коэффициент масштабирования применяется как часть процесса преобразования. Коэффициент масштабирования обычно выбирается на основе некоторых ограничений, например, коэффициент масштабирования является степенью два для операции сдвига, битовой глубиной коэффициента преобразования и компромиссом между точностью и затратами на реализацию. Например, конкретный коэффициент масштабирования задается для обратного преобразования, например, блоком 212 обработки обратного преобразования на стороне декодера 30 (и для соответствующего обратного преобразования, например, блоком 212 обработки обратного преобразования на стороне кодера 20), и, соответственно, соответствующий коэффициент масштабирования может быть задан для прямого преобразования блоком 206 обработки преобразования на стороне кодера 20.
Блок 208 квантования выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209 преобразования, например, путем применения скалярного квантования или векторного квантования. Квантованный коэффициент 209 преобразования может также называться квантованным коэффициентом 209 остатка. Процесс квантования позволяет уменьшить битовую глубину, относящуюся к некоторым или всем коэффициентам 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битового коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулировки параметра квантования (quantization parameter, QP). Например, для скалярного квантования могут применяться разные масштабы для достижения более тонкого или более грубого квантования. Меньший размер шага квантования соответствует более тонкому квантованию, и больший размер шага квантования соответствует более грубому квантованию. Соответствующий размер шага квантования может быть указан параметром квантования (quantization parameter, QP). Например, параметр квантования может быть индексом для заданного набора подходящих размеров шага квантования. Например, меньший параметр квантования может соответствовать более тонкому квантованию (меньшему размеру шага квантования), и больший параметр квантования может соответствовать более грубому квантованию (большему размеру шага квантования) и наоборот. Квантование может включать в себя деление на размер шага квантования и соответствующее квантование или обратное квантование, например, выполняемое блоком 210 обратного квантования, или может включать в себя умножение на размер шага квантования. В вариантах осуществления согласно некоторым стандартам, таким как HEVC, параметр квантования может использоваться для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включая деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, где норма остаточного блока может быть изменена из-за масштаба, используемого в приближении фиксированной точки уравнения для размера шага квантования и параметра квантования. В примерной реализации масштаб обратного преобразования может быть объединен с масштабом деквантования. В качестве альтернативы, может использоваться сконфигурированная таблица квантования и передаваться сигнал от кодера к декодеру, например, в битовом потоке. Квантование представляет собой операцию с потерями, где больший шаг квантования указывает на большие потери.
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованному коэффициенту для получения деквантованного коэффициента 211, например, применения, на основе или с использованием того же размера шага квантования, что и блок 208 квантования, обратной схемы квантования, применяемой блоком 208 квантования. Деквантованный коэффициент 211 также может упоминаться как деквантованный коэффициент 211 остатка и соответствовать коэффициенту 207 преобразования, хотя деквантованный коэффициент 211 обычно отличается от коэффициента преобразования из-за потерь, вызванных квантованием.
Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования по отношению к преобразованию, применяемому блоком 206 обработки преобразования, например, обратного дискретного косинусного преобразования (discrete cosine transform, DCT) или обратного дискретного синусоидального преобразования (discrete sine transform, DST), чтобы получить блок 213 обратного преобразования в области выборки. Блок 213 обратного преобразования также может называться деквантованным блоком 213 обратного преобразования или остаточным блоком 213 обратного преобразования.
Блок 214 восстановления (например, сумматор 214) выполнен с возможностью добавления блока 213 обратного преобразования (то есть восстановленного остаточного блока 213) к блоку 265 предсказания, например, путем сложения значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания, чтобы получить восстановленный блок 215 в области выборки.
При необходимости буферный блок 216 ("буфер" 216 для краткости), например, строковый буфер 216, выполнен с возможностью буферизации или хранения восстановленного блока 215 и соответствующего значения выборки, например, для внутрикадрового предсказания. В других вариантах осуществления кодер может быть выполнен с возможностью использования нефильтрованных восстановленных блоков и/или соответствующих значений выборок, хранящихся в блоке 216 буфера, для любого типа оценки и/или предсказания, например, внутрикадрового предсказания.
Например, в варианте осуществления кодер 20 может быть сконфигурирован таким образом, чтобы буферный блок 216 был выполнен с возможностью хранения восстановленного блока 215, не только используемого для блока 254 внутрикадрового предсказания, но также и используемого для блока (не показанного на фиг. 2) в контурном фильтре 220, и/или таким образом, чтобы, например, блок 216 буфера и буфер 230 декодированных изображений образовывали один буфер. В другом варианте осуществления фильтрованный блок 221 и/или блок или выборка (не показаны на фиг. 2) из буфера 230 декодированных изображений используются в качестве входных данных или исходных данных для блока 254 внутрикадрового предсказания.
Блок 220 контурного фильтра ("контурный фильтр" 220 для краткости) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить фильтрованный блок 221, сглаживания перехода между выборками или повышения качества видео. Блок 220 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, таких как фильтр удаления блочности, фильтр адаптивного смещения выборок (sample-adaptive offset, SAO) или другой фильтр, например, двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживания или объединенный фильтр. Хотя на фиг. 2 показан блок 220 контурного фильтра, в другой реализации блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Фильтрованный блок 221 также может упоминаться как фильтрованный восстановленный блок 221. Буфер 230 декодированных изображений может хранить восстановленный кодированный блок после того, как блок 220 контурного фильтра выполнит операцию фильтрации над восстановленным кодированным блоком.
В варианте осуществления кодер 20 (соответственно, блок 220 контурного фильтра) может быть выполнен с возможностью вывода параметра контурного фильтра (например, информации адаптивного смещения выборки), например, непосредственно или после энтропийного кодирования, выполняемого блоком 270 энтропийного кодирования или любым другим блоком энтропийного кодирования, поэтому декодер 30 может принимать и применять один и тот же параметр контурного фильтра для декодирования.
Буфер 230 декодированных изображений (decoded picture buffer, DPB) может быть памятью опорных изображений, в которой хранятся данные опорных изображений для использования при кодировании видеоданных кодером 20. DPB 230 может включать в себя любое из множества запоминающих устройств, таких как динамическая память с произвольным доступом (dynamic random access memory, DRAM) (включая синхронную DRAM (synchronous DRAM, SDRAM), магниторезистивную RAM (magnetoresistive RAM, MRAM) или резистивную RAM (resistive RAM, RRAM)) или запоминающие устройства других типов. DPB 230 и буфер 216 могут быть предоставлены одним и тем же запоминающим устройством или отдельными запоминающими устройствами. В примере буфер 230 декодированных изображений (decoded picture buffer, DPB) выполнен с возможностью хранения фильтрованного блока 221. Буфер 230 декодированных изображений может дополнительно быть выполнен с возможностью хранения других ранее фильтрованных блоков, например, ранее восстановленных и фильтрованных блоков 221, одного и того же текущего изображения или разных изображений, например, ранее восстановленных изображений, и может предоставлять полностью ранее восстановленные изображения, то есть декодированные изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для межкадрового предсказания. В одном примере, если восстановленный блок 215 восстанавливается без внутриконтурной фильтрации, буфер 230 декодированных изображений (decoded picture buffer, DPB) конфигурируется для хранения восстановленного блока 215.
Блок 260 обработки предсказания, также называемый блоком 260 обработки предсказания блока, выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 201) и данных восстановленного изображения, например, опорных выборок одного и того же (текущего) изображения из буфера 216 и/или данных 231 опорного изображения одного или нескольких ранее декодированных изображений из буфера 230 декодированных изображений, и обработки таких данных для предсказания, а именно, чтобы предоставить блок 265 предсказания, который может быть блоком 245 межкадрового предсказания или блоком 255 внутрикадрового предсказания.
Блок 262 выбора режима может быть выполнен с возможностью выбора режима предсказания (например, режима внутрикадрового или межкадрового предсказания) и/или соответствующего блока 245 или 255 предсказания, который будет использоваться в качестве блока 265 предсказания для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
В варианте осуществления блок 262 выбора режима может быть выполнен с возможностью выбора режима предсказания (например, из режимов предсказания, поддерживаемых блоком 260 обработки предсказания), где режим предсказания обеспечивает наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или обеспечивает минимальные служебные данные сигнализации (минимальные служебные данные сигнализации означают лучшее сжатие для передачи или хранения), или учитывает или уравновешивает и то, и другое. Блок 262 выбора режима может быть выполнен с возможностью определения режима предсказания на основе оптимизации искажения скорости (rate distortion optimization, RDO), а именно, выбора режима предсказания, который обеспечивает оптимизацию минимального искажения скорости, или выбора режима предсказания, для которого искажение скорости по меньшей мере удовлетворяет критерию выбора режима предсказания.
Ниже подробно описан процесс предсказания (например, выполняемый блоком 260 обработки предсказания) и выбор режима (например, выполняемый блоком 262 выбора режима), выполняемые, например, кодером 20.
Как описано выше, кодер 20 выполнен с возможностью определения или выбора оптимального или наиболее эффективного режима предсказания из набора (заданных) режимов предсказания. Набор режимов предсказания может включать в себя, например, режим внутрикадрового предсказания и/или режим межкадрового предсказания.
Набор режимов внутрикадрового предсказания может включать в себя 35 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим постоянного тока (или средний) и планарный режим, или направленные режимы, такие как определенные в H.265, или могут включать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим постоянного тока (или средний) и планарный режим, или направленные режимы, такие как определенные в H.266, находящемся в стадии разработки.
В возможной реализации набор режимов межкадрового предсказания зависит от доступных опорных изображений (то есть, например, по меньшей мере от некоторых декодированных изображений, хранящихся в DBP 230, как описано выше) и других параметров межкадрового предсказания, например, зависит от того, будет ли использоваться все опорное изображение или только часть опорного изображения, например, зона окна поиска вокруг зоны текущего блока, для поиска оптимального совпадающего опорного блока и/или, например, зависит от того, будет ли применяться интерполяция выборки, такая как интерполяция половины выборки и/или четверть выборки. Набор режимов межкадрового предсказания может включать в себя, например, режим пропуска (skip) и режим слияния (merge). В вариантах осуществления настоящей заявки в конкретной реализации набор режимов межкадрового предсказания может включать в себя режим слияния на основе пропусков с разностью векторов движения (merge with motion vector difference, MMVD) или режим MMVD на основе слияния. В примере блок 254 внутрикадрового предсказания может быть выполнен с возможностью выполнения любой комбинации технологий межкадрового предсказания, описанных ниже.
В дополнение к вышеупомянутым режимам предсказания в вариантах осуществления настоящей заявки также могут применяться режим пропуска и/или прямой режим.
Блок 260 обработки предсказания может быть дополнительно выполнен с возможностью разделения блока 203 изображения на более мелкие части или подблоки, например, путем итеративного использования разделения квадродерева (quad-tree, QT), разделения двоичного дерева (binary-tree, BT), разделения троичного дерево (ternary-tree, TT) на разделы или любую их комбинацию, и выполнения, например, предсказания над каждым из разделов блока или подблоков. Выбор режима включает в себя выбор древовидной структуры разделенного блока 203 изображения и выбор режима предсказания, используемого для каждого из разделов или подблоков блока.
Блок 244 межкадрового предсказания может включать в себя блок оценки движения (motion estimation, ME) (не показан на фиг. 2) и блок компенсации движения (motion compensation, MC) (не показан на фиг. 2). Блок оценки движения выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 201) и декодированного изображения 231 или по меньшей мере одного или нескольких ранее восстановленных блоков, например, одного или нескольких восстановленных блоков других/различных ранее декодированных изображений 231, для оценки движения. Например, видеопоследовательность может включать в себя текущее изображение и ранее декодированные изображения 231, или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или могут формировать последовательность изображений, образующих видеопоследовательность.
Например, кодер 20 может быть выполнен с возможностью выбора опорного блока из множества опорных блоков одного и того же изображения или разных изображений из множества других изображений и передачи, в блок оценки движения (не показан на фиг. 2), опорного изображения и/или обеспечения смещения (пространственного смещения) между позицией (координатамихи Y) опорного блока и позицией текущего блока в качестве параметра межкадрового предсказания. Смещение также называется вектором движения (motion vector, MV).
Блок компенсации движения выполнен с возможностью получения параметра межкадрового предсказания и выполнения межкадрового предсказания на основе или с использованием параметра межкадрового предсказания, чтобы получить блок 245 межкадрового предсказания. Компенсация движения, выполняемая блоком компенсации движения (не показан на фиг. 2)), может включать в себя выборку или выработку блока предсказания на основе вектора движения/блока, определенного путем оценки движения (возможно, выполнение интерполяция с точностью до подпикселя). Межкадровая фильтрация поляризации позволяет выработать дополнительные выборки пикселей из известных выборок пикселей, тем самым потенциально увеличивая количество блоков предсказания-кандидатов, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок 246 компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений. Блок 246 компенсации движения также может выработать синтаксический элемент, связанный с блоком и слайсом видео, так что декодер 30 использует синтаксический элемент для декодирования блока изображения в видеослайсе.
В частности, блок 244 межкадрового предсказания может передавать синтаксические элементы в блок 270 энтропийного кодирования, и синтаксические элементы включают в себя параметр межкадрового предсказания (например, информацию указания выбора режима межкадрового предсказания, используемого для предсказания текущего блока после прохождения множества режимов межкадрового предсказания). В возможном сценарии применения, если существует только один режим межкадрового предсказания, то параметр межкадрового предсказания альтернативно не может переноситься в синтаксическом элементе. В этом случае сторона 30 декодера может напрямую выполнять декодирование с использованием режима предсказания по умолчанию. Вполне понятно, что блок 244 межкадрового предсказания может быть выполнен с возможностью выполнения любой комбинации технологий межкадрового предсказания.
Блок 254 внутрикадрового предсказания выполнен с возможностью получения, например, приема, блока 203 изображения (текущего блока изображения) и одного или нескольких ранее восстановленных блоков, например, восстановленных соседних блоков, из одного и того же изображения для внутрикадровой оценки. Например, кодер 20 может быть выполнен с возможностью выбора режима внутрикадрового предсказания из множества (заданных) режимов внутрикадрового предсказания.
В варианте осуществления кодер 20, выполненный с возможностью выбора режима внутрикадрового предсказания согласно критерию оптимизации, например, на основе минимального остатка (например, режима внутрикадрового предсказания, предоставляющего блок 255 предсказания, который наиболее похож на текущий блок 203 изображения) или минимальная скорость искажения.
Блок 254 внутрикадрового предсказания дополнительно выполнен с возможностью определения блока 255 внутрикадрового предсказания на основе, например, параметра внутрикадрового предсказания в выбранном режиме внутрикадрового предсказания. В любом случае, после выбора режима внутрикадрового предсказания для блока, блок 254 внутрикадрового предсказания дополнительно выполнен с возможностью передачи параметра внутрикадрового предсказания, а именно информации, указывающей выбранный режим внутрикадрового предсказания для блока, в блок 270 энтропийного кодирования. Например, блок 254 внутрикадрового предсказания может быть выполнен с возможностью выполнения любой комбинации технологий внутрикадрового предсказания.
В частности, блок 254 внутрикадрового предсказания может передавать синтаксические элементы в блок 270 энтропийного кодирования, и синтаксические элементы включают в себя параметр внутрикадрового предсказания (например, информацию указания выбора режима внутрикадрового предсказания, используемого для предсказания текущего блока после прохождения множества режимов внутрикадрового предсказания). В возможном сценарии применения, если существует только один режим внутрикадрового предсказания, то параметр внутрикадрового предсказания альтернативно не может переноситься в синтаксическом элементе. В этом случае сторона 30 декодера может напрямую выполнять декодирование в режиме предсказания по умолчанию.
Блок 270 энтропийного кодирования выполнен с возможностью применения (или неприменения) алгоритма или схемы энтропийного кодирования (например, схемы кодирования переменной длины (variable length coding, VLC), схемы контекстно-адаптивного VLC (context adaptive VLC, CAVLC), схемы арифметического кодирования, контекстно-адаптивного двоичного арифметического кодирования (context adaptive binary arithmetic coding, CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (syntax-based context-adaptive binary arithmetic coding, SBAC), энтропийного кодирования с разделением интервала вероятности (probability interval partitioning entropy, PIPE) или другой методологии или технологии энтропийного кодирования) к одному или всем коэффициентам 209 квантованного остатка, параметру межкадрового предсказания, параметру внутрикадрового предсказания и/или параметру контурного фильтра для получения кодированных данных 21 изображения, которые могут выводиться через выход 272, например, в виде кодированного битового потока 21. Кодированный битовый поток может быть передан в видеодекодер 30, или заархивирован для более поздней передачи или извлечен видеодекодером 30. Блок 270 энтропийного кодирования может быть дополнительно выполнен с возможностью энтропийного кодирования другого синтаксического элемента для текущего кодируемого видеослайса.
Другой структурный вариант видеокодера 20 может использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может напрямую квантовать сигнал остатка без блока 206 обработки преобразования для некоторых блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
В частности, в вариантах осуществления настоящей заявки кодер 20 может быть выполнен с возможностью реализации способа кодирования видеоизображения, описанного в последующих вариантах осуществления.
Следует понимать, что другой структурный вариант видеокодера 20 может использоваться для кодирования видеопотока. Например, для некоторых блоков изображения или кадров изображения видеокодер 20 может непосредственно квантовать сигнал остатка, при этом не требуется обработка блоком 206 обработки преобразования, и, соответственно, также не требуется обработка блоком 212 обработки обратного преобразования. В качестве альтернативы, для некоторых блоков изображения или кадров изображения видеокодер 20 не вырабатывает остаточные данные, и, соответственно, не требуется выполнять обработку блоком 206 обработки преобразования, блоком 208 квантования, блоком 210 обратного квантования и блоком 212 обработки обратного преобразования. В качестве альтернативы, видеокодер 20 может напрямую сохранять восстановленный блок изображения в качестве опорного блока, и обработка фильтром 220 не требуется. В качестве альтернативы, блок 208 квантования и блок 210 обратного квантования могут быть объединены в видеокодере 20. Контурный фильтр 220 не является обязательным. В дополнение к этому, в случае кодирования со сжатием без потерь блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования являются необязательными. Следует понимать, что в различных сценариях применения могут выборочно использоваться блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания.
На фиг. 3 показана схематичная/концептуальная блок-схема примера декодера 30, выполненного с возможностью реализации варианта осуществления настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных изображения (например, кодированного битового потока) 21, кодированных, например, кодером 20, для получения декодированного изображения 231. В процессе декодирования видеодекодер 30 принимает видеоданные из видеокодера 20, например, кодированный битовый поток видео, который представляет блок изображения кодированного видеослайса и связанный с ним синтаксический элемент.
В примере, показанном на фиг. 3, декодер 30 включает в себя блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), буфер 316, контурный фильтр 320, Буфер 330 декодированных изображений и блок 360 обработки предсказания. Блок 360 обработки предсказания может включать в себя блок 344 межкадрового предсказания, блок 354 внутрикадрового предсказания и блок 362 выбора режима. В некоторых примерах видеодекодер 30 может выполнять процесс декодирования, который является приблизительно обратным процессу кодирования, описанному по отношению к видеокодеру 20, показанному на фиг. 2.
Блок 304 энтропийного декодирования выполнен с возможностью выполнения энтропийного декодирования кодированных данных 21 изображения для получения, например, квантованного коэффициента 309 и/или декодированного параметра кодирования (не показан на фиг. 3), например, любого одного или всех из: параметра межкадрового предсказания, параметра внутрикадрового предсказания, параметра контурного фильтра и/или другого синтаксического элемента (которые декодируются). Блок 304 энтропийного декодирования дополнительно выполнен с возможностью пересылки параметра межкадрового предсказания, параметра внутрикадрового предсказания и/или другого синтаксического элемента в блок 360 обработки предсказания. Видеодекодер 30 может принимать синтаксические элементы на уровне видеослайса и/или уровне видеоблока.
Блок 310 обратного квантования может иметь ту же функцию, что и блок 210 обратного квантования. Блок 312 обработки обратного преобразования может иметь ту же функцию, что и блок 212 обработки обратного преобразования. Блок 314 восстановления может иметь ту же функцию, что и блок 214 восстановления. Буфер 316 может иметь ту же функцию, что и буфер 216. Контурный фильтр 320 может иметь ту же функцию, что и контурный фильтр 220. Буфер 330 декодированных изображений может иметь ту же функцию, что и буфер 230 декодированных изображений.
Блок 360 обработки предсказания может включать в себя блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания. Блок 344 межкадрового предсказания может быть аналогичным по своим функциям блоку 244 межкадрового предсказания, и блок 354 внутрикадрового предсказания может быть аналогичным по своим функциям блоку 254 внутрикадрового предсказания. Блок 360 обработки предсказания обычно выполнен с возможностью выполнения предсказания блока и/или получения блока 365 предсказания из кодированных данных 21, а также приема или получения (явно или неявно) связанного с предсказанием параметра и/или информации о выбранном режиме предсказания, например, из блока 304 энтропийного декодирования.
Когда видеослайс кодируется во внутрикадрово-кодированный слайс (I), блок 354 внутрикадрового предсказания блока 360 обработки предсказания конфигурируется таким образом, чтобы выработать блок 365 предсказания для блока изображения текущего видеослайса на основе просигнализированного режима внутрикадрового предсказания и данных ранее декодированного блока текущего кадра или изображения. Когда видеокадр кодируется в межкадрово-кодированный (а именно, B или P) слайс, блок 344 межкадрового предсказания (например, блок компенсации движения) в блоке 360 обработки предсказания конфигурируется таким образом, чтобы выработать блок 365 предсказания видеоблока в текущем видеослайсе на основе вектора движения и другого синтаксического элемента, который принимается из блока 304 энтропийного декодирования. Для межкадрового предсказания блок предсказания может быть выработан из одного из опорных изображений в одном списке опорных изображений. Видеодекодер 30 может составлять списки опорных кадров, список 0 и список 1, используя технологию составления по умолчанию и на основе опорных изображений, хранящихся в DPB 330.
Блок 360 обработки предсказания выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа вектора движения и других синтаксических элементов и использования информации предсказания для выработки блока предсказания для текущего декодируемого видеоблока. В примере настоящей заявки блок 360 обработки предсказания определяет, используя некоторые принятые синтаксические элементы, режим предсказания (например, внутрикадрового или межкадрового предсказания) для кодирования видеоблока в видеослайсе, тип слайса межкадрового предсказания (например, B-слайс, P-слайс или GPB-слайс), информацию о составлении одного или нескольких списков опорных изображений для слайса, вектор движения каждого межкадрово-кодированного видеоблока для слайса, статус межкадрового предсказания каждого межкадрово-кодированного видеоблока в слайсе и другую информацию, чтобы декодировать видеоблок в текущем видеослайсе. В другом примере настоящего раскрытия синтаксические элементы, принятые видеодекодером 30 из битового потока, включают в себя синтаксические элементы в одном или нескольких из: адаптивного набора параметров (adaptive parameter set, APS), набора параметров последовательности (sequence parameter set, SPS), набора параметров изображения (picture parameter set, PPS) или заголовка слайса.
Блок 310 обратного квантования может быть выполнен с возможностью выполнения обратного квантования (а именно, деквантования) над квантованным коэффициентом преобразования, предоставленным в битовом потоке, и декодирован блоком 304 энтропийного декодирования. Процесс деквантования может включать в себя: использование параметра квантования, вычисленного по видеокодер 20 для каждого видеоблока в видеослайсе, чтобы определить степень квантования, которая должна быть применена, и степень деквантования, которая должна быть применена.
Блок 312 обработки обратного преобразования выполнен с возможностью применения обратного преобразования (например, обратного DCT, обратного целочисленного преобразования или концептуально аналогичного процесса обратного преобразования) к коэффициенту преобразования, чтобы выработать блок остатка в области выборки.
Блок 314 восстановления (например, сумматор 314) выполнен с возможностью добавления блока 313 обратного преобразования (а именно, восстановленного блока 313 остатка) к блоку 365 предсказания, например, путем сложения значений выборок восстановленного блока 313 остатка и значений выборок блока 365 предсказания, чтобы получить восстановленный блок 315 в области выборки.
Блок 320 контурного фильтра (в контуре кодирования или после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения фильтрованного блока 321, сглаживания перехода между выборками или повышения качества видео. В примере блок 320 контурного фильтра может быть выполнен с возможностью выполнения любой комбинации технологий фильтрации, описанных ниже. Блок 320 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, таких как фильтр удаления блочности, фильтр адаптивного смещения выборки (sample-adaptive offset, SAO) или другой фильтр, например, двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживания или объединенный фильтр. Хотя блок 320 контурного фильтра показан на фиг. 3, в другой реализации блок 320 контурного фильтра может быть реализован как постконтурный фильтр.
Затем декодированный видеоблок 321 в данном кадре или изображении сохраняется в буфере 330 декодированных изображений, который хранит опорное изображение, используемое для последующей компенсации движения.
Декодер 30 выполнен, например, с возможностью вывода декодированного изображения 331 через выход 332 для представления или просмотра пользователю.
Для декодирования сжатого битового потока может использоваться другой вариант видеодекодера 30. Например, декодер 30 может выработать выходной видеопоток без блока 320 контурного фильтра. Например, декодер 30 без преобразования может выполнять обратное квантование сигнала остатка напрямую без блока 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 деквантования и блок 312 обработки обратного преобразования, которые объединены в один блок.
В частности, в вариантах осуществления настоящей заявки декодер 30 выполнен с возможностью реализации способа декодирования видеоизображения, описанного в последующих вариантах осуществления.
Следует понимать, что другой структурный вариант видеодекодера 30 может использоваться для декодирования кодированного битового потока видеоданных. Например, видеодекодер 30 может выработать выходной видеопоток без обработки фильтром 320. В качестве альтернативы, для некоторых блоков изображения или кадров изображения блок 304 энтропийного декодирования видеодекодера 30 не получает квантованные коэффициенты путем декодирования и, соответственно, нет необходимости в блоке 310 деквантования и блоке 312 обработки обратного преобразования для выполнения обработки. Контурный фильтр 320 не является обязательным. В дополнение к этому, в случае сжатия без потерь блок 310 деквантования и блок 312 обработки обратного преобразования также являются необязательными. Следует понимать, что в различных сценариях применения блок межкадрового предсказания и блок внутрикадрового предсказания могут использоваться выборочно.
Следует понимать, что в настоящей заявке в кодере 20 и декодере 30 результат обработки для процедуры может быть выведен в следующую процедуру после дальнейшей обработки. Например, после такой процедуры, как интерполяционная фильтрация, получение вектора движения или контурная фильтрация, операция, такая как отсечение или сдвиг, над результатом обработки соответствующей процедуры, дополнительно выполняется.
Например, можно дополнительно обработать вектор движения контрольной точки текущего блока изображения или вектор движения подблока текущего блока изображения, полученный из вектора движения соседнего аффинного блока кодирования. Настоящая заявка не ограничивается этим случаем. Например, значение вектора движения ограничено определенным диапазоном битовой ширины. Предполагая, что допустимая разрядность вектора движения равна 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 выборку.
На фиг. 4 показана схематичная структурная схема устройства 400 для кодирования видео (например, устройства 400 для кодирования видео или устройства 400 для декодирования видео) согласно варианту осуществления настоящей заявки. Устройство 400 для кодирования видео подходит для реализации вариантов осуществления, описанных в данной спецификации. В варианте осуществления устройство 400 для кодирования видео может быть видеодекодером (например, декодером 30 на фиг. 1A) или видеокодером (например, кодером 20 на фиг. 1A). В другом варианте осуществления устройство 400 для кодирования видео может быть одним или более компонентами декодера 30 (фиг. 1A) или кодера 20 (фиг. 1А).
Устройство 400 для кодирования видео включает в себя: входной порт 410 и блок 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блок 440 передатчика (Tx) (или кратко называемый передатчиком 440) и выходной порт 450 для передачи данных; и память 460 (например, память 460), выполненная с возможностью хранения данных. Устройство 400 для кодирования видео может дополнительно включать в себя компонент электро-оптического преобразования и электро-оптический (EO) компонент, подключенный к входному порту 410, блок 420 приемника (или кратко называемый приемником 420), блок 440 передатчика и выходной порт 450 для вывода или ввода оптических или электрических сигналов.
Процессор 430 реализован с помощью аппаратных средств и программного обеспечения. Процессор 430 может быть реализован как одна или более микросхем CPU, ядер (например, многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 обменивается данными с входными портами 410, блоком 420 приемника, блоком 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 включает в себя блок 470 кодирования (например, блок 470 кодирования или блок 470 декодирования). Блок 470 кодирования/декодирования реализует варианты осуществления, раскрытые в настоящем описании, для реализации способа предсказания блока цветности, предусмотренного в вариантах осуществления настоящей заявки. Например, блок 470 кодирования/декодирования выполняет, обрабатывает или предоставляет различные операции кодирования. Таким образом, блок 470 кодирования/декодирования существенно улучшает функции устройства 400 кодирования видео и влияет на преобразование устройства 400 кодирования видео в другое состояние. В качестве альтернативы, блок 470 кодирования/декодирования реализован как инструкция, хранящаяся в памяти 460 и выполняемая процессором 430.
Память 460 включает в себя один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства для хранения данных переполнения, для хранения программ, когда такие программы выбираются для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 460 может быть энергозависимой и/или энергонезависимой и может быть постоянным запоминающим устройством (ROM), оперативным запоминающим устройством (RAM), троичной памятью с адресацией по содержанию (ternary content-addressable memory, TCAM) и/или статической оперативной памятью (SRAM).
На фиг. 5 показана упрощенная блок-схема устройства 500, которое может использоваться как одно или два из устройства-источника 12 и устройства-адресата 14 (фиг. 1A) согласно примерному варианту осуществления. Устройство 500 может реализовывать технологии настоящей заявки. Другими словами, на фиг. 5 показана схематичная блок-схема реализации устройства кодирования или устройства декодирования (устройства 500 кодирования для краткости) согласно варианту осуществления настоящей заявки. Устройство 500 кодирования может включать в себя процессор 510, память 530 и шинную систему 550. Процессор и память связаны через шинную систему. Память выполнена с возможностью хранения инструкции. Процессор выполнен с возможностью исполнения инструкции, хранящейся в памяти. Память устройства кодирования хранит программный код, и процессор могут вызывать программный код, хранящийся в памяти, чтобы выполнять различные способы кодирования или декодирования видеоизображения, описанные в настоящей заявке, особенно способы кодирование или декодирования видео в различных режимах межкадрового предсказания или режимах внутрикадрового предсказания. Во избежание повторения, подробности в данном документе повторно не описываются.
В данном варианте осуществления настоящей заявки процессор 510 может быть центральным процессором (Central Processing Unit, сокращенно "CPU"). В качестве альтернативы, процессор 510 может быть другим процессором общего назначения, процессором цифровых сигналов (DSP), специализированной интегральной схемой (ASIC), программируемой пользователем вентильной матрицей (FPGA) или другим программируемым логическим устройством, дискретным вентилем или транзисторным логическим устройством, дискретным аппаратным компонентом и т.п. Процессор общего назначения может быть микропроцессором, или процессор может быть любым обычным процессором и т.п.
Память 530 может включать в себя постоянное запоминающее устройство (ROM) или оперативное запоминающее устройство (RAM). Альтернативно в качестве памяти 530 может использоваться запоминающее устройство любого другого подходящего типа. Память 530 может включать в себя код и данные 531, к которым имеет доступ процессор 510 через шину 550. Память 530 может дополнительно включать в себя операционную систему 533 и прикладную программу 535. Прикладная программа 535 включает в себя по меньшей мере одну программу, которая позволяет процессору 510 выполнять способ кодирования или декодирования видео, описанный в настоящей заявке (в частности, способ предсказания видеоизображения или способ межкадрового предсказания, описанный в настоящей заявке). Например, прикладная программа 535 может включать в себя приложения 1-N и дополнительно включать в себя приложение для кодирования или декодирования видео (называемое для краткости приложением для кодирования видео), которое выполняет способ кодирования или декодирования видео, описанный в настоящей заявке.
В дополнение к шине данных шинная система 550 может дополнительно включать в себя шину питания, шину управления, шину сигнала состояния и т.п. Однако для наглядного описания шины различных типов, показанные на чертеже, обозначены как шинная система 550.
При необходимости устройство 500 кодирования может дополнительно включать в себя одно или более устройств вывода, например, дисплей 570. В примере дисплей 570 может быть сенсорным дисплеем, который объединяет дисплей и сенсорный блок, который оперативно воспринимает сенсорный ввод. Дисплей 570 может быть подключен к процессору 510 через шину 550.
Межкадровое предсказание является важным этапом в вариантах осуществления настоящей заявки. С точки зрения кодера, межкадровое предсказание представляет собой поиск в восстановленном изображении сопоставимого опорного блока для текущего блока кодирования в текущем изображении. Как показано на фиг. 5A, значение выборки в опорном блоке (например, в опорном блоке Fr1 или опорном блоке Fr2, где значение выборки в опорном блоке может рассматриваться в настоящей заявке как значение опорной выборки) используется в качестве предсказанной информации или предсказанного значения (далее "информация" и "значение" не различаются) выборки в текущем блоке Fc кодирования (то есть в текущем блоке изображения). Этот процесс называется оценкой движения (motion estimation, ME). В дополнение к этому, передается информация движения текущего блока кодирования. С точки зрения декодера, информация движения должна быть получена путем синтаксического анализа во время межкадрового предсказания, опорный блок определяется в восстановленном изображении на основе полученной информации движения, и значение выборки (то есть значение опорной выборки) в опорном блоке используется в качестве предсказанной информации. Этот процесс называется компенсацией движения (motion compensation, MC). Восстановленная информация может быть получена путем объединения предсказанной информации и информации об остатке и выполнения операции фильтрации над объединенной информацией. Идея настоящей заявки может быть использована в HEVC или может быть использована в другом стандарте кодирования видео. Ниже описывается возможный случай режима межкадрового предсказания на стороне кодера с использованием примера, в котором эта идея используется в HEVC. Возможный случай режима межкадрового предсказания на стороне декодера является аналогичным, поэтому его дополнительное описание не приводится.
В HEVC имеются два режима: режим улучшенного предсказания векторов движения (Advanced Motion Vector Prediction, AMVP) и режим слияния (Merge). Ниже эти два режима описаны по отдельности.
В режиме AMVP сначала составляется список аффинных векторов движения-кандидатов с использованием информации движения кодированного блока, который пространственно или временно соседствует с текущим блоком кодирования, и затем определяется оптимальный вектор движения из списка аффинных векторов движения-кандидатов как предиктор вектора движения (Motion vector predictor, MVP) текущего блока кодирования. Стоимость скорости передачи и искажения (RD) рассчитывается по формуле (0-1), где J - стоимость скорости передачи и искажения (RD), SAD - сумма абсолютных разностей (Sum of Absolute Differences, SAD) между предсказанными значениями выборки и исходными значениями выборки, которая получается путем оценки движения, выполняемой с использованием предиктора вектора движения-кандидата, R - битовая скорость, и λ - множитель Лагранжа. Сторона кодера передает значение индекса выбранного предиктора вектора движения в списке аффинных векторов движения-кандидатов и значение индекса опорного кадра на сторону декодера. Кроме того, поиск движения выполняется в соседнем домене с центром в MVP, чтобы получить фактический вектор движения текущего блока кодирования. Сторона кодера передает разность (разность векторов движения) между MVP и фактическим вектором движения на сторону декодера.
J=SAD+λR (0-1)
В режиме слияния список информации движения кандидатов сначала составляется с использованием информации движения кодированного блока, который пространственно или временно соседствует с текущим блоком кодирования, затем оптимальная информация движения определяется из списка информации движения кандидатов на основе стоимости "скорость передачи - искажение" и используется в качестве информации движения текущего блока кодирования, и значение индекса (обозначенное как индекс слияния, и то же самое название используется ниже) местоположения оптимальной информации движения в списке информации движения кандидатов передается на сторону декодера. Информация о пространственном и временном движении кандидата текущего блока кодирования показана на фиг. 5B. Информация движения пространственного кандидата поступает из пяти пространственных соседних блоков (A0, A1, B0, B1 и B2). Если соседний блок недоступен или находится в режиме внутрикадрового кодирования, соседний блок не добавляется в список информации движения кандидатов. Информация движения временного кандидата текущего блока кодирования получается после того, как MV совмещенного блока в опорном кадре масштабируется на основе значений счетчика очередности изображения (Picture Order Count, POC) опорного кадра и текущего кадра. Сначала определяется то, доступен ли блок в местоположении T в опорном кадре. Если блок недоступен, выбирается блок в местоположении C.
При межкадровом предсказании в HEVC все выборки в текущем блоке кодирования используют одну и ту же информацию движения, и затем компенсация движения выполняется на основе информации движения, чтобы получить предсказанные значения выборок текущего блока кодирования. Информация движения в основном включает в себя: (1) направление предсказания блока кодирования, в том числе прямое предсказание, обратное предсказание и двунаправленное предсказание, где прямое предсказание указывает то, что блок кодирования получается путем предсказания на основе предыдущего кодированного кадра, обратное предсказание указывает то, что блок кодирования получается путем предсказания на основе последующего кодированного кадра, и двунаправленное предсказание указывает то, что блок кодирования получается путем предсказания со ссылкой на предыдущий кодированный кадр и последующий кодированный кадр; (2) индекс опорного кадра блока кодирования, указывающий кадр, в котором расположен опорный блок текущего блока кодирования; и (3) вектор движения MV блока кодирования, указывающий смещение движения блока кодирования относительно опорного блока, где MV включает в себя горизонтальный компонент (обозначенный как ) и вертикальный компонент (обозначенный как ), которые соответственно, представляют смещение движения блока кодирования относительно опорного блока в горизонтальном направлении и смещение движения блока кодирования относительно опорного блока в вертикальном направлении. Когда для блока кодирования выполняется прямое или обратное предсказание, имеется только один MV. Когда для блока кодирования выполняется двунаправленное (то есть прямое и обратное) предсказание, имеются два MV. На фиг. 5C представлена вышеизложенная информация движения. На фиг. 5C и в последующем описании информации движения и предсказанной информации, 0 представляет прямое предсказание, и 1 представляет обратное предсказание. Например, Ref0 представляет собой прямой опорный кадр, Ref1 представляет собой обратный опорный кадр, MV0 представляет вектор движения в прямом направлении, и MV1 представляет обратный вектор движения. A, B и C представляют, соответственно, прямой опорный блок, текущий блок кодирования и обратный опорный блок. Cur представляет текущий кадр кодирования, и пунктирная линия представляет движущийся трек B.
Базовый процесс компенсации движения прямого предсказания выглядит следующим образом: как показано на фиг. 5C текущим блоком кодирования на чертеже является блок B, и высота и ширина B равны, соответственно, H и W. В этом случае на основе информации движения выясняется, что прямой опорный кадр текущего блока B кодирования представляет собой кадр Ref0, и прямой вектор MV0 движения текущего блока B кодирования представляет собой (, ). При кодировании блока B кодирования в кадре Cur, сначала находится точка с такими же координатами в кадре Ref0 на основе координат (i, j) точки, находящейся в верхнем левом углу B в кадре Cur, блок B' в Ref0 может быть получен на основе длины и ширины блока B, и затем B' перемещается в блок A на основе MV0 блока B'. Наконец, над блоком A выполняется интерполяция для получения блока предсказания текущего блока B кодирования. Значение выборки каждой выборки в блоке предсказания текущего блока B кодирования упоминается как предсказанное значение соответствующей выборки в блоке B. Процесс компенсации движения при обратном предсказании является таким же, как и при прямом предсказании, но опорные направления отличаются. Следует отметить, что блоки предсказания, полученные путем компенсации движения при обратном предсказании и прямом предсказании, соответственно, называются блоком прямого предсказания и блоком обратного предсказания. Когда для блока кодирования двунаправленное предсказание не выполняется, полученный блок прямого предсказания и блок обратного предсказания представляют собой блоки предсказания текущего блока кодирования.
Для двунаправленного предсказания сначала получают блок прямого предсказания и блок обратного предсказания на основе информации движения в процессе компенсации движения при прямом предсказании и в процессе компенсации движения при обратном предсказании, и затем выполняется взвешенное предсказание или BDOF (которое также упоминается как двунаправленный оптический поток (Bi-directional optical flow, BIO)) над значениями выборок в одном и том же местоположении в блоке прямого предсказания и блоке обратного предсказания, чтобы получить блок предсказания блока B кодирования.
В технологии BDOF после того, как компенсация движения двунаправленного предсказания выполняется в текущем блоке кодирования, получают блок прямого предсказания и блок обратного предсказания, и затем модифицированный вектор движения каждого подблока 4×4 в текущем блоке кодирования получается на основе значений выборки блока прямого предсказания и блока обратного предсказания. Наконец, снова выполняется компенсация для каждой выборки в текущем блоке кодирования на основе модифицированного вектора движения для получения окончательного блока предсказания текущего блока кодирования для того, чтобы получить предсказанное значение текущего блока кодирования. Варианты осуществления настоящей заявки сосредоточены на конкретном условии, при котором BDOF используется для выполнения компенсации движения, чтобы уменьшить сложность кодирования и повысить производительность кодирования.
На фиг. 6A показана схематичная блок-схема способа кодирования согласно варианту осуществления настоящего изобретения. Эта процедура кодирования может выполняться устройством для кодирования видео. Устройство для кодирования видео может быть вышеупомянутым видеокодером 20 или устройством, включающим в себя видеокодер 20. В частности, процедура может выполняться блоком 244 межкадрового предсказания (также называемым межкадровым предиктором), блоком 270 энтропийного кодирования (также называемым энтропийным кодером) и т.п. в видеокодере 20. Вышеупомянутая процедура описана как последовательность этапов или операций. Следует понимать, что этапы процедуры могут выполняться в различном порядке и/или одновременно и не ограничиваются порядком выполнения, показанным на фиг. 6А. Описание, которое относится к процедуре, соответствующей фиг. 6А, представлено следующим образом:
Устройство кодирования сначала определяет, выполнено ли множество заданных условий, и, если множество заданных условий выполнено, выполняется этап S600, или, если множество заданных условий не выполнено, выполняется этап S601. Для случая, если множество заданных условий не выполнено, только случай на этапе S601 используется как характерный для подробного описания в данном документе. Другие случаи, которые являются такими же, как и в предшествующем уровне техники, не описаны в настоящей заявке.
Этап S600: Если выполнено множество заданных условий, устройство кодирования выполняет обработку на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения.
Двунаправленный оптический поток (Bi-directional optical flow, BDOF) может для краткости называться BIO или BDOF.
Множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Например, если размер текущего блока изображения составляет 8×8, первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок. В качестве другого примера, если размер текущего блока изображения составляет 8×16, число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и число 16 указывает то, что высота текущего блока изображения составляет 16 выборок.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе кодирования текущий блок изображения является блоком изображения, подлежащим кодированию (блоком кодирования).
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Следует понимать, что способ в данном варианте осуществления настоящей заявки может выполняться устройством предсказания изображения, таким как видеокодер или электронное устройство, имеющее функцию кодирования видео, и может, в частности, выполняться блоком межкадрового предсказания в видеокодере.
Более конкретно, условие использования технологии BDOF в этом решении отличается от условия использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к реальному значению выборки, можно контролировать должным образом сложность кодирования, и можно повысить эффективность кодирования.
В данном варианте осуществления настоящей заявки устройство кодирования выполняет обработку на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения, если выполнено множество заданных условий, в частности: если выполнено множество заданных условий, устройство кодирования выполняет обработку двунаправленного оптического потока (BDOF) над текущим блоком изображения на основе значения опорной выборки, соответствующей первому списку, и опорной выборки, соответствующей второму списку.
В данном варианте осуществления настоящей заявки значение опорной выборки, соответствующее первому списку, и значение опорной выборки, соответствующее второму списку, соответственно, получают путем предсказания на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1). Например, значение опорной выборки, соответствующее первому списку (то есть list0), может быть определено на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и значение опорной выборки, соответствующее второму списку (то есть list1), может быть определено на основе второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1).
Вполне понятно, что первый вектор движения (например, Mv0_L0), соответствующий первому списку (то есть list0), и второй вектор движения (например, Mv1_L1), соответствующий второму списку (то есть list1), получены по-разному в разных режимах межкадрового предсказания. Конкретный используемый режим межкадрового предсказания может быть выбран с помощью блока выбора режима. Ниже отдельно описано то, как определить первый вектор движения и второй вектор движения в режиме AMVP, режиме слияния и режиме пропуска.
Возможный случай 1: Режим межкадрового предсказания представляет собой режим AMVP.
Устройство кодирования сначала составляет список предикторов векторов движения (MVP)-кандидатов.
В частности, устройство для кодирования видео составляет список предикторов векторов движения (MVP)-кандидатов (также называемый списком векторов движения-кандидатов) с использованием блока межкадрового предсказания (также называемого блоком межкадрового предсказания). Составленный список предикторов векторов движения (MVP)-кандидатов может быть списком предикторов одномерных векторов движения (MVP)-кандидатов или списком предикторов двухмерных векторов движения (MVP)-кандидатов. В данном варианте осуществления настоящей заявки устройство для кодирования видео выполняет межкадровое предсказание в режиме двунаправленного предсказания.
Затем устройство для кодирования видео определяет информацию движения целевого кандидата в списке MVP в соответствии с критерием стоимости "скорость передачи - искажение".
В частности, информация движения целевого кандидата также может называться оптимальным вектором движения-кандидатом или может иметь другое название. В заключение, информация движения целевого кандидата является оптимальным кандидатом, определенным в списке MVP в соответствии с критерием стоимости "скорость передачи - искажение" (например, минимизируются затраты на использование). Информация движения целевого кандидата соответствует уникальному номеру индекса в списке предикторов векторов движения (MVP)-кандидатов.
Далее, первый вектор движения и второй вектор движения определяются на основе информации движения целевого кандидата. Информация движения целевого кандидата включает в себя первый предиктор вектора движения (например, Mvp0_L0), соответствующий первому списку (то есть list0), и второй предиктор вектора движения (например, Mvp1_L1), соответствующий второму списку (то есть list1). Например, первый вектор движения Mv0_L0 (прямое направление), соответствующий первому списку (list0), может быть получен на основе суммы первого предиктора вектора движения Mvp0_L0 и разности MVD0 векторов движения. Аналогичным образом, второй вектор движения Mv1_L1 может быть получен на основе суммы предиктора второго вектора движения Mvp1_L1 и разности MVD1 векторов движения. При необходимости первый вектор движения (например, Mv0_L0), соответствующий первому списку (то есть list0) в данном документе, также может быть выражен как первый вектор движения, соответствующий первому направлению (например, прямому направлению), и второй вектор движения (например, Mv1_L1), соответствующий второму списку (то есть list1), также может быть выражен как второй вектор движения, соответствующий второму направлению (например, обратному направлению).
Возможный случай 2: Режимом межкадрового предсказания является режим слияния.
Устройство кодирования сначала составляет список информации движения кандидатов.
В частности, устройство для кодирования видео составляет список информации движения кандидатов (также называемый списком векторов движения-кандидатов) с использованием блока межкадрового предсказания (также называемого блоком межкадрового предсказания).
Затем устройство для кодирования видео определяет информацию движения целевого кандидата в списке информации движения кандидатов в соответствии с критерием стоимости "скорость передачи - искажение".
В частности, информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания, информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку, и второй вектор движения, соответствующий второму списку, и индексы опорных кадров включают в себя индекс первого опорного кадра, соответствующего первому списку, и индекс второго опорного кадра, соответствующего второму списку.
Информация движения целевого кандидата также может называться информацией оптимального движения кандидата или может иметь другое название. В заключение, информация движения целевого кандидата является оптимальным кандидатом, определенным в списке информации движения кандидатов в соответствии с критерием стоимости "скорость передачи - искажение" (например, минимизированы затраты на использование).
Возможный случай 3. Режим межкадрового предсказания представляет собой режим пропуска. Для связанного с ним описания следует обратиться к описанию режима слияния в предыдущем случае 2. Отличие от режима слияния состоит в том, что в режиме пропуска не требуется передавать остаток выборки.
Обращаясь к фиг. 6B, в данном варианте осуществления настоящей заявки текущее изображение, к которому принадлежит текущий блок изображения, имеет два опорных изображения: предыдущее опорное изображение и следующее опорное изображение, которые, соответственно, являются первым опорным изображением (например, прямым опорным изображением или прямым опорным кадром, где термин "прямой" в данном документе также может упоминаться как первое направление) и вторым опорным изображением (например, обратным опорным изображением или обратным опорным кадром, где термин "обратный" в данном документе может также упоминаться как второе направление). Опорная выборка, соответствующая первому списку, является опорной выборкой на первом опорном изображении, и опорная выборка, соответствующая второму списку, является опорной выборкой на втором опорном изображении.
При необходимости получение предсказанного значения выборки текущего блока путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может включать в себя: получение модифицированного вектора движения каждого подблока текущего блока на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, и затем выполнение компенсации движения над каждым подблоком на основе модифицированного вектора движения для получения предсказанного значение выборки каждого подблока для получения предсказанного значения выборки текущего блока. Для простоты понимания ниже приводится описание примера.
Значение выборки в значении опорной выборки, соответствующем первому списку (list0), может быть выражена как , и значение выборки в значении опорной выборки, соответствующем второму списку (list1), может быть выражено как . Эти два значения вместе могут называться предсказанными в прямом и обратном направлениях значениями , где i=0..cuW-1, j=0..cuH-1, и k может быть равно 0 и 1. Здесь может быть получено с использованием 8-отводного интерполяционного фильтра, и значение выборки в другом местоположении (выполняется расширение по одной строке и одному столбцу) получают с использованием билинейного интерполяционного фильтра путем интерполяции. Следует отметить, что значение выборки расширенной области может быть альтернативно получено с использованием другого способа, например, может быть получено с использованием 8-отводного интерполяционного фильтра, или может быть непосредственно значением опорной выборки в целочисленном местоположении выборки. В данном документе это не ограничивается. Здесь cuW и cuH представляют собой, соответственно, ширину и высоту текущего блока изображения. Получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может, в частности, включать в себя следующие этапы.
Этап 1: Вычислить сумму абсолютных разностей SAD между значениями выборки в значениях опорной выборки, соответствующими первому списку, и значениями выборки в значениях опорной выборки, соответствующими второму списку, определить, меньше ли SAD порогового значения TH_CU, и, если SAD меньше порогового значения TH_CU, пропустить выполнение BDOF, или, если SAD не меньше порогового значения TH_CU, выполнить BDOF. Этот этап не является обязательным.
Формула расчета SAD выглядит следующим образом:
Пороговое значение TH_CU может быть установлено на (1<<(BD-8+сдвиг))xcuWxcuH, и сдвиг равен Max (2, 14-BD).
В качестве альтернативы, TH_CU может быть установлено на 1<<(BD-3+сдвиг).
При необходимости то, выполнять ли BDOF, можно альтернативно определить другими способами, и другие способы не перечисляются в данном документе один за другим.
Когда определено выполнение BDOF, продолжает выполняться этап 4.
Этап 2: Вычислить значение горизонтального градиента и значение вертикального градиента для предсказанных в прямом и обратном направлениях значений текущей CU.
Значение горизонтального градиента и значение вертикального градиента для предсказанных в прямом и обратном направлениях значений текущей CU включают в себя значение горизонтального градиента и значение вертикального градиента в местоположении выборки в значениях опорной выборки, соответствующих первому списку, и значение горизонтального градиента и значение вертикального градиента в местоположении выборки в значениях опорных выборок, соответствующих второму списку, где k последовательно устанавливается равным 0 и 1. Значение горизонтального градиента и значение вертикального градиента могут быть получены с использованием следующих формул:
Здесь i=0..cuW-1, j=0..cuH-1.
На этом этапе может быть получена матрица предсказания cuWxcuH для текущего блока изображения.
Этап 4: Выполнить расширение для предсказанных в прямом и обратном направлениях значений текущей CU, значения горизонтального градиента и значения вертикального градиента путем заполнения.
Для вычисления модифицированного вектора движения подблока 4×4 требуются предсказанные в прямом и обратном направлениях значения зоны 6×6, в которой расположен подблок 4×4, значение горизонтального градиента и значение вертикального градиента из предсказанных в прямом и обратном направлениях значений. Для вычисления значения градиента зоны 6×6 требуются предсказанные в прямом и обратном направлениях значения для зоны 8×8. Таким образом, когда предсказанные в прямом и обратном направлениях значения должны быть получены с использованием интерполяционного фильтра, необходимо выполнить расширение на две строки и два столбца для получения блока выборки предсказания, размер которого составляет (W+4)×(H+4), чтобы вычислить значение градиента (W+2)×(H+2), где W - ширина текущей CU, и H - высота текущей CU. Чтобы уменьшить сложность BDOF, на границе CU может выполняться специальная обработка. Подробности представлены следующим образом:
Предсказанное значение зоны W×H сначала получается с использованием 8-отводного фильтра, зона расширяется только на одну строку и один столбец, и предсказанное значение расширенной зоны получается с использованием билинейного фильтра для того, чтобы получить предсказанное значение зоны (W+2)×(H+2).
Затем значение градиента зоны W×H может быть получено путем вычисления на основе предсказанного значения зоны (W+2)×(H+2) согласно формуле (5).
Наконец, согласно способу заполнения, значение градиента зоны W×H увеличивается для получения значения горизонтального градиента и значение вертикального градиента зоны (W+2)×(H+2). Предсказанное значение зоны W×H увеличивается для получения предсказанного значения зоны (W+2)×(H+2).
Заполнение показано на фиг. 6D. Заполнение выполняется в соответствии со способом, показанным на фиг. 6D, чтобы получить , , и , где i=-1..cuW, и j=-1..cuH. Более конкретно, получают матрицу предсказания (cuW+2)×(cuH+2), матрицу горизонтального градиента и матрицу вертикального градиента.
Этап 5: Получить модифицированный вектор движения для каждого подблока 4×4, и затем выполнить взвешивание.
Для каждого подблока 4×4 модифицированный вектор движения получается согласно формулам (2-3). В частности, модифицированный вектор движения каждого подблока 4×4 получается путем применения BDOF к окну 6×6 вокруг подблока, чтобы минимизировать предсказанные значения L0 и L1. В частности, выводится по следующим формулам:
Здесь - функция floor (где floor(A) представляет максимальное целое число, не превышающее A). и является порогом для предотвращения передачи ошибок, вызванной чрезмерно большим модифицированным вектором движения. , и . BD - битовая ширина текущей выборки.
, , , и вычисляются по следующим формулам:
Здесь
В данном случае - предсказанное в прямом направлении значение местоположения выборки в текущей CU, то есть значение выборки местоположения выборки в значениях опорной выборки, которые относятся к текущей CU и соответствуют первому списку, и - предсказанное в обратном направлении значение местоположения выборки в текущей CU, то есть значение выборки местоположения выборки в значениях опорной выборки, которые относятся к текущей CU и соответствуют второму списку.
После того, как модифицированный вектор движения получен согласно формулам (2-3), окончательное предсказанное значение каждой выборки в текущем блоке изображения, то есть значение выборки в блоке предсказания текущего блока изображения, может быть определено по следующим формулам:
Здесь и представляют собой , и . - функция округления (rounding off). - предсказанное значение выборки местоположения выборки текущего блока изображения.
Этап S601: Когда размер текущего блока изображения является вторым заданным размером, устройство кодирования определяет предсказанное значение выборки текущего блока изображения первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
В частности, первым способом обработки не является BDOF (называемый двунаправленным оптическим потоком (Bi-directional optical flow, BIO)). Другими словами, когда размер текущего блока изображения является вторым заданным размером, BDOF не может использоваться для определения предсказанного значения выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Второй заданный размер включает в себя 8×8 (первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок), 4×N (4 указывает то, что ширина текущего блока изображения составляет 4 выборки, N указывает то, что высота текущего блока изображения составляет N выборок, и другие размеры выводятся по аналогии), 8×16 или 16×8. N равно степени 2 и больше или равно 8. Например, значение N может быть равным 16, 32, 64 или т.п.
В данном варианте осуществления настоящей заявки значение опорной выборки, соответствующее первому списку, и значение опорной выборки, соответствующее второму списку, соответственно, получают путем предсказания на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1). Например, значение опорной выборки, соответствующее первому списку (то есть list0), может быть определено на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и значение опорной выборки, соответствующее второму списку (то есть list1), может быть определено на основе второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1).
Следует отметить, что первый вектор движения и второй вектор движения определяются по-разному в разных режимах межкадрового предсказания. Для получения подробной информации о том, как определять первый вектор движения и второй вектор движения в режиме AMVP, режиме слияния и режиме пропуска, следует обратиться к описанию этапа S600. Подробности здесь снова не описываются.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе кодирования текущий блок изображения является блоком изображения, подлежащим кодированию (блоком кодирования).
Кроме того, вышеописанный случай, когда второй заданный размер включает в себя 8×8, 4×N, 8×16 или 16×8, также может быть ограничен вторым заданным размером, равным 8×8, 4×N, 8×16 или 16×8. Другими словами, BDOF запрещено использовать для одного из размеров 8×8, 4×N, 8×16 и 16×8, перечисленных выше, или BDOF запрещено использовать для множества их размеров. Далее для описания используются примеры.
Пример 1: Второй заданный размер включает в себя (или составляет) 8×8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 8×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен 8×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 2: Второй заданный размер включает в себя (или составляет) 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 3: Второй заданный размер включает в себя (или составляет) 8×8 или 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размеров 8×8 и 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 8×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 4: Второй заданный размер включает в себя (или составляет) 8×8, 4×N, 8×16 или 16×8, где N больше или равно 8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещено использовать для размеров 8×8, 4×N, 8×16 и 16×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения является любым из 8×8, 4×N, 8×16 и 16×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 5: Второй заданный размер включает в себя (или составляет) N×8, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блок изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 6: Второй заданный размер включает в себя (или составляет) N×8 или 4×N, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8 или 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
В дополнение к этому, так как BDOF также запрещено использовать для размера M×4 в некоторых сценариях, в настоящей заявке, когда BDOF запрещено использовать для второго заданного размера, BDOF дополнительно запрещено использовать для размера M×4, где M - целое число, большее или равное 4.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки. Следует понимать, что способ в данном варианте осуществления настоящей заявки может выполняться устройством предсказания изображения, таким как видеокодер или электронное устройство, имеющее функцию кодирования видео, и может, в частности, выполняться блоком межкадрового предсказания в видеокодере.
В дополнительном решении определение предсказанного значения выборки текущего блока изображения первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, включает в себя:
выполнение взвешенного вычисления для значений выборок, имеющих одно и то же местоположение в значении опорной выборки, соответствующем первому списку, и в значении опорной выборки, соответствующем второму списку, для получения предсказанного значения выборки текущего блока изображения; или
получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии разности векторов движения в режиме слияния (MMVD); или
получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии объединенного межкадрового/внутрикадрового предсказания (CIIP).
В данном варианте осуществления настоящей заявки то, используется ли способ взвешенного вычисления, технология MMVD или технология CIIP, может быть определено с использованием соответствующего условия или может быть указано с использованием соответствующей информации указания. При необходимости информация, в дальнейшем кодированная в битовом потоке, может дополнительно включать в себя целевой идентификатор, и целевой идентификатор используется для указания способа, используемого для предсказания предсказанного значения выборки текущего блока. Например, целевым идентификатором является mmvd_flag[x0][y0]. Когда mmvd_flag[x0][y0] является заданным значением (например, значением 1), это указывает то, что способ MMVD используется для текущего блока изображения.
Реализация MMVD дополнительно представлена ниже. На фиг. 6C показано как получается предсказанная информация движения текущего блока изображения. Предполагается, что предиктор прямого вектора движения и предиктор обратного вектора движения (то есть предыдущий предиктор вектора движения, соответствующий первому списку, и предыдущий предиктор вектора движения, соответствующий второму списку) текущего блока изображения, соответственно, являются MV0 (-22, 18) и MV1 (2, 12), и разность прямых векторов движения и разность обратных векторов движения представляют собой, соответственно, MVD0 (1, 0) и MVD1 (-1, 0).
Прямое предсказание и обратное предсказание выполняются отдельно для текущего блока изображения, чтобы получить блок прямого предсказания и блок обратного предсказания текущего блока изображения.
MV0 (-22, 18) и MV1 (2, 12) используются в качестве опорных входных данных для предиктора прямого вектора движения и предиктора обратного вектора движения, и поиск движения с первой точностью выполняется для опорного блока q0 предсказания в прямом направлении и опорного блока h0 предсказания в обратном направлении. Например, первая точность равна 1-ой выборке.
Каждый из опорного блока q0 предсказания в прямом направлении и опорного блока h0 предсказания в обратном направлении используется в качестве начальной точки поиска для выполнения поиска движения с первой точностью, и определяется разница между новым опорным блоком предсказания в прямом направлении и новым опорным блоком предсказания в обратном направлении, которые обнаруживаются каждый раз. Например, определяются разности между восемью парами опорных блоков предсказания в прямом направлении и опорных блоков предсказания в обратном направлении вокруг опорного блока предсказания в прямом направлении и опорного блока предсказания в обратном направлении, и определяется разница между опорным блоком q0 предсказания в прямом направлении и опорным блоком h0 предсказания в обратном направлении. Предполагается, что предикторами вектора движения для опорного блока предсказания в прямом направлении и опорного блока предсказания в обратном направлении, которые имеют наименьшее различие, являются, соответственно, (-21, 18) и (1, 12). Точки поиска обновляются до (-21, 18) и (1, 12), которые, соответственно, соответствуют блоку опорному блоку q1 предсказания в прямом направлении и опорному блоку h1 предсказания в обратном направлении, и продолжает выполняться поиск движения с первой точностью. Опорный блок q1 предсказания в прямом направлении и опорный блок h1 предсказания в обратном направлении каждый используются в качестве начальной точки поиска для выполнения поиска движения с первой точностью, и определяется разница между опорным блоком предсказания в прямом направлении и опорным блоком предсказания в обратном направлении, которые обнаруживаются каждый раз. Например, определяются разности между восемью парами опорных блоков предсказания в прямом направлении и опорных блоков предсказания в обратном направлении вокруг опорного блока q1 предсказания в прямом направлении и опорного блока h1 предсказания в обратном направлении, и определяется разность между опорным блоком q1 предсказания в прямом направлении и опорным блоком h1 предсказания в обратном направлении. Предполагается, что предикторами вектора движения для опорного блока предсказания в прямом направлении и опорного блока предсказания в обратном направлении, которые имеют наименьшее различие, являются, соответственно, (-21, 18) и (0, 12). (-21, 18) и (0, 12), соответственно, соответствуют опорному блоку q2 предсказания в прямом направлении и опорному блоку h2 предсказания в обратном направлении.
В данном варианте осуществления настоящей заявки количество раз поиска движения с первой точностью может быть установлено, например, на один или два. В качестве альтернативы, определяется диапазон поиска движения. Поиск останавливается за пределами диапазона.
Используя в качестве примера значение два, предиктор вектора движения (-20, 18) опорного блока q2 предсказания в прямом направлении и MVD0 (1, 0) суммируются для получения (-19, 18), и предиктор вектора движения (0, 12) опорного блока h2 предсказания в обратном направлении и MVD1 суммируются для получения (1, 12). Таким образом, текущий блок изображения предсказывается на основе предиктора (-19, 18) прямого вектора движения и предиктора (1, 12) обратного вектора движения. На фиг. 6С показан только один процесс поиска движения.
Следует отметить, что технология BDOF эквивалентна технологии оптимизации исправлений для традиционной технологии предсказания предсказанного значения выборки текущего блока изображения. Во многих сценариях предсказанное значение выборки, более близкое к реальному значению выборки текущего блока изображения, может быть получено в соответствии с технологией BDOF. Таким образом, остаток выборки, полученный на основе предсказанного значения выборки, может быть меньше, поэтому можно повысить эффективность кодирования. Вышеупомянутый способ взвешенного вычисления можно рассматривать как традиционную технологию для получения предсказанного значения выборки текущего блока изображения, и каждую из вышеизложенных технологий MMVD и CIIP можно рассматривать как технологию оптимизации исправлений для традиционной технологии. В данном варианте осуществления настоящей заявки, когда размер текущего блока изображения является вторым заданным размером, предсказанное значение выборки текущего блока изображения определяется в соответствии с традиционной технологией (например, способом взвешенного вычисления) или другой технологией оптимизации исправлений (например, MMVD или CIIP), а не технологией BDOF. Это позволяет значительно снизить сложность кодирования и повысить эффективность кодирования.
Этап S602: Устройство кодирования восстанавливает текущий блок изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения.
Вполне понятно, что предсказанное значение выборки текущего блока изображения может быть получено на вышеупомянутом этапе S600. Предсказанное значение выборки текущего блока, полученное на этом этапе, включает в себя предсказанные значения выборки одного или нескольких подблоков, и один или более подблоков включают в себя текущий подблок текущего блока изображения. Размер подблока может быть равен размеру текущего блока. Если текущий блок включает только один подблок, это эквивалентно тому, что размер подблока может быть равен размеру текущего блока. Предсказанное значение выборки текущего блока изображения может быть альтернативно получено на вышеупомянутом этапе S601.
Следует отметить, что в данном варианте осуществления настоящей заявки может быть дополнительно получен остаток выборки текущего блока изображения, и остаток выборки текущего блока изображения может быть равен 0. Например, остаток выборки должен быть получен в каждом из режима слияния и режима AMVP. Остаток выборки не нужно учитывать в режиме пропуска, и, следовательно, остаток выборки не нужно передавать на сторону декодера.
Этап S603: Устройство кодирования кодирует синтаксический элемент в подлежащем передаче битовом потоке, где синтаксический элемент используется по меньшей мере для указания того, что применяется двунаправленное предсказание.
В частности, в разных режимах межкадрового предсказания разные синтаксические элементы кодируются в подлежащий передаче битовый поток. Ниже представлены следующие примеры.
Когда режимом межкадрового предсказания является режим AMVP, синтаксический элемент включает в себя первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), причем первые индексы (например, mvp_lX_flag[xCb][yCb]) используются для указания предикторов целевого вектора движения-кандидата, при этом предикторы целевого вектора движения-кандидата включают в себя первый предиктор вектора движения, соответствующий первому списку (например, list0), и второй предиктор вектора движения, соответствующий второму списку (например, list1), и разность векторов движения (MVD) включает в себя первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку. Вторые индексы (которые также называются индексами опорных кадров) используются для указания опорных кадров текущего блока изображения, и опорные кадры включают в себя первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку. Например, вторые индексы представляют собой refIdxL0 и refIdxL1, refIdxL0 представляет собой индекс первого опорного кадра, соответствующего первому списку, и refIdxL1 представляет собой индекс второго опорного кадра, соответствующего второму списку. Информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1) используется для указания того, что применяется двунаправленное предсказание.
Первый вектор движения (например, Mv0_L0), соответствующий первому списку, получается на основе первого предиктора вектора движения (например, Mvp0_L0), соответствующего первому списку, и первой MVD (например, MVD0), соответствующей первому списку. Например, Mv0_L0=Mvp0_L0+MVD0.
Второй вектор движения (например, Mv1_L1), соответствующий второму списку, получается на основе второго предиктора вектора движения (например, Mvp1_L1), соответствующего второму списку, и второй MVD (например, MVD1), соответствующей второму списку. Например, Mv1_L1=Mvp1_L1+MVD1.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения. При необходимости, когда используется технология MMVD, может быть передана только одна MVD, и MVD, которая находится в другом направлении и которая должна использоваться на стороне декодера, может быть получена на основе переданной MVD.
Когда режим межкадрового предсказания является режимом слияния, синтаксический элемент включает в себя индекс (например, merge_idx[xCb][yCb]) информации движения целевого кандидата, информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1), информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку (то есть list0), и второй вектор движения, соответствующий второму списку (то есть list1), и индексы опорных кадров включают в себя индекс (например, refIdxL0) первого опорного кадра, соответствующего первому списку, и индекс (например, refIdxL1) второго опорного кадра, соответствующего второму списку.
В данном варианте осуществления настоящей заявки индекс опорного кадра используется для идентификации опорного изображения, соответствующего используемому вектору движения (например, первому вектору движения или второму вектору движения) в заданном списке опорных изображений (первый список list0 или второй список list1). Изображение может называться кадром, и опорное изображение может называться опорным кадром.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В данном варианте осуществления настоящей заявки способ дополнительно включает в себя: определение остатка выборки на основе значения выборки текущего блока изображения и предсказанного значения выборки текущего блока изображения; и кодирование синтаксического элемента в подлежащем передаче битовом потоке включает в себя: кодирование синтаксического элемента и остатка выборки в подлежащем передаче битовом потоке. Другими словами, в дополнение к синтаксическому элементу остаток выборки может быть дополнительно кодирован в подлежащем передаче битовом потоке (остаток выборки может быть получен путем вычисления с использованием блока вычисления остатка). Это решение можно применить к режиму AMVP и режиму слияния. В дополнение к этому, также имеет место случай, когда не требуется кодировать остаток выборки в подлежащем передаче битовом потоке. Например, в режиме пропуска не требуется кодировать остаток выборки в подлежащем передаче битовом потоке.
На фиг. 7 показана блок-схема способа декодирования согласно варианту осуществления настоящей заявки. Эта процедура может выполняться устройством для декодирования видео. Устройство для декодирования видео может быть вышеупомянутым видеодекодером 30 или может быть устройством, включающим в себя видеодекодер 30. В частности, процедура может выполняться блоком 344 межкадрового предсказания (также называемым межкадровым предиктором), блоком 304 энтропийного декодирования (также называемым энтропийным декодером) и т.п. видеодекодера 30. Процедура описывается как последовательность этапов или операций. Этапы или операции процедуры могут выполняться в различных последовательностях и/или одновременно и не ограничиваются последовательностью выполнения, показанной на фиг. 7. Описание, которое относится к процедуре, показанной на фиг. 7, представлено ниже.
Этап S700: Устройство декодирования синтаксически анализирует битовый поток, чтобы получить синтаксический элемент, где этот синтаксический элемент по меньшей мере используется для указания того, что применяется двунаправленное предсказание.
В частности, если сторона кодера использует разные режимы межкадрового предсказания в процессе кодирования, устройство декодирования может получить разные синтаксические элементы путем анализа битового потока. Ниже приводится подробное описание со ссылкой на режим AMVP, режим слияния и режим пропуска.
В режиме AMVP синтаксический элемент включает в себя первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы (например, mvp_lX_flag[xCb][yCb]) используются для указания предиктора целевого вектора движения-кандидата, предикторы целевых векторов движения-кандидатов включают в себя первый предиктор вектора движения, соответствующий первому списку (например, list0), и второй предиктор вектора движения, соответствующий второму списку (например, list1), и разность векторов движения (MVD) включает в себя первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку (например, когда включена только одна MVD, MVD, которая не передается, может быть получена на основе переданной MVD). Вторые индексы (которые также называются индексами опорных кадров) используются для указания опорных кадров текущего блока изображения, и опорные кадры включают в себя первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку. Например, вторые индексы представляют собой refIdxL0 и refIdxL1, refIdxL0 представляет собой индекс первого опорного кадра, соответствующего первому списку, и refIdxL1 представляет собой индекс второго опорного кадра, соответствующего второму списку. Информация указания направления предсказания (например, predFlagL0=1 и predFlagL1=1) используется для указания того, что применяется двунаправленное предсказание.
Первый вектор движения (например, Mv0_L0), соответствующий первому списку, получается на основе первого предиктора вектора движения (например, Mvp0_L0), соответствующего первому списку, и первой MVD (например, MVD0), соответствующей первому списку. Например, Mv0_L0=Mvp0_L0+MVD0.
Второй вектор движения (например, Mv1_L1), соответствующий второму списку, получается на основе второго предиктора вектора движения (например, Mvp1_L1), соответствующего второму списку, и второй MVD (например, MVD1), соответствующей второму списку. Например, Mv1_L1=Mvp1_L1+MVD1.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В режиме слияния синтаксический элемент включает в себя индекс (например, merge_idx[xCb][yCb]) информации движения целевого кандидата, информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания (например, predFlagL0=1 и predFlagL1=1), информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку (то есть list0), и второй вектор движения, соответствующий второму списку (то есть list1), и индексы опорных кадров включают в себя индекс (например, refIdxL0) первого опорного кадра, соответствующего первому списку, и индекс (например, refIdxL1) второго опорного кадра, соответствующего второму списку.
В данном варианте осуществления настоящей заявки индекс опорного кадра используется для идентификации опорного изображения, соответствующего используемому вектору движения (например, первому вектору движения или второму вектору движения) в заданном списке опорных изображений (первый список list0 или второй список list1). Изображение может называться кадром, и опорное изображение может называться опорным кадром.
В поле кодирования видео режимы межкадрового предсказания включают в себя прямое предсказание, обратное предсказание и двунаправленное предсказание (включающее в себя прямое предсказание и обратное предсказание), и конкретный режим предсказания, используемый на стороне кодера, обычно указывается в информации указания направления предсказания. Например, информация указания направления предсказания может включать в себя синтаксические элементы predFlagL0 и predFlagL1. Когда predFlagL0=1 и predFlagL1=1, информация указания направления предсказания указывает то, что применяется двунаправленное предсказание. Когда predFlagL0=1 и predFlagL1=0, информация указания направления предсказания указывает то, что используется прямое предсказание. Когда predFlagL0=0 и predFlagL1=1, информация указания направления предсказания указывает то, что используется обратное предсказание. Вполне понятно, что "прямое направление" и "обратное направление", соответственно, соответствуют списку 0 опорных изображений (list0, а именно, предыдущему первому списку) и списку 1 опорных изображений (list1, а именно, предыдущему второму списку) текущего изображения.
В режиме пропуска содержание, включенное в синтаксический элемент, такое же, как и содержание, включенное в синтаксический элемент в режиме слияния, и разность заключается в том, что в режиме пропуска не требуется передавать остаток выборки.
В данном варианте осуществления настоящей заявки в одном случае, например, в режиме AMVP и режиме слияния, синтаксический элемент и остаток выборки получается путем синтаксического анализа битового потока. В другом случае, например, в режиме пропуска, синтаксический элемент получается путем синтаксического анализа битового потока, но остаток выборки не получается путем синтаксического анализа.
После синтаксического анализа битового потока сначала определяется то, выполнено ли множество заданных условий, и, если выполнены множество заданных условий или все заданные условия, выполняется этап S701, или, если множество заданных условий не выполнено, выполняется этап S702. Для случая, если множество заданных условий не выполнено, только случай на этапе S702 используется как характерный для подробного описания в данном документе. Другие случаи, которые являются такими же, как и в предшествующем уровне техники, не описаны в настоящей заявке.
Этап S701: Если выполнено множество заданных условий, устройство декодирования выполняет обработку на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения.
Двунаправленный оптический поток (Bi-directional optical flow, BDOF) может для краткости называться BIO или BDOF.
Множество заданных условий включает в себя по меньшей мере условие относительно того, что размер текущего блока изображения удовлетворяет первому заданному размеру. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Например, если размер текущего блока изображения составляет 8×8, первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок. В качестве другого примера, если размер текущего блока изображения составляет 8×16, число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и число 16 указывает то, что высота текущего блока изображения составляет 16 выборок.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или представляет собой): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или представляет собой): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или представляет собой): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или представляет собой): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или представляет собой): высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или представляет собой): высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе декодирования текущий блок изображения представляет собой блок изображения, подлежащий декодированию (блок декодирования).
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Следует понимать, что способ в данном варианте осуществления настоящей заявки может выполняться устройством предсказания изображения, таким как видеодекодер или электронное устройство, имеющее функцию декодирования видео, и может, в частности, выполняться блоком компенсации движения в видеодекодере.
Более конкретно, условие использования технологии BDOF в этом решении отличается от условия использования технологии BDOF в предшествующем уровне техники, и, в частности, отличаются требования к размеру текущего блока изображения. Технология BDOF используется для текущего блока изображения, имеющего первый заданный размер, поэтому можно получить предсказанное значение выборки, более близкое к реальному значению выборки, можно управлять должным образом сложностью кодирования, и можно повысить эффективность кодирования.
В данном варианте осуществления настоящей заявки устройство декодирования выполняет обработку двунаправленного оптического потока (BDOF) над текущим блоком изображения, если выполнено множество заданных условий, в частности: если выполнено множество заданных условий, устройство декодирования выполняет обработку двунаправленного оптического потока (BDOF) над текущим блоком изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
В данном варианте осуществления настоящей заявки значение опорной выборки, соответствующее первому списку, и значение опорной выборки, соответствующее второму списку, соответственно, получают путем предсказания на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1). Например, значение опорной выборки, соответствующее первому списку (то есть list0), может быть определено на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и значение опорной выборки, соответствующее второму списку (то есть list1), может быть определено на основе второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1).
Вполне понятно, что первый вектор движения (например, Mv0_L0), соответствующий первому списку (то есть list0), и второй вектор движения (например, Mv1_L1), соответствующий второму списку (то есть list1), получены по-разному в разных режимах межкадрового предсказания. Конкретный используемый режим межкадрового предсказания может быть выбран с помощью блока выбора режима. Ниже отдельно описано то, как определить первый вектор движения и второй вектор движения в режиме AMVP, режиме слияния и режиме пропуска.
Возможный случай 1: Режим межкадрового предсказания представляет собой режим AMVP.
Устройство сначала составляет список предикторов векторов движения (MVP)-кандидатов.
В частности, устройство декодирования составляет список предикторов векторов движения (MVP)-кандидатов (также называемый списком векторов движения-кандидатов) с использованием блока межкадрового предсказания (также называемого блоком межкадрового предсказания). Составленный список предикторов векторов движения (MVP)-кандидатов может быть списком предикторов одномерных векторов движения (MVP)-кандидатов или списком предикторов двухмерных векторов движения (MVP)-кандидатов. В данном варианте осуществления настоящей заявки устройство декодирования выполняет межкадровое предсказание в режиме двунаправленного предсказания.
Затем устройство декодирования определяет информацию движения целевого кандидата в списке MVP на основе индекса, соответствующего информации движения целевого кандидата.
В частности, информация движения целевого кандидата также может называться оптимальным вектором движения кандидата или может иметь другое название.
Далее, первый вектор движения и второй вектор движения определяются на основе информации движения целевого кандидата. Информация движения целевого кандидата включает в себя первый предиктор вектора движения (например, Mvp0_L0), соответствующий первому списку (то есть list0), и предиктор (например, Mvp1_L1), соответствующий второму списку (то есть list1). Например, первый вектор движения Mv0_L0 (прямое направление), соответствующий первому списку (list0), может быть получен на основе суммы первого предиктора вектора движения Mvp0_L0 и разности MVD0 векторов движения. Аналогично, второй вектор движения Mv1_L1 может быть получен на основе суммы предиктора второго вектора движения Mvp1_L1 и разности MVD1 векторов движения. При необходимости первый вектор движения (например, Mv0_L0), соответствующий первому списку (то есть list0) в данном документе, также может быть выражен как первый вектор движения, соответствующий первому направлению (например, прямому направлению), и второй вектор движения (например, Mvp_L1), соответствующий второму списку (то есть list1), также может быть выражен как второй вектор движения, соответствующий второму направлению (например, обратному направлению).
Возможный случай 2: Режимом межкадрового предсказания является режим слияния.
Устройство декодирования сначала составляет список информации движения кандидатов.
В частности, устройство декодирования составляет список информации движения кандидатов (также называемый списком векторов движения-кандидатов) с использованием блока межкадрового предсказания (также называемого модулем межкадрового предсказания).
Затем устройство декодирования определяет информацию движения целевого кандидата в списке информации движения кандидатов на основе индекса, соответствующего информации движения целевого кандидата.
В частности, информация движения целевого кандидата включает в себя целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания, информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание, целевые векторы движения-кандидаты включают в себя первый вектор движения, соответствующий первому списку, и второй вектор движения, соответствующий второму списку, и индексы опорных кадров включают в себя индекс первого опорного кадра, соответствующего первому списку, и индекс второго опорного кадра, соответствующего второму списку.
Информация движения целевого кандидата также может называться информацией оптимального движения кандидата или может иметь другое название.
Возможный случай 3. Режим межкадрового предсказания представляет собой режим пропуска. Для связанного с ним описания следует обратиться к описанию режима слияния в предыдущем случае 2. Отличие от режима слияния состоит в том, что в режиме пропуска не требуется передавать остаток выборки.
Обращаясь к фиг. 6B, в данном варианте осуществления настоящей заявки текущее изображение, к которому принадлежит текущий блок изображения, имеет два опорных изображения: предыдущее опорное изображение и следующее опорное изображение, которые, соответственно, являются первым опорным изображением (например, прямым опорным изображением или прямым опорным кадром, где термин "прямой" в данном документе также может упоминаться как первое направление) и вторым опорным изображением (например, обратным опорным изображением или обратным опорным кадром, где термин "обратный" в данном документе может также упоминаться как второе направление). Значение опорной выборки, соответствующее первому списку, является значением опорной выборки на первом опорном изображении, и значение опорной выборки, соответствующее второму списку, является значением опорной выборки на втором опорном изображении.
При необходимости получение предсказанного значения выборки текущего блока путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может включать в себя: получение модифицированного вектора движения каждого подблока текущего блока на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, и затем выполнение компенсации движения над каждым подблоком на основе модифицированного вектора движения для получения предсказанного значение выборки каждого подблока для получения предсказанного значения выборки текущего блока. Для простоты понимания ниже приводится описание примера.
Значение выборки в значении опорной выборки, соответствующем первому списку (list0), может быть выражена как , и значение выборки в значении опорной выборки, соответствующем второму списку (list1), может быть выражено как . Эти два значения вместе могут называться предсказанными в прямом и обратном направлениях значениями , где i=0..cuW-1, j=0..cuH-1, и k может быть равно 0 и 1. Здесь может быть получено с использованием 8-отводного интерполяционного фильтра, и значение выборки в другом местоположении (выполняется расширение по одной строке и одному столбцу) получают с использованием билинейного интерполяционного фильтра путем интерполяции. Следует отметить, что значение выборки расширенной области может быть альтернативно получено с использованием другого способа, например, может быть получено с использованием 8-отводного интерполяционного фильтра, или может быть непосредственно значением опорной выборки в целочисленном местоположении выборки. В данном документе это не ограничивается. Здесь cuW и cuH представляют собой, соответственно, ширину и высоту текущего блока изображения. Получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может, в частности, включать в себя следующие этапы.
Этап 1. Вычислить сумму абсолютных разностей SAD между значениями выборки в значениях опорной выборки, соответствующих первому списку, и значениями выборки в значениях опорной выборки, соответствующих второму списку, определить, меньше ли SAD порогового значения TH_CU, и, если SAD меньше порогового значения TH_CU, пропустить выполнение BDOF, или, если SAD не меньше порогового значения TH_CU, выполнить BDOF. Этот этап не является обязательным.
Формула вычисления SAD выглядит следующим образом:
Пороговое значение TH_CU может быть установлено на (1<<(BD-8+сдвиг))xcuWxcuH, и сдвиг равен Max (2, 14-BD).
В качестве альтернативы, TH_CU может быть установлено на 1<<(BD-3+сдвиг).
При необходимости выполнение BDOF может быть альтернативно определено другими способами, и другие способы не перечисляются в данном документе один за другим.
Когда определено выполнение BDOF, продолжает выполняться этап 4.
Этап 2: Рассчитать значение горизонтального градиента и значение вертикального градиента для предсказанных в прямом и обратном направлениях значений текущей CU.
Значение горизонтального градиента и значение вертикального градиента для предсказанных в прямом и обратном направлениях значений текущей CU включают в себя значение горизонтального градиента и значение вертикального градиента в местоположении выборки в значениях опорной выборки, соответствующих первому списку, и значение горизонтального градиента и значение вертикального градиента в местоположении выборки в значениях опорных выборок, соответствующих второму списку, где k последовательно устанавливается равным 0 и 1. Значение горизонтального градиента и значение вертикального градиента могут быть получены с использованием следующих формул:
Здесь i=0..cuW-1, j=0..cuH-1.
На этом этапе может быть получена матрица предсказания cuWxcuH для текущего блока изображения.
Этап 4: Выполнить расширение для предсказанных в прямом и обратном направлениях значений текущей CU, значения горизонтального градиента и значения вертикального градиента путем заполнения.
Для вычисления модифицированного вектора движения подблока 4×4 требуются предсказанные в прямом и обратном направлениях значения зоны 6×6, в которой расположен подблок 4×4, значение горизонтального градиента из предсказанных в прямом и обратном направлениях значений и значение вертикального градиента из предсказанных в прямом и обратном направлениях значений. Для вычисления значения градиента зоны 6×6 требуются предсказанные в прямом и обратном направлениях значения для зоны 8×8. Таким образом, когда предсказанные в прямом и обратном направлениях значения должны быть получены с использованием интерполяционного фильтра, необходимо выполнить расширение на две строки и два столбца для получения блока выборки предсказания, размер которого составляет (W+4)×(H+4), чтобы вычислить значение градиента (W+2)×(H+2), где W - ширина текущей CU, и H - высота текущей CU. Чтобы уменьшить сложность BDOF, на границе CU может выполняться специальная обработка. Подробности представлены следующим образом:
Предсказанное значение зоны W×H сначала получается с использованием 8-отводного фильтра, зона расширяется только на одну строку и один столбец, и предсказанное значение расширенной зоны получается с использованием билинейного фильтра для того, чтобы получить предсказанное значение зоны (W+2)×(H+2).
Затем значение градиента зоны W×H может быть получено путем вычисления на основе предсказанного значения зоны (W+2)×(H+2) согласно формуле.
Наконец, согласно способу заполнения значение градиента зоны W×H увеличивается для получения значения горизонтального градиента и значение вертикального градиента зоны (W+2)×(H+2). Предсказанное значение зоны W×H увеличивается для получения предсказанного значения зоны (W+2)×(H+2).
Заполнение показано на фиг. 6D. Заполнение выполняется в соответствии со способом, показанным на фиг. 6D, чтобы получить , и , где i=-1..cuW, и j=-1..cuH. Более конкретно, получают матрицу предсказания (cuW+2)×(cuH+2), матрицу горизонтального градиента и матрицу вертикального градиента.
Этап 5: Получить модифицированный вектор движения для каждого подблока 4×4, и затем выполнить взвешивание.
Для каждого подблока 4×4 модифицированный вектор движения получается согласно формулам (2-3). В частности, модифицированный вектор движения каждого подблока 4×4 получается путем применения BDOF к окну 6×6 вокруг подблока, чтобы минимизировать предсказанные значения L0 и L1. В частности, выводится по следующим формулам:
Здесь - функция floor (где floor(A) представляет максимальное целое число, не превышающее A). и является порогом для предотвращения передачи ошибок, вызванной чрезмерно большим модифицированным вектором движения. , и . BD - битовая ширина текущей выборки.
, , , и вычисляются по следующим формулам:
Здесь
В данном случае - предсказанное в прямом направлении значение местоположения выборки в текущей CU, то есть значение выборки местоположения выборки в значениях опорной выборки, которые относятся к текущей CU и соответствуют первому списку, и - предсказанное в обратном направлении значение местоположения выборки в текущей CU, то есть значение выборки местоположения выборки в значениях опорной выборки, которые относятся к текущей CU и соответствуют второму списку.
После того, как модифицированный вектор движения получен согласно формулам (2-3), окончательное предсказанное значение каждой выборки в текущем блоке изображения, то есть значение выборки в блоке предсказания текущего блока изображения, может быть определено по следующим формулам:
Здесь и равны , и . - функция округления (rounding off). представляет собой примерное значение местоположения выборки в блоке предсказания.
Этап S702: Когда размер текущего блока изображения является вторым заданным размером, устройство декодирования определяет предсказанное значение выборки текущего блока изображения первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
В частности, первым способом обработки не является BDOF (называемый двунаправленным оптическим потоком (Bi-directional optical flow, BIO)). Другими словами, когда размер текущего блока изображения является вторым заданным размером, BDOF не может использоваться для определения предсказанного значения выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Второй заданный размер включает в себя 8×8 (первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок), 4×N (4 указывает то, что ширина текущего блока изображения составляет 4 выборки, N указывает то, что высота текущего блока изображения составляет N выборок, и другие размеры выводятся по аналогии), 8×16 или 16×8. N равно степени 2 и больше или равно 8. Например, значение N может быть равным 16, 32, 64 или т.п.
В данном варианте осуществления настоящей заявки значение опорной выборки, соответствующее первому списку, и значение опорной выборки, соответствующее второму списку, соответственно, получают путем предсказания на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1). Например, значение опорной выборки, соответствующее первому списку (то есть list0), может быть определено на основе первого вектора движения (например, Mv0_L0), соответствующего первому списку (то есть list0), и значение опорной выборки, соответствующее второму списку (то есть list1), может быть определено на основе второго вектора движения (например, Mv1_L1), соответствующего второму списку (то есть list1).
Следует отметить, что первый вектор движения и второй вектор движения определяются по-разному в разных режимах межкадрового предсказания. Для получения подробной информации о том, как определять первый вектор движения и второй вектор движения в режиме AMVP, режиме слияния и режиме пропуска, следует обратиться к описанию этапа S701. Подробности здесь снова не описываются.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе кодирования текущий блок изображения является блоком изображения, подлежащим кодированию (блоком кодирования).
Кроме того, вышеописанный случай, когда второй заданный размер включает в себя 8×8, 4×N, 8×16 или 16×8, также может быть ограничен вторым заданным размером, равным 8×8, 4×N, 8×16 или 16×8. Другими словами, BDOF запрещено использовать для одного из размеров 8×8, 4×N, 8×16 и 16×8, перечисленных выше, или BDOF запрещено использовать для множества их размеров. Далее для описания используются примеры.
Пример 1: Второй заданный размер включает в себя (или составляет) 8×8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 8×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен 8×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 2: Второй заданный размер включает в себя (или составляет) 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 3: Второй заданный размер включает в себя (или составляет) 8×8 или 4×N. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размеров 8×8 и 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения составляет 8×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, где N больше или равно 8.
Пример 4: Второй заданный размер включает в себя (или составляет) 8×8, 4×N, 8×16 или 16×8, где N больше или равно 8. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещено использовать для размеров 8×8, 4×N, 8×16 и 16×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения является любым из 8×8, 4×N, 8×16 и 16×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 5: Второй заданный размер включает в себя (или составляет) N×8, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блок изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
Пример 6: Второй заданный размер включает в себя (или составляет) N×8 или 4×N, где N больше или равно 4. Другими словами, в данном варианте осуществления настоящей заявки BDOF запрещается использовать для размера N×8 или 4×N. В этом случае получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, когда размер текущего блока изображения является вторым заданным размером, может быть, в частности, выражено как: когда размер текущего блока изображения равен N×8 или 4×N, получение предсказанного значения выборки текущего блока изображения путем предсказания первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку.
В дополнение к этому, так как BDOF также запрещено использовать для размера M×4 в некоторых сценариях, в настоящей заявке, когда BDOF запрещено использовать для второго заданного размера, BDOF дополнительно запрещено использовать для размера M×4, где M - целое число, большее или равное 4.
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки. Следует понимать, что способ в данном варианте осуществления настоящей заявки может выполняться устройством предсказания изображения, таким как видеодекодер или электронное устройство, имеющее функцию декодирования видео, и может, в частности, выполняться блоком межкадрового предсказания в видеодекодере.
В дополнительном решении определение предсказанного значения выборки текущего блока изображения первым способом обработки на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, включает в себя:
выполнение взвешенного вычисления для значений выборок, имеющих одно и то же местоположение в значении опорной выборки, соответствующем первому списку, и в значении опорной выборки, соответствующем второму списку, для получения предсказанного значения выборки текущего блока изображения; или
получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии разности векторов движения в режиме слияния (MMVD); или
получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии объединенного межкадрового/внутрикадрового предсказания (CIIP); или
получение предсказанного значения выборки текущего блока изображения путем предсказания на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии уточнения вектора движения на стороне декодера (DMVR).
В данном варианте осуществления настоящей заявки то, используется ли способ взвешенного вычисления, технология MMVD, технология CIIP или технология DMVR, может быть определено с использованием соответствующего условия или может быть указано с использованием соответствующей информации указания.
В данном варианте осуществления настоящей заявки то, используется ли способ взвешенного вычисления, технология MMVD или технология CIIP, может быть определено с использованием соответствующего условия или может быть указано с использованием соответствующей информации указания. При необходимости информация, в дальнейшем кодированная в битовом потоке, может дополнительно включать в себя целевой идентификатор, и целевой идентификатор используется для указания способа, используемого для предсказания предсказанного значения выборки текущего блока. Например, целевым идентификатором является mmvd_flag[x0][y0]. Когда mmvd_flag[x0][y0] является заданным значением (например, значением 1), это указывает то, что способ MMVD используется для текущего блока изображения.
Реализация MMVD дополнительно представлена ниже. На фиг. 6C показано как получается предсказанная информация движения текущего блока изображения. Предполагается, что предиктор прямого вектора движения и предиктор обратного вектора движения (то есть предыдущий предиктор вектора движения, соответствующий первому списку, и предыдущий предиктор вектора движения, соответствующий второму списку) текущего блока изображения, соответственно, являются MV0 (-22, 18) и MV1 (2, 12), и разность прямых векторов движения и разность обратных векторов движения представляют собой, соответственно, MVD0 (1, 0) и MVD1 (-1, 0).
Прямое предсказание и обратное предсказание выполняются отдельно для текущего блока изображения, чтобы получить блок прямого предсказания и блок обратного предсказания текущего блока изображения.
MV0 (-22, 18) и MV1 (2, 12) используются в качестве опорных входных данных для предиктора прямого вектора движения и предиктора обратного вектора движения, и поиск движения с первой точностью выполняется для опорного блока q0 предсказания в прямом направлении и опорного блока h0 предсказания в обратном направлении. Например, первая точность равна 1-ой выборке.
Каждый из опорного блока q0 предсказания в прямом направлении и опорного блока h0 предсказания в прямом направлении используется в качестве начальной точки поиска для выполнения поиска движения с первой точностью, и определяется разность между новым опорным блоком предсказания в прямом направлении и новым опорным блоком предсказания в обратном направлении, которые обнаруживаются каждый раз. Например, определяются разности между восемью парами опорных блоков предсказания в прямом направлении и опорных блоков предсказания в обратном направлении вокруг опорного блока предсказания в прямом направлении и опорного блока предсказания в обратном направлении, и определяется разность между опорным блоком q0 предсказания в прямом направлении и опорным блоком h0 предсказания в обратном направлении. Предполагается, что предикторами вектора движения для опорного блока предсказания в прямом направлении и опорного блока предсказания в обратном направлении, которые имеют наименьшее различие, являются, соответственно, (-21, 18) и (1, 12). Точки поиска обновляются до (-21, 18) и (1, 12), которые, соответственно, соответствуют блоку опорному блоку q1 предсказания в прямом направлении и опорному блоку h1 предсказания в обратном направлении, и продолжает выполняться поиск движения с первой точностью. Каждый из опорного блока q1 предсказания в прямом направлении и опорного блока h1 предсказания в обратном направлении используется в качестве начальной точки поиска для выполнения поиска движения с первой точностью, и определяется разность между опорным блоком предсказания в прямом направлении и опорным блоком предсказания в обратном направлении, которые обнаруживаются каждый раз. Например, определяются разности между восемью парами опорных блоков предсказания в прямом направлении и опорных блоков предсказания в обратном направлении вокруг опорного блока q1 предсказания в прямом направлении и опорного блока h1 предсказания в обратном направлении, и определяется разность между опорным блоком q1 предсказания в прямом направлении и опорным блоком h1 предсказания в обратном направлении. Предполагается, что предикторами вектора движения для опорного блока предсказания в прямом направлении и опорного блока предсказания в обратном направлении, которые имеют наименьшее различие, являются, соответственно, (-21, 18) и (1, 12). (-21, 18) и (1, 12), соответственно, соответствуют опорному блоку q2 предсказания в прямом направлении и опорному блоку h2 предсказания в обратном направлении.
В данном варианте осуществления настоящей заявки количество раз поиска движения с первой точностью может быть установлено, например, на один или два. В качестве альтернативы, определяется диапазон поиска движения. Поиск останавливается за пределами диапазона.
Используя в качестве примера значение два, предиктор вектора движения (-20, 18) опорного блока q2 предсказания в прямом направлении и MVD0 (1, 0) суммируются для получения (-19, 18), и предиктор вектора движения (0, 12) опорного блока h2 предсказания в обратном направлении и MVD1 суммируются для получения (1, 12). Таким образом, текущий блок изображения предсказывается на основе предиктора (-19, 18) прямого вектора движения и предиктора (1, 12) обратного вектора движения. На фиг. 6С показан только один процесс поиска движения.
Следует отметить, что технология BDOF эквивалентна технологии оптимизации исправлений для традиционной технологии предсказания предсказанного значения выборки текущего блока изображения. Во многих сценариях предсказанное значение выборки, более близкое к реальному значению выборки текущего блока изображения, может быть получено в соответствии с технологией BDOF. Таким образом, остаток выборки, полученный на основе предсказанного значения выборки, может быть меньше, поэтому можно повысить эффективность кодирования. Вышеупомянутый способ взвешенного вычисления можно рассматривать как традиционную технологию для получения предсказанного значения выборки текущего блока изображения, и каждую из вышеизложенных технологий MMVD и CIIP можно рассматривать как технологию оптимизации исправлений для традиционной технологии. В данном варианте осуществления настоящей заявки, когда размер текущего блока изображения является вторым заданным размером, предсказанное значение выборки текущего блока изображения определяется в соответствии с традиционной технологией (например, способом взвешенного вычисления) или другой технологией оптимизации исправлений (например, MMVD или CIIP), а не технологией BDOF. Это позволяет значительно снизить сложность кодирования и повысить эффективность кодирования.
Этап S703: Устройство декодирования определяет значение выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения.
Например, в режиме AMVP и режиме слияния остаток выборки добавляется к предсказанному значению выборки текущего блока, чтобы получить значение выборки текущего блока. В режиме пропуска не требуется остатка выборки тогда, когда определяется значение выборки текущего блока.
На фиг. 8 показана схематичная блок-схема устройства 80 межкадрового предсказания согласно варианту осуществления настоящей заявки. Следует отметить, что устройство 80 межкадрового предсказания не только применимо к межкадровому предсказанию для декодирования видеоизображения, но также применимо к межкадровому предсказанию для кодирования видеоизображения. Следует понимать, что устройство 80 межкадрового предсказания в данном документе может соответствовать блоку 244 межкадрового предсказания, показанному на фиг. 2, или может соответствовать блоку 344 межкадрового предсказания, показанному на фиг. 3. Устройство 80 межкадрового предсказания может включать в себя блок 801 определения и блок 802 обработки межкадрового предсказания.
Блок 801 определения выполнен с возможностью определения того, удовлетворяет ли текущий блок изображения множеству заданных условий.
Межкадровый блок 802 обработки предсказания выполнен с возможностью: если выполнено множество заданных условий, выполнения обработки на основе двунаправленного оптического потока BDOF (Bi-directional optical flow, BIO или BDOF для краткости) над текущим блоком для получения предсказанного значения выборки текущего блока изображения, где множество заданных условий включает в себя по меньшей мере условие, согласно которому размер текущего блока изображения удовлетворяет первому заданному размеру. Размер текущего блока изображения обычно представлен шириной и высотой (которые обозначены W×H), и ширина и высота измеряются выборкой (выборкой или пикселем). Например, если размер текущего блока изображения составляет 8×8, первое число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и второе число 8 указывает то, что высота текущего блока изображения составляет 8 выборок. В качестве другого примера, если размер текущего блока изображения составляет 8×16, число 8 указывает то, что ширина текущего блока изображения составляет 8 выборок, и число 16 указывает то, что высота текущего блока изображения составляет 16 выборок.
То, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и, когда произведение ширины W на высоту H текущего блока изображения равно 64, ширину W, не равную высоте H.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, и ширину W текущего блока изображения, большую или равную 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 64.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя (или составляет): высоту H текущего блока изображения, большую или равную 8, ширину W текущего блока изображения, большую или равную 8, и произведение ширины W текущего блока изображения на высоту H текущего блока изображения, большее 128.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8.
В качестве альтернативы, то, что размер текущего блока изображения удовлетворяет первому заданному размеру, включает в себя: высоту H текущего блока изображения, большую 8, и ширину W текущего блока изображения, большую или равную 8.
Следует отметить, что прежде, чем определить (или получить путем предсказания) предсказанное значение выборки текущего блока изображения на основе значения опорной выборки, соответствующего первому списку, и значения опорной выборки, соответствующего второму списку, согласно технологии BDOF, может существовать другое исходное условие в дополнение к размеру текущего блока изображения. Другое исходное условие в данном документе не ограничивается. Для простоты понимания ниже используются примеры для описания.
Условие A: Существует высокоуровневый идентификатор синтаксиса sps_bdof_enabled_flag, указывающий, что технологию BDOF разрешено использовать для текущей видеопоследовательности.
Условие B: Информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация указания направления предсказания predFlagL1, соответствующая второму списку (list0), равна 1.
Условие C: Значение POC_L0 счетчика очередности изображения опорного кадра, соответствующее первому списку (list0), значение POC_L1 счетчика очередности изображения опорного кадра, соответствующее второму списку (list1), и значения POC_Cur счетчика очередности изображения, на котором расположен текущий блок изображения, удовлетворяют следующему соотношению: (POC_L0-POC_Cur)×(POC_L1-POC_Cur)<0. Другими словами, изображение, включающее в себя текущий блок изображения, находится между двумя опорными изображениями.
Условие D: MotionModelIdc[xCb][yCb] равно 0. MotionModelIdc представляет собой индекс модели движения для компенсации движения. MotionModelIdc[xCb][yCb], равное 0, указывает то, что моделью движения для компенсации движения текущего блока является поступательное движение (Translational motion).
Условие E: merge_subblock_flag[x0][y0] равно 0, где merge_subblock_flag[x0][y0], равное 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения.
Условие F: sym_mvd_flag[x0][y0] равно 0. sym_mvd_flag[x0][y0], равное 0, указывает то, что синтаксическая структура mvd_coding(x0, y0, refList, cpIdx) присутствует для текущего блока.
Условие G: bcwIdx[xCb][yCb] равно 0. bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения.
Условие H: cIdx равно 0. cIdx представляет собой индекс цветового компонента текущего блока изображения.
Условие I: Размер текущего блока изображения является первым заданным размером.
Условие J: Как luma_weight_l0_flag[refIdxL0], так и luma_weight_l1_flag[refIdxL1] равны 0, где luma_weight_l0_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равное 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list1.
Например, если выполнены все условия A-J, определяется, что технология BDOF может использоваться для предсказания предсказанного значения выборки текущего блока изображения. Например, bdofFlag устанавливается на значение "истина". Следует отметить, что вышеуказанные условия являются просто примерами, и может быть дополнительно добавлено другое условие, или могут быть заменены одно или более из вышеуказанных условий, или могут быть удалены одно или более из вышеуказанных условий.
Следует понимать, что текущий блок изображения (который также упоминается как текущий блок) в данном документе может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе кодирования текущий блок изображения является блоком изображения, подлежащим кодированию (блоком кодирования). Конечно, текущий блок изображения в данном документе альтернативно может рассматриваться как блок изображения, подлежащий обработке. Например, в процессе декодирования текущий блок изображения представляет собой блок изображения, подлежащий декодированию (блок декодирования).
Вполне понятно, что другой случай может быть дополнительно получен со ссылкой на вышеизложенные случаи, и другой случай также подпадает под объем защиты настоящей заявки.
Следует понимать, что способ в вариантах осуществления настоящей заявки может выполняться видеокодером или электронным устройством, имеющим функцию кодирования видео, или может выполняться видеокодером или электронным устройством, имеющим функцию кодирования видео. Например, способ может быть специально реализован блоком межкадрового предсказания, находящимся в этих устройствах.
Следует отметить, что для конкретных реализаций блока 801 определения и блока 802 обработки предсказания в вышеупомянутом устройстве 80 межкадрового предсказания следует обратиться к соответствующему описанию вариантов осуществления способа, показанных на фиг. 6A и фиг. 7.
На этапах вышеупомянутой процедуры способа порядок описания этапов не представляет собой порядок выполнения этапов. Этапы могут выполняться или не выполняться в соответствии с вышеуказанным порядком описания.
Специалист в данной области техники может понять, что функции, описанные со ссылкой на различные иллюстративные логические блоки, модули и этапы алгоритма, раскрытые и описанные в настоящем описании, могут быть реализованы с помощью аппаратных средств, программного обеспечения, программно-аппаратных средств или любого их сочетания. В случае, если функции реализованы с помощью программного обеспечения, то функции, описанные со ссылкой на иллюстративные логические блоки, модули и этапы, могут храниться или передаваться на машиночитаемом носителе информации в виде одной или нескольких инструкций или кода и исполняться аппаратным блоком обработки. Машиночитаемый носитель информации может включать в себя машиночитаемый носитель информации, который соответствует материальному носителю информации, например, носителю для хранения данных, или может включать в себя любую среду связи, которая облегчает передачу компьютерной программы из одного места в другое (например, согласно протоколу связи). Таким образом, машиночитаемый носитель информации может в целом соответствовать: (1) энергонезависимому материальному машиночитаемому носителю информации или (2) среде связи, такой как сигнал или носитель информации. Носитель информации может быть любым используемым носителем информации, к которому может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации технологий, описанных в настоящей заявке. Компьютерный программный продукт может включать в себя машиночитаемый носитель информации.
В качестве примера, но не ограничения, такие машиночитаемые носители информации могут включать в себя RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на компакт-дисках, запоминающее устройство на магнитных дисках или другое магнитное запоминающее устройство, флэш-память или любой другой носитель информации, который можно использовать для хранения желаемого программного кода в виде инструкции или структуры данных и к которому может получить доступ компьютер. В дополнение к этому, любое соединение называется должным образом машиночитаемым носителем информации. Например, если инструкция передается с веб-сайта, сервера или из другого удаленного источника с использованием коаксиального кабеля, оптоволокна, витой пары, цифровой абонентской линии (DSL) или беспроводной технологии, такой как инфракрасная, радио или микроволновая связь, то коаксиальный кабель, оптическое волокно, витая пара, DSL или беспроводная технология, такая как инфракрасная, радио или микроволновая связь, включены в определение среды. Однако следует понимать, что машиночитаемый носитель информации и носитель информации не включают в себя соединения, носители информации, сигналы или другие временные носители информации, но фактически означают невременные материальные носители информации. Магнитные диски и оптические диски, используемые в данной спецификации, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD) и диск Blu-ray. Магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров. Комбинации вышеупомянутых элементов также должны быть включены в объем машиночитаемых носителей информации.
Инструкции могут исполняться одним или более процессорами, такими как один или более процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Таким образом, используемый в настоящем описании термин "процессор" может быть любой из вышеупомянутых структур или любой другой структурой, подходящей для реализации технологий, описанных в настоящем описании. В дополнение к этому, в некоторых аспектах функции, описанные со ссылкой на иллюстративные логические блоки, модули и этапы, описанные в данной спецификации, могут быть предоставлены в рамках специализированных аппаратных и/или программных блоков, выполненных с возможностью кодирования и декодирования, или могут быть включены в объединенный кодек. В дополнение к этому, технологии могут быть полностью реализованы в одной или нескольких схемах или в одном или нескольких логических элементах.
Технологии, рассматриваемые в настоящей заявке, могут быть реализованы в различных устройствах или устройствах, включающих в себя беспроводной телефон, интегральную схему (IC) или набор IC (например, набор микросхем). В настоящей заявке различные компоненты, модули или блоки описаны для того, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно реализованных с помощью различных аппаратных блоков. Фактически, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека в сочетании с соответствующим программным обеспечением и/или программно-аппаратными средствами, или могут быть обеспечены взаимодействующими аппаратными блоками (включая один или более процессоров, описанных выше).
В приведенном выше описании описаны только примеры конкретных реализаций настоящей заявки, которые не предназначены для ограничения объема защиты настоящей заявки. Любые изменения или замены, которые могут легко выявить специалисты в данной области техники в пределах технического объема, раскрытого в настоящей заявке, должны подпадать под объем защиты настоящей заявки. Таким образом, объем защиты настоящей заявки должен быть подчинен объему защиты формулы изобретения.
Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Выполняют, при выполнении для текущего блока изображения множества заданных условий, обработку на основе двунаправленного оптического потока текущего блока изображения для получения предсказанного значения выборки текущего блока изображения. Множество заданных условий содержит то, что: информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация predFlagL1 указания направления предсказания, соответствующая второму списку (list0), равна 1, причем predFlagL0 и predFlagL1, каждый из которых равен 1, указывает то, что двунаправленное предсказание применяется к текущему блоку изображения; MotionModelIdc равен 0, где MotionModelIdc, равный 0, указывает то, что модель движения для компенсации движения текущего блока изображения представляет собой поступательное движение; merge_subblock_flag, включенный в синтаксический элемент, равен 0, где merge_subblock_flag, равный 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения. 7 н. и 16 з.п. ф-лы, 15 ил.
1. Способ кодирования, содержащий этапы, на которых:
определяют, выполняется ли, для текущего блока изображения, множество заданных условий;
выполняют, при выполнении множества заданных условий, обработку на основе двунаправленного оптического потока (BDOF) текущего блока изображения для получения предсказанного значения выборки текущего блока изображения, причем множество заданных условий содержит то, что:
информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация predFlagL1 указания направления предсказания, соответствующая второму списку (list0), равна 1, причем predFlagL0 и predFlagL1, каждый из которых равен 1, указывает то, что двунаправленное предсказание применяется к текущему блоку изображения;
MotionModelIdc равен 0, где MotionModelIdc, равный 0, указывает то, что модель движения для компенсации движения текущего блока изображения представляет собой поступательное движение;
merge_subblock_flag, включенный в синтаксический элемент, равен 0, где merge_subblock_flag, равный 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения;
sym_mvd_flag, включенный в синтаксический элемент, равен 0, где sym_mvd_flag, равный 0, указывает то, что синтаксическая структура mvd_coding присутствует для текущего блока изображения;
bcwIdx, включенный в синтаксический элемент, равен 0, где bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения;
cIdx равно 0, где cIdx представляет собой индекс цветового компонента текущего блока изображения;
высота H текущего блока изображения, больше или равна 8,
ширина W текущего блока изображения, больше или равна 8,
произведение ширины W текущего блока изображения на высоту H текущего блока изображения, больше 128; и
каждый из luma_weight_l0_flag[refIdxL0] и luma_weight_l1_flag[refIdxL1], включенный в синтаксический элемент, равен 0, где luma_weight_l0_flag, равный 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равный 0, указывает то, что отсутствует компонент яркости предсказания list1; причем
пропускают, при невыполнении указанного множества заданных условий, выполнение обработки на основе двунаправленного оптического потока (BDOF) текущего блока изображения, и получают предсказанное значение выборки текущего блока изображения посредством предсказания на основе значения опорной выборки, соответствующей первому списку, и значения опорной выборки, соответствующей второму списку, согласно технологии уточнения вектора движения на стороне декодера (DMVR);
получают восстановленное значение выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения; и
кодируют синтаксический элемент, ассоциированный с текущим блоком изображения, в подлежащем передаче битовом потоке, причем синтаксический элемент используется по меньшей мере для указания того, что применяется двунаправленное предсказание, где
каждая из W и H равна 2n, и n - целое число.
2. Способ по п. 1, в котором синтаксический элемент содержит индекс информации движения целевого кандидата, информация движения целевого кандидата содержит целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания, информация указания направления предсказания используется для указания того, что двунаправленное предсказание применяется для текущего блока изображения, целевые векторы движения-кандидаты содержат первый вектор движения, соответствующий первому списку, и второй вектор движения, соответствующий второму списку, и индексы опорных кадров содержат первый индекс опорного кадра, соответствующий первому списку и второй индекс опорного кадра, соответствующий второму списку.
3. Способ по п. 1, в котором синтаксический элемент содержит первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы используются для указания предикторов целевых векторов движения-кандидатов, предикторы целевых векторов движения-кандидатов содержат первый предиктор вектора движения, соответствующий первому списку, и второй предиктор вектора движения, соответствующий второму списку, а разность векторов движения (MVD) содержит первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку;
вторые индексы используются для указания опорных кадров текущего блока изображения, опорные кадры содержат первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку, а информация указания направления предсказания используется для указания того, что применяется двунаправленное предсказание для текущего блока изображения;
первый вектор движения, соответствующий первому списку, получен на основе первого предиктора вектора движения, соответствующего первому списку, и первой MVD, соответствующей первому списку; и
второй вектор движения, соответствующий второму списку, получен на основе второго предиктора вектора движения, соответствующего второму списку, и второй MVD, соответствующей второму списку.
4. Способ по любому из пп. 1-3, дополнительно содержащий этапы, на которых:
определяют остаток выборки на основе значения выборки текущего блока изображения и предсказанного значения выборки текущего блока изображения; и
кодируют остаток выборки в подлежащем передаче битовом потоке.
5. Способ по любому из пп. 1-3, в котором этап пропуска, при невыполнении указанного множества заданных условий, выполнение обработки на основе двунаправленного оптического потока (BDOF) текущего блока изображения, и получения предсказанного значения выборки текущего блока изображения посредством предсказания на основе значения опорной выборки, соответствующей первому списку, и значения опорной выборки, соответствующей второму списку, согласно технологии уточнения вектора движения на стороне декодера (DMVR) содержит то, что:
получают, когда размер текущего блока изображения представляет собой второй заданный размер, значение предсказания выборки текущего блока изображения, посредством предсказания на основе значения опорной выборки, соответствующей первому списку, и значения опорной выборки, соответствующей второму списку согласно технологии уточнения вектора движения на стороне декодера (DMVR), причем второй заданный размер представляет собой 8×8, 4×N, 8×16 или 16×8, при этом 8×8 указывает, что ширина текущего блока изображения представляет собой 8 выборок и высота текущего блока изображения представляет собой 8 выборок, 4×N указывает, что ширина текущего блока изображения представляет собой 4 выборки, а высота текущего блока изображения представляет собой N выборок, 8×16 указывает, что ширина текущего блока изображения представляет собой 8 выборок, а высота текущего блока изображения представляет собой 16 выборок, а 16×8 указывает, что ширина текущего блока изображения представляет собой 16 выборок и высота текущего блока изображения представляет собой 8 выборок, где N представляет собой степень 2 и более или равно 8.
6. Способ декодирования, содержащий этапы, на которых:
выполняют синтаксический анализ битового потока для получения синтаксического элемента, причем указанный синтаксический элемент используется по меньшей мере для указания того, что двунаправленное предсказание применяется для текущего блока изображения;
определяют, выполняется ли, для текущего блока изображения, множество заданных условий;
выполняют, при выполнении множества заданных условий, обработку, на основе двунаправленного оптического потока (BDOF), текущего блока изображения для получения предсказанного значения выборки текущего блока изображения, причем множество заданных условий содержит то, что:
информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация predFlagL1 указания направления предсказания, соответствующая второму списку (list0), равна 1, причем predFlagL0 и predFlagL1, каждый из которых равен 1, указывает то, что двунаправленное предсказание применяется к текущему блоку изображения;
MotionModelIdc равен 0, где MotionModelIdc, равный 0, указывает то, что модель движения для компенсации движения текущего блока изображения представляет собой поступательное движение;
merge_subblock_flag, включенный в синтаксический элемент, равен 0, где merge_subblock_flag, равный 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения;
sym_mvd_flag, включенный в синтаксический элемент, равен 0, где sym_mvd_flag, равный 0, указывает то, что синтаксическая структура mvd_coding присутствует для текущего блока изображения;
bcwIdx, включенный в синтаксический элемент, равен 0, где bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения;
cIdx равно 0, где cIdx представляет собой индекс цветового компонента текущего блока изображения;
высота H текущего блока изображения больше или равна 8,
ширина W текущего блока изображения больше или равна 8,
произведение ширины W текущего блока изображения на высоту H текущего блока изображения больше 128; и
каждый из luma_weight_l0_flag[refIdxL0] и luma_weight_l1_flag[refIdxL1], включенный в синтаксический элемент, равен 0, где luma_weight_l0_flag, равный 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равный 0, указывает то, что отсутствует компонент яркости предсказания list1; причем
пропускают, при невыполнении указанного множества заданных условий, выполнение обработки на основе двунаправленного оптического потока (BDOF) текущего блока изображения, и получают предсказанное значение выборки текущего блока изображения посредством предсказания на основе значения опорной выборки, соответствующей первому списку, и значения опорной выборки, соответствующей второму списку, согласно технологии уточнения вектора движения на стороне декодера (DMVR);
получают восстановленное значение выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения, где
каждая из W и H равна 2n, и n - целое число.
7. Способ по п. 6, в котором синтаксический элемент содержит индекс информации движения целевого кандидата, информация движения целевого кандидата содержит целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания, информация указания направления предсказания используется для указания того, что двунаправленное предсказание применяется для текущего блока изображения, целевые векторы движения-кандидаты содержат первый вектор движения, соответствующий первому списку, и второй вектор движения, соответствующий второму списку, и индексы опорных кадров содержат первый индекс опорного кадра, соответствующий первому списку, и второй индекс опорного кадра, соответствующий второму списку.
8. Способ по п. 6, в котором синтаксический элемент содержит первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы используются для указания предикторов целевых векторов движения-кандидатов, предикторы целевых векторов движения-кандидатов содержат первый предиктор вектора движения, соответствующий первому списку, и второй предиктор вектора движения, соответствующий второму списку, и разность векторов движения (MVD) содержит первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку;
вторые индексы используются для указания опорных кадров текущего блока изображения, опорные кадры содержат первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку, и информация указания направления предсказания используется для указания того, что двунаправленное предсказание применяется для текущего блока изображения;
первый вектор движения, соответствующий первому списку, получен на основе первого предиктора вектора движения, соответствующего первому списку и первой MVD, соответствующей первому списку; и
второй вектор движения, соответствующий второму списку, получен на основе второго предиктора вектора движения, соответствующего второму списку, и второй MVD, соответствующей второму списку.
9. Способ по любому из пп. 6-8, в котором синтаксический анализ битового потока для получения синтаксического элемента содержит: анализ битового потока для получения остатка выборки и синтаксического элемента; а
определение восстановленного значения выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения, содержит: определение восстановленного значения выборки текущего блока изображения на основе остатка выборки и предсказанного значения выборки текущего блока изображения.
10. Способ по любому из пп. 6-8, в котором этап пропуска, при невыполнении указанного множества заданных условий, выполнение обработки на основе двунаправленного оптического потока (BDOF) текущего блока изображения, и получения предсказанного значения выборки текущего блока изображения посредством предсказания на основе значения опорной выборки, соответствующей первому списку, и значения опорной выборки, соответствующей второму списку, согласно технологии уточнения вектора движения на стороне декодера (DMVR) содержит то, что:
получают, когда размер текущего блока изображения представляет собой второй заданный размер, значение предсказания выборки текущего блока изображения, посредством предсказания на основе значения опорной выборки, соответствующей первому списку, и значения опорной выборки, соответствующей второму списку согласно технологии уточнения вектора движения на стороне декодера (DMVR), причем второй заданный размер представляет собой 8×8, 4×N, 8×16 или 16×8, при этом 8×8 указывает, что ширина текущего блока изображения представляет собой 8 выборок и высота текущего блока изображения представляет собой 8 выборок, 4×N указывает, что ширина текущего блока изображения представляет собой 4 выборки, а высота текущего блока изображения представляет собой N выборок, 8×16 указывает, что ширина текущего блока изображения представляет собой 8 выборок, а высота текущего блока изображения представляет собой 16 выборок, а 16×8 указывает, что ширина текущего блока изображения представляет собой 16 выборок и высота текущего блока изображения представляет собой 8 выборок, где N представляет собой степень 2 и более или равно 8.
11. Устройство кодирования, содержащее:
блок межкадрового предсказания, выполненный с возможностью определения, выполняется ли, для текущего блока изображения, множество заданных условий; и реализации, когда выполнено множество заданных условий, обработки на основе двунаправленного оптического потока (BDOF) над текущим блоком изображения для получения предсказанного значения выборки текущего блока изображения, причем множество заданных условий содержит то, что
информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация predFlagL1 указания направления предсказания, соответствующая второму списку (list0), равна 1, причем predFlagL0 и predFlagL1, каждый из которых равен 1, указывает то, что двунаправленное предсказание применяется к текущему блоку изображения;
MotionModelIdc равен 0, где MotionModelIdc, равный 0, указывает то, что модель движения для компенсации движения текущего блока изображения представляет собой поступательное движение;
merge_subblock_flag, включенный в синтаксический элемент, равен 0, где merge_subblock_flag, равный 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения;
sym_mvd_flag, включенный в синтаксический элемент, равен 0, где sym_mvd_flag, равный 0, указывает то, что синтаксическая структура mvd_coding присутствует для текущего блока изображения;
bcwIdx, включенный в синтаксический элемент, равен 0, где bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения;
cIdx равно 0, где cIdx представляет собой индекс цветового компонента текущего блока изображения;
высота H текущего блока изображения больше или равна 8,
ширина W текущего блока изображения больше или равна 8,
произведение ширины W текущего блока изображения на высоту H текущего блока изображения больше 128; и
каждый из luma_weight_l0_flag[refIdxL0] и luma_weight_l1_flag[refIdxL1], включенный в синтаксический элемент, равен 0, где luma_weight_l0_flag, равный 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равный 0, указывает то, что отсутствует компонент яркости предсказания list1; причем
блок межкадрового предсказания выполнен с возможностью пропуска, при невыполнении указанного множества заданных условий, выполнения обработки на основе двунаправленного оптического потока (BDOF) текущего блока изображения, и получения предсказанного значения выборки текущего блока изображения посредством предсказания на основе значения опорной выборки, соответствующей первому списку, и значения опорной выборки, соответствующей второму списку, согласно технологии уточнения вектора движения на стороне декодера (DMVR); при этом
устройство кодирования также содержит:
блок восстановления, выполненный с возможностью получения восстановленного значения выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения; и
блок энтропийного кодирования, выполненный с возможностью кодирования синтаксического элемента в подлежащем передаче битовом потоке, причем синтаксический элемент используется по меньшей мере для указания того, что двунаправленное предсказание применяется для текущего блока изображения, где
каждая из W и H равна 2n, и n - целое число.
12. Устройство кодирования по п. 11, в котором синтаксический элемент содержит индекс информации движения целевого кандидата, информация движения целевого кандидата содержит целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания, информация указания направления предсказания используется для указания того, что двунаправленное предсказание применяется для текущего блока изображения, целевые векторы движения-кандидаты содержат первый вектор движения, соответствующий первому списку, и второй вектор движения, соответствующий второму списку, и индексы опорных кадров содержат первый индекс опорного кадра, соответствующий первому списку, и второй индекс опорного кадра, соответствующий второму списку.
13. Устройство кодирования по п. 11, в котором синтаксический элемент содержит первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы используются для указания предикторов целевых векторов движения-кандидатов, предикторы целевых векторов движения-кандидатов содержат первый предиктор вектора движения, соответствующий первому списку, и второй предиктор вектора движения, соответствующий второму списку, и разность векторов движения (MVD) содержит первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку;
вторые индексы используются для указания опорных кадров текущего блока изображения, опорные кадры содержат первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку, и информация указания направления предсказания используется для указания того, что двунаправленное предсказание применяется для текущего блока изображения;
первый вектор движения, соответствующий первому списку, получается на основе первого предиктора вектора движения, соответствующего первому списку, и первой MVD, соответствующей первому списку; и
второй вектор движения, соответствующий второму списку, получается на основе второго предиктора вектора движения, соответствующего второму списку, и второй MVD, соответствующей второму списку.
14. Устройство кодирования по любому из пп. 11-13, дополнительно содержащее:
блок вычисления остатка, выполненный с возможностью определения остатка выборки на основе значения выборки текущего блока изображения и предсказанного значения выборки текущего блока изображения; а
блок энтропийного кодирования выполнен с возможностью кодирования синтаксического элемента и остатка выборки в передаваемом битовом потоке.
15. Устройство кодирования по любому из пп. 11-13, в котором блок межкадрового предсказания выполнен с возможностью:
получения, когда размер текущего блока изображения представляет собой второй заданный размер, значения предсказания выборки текущего блока изображения, посредством предсказания на основе значения опорной выборки, соответствующей первому списку, и значения опорной выборки, соответствующей второму списку согласно технологии уточнения вектора движения на стороне декодера (DMVR), причем второй заданный размер представляет собой 8×8, 4×N, 8×16 или 16×8, при этом 8×8 указывает, что ширина текущего блока изображения представляет собой 8 выборок и высота текущего блока изображения представляет собой 8 выборок, 4×N указывает, что ширина текущего блока изображения представляет собой 4 выборки, а высота текущего блока изображения представляет собой N выборок, 8×16 указывает, что ширина текущего блока изображения представляет собой 8 выборок, а высота текущего блока изображения представляет собой 16 выборок, а 16×8 указывает, что ширина текущего блока изображения представляет собой 16 выборок и высота текущего блока изображения представляет собой 8 выборок, где N представляет собой степень 2 и более или равно 8.
16. Устройство декодирования, содержащее:
блок энтропийного декодирования, выполненный с возможностью синтаксического анализа битового потока для получения синтаксического элемента, причем синтаксический элемент по меньшей мере используется для указания того, что двунаправленное предсказание применяется для текущего блока изображения;
блок межкадрового предсказания, выполненный с возможностью определения, выполняется ли, для текущего блока изображения, множество заданных условий; и реализации, когда выполнено множество заданных условий, обработки, на основе двунаправленного оптического потока (BDOF), текущего блока изображения для получения предсказанного значения выборки текущего блока изображения, причем множество заданных условий содержит то, что:
информация predFlagL0 указания направления предсказания, соответствующая первому списку (List1), равна 1, и информация predFlagL1 указания направления предсказания, соответствующая второму списку (list0), равна 1, причем predFlagL0 и predFlagL1, каждый из которых равен 1, указывает то, что двунаправленное предсказание применяется к текущему блоку изображения;
MotionModelIdc равен 0, где MotionModelIdc, равный 0, указывает то, что модель движения для компенсации движения текущего блока изображения представляет собой поступательное движение;
merge_subblock_flag, включенный в синтаксический элемент, равен 0, где merge_subblock_flag, равный 0, указывает то, что режим слияния подблоков не применяется для текущего блока изображения;
sym_mvd_flag, включенный в синтаксический элемент, равен 0, где sym_mvd_flag, равный 0, указывает то, что синтаксическая структура mvd_coding присутствует для текущего блока изображения;
bcwIdx, включенный в синтаксический элемент, равен 0, где bcwIdx указывает весовой индекс двунаправленного предсказания для текущего блока изображения;
cIdx равно 0, где cIdx представляет собой индекс цветового компонента текущего блока изображения;
высота H текущего блока изображения больше или равна 8,
ширина W текущего блока изображения больше или равна 8,
произведение ширины W текущего блока изображения на высоту H текущего блока изображения больше 128; и
каждый из luma_weight_l0_flag[refIdxL0] и luma_weight_l1_flag[refIdxL1], включенный в синтаксический элемент, равен 0, где luma_weight_l0_flag, равный 0, указывает то, что отсутствуют весовые коэффициенты для компонента яркости предсказания list0, и luma_weight_l1_flag, равный 0, указывает то, что отсутствует компонент яркости предсказания list1; причем
блок межкадрового предсказания выполнен с возможностью пропуска, при невыполнении указанного множества заданных условий, выполнения обработки на основе двунаправленного оптического потока (BDOF) текущего блока изображения, и получения предсказанного значения выборки текущего блока изображения посредством предсказания на основе значения опорной выборки, соответствующей первому списку, и значения опорной выборки, соответствующей второму списку, согласно технологии уточнения вектора движения на стороне декодера (DMVR); при этом
устройство кодирования также содержит:
блок восстановления, выполненный с возможностью определения восстановленного значения выборки текущего блока изображения на основе по меньшей мере предсказанного значения выборки текущего блока изображения, где
каждая из W и H равна 2n, и n - целое число.
17. Устройство декодирования по п. 16, в котором синтаксический элемент содержит индекс информации движения целевого кандидата, информация движения целевого кандидата содержит целевые векторы движения-кандидаты, индексы опорных кадров и информацию указания направления предсказания, информация указания направления предсказания используется для указания того, что двунаправленное предсказание применяется для текущего блока изображения, целевые векторы движения-кандидаты содержат первый вектор движения, соответствующий первому списку, и второй вектор движения, соответствующий второму списку, и индексы опорного кадра содержат индекс первого опорного кадра, соответствующего первому списку, и индекс второго опорного кадра, соответствующего второму списку.
18. Устройство декодирования по п. 16, в котором синтаксический элемент содержит первые индексы, вторые индексы, информацию указания направления предсказания и разность векторов движения (MVD), первые индексы используются для указания предикторов целевых векторов движения-кандидатов, предикторы целевых векторов движения-кандидатов содержат первый предиктор вектора движения, соответствующий первому списку, и второй предиктор вектора движения, соответствующий второму списку, и разность векторов движения (MVD) содержит первую MVD, соответствующую первому списку, и/или вторую MVD, соответствующую второму списку;
вторые индексы используются для указания опорных кадров текущего блока изображения, опорные кадры содержат первый опорный кадр, соответствующий первому списку, и второй опорный кадр, соответствующий второму списку, и информация указания направления предсказания используется для указания того, что двунаправленное предсказание применяется для текущего блока изображения;
первый вектор движения, соответствующий первому списку, получается на основе первого предиктора вектора движения, соответствующего первому списку, и первой MVD, соответствующей первому списку; и
второй вектор движения, соответствующий второму списку, получается на основе второго предиктора вектора движения, соответствующего второму списку, и второй MVD, соответствующей второму списку.
19. Устройство декодирования по любому из пп. 16-18, в котором блок энтропийного декодирования дополнительно выполнен с возможностью анализа битового потока для получения остатка выборки и синтаксического элемента; и
блок восстановления дополнительно выполнен с возможностью определения восстановленного значения выборки текущего блока изображения на основе остатка выборки и предсказанного значения выборки текущего блока изображения.
20. Устройство декодирования по любому из пп. 16-18, в котором блок межкадрового предсказания выполнен с возможностью:
получения, когда размер текущего блока изображения представляет собой второй заданный размер, значения предсказания выборки текущего блока изображения, посредством предсказания на основе значения опорной выборки, соответствующей первому списку, и значения опорной выборки, соответствующей второму списку согласно технологии уточнения вектора движения на стороне декодера (DMVR), причем второй заданный размер представляет собой 8×8, 4×N, 8×16 или 16×8, при этом 8×8 указывает, что ширина текущего блока изображения представляет собой 8 выборок и высота текущего блока изображения представляет собой 8 выборок, 4×N указывает, что ширина текущего блока изображения представляет собой 4 выборки, а высота текущего блока изображения представляет собой N выборок, 8×16 указывает, что ширина текущего блока изображения представляет собой 8 выборок, а высота текущего блока изображения представляет собой 16 выборок, а 16×8 указывает, что ширина текущего блока изображения представляет собой 16 выборок и высота текущего блока изображения представляет собой 8 выборок, где N представляет собой степень 2 и более или равно 8.
21. Машиночитаемый носитель информации, хранящий компьютерную программу, вызывающую, при исполнении компьютерной программы процессором, выполнение способа по любому из пп. 1-10.
22. Кодер, содержащий схему обработки для выполнения способа по любому из пп. 1-5.
23. Декодер, содержащий схему обработки для выполнения способа по любому из пп. 6-10.
Станок для придания концам круглых радиаторных трубок шестигранного сечения | 1924 |
|
SU2019A1 |
Станок для придания концам круглых радиаторных трубок шестигранного сечения | 1924 |
|
SU2019A1 |
BROSS B | |||
et al., "Versatile Video Coding (Draft 5)", JVET-N1001-v8, 126 | |||
MPEG MEETING, Geneva, Mar | |||
Станок для придания концам круглых радиаторных трубок шестигранного сечения | 1924 |
|
SU2019A1 |
EP 3471417 A1, 17.04.2019 | |||
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
ОГРАНИЧЕНИЕ ОДНОНАПРАВЛЕННЫМ ИНТЕР-ПРЕДСКАЗАНИЕМ ДЛЯ БЛОКОВ ПРЕДСКАЗАНИЯ В В-СЛАЙСАХ | 2013 |
|
RU2620723C2 |
Авторы
Даты
2024-05-13—Публикация
2020-06-24—Подача