ВИДЕОКОДЕР, ВИДЕОДЕКОДЕР, СПОСОБ КОДИРОВАНИЯ ВИДЕО, СПОСОБ ДЕКОДИРОВАНИЯ ВИДЕО
VIDEO ENCODER, VIDEO DECODER, METHOD FOR VIDEO ENCODING, METHOD FOR VIDEO DECODING

Перекрестные ссылки на родственные заявки
[0001] Данная заявка притязает на приоритет предварительной заявки на патент США № 62/694524, поданной 6 июля 2018 года, и предварительной заявки на патент США № 62/694540, поданной 6 июля 2018 года, содержание каждой из которых настоящим полностью и явно содержится по ссылке в данном документе.
Область техники, к которой относится изобретение
[0002] Предмет изобретения, описанный в данном документе, относится к сжатию видео, включающему в себя декодирование и кодирование.
Уровень техники
[0003] Видеокодек может включать в себя электронную схему или программное обеспечение, которое сжимает или распаковывает цифровое видео. Он может преобразовывать несжатое видео в сжатый формат или наоборот. В контексте сжатия видео, устройство, которое сжимает видео (и/или выполняет некоторую функцию означенного), типично может называться "кодером", а устройство, которое распаковывает видео (и/или выполняет некоторую функцию означенного), может называться "декодером".
[0004] Формат сжатых данных может соответствовать стандартной спецификации сжатия видео. Сжатие может осуществляться с потерями в том, что в сжатом видео отсутствует некоторая информация, присутствующая в исходном видео. Последствие этого может включать в себя то, что распакованное видео может иметь более низкое качество, чем исходное несжатое видео, поскольку недостаточно информации для того, чтобы точно восстанавливать исходное видео.
[0005] Могут возникать сложные взаимосвязи между качеством видео, объемом данных, используемых для того, чтобы представлять видео (например, определенным посредством скорости передачи битов), сложностью алгоритмов кодирования и декодирования, чувствительностью к потерям и ошибкам в данных, простотой редактирования, произвольным доступом, сквозной задержкой (например, временем задержки) и т.п.
Сущность изобретения
[0006] В аспекте, способ включает в себя прием потока битов; определение того, активируется ли двунаправленное предсказание с режимом на основе адаптивных весовых коэффициентов для текущего блока; определение по меньшей мере одного весового коэффициента; и восстановление пиксельных данных текущего блока с использованием комбинирования со взвешиванием по меньшей мере двух опорных блоков.
0
I
I
J
0
I
J
[0007] Одно или более из следующего может включаться в любой осуществимой комбинации. Например, поток битов может включать в себя параметр, указывающий то, активируется ли двунаправленное предсказание с режимом на основе адаптивных весовых коэффициентов для блока. Двунаправленное предсказание с режимом на основе адаптивных весовых коэффициентов может передаваться в служебных сигналах в потоке битов. Определение по меньшей мере одного весового коэффициента может включать в себя определение индекса в массиве весовых коэффициентов; и осуществление доступа к массиву весовых коэффициентов с использованием индекса. Определение по меньшей мере одного весового коэффициента может включать в себя определение первого расстояния от текущего кадра до первого опорного кадра по меньшей мере из двух опорных блоков; определение второго расстояния от текущего кадра до второго опорного кадра по меньшей мере из двух опорных блоков; и определение по меньшей мере одного весового коэффициента на основе первого расстояния и второго расстояния. Определение по меньшей мере одного весового коэффициента на основе первого расстояния и второго расстояния может выполняться согласно следующему: w1=αx(N)/(N+N); w0=(1-w1); где w1 является первым весовым коэффициентом, w0 является вторым весовым коэффициентом, α составляет предварительно определенное значение; N является первым расстоянием, и N является вторым расстоянием. Определение по меньшей мере одного весового коэффициента может включать в себя: определение первого весового коэффициента по меньшей мере посредством определения индекса в массиве весовых коэффициентов и осуществления доступа к массиву весовых коэффициентов с использованием индекса; и определение второго весового коэффициента по меньшей мере посредством вычитания первого весового коэффициента из значения. Массив может включать в себя целочисленные значения, включающие в себя {4, 5, 3, 10, -2}. Определение первого весового коэффициента может включать в себя задание первой весовой переменной w1 равной элементу массива, указываемому посредством индекса. Определение второго весового коэффициента может включать в себя задание второй весовой переменной w0 равной значению минус первая весовая переменная. Определение первого весового коэффициента и определение второго весового коэффициента могут выполняться согласно следующему: задание переменной w1 равной bcwWLut[bcwIdx] для bcwWLut[k]={4, 5, 3, 10, -2}; и задание переменной w0 равной (8-w1); где bcwIdx является индексом, и k является переменной. Комбинирование со взвешиванием по меньшей мере двух опорных блоков может вычисляться согласно pbSamples[x][y]=Clip3(0, (1<<bitDepth)-1, (w0*predSamplesL0[x][y]+w1*predSamplesL1[x][y]+offset3)>>(shift2+3)), где pbSamples[x][y] являются пиксельными значениями предсказания, x и y являются местоположениями сигналов яркости, "<<" является арифметическим сдвигом влево целочисленного представления в двоичном дополнительном коде посредством двоичных цифр, predSamplesL0 является первым массивом пиксельных значений первого опорного блока по меньшей мере из двух опорных блоков, predSamplesL1 является вторым массивом пиксельных значений второго опорного блока по меньшей мере из двух опорных блоков, offset3 является значением смещения, shift2 является значением сдвига, и
Определение индекса может включать в себя приспособление индекса из соседнего блока во время режима объединения. Приспособление индекса из соседнего блока во время режима объединения может включать в себя определение списка возможных вариантов объединения, содержащего пространственные возможные варианты и временные возможные варианты, выбор, с использованием индекса возможного варианта объединения, включенного в поток битов, возможного варианта объединения из списка возможных вариантов объединения, и задание значения индекса равным значению индекса, ассоциированному с выбранным возможным вариантом объединения. По меньшей мере, два опорных блока могут включать в себя первый блок выборок предсказания из предыдущего кадра и второй блок выборок предсказания из последующего кадра. Восстановление пиксельных данных может включать в себя использование ассоциированного вектора движения, содержащегося в потоке битов. Восстановление пиксельных данных может выполняться посредством декодера, включающего в себя схему, причем декодер дополнительно содержит: процессор энтропийного декодирования, выполненный с возможностью принимать поток битов и декодировать поток битов в квантованные коэффициенты; процессор обратного квантования и обратного преобразования, выполненный с возможностью обрабатывать квантованные коэффициенты, что включает в себя выполнение обратного дискретного косинусного преобразования; фильтр удаления блочности; буфер кадров; и процессор внутреннего предсказания. Текущий блок может составлять часть дерева квадрантов плюс двоичного дерева решений. Текущий блок может представлять собой единицу дерева кодирования, единицу кодирования и/или единицу предсказания.
[0008] Также описываются энергонезависимые компьютерные программные продукты (т.е. физически осуществленные компьютерные программные продукты), которые сохраняют инструкции, которые, при выполнении посредством одного или более процессоров данных одной или более вычислительных систем, инструктируют по меньшей мере одному процессору данных выполнять операции в данном документе. Аналогично, также описываются компьютерные системы, которые могут включать в себя один или более процессоров данных и запоминающее устройство, соединенное с одним или более процессоров данных. Запоминающее устройство может временно или постоянно сохранять инструкции, которые инструктируют по меньшей мере одному процессору выполнять одну или более операций, описанных в данном документе. Помимо этого, способы либо могут реализовываться посредством одного или более процессоров данных в одной вычислительной системе, либо распределяться между двумя или более вычислительных систем. Такие вычислительные системы могут соединяться и могут обмениваться данными и/или командами или другими инструкциями и т.п. через одно или более соединений, в том числе через соединение по сети (например, через Интернет, беспроводную глобальную вычислительную сеть, локальную вычислительную сеть, глобальную вычислительную сеть, проводную сеть и т.п.), через прямое соединение между одной или более из нескольких вычислительных систем и т.д.
[0009] Подробности одного или более варьирований предмета изобретения, описанного в данном документе, изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки и преимущества предмета изобретения, описанного в данном документе, должны становиться очевидными из описания и чертежей и из формулы изобретения.
Описание чертежей
[0010] Фиг. 1 является схемой, иллюстрирующей пример двунаправленного предсказания;
[0011] Фиг. 2 является схемой последовательности операций обработки, иллюстрирующей примерный процесс 200 декодирования для двунаправленного предсказания с адаптивными весовыми коэффициентами;
[0012] Фиг. 3 иллюстрирует примерные пространственные соседние узлы для текущего блока;
[0013] Фиг. 4 является блок-схемой системы, иллюстрирующей примерный видеокодер, допускающий выполнение двунаправленного предсказания с адаптивным весовым коэффициентом;
[0014] Фиг. 5 является блок-схемой системы, иллюстрирующей примерный декодер, допускающий декодирование потока битов с использованием двунаправленного предсказания с адаптивными весовыми коэффициентами; и
[0015] Фиг. 6 является блок-схемой, иллюстрирующей примерное многоуровневое предсказание с адаптивными весовыми коэффициентами на основе подхода на основе расстояний до опорного кинокадра согласно некоторым реализациям текущего предмета изобретения.
[0016] Аналогичные ссылки с номерами на различных чертежах указывают аналогичные элементы.
Подробное описание изобретения
[0017] В некоторых реализациях, предсказание со взвешиванием может улучшаться с использованием адаптивных весовых коэффициентов. Например, комбинация опорных кинокадров (например, предиктор) может вычисляться с использованием весовых коэффициентов, которые могут быть адаптивными. Один подход к адаптивным весовым коэффициентам заключается в том, чтобы адаптировать весовые коэффициенты на основе расстояния до опорного кинокадра. Другой подход к адаптивным весовым коэффициентам заключается в том, чтобы адаптировать весовые коэффициенты на основе соседних блоков. Например, весовые коэффициенты могут приспосабливаться из соседнего блока, если движение текущих блоков должно объединяться с соседним блоком, к примеру, в режиме объединения. Посредством адаптивного определения весовых коэффициентов, могут повышаться эффективность сжатия и скорость передачи битов.
[0018] Компенсация движения может включать в себя подход для того, чтобы предсказывать видеокадр или его часть с учетом предыдущих и/или будущих кадров посредством учета движения камеры и/или объектов в видео. Она может использоваться при кодировании и декодировании видеоданных для сжатия видео, например, при кодировании и декодировании с использованием стандарта Экспертной группы по киноизображению (MPEG)-2 (также называемого "усовершенствованным кодированием видео (AVC)"). Компенсация движения может описывать кинокадр с точки зрения преобразования опорного кинокадра в текущий кинокадр. Опорный кинокадр может быть предыдущим во времени или будущим по сравнению с текущим кинокадром. Когда изображения могут точно синтезироваться из ранее передаваемых и/или сохраненных изображений, может повышаться эффективность сжатия.
[0019] Сегментация на блоки может означать способ при кодировании видео для того, чтобы находить области аналогичного движения. Некоторая форма сегментации на блоки содержится в стандартах видеокодеков, включающих в себя MPEG-2, H.264 (также называемый "AVC" или "MPEG-4 часть 10") и H.265 (также называемый "стандартом высокоэффективного кодирования видео (HEVC)"). В примерных подходах на основе сегментации на блоки, неперекрывающиеся блоки видеокадра могут сегментироваться на прямоугольные субблоки, чтобы находить блочные сегменты, которые содержат пикселы с аналогичным движением. Этот подход может хорошо работать, когда все пикселы блочного сегмента имеют аналогичное движение. Движение пикселов в блоке может определяться относительно ранее кодированных кадров.
[0020] Предсказание с компенсацией движения используется в некоторых стандартах кодирования видео, включающих в себя MPEG-2, H.264/AVC и H.265/HEVC. В этих стандартах предсказанный блок формируется с использованием пикселов из опорного кадра, и местоположение таких пикселов передается в служебных сигналах с использованием векторов движения. Когда двунаправленное предсказание используется, предсказание формируется с использованием среднего двух предсказаний, прямого и обратного предсказания, как показано на фиг. 1.
[0021] Фиг. 1 является схемой, иллюстрирующей пример двунаправленного предсказания.
Текущий блок (Bc) предсказывается на основе обратного предсказания (Pb) и прямого предсказания (Pf). Текущий блок (Bc) может рассматриваться в качестве предсказания по среднему, которое может формироваться в качестве Bc=(Pb+Pf)/2. Но использование таких бипредсказаний (например, усреднение двух предсказаний) может не обеспечивать наилучшее предсказание. В некоторых реализациях, текущий предмет изобретения включает в себя использование среднего взвешенного прямого и обратного предсказания. В некоторых реализациях, текущий предмет изобретения может предоставлять улучшенные предсказанные блоки и повышенную эффективность использования опорных кадров для того, чтобы улучшать сжатие.
[0022] В некоторых реализациях, многоуровневое предсказание может включать в себя, для данного блока, Bc, в кодируемом текущем кинокадре, два предиктора Pi и Pj могут идентифицироваться с использованием процесса оценки движения. Например, предсказание Pc=(Pi+Pj)/2 может использоваться в качестве предсказанного блока. Предсказание со взвешиванием может вычисляться в качестве Pc=α*Pi+(1-α)*Pj где α={1/4, -1/8}. Когда используется такое предсказание со взвешиванием, весовые коэффициенты могут передаваться в служебных сигналах в потоке видеобитов. Ограничение выбора двумя весовыми коэффициентами уменьшает объем служебной информации в потоке битов и эффективно уменьшает скорость передачи битов и улучшает сжатие.
I
J
I
J
0
I
I
J
[0023] В некоторых реализациях, адаптивные весовые коэффициенты могут быть основаны на расстояниях до опорного кинокадра. В таком случае, весовые коэффициенты могут определяться следующим образом: Bc=αP+βP. В некоторых реализациях, β=(1-α). В некоторых реализациях, N и N могут включать в себя расстояния для опорных кадров I и J. Коэффициенты α и β могут определяться в качестве функции расстояний до кадра. Например, α=αx(N)/(N+N); β=(1-α).
[0024] В некоторых реализациях, адаптивные весовые коэффициенты могут приспосабливаться из соседних блоков, когда текущий блок приспосабливает информацию движения из соседнего блока. Например, когда текущий блок находится в режиме объединения и идентифицирует пространственный или временной соседний узел, в дополнение к приспособлению информации движения, также могут приспосабливаться весовые коэффициенты.
[0025] В некоторых реализациях, коэффициенты α, β масштабирования могут варьироваться в расчете на блок и приводить к дополнительному объему служебной информации в потоке видеобитов. В некоторых реализациях, служебная информация в потоке битов может уменьшаться посредством использования идентичного значения α для всех субблоков данного блока. Могут накладываться дополнительные ограничения, при которых все блоки кадра используют идентичное значение α, и такое значение передается в служебных сигналах только один раз в заголовке уровня кинокадра, к примеру, в наборе параметров кинокадра. В некоторых реализациях, используемый режим предсказания может передаваться в служебных сигналах посредством передачи в служебных сигналах новых весовых коэффициентов на уровне блока, использования весовых коэффициентов, передаваемых в служебных сигналах на уровне кадра, приспособления весовых коэффициентов из соседних блоков в режиме объединения и/или адаптивного масштабирования весовых коэффициентов на основе расстояний до опорного кадра.
[0026] Фиг. 2 является схемой последовательности операций обработки, иллюстрирующей примерный процесс 200 декодирования для двунаправленного предсказания с адаптивными весовыми коэффициентами.
[0027] На 210, принимается поток битов. Прием потока битов может включать в себя извлечение и/или синтаксический анализ текущего блока и ассоциированной служебной информации из потока битов.
[0028] На 220, определяется то, активируется ли двунаправленное предсказание с режимом на основе адаптивных весовых коэффициентов для текущего блока. В некоторых реализациях, поток битов может включать в себя параметр, указывающий то, активируется ли двунаправленное предсказание с режимом на основе адаптивных весовых коэффициентов для блока. Например, флаг (например, sps_bcw_enabled_flag) может указывать то, может ли бипредсказание с весовыми коэффициентами единиц кодирования (CU) использоваться для взаимного предсказания. Если sps_bcw_enabled_flag равен 0, синтаксис может ограничиваться таким образом, что бипредсказание с весовыми коэффициентами CU не используется в кодированной видеопоследовательности (CVS), и bcw_idx не присутствует в синтаксисе единицы кодирования CVS. В противном случае (например, sps_bcw_enabled_flag равен 1), бипредсказание с весовыми коэффициентами CU может использоваться в CVS.
[0029] На 230, может определяться по меньшей мере один весовой коэффициент. В некоторых реализациях, определение по меньшей мере одного весового коэффициента может включать в себя определение индекса в массиве весовых коэффициентов; и осуществление доступа к массиву весовых коэффициентов с использованием индекса. Индекс может варьироваться между блоками и может явно передаваться в служебных сигналах в потоке битов или логически выводиться.
[0030] Например, массив bcw_idx[x0][y0] индексов может включаться в поток битов и может указывать индекс весового коэффициента бипредсказания с весовыми коэффициентами CU. Индексы x0, y0 массива указывают местоположение (x0, y0) верхней левой выборки сигнала яркости текущего блока относительно верхней левой выборки сигнала яркости кинокадра. Когда bcw_idx[x0][y0] не присутствует, он может логически выводиться как равный 0.
[0031] В некоторых реализациях, массив весовых коэффициентов может включать в себя целочисленные значения, например, массив весовых коэффициентов может представлять собой {4, 5, 3, 10, -2}. Определение первого весового коэффициента может включать в себя задание первой весовой переменной w1 равной элементу массива, указываемому посредством индекса, и определение второго весового коэффициента может включать в себя задание второй весовой переменной w0 равной значению минус первая весовая переменная w1. Например, определение первого весового коэффициента и определение второго весового коэффициента могут выполняться согласно следующему: задание переменной w1 равной bcwWLut[bcwIdx] для bcwWLut[k]={4, 5, 3, 10, -2}и задание переменной w0 равной (8-w1).
[0032] Определение индекса может включать в себя приспособление индекса из соседнего блока во время режима объединения. Например, в режиме объединения, информация движения для текущего блока приспосабливается из соседнего узла. Фиг. 3 иллюстрирует примерные пространственные соседние узлы (A0, A1, B0, B1, B2) для текущего блока (причем каждое из A0, A1, B0, B1, B2 указывает местоположение соседнего пространственного блока).
[0033] Приспособление индекса из соседнего блока во время режима объединения может включать в себя определение списка возможных вариантов объединения, содержащего пространственные возможные варианты и временные возможные варианты; выбор, с использованием индекса возможного варианта объединения, включенного в поток битов, возможного варианта объединения из списка возможных вариантов объединения; и задание значения индекса равному значению индекса, ассоциированному с выбранным возможным вариантом объединения.
[0034] Снова ссылаясь на фиг. 2, на 240, пиксельные данные текущего блока могут восстанавливаться с использованием комбинирования со взвешиванием по меньшей мере двух опорных блоков. По меньшей мере, два опорных блока могут включать в себя первый блок выборок предсказания из предыдущего кадра и второй блок выборок предсказания из будущего кадра.
[0035] Восстановление может включать в себя определение предсказания и комбинирование предсказания с остатком. Например, в некоторых реализациях, значения выборок предсказания могут определяться следующим образом.
pbSamples[x][y]=Clip3(0, (1<<bitDepth)-1, (w0*predSamplesL0[x][y]+w1*predSamplesL1[x][y]+offset3)>>(shift2+3)),
где pbSamples[x][y] являются пиксельными значениями предсказания, x и y являются местоположениями сигналов яркости,
"<<" является арифметическим сдвигом влево целочисленного представления в двоичном дополнительном коде посредством двоичных цифр, predSamplesL0 является первым массивом пиксельных значений первого опорного блока по меньшей мере из двух опорных блоков, predSamplesL1 является вторым массивом пиксельных значений второго опорного блока по меньшей мере из двух опорных блоков, offset3 является значением смещения, и shift2 является значением сдвига.
[0036] Фиг. 4 является блок-схемой системы, иллюстрирующей примерный видеокодер 400, допускающий выполнение двунаправленного предсказания с адаптивными весовыми коэффициентами. Примерный видеокодер 400 принимает входное видео 405, которое может первоначально сегментироваться или разделяться согласно схеме обработки, такой как схема сегментации на макроблоки с древовидной структурой (например, дерево квадрантов плюс двоичное дерево). Пример схемы сегментации на макроблоки с древовидной структурой может включать в себя сегментацию кадра кинокадра на большие блочные элементы, называемые "единицами дерева кодирования (CTU)". В некоторых реализациях, каждая CTU дополнительно может сегментироваться один или более раз на определенное число субблоков, называемых "единицами кодирования (CU)". Конечный результат этого деления на части может включать в себя группу субблоков, которые могут называться "единицами предсказания (PU)". Также могут использоваться единицы преобразования (TU).
[0037] Примерный видеокодер 400 включает в себя процессор 410 внутреннего предсказания, процессор 420 оценки/компенсации движения (также называемый "процессором взаимного предсказания"), допускающий поддержку двунаправленного предсказания с адаптивными весовыми коэффициентами, процессор 425 преобразования/квантования, процессор 430 обратного квантования/обратного преобразования, внутриконтурный фильтр 435, буфер 440 декодированных кинокадров и процессор 445 энтропийного кодирования. В некоторых реализациях, процессор 420 оценки/компенсации движения может выполнять двунаправленное предсказание с адаптивными весовыми коэффициентами. Параметры потока битов, которые передают в служебных сигналах двунаправленное предсказание с режимом на основе адаптивных весовых коэффициентов, и связанные параметры могут вводиться в процессор 445 энтропийного кодирования для включения в выходной поток 450 битов.
[0038] При работе, для каждого блока кадра входного видео 405, может определяться то, следует обрабатывать блок через внутрикинокадровое предсказание или с использованием оценки/компенсации движения. Блок может предоставляться в процессор внутреннего предсказания 410 или процессор 420 оценки/компенсации движения. Если блок должен обрабатываться через внутреннее предсказание, процессор внутреннего предсказания 410 может выполнять обработку для того, чтобы выводить предиктор. Если блок должен обрабатываться через оценку/компенсацию движения, процессор 420 оценки/компенсации движения может выполнять обработку, включающую в себя использование двунаправленного предсказания с адаптивными весовыми коэффициентами для того, чтобы выводить предиктор.
[0039] Остаток может формироваться посредством вычитания предиктора из входного видео. Остаток может приниматься посредством процессора 425 преобразования/квантования, который может выполнять обработку преобразования (например, дискретное косинусное преобразование (DCT)), чтобы формировать коэффициенты, которые могут квантоваться. Квантованные коэффициенты и любая ассоциированная служебная информация могут предоставляться в процессор 445 энтропийного кодирования для энтропийного кодирования и включения в выходной поток 450 битов. Процессор 445 энтропийного кодирования может поддерживать кодирование служебной информации, связанной с двунаправленным предсказанием с адаптивными весовыми коэффициентами. Помимо этого, квантованные коэффициенты могут предоставляться в процессор 430 обратного преобразования/обратного квантования, который может воспроизводить пикселы, которые могут комбинироваться с предиктором и обрабатываться посредством в контурном фильтре 435, вывод которого сохраняется в буфере 440 декодированных кинокадров для использования посредством процессора 420 оценки/компенсации движения, который допускает поддержку двунаправленного предсказания с адаптивными весовыми коэффициентами.
[0040] Фиг. 5 является блок-схемой системы, иллюстрирующей примерный декодер 600, допускающий декодирование потока 670 битов с использованием двунаправленного предсказания с адаптивными весовыми коэффициентами. Декодер 600 включает в себя процессор 610 энтропийного декодирования, процессор 620 обратного квантования и обратного преобразования, фильтр 630 удаления блочности, буфер 640 кадров, процессор 650 компенсации движения и процессор 660 внутреннего предсказания. В некоторых реализациях, поток 670 битов включает в себя параметры, которые передают в служебных сигналах двунаправленное предсказание с адаптивными весовыми коэффициентами. Процессор 650 компенсации движения может восстанавливать пиксельную информацию с использованием двунаправленного предсказания с адаптивными весовыми коэффициентами, как описано в данном документе.
[0041] При работе, поток 670 битов может приниматься посредством декодера 600 и вводится в процессор 610 энтропийного декодирования, который энтропийно декодирует поток битов в квантованные коэффициенты. Квантованные коэффициенты могут предоставляться в процессор 620 обратного квантования и обратного преобразования, который может выполнять обратное квантование и обратное преобразование, чтобы создавать остаточный сигнал, который может суммироваться с выводом процессора 650 компенсации движения или процессора 660 внутреннего предсказания согласно режиму обработки. Вывод процессора 650 компенсации движения и процессора 660 внутреннего предсказания может включать в себя блочное предсказание на основе ранее декодированного блока. Сумма предсказания и остатка может обрабатываться посредством фильтра 630 удаления блочности и сохраняться в буфере 640 кадров. Для данного блока (например, CU или PU), когда поток 670 битов передает в служебных сигналах то, что режим представляет собой двунаправленное предсказание с адаптивными весовыми коэффициентами, процессор 650 компенсации движения может конструировать предсказание на основе двунаправленного предсказания с помощью схемы на основе адаптивных весовых коэффициентов, описанной в данном документе.
[0042] Хотя выше подробно описываются несколько варьирований, другие модификации или добавления являются возможными. Например, в некоторых реализациях, может реализовываться дерево квадрантов плюс двоичное дерево решений (QTBT). В QTBT, на уровне единицы дерева кодирования, параметры сегментации QTBT динамически извлекаются, чтобы адаптироваться к локальным характеристикам без передачи какого-либо объема служебной информации. Затем, на уровне единицы кодирования, структура на основе дерева решений с объединенным классификатором может исключать необязательные итерации и управлять риском ложного предсказания. В некоторых реализациях, двунаправленное предсказание с адаптивными весовыми коэффициентами на основе расстояний до опорного кинокадра может быть доступным в качестве дополнительного настраиваемого параметра, доступного в каждом узле-листе QTBT.
IJ
KL
[0043] В некоторых реализациях, предсказание со взвешиванием может улучшаться с использованием многоуровневого предсказания. В некоторых примерах этого подхода, два промежуточных предиктора могут формироваться с использованием предсказаний из нескольких (например, трех, четырех или более) опорных кинокадров. Например, два промежуточных предиктора P и P могут формироваться с использованием предсказаний из опорных кинокадров I, J, K, L, как показано на фиг. 6. Фиг. 6 является блок-схемой, иллюстрирующей примерное многоуровневое предсказание с помощью подхода адаптивных весовых коэффициентов согласно некоторым реализациям текущего предмета изобретения. Текущий блок (Bc) может предсказываться на основе двух обратных предсказаний (Pi и Pk) и двух прямых предсказаний (Pj и Pl).
ij
kl
ij
I
J
kl
K
L
[0044] Две предикации P и P могут вычисляться следующим образом: P=α*P+(1-α)*P; и P=α*P+(1-α)*P.
IJ
KL
IJ
KL
[0045] Конечное предсказание для текущего блока Bc может вычисляться с использованием комбинирования со взвешиванием P и P. Например, Bc=α*P+(1-α)*P.
[0046] В некоторых реализациях, коэффициенты α масштабирования могут варьироваться в расчете на блок и приводить к дополнительному объему служебной информации в потоке видеобитов. В некоторых реализациях, служебная информация в потоке битов может уменьшаться посредством использования идентичного значения α для всех субблоков данного блока. Могут накладываться дополнительные ограничения, при которых все блоки кадра используют идентичное значение α, и такое значение передается в служебных сигналах только один раз в заголовке уровня кинокадра, к примеру, в наборе параметров кинокадра. В некоторых реализациях, используемый режим предсказания может передаваться в служебных сигналах посредством передачи в служебных сигналах новых весовых коэффициентов на уровне блока, использования весовых коэффициентов, передаваемых в служебных сигналах на уровне кадра, приспособления весовых коэффициентов из соседних блоков в режиме объединения и/или адаптивного масштабирования весовых коэффициентов на основе расстояний до опорного кадра.
[0047] В некоторых реализациях, многоуровневое бипредсказание может реализовываться в кодере и/или декодере, например, в кодере по фиг. 4 и в декодере по фиг. 5. Например, декодер может принимать поток битов, определять то, активируется ли режим многоуровневого двунаправленного предсказания, определять по меньшей мере два промежуточных предсказания и восстанавливать пиксельные данные блока с использованием комбинирования со взвешиванием по меньшей мере двух промежуточных предсказаний.
[0048] В некоторых реализациях, дополнительные синтаксические элементы могут передаваться в служебных сигналах на различных уровнях иерархии потока битов.
[0049] Текущий предмет изобретения может применяться к возможным вариантам аффинного объединения векторов движения на основе управляющих точек, в которых используются две или более управляющих точки. Весовой коэффициент может определяться для каждой из управляющих точек (например, 3 управляющих точек).
[0050] Предмет изобретения, описанный в данном документе, предоставляет множество технических преимуществ. Например, некоторые реализации текущего предмета изобретения могут предоставлять двунаправленное предсказание с адаптивными весовыми коэффициентами, что повышает эффективность и точность сжатия.
[0051] Один или более аспектов или признаков предмета изобретения, описанного в данном документе, могут реализовываться в цифровой электронной схеме, интегральной схеме, специально разработанных специализированных интегральных схемах (ASIC), программируемых пользователем вентильных матрицах (FPGA), компьютерных аппаратных средствах, микропрограммном обеспечении, программном обеспечении и/или в комбинациях вышеозначенного. Эти различные аспекты или признаки могут включать в себя реализацию в одной или более компьютерных программ, которые могут выполняться и/или интерпретироваться на программируемой системе, включающей в себя по меньшей мере один программируемый процессор, который может быть специального назначения или общего назначения, соединенный с возможностью принимать данные и инструкции и передавать данные и инструкции из/в систему хранения данных по меньшей мере одно устройство ввода и по меньшей мере одно устройство вывода. Программируемая система или вычислительная система может включать в себя клиенты и серверы. Клиент и сервер, в общем, являются удаленными друг от друга и типично взаимодействуют через сеть связи. Взаимосвязь клиента и сервера осуществляется на основе компьютерных программ, работающих на соответствующих компьютерах и имеющих клиент-серверную взаимосвязь между собой.
[0052] Эти компьютерные программы, которые также могут называться "программами", "программным обеспечением", "программными приложениями", "приложениями", "компонентами" или "кодом", включают в себя машинные инструкции для программируемого процессора и могут реализовываться на высокоуровневом процедурном языке, объектно-ориентированном языке программирования, функциональном языке программирования, логическом языке программирования и/или на ассемблере/машинном языке. При использовании в данном документе, термин "машиночитаемый носитель" означает любой компьютерный программный продукт, оборудование и/или устройство, такое как, например, магнитные диски, оптические диски, запоминающее устройство и программируемые логические устройства (PLD), используемые для того, чтобы предоставлять машинные инструкции и/или данные в программируемый процессор, включающий в себя машиночитаемый носитель, который принимает машинные инструкции в качестве машиночитаемого сигнала. Термин "машиночитаемый сигнал" означает любой сигнал, используемый для того, чтобы предоставлять машинные инструкции и/или данные в программируемый процессор. Машиночитаемый носитель может энергонезависимо сохранять такие машинные инструкции, к примеру, аналогично энергонезависимому полупроводниковому запоминающему устройству или магнитному жесткому диску, или любому эквивалентному носителю хранения данных. Машиночитаемый носитель альтернативно или дополнительно может энергозависимо сохранять такие машинные инструкции, к примеру, аналогично процессорному кэшу или другому оперативному запоминающему устройству, ассоциированному с одним или более физических ядер процессора.
[0053] Чтобы предоставлять взаимодействие с пользователем, один или более аспектов или признаков предмета изобретения, описанного в данном документе, могут реализовываться на компьютере, имеющем устройство отображения, такое как, например, электронно-лучевая трубка (CRT) или жидкокристаллический дисплей (ЖК-дисплей), или монитор на светоизлучающих диодах (на светодиодах) для отображения информации пользователю, и клавиатуру и указательное устройство, такое как, например, мышь или шаровой манипулятор, посредством которого пользователь может предоставлять ввод в компьютер. Другие виды устройств также могут использоваться для того, чтобы предусматривать взаимодействие с пользователем. Например, обратная связь, предоставляемая пользователю, может представлять собой любую форму сенсорной обратной связи, такую как, например, визуальная обратная связь, акустическая обратная связь или тактильная обратная связь; и ввод от пользователя может приниматься в любой форме, включающей в себя акустический, речевой или тактильный ввод. Другие возможные устройства ввода включают в себя сенсорные экраны или другие сенсорные устройства, такие как, одно- или многоточечные резистивные или емкостные сенсорные панели, аппаратные средства и программное обеспечение для распознавания голоса, оптические сканеры, оптические указатели, устройства захвата цифровых изображений и ассоциированное интерпретационное программное обеспечение и т.п.
[0054] В вышеприведенных описаниях и в формуле изобретения, такие фразы, как "по меньшей мере, один из" или "один или более из" могут возникать с последующим конъюнктивным списком элементов или признаков. Термин "и/или" также может возникать в списке из двух или более элементов или признаков. Если иное неявно или явно не противоречит контексту, в котором оно используется, такая фраза не имеет намерение означать любой из перечисленных элементов или признаков отдельно либо любой из изложенных элементов или признаков в комбинации с любым из других изложенных элементов или признаков. Например, фразы "по меньшей мере, один из A и B"; "один или более из A и B"; и "A и/или B" имеют намерение означать "только A, только B либо A и B вместе". Аналогичная интерпретация также предназначается для списков, включающих в себя три или более элементов. Например, фразы "по меньшей мере, один из A, B и C"; "один или более из A, B и C"; и "A, B и/или C" имеют намерение означать "только A, только B, только C, A и B вместе, A и C вместе, B и C вместе или A и B и C вместе". Помимо этого, использование термина "на основе" выше и в формуле изобретения имеет намерение означать "по меньшей мере, частично на основе", так что неизложенный признак или элемент также является допустимым.
[0055] Предмет изобретения, описанный в данном документе, может осуществляться в системах, оборудовании, способах и/или изделиях в зависимости от требуемой конфигурации. Реализации, изложенные в вышеприведенном описании, не представляют все реализации в соответствии с предметом изобретения, описанным в данном документе. Вместо этого, они представляют собой просто некоторые примеры в соответствии с аспектами, связанными с описанным предметом изобретения. Хотя выше подробно описываются несколько варьирований, другие модификации или добавления являются возможными. В частности, дополнительные признаки и/или варьирования могут предоставляться в дополнение к признакам и/или варьированиям, изложенным в данном документе. Например, реализации, описанные выше, могут быть направлены на различные комбинации и субкомбинации раскрытых признаков и/или на комбинации и субкомбинации нескольких дополнительных признаков, раскрытых выше. Помимо этого, логические последовательности операций, проиллюстрированные на прилагаемых чертежах и/или описанные в данном документе, не обязательно требуют конкретного показанного порядка или последовательного порядка для того, чтобы достигать требуемых результатов. Другие реализации могут находиться в пределах объема прилагаемой формулы изобретения.