Область техники, к которой относится изобретение
Настоящая заявка относится к технической области кодирования и декодирования, а в частности - к способу, аппарату и устройству кодирования и декодирования.
Уровень техники
В целях экономии места, видеоизображения передаются после кодирования. Полный способ кодирования видео может включать в себя такие процессы, как предсказание, преобразование, квантование, энтропийное кодирование, фильтрация и т.п. Кодирование с предсказанием может включать в себя внутрикадровое кодирование и межкадровое кодирование. Кроме того, межкадровое кодирование может использовать пиксели соседнего кодированного изображения для предсказания текущего пикселя с использованием корреляции во временной области видео, чтобы эффективно удалять избыточность во временной области видео. Внутрикадровое кодирование может использовать пиксели кодированного блока в текущем сегменте изображения для предсказания текущего пикселя с использованием корреляции во временной области видео, чтобы эффективно удалять избыточность во временной области видео.
При межкадровом кодировании может использоваться вектор движения для представления относительного смещения между текущим блоком текущего сегмента изображения и опорным блоком изображения опорного кадра. Например, изображение А текущего сегмента и изображение В опорного кадра имеют сильную временную корреляцию. Когда нужно передать текущий блок изображения А, в изображении В может быть выполнен поиск движения, чтобы найти опорный блок В1, который наилучшим образом соответствует текущему блоку А1, при этом можно определить относительное смещение между текущим блоком А1 и опорным блоком В1, которое является вектором движения для текущего блока А1.
В некоторых примерах текущий блок представляет собой прямоугольник. Однако края реального объекта обычно не могут быть абсолютно горизонтальными и вертикальными. Для текущего блока на краю объекта может быть два разных объекта (например, объект на переднем плане и фон). В этом случае, если текущий прямоугольный блок прогнозируется с использованием единственного режима предсказания, то возникнут такие проблемы, как плохой результат предсказания, большие остатки кодирования и низкая производительность кодирования и т.п.
Сущность изобретения
Настоящая заявка предусматривает способ и устройство кодирования и декодирования, которые могут улучшить производительность кодирования.
Вариант осуществления настоящей заявки предусматривает способ декодирования, содержащий следующее:
получают первую целевую информацию движения и вторую целевую информацию движения; причем первая целевая информация движения представляет собой целевую информацию движения для первого подблока, отделенного от текущего блока, а вторая целевая информация движения представляет собой целевую информацию движения для второго подблока, отделенного от текущего блока; причем первый подблок и второй подблок представляют собой два треугольных подблока, отделенных от текущего блока в соответствии с линией разбиения;
определяют первую область, вторую область и третью область, содержащиеся в текущем блоке, на основании первого подблока и второго подблока, отделенных в соответствии с линией разбиения, причем первая область расположена в первом подблоке, вторая область расположена во втором подблоке, линия разбиения расположена в третьей области, и между третьей областью и первым подблоком имеется область перекрытия, и между третьей областью и вторым подблоком имеется область перекрытия; и
сохраняют информацию движения для текущего блока, причем, если первая целевая информация движения и вторая целевая информация движения получены из одного и того же списка опорных кадров, то вторую целевую информацию движения сохраняют в качестве целевой информации движения для третьей области.
Опционально, информацию движения сохраняют в элементарном объеме блока 4*4. Опционально, если первая целевая информация движения и вторая целевая информация движения получены из разных списков опорных кадров, то первую целевую информацию движения и вторую целевую информацию движения объединяют в двунаправленную информацию движения, которую затем сохраняют в качестве целевой информации движения для третьей области.
Опционально, подблок в первой области представляет собой подблок, по которому выполняют компенсацию с невзвешенным предсказанием, и первую целевую информацию движения сохраняют в качестве целевой информации движения для подблока в первой области; подблок во второй области представляет собой подблок, по которому выполняют компенсацию с невзвешенным предсказанием, и вторую целевую информацию движения сохраняют в качестве целевой информации движения для подблока во второй области.
Опционально, после определения первой области, второй области и третей области, содержащихся в текущем блоке, на основании первого подблока и второго подблока, отделенных в соответствии с линией разбиения, способ дополнительно содержит:
выполняют компенсацию движения по каждому подблоку в первой области на основании первой целевой информации движения для получения значения предсказания для каждого подблока в первой области;
выполняют компенсацию движения по каждому подблоку во второй области на основании второй целевой информации движения для получения значения предсказания для каждого подблока во второй области;
выполняют взвешенную компенсацию движения по каждому подблоку в третьей области на основании первой целевой информации движения и второй целевой информации движения для получения значения предсказания для каждого подблока в третьей области;
определяют значение предсказания для текущего блока на основании значения предсказания для каждого подблока в первой области, значения предсказания для каждого подблока во второй области и значения предсказания для каждого подблока в третьей области.
Опционально, выполнение взвешенной компенсации движения по каждому подблоку в третьей области на основании первой целевой информации движения и второй целевой информации движения для получения значения предсказания для каждого подблока в третьей области содержит:
для каждого подблока в третьей области определяют первое значение предсказания для подблока на основании первой целевой информации движения и определяют второе значение предсказания для подблока на основании второй целевой информации движения;
выполняют взвешенную компенсацию движения по подблоку на основании первого значения предсказания, первого весового коэффициента, соответствующего первому значению предсказания, второго значения предсказания, второго весового коэффициента, соответствующего второму значению предсказания, для получения значения предсказания для подблока.
Опционально, если подблок в третьей области расположен в первом подблоке, первый весовой коэффициент, соответствующий первому значению предсказания для подблока, больше, чем второй весовой коэффициент, соответствующий второму значению предсказания для подблока;
если подблок в третьей области расположен во втором подблоке, первый весовой коэффициент, соответствующий первому значению предсказания для подблока, меньше, чем второй весовой коэффициент, соответствующий второму значению предсказания для подблока;
если подблок в третьей области расположен поперек линии разбиения, первый весовой коэффициент, соответствующий первому значению предсказания для подблока, равен второму весовому коэффициенту, соответствующему второму значению предсказания для подблока.
Опционально, получение первой целевой информации движения и второй целевой информации движения содержит:
построение списка информации движения для текущего блока, при этом список информации движения включает в себя множество элементов кандидатной информации движения;
получение первой целевой информации движения для первого подблока и второй целевой информации движения для второго подблока из списка информации движения.
Опционально, первая целевая информация движения отличается от второй целевой информации движения.
Опционально, получение первой целевой информации движения и второй целевой информации движения содержит:
построение списка информации движения для текущего блока, при этом список информации движения включает в себя множество элементов кандидатной информации движения;
выбор одного элемента кандидатной информации движения, соответствующего первому индексному значению, из списка информации движения на основании первого индексного значения, указанного посредством информации указания, и определение кандидатной информации движения в качестве первой целевой информации движения;
выбор другого элемента кандидатной информации движения, соответствующего второму индексному значению, из списка информации движения на основании второго индексного значения, указанного посредством информации указания, и определение кандидатной информации движения в качестве второй целевой информации движения.
Опционально, этапы вышеуказанного способа выполняют, когда режим информации движения текущего блока, информация о размере текущего блока, тип сегмента текущего сегмента и информация управления переключением уровня последовательности текущего блока соответствуют заданным условиям; при этом режим информации движения текущего блока, соответствующий заданному условию, включает в себя то, что режим информации движения текущего блока является режимом слияния, и режим информации движения текущего блока не является обычным режимом слияния, режимом слияния на основании подблоков или комбинированным режимом межкадрового слияния и внутрикадрового предсказания; и при этом тип сегмента текущего сегмента, соответствующий заданному условию, включает в себя то, что текущий сегмент, в котором расположен текущий блок, является В- сегментом.
Опционально, если первое значение предсказания равно Р1, второе значение предсказания равно Р2, первый весовой коэффициент равен а, второй весовой коэффициент равен b, то значение предсказания после взвешенной компенсации движения подблока равно Р1*а+Р2*b, набор значений первого весового коэффициента представляет собой {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8}, а сумма первого весового коэффициента и второго весового коэффициента равна 1.
Опционально, каждый подблок в третей области содержит компонент яркости, а набор весовых коэффициентов для компонента яркости представляет собой {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8};
для любого компонента яркости первое значение предсказания является значением предсказания яркости, определенным на основе первой целевой информации движения, второе значение предсказания является значением предсказания яркости, определенным на основе второй целевой информации движения, значение предсказания после взвешенной компенсации движения подблока представляет собой значение предсказания яркости после взвешенной компенсации движения, определенной на основе первого значения предсказания, второго значения предсказания, первого весового коэффициента и второго весового коэффициента.
Опционально, каждый подблок в третьей области содержит компонент цветности, для компонента цветности первое значение предсказания представляет собой значение предсказания цветности, определенное на основе первой целевой информации движения, второе значение предсказания представляет собой значение предсказания цветности, определенное на основе второй целевой информации движения, значение предсказания после взвешенной компенсации движения подблока является значением предсказания цветности после взвешенной компенсации движения, определенной на основе первого значения предсказания, второго значения предсказания, первого весового коэффициента и второго весового коэффициента.
Опционально, два треугольных подблока представляют собой два треугольных подблока, отделенных от текущего блока в соответствии со способом разбиения, указанным посредством информации указания.
Вариант осуществления настоящей заявки также предусматривает аппарат декодирования, содержащий:
модуль, выполненный с возможностью получения первой целевой информации движения и второй целевой информации движения; причем первая целевая информация движения представляет собой целевую информацию движения для первого подблока, отделенного от текущего блока, а вторая целевая информация движения представляет собой целевую информацию движения для второго подблока, отделенного от текущего блока; причем первый подблок и второй подблок представляют собой два треугольных подблока, отделенных от текущего блока в соответствии с линией разбиения;
модуль, выполненный с возможностью определения первой области, второй области и третей области, содержащихся в текущем блоке, на основании первого подблока и второго подблока, отделенных в соответствии с линией разбиения, причем первая область расположена в первом подблоке, вторая область расположена во втором подблоке, линия разбиения расположена в третьей области, и между третьей областью и первым подблоком имеется область перекрытия, и между третьей областью и вторым подблоком имеется область перекрытия; и
модуль, выполненный с возможностью сохранения информации движения для текущего блока, причем, если первая целевая информация движения и вторая целевая информация движения получены из одного и того же списка опорных кадров, то вторая целевая информация движения сохраняется в качестве целевой информации движения для третьей области.
Опционально, информация движения сохраняется в элементарном объеме блока 4*4.
Опционально, если первая целевая информация движения и вторая целевая информация движения получены из разных списков опорных кадров, то первая целевая информация движения и вторая целевая информация движения объединяются в двунаправленную информацию движения, которая затем сохраняется в качестве целевой информации движения для третьей области.
Опционально, подблок в первой области представляет собой подблок, по которому выполняется компенсация с невзвешенным предсказанием, и первая целевая информация движения сохраняется в качестве целевой информации движения для подблока в первой области; подблок во второй области представляет собой подблок, по которому выполняется компенсация с невзвешенным предсказанием, и вторая целевая информация движения сохраняется в качестве целевой информации движения для подблока во второй области.
Опционально, аппарат дополнительно выполнен с возможностью:
выполнения компенсации движения по каждому подблоку в первой области на основании первой целевой информации движения для получения значения предсказания для каждого подблока в первой области;
выполнения компенсации движения по каждому подблоку во второй области на основании второй целевой информации движения для получения значения предсказания для каждого подблока во второй области;
выполнения взвешенной компенсации движения по каждому подблоку в третьей области на основании первой целевой информации движения и второй целевой информации движения для получения значения предсказания для каждого подблока в третьей области;
определения значения предсказания для текущего блока на основании значения предсказания для каждого подблока в первой области, значения предсказания для каждого подблока во второй области и значения предсказания для каждого подблока в третьей области.
Опционально, выполнение взвешенной компенсации движения по каждому подблоку в третьей области на основании первой целевой информации движения и второй целевой информации движения для получения значения предсказания для каждого подблока в третьей области содержит:
для каждого подблока в третьей области, определение первого значения предсказания для подблока на основании первой целевой информации движения и определения второго значения предсказания для подблока на основании второй целевой информации движения;
выполнение взвешенной компенсации движения по подблоку на основании первого значения предсказания, первого весового коэффициента, соответствующего первому значению предсказания, второго значения предсказания, второго весового коэффициента, соответствующего второму значению предсказания, для получения значения предсказания для подблока.
Вариант осуществления настоящей заявки также предусматривает устройство декодирования, содержащее: процессор и машиночитаемый носитель данных, причем машиночитаемый носитель данных хранит машиноисполняемые инструкции, которые могут быть выполнены процессором. Процессор выполнен с возможностью выполнения машиноисполняемых инструкций для реализации описанного выше способа.
Вариант осуществления настоящей заявки также предусматривает электронное устройство, содержащее процессор и память для хранения инструкций, которые могут быть исполнены процессором. Причем процессор выполнен с возможностью реализации описанного выше способа.
Вариант осуществления настоящей заявки также предусматривает долговременный носитель информации, на котором хранятся инструкции, которые, при исполнении их процессором, обеспечивают реализацию процессором описанного выше способа.
Настоящая заявка предусматривает способ кодирования и декодирования, который включает в себя следующее:
разделение, если характеристическая информация текущего блока соответствует заданным условиям, текущего блока на первый треугольный подблок и второй треугольный подблок;
построение списка информации движения для текущего блока, причем список информации движения включает в себя множество элементов кандидатной информации движения;
получение первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения, причем первая целевая информация движения отличается от второй целевой информации движения; выполнение компенсации движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; и выполнение компенсации движения по второму треугольному подблоку на основании второй целевой информации движения для получения значения предсказания для второго треугольного подблока.
Настоящая заявка предусматривает аппарат кодирования и декодирования, включающий в себя: модуль разделения, выполненный с возможностью разделения, если характеристическая информация текущего блока соответствует заданным условиям, текущего блока на первый треугольный подблок и второй треугольный подблок; модуль построения, выполненный с возможностью построения списка информации движения для текущего блока, причем список информации движения включает в себя множество элементов кандидатной информации движения; модуль получения, выполненный с возможностью получения первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения, при этом первая целевая информация движения отличается от второй целевой информации движения; и модуль кодирования и декодирования, выполненный с возможностью выполнения компенсации движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; выполнения компенсации движения по второму треугольному подблоку на основании второй целевой информации движения для получения значения предсказания для второго треугольного подблока.
Настоящая заявка предусматривает устройство кодирования, включающее в себя: процессор и машиночитаемый носитель данных, причем машиночитаемый носитель данных хранит машиноисполняемые инструкции, которые могут выполняться процессором; процессор выполнен с возможностью выполнения машиноисполняемых инструкций для реализации следующих шагов: разделение, если характеристическая информация текущего блока соответствует определенным условиям, текущего блока на первый треугольный подблок и второй треугольный подблок; создание списка информации движения для текущего блока, причем список информации движения включает в себя множество элементов кандидатной информации движения; получение первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения, причем первая целевая информация движения отличается от второй целевой информации движения; выполнение компенсации движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; и выполнение компенсации движения по второму треугольному подблоку на основании второй целевой информации движения для получения значения предсказания для второго треугольного подблока.
Настоящее заявка предусматривает устройство декодирования, включающее в себя: процессор и машиночитаемый носитель данных, причем машиночитаемый носитель данных хранит машиноисполняемые инструкции, которые могут выполняться процессором; процессор выполнен с возможностью выполнения машиноисполняемых инструкций для реализации следующих этапов: разделение, если характеристическая информация текущего блока соответствует определенным условиям, текущего блока на первый треугольный подблок и второй треугольный подблок; создание списка информации движения для текущего блока, причем список информации движения включает в себя множество элементов кандидатной информации движения; получение первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения, при этом первая целевая информация движения отличается от второй целевой информации движения; выполнение компенсации движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; и выполнение компенсации движения по второму треугольному подблоку на основании второй целевой информации движения для получения значения предсказания для второго треугольного подблока.
Из приведенных выше решений можно увидеть, что в варианте осуществления настоящей заявки предусмотрено разделение, если характеристическая информация текущего блока соответствует определенным условиям, текущего блока на первый треугольный подблок и второй треугольный подблок; получение первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения; выполнение компенсации движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; выполнение компенсации движения по второму треугольному подблоку на основании второй целевой информации движения для получения значения предсказания для второго треугольного подблока. Вышеупомянутый способ может повысить точность предсказания, повысить производительность предсказания, повысить производительность кодирования и уменьшить остатки кодирования.
Краткое описание чертежей
Чтобы более четко раскрыть техническое решение вариантов осуществления заявки, ниже будут кратко описаны чертежи, требующиеся для вариантов осуществления настоящей заявки. Очевидно, что чертежи, описанные ниже, предназначены только для некоторых вариантов осуществления настоящей заявки, и специалисты в данной области техники могут получить другие чертежи в соответствии с чертежами в данном документе без каких-либо творческих усилий.
на фиг. 1 представлена схема структуры кодирования видео согласно одному из вариантов осуществления настоящей заявки;
на фиг. 2 представлена блок-схема способа кодирования и декодирования согласно одному из вариантов осуществления настоящей заявки;
на фиг. 3 представлена блок-схема способа кодирования согласно одному из вариантов осуществления настоящей заявки;
на фиг. 4 представлена блок-схема способа декодирования согласно одному из вариантов осуществления настоящей заявки;
на фиг. 5А-5В схематично представлены кандидатные блоки согласно одному из вариантов осуществления настоящей заявки;
на фиг. 6А-6В схематично показано разделение текущего блока согласно одному из вариантов осуществления настоящей заявки;
на фиг. 7А схематично показано соответствие между индексными значениями и однонаправленной информацией движения согласно одному из вариантов осуществления настоящей заявки;
на фиг. 7В-7С схематично показано разделение треугольных подблоков согласно одному из вариантов осуществления настоящей заявки;
на фиг. 7D показана схема компенсации движения согласно одному из вариантов осуществления настоящей заявки;
на фиг. 7E-7F показаны схемы хранения информации движения согласно одному из вариантов осуществления настоящей заявки;
на фиг. 8 представлена структурная схема аппарата кодирования и декодирования согласно одному из вариантов осуществления настоящей заявки;
на фиг. 9А представлена структурная схема аппаратных средств устройства декодирования согласно одному из вариантов осуществления настоящей заявки;
на фиг. 9В представлена структурная схема аппаратных средств устройства кодирования согласно одному из вариантов осуществления настоящей заявки.
Осуществление изобретения
Термины, используемые в вариантах осуществления настоящей заявки, используются только с целью описания конкретных вариантов осуществления, а не для ограничения различных вариантов осуществления настоящей заявки. Формы единственного числа, используемые в настоящей заявке и формуле изобретения, также подразумевают включение форм множественного числа, если контекст явно не указывает другие значения. Также следует понимать, что используемый в настоящем документе термин «и/или» относится к любой или всем возможным комбинациям одного или более соответствующих перечисленных элементов. Следует понимать, что хотя в вариантах осуществления настоящей заявки для описания различной информации могут использоваться термины «первая», «вторая», «третья» и т.д., информация не должна ограничиваться этими терминами. Эти термины используются только для того, чтобы отличать информацию одного типа друг от друга. Например, не выходя за рамки объема настоящей заявки, первая информация также может называться второй информацией, и аналогично - вторая информация также может называться первой информацией. Кроме того, в зависимости от контекста используемое слово «если» может интерпретироваться как «когда», или «когда», или «в ответ на определение».
Варианты осуществления настоящей заявки предлагают способ, аппарат и устройство кодирования и декодирования, которые могут включать следующие концепции.
Технология с внутрикадровым предсказанием и межкадровым предсказанием: внутрикадровое предсказание относится к предсказанию текущего пикселя с использованием пикселей в кодированном блоке текущего изображения на основании корреляции пространственной области видео, чтобы удалить избыточность в пространственной области видео; Межкадровое предсказание относится к предсказанию пикселей в текущем изображении с использованием пикселей в соседних кодированных изображениях на основании корреляции во временной области видео, поскольку последовательность видео имеет сильную корреляцию во временной области, чтобы эффективно удалить избыточность во временной области видео. Часть стандарта кодирования видео с межкадровым предсказанием в основном использует блочную технологию компенсации движения. Принцип состоит в нахождении в ранее кодированном изображении наиболее подходящего блока для каждого пиксельного блока текущего изображения. Этот процесс называется оценкой движения (ME, Motion Estimation).
Вектор движения (MV, Motion Vector): при межкадровом кодировании вектор движения может использоваться для представления относительного смещения между текущим блоком кодирования и наиболее сходным блоком в опорном изображении текущего блока кодирования. Каждый разделенный блок имеет соответствующий вектор движения, подлежащий передаче на сторону декодирования. Независимое кодирование и передача вектора движения каждого блока, особенно когда разделенный блок имеет малый размер, может потребовать использования значительного количества битов. Чтобы уменьшить число битов для кодирования вектора движения, может использоваться пространственная корреляция между соседними блоками изображения для предсказания вектора движения для текущего блока, подлежащего кодированию, на основании векторов движения соседних кодированных блоков, а затем разность предсказания может быть кодирована. Таким образом, можно эффективно уменьшить количество битов, представляющих вектор движения. В процессе кодирования вектора движения для текущего блока сначала используют векторы движения соседних кодированных блоков для предсказания вектора движения для текущего блока, а затем кодируется значение разности векторов движения (MVD, motion vector difference) между значением предсказания вектора движения (MVP, motion vector prediction) и истинным значением оценки вектора движения, что эффективно уменьшает количество битов кодирования MV.
Информация движения: поскольку вектор движения представляет собой смещение положения между текущим блоком изображения и определенным опорным блоком изображения, для точного получения информации, относящейся к блоку изображения, в дополнение к вектору движения также используется индексная информация изображения опорного кадра, чтобы указать, какое изображение опорного кадра следует использовать. В технологии кодирования видео, как правило, для текущего изображения сегмента можно установить список изображений опорного кадра, и индексная информация изображения опорного кадра указывает, какое изображение опорного кадра в списке изображений опорного кадра принято текущим блоком изображения. Кроме того, многие технологии кодирования также поддерживают множество списков опорных изображений. Следовательно, индексное значение также может использоваться для указания того, какой список опорных изображений используется, указанное индексное значение может называться опорным направлением. В технологии кодирования видео, информация, относящаяся к движению, такая как вектор движения, индекс опорного кадра, опорное направление и т.п., вместе может называться информацией движения.
Оптимизация соотношения скорость-искажение (Rate-Distortion Optimization): двумя показателями для оценки эффективности кодирования являются скорость кодового потока (code rate) и отношение пикового сигнала к шуму (PSNR, Peak Signal to Noise Ratio). Чем меньше битовый поток, тем выше степень сжатия, и чем больше PSNR, тем лучше качество восстановленного изображения. При выборе режима дискриминантная формула, по существу, представляет собой комплексную оценку двух показателей. Например, стоимость, соответствующая режиму: J(mode)=D+λ*R, где D представляет собой искажение, которое обычно можно измерить посредством показателя SSE. SSE относится к сумме среднего квадрата разницы между восстановленным блоком изображения и исходным изображением; λ - лагранжев множитель; и R - фактическое число битов, требующихся для кодирования блока изображения в этом режиме, включая сумму числа битов, требующихся для информации режима кодирования, информации движения, остатков и т.д.
Структура кодирования видео: как показано на фиг. 1, структура кодирования видео может использоваться для реализации обработки потока на стороне кодирования согласно варианту осуществления настоящей заявки. Кроме того, схема структуры декодирования видео аналогична изображенной на фиг. 1, что не будет здесь повторяться, и структура декодирования видео может использоваться для реализации последовательности обработки на стороне декодирования согласно варианту осуществления настоящей заявки. В частности, структура кодирования видео и структура декодирования видео могут включать в себя такие модули, как внутрикадровое предсказание, оценка движения/компенсация движения, буфер опорного изображения, внутриконтурная фильтрация, восстановление, преобразование, квантование, обратное преобразование, обратное квантование, энтропийный кодер и т.д. На стороне кодирования, последовательность обработки со стороны кодирования может быть реализована за счет взаимодействия между этими модулями. На стороне декодирования, последовательность обработки со стороны декодирования может быть реализована за счет взаимодействия между этими модулями.
Флаговое кодирование (Flag coding): при кодировании видео существует множество режимов, таких как режим слияния, режим геометрического разбиения с треугольным разбиением и т.д. Для определенного блока может быть принят определенный режим. Чтобы указать, какой режим принят, каждый блок должен быть помечен кодированием соответствующего флагового бита. Иначе говоря, значение флагового бита может быть определено на стороне кодирования, а затем флаговый бит может быть кодирован и передан на сторону декодирования. На стороне декодирования определяется, задействован ли соответствующий режим, путем анализа флагового бита.
Режим слияния (Merge mode): режим слияния может включать в себя, но не ограничивается этим, обычный режим слияния (regular merge mode), режим геометрического разбиения с треугольным разбиением (также известный как режим ТРМ), режим слияния с MVD (также известный как режим MMVD), режим слияния на основании подблоков (также известный как режим слияния SB) и комбинированный режим межкадрового слияния и внутрикадрового предсказания (также известный как режим CIIP). Если текущий блок задействует режим слияния, то может использоваться один из пяти вышеуказанных режимов слияния.
Режим пропуска (Skip mode): режим пропуска - это специальный режим слияния, который отличается от режима слияния тем, что режим пропуска не требует остатков кодирования. Если текущий блок принимает режим пропуска, то режим СИР отключается по умолчанию; однако обычный режим слияния, режим геометрического разбиения с треугольным разбиением, режим слияния с MVD и режим слияния на основании подблоков остаются применимыми.
Следует отметить, что значение предсказания может быть сгенерировано на основании обычного режима слияния, режима ТРМ, режима MMVD, режима слияния SB, режима CIIP и т.д. После того, как будет сгенерировано значение предсказания, для режима слияния может использоваться значение предсказания и остаточное значение для получения восстановленного значения; для режима пропуска остаточное значение отсутствует, и непосредственно используется значение предсказания для получения восстановленного значения.
Тип сегмента (Slice type): если текущий сегмент не может быть кодирован с обращением к информации других кадров, то текущий сегмент может быть l-сегментом; если текущему сегменту может быть кодирован с обращением к информации определенного другого кадра (но не более 1 кадра), то текущий сегмент может быть Р-сегментом; если текущий сегмент может быть кодирован с обращением к информации определенного (определенных) 1 сегмента или 2 сегментов, то текущий сегмент может быть В-сегментом.
Набор параметров последовательности (SPS, Sequence parameter set): в наборе параметров последовательности есть флаговые биты, которые определяют, разрешены ли определенные переключения инструментов во всей последовательности. Если флаговый бит равен 1, то инструмент, соответствующий флаговому биту, может быть задействован в последовательности видео; если флаговый бит равен 0, то инструмент, соответствующий флаговому биту, не может быть задействован в последовательности видео.
Контекстно-ориентированное адаптивное двоичное арифметическое кодирование (САВАС, Context-Based Adaptive Binary Arithmetic Coding): CABAC - это широко используемый способ энтропийного кодирования/декодирования, который включает в себя два режима, т.е. режим САВАС, в котором сохраняется и обновляется по меньшей мере одна контекстная модель, и режим обхода САВАС, в котором не сохраняется и не обновляется контекстная модель.
На данный момент текущий блок представляет собой прямоугольник, при этом края реального объекта могут не быть абсолютно горизонтальными и вертикальными. Для текущего блока на краю объекта может иметься два разных объекта (например, объект на переднем плане и фон) одновременно. В этом случае, если текущий блок предсказывается с использованием единственного режима предсказания, то возникают такие проблемы, как плохой результат предсказания, большие остатки кодирования и низкая производительность кодирования и т.п.
Для решения вышеуказанных задач, вариант осуществления настоящей заявки обеспечивает режим геометрического разбиения с треугольным разбиением, в котором текущий блок может быть разделен на два треугольных подблока, которые имеют различную целевую информацию движения, что повышает удобство аппаратной реализации и производительность кодирования. Способ кодирования и декодирования в вариантах осуществления настоящей заявки будет подробно раскрыт ниже применительно к нескольким конкретным вариантам осуществления.
Вариант 1 осуществления: на фиг. 2 представлена блок-схема способа кодирования и декодирования согласно одному из вариантов осуществления настоящей заявки. Способ кодирования и декодирования может применяться к стороне декодирования или к стороне кодирования и может включать в себя:
шаг 201: если характеристическая информация текущего блока удовлетворяет заданным условиям, то разделяют текущий блок на первый треугольный подблок и второй треугольный подблок; т.е. сторона декодирования/сторона кодирования может разделить текущий блок на два треугольных подблока.
В одном из примеров характеристическая информация может включать в себя, но не ограничивается этим, одно или более из следующего: режим информации движения, информация размера, тип сегмента, информация управления переключением уровня последовательности (sequence-level switch control information). Конечно, вышеперечисленное - это только несколько примеров, и здесь нет никаких ограничений.
Определяется, что режим информации движения соответствует заданным условиям, если характеристическая информация включает в себя режим информации движения, и режим информации движения соответствует по меньшей мере одному из следующих условий: режим информации движения для текущего блока - это режим слияния или режим пропуска; режим информации движения для текущего блока является режимом слияния или режимом пропуска, при этом режим информации движения для текущего блока не является каким-либо из других типов подрежима слияния или подрежима пропуска, кроме триангуляционного подрежима предсказания (triangle prediction sub-mode); режим информации движения для текущего блока является режимом слияния, при этом режим информации движения для текущего блока не является каким-либо из обычного подрежима слияния (также известного как обычный режим слияния), подрежима MMVD (режим слияния с MVD), подрежима слияния SB (режим слияния на основании подблоков), подрежима СИР (комбинированный режим межкадрового слияния и внутрикадрового предсказания); режим информации движения для текущего блока является режимом пропуска, при этом режим информации движения для текущего блока не является каким-либо из обычного подрежима слияния, подрежима MMVD, подрежима слияния SB. Конечно, это всего лишь несколько примеров, которыми настоящее изобретение не ограничивается. Приведенные выше примеры могут использоваться для определения того, является ли режим информации движения для текущего блока режимом геометрического разбиения с треугольным разбиением. Когда режим информации движения для текущего блока определен как режим геометрического разбиения с треугольным разбиением, определяется, что режим информации движения удовлетворяет заданным условиям. Для простоты описания в настоящей заявке режим ТРМ и триангуляционный подрежим предсказания могут использоваться взаимозаменяемо, обычный режим слияния и обычный подрежим слияния могут использоваться взаимозаменяемо, режим слияния с режимом MVD и подрежим MMVD могут использоваться взаимозаменяемо, режим слияния на основании подблоков и подрежим слияния SB могут использоваться взаимозаменяемо, и режим CIIP и подрежим CIIP могут использоваться взаимозаменяемо.
Определяют, что тип сегмента удовлетворяет заданным условиям, если характеристическая информация включает в себя тип сегмента, и тип сегмента соответствует по меньшей мере одному из следующих условий: тип сегмента указывает, что текущий сегмент, в котором находится текущий блок, является B-сегментом; тип сегмента указывает, что текущий сегмент, в котором находится текущий блок, допускает внутриблочное копирование.
Если характеристическая информация включает в себя информацию управления переключением уровня последовательности, и информация управления переключением уровня последовательности позволяет текущему блоку использовать режим геометрического разбиения с треугольным разбиением, то определяют, что информация управления переключением уровня последовательности удовлетворяет заданным условиям.
Если характеристическая информация включает в себя информацию размера, и информация размера включает в себя по меньшей мере одно из значения ширины, значения высоты и значения площади, когда по меньшей мере одно из значения ширины, значения высоты и площади значение в информации размера удовлетворяет соответствующему пороговому условию, то информация о размере соответствует заданным условиям. В одном из примеров определяется, что информация размера соответствует заданным условиям, когда информация размера соответствует по меньшей мере одному из следующих условий: 1. значение ширины текущего блока больше или равно первому пороговому значению, и значение ширины текущего блока меньше или равно второму пороговому значению; 2. значение высоты текущего блока больше или равно третьему пороговому значению, и значение высоты текущего блока меньше или равно четвертому пороговому значению; 3. значение площади текущего блока больше или равно пятому пороговому значению, и значение площади текущего блока меньше или равно шестому пороговому значению; 4. значение площади текущего блока больше или равно седьмому пороговому значению; 5. значение площади текущего блока меньше или равно восьмому пороговому значению; 6. значение ширины текущего блока меньше или равно девятому пороговому значению, а значение высоты текущего блока меньше или равно десятому пороговому значению. Конечно, это всего лишь несколько примеров, и не накладывает здесь никаких ограничений. В одном из примеров каждое из вышеуказанных пороговых условий может быть сконфигурировано на основании опыта, и на это не накладывается никаких ограничений.
В одном из примеров характеристическая информация включает в себя одно или более из следующего: режим информации движения, информацию размера, типе сегмента и информацию управления переключением уровня последовательности. Когда характеристическая информация включает в себя режим информации движения, при этом режим информации движения соответствует заданным условиям, это может указывать, что характеристическая информация соответствует заданным условиям; когда характеристическая информация включает в себя тип сегмента, при этом тип сегмента соответствует заданным условиям, это может указывать на то, что характеристическая информация соответствует заданным условиям, и так далее. Когда характеристическая информация включает в себя по меньшей мере два из следующего: режим информации движения, информация размера, тип сегмента и информация управления переключением уровня последовательности, то режим информации движения и тип сегмента берутся в качестве примеров, а когда режим информации движения соответствует заданным условиям и тип сегмента соответствует заданным условиям, то это может указывать на то, что характеристическая информация соответствует заданным условиям и т.д.
В одном из примеров по меньшей мере одно заданное условие для каждого типа характеристической информации (например, режим информации движения, информация размера, тип сегмента, информация управления переключением уровня последовательности и т.д.) можно произвольно объединить по меньшей мере с одним заданным условием другого типа характеристической информации, формируя конкретные условия текущего блока, на этот комбинированный режим не накладываются ограничения и можно установить произвольно.
В одном из примеров если способ кодирования и декодирования применяется к стороне декодирования, то сторона декодирования разделяет текущий блок на первый треугольный подблок и второй треугольный подблок, что может включать в себя, но не ограничивается этим: получение первой информации индикации из кодированного битового потока, причем первая информация индикации используется для указания информации разделения для треугольного подблока; если информация разделения для треугольного подблока относится к способу разделения (leading diagonal division) по главной диагонали, то текущий блок разделяют на первый треугольный подблок и второй треугольный подблок в соответствии с главной диагональю текущего блока; если информация разделения для треугольного подблока относится к способу разделения по субдиагонали (sub diagonal division), то текущий блок делится на первый треугольный подблок и второй треугольный подблок в соответствии с субдиагональю текущего блока.
В одном из примеров первая информация индикации может быть получена путем двоичного арифметического декодирования на основании обхода (bypass-based binary arithmetic decoding); или первая информация индикации может быть получена путем контекстно-ориентированного адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели.
В одном из примеров САВАС включает в себя два режима: режим САВАС, в котором сохраняется и обновляется по меньшей мере одна контекстная модель (т.е. адаптивное двоичное арифметическое кодирование контекста), и режим обхода САВАС, в котором не сохраняется и не обновляется контекстная модель (т.е. двоичное арифметическое кодирование в режиме обхода). Следовательно, двоичная арифметика на основании обхода является одним типом режима САВАС, тогда как контекстно-ориентированная адаптивная двоичная арифметика на основании контекстной модели является другим типом режима САВАС.
На шаге 202, при построении списка информации движения для текущего блока, указанный список информации движения включает в себя множество элементов кандидатной информации движения.
В одном из примеров способ построения списка информации движения в обычном режиме слияния можно повторно использовать для построения списка информации движения для текущего блока. Например, сначала определяется способ построения списка информации движения в обычном режиме слияния, а затем создается список информации движения для текущего блока на основании способа построения списка информации движения в обычном режиме слияния, при этом список информации движения включает в себя множество элементов кандидатной информации движения.
На шаге 203 получают первую целевую информацию движения для первого треугольного подблока и вторую целевую информацию движения для второго треугольного подблока из списка информации движения; в одном из примеров первая целевая информация движения и вторая целевая информация движения могут отличаться друг от друга.
Если способ кодирования и декодирования применяется к стороне декодирования, то сторона декодирования получает первую целевую информацию движения для первого треугольного подблока и вторую целевую информацию движения для второго треугольного подблока из списка информации движения, что может включать в себя, но не ограничивается этим, следующее: сторона декодирования получает вторую информацию индикации из кодированного битового потока, при этом вторая информация индикации используется для указания первого индексного значения первой целевой информации движения в списке информации движения, второго индексного значения второй целевой информации движения в списке информации движения. На основании второй информации индикации сторона декодирования получает кандидатную информацию, соответствующую первому индексному значению, из списка информации движения, и определяет кандидатную информацию, соответствующую первому индексному значению, в качестве первой целевой информацию движения для первого треугольного подблока; на основании второй информации индикации сторона декодирования получает кандидатную информацию, соответствующую второму индексному значению, из списка информации движения, и определяет кандидатную информацию, соответствующую второму индексному значению, в качестве второй целевой информации движения для второго треугольного подблока.
В одном из примеров первое индексное значение получают посредством двоичного арифметического декодирования на основании обхода; или первое индексное значение получают посредством контекстно-ориентированного адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели. Второе индексное значение получают посредством двоичного арифметического декодирования на основании обхода; или второе индексное значение получают посредством контекстно-ориентированного адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели.
В одном из примеров первое индексное значение включает в себя М1 двоичных разрядов, причем N1 двоичных разрядов в указанных М1 двоичных разрядах получают посредством контекстно-ориентированного адаптивного двоичного арифметического декодирования, которое выполняется на основании контекстной модели, остальные (M1-N1) двоичных разрядов в М1 двоичных разрядах получают посредством двоичного арифметического декодирования на основании обхода; М1 - положительное целое число, большее или равное 1, N1 -положительное целое число, большее или равное 1, причем М1 больше или равно N1. Например, первое индексное значение включает в себя четыре двоичных разряда, первый двоичный разряд получен посредством контекстно-адаптивного двоичного арифметического декодирования, которое выполняется на основании контекстной модели, второй, третий и четвертый двоичные разряды получены посредством двоичного арифметического декодирования на основании обхода. Например, первое индексное значение включает в себя два двоичных разряда, при этом первый двоичный разряд получен посредством контекстно-адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели.
В одном из примеров второе индексное значение включает в себя М2 двоичных разрядов, причем N2 двоичных разрядов в указанных М2 двоичных разрядах получают посредством контекстно-ориентированного адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели, остальные (M2-N2) двоичных разрядов в М2 двоичных разрядах получают посредством двоичного арифметического декодирования на основании обхода; М2 - положительное целое число, большее или равное 1, N2 - положительное целое число, большее или равное 1, причем М2 больше или равно N2. Например, второе индексное значение включает в себя четыре двоичных разряда, первый двоичный разряд получен посредством контекстно-адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели, второй, третий и четвертый двоичные разряды получены посредством двоичного арифметического декодирования на основании обхода. Например, второе индексное значение включает в себя один двоичный разряд, при этом первый двоичный разряд получен посредством контекстно-ориентированного адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели.
В одном из примеров контекстная модель, соответствующая первому индексному значению, аналогична контекстной модели, соответствующей второму индексному значению. Альтернативно, контекстная модель, соответствующая первому индексному значению, отличается от контекстной модели, соответствующей второму индексному значению. Альтернативно, контекстная модель, соответствующая первому индексному значению и первой информации разделения, аналогична контекстной модели, соответствующей второму индексному значению и второй информации разделения; контекстная модель, соответствующая первому индексному значению и второй информации разделения, аналогична контекстной модели, соответствующей второму индексному значению и второй информации разделения; контекстная модель, соответствующая первому индексному значению и первой информации разделения, отличается от контекстной модели, соответствующей первому индексному значению и второй информации разделения. Альтернативно, контекстная модель, соответствующая первому индексному значению и первой информации разделения, контекстная модель, соответствующая второму индексному значению и информации первого разделения, контекстная модель, соответствующая первому индексному значению и второй информации разделения, и контекстная модель, соответствующая второму индексному значению, и второй информации разделения отличаются друг от друга. Первая информация разделения указывает, что информация разделения для треугольных подблоков относится к способу разделения по главной диагонали; вторая информация разделения указывает, что информация разделения для треугольных подблоков относится к способу разделения по субдиагонали.
В одном из примеров получение кандидатной информации движения, соответствующей первому индексному значению, из списка информации движения, и определение полученной кандидатной информации движения, соответствующей первому индексному значению, в качестве первой целевой информации движения для первого треугольного подблока может включать в себя, не ограничиваясь этим, следующее: если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, включает в себя однонаправленную информацию движения, соответствующую списку list0, то однонаправленная информация движения, соответствующая list0, определяется как первая целевая информация движения для первого треугольного подблока; если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, не включает в себя однонаправленную информацию движения, соответствующую list0, то однонаправленная информация движения, соответствующая списку list1, определяется как первая целевая информация движения для первого треугольного подблока; если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, включает в себя однонаправленную информацию движения, соответствующую list1, то однонаправленная информация движения, соответствующая list1, определяется как первая целевая информация движения для первого треугольного подблока; если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, не включает в себя однонаправленную информацию движения, соответствующую list1, то однонаправленная информация движения, соответствующая listO, определяется как первая целевая информация движения для первого треугольного подблока.
В одном из примеров получение кандидатной информации движения, соответствующей второму индексному значению из списка информации движения, и определение полученной кандидатной информации движения, соответствующей второму индексному значению, в качестве второй целевой информации движения для второго треугольного подблока может включать в себя, не ограничиваясь этим, следующее: если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, включает в себя однонаправленную информацию движения, соответствующую списку list0, то однонаправленная информация движения, соответствующая list0, определяется как вторая целевая информация движения для второго треугольного подблока; если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, не включает в себя однонаправленную информацию движения, соответствующую list0, то однонаправленная информация движения, соответствующая списку list1, определяется как вторая целевая информация движения для второго треугольного подблока; если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, включает в себя однонаправленную информацию движения, соответствующую list1, то однонаправленная информация движения, соответствующая list1, определяется как вторая целевая информация движения для второго треугольного подблока; если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, не включает в себя однонаправленную информацию движения, соответствующую list1, то однонаправленная информация движения, соответствующая list0, определяется как вторая целевая информация движения для второго треугольного подблока.
В одном из примеров получение кандидатной информации движения, соответствующей первому индексному значению из списка информации движения, и определение полученной кандидатной информации движения, соответствующей первому индексному значению, в качестве первой целевой информации движения для первого треугольного подблока может включать в себя, не ограничиваясь этим, следующее: если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, включает в себя однонаправленную информацию движения, соответствующую списку list0, то однонаправленная информация движения, соответствующая list0, определяется как первая целевая информация движения для первого треугольного подблока; если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, не включает в себя однонаправленную информацию движения, соответствующую list0, то однонаправленная информация движения, соответствующая list1, определяется как первая целевая информация движения для первого треугольного подблока; если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, включает в себя однонаправленную информацию движения, соответствующую списку list1, то однонаправленная информация движения, соответствующая list1, определяется как первая целевая информация движения для первого треугольного подблока; если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, не включает в себя однонаправленную информацию движения, соответствующую list1, то однонаправленная информация движения, соответствующая list0, определяется как первая целевая информация движения для первого треугольного подблока.
В одном из примеров, получение кандидатной информации движения, соответствующей второму индексному значению из списка информации движения, и определение полученной кандидатной информации движения, соответствующей второму индексному значению, в качестве второй целевой информации движения для второго треугольного подблока может включать в себя, не ограничиваясь этим, следующее: если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, включает в себя однонаправленную информацию движения, соответствующую списку list0, то однонаправленная информация движения, соответствующая list0, определяется как вторая целевая информация движения для второго треугольного подблока; если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, не включает в себя однонаправленную информацию движения, соответствующую list0, то однонаправленная информация движения, соответствующая списку list1, определяется как вторая целевая информация движения для второго треугольного подблока; если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, включает в себя однонаправленную информацию движения, соответствующую list1, то однонаправленная информация движения, соответствующая list1, определяется как вторая целевая информация движения для второго треугольного подблока; если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, не включает в себя однонаправленную информацию движения, соответствующую list1, то однонаправленная информация движения, соответствующая list0, определяется как вторая целевая информация движения для второго треугольного подблока.
В приведенных выше примерах, когда тип сегмента для текущего сегмента, где находится текущий блок, является В-сегментом, указанный В-сегмент допускает существование межкадровых блоков, указывающих на множество списков (списки опорных кадров) одновременно, например, блок межкадрового предсказания, указывающий на list0, и блок межкадрового предсказания, указывающий на list1. Следовательно, когда текущий сегмент, где находится текущий сегмент, является В-сегментом, конфигурация опорного кадра текущего сегмента, где находится текущий блок, может включать в себя два списка опорных кадров, которыми могут быть списки list0 и list1. Кандидатная информация движения может быть однонаправленной информацией движения, при этом однонаправленная информация движения является однонаправленной информацией движения, соответствующей list0, или однонаправленной информацией движения, соответствующей list1; или кандидатная информация движения может быть двунаправленной информацией движения, при этом двунаправленная информация движения включает в себя однонаправленную информацию движения, соответствующую list0, и однонаправленную информацию движения, соответствующую list1.
В одном из примеров сторона декодирования может также получить первый кандидатный набор и второй кандидатный набор. Первый кандидатный набор включает в себя элементы кандидатной информации движения из списка информации движения, второй кандидатный набор включает в себя элементы кандидатной информации движения из списка информации движения, при этом кандидатная информация движения в первом кандидатном наборе не полностью аналогична кандидатной информации движения во втором кандидатном наборе. Затем сторона декодирования получает кандидатную информацию движения, соответствующую первому индексному значению, из первого кандидатного набора, и определяет полученную кандидатную информацию движения, соответствующую первому индексному значению, как первую целевую информацию движения для первого треугольного подблока. Сторона декодирования получает кандидатную информацию движения, соответствующую второму индексному значению, из второго кандидатного набора, и определяет полученную кандидатную информацию движения, соответствующую второму индексному значению, как вторую целевую информацию движения для второго треугольного подблока.
На шаге 204 выполняют компенсацию движения для первого треугольного подблока на основании первой целевой информации движения, получая значение предсказания для первого треугольного подблока; выполняют компенсацию движения для второго треугольного подблока на основании второй целевой информации движения, получая значение предсказания для второго треугольного подблока.
В одном из примеров после получения первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока, сохраняют первую целевую информацию движения для подблока в первом треугольном подблоке, по которому выполняют компенсацию с невзвешенным предсказанием; сохраняют вторую целевую информацию движения для подблока во втором треугольном подблоке, по которому выполняют компенсацию с невзвешенным предсказанием; сохраняют первую целевую информацию движения, вторую целевую информацию движения или двунаправленную информацию движения для подблока, по которому выполняют компенсацию с взвешенным предсказанием.
Сохранение первой целевой информации движения, второй целевой информации движения или двунаправленной информации движения для подблока, по которому выполняют компенсация с взвешенным предсказанием, может включать в себя, но не ограничивается этим, что-либо из следующего: сохранение первой целевой информация движения для подблока, сохранение второй целевой информации движения для подблока, сохранение первой целевой информации движения или второй целевой информации движения для подблока в соответствии с положением подблока, сохранение первой целевой информация движения или второй целевой информация движения для подблока в соответствии с направлением разделения текущего блока, или сохранение первой целевой информации движения или второй целевой информации движения для подблока в соответствии с положением подблока и направление разделения текущего блока.
Сохранение первой целевой информации движения, второй целевой информации движения или двунаправленной информации движения для подблока, по которому выполняется компенсация с взвешенным предсказанием, может включать в себя, не ограничиваясь этим, следующее: если первая целевая информация движения и вторая целевая информация движения получены из разных списков, то первую целевую информацию движения и вторую целевую информацию движения объединяют в двунаправленную информацию движения, и сохраняют двунаправленную информацию движения для подблока. Альтернативно, если первая целевая информация движения и вторая целевая информация движения получены из одного списка, то сохраняют первую целевую информацию движения для подблока, или сохраняют вторую целевую информацию движения для подблока.
В одном из примеров, если первая целевая информация движения и вторая целевая информация движения получены из одного списка, то сохранение первой целевой информации движения для подблока или сохранение второй целевой информации движения для подблока может включать в себя, не ограничиваясь этим, что-либо из следующего: сохранение первой целевой информации движения для подблока; сохранение второй целевой информации движения для подблока; сохранение первой целевой информации движения или второй целевой информации движения для подблока в соответствии с положением подблока; сохранение первой целевой информации движения или второй целевой информации движения для подблока в соответствии с направлением разделения текущего блока; сохранение первой целевой информации движения или второй целевой информации движения для подблока в соответствии с положением подблока и направлением разделения текущего блока; сохранение среднего значения первой целевой информации движения и второй целевой информации движения для подблока; или сохранение первой целевой информации движения или второй целевой информации движения для подблока на основании информации размера для текущего блока.
Из приведенных выше решений можно увидеть, что в данном варианте осуществления настоящей заявки, если характеристическая информация для текущего блока соответствует заданным условиям, то текущий блок разделен на первый треугольный подблок и второй треугольный подблок; первую целевую информацию движения для первого треугольного подблока и вторую целевую информацию движения для второго треугольного подблока получают из списка информации движения; на основании первой целевой информации движения выполняют компенсацию движения по первому треугольному подблоку, получая значение предсказания для первого треугольного подблока; на основании второй целевой информации движения выполняют компенсацию движения по второму треугольному подблоку, получая значение предсказания для второго треугольного подблока. Вышеупомянутый способ может повысить точность предсказания, повысить производительность предсказания, повысить производительность кодирования и уменьшить остатки кодирования.
Вариант 2 осуществления: аналогично концепции изобретения, раскрытой выше, вариант осуществления настоящей заявки обеспечивает способ кодирования, который может применяться на стороне кодирования. На фиг. 3 представлена блок-схема данного способа. Способ может включать в себя следующее:
На шаге 301, определение, стороной кодирования, соответствует ли характеристическая информация текущего блока заданным условиям; если да, то задействуют режим геометрического разбиения с треугольным разбиением и выполняют шаг 302; если нет, то не задействуют режим геометрического разбиения с треугольным разбиением, и далее не реализуют техническое решение согласно этому варианту осуществления.
На шаге 302, построение, стороной кодирования, списка информации движения для текущего блока, причем список информации движения включает в себя множество элементов кандидатной информации движения.
На шаге 303, разделение, стороной кодирования, текущего блока на первый треугольный подблок и второй треугольный подблок. Например, текущий блок разделяют на первый треугольный подблок и второй треугольный подблок в соответствии с главной диагональю (угол разделения 45 градусов от горизонтального правого направления); или текущий блок разделяют на первый треугольный подблок и второй треугольный подблок в соответствии с субдиагональю (угол разделения 135 градусов от горизонтального правого направления).
На шаге 304, получение, стороной кодирования, первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения; причем первая целевая информация движения и вторая целевая информация движения могут отличаться друг от друга.
На шаге 305, выполнение, стороной кодирования, компенсации движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; выполнение компенсации движения по второму треугольному подблоку на основании второй целевой информации движения для получения значения предсказания для второго треугольного подблока. Значение предсказания для первого треугольного подблока и значение предсказания для второго треугольного подблока являются значением предсказания для текущего блока.
На шаге 306, сохранение, стороной кодирования, информации движения для текущего блока для ее использования в качестве ссылки кодирования (encoding reference) для последующих блоков.
Вариант 3 осуществления: аналогично концепции изобретения, раскрытой выше, вариант осуществления настоящей заявки обеспечивает способ декодирования, применимый к стороне декодирования. На фиг. 4 представлена блок-схема данного способа. Способ может включать в себя следующее:
На шаге 401, определение, стороной декодирования, соответствует ли характеристическая информация текущего блока заданным условиям; если да, то задействуют режим геометрического разбиения с треугольным разбиением и выполняют шаг 402; если нет, то не задействуют режим геометрического разбиения с треугольным разбиением, и далее не реализуют техническое решение согласно этому варианту осуществления.
На шаге 402, создание, стороной кодирования, списка информации движения для текущего блока, причем список информации движения включает в себя множество элементов кандидатной информации движения.
На шаге 403, разделение, стороной кодирования, текущего блока на первый треугольный подблок и второй треугольный подблок. Например, текущий блок разделяют на первый треугольный подблок и второй треугольный подблок в соответствии с главной диагональю (угол разделения 45 градусов от горизонтального правого направления); или текущий блок разделяют на первый треугольный подблок и второй треугольный подблок в соответствии с субдиагональю (угол разделения 135 градусов от горизонтального правого направления).
На шаге 404, получение, стороной кодирования, первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения; причем первая целевая информация движения и вторая целевая информация движения могут отличаться друг от друга.
На шаге 405, выполнение, стороной кодирования, компенсации движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; выполнение компенсации движения по второму треугольному подблоку на основании второй целевой информации движения для получения значения предсказания второго треугольного подблока. Значение предсказания для первого треугольного подблока и значение предсказания для второго треугольного подблока являются значением предсказания для текущего блока.
На шаге 406, сохранение, стороной кодирования, информации движения для текущего блока для ее использования в качестве ссылки кодирования для последующих блоков.
Вариант 4 осуществления: на шагах 301 и 401 сторона кодирования/сторона декодирования определяет, удовлетворяет ли характеристическая информация текущего блока заданным условиям. Если да, то может быть задействован режим геометрического разбиения с треугольным разбиением, т.е. текущий блок разделяют на первый треугольный подблок и второй треугольный подблок; если нет, то режим геометрического разбиения с треугольным разбиением не будет задействован. В одном из примеров характеристическая информация может включать в себя, но не ограничивается этим, одно или более из следующего: режим информации движения, информацию размера, тип сегмента, информацию управления переключением уровня последовательности.
Ниже раскрывается, что характеристическая информация текущего блока соответствует определенным условиям в сочетании с несколькими заданными сценами применения.
Сцена 1 применения: когда характеристическая информация соответствует следующему условию, определяют, что характеристическая информация текущего блока удовлетворяет заданным условиям:
режим информации движения для текущего блока является режимом слияния или режимом пропуска, при этом режим информации движения для текущего блока не является чем-либо из других типов подрежимов слияния или подрежимов пропуска, кроме триангуляционного подрежима предсказания.
Сцена 2 применения: когда характеристическая информация одновременно удовлетворяет по меньшей мере следующим условиям, определяют, что характеристическая информация текущего блока удовлетворяет заданным условиям:
информация управления переключением уровня последовательности позволяет текущему блоку использовать режим геометрического разбиения с треугольным разбиением, т.е. управление уровнем последовательности (sequence-level control) позволяет задействовать режим геометрического разбиения с треугольным разбиением; т.е. переключение управления уровнем последовательности включено, что указывает на то, что текущему блоку разрешено использовать режим геометрического разбиения с треугольным разбиением;
текущий сегмент, в котором находится текущий блок, является В-сегментом, т.е. текущий сегмент допускает существование двух списков опорных кадров;
площадь (ширина*высота) текущего блока больше или равна N*N, при этом N может равняться 8;
режимом информации движения для текущего блока является режим слияния или режим пропуска.
Сцена 3 применения: когда характеристическая информация одновременно удовлетворяет по меньшей мере следующим условиям, определяют, что характеристическая информация текущего блока удовлетворяет заданным условиям:
информация управления переключением уровня последовательности позволяет текущему блоку использовать режим геометрического разбиения с треугольным разбиением, т.е. управление уровнем последовательности позволяет задействовать режим геометрического разбиения с треугольным разбиением; т.е. переключение управления уровнем последовательности включено, что указывает на то, что текущему блоку разрешено использовать режим геометрического разбиения с треугольным разбиением;
текущий сегмент, в котором находится текущий блок, является В-сегментом, т.е. текущий сегмент допускает существование двух списков опорных кадров;
площадь (ширина*высота) текущего блока больше или равна N*N, при этом N может равняться 8;
режим информации движения для текущего блока является режимом слияния, при этом режим информации движения для текущего блока не является чем-либо из обычного подрежима слияния, подрежима MMVD, подрежима слияния SB, подрежима CIIP.
режим информации движения для текущего блока является режимом пропуска, при этом режим информации движения для текущего блока не является чем-либо из обычного подрежима слияния, подрежима MMVD или подрежима слияния SB.
Сцена 4 применения: когда характеристическая информация одновременно удовлетворяет по меньшей мере следующим условиям, определяют, что характеристическая информация текущего блока удовлетворяет заданным условиям:
информация управления переключением уровня последовательности позволяет текущему блоку использовать режим геометрического разбиения с треугольным разбиением, т.е. управление уровнем последовательности позволяет задействовать режим геометрического разбиения с треугольным разбиением; т.е. переключение управления уровнем последовательности включено, что указывает на то, что текущему блоку разрешено использовать режим геометрического разбиения с треугольным разбиением;
текущий сегмент, в котором находится текущий блок, является В-сегментом, т.е. текущий сегмент допускает существование двух списков опорных кадров;
режим информации движения для текущего блока является режимом слияния или режимом пропуска;
площадь (ширина*высота) текущего блока больше или равна N*N, при этом N может равняться 8;
ширина текущего блока меньше или равна М, высота текущего блока меньше или равна М, при этом М может равняться 128.
Сцена 5 применения: когда характеристическая информация одновременно удовлетворяет по меньшей мере следующим условиям, определяется, что характеристическая информация текущего блока удовлетворяет заданным условиям:
информация управления переключением уровня последовательности позволяет текущему блоку использовать режим геометрического разбиения с треугольным разбиением, т.е. управление уровнем последовательности позволяет задействовать режим геометрического разбиения с треугольным разбиением; т.е. переключение управления уровнем последовательности включено, что указывает на то, что текущему блоку разрешено использовать режим геометрического разбиения с треугольным разбиением;
текущий сегмент, в котором находится текущий блок, является В-сегментом, т.е. текущий сегмент допускает существование двух списков опорных кадров;
режим информации движения для текущего блока является режимом слияния или режимом пропуска;
площадь (ширина*высота) текущего блока больше или равна N*N, при этом N может равняться 8;
площадь (ширина*высота) текущего блока больше или равна М*М, при этом М может равняться 128.
Сцена 6 применения: когда характеристическая информация одновременно удовлетворяет по меньшей мере следующим условиям, определяют, что характеристическая информация текущего блока удовлетворяет заданным условиям:
информация управления переключением уровня последовательности позволяет текущему блоку использовать режим геометрического разбиения с треугольным разбиением, т.е. управление уровнем последовательности позволяет задействовать режим геометрического разбиения с треугольным разбиением; т.е. переключение управления уровнем последовательности включено, что указывает на то, что текущему блоку разрешено использовать режим геометрического разбиения с треугольным разбиением;
текущий сегмент, в котором находится текущий блок, является В-сегментом, т.е. текущий сегмент допускает существование двух списков опорных кадров;
режим информации движения для текущего блока является режимом слияния или режимом пропуска;
значение ширины текущего блока находится в диапазоне [Wmin, Wmax]; в одном из примеров и Wmin, и Wmax может быть положительной целой степенью 2, например, Wmin равно 4, a Wmax равно 128;
значение высоты текущего блока находится в диапазоне [Hmin, Hmax]; в одном из примеров и Hmin, и Hmax может быть положительной целой степенью 2, например, Hmin равно 4, a Hmax равно 128;
значение площади текущего блока находится в диапазоне [Smin, Smax]; в одном из примеров и Smin, и Smax может быть положительной целой степенью 2, например, Smin равно 64, a Smax равно 128*128=16384.
В вышеприведенных примерах [а, b ] означает больше или равно а и меньше или равно b.
Сцена 7 применения: для любой из сцен 2-6 применения «текущий сегмент, в котором находится текущий блок, является В-сегментом», можно изменить на «текущий сегмент, в котором находится текущий блок, допускает внутриблочное копирование, при этом другие ограничения остаются без изменений». Текущий сегмент, в котором находится текущий блок, допускающий внутриблочное копирование, означает, что текущий блок может искать аналогичные блоки в декодированном восстановленном блоке текущего сегмента (а не в декодированных восстановленных блоках других кадров). При этом условии текущий сегмент, в котором находится текущий блок, не обязательно должен быть В-сегментом.
Сцена 8 применения: если и значение высоты, и значение ширины текущего блока равны CTU_Size, то режим геометрического разбиения с треугольным разбиением не задействован; т.е. характеристическая информация не удовлетворяет заданным условиям. Если значение высоты текущего блока меньше CTU_Size, или значение ширины текущего блока меньше CTU_Size, то любая из сцен 1-7 применения может быть принята для определения, следует ли задействовать режим геометрического разбиения с треугольным разбиением.
В одном из примеров CTU_Size относится к максимальному размеру, допускаемому текущим блоком, который может составлять 128 или другие значения.
Сцена 9 применения: если и значение высоты, и значение ширины текущего блока равны CTU_Size, то режим геометрического разбиения с треугольным разбиением не задействован; т.е. характеристическая информация не соответствует заданным условиям. Если значение высоты текущего блока меньше CTU_Size, и значение ширины текущего блока меньше CTU_Size, то любая из сцен 1-7 применения может быть принята для определения, следует ли задействовать режим геометрического разбиения с треугольным разбиением.
В одном из примеров CTU_Size относится к максимальному размеру, допускаемому текущим блоком, который может составлять 128 или другие значения.
Вариант 5 осуществления: на шагах 302 и 402 сторона кодирования/сторона декодирования создает список информации движения для текущего блока, причем список информации движения может включать в себя множество элементов кандидатной информации движения. Процесс построения списка информации движения раскрыт ниже.
Метод 1: кодирование/декодирование может создавать список информации движения, при этом список информации движения может включать в себя множество элементов кандидатной информации движения, например 5 элементов кандидатной информации движения, и это число не ограничено. Например, получают кандидатный блок, соответствующий текущему блоку, информацию движения для кандидатного блока добавляют в список информации движения, при этом каждая информация движения в списке информации движения может называться кандидатной информацией движения.
Кандидатный блок, соответствующий текущему блоку, показан на фиг.5А. Блоки в этих 7 положениях можно рассматривать как кандидатные блоки, соответствующие текущему блоку. На фиг. 5А блок 1, блок 2, блок 3, блок 4 и блок 5 являются кандидатными блоками в текущем сегменте, а блок 6 и блок 7 являются кандидатными блоками в других кадрах (т.е. блоками, соответствующими временной области). Сначала, доступная информация движения для этих 7 положений собирается и сортируется в следующем порядке: однонаправленная информация движения, информация движения L0 с двунаправленным предсказанием, информация движения L1 с двунаправленным предсказанием, среднее значение информации движения L0 и информации движения L1 с двунаправленным предсказанием. Затем в список информации движения вносят верхние 5 элементов информации движения. Когда число элементов информации движения, добавленных в список информации движения, меньше 5, для внесения может использоваться нулевой вектор движения. В вышеприведенном процессе внесения также может выполняться обработка проверки дублирования, чтобы избежать повторения информации движения в списке информации движения.
Метод 2: сторона кодирования/сторона декодирования может использовать способ построения списка информации движения в обычном режиме слияния, чтобы создать список информации движения для текущего блока. Например, определяют способ построения списка информации движения в обычном режиме слияния, а затем создают список информации движения для текущего блока на основании способа построения списка информации движения в обычном режиме слияния, при этом список информации движения включает в себя множество элементов кандидатной информации движения. Т.е. способ построения списка информации движения в режиме геометрического разбиения с треугольным разбиением является таким же, как способ построения списка информации движения в обычном режиме слияния.
Например, способ построения списка информации движения в обычном режиме слияния показан на фиг. 5В. Кандидатные блоки, соответствующие текущему блоку, включают в себя блок А1, блок А0, блок В0, блок В1, блок В2, для этих 5 позиций собирают доступную информацию движения, собранную доступную информацию движения сортируют в порядке блока А1, блока А0, блока В0, блока В1, блока В2, и в список информации движения вносят множество элементов информации движения (например, 5 элементов информации движения), помещенных в высокие ранги. Способ построения списка информации движения в режиме геометрического разбиения с треугольным разбиением представляет собой следующее: собирают доступную информацию движения для этих 5 позиций, собранную доступную информацию движения сортируется в порядке блока А1, блока А0, блока В0, блока В1, блока В2, и в список информации движения вносят множество элементов информации движения (например, 5 элементов частями информации движения), помещенных в высокие ранги. Конечно, вышеприведенный способ является только примером построения списка информации движения в обычном режима слияния, и на это не накладываются никакие ограничения.
Вариант осуществления 6: на шагах 303 и 403 сторона кодирования/сторона декодирования делит текущий блок на первый треугольный подблок и второй треугольный подблок. Например, как показано на фиг. 6А текущий блок может быть разделен на первый треугольный подблок и второй треугольный подблок в соответствии с главной диагональю (угол разделения 45 градусов от горизонтального правого направления); или, как показано на фиг. 6В, текущий блок может быть разделен на первый треугольный подблок и второй треугольный подблок в соответствии с субдиагональю (угол разделения 135 градусов от горизонтального правого направления).
Для разделения текущего блока на первый треугольный подблок и второй треугольный подблок, можно использовать следующие методы:
Метод 1: сторона кодирования использует способ с главной диагональю для разделения текущего блока по умолчанию в соответствии с соглашением, а сторона декодирования использует способ с главной диагональю для разделения текущего блока по умолчанию в соответствии с соглашением. Исходя из этого, как показано на фиг. 6А, сторона кодирования может разделить текущий блок на первый треугольный подблок и второй треугольный подблок согласно способу с главной диагональю (угол разделения 45 градусов от горизонтального правого направления), при этом сторона декодирования может разделить текущий блок на первый треугольный подблок и второй треугольный подблок способом с главной диагональю.
Метод 2: по умолчанию в соответствии с соглашением сторона кодирования использует способ с субдиагональю для разделения текущего блока, а сторона декодирования использует способ с субдиагональю для разделения текущего блока. Исходя из этого, как показано на фиг. 6В, сторона кодирования может разделить текущий блок на первый треугольный подблок и второй треугольный подблок согласно способу с субдиагональю (угол разделения 135 градусов от горизонтального правого направления), при этом сторона декодирования может разделить текущий блок на первый треугольный подблок и второй треугольный подблок способом с субдиагональю.
Метод 3: сторона кодирования определяет стоимость 1 искажения скорости, соответствующую способу разделения по главной диагонали, и стоимость 2 искажения скорости, соответствующую способу разделения по субдиагонали. Способ определения стоимости 1 искажения скорости и стоимости 2 искажения скорости в настоящем документе не ограничивается. Если стоимость 1 искажения скорости меньше стоимости 2 искажения скорости, как показано на фиг. 6А, то сторона кодирования может разделить текущий блок на первый треугольный подблок и второй треугольный подблок способом с главной диагональю. Альтернативно, если стоимость 1 искажения скорости больше, чем стоимость 2 искажения скорости, как показано на фиг. 6В, то сторона кодирования может разделить текущий блок на первый треугольный подблок и второй треугольный подблок способом с субдиагональю. Конечно, сторона кодирования также может принять другие стратегии или решения для разделения на треугольные подблоки способом с главной диагональю или способом с субдиагональю, и на это не накладываются никакие ограничения.
Когда сторона кодирования отправляет кодированный битовый поток на сторону декодирования, кодированный битовый поток может включать в себя первую информацию индикации, используемую для указания информации разделения для треугольных подблоков, например, способ разделения по главной диагонали или способ разделения по субдиагонали.
Например, если сторона кодирования делит текущий блок на первый треугольный подблок и второй треугольный подблок способом с главной диагональю, то информация разделения для треугольного подблока может быть способом разделения по главной диагонали. Если сторона кодирования делит текущий блок на первый треугольный подблок и второй треугольный подблок способом с субдиагональю, то информация разделения для треугольного подблока может быть способом разделения по субдиагонали.
После приема кодированного битового потока сторона декодирования может получить из кодированного битового потока первую информацию индикации, которая используется для указания информации разделения треугольных подблоков, например, способ разделения по главной диагонали и способ разделения по субдиагонали. Если информация разделения для треугольного подблока является способом разделения по главной диагонали, как показано на фиг. 6А, то сторона декодирования делит текущий блок на первый треугольный подблок и второй треугольный подблок в соответствии с главной диагональю текущего блока; если информация разделения подблоков представляет собой способ разделения по субдиагонали, как показано на фиг. 6В, то сторона декодирования делит текущий блок на первый треугольный подблок и второй треугольный подблок в соответствии с субдиагональю текущего блока.
Конечно, вышеприведенные три метода реализации являются только примерами, и на метод разделения треугольных подблоков не накладывается никаких ограничений.
Вариант 7 осуществления: в вышеприведенном варианте осуществления 6, когда сторона кодирования отправляет кодированный битовый поток на сторону декодирования, кодированный битовый поток может включать в себя первую информацию индикации, используемую для указания информации разделения для треугольного подблока. Например, один флаговый бит указывает информацию разделения для треугольного подблока. Например, когда флаговый бит является первым идентификатором 0, он указывает, что информация разделения для треугольного подблока является способом разделения по главной диагонали. Когда флаговый бит является вторым идентификатором 1, он указывает, что информация разделения для треугольного подблока является способом разделения по субдиагонали.
В одном из примеров для информации разделения для треугольного подблока сторона кодирования может использовать режим САВАС для кодирования первой информации индикации. Конечно, САВАС - это только один из примеров, и этот способ кодирования не накладывается никаких ограничений. САВАС включает в себя два режима: режим САВАС, в котором сохраняется и обновляется по меньшей мере одна контекстная модель (т.е. адаптивное двоичное арифметическое кодирование контекста), и режим обхода САВАС, в котором не требуется сохранять и обновлять контекстную модель (т.е. двоичное арифметическое кодирование в режиме обхода). На этом основании первую информацию индикации (например, флаговые биты информации разделения для треугольного подблока) можно кодировать способом двоичного арифметического кодирования на основании обхода, или первая информация индикации может быть кодирована способом контекстно-ориентированного адаптивного двоичного арифметического кодирования, т.е. первая информация индикации кодируется способом контекстно-ориентированного адаптивного двоичного арифметического кодирования в соответствии с контекстной моделью.
Когда сторона кодирования использует режим САВАС для кодирования первой информации индикации, сторона декодирования может использовать режим САВАС для декодирования первой информации индикации. Например, когда сторона кодирования кодирует первую информацию индикации способом двоичного арифметического кодирования на основании обхода, сторона декодирования декодирует первую информацию индикации способом двоичного арифметического декодирования на основании обхода, чтобы получить информацию разделения для треугольного подблока. Альтернативно, когда сторона кодирования кодирует первую информацию индикации способом контекстно-ориентированного адаптивного двоичного арифметического кодирования, сторона декодирования декодирует первую информацию индикации способом контекстно-ориентированного адаптивного двоичного арифметического кодирования, чтобы получить информацию разделения для треугольного подблока. Т. е., согласно контекстной модели, первая информация индикации декодируется способом контекстно-ориентированного адаптивного двоичного арифметического кодирования для получения информации разделения для треугольного подблока.
Таким образом, после того, как первая информация индикации будет декодирована, может быть получена информация разделения для треугольного подблока, такая как флаговый бит, указывающий информацию разделения для треугольного подблока. Когда флаговый бит является первым идентификатором 0, он указывает, что информация разделения для треугольного подблока является способом разделения по главной диагонали. Когда флаговый бит является вторым идентификатором 1, он указывает, что информация разделения для треугольного подблока является способом разделения по субдиагонали.
Таким образом, сторона декодирования может декодировать флаговые биты для информации разделения треугольного подблока. Например, для энтропийного декодирования принимается режим САВАС, при этом САВАС принимает режим обхода без сохранения и обновления контекстной модели. Альтернативно, сторона декодирования может декодировать флаговые биты для информации разделения треугольного подблока. Например, для энтропийного декодирования принимается режим САВАС, при этом САВАС принимает режим, содержащий контекстную модель.
Вариант 8 осуществления: на шагах 304 и 404 сторона кодирования/сторона декодирования получает из списка информации движения первую целевую информацию движения для первого треугольного подблока и вторую целевую информацию движения для второго треугольного подблока. Первая целевая информация движения и вторая целевая информация движения могут отличаться друг от друга. Процесс получения первой целевой информации движения и второй целевой информации движения описывается следующим образом:
Метод 1: сторона кодирования может определить первую целевую информацию движения посредством соглашения по умолчанию. Например, сторона кодирования может определить по умолчанию, что первая кандидатная информация движения в списке информации движения является первой целевой информацией движения для первого треугольного подблока. Сторона декодирования может определить первую целевую информацию движения посредством соглашения по умолчанию. Например, сторона декодирования может определить по умолчанию, что первая кандидатная информация движения в списке информации движения является первой целевой информацией движения для первого треугольного подблока. Сторона кодирования может определить вторую целевую информацию движения посредством соглашения по умолчанию. Например, сторона кодирования может определить по умолчанию, что вторая кандидатная информация движения в списке информации движения является второй целевой информацией движения для второго треугольного подблока. Сторона декодирования может определить вторую целевую информацию движения посредством соглашения по умолчанию. Например, сторона декодирования может определить по умолчанию, что вторая кандидатная информация движения в списке информации движения является второй целевой информацией для второго треугольного подблока.
Метод 2: сторона кодирования определяет стоимость искажения скорости, соответствующую каждой кандидатной информации движения в списке информации движения, при этом по способу определения нет ограничений, и кандидатная информация движения, соответствующая минимальной стоимости искажения скорости рассматривается в качестве первой целевой информации движения для первого треугольного подблока. Сторона кодирования исключает первую целевую информацию движения из списка информации движения (т.е. не выбирает первую целевую информацию движения в списке информации движения). На этом основании сторона кодирования определяет стоимость искажения скорости, соответствующую каждой оставшейся кандидатной информации движения в списке информации движения (т.е. каждой оставшейся кандидатной информации движения, кроме первой целевой информации движения), и определяет кандидатную информацию движения, соответствующую минимальной стоимости искажения скорости в качестве второй целевой информации движения для второго треугольного подблока. Конечно, сторона кодирования также может принимать другие стратегии для определения первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока, что не ограничивается в настоящем документе.
Когда сторона кодирования отправляет кодированный битовый поток на сторону декодирования, кодированный битовый поток может включать в себя вторую информацию индикации, используемую для указания первого индексного значения первой целевой информации движения в списке информации движения (которое используется для указания, какая кандидатная информация движения в списке информации движения является первой целевой информацией движения), второго индексного значения второй целевой информации движения в списке информации движения (которое используется для указания, какая кандидатная информация движения в списке информации движения является второй целевой информацией движения).
После приема кодированного битового потока сторона декодирования может получить из кодированного битового потока вторую информацию индикации, используемую для указания первого индексного значения первой целевой информации движения в списке информации движения (используется для указания, какая кандидатная информация движения в списке информации движения является первой целевой информацией движения), второго индексного значения второй целевой информации движения в списке информации движения (используется для указания, какая кандидатная информация движения в списке информации движения является второй целевой информацией движения). На основании первого индексного значения, указанного второй информацией индикации, сторона декодирования получает из списка информации движения кандидатную информацию, соответствующую первому индексному значению, и определяет полученную кандидатную информацию, соответствующую первому индексному значению, как первую целевую информацию движения для первого треугольного подблока; на основании второго индексного значения, указанного второй информацией индикации, сторона декодирования получает из списка информации движения кандидатную информацию, соответствующую второму индексному значению, и определяет кандидатную информацию, соответствующую второму индексному значению, как вторую целевую информацию движения для второго треугольного подблока.
Вариант 9 осуществления: в вышеприведенном варианте 8 осуществления сторона кодирования/сторона декодирования также может определить, какая однонаправленная информация движения используется для первой целевой информации движения для первого треугольного подблока, на основании четности первого индексного значения, при этом сторона кодирования/сторона декодирования также может определять, какая однонаправленная информация движения используется для второй целевой информации движения для второго треугольного подблока, на основании четности второго индексного значения.
После получения стороной декодирования первого индексного значения (используемого для указания индексного значения первой целевой информации движения в списке информации движения) из кодированного битового потока, если первое индексное значение является четным числом, то определяют, содержит ли кандидатная информация движения, соответствующая первому индексному значению, однонаправленную информацию движения, соответствующую списку list0. Если да, то определяют однонаправленную информацию движения, соответствующую list0, в качестве первой целевой информации движения для первого треугольного подблока. Если нет, то определяют однонаправленную информацию движения, соответствующую списку list1, в качестве первой целевой информации движения для первого треугольного подблока.
В одном из примеров сторона декодирования может получить кандидатную информацию движения, соответствующую первому индексному значению, из списка информации движения. Если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения включает в себя однонаправленную информацию движения, соответствующую списку list0, и однонаправленную информацию движения, соответствующую списку list1, тогда однонаправленную информацию движения, соответствующую list0 можно определить как первую целевую информацию движения для первого треугольного подблока. Если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list0, тогда однонаправленную информацию движения, соответствующую list0, можно определить как первую целевую информацию движения для первого треугольного подблока. Если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list1, тогда однонаправленную информацию движения, соответствующую list1, можно определить как первую целевую информацию движения для первого треугольного подблока.
После получения стороной декодирования первого индексного значения (используемого для указания индексного значения для первой целевой информации движения в списке информации движения) из кодированного битового потока, если первое индексное значение является нечетным числом, то определяют, содержит ли кандидатная информация движения, соответствующая первому индексному значению, однонаправленную информацию движения, соответствующую списку listl; если да, то однонаправленную информацию движения, соответствующую list1, определяют как первую целевую информацию движения для первого треугольного подблока; если нет, то однонаправленную информацию движения, соответствующую списку list0, определяют как первую целевую информацию движения для первого треугольного подблока.
В одном из примеров сторона декодирования может получить кандидатную информацию движения, соответствующую первому индексному значению, из списка информации движения. Если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения включает в себя однонаправленную информацию движения, соответствующую списку list0, и однонаправленную информацию движения, соответствующую списку list1, тогда однонаправленную информацию движения, соответствующую list1 можно определить как первую целевую информацию движения для первого треугольного подблока. Если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list1, тогда однонаправленную информацию движения, соответствующую list1, можно определить как первую целевую информацию движения для первого треугольного подблока. Если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list0, тогда однонаправленную информацию движения, соответствующую list0, можно определить как первую целевую информацию движения для первого треугольного подблока.
После получения стороной декодирования второго индексного значения (используемого для указания индексного значения второй целевой информации движения в списке информации движения) из кодированного битового потока, если второе индексное значение является четным числом, то определяют, содержит ли кандидатная информация движения, соответствующая второму индексному значению, однонаправленную информацию движения, соответствующую списку list0: если да, то однонаправленную информацию движения, соответствующую list0, определяют как вторую целевую информацию движения для второго треугольного подблока; а если нет, то информацию однонаправленного движения, соответствующую list1, определяют как вторую целевую информацию движения для второго треугольного подблока.
В одном из примеров сторона декодирования может получить кандидатную информацию движения, соответствующую второму индексному значению, из списка информации движения. Если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения включает в себя однонаправленную информацию движения, соответствующую списку list0, и однонаправленную информацию движения, соответствующую списку list1, тогда однонаправленную информацию движения, соответствующую list0, можно определить как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list0, тогда однонаправленную информацию движения, соответствующую list0, можно определить как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list1, тогда однонаправленную информацию движения, соответствующую list1, можно определить как вторую целевую информацию движения для второго треугольного подблока.
После получения стороной декодирования второго индексного значения (используемого для указания индексного значения для второй целевой информации движения в списке информации движения) из кодированного битового потока, если второе индексное значение является нечетным числом, то определяют содержит ли кандидатная информация движения, соответствующая второму индексному значению, однонаправленную информацию движения, соответствующую списку list1; если да, то однонаправленная информация движения, соответствующая list1, определяется как вторая целевая информация движения для второго треугольного подблока; если нет, то однонаправленная информация движения, соответствующая list0, определяется как вторая целевая информация движения для второго треугольного подблока.
В одном из примеров сторона декодирования может получить кандидатную информацию движения, соответствующую второму индексному значению, из списка информации движения. Если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения включает в себя однонаправленную информацию движения, соответствующую списку list0, и однонаправленную информацию движения, соответствующую списку list1, тогда однонаправленную информацию движения, соответствующую list1 можно определить как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list1, тогда однонаправленную информацию движения, соответствующую list1, можно определить как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list0, тогда однонаправленную информацию движения, соответствующую list0, можно определить как вторую целевую информацию движения для второго треугольного подблока.
При определении первой целевой информации движения для первого треугольного подблока сторона кодирования выбирает из списка информации движения кандидатную информацию движения, соответствующую минимальной стоимости искажения скорости (далее называется А1), и определяет индексное значение (т.е. первое индексное значение) для кандидатной информации движения А1 в списке информации движения, при этом первое индексное значение указывает положение кандидатной информации движения А1 в списке информации движения.
Если первое индексное значение является четным числом, то сторона кодирования определяет, содержит ли кандидатная информация движения А1 однонаправленную информацию движения, соответствующую списку list0; если да, то сторона кодирования определяет однонаправленную информацию движения, соответствующую list0, в качестве первой целевой информации движения для первого треугольного подблока; если нет, то сторона кодирования определяет однонаправленную информацию движения, соответствующую списку list1, в качестве первой целевой информации движения для первого треугольного подблока.
Если первое индексное значение является нечетным числом, то сторона кодирования определяет, содержит ли кандидатная информация движения А1 однонаправленную информацию движения, соответствующую списку list1; если да, то сторона кодирования определяет однонаправленную информацию движения, соответствующую list1, в качестве первой целевой информации движения для первого треугольного подблока; а если нет, то сторона кодирования определяет однонаправленную информацию движения, соответствующую list0, в качестве первой целевой информации движения для первого треугольного подблока.
При определении второй целевой информации движения для второго треугольного подблока сторона кодирования выбирает из списка информации движения кандидатную информацию движения, соответствующую минимальной стоимости искажения скорости, (далее называется А2) и определяет индексное значение (т.е. второе индексное значение) для кандидатной информации движения А2 в списке информации движения, при этом второе индексное значение указывает положение кандидатной информации движения А2 в списке информации движения.
Если второе индексное значение является четным числом, то сторона кодирования определяет, содержит ли кандидатная информация движения А2 однонаправленную информацию движения, соответствующую списку listO; если да, то сторона кодирования определяет однонаправленную информацию движения, соответствующую list0, в качестве второй целевой информации движения для второго треугольного подблока; если нет, то сторона кодирования определяет однонаправленную информацию движения, соответствующую списку list1, в качестве второй целевой информации движения для второго треугольного подблока.
Если второе индексное значение является нечетным числом, то сторона кодирования определяет, содержит ли кандидатная информация движения А2 однонаправленную информацию движения, соответствующую списку list1; если да, то сторона кодирования определяет однонаправленную информацию движения, соответствующую list1, как вторую целевую информацию движения для второго треугольного подблока; если нет, то сторона кодирования определяет однонаправленную информацию движения, соответствующую списку list0, как вторую целевую информацию движения для второго треугольного подблока.
Таким образом, как показано на фиг. 7А, когда первое индексное значение/второе индексное значение является четным числом, если в кандидатной информации движения, соответствующей первому индексному значению/второму индексному значению, присутствует однонаправленная информация движения, соответствующая списку list0, то в качестве целевой информации движения рассматривается однонаправленная информация движения, соответствующая list0; если в кандидатной информации движения, соответствующей первому индексному значению/второму индексному значению, отсутствует однонаправленная информации движения, соответствующая list0, то в качестве целевой информации движения рассматривается однонаправленная информация движения, соответствующая списку list1. Когда первое индексное значение/второе индексное значение является нечетным числом, если в кандидатной информации движения, соответствующей первому индексному значению/второму индексному значению, присутствует однонаправленная информация движения, соответствующая list1, то в качестве целевой информации движения рассматривается однонаправленная информация движения, соответствующая list1; если в кандидатной информации движения, соответствующей первому индексному значению/второму индексному значению, отсутствует однонаправленная информация движения, соответствующая list1, то в качестве целевой информации движения рассматривается однонаправленная информация движения, соответствующая list0.
В вышеприведенном варианте осуществления первое индексное значение можно записать как candldxl, а второе индексное значение может быть записано как candldx2.
В одном из примеров, когда типом текущего сегмента, в котором находится текущий блок, является В-сегмент, указанный В-сегмент допускает существование межкадровых блоков, указывающих на множество списков (списков опорных кадров) одновременно, например, блока межкадрового предсказания, указывающего на list0, и блока межкадрового предсказания, указывающего на list1. Следовательно, когда текущий сегмент, в котором расположен текущий сегмент, является В-сегментом, конфигурация опорного кадра текущего сегмента, в котором расположен текущий блок, может включать в себя два списка опорных кадров, т.е. list0 и list1. Таким образом, кандидатная информация движения может быть однонаправленной информацией движения, при этом однонаправленная информация движения является однонаправленной информацией движения, соответствующей list0, или однонаправленной информацией движения, соответствующей list1; или кандидатная информация движения может быть двунаправленной информацией движения, при этом двунаправленная информация движения включает в себя однонаправленную информацию движения, соответствующую list0, и однонаправленную информацию движения, соответствующую list1.
Вариант 10 осуществления: в вышеприведенном варианте 8 осуществления, сторона кодирования/сторона декодирования также может определять, какая однонаправленная информация движения используется для первой целевой информации движения для первого треугольного подблока, на основании четности первого индексного значения, а также сторона кодирования/сторона декодирования также может определять, какая однонаправленная информация движения используется для второй целевой информации движения для второго треугольного подблока, на основании четности второго индексного значения.
После получения стороной декодирования первого индексного значения (используется для указания индексного значения первой целевой информации движения в списке информации движения) из кодированного битового потока, если первое индексное значение является нечетным числом, то определяют, содержит ли кандидатная информация движения, соответствующая первому индексному значению, однонаправленную информацию движения, соответствующую списку list1; если да, то в качестве первой целевой информации движения для первого треугольного подблока определяют однонаправленную информацию движения, соответствующую list0; а если нет, то в качестве первой целевой информации движения для первого треугольного подблока определяют однонаправленную информацию движения, соответствующую list1.
В одном из примеров сторона декодирования может получать из списка информации движения кандидатную информацию движения, соответствующую первому индексному значению. Если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения включает в себя однонаправленную информацию движения, соответствующую списку list0, и однонаправленную информацию движения, соответствующую списку list1, то однонаправленную информацию движения, соответствующую list0, можно определить как первую целевую информацию движения для первого треугольного подблока. Если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list0, то однонаправленную информацию движения, соответствующую list0, можно определить как первую целевую информацию движения для первого треугольного подблока. Если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list1, то однонаправленную информацию движения, соответствующую list1, можно определить как первую целевую информацию движения для первого треугольного подблока.
После получения стороной декодирования первого индексного значения (используется для указания индексного значения для первой целевой информации движения в списке информации движения) из кодированного битового потока, если первое индексное значение является четным числом, то определяют, содержит ли кандидатная информация движения, соответствующая первому индексному значению, однонаправленную информацию движения, соответствующую списку list1; если да, то определяют однонаправленную информацию движения, соответствующую list1, в качестве первой целевой информации движения для первого треугольного подблока; а если нет, то определяют однонаправленную информацию движения, соответствующую списку list0, в качестве первой целевой информации движения для первого треугольного подблока.
В одном из примеров сторона декодирования может получить кандидатную информацию движения, соответствующую первому индексному значению, из списка информации движения. Если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения включает в себя однонаправленную информацию движения, соответствующую списку list0, и однонаправленную информацию движения, соответствующую списку list1, то однонаправленную информацию движения, соответствующую list1, можно определить как первую целевую информацию движения для первого треугольного подблока. Если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list1, то однонаправленную информацию движения, соответствующую list1, можно определить как первую целевую информацию движения для первого треугольного подблока. Если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list0, то однонаправленную информацию движения, соответствующую list0, можно определить как первую целевую информацию движения для первого треугольного подблока.
После получения стороной декодирования второго индексного значения (используется для указания индексного значения для второй целевой информации движения в списке информации движения) из кодированного битового потока, если второе индексное значение является нечетным числом, то определяют, содержит ли кандидатная информация движения, соответствующая второму индексному значению, однонаправленную информацию движения, соответствующую списку list0; если да, определяют однонаправленную информацию движения, соответствующую list0, в качестве второй целевой информации движения для второго треугольного подблока; а если нет, то определяют информацию однонаправленного движения, соответствующую list1, в качестве второй целевой информации движения для второго треугольного подблока.
В одном из примеров сторона декодирования может получить из списка информации движения кандидатную информацию движения, соответствующую второму индексному значению. Если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения включает в себя однонаправленную информацию движения, соответствующую списку list0, и однонаправленную информацию движения, соответствующую списку list1, тогда однонаправленную информацию движения, соответствующую list0, можно определить как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list0, то однонаправленную информацию движения, соответствующую list0, можно определить как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list1, то однонаправленную информацию движения, соответствующую list1, можно определить как вторую целевую информацию движения для второго треугольного подблока.
После получения стороной декодирования второго индексного значения (используется для указания индексного значения для второй целевой информации движения в списке информации движения) из кодированного битового потока, если второе индексное значение является четным числом, то определяют, содержит ли кандидатная информация движения, соответствующая второму индексному значению, однонаправленную информацию движения, соответствующую списку list1; если да, то в качестве второй целевой информации движения для второго треугольного подблока определяют однонаправленную информацию движения, соответствующую list1; если нет, то в качестве второй целевой информации движения для второго треугольного подблока определяют однонаправленную информацию движения, соответствующую list0.
В одном из примеров сторона декодирования может получить кандидатную информацию движения, соответствующую второму индексному значению, из списка информации движения. Если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения включает в себя однонаправленную информацию движения, соответствующую списку list0, и однонаправленную информацию движения, соответствующую списку list1, тогда однонаправленную информацию движения, соответствующую list1, можно определить как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения однонаправленной информацией движения, соответствующей list1, тогда однонаправленную информацию движения, соответствующую list1, можно определить как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, является двунаправленной информацией движения, двунаправленная информация движения является однонаправленной информацией движения, соответствующей list0, тогда однонаправленную информацию движения, соответствующую list0, можно определить как вторую целевую информацию движения для второго треугольного подблока.
При определении первой целевой информации движения для первого треугольного подблока сторона кодирования выбирает кандидатную информацию движения, соответствующую минимальной стоимости искажения скорости, из списка информации движения (далее именуется А1), и определяет индексное значение (т.е. первое индексное значение) для кандидатной информации движения А1 в списке информации движения, при этом первое индексное значение указывает положение кандидатной информации движения А1 в списке информации движения.
Если первое индексное значение является нечетным числом, то сторона кодирования определяет, содержит ли кандидатная информация движения А1 однонаправленную информацию движения, соответствующую списку list0; если да, то в качестве первой целевой информации движения для первого треугольного подблока сторона кодирования определяет однонаправленную информацию движения, соответствующую list0; если нет, то в качестве первой целевой информации движения для первого треугольного подблока сторона кодирования определяет однонаправленную информацию движения, соответствующую списку list1.
Если первое индексное значение является четным числом, то сторона кодирования определяет, содержит ли кандидатная информация движения А1 однонаправленную информацию движения, соответствующую списку list1; если да, то в качестве первой целевой информации движения для первого треугольного подблока сторона кодирования определяет однонаправленную информацию движения, соответствующую list1; а если нет, то в качестве первой целевой информации движения для первого треугольного подблока сторона кодирования определяет однонаправленную информацию движения, соответствующую list0.
При определении второй целевой информации движения для второго треугольного подблока сторона кодирования выбирает из списка информации движения кандидатную информацию движения, соответствующую минимальной стоимости искажения скорости, (далее обозначается А2), и определяет индексное значение (т.е. второе индексное значение) для кандидатной информации движения информации А2 в списке информации движения, при этом второе индексное значение указывает положение кандидатной информации движения А2 в списке информации движения.
Если второе индексное значение является нечетным числом, то сторона кодирования определяет, содержит ли кандидатная информация движения А2 однонаправленную информацию движения, соответствующую списку list0; если да, то сторона кодирования определяет однонаправленную информацию движения, соответствующую list0, в качестве второй целевой информации движения для второго треугольного подблока; если нет, то сторона кодирования определяет однонаправленную информацию движения, соответствующую списку list1, в качестве второй целевой информации движения для второго треугольного подблока.
Если второе индексное значение является четным числом, то сторона кодирования определяет, содержит ли кандидатная информация движения А2 однонаправленную информацию движения, соответствующую списку list1; если да, то сторона кодирования определяет однонаправленную информацию движения, соответствующую списку list1, как вторую целевую информацию движения для второго треугольного подблока; если нет, то сторона кодирования определяет однонаправленную информацию движения, соответствующую list0, как вторую целевую информацию движения для второго треугольного подблока.
Вариант 11 осуществления: в вышеприведенном варианте 8 осуществления 8 сторона кодирования/сторона декодирования также может получать первый кандидатный набор и второй кандидатный набор на основании списка информации движения. В одном из примеров первый кандидатный набор может включать в себя элементы кандидатной информации движения из списка информации движения, второй кандидатный набор может включать в себя элементы кандидатной информации движения из списка информации движения, при этом кандидатная информация движения в первом кандидатном наборе не является точно такой же, как кандидатная информация движения во втором кандидатном наборе.
Сторона кодирования определяет стоимость искажения скорости, соответствующую каждой кандидатной информации движения в первом кандидатном наборе, при этом кандидатную информацию движения, соответствующую минимальной стоимости искажения скорости, определяют как первую целевую информацию движения для первого треугольного подблока. Затем сторона кодирования исключает первую целевую информацию движения из второго кандидатного набора и определяет стоимость искажения скорости, соответствующую каждой оставшейся кандидатной информации движения во втором кандидатном наборе (т.е., каждой оставшейся кандидатной информации движения, кроме первой целевой информации движения), и определяет кандидатную информацию движения, соответствующую минимальной стоимости искажения скорости, в качестве второй целевой информации движения для второго треугольного подблока.
Когда сторона кодирования отправляет кодированный битовый поток на сторону декодирования, кодированный битовый поток может включать в себя вторую информацию индикации, при этом вторая информация индикации используется для указания первого индексного значения для первой целевой информации движения в первом кандидатном наборе (используется для указания, какая кандидатная информации движения является первой целевой информацией движения в первом кандидатном наборе), второе индексное значение для целевой информации движения во втором кандидатном наборе (используется для указания, какая кандидатная информация движения является второй целевой информацией движения во втором кандидатном наборе).
На стороне декодирования, после приема стороной декодирования кодированного битового потока, сторона декодирования также может получить вторую информацию индикации из кодированного битового потока. Вторая информация индикации может использоваться для указания первого индексного значения для первой целевой информации движения в первом кандидатном наборе и второго индексного значения для второй целевой информации движения во втором кандидатном наборе. На основании первого индексного значения для второй информации индикации сторона декодирования может получить из первого кандидатного набора кандидатную информацию движения, соответствующую первому индексному значению, и определить полученную кандидатную информацию движения, соответствующую первому индексному значению, как первую целевую информацию движения для первого треугольного подблока. Кроме того, на основании второго индексного значения для второй информации индикации сторона декодирования может получить из второго кандидатного набора кандидатную информацию движения, соответствующую второму индексному значению, и определить полученную кандидатную информацию движения, соответствующую второму индексному значению, в качестве второй целевой информации движения для второго треугольного подблока.
Вариант 12 осуществления: на фиг. 7В представлена схема разделения треугольного подблока, когда splitDir=0, где splitDir - это флаговый бит направления разделения, указывающий информацию разделения для треугольного подблока. SplitDir=0 указывает, что текущий блок делится на первый треугольный подблок и второй треугольный подблок в соответствии с главной диагональю (угол разделения 45 градусов от горизонтального правого направления). Список информации движения включает в себя информацию движения для блока А1, информацию движения для блока В1, информацию движения для блока В0, информацию движения для блока А0 и информацию движения для блока В2.
В одном из примеров порядок сортировки информации движения в списке информации движения может быть следующим: информация движения для блока А1, информация движения для блока В1, информация движения для блока В0, информация движения для блока А0, и информация движения для блока В2. Если информация движения для блока А1 доступна, то информация движения для блока А1 добавляется в список информации движения в соответствии с вышеуказанным порядком сортировки; если информация движения для блока А1 недоступна, то информация движения для блока А1 не добавляется в список информации движения; если информация движения для блока В1 доступна, то информация движения для блока В1 добавляется в список информации движения в соответствии с вышеуказанным порядком сортировки; если информация движения для блока В1 недоступна, то информация движения для блока В1 не добавляется в список информации движения и так далее. В практических применениях некоторые другие типы информации движения, такие как информация движения во временной области, также могут быть вставлены между информацией движения для блока В0 и информацией движения для блока А0, в настоящем документе это ничем не ограничивается.
Для вышеуказанного первого треугольного подблока существует высокая вероятность того, что информация движения для блока А1 и информация движения для блока А0 не выбраны. Предположим, что в списке информации движения индексное значение информации движения для блока А1 - это 0, индексное значение информации движения для блока В0 - это 0, индексное значение информации движения для блока В1 - это 2, индексное значение информации движения для блока А0 - это 3, индексное значение информации движения для блока В2 - это 4, при этом первый кандидатный набор включает в себя информацию движения для блока В0, информацию движения для блока В1, информацию движения для блока В2.
Сторона кодирования кодирует информацию движения для блока В0 посредством первого индексного значения «0», которое указывает первую кандидатную информацию движения в первом кандидатном наборе, а также вторую кандидатную информацию движения в списке информации движения. Т.е. первое индексное значение «0» может соответствовать индексному значению 1 в списке информации движения. Сторона кодирования кодирует информацию движения для блока В1 посредством первого индексного значения «10», которое указывает вторую кандидатную информацию движения в первом кандидатном наборе, а также третью кандидатную информацию движения в списке информации движения. Т. е. первое индексное значение «10» может соответствовать индексному значению 2 списка информации движения. Сторона кодирования кодирует информацию движения для блока В2 посредством первого индексного значения «11», которое указывает третью кандидатную информацию движения в первом кандидатном наборе, а также пятую кандидатную информацию движения в списке информации движения. Т.е. первое индексное значение «11» может соответствовать индексному значению 4 списка информации движения.
После получения стороной декодирования первого индексного значения из кодированного битового потока, если первое индексное значение равно «0», то сторона декодирования может рассматривать первую кандидатную информацию движения в первом кандидатном наборе (т.е. вторую кандидатную информацию движения в списке информации движения) в качестве первой целевой информации движения для первого треугольного подблока. Если первое индексное значение равно «10», то сторона декодирования может рассматривать первую кандидатную информацию движения во втором кандидатном наборе (т.е. третью кандидатную информацию движения в списке информации движения) в качестве первой целевой информации движения для первого треугольного подблока. Если первое индексное значение равно «11», то сторона декодирования может рассматривать третью кандидатную информацию движения в первом кандидатном наборе (т.е. пятую кандидатную информацию движения в списке информации движения) как первую целевую информацию движения для первого треугольного подблока.
Для нижеприведенного второго треугольного подблока существует высокая вероятность того, что информация движения для блока В1 и информация движения для блока ВО не выбраны. Предположим, что в списке информации движения индексное значение информации движения для блока А1 - это 0, и индексное значение информации движения для блока В0 - это 0, индексное значение информации движения для блока В1 - это 2, индексное значение информации движения для блока А0 - это 3, индексное значение информации движения для блока В2 - это 4, и второй кандидатный набор может включать в себя информацию движения для блока А0, информацию движения для блока В1, информацию движения для блока А1.
Сторона кодирования кодирует информацию движения для блока А1 посредством второго индексного значения «0», которое указывает первую кандидатную информацию движения во втором кандидатном наборе, а также первую кандидатную информацию движения в списке информации движения, т.е. второе индексное значение «0» может соответствовать индексному значению 0 для списка информации движения. Сторона кодирования кодирует информацию движения для блока А0 посредством второго индексного значения «10», которое указывает вторую кандидатную информацию движения во втором кандидатном наборе, а также четвертую кандидатную информацию движения в списке информации движения. Т. е. второе индексное значение «10» может соответствовать индексному значению 3 для списка информации движения. Сторона кодирования кодирует информацию движения для блока В2 посредством второго индексного значения «10», которое указывает третью кандидатную информацию движения во втором кандидатном наборе, а также пятую кандидатную информацию движения в списке информации движения. Т.е. второе индексное значение «10» может соответствовать индексному значению 3 для списка информации движения.
После получения стороной декодирования второго индексного значение из кодированного битового потока, если второе индексное значение равно «0», то сторона декодирования может рассматривать первую кандидатную информацию движения во втором кандидатном наборе (т.е. первую кандидатную информацию движения в списке информации движения) в качестве второй целевой информации движения для второго треугольного подблока. Если второе индексное значение равно «10», то сторона декодирования может рассматривать вторую кандидатную информацию движения во втором кандидатном наборе (т.е. четвертую кандидатную информацию движения в списке информации движения) как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение равно «11», то сторона декодирования может рассматривать вторую кандидатную информацию движения в третьем кандидатном наборе (т.е. пятую кандидатную информацию движения в списке информации движения) как вторую целевую информацию движения для второго треугольного подблока.
В одном из примеров, поскольку вторая целевая информация движения отличается от первой целевой информации движения, т.е. второе индексное значение и первое индексное значение не соответствуют одной и той же кандидатной информации движения в списке информации движения. Следовательно, когда первая целевая информация движения является информацией движения для блока В2, т.е. первым значением индекса является «11», а второй кандидатный набор включает в себя информацию движения для блока А0 и информацию движения для блока А1.
Сторона кодирования кодирует информацию движения для блока А1 посредством второго индексного значения «0», которое указывает первую кандидатную информацию движения во втором кандидатном наборе, а также первую кандидатную информацию движения в списке информации движения. Сторона кодирования кодирует информацию движения для блока А0 посредством второго индексного значения «1», которое указывает вторую кандидатную информацию движения во втором кандидатном наборе, а также четвертую кандидатную информацию движения в списке информации движения. После получения стороной декодирования второго индексное значение из кодированного битового потока, если второе индексное значение равно «0», то первая кандидатная информация движения во втором кандидатном наборе (т.е. первая кандидатная информация движения в списке информации движения) рассматривается как вторая целевая информация движения для второго треугольного подблока. Если второе индексное значение равно «1», то вторая кандидатная информация движения во втором кандидатном наборе (т.е. четвертая кандидатная информация движения в списке информации движения) рассматривается как вторая целевая информация движения для второго треугольного подблока.
В одном из примеров, если первая целевая информация движения не является информацией движения для блока В2, то второй кандидатный набор включает в себя информацию движения для блока А0, информацию движения для блока А1 и информацию движения для блока В2. В отношении способа кодирования и декодирования можно рассматривать вышеприведенный вариант осуществления, и подробности в настоящем документе повторяться не будут.
Таким образом, если первое индексное значение (candldx1) равно 11, т.е. индексное значение для соответствующего списка информации движения - это 4, то второе индексное значение (candldx2) имеет только две возможности: индексное значение 0 и индексное значение 3. Следовательно, сторона кодирования кодирует информацию движения, соответствующую индексному значению 0 (т.е. первую кандидатную информацию движения в списке информации движения), посредством второго индексного значения «0», и сторона кодирования кодирует информацию движения, соответствующую индексному значению 3 (т.е. четвертую кандидатную информацию движения в списке информации движения), посредством второго индексного значения «1». Если первое индексное значение (candldx1) не равно 11, т.е. оно не соответствует индексному значению 4 для списка информации движения, то процесс декодирования второго индексного значения может рассматриваться в Таблице 1. В этом случае, второе индексное значение (Candidx2) имеет три возможности: индексное значение 0, индексное значение 3 и индексное значение 4. Следовательно, сторона кодирования кодирует информацию движения, соответствующую индексному значению 0, посредством второго индексного значения «0», сторона кодирования кодирует информацию движения, соответствующую индексному значению 3 посредством второго индексного значения «10», и сторона кодирования кодирует информацию движения, соответствующую индексному значению 4, посредством второго индексного значения «11».
В одном из примеров первое индексное значение (candldx1) может сводиться к соответствующим индексным значениям 1 и 2, т.е. первое индексное значение соответствует информации движения для блока В0 (индексное значение 1) или информации движения для блока В1 (индексное значение 2). Т.е. для кодирования первого индексного значения (candldxl) требуется только 1 двоичный разряд. Например, индексное значение 1 кодируется посредством 0, и индексное значение 2 кодируется посредством 1. Второе индексное значение (candldx2) может соответствовать индексным значениям индекса 0, 3 и 4, т.е. второе индексное значение соответствует информации движения для блока А1 (индексное значение 0), информации движения для блока А0 (индексное значение 3) и информации движения для блока В2 (индексное значение 4). Очевидно, что информация движения, соответствующая второму индексному значению, отличается от информации движения, соответствующей первому индексному значению. На этом основании три индексных значения могут кодироваться посредством 0, 10 и 11. Например, индексное значение 0 кодируется посредством 0, индексное значение 3 кодируется посредством 10, а индексное значение 4 кодируется посредством 11. Вышеприведенный способ не должен полагаться на первое индексное значение для выполнения процесса декодирования, что снижает зависимость от синтаксического анализа.
В одном из примеров, первое индексное значение (candldxl) может сводиться к соответствию индексным значениям 1, 2 и 4, т.е. первое индексное значение соответствует информации движения для блока В0 (индексное значение 1), информации движения для блока В1 (индексное значение 2), информации движения для блока В2 (индексное значение 4). Т.е. первое индексное значение (candldxl) может кодироваться посредством 0, 10, 11. Например, индексное значение 1 кодируется посредством 0, индексное значение 2 кодируется посредством 10, а индексное значение 4 кодируется посредством 11. Второе индексное значение (candldx2) может сводиться к соответствию индексным значениям 0 и 3, т.е. второе индексное значение соответствует информации движения для блока А1 (индексное значение 0), и информации движения для блока А0 (индексное значение 3). Очевидно, что информация движения, соответствующая второму индексному значению, отличается от информации движения, соответствующей первому индексному значению. На этом основании эти два индексных значения могут кодироваться посредством 0 и 1. Например, индексное значение 0 кодируется посредством 0, а индексное значение 3 кодируется посредством 1. Вышеприведенный способ не должен опираться на первое индексное значение для выполнения процесса декодирования, что снижает зависимость от синтаксического анализа.
Вариант 13 осуществления: на фиг. 7С представлена схема разделения на треугольные подблоки, когда splitDir=1, где splitDir является флаговым битом направления разделения, который указывает информацию разделения на треугольные подблоки. SplitDir=1 указывает, что текущий блок разделен на первый треугольный подблок и второй треугольный подблок в соответствии с субдиагональю (угол разделения 135 градусов от горизонтального правого направления). Список информации движения включает в себя информацию движения для блока А1, информацию движения для блока В1, информацию движения для блока В0, информацию движения для блока А0 и информацию движения для блока В2.
Для вышеуказанного первого треугольного подблока отсутствует необходимость в создании первого кандидатного набора для первого треугольного подблока. Сторона кодирования/сторона декодирования может напрямую выбрать первую целевую информацию движения из списка информации движения, процесс выбора в настоящем документе не будет повторяться.
Для нижеприведенного второго треугольного подблока существует высокая вероятность того, что информация движения для блока В2 не выбрана. Предположим, что в списке информации движения индексное значение информации движения для блока А1 - это 0, и индексное значение информации движения для блока В0 - это 0, индексное значение информации движения для блока В1 - это 2, индексное значение информации движения для блока А0 - это 3, индексное значение информации движения для блока В2 - это 4, и второй кандидатный набор может включать в себя информацию движения для блока А1, информацию движения для блока А0, информацию движения для блока В0, и информацию движения для блока В1.
Если первая целевая информация движения является пятой информацией движения в списке информации движения (информация движения для блока В2), то индексное значение, соответствующее первой целевой информации движения, - это 4. В этом случае сторона кодирования может кодировать информацию движения для блока А1 посредством второго индексного значения «0», которое указывает первую кандидатную информацию движения во втором кандидатном наборе, а также первую кандидатную информацию движения в списке информации движения, т.е. второе индексное значение «0» может соответствовать индексному значению 0 для списка информации движения. Сторона кодирования может кодировать информацию движения для блока В0 посредством второго индексного значения «10», которое указывает вторую кандидатную информацию движения во втором кандидатном наборе, а также вторую кандидатную информацию движения в списке информации движения, т.е. второе индексное значение «10» может соответствовать индексному значению 1 для списка информации движения. Сторона кодирования может кодировать информацию движения для блока В1 посредством второго индексного значения «110», которое указывает третью кандидатную информацию движения во втором кандидатном наборе, а также третью кандидатную информацию движения в списке информации движения, т.е. второе индексное значение «110» может соответствовать индексному значению 2 для списка информации движения. Сторона кодирования может кодировать информацию движения для блока А0 посредством второго индексного значения «111», которое указывает четвертую кандидатную информацию движения во втором кандидатном наборе, а также четвертую кандидатную информацию движения в списке информации движения, т.е. второе индексное значение «111» может соответствовать индексному значению 3 для списка информации движения.
После получения стороной декодирования второго индексного значения из кодированного битового потока, если второе индексное значение равно «0», то сторона декодирования может рассматривать первую кандидатную информацию движения во втором кандидатном наборе (т.е. первую кандидатную информацию движения в списке информации движения) в качестве второй целевой информации движения для второго треугольного подблока. Если второе индексное значение равно «10», то сторона декодирования может рассматривать вторую кандидатную информацию движения во втором кандидатном наборе (т.е. вторую кандидатную информацию движения в списке информации движения) как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение равно «110», то сторона декодирования может рассматривать третью кандидатную информацию движения во втором кандидатном наборе (т.е. третью кандидатную информацию движения в списке информации движения) как вторую целевую информацию движения для второго треугольного подблока. Если второе индексное значение равно «111», то сторона декодирования может рассматривать четвертую кандидатную информацию движения во втором кандидатном наборе (т.е. четвертую кандидатную информацию движения в списке информации движения) как вторую целевую информацию движения для второго треугольного подблока.
Если первое индексное значение не соответствует индексному значению 4, то в нижеследующем описании в качестве примера берется первое индексное значение, соответствующее индексному значению 3, что указывает на то, что первая целевая информация движения является четвертой информацией движения в списке информации движения (т.е. информацией движения для блока В2). В этом случае сторона кодирования может кодировать информацию движения для блока А1 посредством второго индексного значения «0», которое указывает первую кандидатную информацию движения во втором кандидатном наборе, а также первую кандидатную информацию движения в списке информации движения, т.е. второе индексное значение «О» может соответствовать индексному значению 0 для списка информации движения. Сторона кодирования может кодировать информацию движения для блока В0 посредством второго индексного значения «10», которое указывает вторую кандидатную информацию движения во втором кандидатном наборе, а также вторую кандидатную информацию движения в списке информации движения, т.е. второе индексное значение «10» может соответствовать индексному значению 1 для списка информации движения. Сторона кодирования может кодировать информацию движения для блока В1 посредством второго индексного значения «11», которое указывает третью кандидатную информацию движения во втором кандидатном наборе, а также третью кандидатную информацию движения в списке информации движения, т.е. второе индексное значение «11» может соответствовать индексному значению 2 для списка информации движения.
После получения стороной декодирования второго индексного значения из кодированного битового потока, если второе индексное значение равно «0», то сторона декодирования может рассматривать первую кандидатную информацию движения во втором кандидатном наборе (т.е. первую кандидатную информация движения в списке информации движения) в качестве второй целевой информации движения для второго треугольного подблока. Если второе индексное значение равно «10», то сторона декодирования может рассматривать вторую кандидатную информацию движения во втором кандидатном наборе (т.е. вторую кандидатную информацию движения в списке информации движения) в качестве второй целевой информации движения для второго треугольного подблока. Если второе индексное значение равно «11», то сторона декодирования может рассматривать третью кандидатную информацию движения во втором кандидатном наборе (т.е. третью кандидатную информацию движения в списке информации движения) как вторую целевую информацию движения для второго треугольного подблока.
Таким образом, если первое индексное значение (candldxl) равно 11, т.е. оно соответствует индексному значению 4 для списка информации движения, то процесс декодирования второго индексного значения (candldx2) может быть показан в Таблице 2. Таким образом, если первое индексное значение (candldxl) не равно 11, т.е. оно не соответствует индексному значению 4 для списка информации движения, процесс декодирования второго индексного значения (candldx2) может быть показан в таблице 3.
В одном из примеров второе индексное значение (candldx2) может быть сначала кодировано, поскольку второе индексное значение (candldx2) может соответствовать только индексному значению 0, индексному значению 1, индексному значению 2, индексному значению 3. Следовательно, для кодирования можно использовать 0, 10, 110, 111, т.е. второе индексное значение (candldx2) может быть кодировано максимум с 3 двоичными разрядами. Например, индексное значение 0 кодируется посредством 0, индексное значение 1 кодируется посредством 10, индексное значение 2 кодируется посредством 110, а индексное значение 3 кодируется посредством 111. Затем первое индексное значение (candIdx1) могут быть кодированы, т.е. candIdxl-=candIdx1<candIdx2?0:1, т.e. первое индексное значение (candldxl) является оставшимися четырьмя из индексного значения 0, индексного значения 1, индексного значения 2, индексного значения 3 и индексного значения 4, за исключением второго индексного значения (candldx2). Следовательно, 0, 10, 110, 111 также могут использоваться для кодирования, т.е. не более 3 двоичных разрядов используются для кодирования первого индексного значения (candldxl). Очевидно, что таким образом нет необходимости опираться на размер предыдущего индексного значения, чтобы определить, сколько двоичных разрядов в текущий момент необходимо декодировать, что уменьшает зависимость от синтаксического анализа.
В одном из примеров, когда splitDir=1, сначала может быть кодировано второе индексное значение (candIdx2), а затем может быть кодировано первое индексное значение (candIdxl). Когда splitDir=0, сначала может кодироваться первое индексное значение (candldx1), а затем может кодироваться второе индексное значение (candIdx2); или сначала может кодироваться второе индексное значение (candIdx2), а затем может кодироваться первое индексное значение (candIdx1).
В одном из примеров, когда splitDir=0, для обработки можно использовать вариант осуществления 12, а когда splitDir=1, для обработки можно использовать вариант осуществления 13. Конечно, вышеприведенные вариант осуществления 12 и вариант осуществления 13 являются только примерами, и этим не накладывается никаких ограничений.
В одном из примеров, вышеприведенные примеры кодирования индексного значения только иллюстрируют, что список информации движения включает в себя 5 элементов кандидатной информации движения. Когда список информации движения включает в себя кандидатную информацию движения для других примеров, реализация аналогична, и подробности в настоящем документе не повторяются.
Вариант 14 осуществления: в вышеприведенных примерах, когда сторона кодирования отправляет кодированный битовый поток на сторону декодирования, кодированный битовый поток может включать в себя вторую информацию индикации, которая используется для указания первого индексного значения для первой целевой информации движения в списке информации движения, и второе индексное значение для второй целевой информации движения в списке информации движения. В одном из примеров, для первого индексного значения, сторона кодирования может использовать режим САВАС для кодирования первого индексного значения, и сторона декодирования может использовать режим САВАС для декодирования первого индексного значения. Для второго индексного значения, сторона кодирования может использовать режим САВАС для кодирования второго индексного значения, и сторона декодирования может использовать режим САВАС для декодирования второго индексного значения. Конечно, САВАС - это только пример, и этим не накладывается никаких ограничений.
В качестве примера, предположим, что список информации движения включает в себя 5 элементов кандидатной информации движения, первое индексное значение (обозначенное как candIdx1) может быть представлено четырьмя двоичными разрядами, и второе индексное значение (обозначено как candIdx2) может быть представлено четырьмя двоичными разрядами.
На стороне кодирования, если candIdx1 представляет первую кандидатную информацию движения в списке информации движения, то первый двоичный разряд кодируется в режиме САВАС, при этом первый двоичный разряд равен 0. Если candldxl представляет вторую кандидатную информацию движения в списке информации движения, то первый двоичный разряд и второй двоичный разряд кодируются в режиме САВАС, при этом первый двоичный разряд равен 1, а второй двоичный разряд равен 0. Если candldxl представляет третью кандидатную информацию движения в списке информации движения, то первый двоичный разряд, второй двоичный разряд и третий двоичный разряд кодируются в режиме САВАС, при этом первый двоичный разряд равен 1, второй двоичный разряд равен 1, а третий двоичный разряд равен 0. Если candldxl представляет четвертую кандидатную информацию движения в списке информации движения, то первый двоичный разряд, второй двоичный разряд, третий двоичный разряд и четвертый двоичный разряд кодируются в режиме САВАС, при этом первый двоичный разряд равен 1, второй двоичный разряд равен 1, третий двоичный разряд равен 1, а четвертый двоичный разряд равен 0. Если candldxl представляет пятую кандидатную информацию движения в списке информации движения, то первый двоичный разряд, второй двоичный разряд, третий двоичный разряд и четвертый двоичный разряд кодируются в режиме САВАС, при этом первый двоичный разряд равен 1, второй двоичный разряд равен 1, третий двоичный разряд равен 1, а четвертый двоичный разряд равен 0.
На стороне декодирования первый двоичный разряд candldxl декодируется в режиме САВАС. Если первый двоичный разряд равен 0, определяется, что candldx1 соответствует 0, a candldx1 представляет первую кандидатную информацию движения в списке информации движения. Если первый двоичный разряд равен 1, то второй двоичный разряд candldxl декодируется в режиме САВАС. Если второй двоичный разряд равен 0, то определяют, что candldx1 соответствует 1 (представлено как 10), при этом candldx1 представляет первую кандидатную информацию движения в списке информации движения. Если первый двоичный разряд равен 2, то третий двоичный разряд Candldx1 декодируется в режиме САВАС. Если третий двоичный разряд равен 0, то определяют, что candldxl соответствует 2 (представлено как 110), при этом candldxl представляет третью кандидатную информацию движения в списке информации движения. Если первый двоичный разряд равен 3, то четвертый двоичный разряд candldx1 декодируется в режиме САВАС. Если четвертый двоичный разряд равен 0, то определяют, что candldx1 соответствует 3 (представлено как 1110), при этом candldx1 представляет четвертую кандидатную информацию движения в списке информации движения. Если четвертый двоичный разряд равен 1, поскольку число двоичных разрядов достигает максимума, следовательно, определяется, что candldx1 соответствует 4 (представлено как 1111), при этом candldx1 представляет пятую кандидатную информацию движения в списке информации движения.
В одном из примеров в процессе декодирования конечным условием может быть следующее: решенный двоичный разряд равен 0 или число решенных двоичных разрядов достигает максимума (numCandminus1), причем numCandminus1 можно получить с помощью синтаксической информации, причем на это не накладываются никакие ограничения. Если numCandminus1 равно 4, это указывает, что максимальное число двоичных разрядов первого индексного значения candldx1 равно 4.
В вышеприведенном варианте осуществления вводятся процесс candldx1 кодирования стороной кодирования и процесс декодирования candldx1 стороной декодирования. Процесс кодирования и процесс candldx2 декодирования аналогичен вышеприведенному варианту осуществления и не будет здесь повторяться.
Для приведенных выше примеров двоичный разряд, соответствующий candldx1 /candldx2, показан в Таблице 4:
Вариант 15 осуществления: в приведенном выше примере, когда сторона кодирования отправляет кодированный битовый поток на сторону декодирования, кодированный битовый поток может включать в себя вторую информацию индикации, используемую для указания первого индексного значения для первой целевой информации движения в списке информации движения, и второе индексное значение для второй целевой информации движения в списке информации движения. В одном из примеров, что касается первого индексного значения, сторона кодирования может использовать режим САВАС для кодирования первого индексного значения, и сторона декодирования может использовать режим САВАС для декодирования первого индексного значения. Что касается второго индексного значения, сторона кодирования может использовать режим САВАС для кодирования второго индексного значения, и сторона декодирования может использовать режим САВАС для декодирования второго индексного значения. Конечно, САВАС - это только один из примеров, и для этого нет никаких ограничений.
САВАС включает в себя режим САВАС, который сохраняет и обновляет по меньшей мере одну контекстную модель (т.е. адаптивное двоичное арифметическое кодирование контекста), и режим обхода САВАС, который не сохраняет и не обновляет контекстную модель (т.е. двоичное арифметическое кодирование на основании обхода). Первое индексное значение кодируется способом двоичного арифметического кодирования на основании обхода, или первое индексное значение кодируется способом контекстно-ориентированного адаптивного двоичного арифметического кодирования на основании контекста. Т. е. первое индексное значение кодируется в основанном на контексте способе адаптивного двоичного арифметического кодирования согласно контекстной модели. Второе индексное значение кодируется с помощью способа двоичного арифметического кодирования на основании обхода, или второе индексное значение кодируется способом контекстно-ориентированного адаптивного двоичного арифметического кодирования. Т.е. второе индексное значение кодируется способом контекстно-ориентированного адаптивного двоичного арифметического кодирования в соответствии с контекстной моделью.
Когда сторона кодирования использует режим САВАС для кодирования первого индексного значения, сторона декодирования может использовать режим САВАС для декодирования первого индексного значения. Например, когда сторона кодирования кодирует первое индексное значение способом двоичного арифметического кодирования на основании обхода, сторона декодирования декодирует первое индексное значение способом двоичного арифметического декодирования на основании обхода, чтобы получить первое индексное значение. Когда сторона кодирования кодирует первое индексное значение способом контекстно-ориентированного адаптивного двоичного арифметического кодирования, сторона декодирования декодирует первое индексное значение способом контекстно-ориентированного адаптивного двоичного арифметического кодирования, чтобы получить первое индексное значение. Т.е., в соответствии с контекстной моделью, первое индексное значение декодируется способом контекстно-ориентированного адаптивного двоичного арифметического кодирования для получения первого индексного значения.
Когда сторона кодирования использует режим САВАС для кодирования второго индексного значения, сторона декодирования может использовать режим САВАС для декодирования второго индексного значения. Например, когда сторона кодирования кодирует второе индексное значение способом двоичного арифметического кодирования на основании обхода, сторона декодирования декодирует второе индексное значение способом двоичного арифметического декодирования на основании обхода, чтобы получить второе индексное значение. Когда сторона кодирования кодирует второе индексное значение способом контекстно-ориентированного адаптивного двоичного арифметического кодирования, сторона декодирования декодирует второе индексное значение способом контекстно-ориентированного адаптивного двоичного арифметического кодирования, чтобы получить второе индексное значение. Т.е., согласно контекстной модели, второе индексное значение декодируется способом контекстно-ориентированного адаптивного двоичного арифметического кодирования для получения второго индексного значения.
В одном из примеров первое индексное значение может включать в себя М1 двоичных разрядов, причем N1 двоичных разрядов в двоичных разрядах М1 получены путем контекстно-ориентированного адаптивного двоичного арифметического декодирования, остальные (M1-N1) двоичных разрядов в М1 двоичных разрядов получены путем двоичного арифметического декодирования на основании обхода; М1 больше или равно N1. Например, первое индексное значение включает в себя четыре двоичных разряда, первый двоичный разряд получен путем контекстно-ориентированного адаптивного двоичного арифметического декодирования, которое выполняется на основании контекстной модели, второй, третий и четвертый двоичные разряды получены путем двоичного арифметического декодирования на основании обхода.
Например, для первого двоичного разряда в первом индексном значении сторона кодирования кодирует первый двоичный разряд способом контекстно-ориентированного адаптивного двоичного арифметического кодирования в соответствии с контекстной моделью. Сторона декодирования декодирует первый двоичный разряд способом контекстно-ориентированного адаптивного двоичного арифметического кодирования в соответствии с контекстной моделью, чтобы получить первый двоичный разряд.
Если в первом индексном значении есть другие двоичные разряды (например, второй двоичный разряд, третий двоичный разряд, четвертый двоичный разряд и т.д.), то сторона кодирования кодирует другие двоичные разряды способом двоичного арифметического кодирования на основании обхода. Сторона декодирования декодирует другие двоичные разряды способом двоичного арифметического декодирования на основании обхода, чтобы получить другие двоичные разряды.
Таким образом, для первого двоичного разряда сторона кодирования/сторона декодирования может использовать режим САВАС, который обновляет определенную контекстную модель для кодирования/декодирования. Для других двоичных разрядов сторона кодирования/сторона декодирования может использовать режим САВАС, который не обновляет контекстную модель для кодирования/декодирования, т.е. он может использовать режим САВАС в режиме обхода.
В одном из примеров второе индексное значение может включать в себя М2 двоичных разрядов, при этом N2 двоичных разрядов в М2 двоичных разрядах получены путем контекстно-ориентированного адаптивного двоичного арифметического декодирования, оставшиеся (M2-N2) двоичных разрядов в М2 двоичных разрядах получены путем двоичного арифметического декодирования на основании обхода; М2 больше или равно N2. Например, второе индексное значение включает в себя четыре двоичных разряда, первый двоичный разряд получен путем контекстно-ориентированного адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели, второй, третий и четвертый двоичные разряды получены путем двоичного арифметического декодирования на основании обхода.
Например, для первого двоичного разряда во втором индексном значении сторона кодирования кодирует первый двоичный разряд способом контекстно-ориентированного адаптивного двоичного арифметического кодирования в соответствии с контекстной моделью. Сторона декодирования декодирует первый двоичный разряд способом контекстно-ориентированного адаптивного двоичного арифметического кодирования согласно контекстной модели, чтобы получить первый двоичный разряд.
Если во втором индексном значении есть другие двоичные разряды (например, второй двоичный разряд, третий двоичный разряд, четвертый двоичный разряд и т.д.), то сторона кодирования кодирует другие двоичные разряды способом двоичного арифметического кодирования на основании обхода. Сторона декодирования декодирует другие двоичные разряды способом двоичного арифметического декодирования на основании обхода, чтобы получить другие двоичные разряды.
Таким образом, для первого двоичного разряда сторона кодирования/сторона декодирования может использовать режим САВАС, который обновляет определенную контекстную модель для кодирования/декодирования. Для других двоичных разрядов сторона кодирования/сторона декодирования может использовать режим САВАС, который не обновляет контекстную модель для кодирования/декодирования, т.е. он может использовать режим САВАС в режиме обхода.
Вариант 16 осуществления: контекстная модель, соответствующая первому индексному значению, аналогична контекстной модели, соответствующей второму индексному значению. Альтернативно, контекстная модель, соответствующая первому индексному значению, отличается от контекстной модели, соответствующей второму индексному значению. Альтернативно, контекстная модель, соответствующая первому индексному значению и первой информации разделения, аналогична контекстной модели, соответствующей второму индексному значению и второй информации разделения; контекстная модель, соответствующая первому индексному значению и второй информации разделения, аналогична контекстной модели, соответствующей второму индексному значению и второй информации разделения; контекстная модель, соответствующая первому индексному значению и информации первого разделения, отличается от контекстной модели, соответствующей первому индексному значению и информации второго разделения. Альтернативно, контекстная модель, соответствующая первому индексному значению и первой информации разделения, контекстная модель, соответствующая второму индексному значению и первой информации разделения, контекстная модель, соответствующая первому индексному значению и второй информации разделения, контекстная модель, соответствующая второму индексному значению и второй информации разделения - все они являются различными. Альтернативно, контекстная модель, соответствующая первому индексному значению и первой информации разделения, отличается от контекстной модели, соответствующей второму индексному значению и первой информации разделения; контекстная модель, соответствующая первому индексному значению и второй информации разделения, аналогична контекстной модели, соответствующей второму индексному значению и второй информации разделения. Альтернативно, контекстная модель, соответствующая первому индексному значению и первой информации разделения, аналогична контекстной модели, соответствующей второму индексному значению и первой информации разделения; контекстная модель, соответствующая первому индексному значению и второй информации разделения, отличается от контекстной модели, соответствующей второму индексному значению и второй информации разделения. В одном из примеров первая информация разделения указывает, что информация разделения для треугольного подблока является способом разделения по главной диагонали; вторая информация разделения указывает, что информация разделения для треугольного подблока является способом разделения по субдиагонали.
Ниже приводится подробное описание вышеупомянутой контекстной модели в сочетании с несколькими конкретными сценами применения.
Сцена 1 применения: сторона кодирования/сторона декодирования может поддерживать контекстную модель A1Model. Контекстная модель, соответствующая первому индексному значению (индексное значение, используемое для указания первой целевой информации движения для первого треугольного подблока в режиме геометрического разбиения с треугольным разбиением), является контекстной моделью A1Model, контекстная модель, соответствующая второму индексному значению (индексное значение, используемое для указания второй целевой информации движения для второго треугольного подблока в режиме геометрического разбиения с треугольным разбиением), является контекстной моделью A1Model, и контекстная модель, соответствующая индексному значению в обычном режиме слияния, является контекстной моделью A1Model.
В одном из примеров, если сторона кодирования/сторона декодирования требует кодирования или декодирования первого индексного значения в соответствии с контекстной моделью, то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) используется контекстная модель A1Model. Если сторона кодирования/сторона декодирования требует кодирования или декодирования второго индексного значения в соответствии с контекстной моделью, то для кодирования или декодирования второго индексного значения (такого как второй двоичный разряд первого индексного значения) используется контекстная модель A1Model. Если сторона кодирования/сторона декодирования требует кодирования или декодирования индексного значения для обычного режима слияния в соответствии с контекстной моделью, то для кодирования или декодирования индексного значения для обычного режима слияния (например, первого двоичного разряда индексного значения для обычного режима слияния) используется контекстная модель A1Model.
Сцена 2 применения: сторона кодирования/сторона декодирования может поддерживать контекстную модель B1Model и контекстную модель B2Model. Контекстная модель, соответствующая первому индексному значению, является контекстной моделью B1Model, контекстная модель, соответствующая второму индексному значению, является контекстной моделью B1Model, а контекстная модель, соответствующая индексному значению обычного режима слияния, является контекстной моделью B2Model.
В одном из примеров, если сторона кодирования/сторона декодирования требует кодирования или декодирования первого индексного значения в соответствии с контекстной моделью, то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) используется контекстная модель B1Model. Если сторона кодирования/сторона декодирования требует кодирования или декодирования второго индексного значения в соответствии с контекстной моделью, для кодирования или декодирования второго индексного значения (такого как второй двоичный разряд первого индексного значения) используется контекстная модель B1Model. Если сторона кодирования/сторона декодирования требует кодирования или декодирования индексного значения для обычного режима слияния в соответствии с контекстной моделью, то для кодирования или декодирования индексного значения обычного режима слияния (например, первого двоичного разряда индексного значения для обычного режима слияния) используется контекстная модель B2Model.
Сцена 3 применения: сторона кодирования/сторона декодирования может поддерживать контекстную модель С1, контекстную модель С2 и контекстную модель С3. Контекстная модель, соответствующая первому индексному значению, является контекстной моделью С1, контекстная модель, соответствующая второму индексному значению, является контекстной моделью С2, а контекстная модель, соответствующая индексному значению для обычного режима слияния, является контекстной моделью С3.
В одном из примеров, если сторона кодирования/сторона декодирования требует кодирования или декодирования первого индексного значения в соответствии с контекстной моделью, то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) используется контекстная модель С1. Если сторона кодирования/сторона декодирования требует кодирования или декодирования второго индексного значения в соответствии с контекстной моделью, то для кодирования или декодирования второго индексного значения (такого как второй двоичный разряд первого индексного значения) используется контекстная модель С2. Если сторона кодирования/сторона декодирования требует кодирования или декодирования индексного значения для обычного режима слияния в соответствии с контекстной моделью, то для кодирования или декодирования индексного значения обычного режима слияния (например, первого двоичного кода индексного значения для обычного режима слияния) используется контекстная модель С3.
Сцена 4 применения: сторона кодирования/сторона декодирования может поддерживать контекстную модель D1, контекстную модель D2 и контекстную модель D3. В одном из примеров контекстная модель, соответствующая первому индексному значению и первой информации разделения, является контекстной моделью D1; контекстная модель, соответствующая второму индексному значению и первой информации разделения, является контекстной моделью D1. Контекстная модель, соответствующая первому индексному значению и второй информации разделения, является контекстной моделью D2; контекстная модель, соответствующая второму индексному значению и второй информации разделения, является контекстной моделью D2. Контекстная модель, соответствующая индексному значению для обычного режима слияния (такого как обычный режим слияния), является контекстной моделью D3.
В одном из примеров, если сторона кодирования/сторона декодирования требует кодирования или декодирования первого индексного значения в соответствии с контекстной моделью, то сначала определяется информация разделения для треугольного подблока; если информация разделения для треугольного подблока является первой информацией разделения (указывающей, что текущий блок разделен на первый треугольный подблок и второй треугольный подблок в соответствии с главной диагональю (угол разделения 45 градусов от горизонтального правого направления)), то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) используется контекстная модель D1; если информация разделения для треугольного подблока является второй информацией разделения (указывающей, что текущий блок разделен на первый треугольный подблок и второй треугольный подблок в соответствии с субдиагональю (угол разделения 135 градусов от горизонтального правого направления)), то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) используется контекстная модель D2. Если сторона кодирования/сторона декодирования требует кодирования или декодирования второго индексного значения в соответствии с контекстной моделью, то сначала определяется информация разделения для треугольного подблока; если информация разделения для треугольного подблока является первой информацией разделения, то для кодирования или декодирования второго индексного значения (такого как первый двоичный разряд второго индексного значения) используется контекстная модель D1; если информация разделения для треугольного подблока является второй информацией разделения, то для кодирования или декодирования второго индексного значения (такого как первый двоичный разряд второго индексного значения) используется контекстная модель D2; если сторона кодирования/сторона декодирования требует кодирования или декодирования индексного значения для обычного режима слияния в соответствии с контекстной моделью, то для кодирования или декодирования индексного значения обычного режима слияния (например, первого двоичного разряда индексного значения для обычного режима слияния) используется контекстная модель D3.
Сцена 5 применения: сторона кодирования/сторона декодирования может поддерживать контекстную модель Е1, контекстную модель Е2, контекстную модель Е3, контекстную модель Е4 и контекстную модель Е5. В одном из примеров контекстная модель, соответствующая первому индексному значению и первой информации первого разделения, является контекстной моделью Е1; контекстная модель, соответствующая первому индексному значению и второй информации разделения, является контекстной моделью Е2; контекстная модель, соответствующая второму индексному значению и первой информации разделения, является контекстной моделью Е3; контекстная модель, соответствующая второму индексному значению и второй информации разделения, является контекстной моделью Е4. Контекстная модель, соответствующая индексному значению для обычного режима слияния (такого как обычный режим слияния), является контекстной моделью Е5.
В одном из примеров, если сторона кодирования/сторона декодирования кодирует или декодирует первое индексное значение в соответствии с контекстной моделью, то определяется информация разделения для треугольного подблока; если информация разделения треугольного подблока является первой информацией разделения, то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) контекстная модель Е1 используется; если информация разделения для треугольного подблока является второй информацией разделения, то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) используется контекстная модель Е2. Если сторона кодирования/сторона декодирования требует кодирования или декодирования второго индексного значения в соответствии с контекстной моделью, то сначала определяется информация разделения для треугольного подблока; если информация разделения для треугольного подблока является первой информацией разделения, то для кодирования или декодирования второго индексного значения (такого как первый двоичный разряд второго индексного значения) используется контекстная модель Е3; если информация разделения для треугольного подблока является второй информацией разделения, то для кодирования или декодирования второго индексного значения (такого как первый двоичный разряд второго индексного значения) используется контекстная модель Е4; если сторона кодирования/сторона декодирования требует кодирования или декодирования индексного значения для обычного режима слияния в соответствии с контекстной моделью, то для кодирования или декодирования индексного значения для обычного режима слияния (такого как первый двоичный разряд индексного значения для обычного режима слияния) используется контекстная модель Е5.
Сцена 6 применения: сторона кодирования/сторона декодирования может поддерживать контекстную модель F1, контекстную модель F2, контекстную модель F3 и контекстную модель F4. В одном из примеров контекстная модель, соответствующая первому индексному значению и первой информации разделения, может быть контекстной моделью F1; контекстная модель, соответствующая второму индексному значению и первой информации разделения, может быть контекстной моделью F2. Контекстная модель, соответствующая первому индексному значению и второй информации разделения, может быть контекстной моделью F3; контекстная модель, соответствующая второму индексному значению и второй информации разделения, может быть контекстной моделью F3. Контекстная модель, соответствующая индексному значению для обычного режима слияния (такого как обычный режим слияния), является контекстной моделью F4.
В одном из примеров, если сторона кодирования/сторона декодирования кодирует или декодирует первое индексное значение в соответствии с контекстной моделью, то определяется информация разделения для треугольного подблока; если информация разделения для треугольного подблока является первой информацией разделения, то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) используется контекстная модель F1; если информация разделения для треугольного подблока является второй информацией разделения, то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) используется контекстная модель F3. Если сторона кодирования/сторона декодирования требует кодирования или декодирования второго индексного значения в соответствии с контекстной моделью, то сначала определяется информация разделения для треугольного подблока; если информация разделения для треугольного подблока является первой информацией разделения, то для кодирования или декодирования второго индексного значения (такого как первый двоичный разряд второго индексного значения) используется контекстная модель F2; если информация разделения для треугольного подблока является второй информацией разделения, то для кодирования или декодирования второго индексного значения (такого как первый двоичный разряд второго индексного значения) используется контекстная модель F3; если сторона кодирования/сторона декодирования требует кодирования или декодирования индексного значения для обычного режима слияния в соответствии с контекстной моделью, то для кодирования или декодирования индексного значения для обычного режима слияния (такого как первый двоичный разряд индексного значения для обычного режима слияния) используется контекстная модель F4.
Сцена 7 применения: сторона кодирования/сторона декодирования может поддерживать контекстную модель G1, контекстную модель G2, контекстную модель G3 и контекстную модель G4. В одном из примеров контекстная модель, соответствующая первому индексному значению и первой информации разделения, может быть контекстной моделью G1; контекстная модель, соответствующая второму индексному значению и первой информации разделения, может быть контекстной моделью G1. Контекстная модель, соответствующая первому индексному значению и второй информации разделения, может быть контекстной моделью G2; контекстная модель, соответствующая второму индексному значению и второй информации разделения, может быть контекстной моделью G3. Контекстная модель, соответствующая индексному значению для обычного режима слияния (такого как обычный режим слияния), является контекстной моделью G4.
Если сторона кодирования/сторона декодирования кодирует или декодирует первое индексное значение в соответствии с контекстной моделью, то определяется информация разделения для треугольного подблока; если информация разделения для треугольного подблока является первой информацией разделения, то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) используется контекстная модель G1; если информация разделения для треугольного подблока является второй информацией разделения, то для кодирования или декодирования первого индексного значения (такого как первый двоичный разряд первого индексного значения) используется контекстная модель G2. Если сторона кодирования/сторона декодирования требует кодирования или декодирования второго индексного значения в соответствии с контекстной моделью, то сначала определяется информация разделения для треугольного подблока; если информация разделения для треугольного подблока является первой информацией разделения, то для кодирования или декодирования второго индексного значения (такого как первый двоичный разряд второго индексного значения) используется контекстная модель G1; если информация разделения для треугольного подблока является второй информацией разделения, то для кодирования или декодирования второго индексного значения (такого как первый двоичный разряд второго индексного значения) используется контекстная модель G3; если сторона кодирования/сторона декодирования требует кодирования или декодирования индексного значения для обычного режима слияния в соответствии с контекстной моделью, то для кодирования или декодирования индексного значения для обычного режима слияния (такого как первый двоичный разряд индексного значения для обычного режима слияния) используется контекстная модель G4.
Вариант 17 осуществления: сторона кодирования сначала кодирует информацию разделения для треугольного подблока, а затем кодирует первое индексное значение и второе индексное значение. Сторона декодирования сначала декодирует информацию разделения для треугольного подблока, а затем декодирует первое индексное значение и второе индексное значение. Альтернативно, сторона кодирования кодирует первое индексное значение и второе индексное значение, а затем кодирует информацию разделения для треугольного подблока. Сторона декодирования декодирует первое индексное значение и второе индексное значение, а затем декодирует информацию разделения для треугольного подблока.
Вариант 18 осуществления: на шагах 305 и 405 сторона кодирования/сторона декодирования выполняет компенсацию движения по первому треугольному подблоку на основании первой целевой информации движения, чтобы получить значение предсказания для первого треугольного подблока, и выполняет компенсацию движения по второму треугольному подблоку на основании второй целевой информации движения, чтобы получить значение предсказания для второго треугольного подблока. Вышеуказанный процесс также является процессом компенсации движения.
В одном примеров текущий блок может быть разделен на множество подблоков. Для каждого из подблоков, если подблок находится в первом треугольном подблоке, то компенсация движения по подблоку выполняется на основании первой целевой информации движения; если подблок находится во втором треугольном подблоке, то компенсация движения по подблоку выполняется на основании второй целевой информации движения; если подблок находится в первом треугольном подблоке и втором треугольном подблоке одновременно, то взвешенная компенсация движения (также называемая компенсацией взвешенного предсказания) по подблоку выполняется на основании первой целевой информации движения и второй целевой информации движения.
В одном из примеров текущий блок может быть разделен на подблок первой области, подблок второй области и подблок третьей области; причем подблок первой области находится в первом треугольном подблоке, а подблок второй области расположен во втором треугольном подблоке. Расстояние по вертикали между центром каждого подблока в подблоке третьей области и диагональю, разделяющей первый треугольный подблок и второй треугольный подблок, меньше заданного порогового значения; компенсация движения по подблоку первой области выполняется на основании первой целевой информации движения; компенсация движения по подблоку второй области выполняется на основании второй целевой информации движения; взвешенная компенсация движения выполняется по подблоку третьей области на основании первой целевой информации движения и второй целевой информации движения. Например, для каждого подблока в подблоке третьей области первое значение предсказания для подблока определяется на основании первой целевой информации движения; второе значение предсказания для подблока определяется на основании второй целевой информации движения; взвешенная компенсация по подблоку выполняется на основании первого значения предсказания, первого весового коэффициента, соответствующего первому значению предсказания, второго значения предсказания и второго весового коэффициента, соответствующего второму значению предсказания. Например, если подблок находится в первом треугольном подблоке, то первый весовой коэффициент больше второго весового коэффициента; если подблок находится во втором треугольном подблоке, то первый весовой коэффициент меньше второго весового коэффициента; если подблок находится на диагонали, то первый весовой коэффициент равен второму весовому коэффициенту. При этом «подблок находится на диагонали» означает, что центр подблока попадает на диагональ.
Как показано на фиг. 7D, что касается подблока области Z1 (т.е. подблока первой области), то подблок области Z1 находится в первом треугольном подблоке, и используется первая целевая информация движения для первого треугольного подблока для выполнения компенсации движения по подблоку области Z1, чтобы получить значение предсказания, при этом отсутствуют ограничения по процессу компенсации движения. Что касается подблока области Z2 (т.е. подблока второй области), то подблок области Z2 находится во втором треугольном подблоке, и используется вторая целевая информация движения для второго треугольного подблока для выполнения компенсации движения по подблоку области Z2, чтобы получить значение предсказания, при этом отсутствуют ограничения по процессу компенсации движения. Что касается подблоков в областях, отличных от области Z1 и области Z2 (т.е. подблок третьей области), к ним относятся подблок, отмеченный цифрой 1 (обозначен как подблок 1), и подблок, отмеченный цифрой 2 (обозначен как подблок 2), подблок, отмеченный цифрой 3 (обозначен как подблок 3), подблок отмеченный цифрой 4 (обозначен как подблок 4), подблок, отмеченный цифрой 5 (обозначен как подблок 5), подблок, отмеченный цифрой 6 (обозначенный как подблок 6), и подблок, отмеченный цифрой 7 (обозначенный как подблок 7).
Для каждого подблока 7, обозначенного как 7, значение Р1 предсказания для подблока 7 можно определить на основании первой целевой информации движения, а значение Р2 предсказания для подблока 7 можно определить на основании второй целевой информация движения, предположим, что первый весовой коэффициент значения Р1 предсказания равен а, а второй весовой коэффициент значения Р2 предсказания равен Ь, тогда взвешенная компенсация движения выполняется по подблоку 7, и значение предсказания после взвешенной компенсации движения может быть: P1*а+Р2*b. Поскольку подблок 7 находится в первом треугольном подблоке, первый весовой коэффициент а больше, чем второй весовой коэффициент b. Предположим, что а равно 7/8, a b равно 1/8, значение предсказания после взвешенной компенсации движения равно P1*7/8-P2*1/8.
Для каждого подблока 6, обозначенного как подблок 6, - см. подблок 7 в отношении процесса его обработки, который здесь не будет раскрываться повторно. Поскольку подблок 6 находится в первом треугольном подблоке, первый весовой коэффициент а больше, чем второй весовой коэффициент b, и поскольку подблок 6 находится ближе к области Р2, чем подблок 7, то первый весовой коэффициент а подблока 6 может быть меньше, чем первый весовой коэффициент а подблока 7. Например, первый весовой коэффициент а подблока 6 равен 6/8, a b равен 2/8, тогда значение предсказания после взвешенной компенсации движения равно Р1*5/8+P2*3/8.
Для каждого подблока 5, отмеченного цифрой 5, - см. подблок 7 в отношении процесса его обработки, который здесь не будет раскрываться повторно. Первый весовой коэффициент а подблока 5 равен 5/8, а второй весовой коэффициент b подблока 5 равен 3/8, тогда значение предсказания после взвешенной компенсации движения равно Р1*5/8+P2*3/8.
Для каждого подблока 4, отмеченного цифрой 4, - см. подблок 7 в отношении процесса его обработки, который здесь не будет раскрываться повторно. Поскольку подблок 4 расположен на диагонали, первый весовой коэффициент а может быть равен второму весовому коэффициенту b. Например, первый весовой коэффициент а подблока 4 равен 4/8, а второй весовой коэффициент b подблока 4 равен 4/8, тогда значение предсказания после взвешенной компенсации движения равно Р1*4/8+P2*4/8.
Для каждого подблока 3, отмеченного цифрой 3, - см. подблок 7 в отношении процесса его обработки, который здесь не будет раскрываться повторно. Первый весовой коэффициент а подблока 3 равен 3/8, а второй весовой коэффициент b подблока 3 равен 5/8, тогда значение предсказания после взвешенной компенсации движения равно Р1*3/8+P2*5/8.
Для каждого подблока 2, отмеченного цифрой 2, - см. подблок 7 в отношении процесса его обработки, который здесь не будет раскрываться повторно. Поскольку подблок 2 находится во втором треугольном подблоке, первый весовой коэффициент а может быть меньше второго весового коэффициента b. Например, первый весовой коэффициент а подблока 2 равен 2/8, а второй весовой коэффициент b подблока 2 равен 6/8, тогда значение предсказания после взвешенной компенсации движения равно Р1*2/8+P2*6/8.
Для каждого подблока 1, отмеченного цифрой 1, см. подблок 7 в отношении процесса его обработки, который здесь не будет раскрываться повторно. Поскольку подблок 1 находится во втором треугольном подблоке, первый весовой коэффициент а меньше второго весового коэффициента b. Поскольку подблок 2 находится ближе к области Р2, чем подблок 2, то первый весовой коэффициент а подблока 1 может быть меньше, чем первый весовой коэффициент а подблока 2. Например, первый весовой коэффициент а подблока 1 равен 1/8, a b равен 7/8, тогда значение предсказания после взвешенной компенсации движения равно Р1*1/8+P2*7/8.
Таким образом, в этом варианте осуществления предлагается набор весовых коэффициентов для компонента яркости. В направлении от области Z1 к области Z2 первый весовой коэффициент а каждого подблока равен {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8}. Например, первый весовой коэффициент а подблока 7 равен 7/8, первый весовой коэффициент а подблока 6 равен 6/8, первый весовой коэффициент а подблока 5 равен 5/8, первый весовой коэффициент а подблока 4 равен 4/8, первый весовой коэффициент а подблока 3 равен 3/8, первый весовой коэффициент а подблока 2 равен 2/8, и первый весовой коэффициент а подблока 1 равен 1/8. Вышеупомянутый компонент яркости означает, что значение Р1 предсказания является значением предсказания яркости, значение Р2 предсказания является значением предсказания яркости, и значение предсказания после взвешенной компенсации Р1*а+Р2*Ь также является значением предсказания яркости.
Как показано на фиг. 7D, этот вариант осуществления предлагает набор весовых коэффициентов для компонента цветности. В направлении от области Z1 к области Z2 первый весовой коэффициент а каждого подблока равен {6/8, 4/8, 2/8}. Например, первый весовой коэффициент а подблока 6 равен 6/8, первый весовой коэффициент а подблока 4 равен 4/8, и первый весовой коэффициент а подблока 2 равен 2/8. Вышеупомянутый компонент цветности означает, что значение Р1 предсказания является значением предсказания цветности, значение Р2 предсказания является значением предсказания цветности, и значение предсказания после взвешенной компенсации также является значением предсказания цветности.
Вариант 19 осуществления: на шагах 306 и 406 сторона кодирования/сторона декодирования сохраняет информацию движения для текущего блока. Первая целевая информация движения сохраняется для подблока в первом треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием; вторая целевая информация движения сохраняется для подблока во втором треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием; первая целевая информация движения, вторая целевая информация движения или двунаправленная информация движения сохраняются для подблока, по которому выполняется компенсация с взвешенным предсказанием.
Рассмотрим фиг. 7Е, предположим, что блок 2, блок 3, блок 4, блок 7, блок 8 и блок 12 являются подблоками в первом треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием, тогда первая целевая информация движения (т.е. первая целевая информация движения для первого треугольного подблока) может быть сохранена для блока 2, блока 3, блока 4, блока 7, блока 8 и блока 12. Предположим, что блок 5, блок 9, блок 10, блок 7, блок 14 и блок 15 являются подблоками во втором треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием, тогда вторая целевая информация движения (т.е. вторая целевая информация движения для второго треугольного подблока) может быть сохранена для блока 5, блока 9, блока 10, блока 13, блока 14 и блока 15. Предположим, что блок 1, блок 6, блок 11 и блок 16 являются подблоками, по которым выполняется компенсация с взвешенным предсказанием, тогда первая целевая информация движения, вторая целевая информация движения или двунаправленная информация движения могут быть сохранены для блока 1, блока 6, блока 11 и блока 16, конкретный способ сохранения может относиться к последующим вариантам осуществления.
Рассмотрим фиг. 7F, предположим, что блок 1, блок 2, блок 3, блок 5, блок 6 и блок 9 являются подблоками в первом треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием, тогда первая целевая информация движения (т.е. первая целевая информация движения для первого треугольного подблока) может быть сохранена для блока 1, блока 2, блока 3, блока 5, блока 6 и блока 9. Предположим, что блок 8, блок 11, блок 12, блок 14, блок 15 и блок 16 являются подблоками во втором треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием, тогда вторая целевая информация движения (т.е. вторая целевая информация движения для второго треугольный подблок) может быть сохранена для блока 8, блока 11, блока 12, блока 14, блока 15 и блока 16. Предположим, что блок 4, блок 7, блок 10 и блок 13 являются подблоками, по которым выполняется компенсация с взвешенным предсказанием, тогда первая целевая информация движения, вторая целевая информация движения или двунаправленная информация движения могут быть сохранены для блока 4, блока 7, блока 10 и блока 13, конкретный способ сохранения может относиться к последующим вариантам осуществления.
В одном из примеров информация движения может сохраняться для каждого подблока с размером 4*4. Конечно, размер подблока не ограничивается.
Вариант 20 осуществления: первая целевая информация движения сохраняется для подблока в первом треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием; вторая целевая информация движения сохраняется для подблока во втором треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием; первая целевая информация движения или вторая целевая информация движения сохраняется для подблока, по которому выполняется компенсация с взвешенным предсказанием.
Сцена 1 применения: непосредственное сохранение первой целевой информации движения для подблока, по которому выполняется компенсация с взвешенным предсказанием.
Сцена 2 применения: непосредственное сохранение второй целевой информации движения для подблока, по которому выполняется компенсация с взвешенным предсказанием.
Сцена 3 применения: сохранение первой целевой информации движения или второй целевой информации движения для подблока, по которому выполняется компенсация с взвешенным предсказанием, в соответствии с направлением разделения текущего блока (например, с направлением главной диагонали или направлением субдиагонали).
В одном из примеров, если направление разделения текущего блока является направлением субдиагонали (угол разделения 135 градусов от горизонтального правого направления), то для подблока сохраняется первая целевая информация движения. Если направление разделения текущего блока является направлением главной диагонали (угол разделения 45 градусов от горизонтального правого направления), то для подблока сохраняется вторая целевая информация движения. Или, если направлением разделения текущего блока является направление субдиагонали (угол разделения 135 градусов от горизонтального правого направления), то для подблока сохраняется вторая целевая информация движения. Если направление разделения текущего блока является направлением главной диагонали (угол разделения 45 градусов от горизонтального правого направления), то для подблока сохраняется первая информация движения.
Сцена 4 применения: сохранение первой целевой информации движения или второй целевой информации движения для подблока, по которому выполняется компенсация с взвешенным предсказанием, в соответствии с положением подблока (например, подблок на диагонали, выше диагонали, ниже диагонали и т.д.).
В одном из примеров, если подблок находится на диагонали или выше диагонали, то для подблока сохраняется первая целевая информация движения; если подблок находится ниже диагонали, то для подблока сохраняется вторая целевая информация движения. Или, если подблок находится на диагонали или ниже диагонали, то для подблока сохраняется вторая целевая информация движения; если подблок находится выше диагонали, то для подблока сохраняется первая целевая информация движения. Или, если подблок находится на диагонали или выше диагонали, то для подблока сохраняется вторая целевая информация движения; если подблок находится ниже диагонали, то для подблока сохраняется первая целевая информация движения. Или, если подблок находится на диагонали или ниже диагонали, то для подблока сохраняется первая целевая информация движения; если подблок находится выше диагонали, то для подблока сохраняется вторая целевая информация движения.
Сцена 5 применения: первая целевая информация движения или вторая целевая информация движения может быть сохранена для подблока, по которому выполняется компенсация с взвешенным предсказанием, в соответствии с положением подблока (например, подблока на диагонали, выше диагонали, ниже диагонали и т.д.) и направлением разделения текущего блока (например, направлением главной диагонали или направлением субдиагонали).
В одном из примеров, если подблок находится на диагонали, первая целевая информация движения или вторая целевая информация движения может быть сохранена для подблока на основании направления разделения текущего блока. Например, если направление разделения текущего блока является направлением субдиагонали, то для подблока сохраняется первая целевая информация движения. Если направление разделения текущего блока является направлением главной диагонали, то для подблока сохраняется вторая целевая информация движения. Или, если направление разделения текущего блока является направлением субдиагонали, то для подблока сохраняется вторая целевая информация движения. Если направление разделения текущего блока является направлением главной диагонали, то для подблока сохраняется первая целевая информация движения.
В одном из примеров, если подблок находится выше диагонали, то для подблока сохраняется первая целевая информация движения.
В одном из примеров, если подблок находится ниже диагонали, то для подблока сохраняется вторая целевая информация движения.
Вариант 21 осуществления: первая целевая информация движения сохраняется для подблока в первом треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием; вторая целевая информация движения сохраняется для подблока во втором треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием; первая целевая информация движения, вторая целевая информация движения или однонаправленная информация движения (однонаправленная информация движения, состоящая из первой целевой информации движения и второй целевой информации движения) сохраняются для подблока, по которому выполняется компенсация с взвешенным предсказанием.
Сцена 1 применения: для подблока, по которому выполняется компенсация с взвешенным предсказанием, если первая целевая информация движения и вторая целевая информация движения получены из разных списков, то первая целевая информация движения и вторая целевая информация движения, непосредственно объединяются в двунаправленную информацию движения, при этом двунаправленная информация движения (т.е. двунаправленная информация движения, состоящая из первой целевой информации движения и второй целевой информации движения) сохраняется для подблока. Если первая целевая информация движения и вторая целевая информация движения получены из одного списка, то для подблока сохраняется первая целевая информация движения.
Сцена 2 применения: для подблока, по которому выполняется компенсация с взвешенным предсказанием, если первая целевая информация движения и вторая целевая информация движения получены из разных списков, то первая целевая информация движения и вторая целевая информация движения непосредственно объединяются в двунаправленную информацию движения, при этом двунаправленная информация движения (т.е. двунаправленная информация движения, состоящая из первой целевой информации движения и второй целевой информации движения) сохраняется для подблока. Если первая целевая информация движения и вторая целевая информация движения получены из одного списка, то для подблока сохраняется вторая целевая информация движения.
Сцена 3 применения: для подблока, по которому выполняется компенсация с взвешенным предсказанием, если первая целевая информация движения и вторая целевая информация движения получены из разных списков, то первая целевая информация движения и вторая целевая информация движения, непосредственно объединяются в двунаправленную информацию движения, при этом двунаправленная информация движения (т.е. двунаправленная информация движения, состоящая из первой целевой информации движения и второй целевой информации движения) сохраняется для подблока. Если первая целевая информация движения и вторая целевая информация движения получены из одного списка, то первая целевая информация движения или вторая целевая информация движения сохраняется для подблока в соответствии с направлением разделения текущего блока (например, направление главной диагонали или направление субдиагонали).
В одном из примеров, если направление разделения текущего блока является направлением субдиагонали, то для подблока можно сохранить первую целевую информацию движения. Если направление разделения текущего блока является направлением главной диагонали, то для подблока можно сохранить вторую целевую информацию движения. Или, если направление разделения текущего блока является направлением субдиагонали, то для подблока можно сохранить вторую целевую информацию движения. Если направление разделения текущего блока является направлением главной диагонали, то для подблока можно сохранить первую целевую информацию движения.
Сцена 4 применения: для подблока, по которому выполняется компенсация с взвешенным предсказанием, если первая целевая информация движения и вторая целевая информация движения получены из разных списков, то первая целевая информация движения и вторая целевая информация движения, непосредственно объединяются в двунаправленную информацию движения, при этом двунаправленная информация движения (т.е. двунаправленная информация движения, состоящая из первой целевой информации движения и второй целевой информации движения) сохраняется для подблока. Если первая целевая информация движения и вторая целевая информация движения получены из одного списка, то первая целевая информация движения или вторая целевая информация движения сохраняется для подблока в соответствии с положением подблока (например, подблок на диагонали, выше диагонали, ниже диагонали и т.д.).
В одном из примеров, если подблок находится на диагонали или выше диагонали, то для подблока сохраняется первая целевая информация движения; если подблок находится ниже диагонали, то для подблока сохраняется вторая целевая информация движения. Или, если подблок находится на диагонали или ниже диагонали, то для подблока сохраняется вторая целевая информация движения; если подблок находится выше диагонали, то для подблока сохраняется первая целевая информация движения. Или, если подблок находится на диагонали или выше диагонали, то для подблока сохраняется вторая целевая информация движения; если подблок находится ниже диагонали, то для подблока сохраняется первая целевая информация движения. Или, если подблок находится на диагонали или ниже диагонали, то для подблока сохраняется первая целевая информация движения; если подблок находится выше диагонали, то для подблока сохраняется вторая целевая информация движения.
Сцена 5 применения: для подблока, по которому выполняется компенсация с взвешенным предсказанием, если первая целевая информация движения и вторая целевая информация движения получены из разных списков, то первая целевая информация движения и вторая целевая информация движения, непосредственно объединяются в двунаправленную информацию движения, при этом двунаправленная информация движения (т.е. двунаправленная информация движения, состоящая из первой целевой информации движения и второй целевой информации движения) сохраняется для подблока. Если первая целевая информация движения и вторая целевая информация движения получены из одного списка, то для подблока сохраняется первая целевая информация движения или вторая целевая информация движения в соответствии с положением подблока (например, подблок на диагонали, выше диагонали, ниже диагонали и т.д.) и направлением разделения текущего блока (например, направление главной диагонали или направление субдиагонали).
В одном из примеров, если подблок находится на диагонали, то для подблока можно сохранить первую целевую информацию движения или вторую целевую информацию движения на основании направления разделения текущего блока. Например, если направление разделения текущего блока является направлением субдиагонали, то для подблока сохраняется первая целевая информация движения. Если направление разделения текущего блока является направлением главной диагонали, то для подблока сохраняется вторая целевая информация движения. Или, если направление разделения текущего блока является направлением субдиагонали, то для подблока сохраняется вторая целевая информация движения. Если направление разделения текущего блока является направлением главной диагонали, то для подблока сохраняется первая целевая информация движения.
В одном из примеров, если подблок находится выше диагонали, то для подблока сохраняется первая целевая информация движения.
В одном из примеров, если подблок находится ниже диагонали, то для подблока сохраняется вторая целевая информация движения.
Сцена 6 применения: для подблока, по которому выполняется компенсация с взвешенным предсказанием, если первая целевая информация движения и вторая целевая информация движения получены из разных списков, то первая целевая информация движения и вторая целевая информация движения, непосредственно объединяются в двунаправленную информацию движения, при этом для подблока сохраняется двунаправленная информация движения (т.е. двунаправленная информация движения, состоящая из первой целевой информации движения и второй целевой информации движения). Если первая целевая информация движения и вторая целевая информация движения получены из одного списка, то для подблока сохраняется усредненное значение первой целевой информации движения и второй целевой информации движения, или для подблока сохраняется вторая целевая информация движения. Например, если опорный кадр списка, соответствующего первой целевой информации движения, совпадает с опорным кадром списка, соответствующего второй целевой информации движения, то для подблока сохраняется усредненное значение первой целевой информации движения и второй целевой информации движения.
В одном из примеров усредненное значение первой целевой информации движения и второй целевой информации движения может включать в себя: среднее значение первой целевой информации движения и второй целевой информации движения, например, среднее значение вектора движения в первой целевой информации движения и вектора движения во второй целевой информации движения, иначе говоря, их веса могут быть одинаковыми. Или средневзвешенное значение первой целевой информации движения и второй целевой информации движения, например, средневзвешенное значение первой целевой информации движения и второй целевой информации движения, иначе говоря, веса этих двух могут отличаться друг от друга.
В одном из примеров, если опорный кадр списка, соответствующего первой целевой информации движения, совпадает с опорным кадром списка, соответствующего второй целевой информации движения, то для подблока сохраняется усредненное значение первой целевой информации движения и второй целевой информации движения. Если опорный кадр списка, соответствующего первой целевой информации движения, отличается от опорного кадра списка, соответствующего второй целевой информации движения, то для подблока сохраняется первая целевая информация движения или вторая целевая информация движения в соответствии с направлением разделения текущего блока (например, направление главной диагонали или направление субдиагонали).
Например, если направление разделения текущего блока является направлением субдиагонали, то для подблока можно сохранить первую целевую информацию движения. Если направление разделения текущего блока является направлением главной диагонали, то для подблока можно сохранить вторую целевую информация движения. Или, если направление разделения текущего блока является направлением субдиагонали, то для подблока можно сохранить вторую целевую информацию. Если направление разделения текущего блока является направлением главной диагонали, то для подблока можно сохранить первую целевую информацию движения.
Сцена 7 применения: для подблока, по которому выполняется компенсация с взвешенным предсказанием, если первая целевая информация движения и вторая целевая информация движения получены из разных списков, то первая целевая информация движения и вторая целевая информация движения, непосредственно объединяются в двунаправленную информацию движения, при этом для подблока сохраняется двунаправленная информация движения. Если первая целевая информация движения и вторая целевая информация движения получены из одного списка, то для подблока можно сохранить первую целевую информацию движения или вторую целевую информацию движения в соответствии с информацией размера для текущего блока.
В одном из примеров, если значение ширины и значение высоты текущего блока равны, то для подблока сохраняется первая целевая информация движения или вторая целевая информация движения в соответствии с направлением разделения текущего блока. Например, если направление разделения является направлением субдиагонали, то для подблока может сохраняться первая целевая информация движения. Если направление разделения является направлением главной диагонали, то для подблока может сохраняться вторая целевая информация движения. Или, если направление разделения является направлением субдиагонали, то для подблока может сохраняться вторая целевая информация движения. Если направление разделения является направлением главной диагонали, то для подблока может сохраняться первая целевая информация движения.
В одном из примеров, если значение ширины и значение высоты текущего блока не равны, то для подблока сохраняется первая целевая информация движения или вторая целевая информация движения в зависимости от отношения ширины к высоте. Например, если значение высоты текущего блока больше, чем значение ширины текущего блока, то для подблока сохраняется первая целевая информация движения; если значение высоты текущего блока меньше, чем значение ширины текущего блока, то для подблока сохраняется вторая целевая информация движения.
Сцена 8 применения: для подблока, по которому выполняется компенсация с взвешенным предсказанием, может сохраняться двунаправленная информация движения, при этом двунаправленная информация движения получена по следующим правилам: если первая целевая информация движения и вторая целевая информация движения получены из разных списков, то первая целевая информация движения и вторая целевая информация движения непосредственно объединяются в двунаправленную информацию движения, причем для подблока сохраняется двунаправленная информация движения. В противном случае, если первая целевая информация движения и вторая целевая информация движения получены из списка, обозначенного как ListX (X=0/1), то:
если опорный кадр второй целевой информации движения совпадает с определенным опорным кадром из списка List(1-X), то вторая целевая информация движения масштабируется по этому опорному кадру, и первая целевая информация движения и масштабированная вторая целевая информация движения объединяются в двунаправленную информацию движения;
если опорный кадр первой целевой информации движения совпадает с определенным опорным кадром из списка List(1-X), то первая целевая информация движения масштабируется по этому опорному кадру, при этом вторая целевая информация движения и масштабированная первая целевая информация движения объединяются в двунаправленную информацию движения;
в противном случае эти подблоки, использующие компенсацию с взвешенным предсказанием, сохраняют только первую целевую информацию движения.
Вариант 22 осуществления:
На основании той же изобретательской концепции, что и вышеприведенный способ, вариант осуществления настоящей заявки также предлагает устройство кодирования и декодирования, которое применяется на стороне кодирования или стороне декодирования. На фиг.8 представлена структурная схема аппарата, который может включать в себя:
модуль 81 разделения, выполненный с возможностью разделения, если характеристическая информация текущего блока соответствует заданным условиям, текущего блока на первый треугольный подблок и второй треугольный подблок; модуль 82 построения, выполненный с возможностью построения списка информации движения для текущего блока, причем список информации движения включает в себя множество элементов кандидатной информации движения; модуль 83 получения, выполненный с возможностью получения первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения, при этом первая целевая информация движения отличается от второй целевой информация движения; и модуль 84 кодирования и декодирования, выполненный с возможностью выполнения компенсации движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; выполнение компенсации движения по второму треугольному подблоку на основании второй целевой информации движения для получения значения предсказания для второго треугольного подблока.
В одном их примеров характеристическая информация включает в себя одно или более из следующего: режим информации движения, информация размера, тип сегмента и информация управления переключением уровня последовательности.
Модуль 81 разделения дополнительно выполнен с возможностью определения, если характеристическая информация включает в себя режим информации движения, и режим информации движения соответствует по меньшей мере одному из следующих условий, что режим информации движения соответствует заданным условиям;
режим информации движения для текущего блока является режимом слияния или режимом пропуска;
режим информации движения для текущего блока является режимом слияния или режимом пропуска, при этом режим информации движения для текущего блока не является каким-либо из других типов подрежимов слияния или подрежимов пропуска, кроме триангуляционного подрежима предсказания;
режим информации движения для текущего блока является режимом слияния, при этом режим информации движения для текущего блока не является каким-либо из обычного подрежима слияния, подрежима MMVD, подрежима слияния SB, подрежима CIIP;
режим информации движения для текущего блока является режимом пропуска, при этом режим информации движения для текущего блока не является каким-либо из обычного подрежима слияния, подрежима MMVD или подрежима слияния SB.
Модуль 81 разделения дополнительно выполнен с возможностью определения, если характеристическая информация включает в себя тип сегмента, и тип сегмента соответствует по меньшей мере одному из следующих условий, что тип сегмента удовлетворяет заданным условиям;
тип сегмента указывает, что текущий сегмент, в котором находится текущий блок, является В-сегментом;
тип сегмента указывает, что текущий сегмент, в котором находится текущий блок, допускает внутриблочное копирование.
Модуль 81 разделения дополнительно выполнен с возможностью определения, если характеристическая информация информацию управления переключением уровня последовательности, и информация управления переключением уровня последовательности позволяет текущему блоку использовать режим геометрического разбиения с треугольным разбиением, что информация управления переключением уровня последовательности соответствует заданным условиям.
Модуль 81 разделения дополнительно выполнен с возможностью определения, если характеристическая информация содержит информацию размера, и информация размера соответствует по меньшей мере одному из следующих условий, что информация размера соответствует заданным условиям;
значение ширины текущего блока больше или равно первому пороговому значению и меньше или равно второму пороговому значению;
значение высоты текущего блока больше или равно третьему пороговому значению и меньше или равно четвертому пороговому значению;
значение площади текущего блока больше или равно пятому пороговому значению и меньше или равно шестому пороговому значению;
значение площади текущего блока больше или равно седьмому пороговому значению;
значение площади текущего блока меньше или равно восьмому пороговому значению;
значение ширины текущего блока меньше или равно девятому пороговому значению, и значение высоты текущего блока меньше или равно десятому пороговому значению.
Когда способ кодирования и декодирования применяется к стороне декодирования для разделения текущего блока на первый треугольный подблок и второй треугольный подблок, модуль 81 разделения дополнительно выполнен с возможностью: получения первой информации индикации из кодированного битового потока, причем первая информация индикации используется для указания информации разделения для треугольного подблока; разделение, если информация разделения для треугольного подблока является режимом разделения по главной диагонали, текущего блока на первый треугольный подблок и второй треугольный подблок в соответствии с главной диагональю текущего блока; и разделение, если информация разделения треугольного подблока является режимом разделения по субдиагонали, текущего блока на первый треугольный подблок и второй треугольный подблок в соответствии с субдиагональю текущего блока.
В одном из примеров, первая информация индикации получена путем двоичного арифметического декодирования на основании обхода; или первая информация индикации получена путем контекстно-ориентированного адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели.
Для построения списка информации движения для текущего блока модуль 82 построения, в частности, выполнен с возможностью:
построения списка информации движения для текущего блока с использованием метода построения списка информации движения в обычном режиме слияния.
Когда способ кодирования и декодирования применяется к стороне декодирования для получения первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения, модуль 83 получения, в частности, выполнен с возможностью:
получения второй информации индикации из кодированного битового потока, при этом вторая информация индикации используется для указания первого индексного значения первой целевой информации движения в списке информации движения и второго индексного значения второй целевой информации движения в списке информации движения;
получение, на основании второй информации указания, кандидатной информации движения, соответствующей первому индексному значению из списка информации движения, и определение полученной кандидатной информации движения, соответствующей первому индексному значению, в качестве первой целевой информации движения для первого треугольного подблока; и
получение, на основании второй информации индикации, кандидатной информации движения, соответствующей второму индексному значению из списка информации движения, и определение полученной кандидатной информации движения, соответствующей второму индексному значению, в качестве второй целевой информации движения для второго треугольного подблока.
Первое индексное значение получено посредством двоичного арифметического декодирования на основании обхода; или первое индексное значение получено посредством контекстно-ориентированного адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели; второе индексное значение получено посредством двоичного арифметического декодирования на основании обхода; или второе индексное значение получено посредством контекстно-ориентированного адаптивного двоичного арифметического декодирования, выполняемого на основании контекстной модели.
Первое индексное значение включает в себя М1 двоичных разрядов, причем N1 двоичных разрядов в указанных М1 двоичных разрядах получено посредством контекстно-ориентированного адаптивного двоичного арифметического декодирования, остальные (M1-N1) двоичных разрядов в М1 двоичных разрядах получено посредством двоичного арифметического декодирования на основании обхода; при этом М1 - положительное целое число, большее или равное 1, N1 - положительное целое число, большее или равное 1, причем М1 больше или равно N1.
Второе индексное значение включает в себя М2 двоичных разрядов, причем N2 двоичных разрядов в указанных М2 двоичных разрядах получено посредством контекстно-ориентированного адаптивного двоичного арифметического декодирования, остальные (M2-N2) двоичных разрядов в М2 двоичных разрядах получены посредством двоичного арифметического декодирования на основании обхода; при этом М2 - положительное целое число, большее или равное 1, N2 - положительное целое число, большее или равное 1, причем М2 больше или равно N1.
Контекстная модель, соответствующая первому индексному значению, аналогична контекстной модели, соответствующей второму индексному значению; или контекстная модель, соответствующая первому индексному значению, отличается от контекстной модели, соответствующей второму индексному значению.
Для получения, на основании второй информации индикации, кандидатной информации движения, соответствующей первому индексному значению из списка информации движения, и определения полученной кандидатной информации движения, соответствующей первому индексному значению, в качестве первой целевой информации движения для первого треугольного подблока, модуль 83 получения, в частности, выполнен с возможностью:
определение, если первое индексное значение является четным числом, и кандидатная информация движения, соответствующая первому индексному значению, включает в себя однонаправленную информацию движения, соответствующую списку list0, однонаправленной информации движения, соответствующей list0, в качестве первой целевой информации движения для первого треугольного подблока;
определение, если первое индексное значение четным числом, и кандидатная информация движения, соответствующая первому индексному значению, не включает в себя однонаправленную информацию движения, соответствующую списку list0, однонаправленной информации движения, соответствующей списку list1, в качестве первой целевой информации движения для первого треугольного подблока;
определение, если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первому индексному значению, включает в себя однонаправленную информацию движения, соответствующую списку list1, однонаправленной информации движения, соответствующей list1, в качестве первой целевой информации движения для первого треугольного подблока;
определение, если первое индексное значение является нечетным числом, и кандидатная информация движения, соответствующая первомуиндексному значению, не включает в себя однонаправленную информацию движения, соответствующую списку list1, однонаправленной информации движения, соответствующей списку list0, в качестве первой целевой информации движения для первого треугольного подблока;
получение кандидатной информации движения, соответствующей второму индексному значению из списка информации движения, и определение полученной кандидатной информации движения, соответствующей второму индексному значению, в качестве второй целевой информации движения для второго треугольного подблока включает в себя:
определение, если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, включает в себя однонаправленную информацию движения, соответствующую списку list0, однонаправленной информации движения, соответствующей list0, в качестве второй целевой информации движения для второго треугольного подблока;
определение, если второе индексное значение является четным числом, и кандидатная информация движения, соответствующая второму индексному значению, не включает в себя однонаправленную информацию движения, соответствующую списку list0, однонаправленной информации движения, соответствующей списку list1, в качестве второй целевой информации движения для второго треугольного подблока;
определение, если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, включает в себя однонаправленную информацию движения, соответствующую списку list1, однонаправленной информации движения, соответствующей list1, в качестве второй целевой информации движения для второго треугольного подблока;
определение, если второе индексное значение является нечетным числом, и кандидатная информация движения, соответствующая второму индексному значению, не включает в себя однонаправленную информацию движения, соответствующую списку list1, однонаправленной информации движения, соответствующей списку list0, в качестве второй целевой информации движения для второго треугольного подблока.
Модуль 83 получения дополнительно выполнен с возможностью: получения первого кандидатного набора и второго кандидатного набора, причем первый кандидатный набор включает в себя элементы кандидатной информации движения в списке информации движения, второй кандидатный набор включает в себя элементы кандидатной информации движения в списке информации движения, и кандидатная информация движения в первом кандидатном наборе не является точно такой же, как кандидатная информация движения во втором кандидатном наборе; получения кандидатной информации движения, соответствующей первому индексному значению, из первого кандидатного набора, и определения полученной кандидатной информации движения, соответствующей первому индексному значению, в качестве первой целевой информации движения для первого треугольного подблока; и
получения кандидатной информации движения, соответствующей второму индексному значению из второго кандидатного набора, и определения полученной кандидатной информации движения, соответствующей второму индексному значению, в качестве второй целевой информации движения для второго треугольного подблока.
Аппарат дополнительно включает в себя: модуль хранения, выполненный с возможностью сохранения первой целевой информации движения для подблока в первом треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием; сохранения второй целевой информации движения для подблока во втором треугольном подблоке, по которому выполняется компенсация с невзвешенным предсказанием; сохранения первой целевой информации движения, второй целевой информации движения или двунаправленной информации движения для подблока, по которому выполняется компенсация с взвешенным предсказанием.
Для сохранения первой целевой информации движения, второй целевой информации движения или двунаправленной информации движения для подблока, по которому выполняется компенсация с взвешенным предсказанием, модуль хранения, в частности, выполнен с возможностью:
сохранения первой целевой информации движения для подблока; или
сохранения второй целевой информации движения для подблока; или
сохранения первой целевой информации движения или второй целевой информации движения для подблока в соответствии с положением подблока; или
сохранение первой целевой информации движения или второй целевой информации движения для подблока в соответствии с направлением разделения текущего блока; или
сохранения первой целевой информации движения или второй целевой информации движения для подблока в соответствии с положением подблока и направлением разделения текущего блока.
Для сохранения первой целевой информации движения, второй целевой информации движения или двунаправленной информации движения для подблока, по которому выполняется компенсация с взвешенным предсказанием, модуль хранения, в частности, выполнен с возможностью:
объединения, если первая целевая информация движения и вторая целевая информация движения получены из разных списков, первой целевой информации движения и второй целевой информации движения в двунаправленную информацию движения и сохранение двунаправленной информации движения для подблока;
сохранения, если первая целевая информация движения и вторая целевая информация движения получены из одного списка, первой целевой информации движения или второй целевой информации движения для подблока.
Для сохранения первой целевой информации движения или второй целевой информации движения для подблока модуль хранения, в частности, выполнен с возможностью: сохранения первой целевой информации движения для подблока; или
сохранения второй целевой информации движения для подблока; или
сохранения первой целевой информации движения или второй целевой информации движения для подблока в соответствии с положением подблока; или
сохранения первой целевой информации движения или второй целевой информации движения для подблока в соответствии с направлением разделения текущего блока; или
сохранения первой целевой информации движения или второй целевой информации движения для подблока в соответствии с положением подблока и направлением разделения текущего блока; или
сохранения первой целевой информации движения и второй целевой информации движения для подблока; или
сохранения первой целевой информации движения или второй целевой информации движения для подблока на основании информации размера для текущего блока.
Что касается аппаратного уровня устройства декодирования, обеспеченного вариантом осуществления настоящего приложения, схема его аппаратной архитектуры может быть, в частности, определена как показано на фиг. 9А. Оно включает в себя: процессор 91 и машиночитаемый носитель 92 информации, причем: машиночитаемый носитель 92 информации хранит машиноисполняемые инструкции, которые могут выполняться процессором 91; процессор 91 используется для выполнения машиноисполняемых инструкций для реализации способа, раскрытого в приведенных выше примерах настоящей заявки. Например, процессор 91 выполнен с возможностью выполнения машиноисполняемых инструкций для реализации следующих шагов: разделение, если характеристическая информация текущего блока соответствует заданным условиям, текущего блока на первый треугольный подблок и второй треугольный подблок; построение списка информации движения для текущего блока, причем список информации движения включает в себя множество элементов кандидатной информации движения; получение первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения, причем первая целевая информация движения отличается от второй целевой информации движения; выполнение компенсации движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; и выполнение компенсации движения по второму треугольному подблоку на основании второй целевой информации движения для получения значения предсказания для второго треугольного подблока.
Что касается аппаратного уровня устройства кодирования, обеспеченного вариантом осуществления настоящего приложения, схема его аппаратной архитектуры может быть, в частности, определена, как показано на фиг. 9В. Она включает в себя: процессор 93 и машиночитаемый носитель 94 информации, причем: машиночитаемый носитель 94 информации хранит машиноисполняемые инструкции, которые могут выполняться процессором 93; процессор 93 используется для выполнения машиноисполняемых инструкций для реализации способа, раскрытого в приведенных выше примерах настоящей заявки. Например, процессор 93 выполнен с возможностью выполнения машиноисполняемых инструкций для реализации следующих шагов: разделение, если характеристическая информация для текущего блока соответствует заданным условиям, текущего блока на первый треугольный подблок и второй треугольный подблок; построение списка информации движения для текущего блока, причем список информации движения включает в себя множество элементов кандидатной информации движения; получение первой целевой информации движения для первого треугольного подблока и второй целевой информации движения для второго треугольного подблока из списка информации движения, причем первая целевая информация движения отличается от второй целевой информации движения; выполнение компенсации движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; и выполнение компенсации движения для второго треугольного подблока на основании второй целевой информации движения для получения значения предсказания для второго треугольного подблока.
На основании той же концепции применения, что и вышеупомянутый способ, вариант осуществления настоящего приложения также обеспечивает машиночитаемый носитель данных, причем на машиночитаемом носителе данных хранятся несколько компьютерных инструкций. Компьютерные инструкции, при исполнении процессором, могут реализовывать способ кодирования и декодирования, раскрытый в приведенных выше примерах. При этом машиночитаемый носитель данных может быть любой электронной, магнитной, оптической или другой физической системой хранения, которая может содержать или хранить информацию, такую как исполняемые инструкции, данные и т.п.Например, машиночитаемый носитель данных может представлять собой: RAM (оперативную память), энергозависимую память, энергонезависимую память, флэш-память, накопитель (например, жесткий диск), твердотельный диск, любой тип накопителя, (например, диск, DVD и т.д.), или подобный носитель данных, или их комбинацию.
Система, устройство, модуль или блок, описанные в приведенных выше вариантах осуществления, могут быть реализованы посредством компьютерной микросхемы или объекта, либо посредством продукта с определенной функцией. Типовым устройством реализации является компьютер. Конкретный вид компьютера может быть персональным компьютером, портативным компьютером, сотовым телефоном, телефоном с камерой, смартфоном, персональным цифровым помощником, медиаплеером, навигационным устройством, приемопередатчиком электронной почты, планшетным компьютером, носимым устройством или любой комбинацией этих устройств.
Для удобства описания вышеупомянутые устройства разделены на различные блоки в соответствии с функциями для описания. Конечно, функции каждого блока могут быть реализованы в одном или более программных и/или аппаратных средствах при реализации настоящей заявки. Специалисты в данной области техники поймут, что варианты осуществления настоящей заявки могут быть обеспечены как способ, система или компьютерный программный продукт. Таким образом, настоящая заявка может иметь вид полностью аппаратного варианта осуществления, полностью программного варианта осуществления или варианта осуществления в сочетании программного обеспечения и аппаратных средств. Кроме того, вариант осуществления настоящей заявки может иметь вид компьютерного программного продукта, реализованного на одном или более пригодных для использования компьютером носителях информации (включая, но не ограничиваясь этим, дисковое хранение информации, CD-ROM, оптическое хранение информации и т.д.), включая, используемый компьютером программный код.
Настоящая заявка раскрывается с рассмотрением блок-схемы и/или структурной схемы способа, устройства (системы) и компьютерного программного продукта согласно варианту осуществления настоящей заявки. Следует понимать, что каждый алгоритм и/или блок в блок-схеме и/или структурной схеме и комбинация алгоритма и/или блока в блок-схеме и/или структурной схеме могут быть реализованы с помощью компьютерных программных инструкций. Эти компьютерные программные инструкции могут быть предоставлены процессору компьютера общего назначения, специализированному компьютеру, встроенному процессору или другому программируемому устройству обработки данных для создания вычислительной машины, при этом инструкции, выполняемые процессором компьютера или другим программируемым устройством обработки данных, генерируют аппарат, реализующий функции, указанные в одном процессе или нескольких процессах в блок-схеме и/или в одном блоке или нескольких блоках в блок-схеме.
Эти инструкции компьютерной программы также могут быть загружены в компьютер или другое программируемое устройство обработки данных, так что на компьютере или другом программируемом устройстве выполняется последовательность этапов операции для создания процесса, реализуемого компьютером, так что инструкции выполняются на компьютер или другое программируемое устройство обеспечивает этапы для реализации функций, указанных в одном процессе или нескольких процессах в блок-схеме и/или в одном блоке или нескольких блоках в блок-схеме. Описанные выше варианты осуществления являются просто вариантами осуществления настоящей заявки и не предназначены для ограничения настоящей заявки. Специалисты в данной области техники могут вносить различные модификации и изменения в настоящую заявку. Любые модификации, эквиваленты, улучшения и т.п. в рамках сущности и принципа заявки должны быть включены в объем заявки.
Изобретение относится к области кодирования и декодирования видеоизображений. Техническим результатом является повышение производительности кодирования видеоизображений. Результат достигается тем, что разделяют, если характеристическая информация текущего блока соответствует заданным условиям, текущий блок на первый треугольный подблок и второй треугольный подблок; выполняют построение списка информации движения для текущего блока, причем список информации движения включает в себя множество элементов кандидатной информации движения; получают первую целевую информацию движения для первого треугольного подблока и вторую целевую информацию движения для второго треугольного подблока из списка информации движения, причем первая целевая информация движения отличается от второй целевой информации движения; выполняют компенсацию движения по первому треугольному подблоку на основании первой целевой информации движения для получения значения предсказания для первого треугольного подблока; и выполняют компенсацию движения по второму треугольному подблоку на основании второй целевой информации движения для получения значения предсказания для второго треугольного подблока. 5 н. и 10 з.п. ф-лы, 17 ил., 4 табл.
1. Способ декодирования, содержащий следующее:
получают первую целевую информацию движения и вторую целевую информацию движения; причем первая целевая информация движения представляет собой целевую информацию движения для первого подблока, отделенного от текущего блока, а вторая целевая информация движения представляет собой целевую информацию движения для второго подблока, отделенного от текущего блока; причем первый подблок и второй подблок представляют собой два треугольных подблока, отделенных от текущего блока в соответствии с линией разбиения;
определяют первую область, вторую область и третью область, содержащиеся в текущем блоке, на основании первого подблока и второго подблока, отделенных в соответствии с линией разбиения, причем первая область расположена в первом подблоке, вторая область расположена во втором подблоке, линия разбиения расположена в третьей области, и между третьей областью и первым подблоком имеется область перекрытия, и между третьей областью и вторым подблоком имеется область перекрытия; и
сохраняют информацию движения для текущего блока, причем, если первая целевая информация движения и вторая целевая информация движения получены из одного и того же списка опорных кадров, вторую целевую информацию движения сохраняют в качестве целевой информации движения для третьей области.
2. Способ по п. 1, в котором информацию движения сохраняют в элементарном объеме блока 4*4 или два треугольных подблока представляют собой два треугольных подблока, отделенных от текущего блока в соответствии со способом разбиения, указанным посредством информации указания.
3. Способ по п. 1, в котором, если первая целевая информация движения и вторая целевая информация движения получены из разных списков опорных кадров, первую целевую информацию движения и вторую целевую информацию движения объединяют в двунаправленную информацию движения, которую затем сохраняют в качестве целевой информации движения для третьей области;
или подблок в первой области представляет собой подблок, по которому выполняют компенсацию с невзвешенным предсказанием, и первую целевую информацию движения сохраняют в качестве целевой информации движения для подблока в первой области; подблок во второй области представляет собой подблок, по которому выполняют компенсацию с невзвешенным предсказанием, и вторую целевую информацию движения сохраняют в качестве целевой информации движения для подблока во второй области.
4. Способ по п. 1, дополнительно содержащий, после определения первой области, второй области и третей области, содержащихся в текущем блоке, на основании первого подблока и второго подблока, отделенных в соответствии с линией разбиения:
выполняют компенсацию движения по каждому подблоку в первой области на основании первой целевой информации движения для получения значения предсказания для каждого подблока в первой области;
выполняют компенсацию движения по каждому подблоку во второй области на основании второй целевой информации движения для получения значения предсказания для каждого подблока во второй области;
выполняют взвешенную компенсацию движения по каждому подблоку в третьей области на основании первой целевой информации движения и второй целевой информации движения для получения значения предсказания для каждого подблока в третьей области;
определяют значение предсказания для текущего блока на основании значения предсказания для каждого подблока в первой области, значения предсказания для каждого подблока во второй области и значения предсказания для каждого подблока в третьей области;
причем выполнение взвешенной компенсации движения по каждому подблоку в третьей области на основании первой целевой информации движения и второй целевой информации движения для получения значения предсказания для каждого подблока в третьей области содержит:
для каждого подблока в третьей области определяют первое значение предсказания для подблока на основании первой целевой информации движения и определяют второе значение предсказания для подблока на основании второй целевой информации движения;
выполняют взвешенную компенсацию движения по подблоку на основании первого значения предсказания, первого весового коэффициента, соответствующего первому значению предсказания, второго значения предсказания, второго весового коэффициента, соответствующего второму значению предсказания, для получения значения предсказания для подблока.
5. Способ по п. 4, в котором:
если подблок в третьей области расположен в первом подблоке, первый весовой коэффициент, соответствующий первому значению предсказания для подблока, больше, чем второй весовой коэффициент, соответствующий второму значению предсказания для подблока;
если подблок в третьей области расположен во втором подблоке, первый весовой коэффициент, соответствующий первому значению предсказания для подблока, меньше, чем второй весовой коэффициент, соответствующий второму значению предсказания для подблока;
если подблок в третьей области расположен поперек линии разбиения, первый весовой коэффициент, соответствующий первому значению предсказания для подблока, равен второму весовому коэффициенту, соответствующему второму значению предсказания для подблока.
6. Способ по п. 1, в котором получение первой целевой информации движения и второй целевой информации движения содержит:
построение списка информации движения для текущего блока, при этом список информации движения включает в себя множество элементов кандидатной информации движения;
получение первой целевой информации движения для первого подблока и второй целевой информации движения для второго подблока из списка информации движения;
или первая целевая информация движения отличается от второй целевой информации движения.
7. Способ по п. 1, в котором получение первой целевой информации движения и второй целевой информации движения содержит:
построение списка информации движения для текущего блока, при этом список информации движения включает в себя множество элементов кандидатной информации движения;
выбор одного элемента кандидатной информации движения, соответствующего первому индексному значению, из списка информации движения на основании первого индексного значения, указанного посредством информации указания, и определение кандидатной информации движения в качестве первой целевой информации движения;
выбор другого элемента кандидатной информации движения, соответствующего второму индексному значению, из списка информации движения на основании второго индексного значения, указанного посредством информации указания, и определение кандидатной информации движения в качестве второй целевой информации движения.
8. Способ по п. 1, в котором этапы по п. 1 выполняют, когда режим информации движения текущего блока, информация о размере текущего блока, тип сегмента текущего сегмента и информация управления переключением уровня последовательности текущего блока соответствуют заданным условиям; при этом режим информации движения текущего блока, соответствующий заданному условию, включает в себя то, что режим информации движения текущего блока является режимом слияния и режим информации движения текущего блока не является обычным режимом слияния, режимом слияния на основании подблоков или комбинированным режимом межкадрового слияния и внутрикадрового предсказания; и при этом тип сегмента текущего сегмента, соответствующий заданному условию, включает в себя то, что текущий сегмент, в котором расположен текущий блок, является В-сегментом.
9. Способ по п. 4, в котором, если первое значение предсказания равно Р1, второе значение предсказания равно Р2, первый весовой коэффициент равен а, второй весовой коэффициент равен b, то значение предсказания после взвешенной компенсации движения подблока равно Р1*а+Р2*b, набор значений первого весового коэффициента представляет собой {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8}, а сумма первого весового коэффициента и второго весового коэффициента равна 1;
причем каждый подблок в третей области содержит компонент яркости, а набор весовых коэффициентов для компонента яркости представляет собой {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8};
для любого компонента яркости первое значение предсказания является значением предсказания яркости, определенным на основе первой целевой информации движения, второе значение предсказания является значением предсказания яркости, определенным на основе второй целевой информации движения, значение предсказания после взвешенной компенсации движения подблока представляет собой значение предсказания яркости после взвешенной компенсации движения, определенной на основе первого значения предсказания, второго значения предсказания, первого весового коэффициента и второго весового коэффициента.
10. Способ по п. 9, в котором каждый подблок в третьей области содержит компонент цветности, для компонента цветности первое значение предсказания представляет собой значение предсказания цветности, определенное на основе первой целевой информации движения, второе значение предсказания представляет собой значение предсказания цветности, определенное на основе второй целевой информации движения, значение предсказания после взвешенной компенсации движения подблока является значением предсказания цветности после взвешенной компенсации движения, определенной на основе первого значения предсказания, второго значения предсказания, первого весового коэффициента и второго весового коэффициента.
11. Аппарат декодирования, содержащий:
модуль, выполненный с возможностью получения первой целевой информации движения и второй целевой информации движения; причем первая целевая информация движения представляет собой целевую информацию движения для первого подблока, отделенного от текущего блока, а вторая целевая информация движения представляет собой целевую информацию движения для второго подблока, отделенного от текущего блока; причем первый подблок и второй подблок представляют собой два треугольных подблока, отделенных от текущего блока в соответствии с линией разбиения;
модуль, выполненный с возможностью определения первой области, второй области и третей области, содержащихся в текущем блоке, на основании первого подблока и второго подблока, отделенных в соответствии с линией разбиения, причем первая область расположена в первом подблоке, вторая область расположена во втором подблоке, линия разбиения расположена в третьей области, и между третьей областью и первым подблоком имеется область перекрытия, и между третьей областью и вторым подблоком имеется область перекрытия; и
модуль, выполненный с возможностью сохранения информации движения для текущего блока, причем, если первая целевая информация движения и вторая целевая информация движения получены из одного и того же списка опорных кадров, вторая целевая информация движения сохраняется в качестве целевой информации движения для третьей области.
12. Аппарат по п. 11, в котором информация движения сохраняется в элементарном объеме блока 4*4;
или, если первая целевая информация движения и вторая целевая информация движения получены из разных списков опорных кадров, первая целевая информация движения и вторая целевая информация движения объединяются в двунаправленную информацию движения, которая затем сохраняется в качестве целевой информации движения для третьей области;
или подблок в первой области представляет собой подблок, по которому выполняется компенсация с невзвешенным предсказанием, и первая целевая информация движения сохраняется в качестве целевой информации движения для подблока в первой области; подблок во второй области представляет собой подблок, по которому выполняется компенсация с невзвешенным предсказанием, и вторая целевая информация движения сохраняется в качестве целевой информации движения для подблока во второй области;
или аппарат дополнительно выполнен с возможностью:
выполнения компенсации движения по каждому подблоку в первой области на основании первой целевой информации движения для получения значения предсказания для каждого подблока в первой области;
выполнения компенсации движения по каждому подблоку во второй области на основании второй целевой информации движения для получения значения предсказания для каждого подблока во второй области;
выполнения взвешенной компенсации движения по каждому подблоку в третьей области на основании первой целевой информации движения и второй целевой информации движения для получения значения предсказания для каждого подблока в третьей области;
определения значения предсказания для текущего блока на основании значения предсказания для каждого подблока в первой области, значения предсказания для каждого подблока во второй области и значения предсказания для каждого подблока в третьей области;
или выполнение взвешенной компенсации движения по каждому подблоку в третьей области на основании первой целевой информации движения и второй целевой информации движения для получения значения предсказания для каждого подблока в третьей области содержит:
для каждого подблока в третьей области, определение первого значения предсказания для подблока на основании первой целевой информации движения и определение второго значения предсказания для подблока на основании второй целевой информации движения;
выполнение взвешенной компенсации движения по подблоку на основании первого значения предсказания, первого весового коэффициента, соответствующего первому значению предсказания, второго значения предсказания, второго весового коэффициента, соответствующего второму значению предсказания, для получения значения предсказания для подблока.
13. Устройство декодирования, содержащее: процессор и машиночитаемый носитель данных, причем машиночитаемый носитель данных хранит машиноисполняемые инструкции, которые могут быть выполнены процессором;
процессор выполнен с возможностью выполнения машиноисполняемых инструкций для реализации способа по любому из пп. 1-10.
14. Электронное устройство декодирования, содержащее:
процессор; и
память для хранения инструкций, которые могут быть исполнены процессором;
причем процессор выполнен с возможностью реализации способа по любому из пп. 1-10.
15. Долговременный носитель информации, на котором хранятся инструкции, которые, при исполнении их процессором, обеспечивают реализацию процессором способа по любому из пп. 1-10.
CN 109819255 A, 2019.05.28 | |||
CN 109510991 A, 2019.03.22 | |||
WO 2012120582 A1, 2012.09.13 | |||
JP 2004289284 A, 2004.10.14 | |||
WO 2019039322 A1, 2019.02.28 | |||
KR 20190046704 A, 2019.05.07 | |||
US 9426487 B2, 2016.08.23 | |||
ОПРЕДЕЛЕНИЕ КОНТЕКСТОВ ДЛЯ КОДИРОВАНИЯ ДАННЫХ КОЭФФИЦИЕНТОВ ПРЕОБРАЗОВАНИЯ ПРИ КОДИРОВАНИИ ВИДЕО | 2013 |
|
RU2603537C2 |
Авторы
Даты
2023-06-02—Публикация
2020-06-17—Подача