Устройство декодирования движущегося изображения, способ декодирования движущегося изображения и носитель записи
MOVING IMAGE DECODING DEVICE, MOVING IMAGE DECODING METHOD AND RECORDING MEDIUM

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Настоящее изобретение относится к технологиям кодирования и декодирования движущихся изображений и, в частности, к технологиям кодирования и декодирования движущихся изображений с использованием компенсации движения.
Типичным стандартом системы кодирования движущегося изображения со сжатием является стандарт MPEG-4 AVC/H. 264 (ниже именуемый как AVC). В AVC используется компенсация движения, при которой кадр разделяется на прямоугольные блоки, ранее подвергнутый кодированию/декодированию кадр задается в качестве опорного кадра, и на основе этого опорного кадра осуществляется предсказание движения. Технику предсказания движения в соответствии с такой компенсацией движения называют межкадровым предсказанием. Межкадровое предсказание согласно AVC позволяет использовать в качестве опорных кадров множество кадров, выбирать для каждого блока наиболее подходящий кадр из множества таких кадров и выполнять компенсацию движения. Каждому опорному кадру присваивается опорный индекс, и с помощью этого опорного индекса опорный кадр определяется. При этом в В-кадре из опорных кадров, подвергнутых кодированию/декодированию, могут быть выбраны максимум два кадра, которые могут быть использованы для межкадровых предсказаний. Такие предсказания на основе двух опорных кадров делятся на L0-предсказание (предсказание по списку 0), используемое в основном для предсказания в прямом направлении, и L1-предсказание (предсказание по списку 1), используемое в основном для предсказания в обратном направлении.
Кроме того, определяется и би-предсказание, использующее одновременно два межкадровых предсказания - L0-предсказание и L1-предсказание. В случае би-предсказания делаются двунаправленные предсказания, сигналы, полученные в результате межкадровых предсказаний - L0-предсказания и L1-предсказания, умножаются на коэффициенты взвешивания, а результирующие сигналы накладываются один на другой с добавлением значений смещения, в результате чего генерируется конечный сигнал изображения, полученный с использованием межкадровых предсказаний. Коэффициенты взвешивания и значения смещения, используемые для взвешенного предсказания, задаются равными типичным значениям в единицах кадров для каждого опорного кадра каждого списка и кодируются. Информацией по кодированию, относящейся к межкадровому предсказанию, для каждого блока является режим предсказания с использованием двунаправленного предсказания - как L0-предсказания, так и L1-предсказания, а для каждого списка опорных кадров каждого блока - опорный индекс, определяющий опорный кадр, и вектор движения, представляющий направление движения и количество движения блока, причем такая информация по кодированию кодируется/декодируется.
В системе кодирования движущегося изображения, выполняющей компенсацию движения, для уменьшения количества кода вектора движения, генерируемого в каждом блоке, процесс предсказания выполняется для вектора движения. Согласно AVC за счет использования сильной корреляции между вектором движения, являющимся объектом кодирования, и векторами движения окружающих смежных блоков предсказываемый вектор движения вычисляется в результате предсказания на основе окружающих смежных блоков, вычисляется разность векторов движения, представляющая собой разность между вектором движения, являющимся объектом кодирования, и предсказываемым вектором движения, и разность векторов движения кодируется, за счет чего количество кода уменьшается.
В частности, как показано на фиг. 34А, на основе векторов движения окружающих смежных блоков А, В и С вычисляется среднее значение, которое задается в качестве предсказываемого вектора движения, и берется разность между вектором движения и предсказываемым вектором движения, за счет чего количество кода для вектора движения уменьшается. Однако, как показано на фиг. 34В, в случае, если размеры или формы блока, являющегося объектом кодирования, и смежных блоков отличаются одни от других, то при существовании множества смежных блоков с левой стороны в качестве блока предсказания задается самый верхний блок из смежных блоков, а при существовании множества смежных блоков с верхней стороны - самый левый блок из смежных блоков, и предсказание осуществляется на основе вектора движения заданного блока предсказания.
Кроме того, согласно технологии, раскрытой в патентном документе 1, вектор предсказания вычисляется на основе векторов движения множества блоков, смежных с блоком, являющимся объектом обработки, и информации по опорному кадру, и, следовательно, точность вектора предсказания повышается, за счет чего предотвращается увеличение количества кода вектора движения.
СПИСОК ССЫЛОК
Патентные документы
Патентный документ 1 - выложенная заявка на патент Японии, опубликованная под №2011-147172.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Однако, согласно способу, описанному в патентном документе 1, вследствие получения только одного вектора предсказания точность предсказания предсказываемого вектора движения может снижаться в зависимости от изображения, и эффективность кодирования может быть низкой.
В такой ситуации изобретатели настоящего изобретения пришли к пониманию необходимости уменьшения общего количества кода за счет дополнительного сжатия информации по кодированию в системе кодирования движущегося изображения с использованием компенсации движения.
Настоящее изобретение было сделано с учетом этих обстоятельств, и целью данного изобретения является создание технологии кодирования и декодирования движущегося изображения для повышения эффективности кодирования за счет уменьшения количества кода для разности векторов движения в результате вычисления кандидатов для предсказываемого вектора движения. Другой целью изобретения является создание технологии кодирования и декодирования движущегося изображения для повышения эффективности кодирования за счет уменьшения количества кода для информации по кодированию в результате вычисления кандидатов на информацию по кодированию.
Для решения указанной проблемы устройство кодирования движущегося изображения согласно одному аспекту изобретения является устройством, кодирующим движущееся изображение с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство кодирования движущегося изображения включает в себя: блок (121, 122) генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения; блок (123) удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью удаления кандидатов на предсказываемый вектор движения, являющихся идентичными среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата; блок (126) выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения; блок (127) вычисления вектора разности, выполненный с возможностью вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и блок (109) кодирования, выполненный с возможностью кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Согласно другому аспекту настоящего изобретения предлагается также устройство кодирования движущегося изображения, кодирующее движущееся изображение с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство кодирования движущегося изображения включает в себя: блок (121, 122) генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения; блок (123) удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов движения среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения, за исключением одного кандидата; блок (126) выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения; блок (127) вычисления вектора разности, выполненный с возможностью вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и блок (109) кодирования, выполненный с возможностью кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Согласно еще одному другому аспекту настоящего изобретения предлагается способ кодирования движущегося изображения. Этот способ является способом кодирования движущегося изображения для кодирования движущегося изображения с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, и включает в себя: этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения; этап удаления кандидатов на предсказываемый вектор движения, являющихся идентичными среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата; этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения; этап вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и этап кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Согласно еще одному другому аспекту настоящего изобретения предлагается способ кодирования движущегося изображения. Этот способ является способом кодирования движущегося изображения для кодирования движущегося изображения с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, и включает в себя: этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения; этап удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов движения среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения, за исключением одного кандидата; этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения; этап вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и этап кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Согласно еще одному другому аспекту настоящего изобретения предлагается устройство декодирования движущегося изображения, декодирующее битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения. Устройство декодирования движущегося изображения включает в себя: блок (202) декодирования, выполненный с возможностью декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения; блок (221, 222) генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения; блок (223) удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью удаления кандидатов на предсказываемый вектор движения, являющихся идентичными среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата; блок (225) выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и блок (226) вычисления вектора движения, выполненный с возможностью вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Согласно еще одному другому аспекту настоящего изобретения предлагается устройство декодирования движущегося изображения, декодирующее битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения. Устройство декодирования движущегося изображения включает в себя: блок (202) декодирования, выполненный с возможностью декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения; блок (221, 222) генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения; блок (223) удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов движения среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения, за исключением одного кандидата; блок (225) выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и блок (226) вычисления вектора движения, выполненный с возможностью вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Согласно еще одному другому аспекту настоящего изобретения предлагается способ декодирования движущегося изображения. Этот способ является способом декодирования движущегося изображения для декодирования битового потока, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения. Способ декодирования движущегося изображения включает в себя: этап декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения; этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения; этап удаления кандидатов на предсказываемый вектор движения, являющихся идентичными среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата; этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и этап вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Согласно еще одному другому аспекту настоящего изобретения предлагается способ декодирования движущегося изображения. Этот способ является способом декодирования движущегося изображения для декодирования битового потока, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, включающим в себя: этап декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения; этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения; этап удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов движения среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения, за исключением одного кандидата; этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и этап вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Кроме того, в качестве аспектов настоящего изобретения действительны также произвольные комбинации составляющих элементов, описанных выше, и модификации настоящего изобретения, связанные со способом, устройством, системой, носителем записи, компьютерной программой и т.п.
Настоящее изобретение позволяет осуществлять вычисление множества предсказываемых векторов движения и выбор оптимального предсказываемого вектора движения из множества предсказываемых векторов движения и, следовательно, уменьшать количество генерируемого кода для разности векторов движения, что обеспечивает повышение эффективности кодирования.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг. 1 - блок-схема, иллюстрирующая конфигурацию устройства кодирования движущегося изображения, реализующего способ предсказания вектора движения согласно варианту осуществления.
Фиг. 2 - блок-схема, иллюстрирующая конфигурацию устройства декодирования движущегося изображения, реализующего способ предсказания вектора движения согласно варианту осуществления.
Фиг. 3 - схематическая иллюстрация древовидных блоков и блоков кодирования.
Фиг. 4A-4D - схематические иллюстрации режимов разделения блоков предсказания.
Фиг. 5 - схематическая иллюстрация группы блоков предсказания.
Фиг. 6 - схематическая иллюстрация группы блоков предсказания.
Фиг. 7 - схематическая иллюстрация группы блоков предсказания.
Фиг. 8 - схематическая иллюстрация группы блоков предсказания.
Фиг. 9 - схематическая иллюстрация группы блоков предсказания.
Фиг. 10 - схематическая иллюстрация синтаксиса битового потока на уровне слайса, относящемся к способу предсказания вектора движения.
Фиг. 11 - схематическая иллюстрация синтаксиса битового потока на уровне блока предсказания, относящемся к способу предсказания вектора движения.
Фиг. 12 - блок-схема, иллюстрирующая подробную конфигурацию блока вычисления разности векторов движения, представленного на фиг. 1.
Фиг. 13 - блок-схема, иллюстрирующая подробную конфигурацию блока вычисления вектора движения, представленного на фиг. 2.
Фиг. 14 - блок-схема последовательности процесса вычисления разности векторов движения в блоке вычисления разности векторов движения, представленном на фиг. 1.
Фиг. 15 - блок-схема последовательности процесса вычисления вектора движения в блоке вычисления вектора движения, представленном на фиг. 2.
Фиг. 16 - блок-схема последовательности процесса извлечения кандидатов на предсказываемый вектор движения и создания списка предсказываемых векторов движения.
Фиг. 17 - блок-схема последовательности процесса извлечения кандидатов на предсказываемый вектор движения согласно первому варианту осуществления.
Фиг. 18 - блок-схема последовательности процесса извлечения кандидатов на предсказываемый вектор движения.
Фиг. 19 - блок-схема последовательности процесса извлечения кандидатов на предсказываемый вектор движения согласно первому варианту осуществления.
Фиг. 20 - блок-схема последовательности процесса вычисления масштаба вектора движения.
Фиг. 21 - блок-схема последовательности процесса вычисления масштаба вектора движения с использованием целочисленной арифметики.
Фиг. 22 - блок-схема последовательности процесса извлечения предсказываемого вектора движения на стороне декодирования согласно второму варианту осуществления.
Фиг. 23 - схематическая иллюстрация шаблона выбора предсказываемого вектора движения в случае определения, что предсказываемый вектор движения согласно второму варианту осуществления является кандидатом на предсказываемый вектор движения в пространстве.
Фиг. 24 - блок-схема последовательности процесса извлечения кандидатов на предсказываемый вектор движения.
Фиг. 25 - блок-схема последовательности процесса извлечения кадра другого времени.
Фиг. 26 - блок-схема последовательности процесса извлечения кандидата на блок предсказания для кадра другого времени.
Фиг. 27 - блок-схема последовательности процесса извлечения кандидатов на предсказываемый вектор движения.
Фиг. 28 - блок-схема последовательности процесса извлечения кандидатов на предсказываемый вектор движения.
Фиг. 29 - блок-схема последовательности процесса вычисления масштаба вектора движения.
Фиг. 30 - блок-схема последовательности процесса вычисления масштаба вектора движения с использованием целочисленной арифметики.
Фиг. 31 - блок-схема последовательности процесса добавления кандидатов на предсказываемый вектор движения в список кандидатов на предсказываемый вектор движения.
Фиг. 32 - блок-схема последовательности процесса удаления избыточных кандидатов на предсказываемый вектор движения из списка кандидатов на предсказываемый вектор движения.
Фиг. 33 - блок-схема последовательности процесса ограничения числа кандидатов на предсказываемый вектор движения.
Фиг. 34А и 34В - схематическая иллюстрация обычного способа вычисления предсказываемого вектора движения.
ПОДРОБНОЕ ОПИСАНИЕ
Этот вариант осуществления относится к кодированию движущегося изображения, и для повышения эффективности кодирования, в частности, кодирования движущегося изображения, при котором кадр разделяется на прямоугольные блоки, имеющие произвольный размер и произвольную форму, и компенсация движения выполняется в единицах блоков между кадрами, на основе векторов движения кодированных окружающих смежных блоков вычисляется множество предсказываемых векторов движения, а также вычисляется и кодируется вектор разности между вектором движения блока, являющегося объектом кодирования, и выбранным предсказываемым вектором движения, что позволяет уменьшить количество кода. В другом варианте изобретения за счет использования информации по кодированию кодированных окружающих смежных блоков оценивается информация по кодированию блока, являющегося объектом кодирования, что позволяет уменьшить количество кода. В случае декодирования движущегося изображения на основе векторов движения декодированных окружающих смежных блоков вычисляется множество предсказываемых векторов движения, а на основе вектора разности, декодированного из битового потока, и выбранного предсказываемого вектора движения вычисляется и декодируется вектор движения блока, являющегося объектом декодирования. Кроме того, за счет использования информации по кодированию декодированных окружающих смежных блоков оценивается информация по кодированию блока, являющегося объектом декодирования.
Прежде всего определим технологии и технические термины, используемые в этом варианте осуществления.
Древовидный блок и блок кодирования
В варианте осуществления, как показано на фиг. 3, внутри кадр разделяется на равновеликие единицы в виде квадратов произвольного одинакового размера. Такая единица определяется как древовидный блок и считается основной единицей управления адресами для определения блока, являющегося объектом кодирования/декодирования внутри кадра (блока, являющегося объектом кодирования в процессе кодирования, или блока, являющегося объектом декодирования в процессе обработки декодирования, что будет использоваться далее в этом значении, если не указано особо). За исключением случая монохромного изображения древовидный блок состоит из одного сигнала яркости и двух цветоразностных сигналов. Размер древовидного блока может быть свободно задан равным размеру, кратному двум, в соответствии с размером кадра или текстурой внутри кадра. Для оптимизации процесса кодирования в соответствии с текстурой внутри кадра при необходимости древовидный блок может состоять из блоков малого размера, полученных в результате иерархического разделения сигнала яркости и цветоразностного сигнала внутри древовидного блока на четыре части (на две части по вертикали и две части по горизонтали). Каждый из этих блоков определяется как блок кодирования и служит в качестве основной единицы процесса обработки во время выполнения процесса кодирования и процесса декодирования. За исключением случая монохромного изображения, блок кодирования также состоит из одного сигнала яркости и двух цветоразностных сигналов. Максимальный размер блока кодирования равен размеру древовидного блока. Блок кодирования минимального размера именуется минимальным блоком кодирования и может быть свободно задан равным размеру, кратному двум.
В случае, проиллюстрированном на фиг. 3, блок А кодирования является одним блоком кодирования, сформированным без разделения древовидного блока. Блок В кодирования является блоком кодирования, сформированным в результате разделения древовидного блока на четыре части. Блок С кодирования является блоком кодирования, сформированным в результате разделения блока, полученного при разделении древовидного блока на четыре части, еще на четыре части. Блок D кодирования является блоком кодирования, сформированным в результате двойного иерархического разделения блока, полученного при разделении древовидного блока на четыре части, еще на четыре части, и представляет собой блок кодирования минимального размера.
Режим предсказания
В единицах блоков кодирования переключение выполняется между внутрикадровым предсказанием MODEINTRA, при котором предсказание осуществляется на основе окружающих кодированных/декодированных сигналов изображения внутри кадра блока, являющегося объектом кодирования, и межкадрового предсказания MODE_INTER, при котором предсказание осуществляется на основе кодированных/декодированных сигналов изображения кадра, отличного от кадра блока, являющегося объектом кодирования. Режим идентификации внутрикадрового предсказания MODE_INTRA и межкадрового предсказания MODE_INTER определяется как режим PredMode предсказания. Режим PredMode предсказания имеет значение внутрикадрового предсказания MODE_INTRA или межкадрового предсказания MODE_INTER и кодирование может осуществляться по выбору с одним или другим значением.
Режим разделения, блок предсказания и единица предсказания
В случае, если внутрикадровое предсказание MODE_INTRA и межкадровое предсказание MODE_INTER делаются с разделением кадра внутри на блоки, то для дополнительного уменьшения размера блока, в котором выполняется переключение между внутрикадровым предсказанием и межкадровым предсказанием, при необходимости предсказания делаются с разделением блока кодирования на части. Режим идентификации способа разделения сигнала яркости и цветоразностного сигнала этого блока кодирования определяется как режим PartMode разделения. Кроме того, разделенные блоки определяются как блоки предсказания. Как показано на фиг. 4A-4D, в соответствии со способом разделения сигнала яркости блока кодирования определяется четыре вида режимов разделения PartMode. Режим PartMode разделения, при котором сигнал яркости блока кодирования не разделяется, и образуется один блок предсказания (фиг. 4А), определяется как , режим PartMode разделения, при котором сигнал яркости блока кодирования разделяется на две части в горизонтальном направлении и образуется два блока предсказания (фиг. 4В), определяется как , режим PartMode разделения, при котором сигнал яркости блока кодирования разделяется в вертикальном направлении, и образуется два блока предсказания (фиг. 4С), определяется как , а режим PartMode разделения, при котором сигнал яркости блока кодирования равномерно разделяется в горизонтальном и вертикальном направлениях, и образуется четыре блока предсказания (фиг. 4D), определяется как . Кроме того, при каждом режиме разделения PartMode в тех же пропорциях, что и сигнал яркости, в горизонтальном и вертикальном направлениях разделяется и цветоразностный сигнал.
Для определения каждого блока предсказания внутри блока кодирования блокам предсказания, располагающимся внутри блока кодирования, присваиваются номера, следующие в порядке кодирования, начиная с нуля. Эти номера определяются как индексы PartIdx разделения. Каждый номер внутри каждого блока предсказания блоков кодирования, представленных на фиг. 4A-4D, представляет индекс Partldx разделения блока предсказания. При , проиллюстрированном на фиг. 4В, индекс PartIdx разделения верхнего блока предсказания задается равным "0", а индекс PartIdx разделения нижнего блока предсказания задается равным "1". При , проиллюстрированном на фиг. 4С, индекс PartIdx разделения левого блока предсказания задается равным "0", а индекс PartIdx разделения правого блока предсказания задается равным "1". При , проиллюстрированном на на фиг. 4D, индекс PartIdx разделения верхнего левого блока предсказания задается равным "0", индекс PartIdx разделения верхнего правого блока предсказания задается равным "1", индекс PartIdx разделения нижнего левого блока предсказания задается равным "2", а индекс PartIdx разделения нижнего правого блока предсказания задается равным "3".
В случае, если режим PredMode предсказания является межкадровым предсказанием MODE_INTER, то в блоке кодирования, отличном от блока D кодирования, представляющем собой минимальный блок кодирования, ,  и  определяются как режимы разделения PartMode, и, только в блоке D кодирования, представляющем собой минимальный блок кодирования, в дополнение к ,  и  в качестве режимов разделения PartMode определяется и . Причина неопределения  в блоке, отличном от минимального блока кодирования, заключается в том, что блок кодирования, отличный от минимального блока кодирования, может быть подвергнут разделению на четыре части, в результате которого могут образоваться блоки кодирования малого размера.
Положение древовидного блока, блока кодирования, блока предсказания и блока преобразования
Положение каждого из блоков, включающих в себя древовидный блок, блок кодирования, блок предсказания и блок преобразования согласно этому примеру осуществления, представляется двумерными координатами (x, y) положения верхнего крайнего левого пиксела сигнала яркости в составе участка каждого блока при определении положения верхнего крайнего левого пиксела сигнала яркости экрана сигналов яркости как точки отсчета (0, 0). Что касается направлений осей координат, то направление вправо в горизонтальном направлении и направление вниз в вертикальном направлении определяются в качестве положительных направлений, и единицей является одна пиксел сигнала яркости. Не только в случае цветоразностного формата 4:4:4, при котором размер изображения (число пикселов) в сигнале яркости и в цветоразностном сигнале является одинаковым, но и в случае цветоразностного формата 4:2:0 или 4:2:2, при котором размер изображения (число пикселов) в сигнале яркости и в цветоразностном сигнале отличается один от другого, положение каждого блока цветоразностного сигнала представляется координатами пиксела сигнала яркости в составе участка блока, и единицей является один пиксел сигнала яркости. Такая конфигурация позволяет не только определять положение каждого блока цветоразностного сигнала, но и устанавливать взаимное положение блока сигнала яркости и блока цветоразностного сигнала в результате простого сравнения значений координат.
Группа блоков предсказания
Группа, образованная множеством блоков предсказания, определяется как группа блоков предсказания. Фиг. 5, 6, 7 и 8 являются схематическими иллюстрациями групп блоков предсказания, смежных с блоком предсказания, являющимся объектом кодирования/декодирования, внутри кадра блока предсказания, являющегося объектом кодирования/декодирования. Фиг. 9 является схематической иллюстрацией группы блоков предсказания, уже подвергнутой кодированию/декодированию, в положении, совпадающем с положением блока предсказания, являющегося объектом кодирования/декодирования, или в положении, смежном с положением этого блока, в кодированном/декодированном кадре во времени, отличном от времени блока предсказания, являющегося объектом кодирования/декодирования. Рассмотрим группу блоков предсказания со ссылками на фиг. 5, 6, 7, 8 и 9.
Как показано на фиг. 5, первая группа блоков предсказания, образуемая блоком А1 предсказания, смежным с левой стороной блока предсказания, являющегося объектом кодирования/декодирования, внутри кадра блока предсказания, являющегося объектом кодирования/декодирования, и блоком А0 предсказания, смежным с нижней левой вершиной блока предсказания, являющегося объектом кодирования/декодирования определяется как группа блока предсказания, смежная с левой стороной.
Кроме того, как показано на фиг. 6, даже в случае, если размер блока предсказания, смежного с левой стороной блока предсказания, являющегося объектом кодирования/декодирования, больше, чем размер блока предсказания, являющегося объектом кодирования/декодирования, то согласно вышеуказанному состоянию в случае, если блок А предсказания, смежный с левой стороной, является смежным с левой стороной блока предсказания, являющегося объектом кодирования/декодирования, то блок А предсказания задается как блок А1 предсказания, а в случае, если блок А предсказания является смежным с нижней левой вершиной блока предсказания, являющегося объектом кодирования/декодирования, то блок А предсказания задается как блок А0 предсказания. В примере, проиллюстрированном на фиг. 6, блоки А0 и А1 предсказания являются одинаковыми.
Кроме того, как показано на фиг. 7, в случае, если имеется множество блоков предсказания, смежных с левой стороной блока предсказания, являющегося объектом кодирования/декодирования, и размер каждого блока из множества блоков предсказания меньше, чем размер блока предсказания, являющегося объектом кодирования/декодирования, то в этом варианте осуществления только крайний нижний блок А10 предсказания из блоков предсказания, смежных с левой стороной, задается как блок А1 предсказания, смежный с левой стороной.
Практически точно так же, как и при определении группы блоков предсказания, смежной с левой стороной, вторая группа блоков предсказания, образованная блоком В1 предсказания, смежным с верхней стороной блока предсказания, являющегося объектом кодирования/декодирования внутри кадра блока предсказания, являющегося объектом кодирования/декодирования, блоком В0 предсказания, смежным с верхней правой вершиной блока предсказания, являющегося объектом кодирования/декодирования, и блоком В2 предсказания, смежным с верхней левой вершиной блока предсказания, являющегося объектом кодирования/декодирования, определяется как группа блока предсказания, смежная с верхней стороной.
Кроме того, как показано на фиг. 8, даже в случае, если размер блока предсказания, смежного с верхней стороной блока предсказания, являющегося объектом кодирования/декодирования, больше, чем размер блока предсказания, являющегося объектом кодирования/декодирования, то согласно вышеуказанному состоянию в случае, если блок В предсказания, смежный с верхней стороной, является смежным с верхней стороной блока предсказания, являющегося объектом кодирования/декодирования, то блок В предсказания задается как блок В1 предсказания, в случае, если блок В предсказания является смежным с верхней правой вершиной блока предсказания, являющегося объектом кодирования/декодирования, то блок В предсказания задается как блок В0 предсказания, а в случае, если блок В предсказания является смежным с верхней левой вершиной блока предсказания, являющегося объектом кодирования/декодирования, то блок В предсказания задается как блок В2 предсказания. В примере, проиллюстрированном на фиг. 8, блоки В0, В1 и В2 предсказания являются одинаковыми.
Кроме того, как показано на фиг. 7, в случае, если имеется множество блоков предсказания, смежных с верхней стороной блока предсказания, являющегося объектом кодирования/декодирования, и размер каждого блока из множества блоков предсказания меньше, чем размер блока предсказания, являющегося объектом кодирования/декодирования, то в этом варианте осуществления только крайний правый блок В10 предсказания из блоков предсказания, смежных с верхней стороной, задается как блок В1 предсказания, смежный с верхней стороной.
Отличие от группы блоков предсказания, смежной с левой стороной, состоит в том, что блок В2 предсказания, смежный с верхней левой вершиной блока предсказания, являющегося объектом кодирования/декодирования, включен в группу блоков предсказания, смежных с верхней стороной. В то время как верхний левый блок В2 предсказания может быть включен в любую группу блоков предсказания, в данном случае верхний левый блок В2 предсказания включен в группу блоков предсказания, смежных с верхней стороной. Следовательно, число блоков предсказания в группе блоков предсказания, смежной с верхней стороной, больше, чем число блоков предсказания в группе блока предсказания, смежной с левой стороной.
Как показано на фиг. 9, в кодированном/декодированном кадре времени, отличного от времени блока предсказания, являющегося объектом кодирования/декодирования, третья группа блока предсказания, образованная группами Т0 и Т1 блоков предсказания, уже подвергнутыми кодированию/декодированию, располагающимися в положении, совпадающем с положением блока предсказания, являющегося объектом кодирования/декодирования, или вблизи положения, совпадающего с положением блока предсказания, являющегося объектом кодирования/декодирования, определяется как группа блоков предсказания другого времени.
Режим межкадрового предсказания и список опорных кадров
В варианте осуществления согласно настоящему изобретению при межкадровом предсказании, в случае которого предсказание делается на основе сигнала изображения кодированного/декодированного кадра, в качестве опорных кадров может быть использовано множество декодированных кадров. Для определения опорного кадра, выбранного из множества опорных кадров, каждому блоку предсказания присваивается опорный индекс. Межкадровое предсказание в В-слайсе может осуществляться в результате выбора двух произвольных опорных кадров для каждого блока предсказания, а в качестве режимов межкадрового предсказания используются L0-предсказание Pred_L0, L1-предсказание Pred_Ll и би-предсказание Pred_BI. Управление опорными кадрами может осуществляться по L0 (по списку 0 опорных кадров) и по L1 (по списку 1 опорных кадров) списковой структуры, и назначение опорного индекса по L0 или/и по L1 позволяет определять опорный кадр. L0-предсказание Pred_L0 является межкадровым предсказанием для опорного кадра, управление которым осуществляется по списку L0 опорных кадров, L1-предсказание Pred_L1 является межкадровым предсказанием для опорного кадра, управление которым осуществляется по списку L1 опорных кадров, а би-предсказание Pred_BI является межкадровым предсказанием для одного опорного кадра, управление которым осуществляется по каждому из списков L0 и L1 опорных кадров результате выполнения как L0-, так и L1-предсказания. При межкадровом предсказании P-слайса может быть использовано только L0-предсказание. Кроме того, при межкадровом предсказании В-слайса могут быть использованы L0-предсказание, L1-предсказание и би-предсказание Pred_BI, обеспечивающее усреднение или взвешивание L0- и L1-предсказаний. В процессах обработки, описываемых ниже, предполагается, что процесс обработки выполняется для каждого из списков L0 и L1 опорных кадров для постоянной или переменной, которой при выводе присваивается суффикс LX (в данном случае X=0 или 1).
РОС
РОС является переменной, соответствующей кодируемому кадру, значение которой задается с увеличением на единицу при каждом шаге в порядке вывода/отображения кадра. Значения переменных РОС позволяют определять идентичность или неидентичность кадров и порядок следования кадров в порядке вывода/отображения и получать расстояние между кадрами. Например, в случае, если переменные РОС двух кадров имеют одинаковые значения, то кадры, может быть определены как идентичные. В то же время в случае, если переменные РОС двух кадров отличаются одна от другой, то кадр, имеющий меньшее значение РОС, может быть определен как кадр, выводимый/отображаемый первым по времени, а разность между переменными РОС двух кадров представляет расстояние между кадрами в направлении оси времени.
Вариант осуществления 1
Рассмотрим вариант осуществления 1 согласно настоящему изобретению со ссылками на чертежи. Фиг. 1 является блок-схемой, иллюстрирующей конфигурацию устройства кодирования движущегося изображения согласно примеру осуществления настоящего изобретения. Устройство кодирования движущегося изображения согласно варианту осуществления включает в себя: память 101 изображения; блок 192 обнаружения вектора движения; блок 103 вычисления разности векторов движения; блок 104 оценки информации по межкадровому предсказанию; блок 195 предсказания компенсации движения; блок 106 определения способа предсказания; блок 107 генерирования остаточного сигнала; блок 108 ортогонального преобразования и квантования; блок 109 генерирования первого битового потока; блок 110 генерирования второго битового потока; блок 111 мультиплексирования; блок 112 обратного квантования и обратного ортогонального преобразования; блок 113 наложения сигнала декодированного изображения; память 114 для хранения информации по кодированию; и память 115 декодированного изображения.
Память 101 изображения осуществляет временное хранение сигнала изображения кадра, являющегося объектом кодирования, поданного в порядке времени отображения. Память 101 изображения подает хранимый сигнал изображения кадра, являющегося объектом кодирования, в блок 102 обнаружения вектора движения, блок 106 определения способа предсказания и блок 197 генерирования остаточного сигнала в единицах заданных блоков пикселов. При этом сигналы изображения кадров, хранимых в порядке времени отображения, перестраиваются в порядке кодирования и выводятся из памяти 101 изображения в единицах блоков пикселов.
Блок 102 обнаружения вектора движения обнаруживает размер каждого блока предсказания и вектор движения при каждом режиме предсказания в единицах блоков предсказания за счет сопоставления блоков или т.п. между сигналом изображения, подаваемым из памяти 101 изображения, и опорным кадром, подаваемым из памяти 115 декодированного изображения, и подает обнаруженный вектор движения в блок 105 предсказания компенсации движения, блок 103 вычисления разности векторов движения и блок 106 определения способа предсказания.
Блок 103 вычисления разности векторов движения за счет использования информации по кодированию сигнала изображения, уже подвергнутого кодированию, хранимой в памяти 114 для хранения информации по кодированию, осуществляет вычисление множества кандидатов на предсказываемый вектор движения и создает список предсказываемых векторов движения, описание которого приводится ниже, выбирает оптимальный предсказываемый вектор движения из множества кандидатов на предсказываемый вектор движения, добавленных в генерированный список предсказываемых векторов движения, вычисляет разность векторов движения на основе вектора движения, обнаруженного с помощью блока 102 обнаружения вектора движения, и предсказываемого вектора движения и подает полученную в результате вычисления разность векторов движения в блок 106 определения способа предсказания. Кроме того, в блок 106 определения способа предсказания подается и индекс предсказываемого вектора движения, используемый для определения предсказываемого вектора движения, выбранного из числа кандидатов на предсказываемый вектор движения, добавленных в генерированный список предсказываемых векторов движения. Конфигурацию и работу блока 103 вычисления разности векторов движения подробно рассмотрим ниже.
Блок 104 оценки информации по межкадровому предсказанию оценивает информацию по межкадровому предсказанию в режиме слияния. В данном случае режим слияния является режимом, при котором вместо кодирования информации по межкадровому предсказанию, такой как режим предсказания блока предсказания, опорный индекс (являющийся информацией, используемой для определения опорного кадра, используемого для компенсации движения, среди множества опорных кадров, добавленных в список опорных кадров), вектор движения и т.п., используется информация по межкадровому предсказанию смежного блока предсказания, полученного в результате межкадрового предсказания и подвергнутого кодированию, или блок предсказания, полученного в результате межкадрового предсказания, другого кадра. В результате использования информации по кодированию блока предсказания, уже подвергнутого кодированию, хранимому в памяти 114 для хранения информации по кодированию, осуществляется вычисление множества кандидатов на слияние (кандидатов на информацию по межкадровому предсказанию), создается список кандидатов на слияние, из множества кандидатов на слияние, добавленных в генерированный список кандидатов на слияние, выбирается оптимальный кандидат на слияние, и информация по межкадровому предсказанию, такая как режим предсказания, опорный индекс, вектор движения и т.п., для выбранного кандидата на слияние подается в блок 105 предсказания компенсации движения, а индекс слияния, определяющий выбранного кандидата на слияния подается в блок 106 определения способа предсказания.
Блок 105 предсказания компенсации движения за счет компенсации движения на основе опорного кадра с использованием вектора движения, обнаруженного с помощью блока 102 обнаружения вектора движения и блока 104 оценки информации по межкадровому предсказанию, генерирует предсказываемый сигнал изображения и подает генерированный предсказываемый сигнал изображения в блок 106 определения способа предсказания. При этом в случае L0-предсказания и L1-предсказания делается однонаправленное предсказание, а случае би-предсказания Pred_BI делается двунаправленное предсказание, сигналы, полученные в результате межкадрового предсказания согласно L0- и L1-предсказаниям, подвергаются адаптивному умножению на коэффициенты взвешивания, а результирующие сигналы накладываются один на другой с добавлением значения смещения, в результате чего генерируется конечный предсказанный сигнал изображения.
Блок 106 определения способа предсказания в результате оценки количеств кода разностей векторов движения, количества искажения между предсказанным сигналом изображения и сигналом изображения и т.п.согласно множеству способов предсказания определяет режим PredMode предсказания, определяющий межкадровое предсказание PRED_INTER или внутрикадровое предсказание PRED_INTRA, и режим PartMode разделения в единицах блоков кодирования, и при межкадровом предсказании PRED_INTER определяет способ предсказания, такой как в режиме слияния или в режиме неслияния в единицах блоков предсказания, причем в случае режима слияния определяет индекс слияния, а в случае режима неслияния определяет флаг межкадрового предсказания, индекс предсказываемого вектора движения, опорные индексы по L0 и L1, разность векторов движения и т.п. и подает информацию по кодированию согласно определениям в блок 109 генерирования первого битового потока.
Кроме того, блок 106 определения способа предсказания обеспечивает хранение информации, представляющей определенный способ предсказания, и информации по кодированию, включающей в себя вектор движения и т.п., согласно определенному способу предсказания в памяти 114 для хранения информации по кодированию. В данном случае хранимая информация по кодированию включает в себя режим PredMode предсказания, режим е разделения, флаги predFlagL0 и predFlagL1, соответственно представляющие использование или неиспользование L0-предсказания или L1-предсказания, опорные индексы refIdxL0 и refIdxL1 в списках L0 и L1 опорных кадров, векторы mvL0 и mvL1 движения в списках L0 и L1 опорных кадров и т.п. В данном случае, если режим PredMode предсказания является внутрикадровым предсказанием MODE_INTRA, то как флаг predFlagL0, представляющий использование или неиспользование L0-предсказания, так и флаг predFlagL1, представляющий использование или неиспользование L1-предсказание, равны "0". В то же время в случае, если режим PredMode предсказания является межкадровым предсказанием MODE_INTER, а режим межкадрового предсказания является L0-предсказанием Pred_L0, то флаг predFlagL0, представляющий использование или неиспользование L0-предсказания, равен "1", а флаг predFlagL1, представляющий использование или неиспользование L1-предсказания, равен "0". В случае, если режим межкадрового предсказания является L1-предсказанием Pred_L1, то флаг predFlagL0, представляющий использование или неиспользование L0-предсказания, равен "0", а флаг predFlagLl, представляющий использование или неиспользование L1-предсказания равен "1", а в случае, если режим межкадрового предсказания является би-предсказанием Pred_BI, то как флаг predFlagL0, представляющий использование или неиспользование L0-предсказания, так и флаг predFlagL1, представляющий использование или неиспользование L1-предсказания, равны "1". Блок 106 определения способа предсказания подает предсказанный сигнал изображения согласно определенному режиму предсказания в блок 107 генерирования остаточного сигнала и в блок 113 наложения сигнала декодированного изображения.
Блок 107 генерирования остаточного сигнала генерирует остаточный сигнал в результате выполнения вычитания между сигналом изображения, подлежащим кодированию, и предсказанным сигналом изображения, и подает генерированный остаточный сигнал в блок 108 ортогонального преобразования и квантования.
Блок 108 ортогонального преобразования и квантования генерирует остаточный сигнал, подвергнутый ортогональному преобразованию и квантованию, в результате выполнения ортогонального преобразования и квантования остаточного сигнала в соответствии с параметром квантования и подает генерированный остаточный сигнал, подвергнутый ортогональному преобразованию и квантованию, в блок 110 генерирования второго битового потока и в блок 112 обратного квантования и обратного ортогонального преобразования. Кроме того, блок 108 ортогонального преобразования и квантования обеспечивает хранение параметра квантования в памяти 114 для хранения информации по кодированию.
Блок 109 генерирования первого битового потока в дополнение к информации в единицах последовательностей, кадров, слайсов и блоков кодирования кодирует информацию по кодированию, соответствующую способу предсказания, определенному с помощью блока 106 определения способа предсказания для каждого блока кодирования и каждого блока предсказания. В частности, первый битовый поток генерируется в результате выполнения энтропийного кодирования информации по кодированию, такой как информация, относящаяся к режиму предсказания PredMode для каждого блока кодирования, к режиму PartMode разделения, к флагу, используемому для определения режима слияния или неслияния, в случае межкадрового предсказания PRED_INTER, к индексу слияния в случае режима слияния, к режиму межкадрового предсказания в случае режима неслияния, к индексу предсказываемого вектора движения, к разности векторов движения и т.п., в соответствии с установленными правилами синтаксиса, описываемыми ниже, и генерированный первый битовый поток подается в блок 111 мультиплексирования.
Блок 110 генерирования второго битового потока генерирует второй битовый в результате выполнения энтропийного кодирования остаточного сигнала, подвергнутого ортогональному преобразованию и квантованию в соответствии с установленными правилами синтаксиса, и подает генерированный второй битовый поток в блок 111 мультиплексирования. Блок 111 мультиплексирования осуществляет мультиплексирование первого битового потока и второго битового потока в соответствии с установленными правилами синтаксиса и обеспечивает вывод мультиплексного битового потока.
Блок 112 обратного квантования и обратного ортогонального преобразования вычисляет остаточный сигнал в результате выполнения обратного квантования и обратного ортогонального преобразования остаточного сигнала, подвергнутого ортогональному преобразованного и квантованию, поданного из блока 108 ортогонального преобразования и квантования, и подает остаточный сигнал в блок 113 наложения сигнала декодированного изображения.
Блок 113 наложения сигнала декодированного изображения генерирует декодированное изображение в результате наложения предсказанного сигнала изображения, соответствующему определению, сделанному с помощью блока 106 определения способа предсказания, и остаточного сигнала, подвергнутого обратному квантованию и обратному ортогональному преобразованию в блоке 112 обратного квантования и обратного ортогонального преобразования, одного на другой, и обеспечивает хранение генерированного декодированного изображения в памяти 115 декодированного изображения. При этом в некоторых случаях для декодированного изображения выполняется процесс фильтрации, позволяющий уменьшить искажения, такие как искажения блоков за счет кодирования, и обеспечивается хранение обработанного декодированного изображения в памяти 115 декодированного изображения.
Фиг. 2 является блок-схемой, иллюстрирующей конфигурацию устройства декодирования движущегося изображения согласно примеру осуществления настоящего изобретения, которое соответствует устройству кодирования движущегося изображения, представленному на фиг. 1. Устройство декодирования движущегося изображения согласно варианту осуществления включает в себя: блок 201 разделения; блок 202 декодирования первого битового потока; блок 203 декодирования второго битового потока; блок 204 вычисления вектора движения; блок 205 оценки информации по межкадровому предсказанию; блок 206 предсказания компенсации движения; блок 207 обратного квантования и обратного ортогонального преобразования; блок 208 наложения сигнала декодированного изображения; память 209 для хранения информации по кодированию, и память 210 декодированного изображения.
Так как процесс декодирования, выполняемый устройством декодирования движущегося изображения, представленным на фиг. 2, соответствует процессу кодирования, выполняемому в устройстве кодирования движущегося изображения, представленному на фиг. 1, то конфигурации блока 206 предсказания компенсации движения, блока 207 обратного квантования и обратного ортогонального преобразования, блока 208 наложения сигнала декодированного изображения, памяти 209 для хранения информации по кодированию и памяти 210 декодированного изображения, представленных на фиг. 2, имеют функции, соответствующие конфигурациям соответственно блока 105 предсказания компенсации движения, блока 112 обратного квантования и обратного ортогонального преобразования, блока 113 наложения сигнала декодированного изображения, памяти 114 для хранения информации по кодированию и памяти 115 декодированного изображения в устройстве кодирования движущегося изображения, представленном на фиг. 1.
Битовый поток, подаваемый в блок 201 разделения, подвергается разделению в соответствии с установленными правилами синтаксиса, и разделенные битовые потоки подаются в блок202 декодирования первого битового потока и в блок 203 декодирования второго битового потока.
Блок 202 декодирования первого битового потока декодирует поданные битовые потоки и, таким образом, получает информацию в единицах последовательностей, кадров, слайсов и блоков кодирования, а также информацию по кодированию в единицах блоков предсказания. В частности, информация по кодированию, такая как информация, относящаяся к режиму PredMode предсказания, используемому для определения межкадрового предсказания PRED_INTER или внутрикадрового предсказания PRED_INTRA в единицах блоков кодирования, к режиму PartMode разделения, к флагу, используемому для определения режима слияния или неслияния, в случае межкадрового предсказания PRED_INTER, к индексу слияния в случае режима слияния, к режиму межкадрового предсказания в случае режима неслияния, к индексу предсказываемого вектора движения, к разности векторов движения и т.п., подвергается декодированию в соответствии с установленными правилами синтаксиса, описываемыми ниже, и информация по кодированию подается в блок 204 вычисления вектора движения или в блок 205 оценки информации по межкадровому предсказанию.
Блок 203 декодирования второго битового потока в результате декодирования поданного битового потока вычисляет остаточный сигнал, подвергнутый ортогональному преобразованию и квантованию, и подает остаточный сигнал, подвергнутый ортогональному преобразованию и квантованию, в блок 207 обратного квантования и обратного ортогонального преобразования.
В случае, если обработка блока предсказания, являющегося объектом декодирования, выполняется не в режиме слияния, то блок 204 вычисления вектора движения в результате использования информации по кодированию сигнала изображения, уже подвергнутого декодированию, хранимого в памяти 209 для хранения информации по кодированию, вычисляет множество кандидатов на предсказываемый вектор движения для генерирования списка предсказываемых векторов движения, описываемого ниже, выбирает предсказываемый вектор движения, соответствующий индексу предсказываемого вектора движения, подвергнутому декодированию и подаче блоком 202 декодирования первого битового потока, из множества кандидатов на предсказываемый вектор движения, добавленных в созданный список предсказываемых векторов движения, вычисляет вектор движения на основе вектора разности, декодированного блоком 202 декодирования первого битового потока, и выбранного предсказываемого вектора движения, подает вектор движения в блок 206 предсказания компенсации движения вместе с другой информацией по кодированию, и обеспечивает хранение вектора движения в памяти 209 для хранения информации по кодированию. Информация по кодированию блока предсказания, поданная и хранимая в данном случае, включает в себя режим PredMode предсказания, режим PartMode разделения, флаги predFlagL0 и predFlagL1, соответственно представляющие использование или неиспользование L0-предсказания и использование или неиспользование L1-предсказания, опорные индексы refIdxL0 и refIdxL1 в списках L0 и L1 опорных кадров, векторы mvL0 и mvL1 движения в списках L0 и L1 опорных кадров и т.п. В данном случае, если режим PredMode предсказания является внутрикадровым предсказанием MODE_INTRA, то как флаг predFlagL0, представляющий использование или неиспользование L0-предсказания, так и флаг predFlagL1, представляющий использование или неиспользование L1-предсказания, равны "0". В то же время в случае, если режим PredMode предсказания является межкадровым предсказанием MODE_INTER, а режим режим межкадрового предсказания является L0-предсказанием Pred_L0, то флаг predFlagL0, представляющий использование или неиспользование L0-предсказания равен "1", а флаг predFlagL1, представляющий использование или неиспользование L1-предсказания, равен "0". Кроме того, в случае, если режим межкадрового предсказания является L1-предсказанием Pred_Ll, то флаг predFlagL0, представляющий использование или неиспользование L0-предсказания, равен "0", а флаг predFlagLl, представляющий использование или неиспользование L1-предсказания, равен "1". В случае, если режим межкадрового предсказания является би-предсказанием Pred_BI, то как флаг predFlagL0, представляющий использование или неиспользование L0-предсказания, так и флаг predFlagL1, представляющий использование или неиспользование L1-предсказания, равны "1". Конфигурацию и работу блока 204 вычисления вектора движения подробно рассмотрим ниже.
Если обработка блока предсказания, являющегося объектом декодирования, выполняется в режиме слияния, то блок 205 оценки информации по межкадровому предсказанию оценивает информацию по межкадровому предсказанию в режиме слияния. В результате использования информации по кодированию блока предсказания, уже подвергнутого декодированию, хранимого в памяти 114 для хранения информации по кодированию, осуществляется вычисление множества кандидатов на слияние, создается список кандидатов на слияние, выбирается кандидат на слияние, соответствующий индексу слияния, подвергнутому декодированию и подаче блоком 202 декодирования первого битового потока, из множества кандидатов на слияние, добавленных в созданный список кандидатов на слияние, и информация по межкадровому предсказанию, такая как режим PredMode предсказания выбранного кандидата на слияние, режим PartMode разделения, флаги, представляющие использование или неиспользование L0-предсказания и использование или неиспользование L1-предсказания, опорные индексы в списках L0 и L1 опорных кадров, векторы движения в списках L0 и L1 опорных кадров и т.п., подается в блок 206 предсказания компенсации движения и в память 209 для хранения информации по кодированию.
Блок 206 предсказания компенсации движения генерирует предсказанный сигнал изображения за счет выполнения компенсации движения на основе опорного кадра в результате использования вектора движения, вычисленного блоком 204 вычисления вектора движения, и подает генерированный предсказанный сигнал изображения в блок 208 наложения сигнала декодированного изображения. При этом в случае би-предсказания Pred_BI два предсказанных сигнала изображения с компенсацией движения согласно L0- и L1-предсказаниям, подвергаются адаптивному умножению на коэффициенты взвешивания, а результирующие сигналы накладываются один на другой, в результате чего генерируется конечный предсказанный сигнал изображения.
Блок 207 обратного квантования и обратного ортогонального преобразования выполняет обратное ортогональное преобразование и обратное квантование остаточного сигнала, подвергнутого ортогональному преобразованию и квантованию, декодированного блоком 202 декодирования первого битового потока, таким образом вырабатывает остаточный сигнал, подвергнутый обратному ортогональному преобразованию и обратному квантованию.
Блок 208 наложения сигнала декодированного изображения декодирует сигнал декодированного изображения в результате наложения предсказанного сигнала изображения, полученного в блоке 206 предсказания компенсации движения за счет компенсации движения, и остаточного сигнала, подвергнутого обратному ортогональному преобразованию и обратному квантованию в блоке 207 обратного квантования и обратного ортогонального преобразования, одного на другой, и обеспечивает хранение сигнала декодированного изображения в памяти 210 декодированного изображения. При этом в некоторых случаях при хранении сигнала декодированного изображения в памяти 210 декодированного изображения для декодированного изображения выполняется процесс фильтрации, позволяющий уменьшить искажения, такие как искажения блоков за счет кодирования, и обеспечивается хранение обработанного декодированного изображения в памяти 210 декодированного изображения.
Синтаксис
Далее рассмотрим синтаксис, то есть правила, общие для процесса кодирования и процесса декодирования битового потока движущегося изображения, подвергаемого кодированию устройством кодирования движущегося изображения и декодированию устройством декодирования с использованием способа предсказания вектора движения согласно этому примеру осуществления.
Фиг. 10 иллюстрирует структуру первого синтаксиса, описываемого в заголовке слайса в единицах слайсов битового потока, генерируемого в соответствии с этим вариантом осуществления. В данном случае показаны только элементы синтаксиса, относящиеся к этому варианту осуществления. При В-типе слайса устанавливается флаг collocated_from_l0_flag, представляющий один флаг по списку L0 или L1 опорных кадров, в котором определяется кадр colPic другого времени, используемый во время вычисления кандидата на предсказываемый вектор движения в направлении времени или кандидата на слияние. Флаг collocated_from_l0_flag подробно рассмотрим ниже.
При этом вышеуказанные элементы синтаксиса могут быть объединены в набор параметров кадров, описывающий набор элементов синтаксиса в единицах кадров.
Фиг. 11 иллюстрирует шаблон синтаксиса, описываемый в единицах блоков предсказания. В случае, если значение режима PredMode предсказания блока предсказания представляет межкадровое предсказание MODE_INTER, то устанавливается флаг merge_flag[x0][y0], представляющий режим слияния или неслияния. В данном случае х0 и у0 являются индексами, представляющими положение верхнего левого пиксела блока предсказания внутри кадра в сигнале яркости, а флаг merge_flag[x0][y0] является флагом, представляющим режим слияния или неслияния блока предсказания с координатами (х0, у0) внутри кадра.
Далее в случае, если флаг merge_flag[x0][y0] равен "1" и представляет режим слияния, то устанавливается элемент merge_idx[x0][y0] синтаксиса индекса по списку слияния, являющемуся списком перечисляемых кандидатов на слияние. В данном случае х0 и у0 являются индексами, которые представляющими положение верхнего левого пиксела блока предсказания внутри кадра, а элемент merge_idx[x0][y0] синтаксиса является индексом блока предсказания с координатами (х0, у0) внутри кадра.
В то же время в случае, если флаг merge_flag[x0][y0] равен "0" и представляет режим неслияния, то при В-типе слайса устанавливается элемент inter_pred_flag[x0][y0] синтаксиса, идентифицирующий режим межкадрового предсказания, позволяющий идентифицировать L0-предсказание Pred_L0, L1-предсказание Pred_Ll или би-предсказание Pred_BI. В соответствии со способом межкадрового предсказания, для каждого из списков L0 и L1 опорных кадров устанавливаются элемент ref_idx_l0[x0][y0] или ref_idx_l1[x0][y0] синтаксиса опорного индекса, используемого для определения опорного кадра, и элемент mvd_l0[x0][y0][j] или mvd_l1[x0][y0][j] синтаксиса разности векторов движения, являющейся разностью между вектором движения блока предсказания, полученного в процессе обнаружения вектора движения, и предсказываемым вектором движения. В данном случае х0 и у0 являются индексами, представляющими положение верхнего левого пиксела блока предсказания внутри кадра, ref_idx_l0[x0][y0] и mvd_l0[x0][y0][j] являются опорным индексом в L0 и разностью векторов движения блока предсказания с координатами (х0, у0) внутри кадра, а ref_idx_l1[x0][y0] и mvd_l1[x0][y0][j] - опорным индексом в L1 и разностью векторов движения блока предсказания с координатами (х0, у0) внутри кадра. Кроме того, j представляет компонент разности векторов движения, и, таким образом, представляет компонент х в случае, если j=0, и компонент у в случае, если j=1. Далее устанавливаются элементы mvp_idx_l0[x0][y0] и mvp_idx_l1[x0][y0] синтаксиса индексов по списку предсказываемых векторов движения, являющемуся списком перечисляемых предсказываемых векторов движения. В данном случае х0 и у0 являются индексами, представляющими положение верхнего левого пиксела блока предсказания внутри кадра, а mvp_idx_l0[x0][y0] и mvp_idx_l1[x0][y0] являются индексами предсказываемых вектора движения в составе опорных индексов по L0 и L1 блока предсказания с координатами (х0, у0) внутри кадра.
Способ предсказания вектора движения согласно варианту осуществления используется в блоке 103 вычисления разности векторов движения в составе устройства кодирования движущегося изображения, представленного на фиг. 1, и в блоке 204 вычисления вектора движения в составе устройства декодирования движущегося изображения, представленного на фиг. 2.
Рассмотрим способ предсказания вектора движения согласно варианту осуществления со ссылками на фигуры. Способ предсказания вектора движения используется в любом процессе кодирования и процессе декодирования в единицах блоков предсказания, образующих блок кодирования. В случае, если режим предсказания блока предсказания является режимом неслияния при межкадровом предсказании MODE_INTER, то в случае кодировании способ предсказания вектора движения используется при получении предсказываемого вектора движения в результате использования кодированного вектора движения, используемого во время вычисления кодируемой разности векторов движения на основе вектора движения, являющегося объектом кодирования, а в случае декодирования способ предсказания вектора движения используется при получении предсказываемого вектора движения в результате использования декодированного вектора движения, используемого во время вычисления вектора движения, являющегося объектом декодирования.
Предсказание вектора движения при кодировании
Рассмотрим процесс реализации способа предсказания вектора движения согласно варианту осуществления в устройстве кодирования движущегося изображения, кодирующем битовый поток движущегося изображения на основе вышеописанного синтаксиса. В случае, если компенсация движения делается в единицах слайсов, другими словами, в случае Р-типа слайса (однонаправленного слайса предсказания) или В-типа слайса (двунаправленного слайс предсказания), а режим предсказания блока предсказания внутри слайса является межкадровым предсказанием MODE_INTER, то способ предсказания вектора движения применяется к блоку предсказания, используемому для кодирования или декодирование разности векторов движения, в режиме неслияния.
Фиг. 12 является схематической иллюстрацией подробной конфигурации блока 103 вычисления разности векторов движения в составе устройства кодирования движущегося изображения, представленного на фиг. 1. Часть иллюстрации на фиг. 12 в окружении рамки в виде толстой линии иллюстрирует блок 103 вычисления разности векторов движения.
Кроме того, часть иллюстрации внутри этой рамки в окружении рамки в виде толстого пунктира иллюстрирует операционные блоки согласно способу предсказания вектора движения, описание которого приводится ниже, и входит также в состав устройства декодирования движущегося изображения, соответствующего устройству кодирования движущегося изображения согласно варианту осуществления, что обеспечивает получение идентичных непротиворечивых результатов определения между процессом кодирования и процессом декодирования. Ниже способ предсказания вектора движения в процессе кодирования рассмотрим со ссылками на этот чертеж.
Блок 103 вычисления разности векторов движения включает в себя: блок 121 генерирования кандидатов на предсказываемый вектор движения; блок 122 добавления кандидатов на предсказываемый вектор движения; блок 123 удаления избыточных кандидатов на предсказываемый вектор движения; блок 124 ограничения числа кандидатов на предсказываемый вектор движения; блок 125 вычисления количеств кода для кандидатов на предсказываемый вектор движения; блок 126 выбора предсказываемого вектора движения; и блок 127 вычитания векторов движения.
В процессе вычисления разности векторов движения, выполняемом блоком 103 вычисления разности векторов движения, разности векторов движения векторов движения, используемых в способе межкадрового предсказания, выбранном для блока, являющегося объектом кодирования, вычисляются для списков L0 и L1 опорных кадров. В частности, в случае, если режим PredMode предсказания блока, являющегося объектом кодирования, является межкадровым предсказанием MODE_INTER, а режим межкадрового предсказания блока, являющегося объектом кодирования, является L0-предсказанием Pred_L0, то вычисляется список предсказываемых векторов mvpListL0 движения по списку L0 опорных кадров, выбирается предсказываемый вектор mvpL0 движения и вычисляется разность mvdL0 векторов движения по списку L0 опорных кадров. В то же время в случае, если способ Pred_L1 межкадрового предсказания блока, являющегося объектом кодирования, является L1-предсказанием, вычисляется список mvpListLl предсказываемых векторов движения по списку L1 опорных кадров, выбирается предсказываемый вектор mvpLl движения и вычисляется разность mvdL1 векторов движения по списку L1 опорных кадров, а в случае, если режим межкадрового предсказания блока, являющегося объектом кодирования, является би-предсказанием Pred_BI, то выполняются как L0-предсказание, так и L1-предсказание и в результате вычисления списка mvpListL0 предсказываемых векторов движения по списку L0 опорных кадров выбирается предсказываемый вектор mvpL0 движения по списку L0 опорных кадров и вычисляется разность mvdL0 векторов mvL0 движения по списку L0 опорных кадров, а в результате вычисления списка mvpListL1 предсказываемых векторов движения из списка L1 опорных кадров вычисляется предсказываемый вектор mvpL1 движения по списку L1 опорных кадров, а также разность mvdL1 векторов mvL1 движения по списку L1 опорных кадров.
Процесс вычисления разности векторов движения выполняется для каждого списка из списков L0 и L1 опорных кадров и является общим как для списка L0, так и для списка L1 опорных кадров. Поэтому в приводимом ниже описании как L0, так и L1 обозначается как LX. В процессе вычисления разности векторов движения по списку L0 опорных кадров X=0, а в процессе вычисления разности векторов движения по списку L1 опорных кадров X=1. Кроме того, в случае, если в процессе вычисления разности векторов движения по списку LX опорных кадров используется информация не по списку LX опорных кадров, а информация по другому списку, то другой список обозначается как LY.
Для каждого из списков L0 и L1 опорных кадров из трех групп блоков предсказания, включающих в себя: группу блоков предсказания (группу блоков предсказания, смежную с левой стороной блока предсказания внутри кадра блока предсказания, являющегося объектом кодирования; обозначенную на фиг. 5 как А0 и А1), смежную с левой стороной; группу блоков предсказания (группу блоков предсказания, смежную с верхней стороной блока предсказания внутри кадра блока предсказания, являющегося объектом кодирования; обозначенную на фиг. 5 как В0, В1 и В2), смежную с верхней стороной; и группу блоков предсказания другого времени (группу блоков предсказания, уже подвергнутую кодированию и располагающуюся положении, совпадающем с положением блока предсказания, являющегося объектом кодирования, или вблизи этого положения, в кадре времени, отличного от времени блока предсказания; обозначенную на фиг. 9 как Т0 и Т1), блок 121 генерирования кандидатов на предсказываемый вектор движения получает по одному из векторов mvLXCol, mvLXA и mvLXB движения для каждой группы блока предсказания, задает полученные векторы движения в качестве кандидатов на предсказываемый вектор движения и подает кандидаты на предсказываемый вектор движения в блок 122 добавления кандидатов на предсказываемый вектор движения. Ниже вектор mvLXCol движения будет именоваться как кандидату на предсказываемый вектор движения во времени, а векторы mvLXA и mvLXB движения будут именоваться как кандидаты на предсказываемый вектор движения в пространстве. При вычислении кандидатов на предсказываемый вектор движения используется информация по кодированию, такая как опорный индекс и РОС блока предсказания, являющегося объектом кодирования, режим предсказания закодированного блока предсказания, хранимого в памяти 114 для хранения информации по кодированию, опорный индекс для каждого списка опорных кадров, РОС опорного кадра, вектор движения и т.п.
Кандидаты mvLXCol, mvLXA и mvLXB на предсказываемый вектор движения могут быть получены и в результате выполнения масштабирования в соответствии с соотношением между РОС кадра, являющегося объектом кодирования, и РОС опорного кадра.
Для каждой группы блоков предсказания в заданном порядке блок 121 генерирования кандидатов на предсказываемый вектор движения определяет состояние, описание которого приводится ниже, для блока предсказания внутри каждой группы блоков предсказания, выбирает вектор движения первого блока предсказания, соответствующего состоянию, и задает выбранные векторы движения в качестве кандидатов mvLXCol, mvLXA и mvLXB на предсказываемый вектор движения.
Для вычисления предсказываемого вектора движения на основе группы блоков предсказания, смежной с левой стороной, в порядке от нижней стороны к верхней стороне группы блоков предсказания, смежной с левой стороной (в порядке А0 и А1 от блока А0, показанного на фиг. 5), для вычисления предсказываемого вектора движения на основе группы блоков предсказания, смежной с верхней стороной, в порядке от правой стороны к левой стороне группы блоков предсказания, смежной с верхней стороной (в порядке В0, В1 и В2 от блока В0, показанного на фиг. 5), и для вычисления предсказываемого вектора движения на основе группы блоков предсказания другого времени в порядке Т0 и Т1 от блока Т0, показанного на фиг. 9, для каждого блока предсказания определяется состояние, описание которого приводится ниже, выбирается вектор движения первого блока предсказания, соответствующего состоянию, и кандидаты на предсказываемый вектор движения задаются в качестве mvLXCol, mvLXA и mvLXB.
Другими словами, в левой смежной группе блоков предсказания самый высокий уровень приоритета имеет крайний нижний блок предсказания, и уровень приоритета присваивается в направлении от нижней стороны к верхней стороне, а в верхней смежной группе блока предсказания самый высокий уровень приоритета имеет крайний правый блок предсказания, и уровень приоритета присваивается в направлении от правой стороны к левой стороне. В группе же блоков предсказания другого времени самый высокий уровень приоритета имеет блок Т0 предсказания, и уровень приоритета присваивается в порядке Т0 и T1.
Цикл определения состояния блоков предсказания в пространстве
Для левой смежной группы блоков предсказания определения состояния применяются в порядке приоритетов определений 1, 2, 3 и 4 состояния, описание которых приводится ниже, а для верхней смежной группы блоков предсказания определения состояния применяются в порядке приоритетов определений 1 и 2 состояния, описание которых также приводится ниже.
Определение состояния
Определение 1 состояния: По списку LX опорных кадров блока предсказания, являющегося объектом кодирования/декодирования, идентичному списку опорных кадров для вектора движения по списку LX опорных кадров, являющемуся объектом вычисления разности векторов движения, предсказание с использованием идентичного опорного индекса, другими словами, идентичного опорного кадра делается и в смежном блоке предсказания.
Определение 2 состояния: Несмотря на неидентичность списка LY опорных кадров блока предсказания, являющегося объектом кодирования/декодирования, списку опорных кадров для вектора движения по списку LX опорных кадров, являющемуся объектом вычисления разности векторов движения, предсказание в смежном блоке предсказания делается с использованием идентичного опорного кадра.
Определение 3 состояния: По списку LX опорных кадров блока предсказания, являющегося объектом кодирования/декодирования, идентичному списку опорных кадров для вектора движения по списку LX опорных кадров, являющемуся объектом вычисления разности векторов движения, предсказание в смежном блоке предсказания делается с использованием неидентичного опорного кадра.
Определение 4 состояния: По списку LY опорных кадров блока предсказания, являющегося объектом кодирования/декодирования, неидентичному списку опорных кадров для вектора движения по списку LX опорных кадров, являющемуся объектом вычисления разности векторов движения, предсказание в смежном блоке предсказания делается с использованием неидентичного опорного кадра.
В случае соответствия какому-либо из таких состояний в блоке предсказания в качестве кандидата на предсказываемый вектор используется вектор движения, соответствующий этому состоянию, и в последующем состояния не определяются. При этом в случае соответствия состоянию согласно определению 1 состояния или определению 2 состояния вектор движения соответствующего смежного блока предсказания является идентичным вектору движения опорного кадра блока предсказания, являющегося объектом кодирования, и непосредственно задается в качестве кандидата на предсказываемый вектор движения. В то же время в случае соответствия состоянию согласно определению 3 состояния или определению 4 состояния вектор движения соответствующего смежного блока предсказания является неидентичным вектору движения опорного кадра блока предсказания, являющегося объектом кодирования, и, следовательно, кандидат на предсказываемый вектор движения вычисляется в результате выполнения масштабирования на основе вектора движения.
Определение состояния согласно вышеописанным четырем определениям состояния осуществляется в результате сканирования блоков предсказания внутри группы блоков предсказания в следующей последовательности, позволяющей определить вектор предсказания.
Последовательность процесса сканирования векторов предсказания
Определение предсказываемого вектора движения с использованием идентичного опорного кадра, для которого вычисление масштаба является ненужным, выполняется с приоритетом, и для каждого блока предсказания определяются два состояния согласно двум определениям состояния из четырех определений состояния, причем в случае несоответствия состояний осуществляется переход к определению состояния следующего блока предсказания. Прежде всего определяются состояния согласно определениям 1 и 2 состояния для каждого блока предсказания, располагающегося внутри смежной группы блоков предсказания, а затем определяются состояния согласно определениям 3 и 4 состояния для каждого блока предсказания, располагающегося внутри смежной группы блоков предсказания.
В частности, состояния определяются в приводимом ниже порядке приоритетов (в данном случае N=А или В).
1. Определение 1 состояния блока N0 предсказания (идентичный список LX опорных кадров и идентичный опорный кадр)
2. Определение 2 состояния блока N0 предсказания (неидентичный список LY опорных кадров и идентичный опорный кадр)
3. Определение 1 состояния блока N1 предсказания (идентичный список LX опорных кадров и идентичный опорный кадр)
4. Определение 2 состояния блока N1 предсказания (неидентичный список LY опорных кадров и идентичный опорный кадр)
5. Определение 2 состояния блока N2 предсказания (идентичный список LX опорных кадров и идентичный опорный кадр)
6. Определение 2 состояния блока N2 предсказания (неидентичный список LY опорных кадров и идентичный опорный кадр)
7. Определение 3 состояния блока N0 предсказания (идентичный список LX опорных кадров и неидентичный опорный кадр)
8. Определение 4 состояния блока N0 предсказания (неидентичный список LY опорных кадров и неидентичный опорный кадр)
9. Определение 3 состояния блока N1 предсказания (идентичный список LX опорных кадров и неидентичный опорный кадр)
10. Определение 4 состояния блока N2 предсказания (неидентичный список LY опорных кадров и неидентичный опорный кадр)
11. Определение 3 состояния блока N1 предсказания (идентичный список LX опорных кадров и неидентичный опорный кадр)
12. Определение 4 состояния блока N2 предсказания (неидентичный список LY опорных кадров и неидентичный опорный кадр)
Выполнение описываемого выше процесса сканирования облегчает выбор предсказываемого вектора движения с высокой точностью предсказания, для которого вычисление масштаба является ненужным, с использованием идентичного опорного кадра, и, следовательно, позволяет уменьшить количество кода для разности векторов движения и повысить эффективность кодирования.
В данном случае в левой смежной группе блоков предсказания группа образована двумя блоками предсказания, и, следовательно, последовательности 5, 6, 11 и 12 вышеописанного процесса сканирования не выполняются.
Кроме того, в верхней смежной группе блоков предсказания группа образована тремя блоками предсказания, и, следовательно, выполнение последовательностей 1-12 вышеописанного процесса сканирования является возможным. Однако в настоящем изобретении из вышеописанного процесса сканирования выполняются только последовательности 1-6, а последовательности 7-12 не выполняются (состояния согласно определениям 3 и 4 состояния не определяются). Другими словами, в верхней смежной группе блоков предсказания процесс сканирования в состоянии необходимости вычисления масштаба не выполняется.
Таким образом, можно исключить процесс вычисления масштаба, для которого требуется разделение верхней смежной группы блока предсказания, и, следовательно, вычисление масштаба может ограничиться только кандидатом на предсказываемый вектор левой смежной группы блока предсказания. Параллельная обработка левой смежной группы блоков предсказания и верхней смежной группы блоков предсказания в качестве кандидата на вектор предсказания в пространстве позволяет ограничиться одной схемой вычисления масштаба, причем меньшего размера. Кроме того, параллельная обработка левой смежной группы блоков предсказания и верхней смежной группы блоков предсказания позволяет уменьшить различие в объемах обработки за счет различия в числе конфигурированных блоков предсказания внутри смежной группы блоков предсказания. Другими словами, исключение процесса вычисления масштаба верхней смежной группы блоков предсказания с большим числом блоков предсказания позволяет уменьшить максимальный объем вычислений, создающий проблему узкого места. В результате разность между объемом вычислений для левой смежной группы блоков предсказания и объемом вычислений для верхней смежной группы блоков предсказания уменьшается и обеспечивается возможность эффективного выполнения процесса параллельной обработки.
Поток вышеописанного процесса обработки рассмотрим подробно со ссылками на блок-схемы последовательностей процесса, представленные на фиг. 17-21.
Рассмотрим процесс получения информации о движении на основе смежного блока. В этом варианте осуществления устанавливаются буфер строк и буфер блоков, в которых хранится информация о движении. В случае получения информации о движении на основе блока предсказания, смежного с левой стороной, информация о движении получается из буфера блоков, а для блока предсказания, смежного с верхней стороной, в случае, если блок предсказания, смежный с верхней стороной, располагается внутри древовидного блока, точно так же как и в случае блока предсказания, смежного с левой стороной, информация о движении получается из буфера блоков. В то же время в случае, если блок предсказания, смежный с верхней стороной располагается вне древовидного блока, информация о движении получается из буфера строк.
В данном случае для уменьшения объема использования внутренней памяти за счет уменьшения размера буфера строк информации о движении размер буфера строк, в котором хранится информация о движении, сжимается в горизонтальном направлении на 1/2. В частности, для предсказания вектора движения смежного блока, не подвергнутого кодированию, буфер блоков хранит информацию о движении в минимальных единицах компенсации движения (например, в ) и, таким образом, обеспечивает доступ к этой информации из смежного блока, а в буфере строк информация о движении подвергается прореживанию и хранится в единицах (например, в ), вдвое превышающих размер минимального блока компенсации в горизонтальном направлении. Следовательно, в случае, если блок, смежный в вертикальном направлении, располагается вне древовидного блока, то появляется возможность получения информации о движении, неидентичной реальной информации о движении блока. Другими словами, в результате сжатия размера буфера строк информации о движении на 1/2 в горизонтальном направлении предсказываемый вектор движения, извлекаемый из группы блоков предсказания, смежной с верхней стороной, имеет более низкую надежность в качестве предсказываемого вектора движения, чем предсказываемый вектор движения, извлекаемый из группы блоков предсказания, смежной с левой стороной. Одна из причин исключения процесса сканирования в состоянии необходимости вычисления масштаба в группе блоков предсказания, смежной с верхней стороной, заключается в том, что в результате сокращения размера буфера строк даже исключение процесса вычисления масштаба предсказываемого вектора движения на основе группы блоков предсказания, смежной с верхней стороной, оказывает слабое влияние на эффективность кодирования.
В данном случае степень сжатия буфера строк составила 1/2, однако очевидно, что с повышением степени сжатия надежность предсказываемого вектора движения, извлекаемого из группы блоков предсказания, смежной с верхней стороной, снижается, и следовательно, эффект от исключения процесса сканирования в состоянии необходимости вычисления масштаба в группе блоков предсказания, смежной с верхней стороной, повышается.
Вычисление кандидата mvLXCol на предсказываемый вектор на основе группы блоков предсказания другого времени рассмотрим ниже подробно со ссылками на блок-схемы последовательностей процесса, представленные на фиг. 24-30.
Вернемся к фиг. 12. Блок 122 добавления кандидатов на предсказываемый вектор движения обеспечивает хранение вычисленных кандидатов mvLXCol, mvLXA и mvLXB на предсказываемый вектор движения по списку mvpListLX предсказываемых векторов движения.
Блок 123 удаления избыточных кандидатов на предсказываемый вектор движения сравнивает значения векторов движения кандидатов на предсказываемый вектор движения, хранимых в списке mvpListLX предсказываемых векторов движения по списку LX опорных кадров, одни с другими, определяет кандидатов на предсказываемый вектор движения с одинаковыми значениями векторов движения из числа кандидатов на предсказываемый вектор движения, оставляет первого из кандидатов на предсказываемый вектор движения с одинаковыми значениями векторов движения и удаляет других кандидатов на предсказываемый вектор движения из списка mvpListLX предсказываемых векторов движения для предотвращения избыточности кандидатов на предсказываемый вектор движения и, таким образом, обновляет список mvpListLX предсказываемых векторов движения.
Блок 124 ограничения числа кандидатов на предсказываемый вектор движения подсчитывает число кандидатов на предсказываемый вектор движения, добавленных в список mvpListLX предсказываемых векторов движения по списку LX опорных кадров и задает число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров равным значению числа подсчитанных кандидатов.
Кроме того, блок 124 ограничения числа кандидатов на предсказываемый вектор движения фиксирует число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров, добавленных в список mvpListLX предсказываемых векторов движения по списку LX опорных кадров, на заданном конечном числе finalNumMVPCand кандидатов.
В этом варианте осуществления, конечное число finalNumMVPCand кандидатов задается равным "2". Причина фиксации числа кандидатов на предсказываемый вектор заключается в невозможности выполнения энтропийного декодирование индекса предсказываемого вектора движения при изменении числа кандидатов на предсказываемый вектор движения, добавляемых в список предсказываемых векторов движения, в соответствии с состоянием создания списка предсказываемых векторов движения до создания списка предсказываемых векторов движения на стороне декодирования. Следовательно, возникает зависимость между созданием списка предсказываемых векторов движения и энтропийным декодированием и появляется возможность возникновения времени ожидания для энтропийного декодирования. Кроме того, в случае зависимости энтропийного декодирования от состояния создания списка предсказываемых векторов движения, включающего в себя кандидата mvLXCol на предсказываемый вектор движения, извлеченного из блока предсказания кадра другого времени, при возникновении ошибки во время декодирования битового потока другого кадра появляется проблема невозможности нормального продолжения энтропийного декодирования из-за влияния ошибки на битовый поток текущего кадра. Фиксация числа кандидатов на заданном конечном числе finalNumMVPCand кандидатов позволяет выполнять энтропийное декодирование индекса предсказываемого вектора движения независимо от создания списка предсказываемых векторов движения и даже при возникновении ошибки во время декодирования битового потока другого кадра обеспечивает возможность предотвращения влияния ошибки и нормального продолжения энтропийного декодирования битового потока текущего кадра.
В случае, если число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров меньше, чем заданное конечное число finalNumMVPCand кандидатов, блок 124 ограничения числа кандидатов на предсказываемый вектор движения добавляет векторы движения, имеющие значение (0, 0), в список mvpListLX предсказываемых векторов движения до достижения равенства между числом numMVPCandLX кандидатов на предсказываемый вектор движения и конечным числом finalNumMVPCand кандидатов и, таким образом, обеспечивает ограничение числа кандидатов на предсказываемый вектор движения заданным значением. В этом случае существует возможность добавления избыточных векторов движения, имеющих значение (0, 0), однако даже при любом значении индекса предсказываемого вектора движения в пределах от "0" до "заданное число кандидатов - 1" предсказываемый вектор движения может быть определен на стороне декодирования. В то же время в случае, если число numMVPCandLX кандидатов на предсказываемый вектор движения списка LX опорных кадров превышает заданное конечное число finalNumMVPCand кандидатов, то все элементы, добавленные к индексам, превышающим "finalNumMVPCand - 1", удаляются из списка mvpListLX предсказываемых векторов движения, число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров становится равным конечному числу finalNumMVPCand кандидатов и, таким образом, число кандидатов на предсказываемый вектор движения ограничивается заданным значением. Обновленный список mvpListLX предсказываемых векторов движения подается в блок 125 вычисления количеств кода для кандидатов на предсказываемый вектор движения и в блок 126 выбора предсказываемого вектора движения.
При этом блок 102 обнаружения вектора, представленный на фиг. 1, обнаруживает вектор mvLX движения по списку LX опорных кадров (в данном случае X=0 или 1) для каждого блока предсказания. Такой вектор mvLX движения подается в блок 125 вычисления количеств кода для кандидатов на предсказываемый вектор движения вместе с кандидатами на предсказываемый вектор движения в обновленном списке mvpListLX предсказываемых векторов движения.
Блок 125 вычисления количеств кода для кандидатов на предсказываемый вектор движения вычисляет разность векторов движения относительно вектора mvLX движения для каждого кандидата mvpListLX[i] на предсказываемый вектор движения, хранимого в списке mvpListLX предсказываемых векторов движения по списку LX опорных кадров (в данном случае X=0 или 1), вычисляет количества кода при кодировании этих разностей векторов движения и подает эти количества в блок 126 выбора предсказываемого вектора движения.
Блок 126 выбора предсказываемого вектора движения выбирает кандидата на предсказываемый вектор mvpListLX[i] движения с минимальным количеством кода среди количеств кода для кандидатов на предсказываемый вектор движения из числа элементов, добавленных в список mvpListLX предсказываемых векторов движения по списку LX опорных кадров в качестве предсказываемого вектора mvpLX движения по списку LX опорных кадров. В случае существования множества кандидатов на предсказываемый вектор движения с минимальным количеством генерируемого кода в списке mvpListLX предсказываемых векторов движения в качестве оптимального предсказываемого вектора mvpLX движения в списке LX опорных кадров выбирается кандидат mvpListLX[i] на предсказываемый вектор движения с минимальным значением индекса i в списке mvpListLX предсказываемых векторов движения. Затем выбранный предсказываемый вектор mvpLX движения подается в блок 127 вычитания векторов движения. Кроме того, осуществляется вывод индекса i в списке предсказываемых векторов движения, соответствующем выбранному предсказываемому вектору mvpLX движения, в качестве индекса mvpIdxLX предсказываемого вектора движения по списку LX опорных кадров.
В заключение блок 127 вычитания векторов движения вычисляет разность mvdLX векторов движения в списке LX опорных кадров в результате вычитания выбранного предсказываемого вектора mvpLX движения по списку LX опорных кадров из вектора mvLX движения по списку LX опорных кадров и осуществляет вывод разности mvdLX векторов движения.
mvdLX=mvLX-mvpLX.
Как показано на фиг. 1, блок 105 предсказания компенсации движения выполняет компенсацию движения в соответствии с вектором mvLX движения в списке LX опорных кадров (в данном случае X=0 или 1), подаваемом из блока 102 обнаружения вектора в результате обращения к сигналу изображения декодированного кадра, хранимому в памяти 115 декодированного изображения, и подает полученный предсказанный сигнал изображения в блок 106 определения способа предсказания.
Блок 106 определения способа предсказания определяет способ предсказания. Вычисляются количество кода и искажение при кодировании для каждого режима предсказания и определяются размер блока предсказания и режим предсказания с минимальным количеством генерируемого кода и минимальным искажением при кодировании. Количество кода для информации о движении вычисляется в результате кодирования разности mvdLX векторов движения по списку LX опорных кадров, поданному из блока 127 вычитания векторов движения в составе блока 103 вычисления разности векторов движения, и индекса mvpIdxLX предсказываемого вектора движения по списку списке LX опорных кадров, представляющего предсказываемый вектор движения, поданный из блока 126 выбора предсказываемого вектора движения. Кроме того, вычисляется количество кода остаточного сигнала предсказания, полученное в результате кодирования остаточного сигнала предсказания между предсказанным сигналом изображения, подаваемым из блока 105 предсказания компенсации движения, и сигналом изображения, являющимся объектом кодирования, подаваемым из памяти 101 изображения. Затем в результате суммирования количества кода для информации о движении и количества кода для остаточного сигнала предсказания вычисляется общее количество генерируемого кода, которое задается в качестве первого оценочного значения.
Кроме того, после кодирования такого остаточного сигнала предсказания для оценки количества искажения осуществляется декодирование кодированного остаточного сигнала предсказания и в качестве коэффициента, представляющего ошибку относительно исходного сигнала изображения, возникающую за счет кодирования, вычисляется искажение при кодировании. В результате сравнения общих количеств генерируемого кода и искажений при кодировании одних с другими определяются размер блока предсказания и режим предсказания с минимальным количеством генерируемого кода и минимальным искажением при кодировании. Способ предсказания вектора движения, описанного выше, используется для вектора mvLX движения согласно режиму предсказания определенного размера блока предсказания, а индекс mvpIdxLX, представляющий предсказываемый вектор движения, кодируется в качестве элемента mvp_idx_LX[i] синтаксиса, представленного в качестве второго шаблона синтаксиса в единицах блоков предсказания. При этом целесообразным является получение количества генерируемого кода, вычисляемое в данном случае, в результате моделирования процесса кодирования, обеспечивающего возможность простой аппроксимации или приблизительной оценки.
Предсказание вектора движения при декодировании
Рассмотрим теперь процесс реализации способа предсказания вектора движения согласно настоящему изобретению в устройстве декодирования движущегося изображения, декодирующего битовый поток кодированного движущегося изображения на основе вышеописанного синтаксиса.
В случае выполнения способа предсказания вектора движения согласно варианту осуществления процесс обработки выполняется с помощью блока 204 вычисления вектора движения в составе устройства декодирования движущегося изображения, представленного на фиг. 2. Фиг. 13 является схематической иллюстрацией подробной конфигурации блока 204 вычисления вектора движения в составе устройства декодирования движущегося изображения, представленного на фиг. 2, которое соответствует устройству кодирования движущегося изображения согласно варианту осуществления. Часть фиг. 13 в окружении рамки в виде толстой линии иллюстрирует блок 204 вычисления вектора движения. Кроме того, часть иллюстрации внутри этой рамки в окружении рамки в виде толстого пунктира иллюстрирует операционные блоки согласно способу предсказания вектора движения, описание которого приводится ниже, и входит также в состав устройства кодирования движущегося изображения, что обеспечивает получение идентичных непротиворечивых результатов определения между процессом кодирования и процессом декодирования. Ниже способ предсказания вектора движения в процессе декодирования рассмотрим со ссылками на этот чертеж.
Блок 204 вычисления вектора движения включает в себя: блок 221 генерирования кандидатов на предсказываемый вектор движения; блок 222 добавления кандидатов на предсказываемый вектор движения; блок 223 удаления избыточных кандидатов на предсказываемый вектор движения; блок 224 ограничения числа кандидатов на предсказываемый вектор движения; блок 225 выбора предсказываемого вектора движения; и блок 226 суммирования векторов движения.
В процессе вычисления вектора движения, выполняемом блоком 204 вычисления вектора движения, вектор движения, используемый при межкадровом предсказании вычисляется для каждого из списков L0 и L1 опорных кадров. В частности, в случае, если режим PredMode предсказания блока, являющегося объектом кодирования, представляет собой межкадровое предсказание MODE_INTER, а режим межкадрового предсказания блока, являющегося объектом кодирования, - L0-предсказание Pred_L0, то вычисляется список mvpListL0 предсказываемых векторов движения по списку L0 опорных кадров, выбирается предсказываемый вектор mvpL0 движения и вычисляется вектор mvL0 движения по списку L0 опорных кадров. В то же время в случае, если режим межкадрового предсказания блока, являющегося объектом кодирования, - L1-предсказание Pred_L1, то вычисляется список mvpListL1 предсказываемых векторов движения по списку L1 опорных кадров, выбирается предсказываемый вектор mvpL1 движения и вычисляется вектор mvL1 движения по списку L1 опорных кадров. Кроме того, в случае, если режим межкадрового предсказания блока, являющегося объектом кодирования, - би-предсказание Pred_BI, то выполняется как L0-предсказание, так и L1-предсказание, вычисляется список mvpListL0 предсказываемых векторов движения по списку L0 опорных кадров, выбирается предсказываемый вектор mvpL0 движения по списку L0 опорных кадров и вычисляется вектор mvL0 движения по списку L0 опорных кадров, а также вычисляется список mvpListL1 предсказываемых векторов движения по списку L1 опорных кадров, выбирается предсказываемый вектор mvpL1 движения по списку L1 опорных кадров и вычисляется вектор mvL1 движения по списку L1 опорных кадров.
Точно так же, как и на стороне кодирования, на стороне декодирования для каждого из списков L0 и L1 опорных кадров выполняется процесс вычисления вектора движения и процесс вычисления вектора движения является общим для обоих списков L0 и L1 опорных кадров. Поэтому в приводимом ниже описании как L0, так и L1 будут обозначаться как LX. В процессе вычисления вектора движения по списку L0 опорных кадров X=0, а в процессе вычисления вектора движения по списку L1 опорных кадров X=1. Кроме того, в случае, если в процессе вычисления разности векторов движения по списку LX опорных кадров используется информация не по списку LX опорных кадров, а информация по другому списку, то другой список обозначается как LY.
Регламент работы блока 221 генерирования кандидатов на предсказываемый вектор движения, блока 222 добавления кандидатов на предсказываемый вектор движения, блока 223 удаления избыточных кандидатов на предсказываемый вектор движения и блока 224 ограничения числа кандидатов на предсказываемый вектор движения в составе блока 204 вычисления вектора движения, при котором эти блоки выполняют операции, идентичные операциям, выполняемым соответственно блоком 121 генерирования кандидатов на предсказываемый вектор движения, блоком 122 добавления кандидатов на предсказываемый вектор движения, блоком 123 удаления избыточных кандидатов на предсказываемый вектор движения и блоком 124 ограничения числа кандидатов на предсказываемый вектор движения в составе блока 103 вычисления разности векторов движения на стороне кодирования, обеспечивает возможность получения идентичных непротиворечивых кандидатов на предсказываемый вектор движения между стороной кодирования и стороной декодирования на стороне устройства кодирования и на стороне устройстве декодирования.
Блок 221 генерирования кандидатов на предсказываемый вектор движения выполняет тот же процесс обработки, что и блок 121 генерирования кандидатов на предсказываемый вектор движения на стороне кодирования представленный на фиг. 12. Векторы движения декодированного блока предсказания, смежного с блоком, являющимся объектом декодирования, внутри кадра блока, являющегося объектом декодирования, декодированный блок предсказания, располагающийся в положении, совпадающем с положением блока, являющегося объектом декодирования, или в смежном положении внутри неидентичного кадра, и т.п., декодированные и записанные в памяти 209 для хранения информации по кодированию, считываются из памяти 209 для хранения информации по кодированию. На основе векторов движения декодированного неидентичного блока, считанных из памяти 209 для хранения информации по кодированию, для каждой группы блоков предсказания генерируются кандидаты mvLXCol, mvLXA и mvLXB на предсказываемый вектор движения, которые подаются в блок 222 добавления кандидатов на предсказываемый вектор движения.
Вычисление кандидатов mvLXCol, mvLXA и mvLXB на предсказываемый вектор движения может осуществляться и в результате выполнения масштабирования в соответствии с опорным индексом. Так как блок 221 генерирования кандидатов на предсказываемый вектор движения выполняет тот же процесс обработки, что и блок 121 генерирования кандидатов на предсказываемый вектор движения на стороне кодирования, показанной на фиг. 12, подробное описание этого процесса в данном случае опускается.
Блок 222 добавления кандидатов на предсказываемый вектор движения выполняет тот же процесс обработки, что и блок 122 добавления кандидатов на предсказываемый вектор движения на стороне кодирования, показанной на фиг. 12. Вычисленные кандидаты mvLXCol, mvLXA и mvLXB на предсказываемый вектор движения хранятся в списке mvpListLX предсказываемых векторов движения по списку LX опорных кадров.
Блок 223 удаления избыточных кандидатов на предсказываемый вектор движения выполняет тот же процесс обработки, что и блок 123 удаления избыточных кандидатов на предсказываемый вектор движения на стороне кодирования, показанной на фиг. 12. Определяются кандидаты на предсказываемый вектор движения, имеющие одинаковые значения векторов движения из числа кандидатов на предсказываемый вектор движения, хранимых в списке mvpListLX предсказываемых векторов движения по списку LX опорных кадров, и первый из кандидатов на предсказываемый вектор движения, имеющих по результатам определения одинаковые значения векторов движения, сохраняется, а другие кандидаты на предсказываемый вектор движения удаляются из списка mvpListLX предсказываемых векторов движения для предотвращения избыточности кандидатов на предсказываемый вектор движения и обеспечения, таким образом, обновления списка mvpListLX предсказываемых векторов движения.
Блок 224 ограничения числа кандидатов на предсказываемый вектор движения выполняет тот же процесс обработки, что и блок 124 ограничения числа кандидатов на предсказываемый вектор движения на стороне кодирования, показанной на фиг. 12. Блок 224 ограничения числа кандидатов на предсказываемый вектор движения подсчитывает число элементов, добавленных в список mvpListLX предсказываемых векторов движения и задает число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров равным значению числа подсчитанных кандидатов.
Кроме того, по той же причине, что и на стороне кодирования, блок 224 ограничения числа кандидатов на предсказываемый вектор движения фиксирует число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров, добавленных в список mvpListLX предсказываемых векторов движения, на конечном числе finalNumMVPCand кандидатов.
В этом варианте осуществления конечное число finalNumMVPCand кандидатов. задается равным "2". В случае, если число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров меньше, чем заданное конечное число finalNumMVPCand кандидатов, векторы движения, имеющие значение (0, 0), добавляются в список mvpListLX предсказываемых векторов движения до достижения равенства между числом numMVPCandLX кандидатов на предсказываемый вектор движения и конечным числом finalNumMVPCand кандидатов и, таким образом, обеспечивается ограничение числа кандидатов на предсказываемый вектор движения заданным значением. В этом случае существует возможность добавления избыточных векторов движения, имеющих значение (0, 0), однако даже при любом значении индекса предсказываемого вектора движения в пределах от "0" до "заданное значение - 1" предсказываемый вектор движения может быть определен на стороне декодирования. В то же время в случае, если число numMVPCandLX кандидатов на предсказываемый вектор движения списка LX опорных кадров превышает заданное конечное число finalNumMVPCand кандидатов, то все элементы, добавленные к индексам, превышающим "finalNumMVPCand - 1", удаляются из списка mvpListLX предсказываемых векторов движения, число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров становится равным конечному числу finalNumMVPCand кандидатов и, таким образом, число кандидатов на предсказываемый вектор движения ограничивается заданным значением. Обновленный список mvpListLX предсказываемых векторов движения подается в блок 225 выбора предсказываемого вектора движения
При этом разность mvdLX векторов движения по списку LX опорных кадров (в данном случае X=0 или 1) для каждого блока предсказания, декодированного блоком 202 декодирования первого битового потока, подается в блок 226 суммирования векторов движения, а индекс mvpIdxLX предсказываемого вектора движения предсказываемого вектора движения по списку LX опорных кадров, декодированного блоком 202 декодирования первого битового потока, подается в блок 225 выбора предсказываемого вектора движения.
В результате подачи индекса mvpIdxLX предсказываемого вектора движения по списку LX опорных кадров, декодированному блоком 202 декодирования первого битового потока, блок 225 выбора предсказываемого вектора движения осуществляет вывод кандидата mvpListLX[mvpIdxLX] на предсказываемый вектор движения, соответствующий поданному индексу mvpIdxLX, в качестве предсказываемого вектора mvpLX движения по списку LX опорных кадров из списка mvpListLX предсказываемых векторов движения. Поданный кандидат на предсказываемый вектор движения подается в блок 226 суммирования векторов движения в качестве предсказываемого вектора mvpLX движения.
В заключение блок 226 суммирования векторов движения в результате суммирования разности mvdLX векторов движения по списку LX опорных кадров, подвергнутого декодированию и подаче блоком 202 декодирования первого битового потока, и предсказываемого вектора mvpLX движения по списку LX опорных кадров вычисляет вектор mv движения по списку LX опорных кадров и осуществляет вывод вектора mvLX движения.
mvLX=mvpLX+mvdLX.
Как указано выше, для каждого блока предсказания вычисляется вектор mvLX движения по списку LX опорных кадров. В результате выполнения компенсации движения с использованием вектора движения генерируется предсказанный сигнал изображения, который добавляется к декодированному остаточному сигналу предсказания, и в результате генерируется декодированный сигнал изображения.
Последовательности процессов обработки в блоке 103 вычисления разности векторов движения в составе устройства кодирования движущегося изображения и в блоке 204 вычисления вектора движения в составе устройства декодирования движущегося изображения рассмотрим со ссылками на соответствующие блок-схемы последовательностей процесса, представленные на фиг. 14 и 15. Фиг. 14 является блок-схемой последовательности процесса, иллюстрирующей последовательность процесса вычисления разности векторов движения, выполняемого устройством кодирования движущегося изображения, а фиг. 15 является блок-схемой последовательности процесса, иллюстрирующей последовательность процесса вычисления вектора движения в устройстве декодирования движущегося изображения.
Последовательность процесса вычисления разности векторов движения на стороне кодирования рассмотрим со ссылками на фиг. 14. На стороне кодирования прежде всего блок 103 вычисления разности векторов движения задает конечное число finalNumMVCand кандидатов на предсказываемый вектор движения (на этапе S100). В этом варианте осуществления, конечное число finalNumMVPCand кандидатов задается равным "2".
Затем для каждого из списков L0 и L1 опорных кадров блок 103 вычисления разности векторов движения вычисляет разность векторов движения, используемых при межкадровом предсказании, выбранных в блоке, являющемся объектом кодирования (на этапах S101-S106).
В случае вычисления разности mvdLX векторов движения по списку LX опорных кадров (ДА на этапе S102) вычисляются кандидаты на предсказываемый вектор движения по списку LX опорных кадров и создается список mvpListLX предсказываемых векторов движения по списку LX опорных кадров (на этапе S103). Создание списка mvpListLX предсказываемых векторов движения осуществляется в результате вычисления множества кандидатов на предсказываемый вектор движения блоком 121 генерирования кандидатов на предсказываемый вектор движения в составе блока 103 вычисления разности векторов движения, добавления вычисленных кандидатов на предсказываемый вектор движения в список mvpListLX предсказываемых векторов движения блоком 122 добавления кандидатов на предсказываемый вектор движения, удаления ненужных кандидатов на предсказываемый вектор движения блоком 123 удаления избыточных кандидатов на предсказываемый вектор движения и фиксации числа кандидатов на предсказываемый вектор движения на числе numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров, добавленных в список mvpListLX предсказываемых векторов движения, блоком 124 ограничения числа кандидатов на предсказываемый вектор движения, Подробную последовательность процесса обработки на этапе S103 рассмотрим ниже со ссылками на блок-схему последовательности процесса, представленную на фиг. 16.
Затем блок 125 вычисления количеств кода для кандидатов на предсказываемый вектор движения и блок 126 выбора предсказываемого вектора движения обеспечивают выбор предсказываемого вектора mvpLX движения по списку LX опорных кадров из списка mvpListLX предсказываемых векторов движения по списку LX (на этапе S104). Прежде всего блок 125 вычисления количеств кода вычисляет каждую разность векторов движения, являющуюся разностью между вектором mvLX движения и каждым кандидатом mvpListLX[i] на предсказываемый вектор движения, хранимым в списке mvpListLX предсказываемых векторов движения, и для каждого элемента по списку mvpListLX предсказываемых векторов движения вычисляет количество кода при кодировании разности этих векторов движения, а блок 126 выбора предсказываемого вектора движения выбирает в качестве предсказываемого вектора mvpLX движения кандидата mvpListLX[i] на предсказываемый вектор с минимальным количеством кодирования для каждого кандидата на предсказываемый вектор движения среди элементов, добавленных в список mvpListLX предсказываемых векторов движения. В случае множества кандидатов на предсказываемый вектор движения с минимальным генерированным количеством кода в списке mvpListLX предсказываемых векторов движения в качестве оптимального предсказываемого вектора mvpLX движения выбирается кандидат mvpListLX[i] на предсказываемый вектор движения с минимальным значением индекса i в списке mvpListLX предсказываемых векторов движения.
Затем в результате вычитания выбранного предсказываемого вектора mvpLX движения по списку LX опорных кадров из вектора mvLX движения по списку LX опорных кадров блок 127 вычитания векторов движения вычисляет разность mvdLX векторов движения по списку LX опорных кадров (на этапе S105).
mvdLX=mvLX-mvpLX.
Далее со ссылками на фиг. 15 рассмотрим последовательность вычисления вектора движения на стороне декодирования. И на стороне декодирования для каждого из списков L0 и L1 опорных кадров блок 204 вычисления вектора движения вычисляет вектор движения, используемый при межкадровом предсказании (на этапах S201-S206).
В случае вычисления вектора движения mvdLX по списку LX опорных кадров (ДА на этапе S202) вычисляются кандидаты на предсказываемый вектор движения по списку LX опорных кадров и создается список mvpListLX предсказываемых векторов движения по списку LX опорных кадров (на этапе S203). Создание списка mvpListLX предсказываемых векторов движения осуществляется в результате вычисления множества кандидатов на предсказываемый вектор движения блоком 221 генерирования кандидатов на предсказываемый вектор движения в составе блока 204 вычисления разности векторов движения, добавления вычисленных кандидатов на предсказываемый вектор движения в список mvpListLX предсказываемых векторов движения блоком 222 добавления кандидатов на предсказываемый вектор движения, удаления ненужных кандидатов на предсказываемый вектор движения блоком 223 удаления избыточных кандидатов на предсказываемый вектор движения и фиксации числа кандидатов на предсказываемый вектор движения на числе numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров, добавленных в список mvpListLX предсказываемых векторов движения, блоком 224 ограничения числа кандидатов на предсказываемый вектор движения. Подробную последовательность процесса обработки на этапе S203 рассмотрим ниже со ссылками на блок-схему последовательности процесса, представленную на фиг. 16.
Затем блок 225 выбора предсказываемого вектора движения осуществляет извлечение кандидата mvpListLX[mvpIdxLX] на предсказываемый вектор движения, соответствующего индексу mvpIdxLX предсказываемого вектора движения, декодированного блоком 202 декодирования первого битового потока, из списка mvpListLX предсказываемых векторов движения в качестве выбранного предсказываемого вектора mvpLX движения (на этапе S204).
Затем в результате суммирования разности mvdLX векторов движения по списку LX опорных кадров, декодированной и поданной блоком 202 декодирования первого битового потока, и предсказываемого вектора mvpLX движения по списку LX опорных кадров блок 226 суммирования векторов движения вычисляет вектор mvLX движения по списку LX опорных кадров (на этапе S205).
mvLX=mvpLX+mvdLX.
Далее последовательность процесса извлечения кандидатов на предсказываемый вектор движения и создания списка предсказываемых векторов движения, общего для шага S103, показанного на фиг. 14, и шага S203, показанного на фиг. 15, рассмотрим подробно со ссылками на блок-схему последовательности процесса, представленную на фиг. 16.
Способ предсказания вектора движения
Фиг. 16 является блок-схемой последовательности процесса, иллюстрирующей последовательность процесса обработки в блоках 121 и 221 генерирования кандидатов на предсказываемый вектор движения, в блоках 122 и 222 добавления кандидатов на предсказываемый вектор движения, в блоках 123 и 223 удаления избыточных кандидатов на предсказываемый вектор движения и в блоках 124 и 224 ограничения числа кандидатов на предсказываемый вектор движения, имеющих функции, общие для блока 103 вычисления разности векторов движения в составе устройства кодирования движущегося изображения и для блока 204 вычисления вектора движения в составе устройства декодирования движущегося изображения.
Прежде всего блок 121 или 221 генерирования кандидатов на предсказываемый вектор движения осуществляет извлечение кандидатов на предсказываемый вектор движения из блока предсказания кадра другого времени и извлекает флаг availableFlagLXCol, представляющий возможность или невозможность использования кандидата на предсказываемый вектор движения блока предсказания кадра другого времени, вектор mvLXCol движения, опорный индекс refIdxCol и список ListCol (на этапе S301 на фиг. 16). Последовательность процесса извлечения на этапе S301 рассмотрим подробно ниже со ссылками на блок-схемы последовательности процесса, представленные на фиг. 24-30.
Затем блок 121 или 221 генерирования кандидатов на предсказываемый вектор движения осуществляет извлечение кандидатов на предсказываемый вектор движения из блока предсказания, смежного с левой стороной, и извлекает флаг availableFlagLXA, представляющий возможность или невозможность использования кандидата на предсказываемый вектор движения блока предсказания, смежного с левой стороной, вектор mvLXA движения, опорный индекс refIdxA и список ListA (на этапе S302 на фиг. 16). Кроме того, в случае списка L0 опорных кадров X=0, а в случае списка L1 опорных кадров X=1 (как и далее). Затем блок 121 или 221 генерирования кандидатов на предсказываемый вектор движения осуществляет извлечение кандидатов на предсказываемый вектор движения из блока предсказания, смежного с верхней стороной, и извлекает флаг availableFlagLXB, представляющий возможность или невозможность использования кандидат на предсказываемый вектор движения блока предсказания, смежного с верхней стороной, вектор mvLXB движения, опорный индекс refIdxB и список ListB (на этапе S303 на фиг. 16). Процессы обработки на этапах S302 и S303, показанных на фиг. 16, являются общими, за исключением положений и чисел перечисляемых смежных блоков и последовательностей сканирования смежных блоков, и позволяют извлекать флаг availableFlagLXN, представляющий возможность или невозможность использования кандидата на предсказываемый вектор движения блока предсказания, вектор mvLXN движения, опорный индекс refIdxN и список ListN (в данном случае N представляет собой А или В, как и далее). Последовательность процесса обработки на этапах S302 и S303 рассмотрим ниже подробно со ссылками на блок-схемы последовательности процесса, представленные на фиг. 17-21.
Затем блок 122 или 222 добавления кандидатов на предсказываемый вектор движения создает список mvpListLX предсказываемых векторов движения и добавляет кандидатов mvLXCol, mvLXA и mvLXB на предсказываемый вектор по каждому списку LX опорных кадров (на этапе S304 на фиг. 16). Последовательность процесса добавления на этапе S304 рассмотрим ниже подробно со ссылками на блок-схему последовательности процесса, представленную на фиг. 31.
Затем в случае, если кандидат на вектор mvLXA предсказания в пространстве, извлеченный из группы блоков предсказания, смежной с левой стороной, и кандидат на предсказываемый вектора mvLXB движения в пространстве, извлеченный из группы блоков предсказания, смежной с верхней стороной, в списке mvpListLX предсказываемых векторов движения, имеют одинаковое значение, то блок 123 или 223 удаления избыточных кандидатов на предсказываемый вектор движения определяет одного из кандидатов в качестве избыточного кандидата на вектор движения и удаляет избыточного кандидата mvLXB на вектор движения при сохранении кандидата mvLXA на вектор движения в порядке убывания, другими словами, кандидата mvLXA на вектор движения, имеющего наименьший индекс i (на этапе S305 на фиг. 16). В блоке удаления избыточных кандидатов на предсказываемый вектор движения процесс сравнения векторов движения на избыточность между кандидатом mvLXCol на предсказываемый вектор движения во времени и кандидатом mvLXA или mvLXB на предсказываемый вектор движения в пространстве не выполняется. Причина невыполнения этого процесса заключается в том, что вследствие использования разной памяти для информации о движении, к которой осуществляется доступ, и разных объемов обработки во многих случаях процессы генерирования кандидата на предсказываемый вектор движения во времени и генерирования кандидата на предсказываемый вектор движения в пространстве осуществляются параллельно. Поэтому при сравнении векторов движения между кандидатом на предсказываемый вектор движения во времени и кандидатом на предсказываемый вектор движения в пространстве возникает необходимость ускорения синхронизации в случае выполнения параллельной обработки и время ожидания для одного из процессов увеличивается. Следовательно, целесообразным является разделение процесса получения кандидата на предсказываемый вектор движения во времени и процесса получения кандидата на предсказываемый вектор движения в пространстве одного от другого по возможности, и в настоящем изобретении процесс сравнения векторов движения на избыточность между кандидатом на предсказываемый вектор движения во времени и кандидатом на предсказываемый вектор движения в пространстве не выполняется. Так как процесс получения предсказываемого вектора движения во времени и процесс получения предсказываемого вектора движения в пространстве отличаются один от другого, то извлекаются предсказываемые векторы движения с взаимно различными характеристиками. Следовательно, вероятность идентичности предсказываемого вектора движения во времени и предсказываемого вектора движения в пространстве является низкой, и никакого снижения эффективности кодирования не происходит даже в случае невыполнения сравнения векторов движения между кандидатом на предсказываемый вектор движения во времени и кандидатом на предсказываемый вектор движения в пространстве. Последовательность процесса обработки удаления на этапе S305 рассмотрим ниже подробно со ссылками на блок-схему последовательности процесса, представленную на фиг. 32.
Затем блок 124 или 224 ограничения числа кандидатов на предсказываемый вектор движения подсчитывает число элементов, добавленных в список mvpListLX предсказываемых векторов движения, задает число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров равным числу добавленных элементов и ограничивает число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров, добавленных в список mvpListLX предсказываемых векторов движения, заданным конечным числом finalNumMVPCand кандидатов (на этапе S306 на фиг. 16). Последовательность процесса удаления на этапе S306 рассмотрим ниже подробно со ссылками на блок-схему последовательности процесса, представленную на фиг. 33.
Последовательность извлечения кандидата на предсказываемый вектор движения из блоков предсказания, смежных с левой стороной или с верхней стороной, на этапах S301 и S302, показанных на фиг. 16, рассмотрим подробно.
Как показано на фиг. 5, 6, 7 и 8, кандидаты на предсказываемый вектор движения извлекаются из окружающих блоков предсказания, смежных с блоком предсказания (с блоком предсказания, являющимся объектом обработки, показанным на фиг. 5, 6, 7 и 8), определяемым для осуществления компенсации движения внутри блока кодирования внутри одного и того же кадра.
В качестве кандидатов на предсказываемый вектор движения кандидаты на предсказываемый вектор движения выбираются на основе группы А блоков предсказания, образуемой блоками Ak предсказания (в данном случае k=0 или 1), смежными с левой стороной блока предсказания, являющегося объектом обработки, другими словами, блоками A0 и A1, и группы В блоков предсказания, образуемой блоками Bk предсказания (в данном случае k=0, 1 или 2), смежными с верхней стороной, другими словами, блоками В0, В1 и В2.
Далее рассмотрим способ извлечения кандидатов на предсказываемый вектор движения из группы N блоков предсказания, смежной с левой стороной и верхней стороной, в последовательности процесса обработки на этапах S301 и S302, показанных на фиг. 16. Фиг. 17 является блок-схемой последовательности процесса получения кандидатов на предсказываемый вектор движения на этапах S301 и S302, показанных на фиг. 16, в соответствии с вышеописанным способом сканирования. Суффикс X, равный 0 или 1, представляет список опорных кадров, а N обозначает участок А смежной группы блоков предсказания (с левой стороны) или участок В смежной группы блоков предсказания (с правой стороны).
Для извлечения кандидатов на предсказываемый вектор движения из левого блока предсказания (на этапе S301 на фиг. 16) и для извлечения кандидатов на предсказываемый вектор движения из блоков А0 и А1 предсказания, смежных с левой стороной блока предсказания, являющегося объектом кодирования/декодирования, с N=А на фиг. 17 и кандидатов на предсказываемый вектор движения из верхнего блока предсказания (на этапе S302 на фиг. 16), кандидаты на предсказываемый вектор движения вычисляются из блоков В0, В1 и В2 предсказания, смежных с верхней стороной, с N=В на фиг. 17 в последовательности, описываемой ниже.
Прежде всего, определяются блоки предсказания, смежные с блоком предсказания, являющимся объектом кодирования/декодирования, и в случае возможности использования блока Nk предсказания (в данном случае k=0,1 или 2; причем 2 только для верхней группы блоков предсказания) извлекается информация по кодированию, хранимая в памяти 114 для хранения информации по кодированию или в памяти 209 для хранения информации по кодированию. В данном случае информация по кодированию смежного блока Nk предсказания, подвергаемая извлечению, включает в себя режим PredMode предсказания, флаг predFlagLX[xNk][yNk], представляющий использование или неиспользование списка LX опорных кадров, опорный индекс refIdxLX[xNk][yNk] по списку LX опорных кадров и вектор mvLX[xNk][yNk] движения по списку LX опорных кадров. В случае группы (N=А) блоков предсказания, смежной с левой стороной блока предсказания, являющегося объектом кодирования/декодирования (ДА на этапе S1101), информация по кодированию извлекается в результате определения блока А0 предсказания, смежного с нижней левой стороной, и блока А1 предсказания, смежного с левой стороной (на этапах S1102 и S1103). В то же время в случае группы (N=В) блоков предсказания, смежной с верхней стороной блока предсказания, являющегося объектом кодирования/декодирования (НЕТ на этапе S1101), информация по кодированию извлекается в результате определения блока В0 предсказания, смежного с верхней правой сторона, блока В1 предсказания, смежного с верхней стороной, и блок В2 предсказания, смежного с верхней левой стороной (на этапах S1104, S1105 и S1106). Кроме того, смежный блок Nk предсказания может использоваться в случае, если смежный блок предсказания располагается внутри слайса, включающего в себя блок предсказания, являющий объектом кодирования/декодирования, но не может использоваться в случае, если, смежный блок предсказания располагается вне слайса.
Далее флаг availableFlagLXN, представляющий выбор или невыбор предсказываемого вектора движения из группы N блоков предсказания, задается равным "0", а вектор mvLXN движения, представляющий группу N блоков предсказания, задается равным (0, 0) (на этапе S1107).
Далее извлекается кандидат на предсказываемый вектор, соответствующий определению 1 состояния или определению 2 состояния, описанному выше (на этапе S1108). В смежных блоках N0, N1 и N2 (N2 только для верхней смежной группы В блоков предсказания) предсказания группы N блоков предсказания (в данном случае N=А или В) осуществляется поиск блока предсказания, имеющего вектор движения идентичного опорного кадра по списке LX опорных кадров, идентичному списку LX опорных кадров, заданному в качестве текущего объекта в блоке предсказания, являющемся объектом кодирования/декодирования, или по списку LY опорных кадров (Y=!Х; в случае, если список опорных кадров, заданный в качестве текущего объекта, представляет собой L0, то противоположный список опорных кадров представляет собой L1, а в случае, если список опорных кадров, заданный в качестве текущего объекта, представляет собой L1, то противоположный список опорных кадров представляет собой L0), противоположном списку LX опорных кадров, заданному в качестве текущего объекта в блоке предсказания, являющемся объектом кодирования/декодирования, и вектор движения этого блока предсказания задается в качестве кандидата на предсказываемый вектор движения.
Фиг. 18 является блок-схемой последовательности процесса извлечения на этапе S1108, показанном на фиг. 17. Описываемый ниже процесс обработки выполняется для смежных блоков Nk предсказания (в данном случае k=0, 1 или 2; причем 2 только для верхней смежной группы блоков предсказания) в порядке k=0, 1 и 2 (на этапах S1201-S1207). В случае, когда N=А, описываемый ниже процесс обработки выполняется в порядке А0 и А1 от нижней стороны к верхней стороне, а в случае, когда N=В, - в порядке В0, В1 и В2 от правой стороны к левой стороне.
В случае возможности использования смежного блока Nk предсказания при режиме PredMode предсказания блока Nk предсказания, не являющемся внутрикадровым предсказанием MODE INTRA (ДА на этапе S1202), осуществляется определение состояния согласно определению 1 состояния, описанному выше (на этапе S1203). В случае, если флаг predFlagLX[xNk][yNk], представляющий использование или неиспользование списка LX опорных кадров смежного блока Nk предсказания, равен 1, другими словами, в случае, если межкадровое предсказание смежного блока Nk предсказания делается с использованием вектора движения по списку LX опорных кадров, идентичному с объектом вычисления, а опорный индекс refIdxLX[xNk][yNk] смежного блока Nk предсказания по LX и индекс refIdxLX блока предсказания, являющегося объектом обработки, являются одинаковыми, другими словами, если межкадровое предсказание смежного блока Nk предсказания при LX-предсказании делается с использованием идентичного опорного кадра (ДА на этапе S1203), то процесс обработки переходит на этап S1204. В противном случае (НЕТ на этапе S1203) осуществляется определение состояния на этапе S1205.
В случае ДА на этапе S1203 флаг availableFlagLXN задается равным "1", предсказываемый вектор mvLXN движения группы N блоков предсказания задается равным значению вектора mvLX[xNk][yNk] движения по списку LX опорных кадров смежного блока Nk предсказания, опорный индекс refIdxN группы N блоков предсказания задается равным значению опорного индекса refIdxLX[xNk][yNk] по списку LX опорных кадров смежного блока Nk предсказания, а список ListN опорных кадров группы N блоков предсказания задается равным LX (на этапе S1204). Затем этот процесс вычисления кандидата на предсказываемый вектор движения завершается.
В то же время в случае НЕТ на этапе этапа S1203 осуществляется определение состояния согласно определению 2 состояния (на этапе S1205). В случае, если флаг predFlagLY, представляющий использование или неиспользование списка LY опорных кадров смежного блока Nk предсказания равен "1", другими словами, в случае, если межкадровое предсказание смежного блока предсказания, Nk делается с использованием вектора движения по списку LY опорных кадров, неидентичному с объектом вычисления, а РОС опорного кадра по списку LY опорных кадров, противоположному списку LX опорных кадров, являющемуся текущим объектом смежного блока Nk предсказания, и РОС опорного кадра по LX списку опорных кадров блока предсказания, являющемуся объектом обработки, являются одинаковыми, другими словами, в случае, если межкадровое предсказание смежного блока Nk предсказания при LY-предсказании делается с использованием идентичного опорного кадра (ДА на этапе S1205), то процесс обработки переходит на этап S1206, флаг availableFlagLXN задается равным "1", предсказываемый вектор mvLXN движения группы N блоков предсказания задается равным значению вектора mvLY[xNk][yNk] движения по списку LY опорных кадров смежного блока Nk предсказания, опорный индекс refIdxN группы N блоков предсказания задается равным значению опорного индекса refIdxLY[xNk][yNk] по списку LY опорных кадров смежного блока Nk предсказания, а список ListN опорных кадров группы N блоков предсказания задается равным LY (на этапе S1206). Затем этот процесс вычисления кандидата на предсказываемый вектор движения завершается.
В случае несоответствия такому состоянию, другими словами, в случае НЕТ на этапе S1203 и НЕТ на этапе S1205, к увеличивается на единицу и выполняется процесс обработки (на этапах S1201-S1207) следующего смежного блока предсказания, причем процесс обработки повторяется до тех пор, пока флаг availableFlagLXN не становится равным "1" или процесс обработки смежного блока А1 или В2 не завершается.
Затем, как показано на блок-схеме последовательности процесса, представленной на фиг. 17, если группа блока предсказания является смежной с левой стороной (N=А) и флаг availableFlagLXN равен "0" (ДА на этапе S1109), другими словами, в случае невозможности вычисления кандидата на предсказываемый вектор движения на этапе S1108 для группы блоков предсказания, смежной с левой стороной, вычисляется кандидат на предсказываемый вектор движения, соответствующий определению 3 состояния или определению 4 состояний, описанному выше (на этапе S1110).
Фиг.19 является блок-схемой последовательности процесса извлечения на этапе S1110, показанном на фиг. 17. Описываемый ниже процесс обработки выполняется для смежного блока Nk предсказания в порядке k=0, и k=1 (в данном случае k=0 или 1) (на этапах S1301-S1307).
В случае возможности использования смежного блока Nk предсказания при режиме PredMode предсказания блока Nk предсказания, не являющемся внутрикадровым предсказанием MODE_INTRA (ДА на этапе S1302), осуществляется определение состояния согласно определению 3 состояния, описанному выше (на этапе S1303). В случае, если флаг predFlagLX[xNk][yNk], представляющий использование или неиспользование списка LX опорных кадров смежного блока Nk предсказания, равен 1, другими словами, в случае, если межкадровое предсказание смежного блока Nk предсказания делается с использованием вектора движения по списку LX опорных кадров, идентичному с объектом вычисления, то процесс обработки переходит на этап S1304. В противном случае (НЕТ на этапе S1303) осуществляется определение состояния на этапе S1305.
В случае ДА на этапе этапа S1303 флаг availableFlagLXN задается равным "1", предсказываемый вектор mvLXN движения группы N блоков предсказания задается равным значению вектора mvLX[xNk][yNk] движения по списку LX опорных кадров смежного блока Nk предсказания, опорный индекс refIdxN группы N блоков предсказания задается равным значению опорного индекса refIdxLX[xNk][yNk] по списку LX опорных кадров смежного блока Nk предсказания, а список ListN опорных кадров группы N блоков предсказания задается равным LX (на этапе S1304). Затем процесс обработки переходит на этап S1308.
В случае НЕТ на этапе этапа S1303 осуществляется определение состояния согласно определению 4 состояния (на этапе S1305). В случае, если флаг predFlagLY, представляющий использование или неиспользование списка LY опорных кадров смежного блока Nk предсказания равен "1", другими словами, в случае, если межкадровое предсказание смежного блока предсказания, Nk делается с использованием вектора движения по списку LY опорных кадров, неидентичному с объектом вычисления (ДА на этапе S1305), флаг availableFlagLXN задается равным "1", предсказываемый вектор mvLXN движения группы N блоков предсказания задается равным значению вектора mvLY[xNk][yNk] движения по списку LY опорных кадров смежного блока Nk предсказания, опорный индекс refIdxN группы N блоков предсказания задается равным значению опорного индекса refIdxLY[xNk][yNk] по списку LY опорных кадров смежного блока Nk предсказания, а и список ListN опорных кадров группы N блоков предсказания задается равным LY (на этапе S1306). Затем процесс обработки переходит на этап S1308.
В то же время случае несоответствия такому состоянию (в случае НЕТ на этапе S1303 и НЕТ на этапе S1305) к увеличивается на единицу и выполняется процесс обработки (на этапах S1301-S1307) следующего смежного блока предсказания, причем процесс обработки повторяется до тех пор, пока флаг availableFlagLXN не становится равным "1" или процесс обработки смежного блока А1 или В2 не завершается. Затем процесс обработки переходит на этап S1308.
Затем, если флаг availableFlagLXN равен "1" (ДА на этапе S1308), то выполняется вычисление вектора mvLXN движения (на этапе S1309). Последовательность процесса вычисления кандидата на предсказываемый вектор движения в пространстве на этапе S1309 рассмотрим со ссылкой на фиг. 20 и 21.
Фиг. 20 является блок-схемой последовательности процесса вычисления вектора движения на этапе S1309, показанном на фиг.19.
В результате вычитания РОС опорного кадра в списке ListN смежного блока предсказания из РОС текущего кадра, являющегося объектом кодирования/декодирования, вычисляется расстояние td между кадрами (на этапе S1601). В случае, если опорный кадр в списке ListN смежного блока предсказания предшествует текущему кадру, являющемуся объектом кодирования/декодирования, в порядке отображения, то расстояние td между кадрами имеет положительное значение. В то же время в случае, если опорный кадр в списке ListN смежного блока предсказания следует за текущим кадром, являющимся объектом кодирования/декодирования, в порядке отображения, то расстояние td между кадрами имеет отрицательное значение.
td=РОС текущего кадра, являющегося объектом кодирования/декодирования - РОС опорного кадра в списке ListN смежного блока предсказания.
Далее в результате вычитания РОС опорного кадра в списке LX текущего кадра, являющегося объектом кодирования/декодирования, из РОС текущего кадра, являющегося объектом кодирования/декодирования, вычисляется расстояние tb между кадрами (на этапе S1602). В случае, если опорный кадр в списке LX текущего кадра, являющегося объектом кодирования/декодирования, предшествует текущему кадру, являющемуся объектом кодирования/декодирования, в порядке отображения, то расстояние tb между кадрами имеет положительное значение. В то же время в случае, если опорный кадр в списке LX текущего кадра, являющегося объектом кодирования/декодирования, следует за текущим кадром, являющимся объектом кодирования/декодирования, в порядке отображения, то расстояние tb между кадрами имеет отрицательное значение.
tb=РОС текущего кадра, являющегося объектом кодирования/декодирования - РОС опорного кадра в списке LX текущего кадра, являющегося объектом кодирования/декодирования.
Затем в результате умножения вектора mvLXN на коэффициент tb/td масштабирования согласно приводимому ниже уравнению выполняется процесс вычисления масштаба (на этапе S1603) и получается масштабированный вектор mvLXN движения.
mvLXN=tb/td*mvLXN.
Фиг. 21 иллюстрирует пример выполнения вычисления масштаба на этапе S1603 в случае вычисления с точностью до целого числа. Процесс обработки на этапах S1604-S1606, показанных на фиг. 21, соответствует процессу обработки на этапе S1603, показанном на фиг. 20.
Прежде всего, точно так же, как и на блок-схеме последовательности процесса, представленной на фиг. 20, вычисляются расстояние td между кадрами и расстояние tb между кадрами (на этапах S1601 и S1602).
Затем с помощью приводимого ниже уравнения вычисляется переменная tx (на этапе S1603).
tx=(16384+Abs(td/2))/td.
Затем с помощью приводимого ниже уравнения вычисляется коэффициент DistScaleFactor масштабирования (на этапе S1605).
DistScaleFactor=(tb*tx+32)>>6.
Затем с помощью приводимого ниже уравнения вычисляется масштабированный вектор mvLXN движения (на этапе S1606).
mvLXN=ClipMv(Знак(DistScaleFactor*mvLXN)*((Abs(BistScaleFactor*mvLXN)+127)>>8)).
Далее способ извлечения кандидата на предсказываемый вектор движения из блока предсказания кадра другого времени на этапе S303, показанном на фиг. 16, рассмотрим подробно. Фиг. 24 является блок-схемой последовательности процесса извлечения кандидатов на предсказываемый вектор движения на этапе S303, показанном на фиг. 16.
Прежде всего на основе slice_type и collocated_from_l0_flag определяется задание кадра colPic другого времени в списке L0 опорных кадров или в списке L1 опорных кадров (на этапе S2101, показанном на фиг.24).
Фиг. 25 является блок-схемой последовательности процесса извлечения кадра colPic другого времени на этапе S2101, показанном на фиг. 24. В случае, если slice_type=В, а вышеописанный флаг collocated_from_l0_flag равен "0" (ДА на этапе S2201 и ДА на этапе S2202, показанных на фиг. 25), то в качестве кадра colPic другого времени задается RefPicList1[0], то есть кадр с опорным индексом по списку L1 опорных кадров, равным "0" (на этапе S2203, показанном на фиг. 25). В противном случае, если вышеописанный флаг collocated_from_l0_flag равен "1" (НЕТ на этапе S2201, НЕТ на этапе S2202 и НЕТ на этапе S2204, показанных на фиг. 25,), то в качестве кадра colPic другого времени задается RefPicList0[0], то есть кадр с опорным индексом по списку L0 опорных кадров, равным "О" (на этапе S2205, показанном на фиг. 25).
Далее, как показано на блок-схеме последовательности процесса, представленной на фиг. 24, осуществляется вычисление блока colPU предсказания другого времени и извлечение информации по кодированию (на этапе S2102, показанном на фиг. 24).
Фиг. 26 является блок-схемой последовательности процесса, иллюстрирующей последовательность извлечения блока colPU предсказания кадра colPic другого времени на этапе S2102, показанном на фиг. 24.
Прежде всего блок предсказания, располагающийся с нижней правой стороны (с внешней стороны) в положении, совпадающем с положением блока предсказания, являющегося объектом обработки, внутри кадра colPic другого времени задается в качестве блока colPU предсказания другого времени (на этапе S2301, показанном на фиг. 26). Этот блок предсказания соответствует блоку Т0 предсказания, показанному на фиг. 9.
Далее в случае, если блок предсказания располагается вне древовидного блока, который является блоком кодирования блока предсказания другого времени, то при режиме PredMode предсказания блока colPU предсказания, являющемся внутрикадровым предсказанием MODE INTRA (на этапах S2302 и S2303, показанных на фиг. 26), блок предсказания, располагающийся с нижней правой стороны от центра положения, совпадающего с положением блока предсказания, являющегося объектом обработки, внутри кадра colPic другого времени, повторно задается в качестве блока colPU предсказания другого времени (на этапе S2304, показанном на фиг. 26). Этот блок предсказания соответствует блоку Т1 предсказания, показанному на фиг. 9. Причина замены блока colPu предсказания на блок предсказания, располагающийся с нижней правой стороны от центра положении, совпадающем с положением блока предсказания, заключается в высокой стоимости аппаратного доступа к памяти для получения информации о colPU извне древовидного блока.
Далее, как показано на блок-схеме последовательности процесса, представленной на фиг. 24, вычисляются предсказываемый вектор mvLXCol движения по списку LX опорных кадров, вычисленный на основе блока предсказания неидентичного кадра, располагающегося в положении, совпадающем с положением блока предсказания, являющегося объектом кодирования/декодирования, и флаг availableFlagLXCol представляющий достоверность или недостоверность информации по кодированию списка LX опорных кадров группы блоков предсказания (на этапе S2103, показанном на фиг. 24).
Фиг. 27 является блок-схемой последовательности процесса, иллюстрирующей процесс получения информации по межкадровому предсказанию на этапе S2103, показанном на фиг. 24.
В случае, если режимом PredMode предсказания блока colPU предсказания другого времени является внутрикадровое предсказанием MODE_INTRA, то при невозможности использования этого блока (НЕТ на этапе S2401 и НЕТ на этапе S2402, показанных на фиг.27), флаг availableFlagLXCol задается равным "0", вектор mvLXCol движения задается равным (0, 0) (на этапах S2403 и S2404, показанных на фиг. 27) и процесс обработки завершается.
В случае возможности использования блока предсказания при режиме PredMode предсказания, не являющемся внутрикадровым предсказанием MODE_INTRA (ДА на этапе S2401 и ДА на этапе S2402, показанных на фиг. 27), вектор mvCol движения и опорный индекс refIdxCol вычисляются в приводимой ниже последовательности.
В случае, если флаг PredFlagL0[xPCol][yPCol], представляющий использование или неиспользование L0-предсказания блока colPU, равен "0" (ДА на этапе S2405, показанном на фиг. 27), то так как режимом предсказания блока colPU предсказания является Pred Ll, вектор mvCol движения задается равным значению MvL1[xPCol][yPCol], являющемуся значением вектора движения по L1 блока colPU предсказания (на этапе S2406, показанном на фиг.27), опорный индекс refIdxCol задается равным значению опорного индекса RefldxL1[xPCol][yPCol] по списку L1 опорных кадров (на этапе S2407, показанном на фиг. 27), а список ListCol задается равным L1 (на этапе S2408, показанном на фиг. 27).
В то же время в случае, если флаг L0 PredFlagL0 [xPCol][yPCol] предсказания блока colPU предсказания не равен "0" (НЕТ на этапе S2405, показанном на фиг.27), то определяется равенство или не равенство "0" флага PredFlagL1[xPCol][yPCol] L1-предсказания блока colPU предсказания. В случае, если флаг PredFlagL1[xPCol][yPCol] L1-предсказания блока colPU предсказания равен "0" (ДА на этапе S2409, показанном на фиг.27), то вектор mvCol движения задается равным значению MvL0[xPCol][yPCol], являющемуся значением вектора движения по списку L0 опорных кадров блока colPU предсказания (на этапе S2410, показанном на фиг.27), опорный индекс refldxCol задается равным значению опорного индекса RefldxL0[xPCol][yPCol] по списку L0 опорных кадров (на этапе S2411, показанном на фиг. 27), а список ListCol задается равным L0 (на этапе S2412, показанном на фиг. 27).
В случае, если ни флаг PredFlagL0[xPCol][yPCol] L0-предсказания блока colPU предсказания, ни флаг PredFlagL1[xPCol][yPCol] L1-предсказания блока colPU предсказания не равен "0" (НЕТ на этапе S2405 и НЕТ на этапе S2409, показанных на фиг. 27), то режимом межкадрового предсказания блока colPU предсказания является би-предсказание Pred_BI, и поэтому выбирается один от двух векторов движения по спискам L0 и L1 опорных кадров (на этапе S2413, показанном на фиг. 27).
Фиг. 28 является блок-схемой последовательности процесса, иллюстрирующей процесс получения информации по межкадровому предсказанию блока предсказания в случае, когда режимом межкадрового предсказания блока colPU предсказания является би-предсказание Pred_BI.
Прежде всего определяются значения переменных РОС всех кадров, добавленных в список опорных кадров, по сравнению со значением РОС текущего кадра, являющегося объектом кодирования/декодирования (на этапе S2501). В случае, если переменные РОС всех кадров, добавленных во все списки L0 и L1 опорных кадров блока colPU предсказания, меньше, чем РОС текущего кадра, являющегося объектом кодирования/декодирования (ДА на этапе S2501), то при X="0", другими словами, при вычислении кандидата на предсказываемый вектор вектора движения по списку L0 опорных кадров блока предсказания, являющегося объектом кодирования/декодирования (ДА на этапе S2502), выбирается информация по межкадровому предсказанию по L0 блока colPU предсказания. В то же время при X="1", другими словами, при вычислении кандидат на предсказываемый вектор вектора движения по списку L1 опорных кадров блока предсказания, являющегося объектом кодирования/декодирования (НЕТ на этапе
52502), выбирается информация по межкадровому предсказанию по L1 блока colPU предсказания. В то же время в случае, если по меньшей мере одна из переменных РОС кадров, добавленных во все списки L0 и L1 опорных кадров блока colPU предсказания, больше, чем РОС текущего кадра, являющегося объектом кодирования/декодирования (НЕТ на этапе S2501), то при флаге collocated_from_l0_flag, равном "0" (ДА на этапе
52503) выбирается информация по межкадровому предсказанию по L0 блока colPU предсказания. В то же время в случае, если флаг collocated_from_l0_flag равен "1" (НЕТ на этапе S2503), то выбирается информация по межкадровому предсказанию по L1 блока colPU предсказания. Другими словами, в случае, если блок colPU предсказания определяется с использованием списка L1 опорных кадров, то в качестве вектора mvCol движения выбирается вектор по L0, а в случае, если блок colPU предсказания определяется с использованием списка L0 опорных кадров, то в качестве вектора mvCol движения выбирается вектор по L1. Определение блока colPU предсказания и выбор вектора mvCol движения по взаимно противоположным спискам обеспечивает возможность вычисления вектора предсказания высокой точности, позволяющего осуществлять интерполяционное предсказание с использованием вектора движения для опорного кадра в направлении от кадра colPic к кадру, являющемуся объектом кодирования.
В случае выбора в качестве информациии по межкадровому предсказанию списка L0 блока colPU предсказания выбранный (ДА на этапе S2502 и ДА на этапе S2503) вектор mvCol движения задается равным значению MvL0[xPCol][yPCol] (на этапе S2504), опорный индекс refldxCol задается равным значению RefIdxL0[xPCol][yPCol] (на этапе S2505), а список ListCol задается равным L0 (на этапе S2506).
В то же время в случае выбора в качестве информации по межкадровому предсказанию спика L1 блока colPU предсказания (НЕТ на этапе S2502 и НЕТ на этапе S2503) вектор mvCol движения задается равным значению MvL1[xPCol][yPCol] (на этапе S2507), опорный индекс refldxCol задается равным значению RefIdxL1[xPCol][yPCol] (на этапе S2508), а список ListCol задается равным L1 (на этапе S2509).
Как показано на фиг. 27, в случае возможности извлечения информации по межкадровому предсказанию из блока colPU флаг availableFlagLXCol задается равным "1" (на этапе S2414, показанном на фиг. 27).
Далее, как показано на блок-схеме последовательности процесса, представленной на фиг. 24, в случае, если флаг availableFlagLXCol равен "1" (ДА на этапе S2104, показанном на фиг. 24), то вектор mvLXCol движения подвергается при необходимости масштабированию (на этапе S2105, показанном на фиг. 24). Последовательность процесса вычисления вектора mvLXCol движения рассмотрим со ссылками на фиг. 29 и 30.
Фиг. 29 является блок-схемой последовательности процесса, иллюстрирующей последовательность процесса вычисления вектора движения на этапе S2105, показанном на фиг.24.
В результате вычитания РОС опорного кадра в списке ListCol блока colPU предсказания из РОС кадра colPic другого времени вычисляется расстояние td между кадрами (на этапе S2601). В случае, если РОС опорного кадра в списке ListCol блока colPU предсказания предшествует кадру colPic другого времени в порядке отображения, то расстояние td между кадрами имеет положительное значение. В то же время в случае, если РОС опорного кадра в списке ListCol блока colPU предсказания следует за кадром colPic другого времени в порядке отображения, то расстояние td между кадрами имеет отрицательное значение.
td=РОС кадра colPic другого времени - РОС опорного кадра в списке ListCol блока colPU предсказания
В результате вычитания РОС опорного кадра в списке LX текущего кадра, являющегося объектом кодирования/декодирования, из РОС текущего кадра, являющегося объектом кодирования/декодирования, вычисляется расстояние tb между кадрами (на этапе S2602). В случае, если опорный кадр в списке LX текущего кадра, являющегося объектом кодирования/декодирования, предшествует текущему кадру, являющемуся объектом кодирования/декодирования, в порядке отображения, то расстояние tb между кадрами имеет положительное значение. В то же время в случае, если опорный кадр в списке LX текущего кадра, являющегося объектом кодирования/декодирования, следует за текущим кадром, являющимся объектом кодирования/декодирования, в порядке отображения, то расстояние tb между кадрами имеет отрицательное значение.
tb=РОС текущего кадра, являющегося объектом кодирования/декодирования - РОС опорный кадра в списке LX текущего кадра, являющегося объектом кодирования/декодирования
Затем осуществляется сравнение расстояний td и tb между кадрами одного с другим (на этапе S2603). В случае, если расстояния td и tb между кадрами являются одинаковыми (ДА на этапе S2603), то этот процесс вычисления масштаба завершается. В то же время в случае, если расстояние td и tb между кадрами одинаковыми не являются (НЕТ на этапе S2603), то в результате умножения вектора mvLXCol движения на коэффициент tb/td масштабирования с помощью приводимого ниже уравнения выполняется процесс вычисления масштаба (на этапе S2604), обеспечивающий получение масштабированного вектора mvLXCol движения.
mvLXCol=tb/td*mvLXCol.
Кроме того, иллюстрация примера случая выполнения вычисления масштаба на этапе S2604 с точностью до целого числа приводится на фиг. 30. Процесс обработки на этапах S2605-S2607, показанных на фиг. 30, соответствует процессу обработки на этапе S2604, показанном на фиг. 29.
Прежде всего, точно так же в блок-схеме последовательности процесса, представленной на фиг. 29, вычисляются расстояние td между кадрами и расстояние tb между кадрами (на этапах S2601 и S2602).
Затем осуществляется сравнение расстояний td и tb между кадрами одного с другим (на этапе S2603). В случае, если расстояния td и tb между кадрами являются одинаковыми (ДА на этапе S2603), то этот процесс вычисления масштаба завершается. В то же время в случае, если расстояние td и tb между кадрами одинаковыми не являются (НЕТ на этапе S2603), то с помощью приводимого ниже уравнения вычисляется переменная tx (на этапе S2605).
tx=(16384+Abs(td/2))/td/
Затем с помощью приводимого ниже уравнения вычисляется коэффициент DistScaleFactor масштабирования (на этапе S2606).
DistScaleFactor=(tb*tx+32)>>6.
Затем с помощью приводимого ниже уравнения вычисляется масштабированный вектор mvLXN движения (на этапе S2607).
mvLXN=ClipMv(Знак(DistScaleFactor*mvLXN)*((Abs(DistScaleFactor*mvLXN)+127)>>8)).
Последовательность процесса добавления кандидатов на предсказываемый вектор движения в список предсказываемых векторов движения на этапе S304, показанном на фиг. 16, рассмотрим подробно.
Кандидаты mvLXCol, mvLXA и mvLXB на предсказываемый вектор движения по каждому списку LX опорных кадров, вычисленные на этапах S301, S302 и S303, показанных на фиг. 16, добавляются в список mvpListLX предсказываемых векторов движения по списку LX опорных кадров (на этапе S304). В варианте осуществления настоящего изобретения присваиваются уровни приоритета, и в результате добавления кандидатов mvLXCol, mvLXA и mvLXB на предсказываемый вектор движения в список mvpListLX предсказываемых векторов движения по списку LX опорных кадров в порядке уровней приоритета от высшего уровня к низшему уровню элемент, имеющий высокий уровень приоритета, размещается в начале списка предсказываемых векторов движения. В случае ограничения числа элементов в списке предсказываемых векторов движения на этапе S306, показанном на фиг. 16, из списка предсказываемых векторов движения исключаются элементы, размещенные в конце списка предсказываемых векторов движения, а элементы с высоким уровнем приоритета остаются.
Список mvpListLX предсказываемых векторов движения образует списковую структуру с управлением по индексу i, представляющему положение в списке предсказываемых векторов движения, и имеет область хранения для хранения кандидата на предсказываемый вектор движения, соответствующего индексу i, в качестве элемента. Нумерация индекса i начинается с 0, и кандидат на предсказываемый вектор движения хранится в области хранения списка mvpListLX предсказываемых векторов движения. В последующем процессе обработки кандидат на предсказываемый вектор движения, являющийся элементом индекса i, добавленного в список mvpListLX предсказываемых векторов движения, будет представляться как mvpListLX [i].
Далее процесс добавления кандидатов mvLXCol, mvLXA и mvLXB на предсказываемый вектор движения по списку LX опорных кадров в список mvpListLX предсказываемых векторов движения по списку LX опорных кадров на этапе S304, показанном на фиг. 16, рассмотрим подробно. Фиг. 31 является блок-схемой последовательности процесса, иллюстрирующей последовательность процесса добавления кандидатов на предсказываемый вектор движения на этапе S304, показанном на фиг. 16.
Прежде всего индекс i по списку mvpListLX предсказываемых векторов движения задается равным "0" (на этапе S3101). В случае, если флаг availableFlagLXCol равен "1" (ДА на этапе S3102), то кандидат mvLXCol на предсказываемый вектор движения по списку LX опорных кадров добавляется в положение, соответствующее индексу i по списку mvpListLX предсказываемых векторов движения (на этапе S3103), и в результате увеличения индекса i на" 1" выполняется обновление (на этапе S3104).
Затем в случае, если флаг availableFlagLXA равен "1" (ДА на этапе S3105), то кандидат mvLXA на предсказываемый вектор движения по списку LX опорных кадров добавляется в положение, соответствующее индексу i по списку mvpListLX предсказываемых векторов (на этапе S3106), и в результате увеличения индекса i на "1" выполняется обновление (на этапе S3107).
Затем в случае, если флаг availableFlagLXB равен "1" (ДА на этапе S3108), то кандидат mvLXB на предсказываемый вектор движения по списку LX опорных кадров добавляется в положение, соответствующее индексу i по списку mvpListLX предсказываемых векторов движения (на этапе S3109), и процесс добавления в список предсказываемых векторов движения завершается.
В последовательности добавления в список предсказываемых векторов движения после добавления одного кандидата на предсказываемый вектор движения во времени добавляется два кандидата на предсказываемый вектор движения в пространстве. Другими словами, уровень приоритета кандидата на предсказываемый вектор движения во времени задается более высоким, чем уровень приоритета кандидата на предсказываемый вектор движения в пространстве.
Далее процесс удаления избыточных кандидатов на предсказываемый вектор движения, включенных в список предсказываемых векторов движения, на этапе S305, показанном на фиг. 16, рассмотрим подробно. Фиг. 32 является блок-схемой последовательности процесса, иллюстрирующей последовательность процесса удаления избыточных кандидатов на предсказываемый вектор движения на этапе S305, показанном на фиг. 16.
Блок 123 или 223 удаления избыточных кандидатов на предсказываемый вектор движения сравнивает предсказанные кандидаты на вектор движения в пространстве, добавленные в список mvpListLX предсказываемых векторов движения, одного с другим (на этапе S4101). В случае, если множество кандидатов на вектор движения имеют одинаковое значение (ДА на этапе S4102), то кандидаты на предсказываемый вектор движения определяются как избыточные кандидаты на вектор движения, которые удаляются в порядке убывания, другими словами, удаляются избыточные кандидаты на вектор движения за исключением кандидата на вектор движения, имеющего наименьший индекс i (на этапе S4103). В данном случае процесс сравнения кандидатов на вектор движения на идентичность между кандидатом на предсказываемый вектор движения во времени и кандидатом на предсказываемый вектор движения в пространстве не выполняется. Вследствие использования разной памяти для информации о движении, к которой осуществляется доступ, и разных объемов обработки процессы генерирования кандидата на предсказываемый вектор движения во времени и генерирования кандидата на предсказываемый вектор движения в пространстве могут быть реализованы с помощью параллельной обработки. В случае сравнения векторов движения между кандидатом на предсказываемый вектор движения во времени и кандидатом на предсказываемый вектор движения в пространстве при выполнении параллельной обработки возникает время ожидания. Следовательно, целесообразным является отсутствие какой-либо зависимости между кандидатом на предсказываемый вектор движения во времени и кандидатом на предсказываемый вектор движения в пространстве, и поэтому в настоящем изобретении процесс сравнения на избыточность векторов движения между кандидатом на предсказываемый вектор движения во времени и кандидатом на предсказываемый вектор движения в пространстве не выполняется. В данном случае для дальнейшего уменьшения объема обработки может не выполняться и процесс определения идентичности или неидентичности векторов предсказания между кандидатами на предсказываемый вектор движения в пространстве. Кроме того, после удаления избыточных кандидатов на вектор движения область хранения удаленного кандидата на предсказываемый вектор движения в списке mvpListLX предсказываемых векторов движения становится свободной, и, следовательно, при использовании индекса i=0 в качестве опорного список предсказываемых векторов движения заполняется кандидатами на предсказываемый вектор движения в порядке возрастания значения индекса i (на этапе S4104). Например, в случае удаления кандидата mvListLX[1] на предсказываемый вектор движения с индексом i=1 и сохранения кандидатов mvListLX[0] и mvListLX[2] на предсказываемый вектор движения с индексом i=0 и i=2 кандидат mvListLX[2] на предсказываемый вектор движения с индексом i=2 заменяется кандидатом mvListLX[1] на предсказываемый вектор движения с индексом i=1, а кандидат mvListLX[2] на предсказываемый вектор движения с индексом i=2 задается как несуществующий.
Далее способ ограничения числа кандидатов на вектор в движения, включенных в список предсказываемых векторов движения, на этапе S306, показанном на фиг. 16, рассмотрим подробно. Фиг. 33 является блок-схемой последовательности процесса, иллюстрирующей последовательность процесса ограничения числа кандидатов на предсказываемый вектор движения на этапе S306, показанном на фиг. 16.
Блок 124 или 224 ограничения числа кандидатов на предсказываемый вектор движения ограничивает число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров, добавленных в список mvpListLX предсказываемых векторов движения по списку LX опорных кадров заданным конечным числом finalNumMVPCand кандидатов.
Прежде всего осуществляется подсчет числа элементов, добавленных в список mvpListLX предсказываемых векторов движения по списку LX опорных кадров, и число элементов задается как число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров (на этапе S5101).
Затем в случае, если число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров меньше, чем конечное число finalNumMVPCand кандидатов (ДА на этапе S5103), то вектор движения, имеющий значение (0, 0), добавляется в положение, в котором, индекс i по списку mvpListLX предсказываемых векторов движения по списку LX опорных кадров соответствует numMVPCandLX (на этапе S5104), и numMVPCandLX увеличивается на единицу (на этапе S5105). В случае, если число numMVPCandLX кандидатов на предсказываемый вектор движения и конечное число finalNumMVPCand кандидатов имеют одинаковое значение (ДА на этапе S5106), то этот процесс ограничения завершается. В то же время в случае, если число numMVPCandLX кандидатов на предсказываемый вектор движения и конечное число finalNumMVPCand кандидатов имеют неодинаковое значение (НЕТ на этапе S5106), то процесс обработки на этапах S5104-S5106 повторяется до тех пор, пока число numMVPCandLX кандидатов на предсказываемый вектор движения и конечное число finalNumMVPCand кандидатов не приобретают одинакового значения. Другими словами, добавление, имеющего значение (0, 0), осуществляется до момента достижения числом numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров конечного числа finalNumMVPCand кандидатов. Избыточное добавление векторов MV, имеющих значение (0, 0) позволяет определять предсказываемый вектор движения даже в случае, когда индекс предсказываемого вектора движения имеет определенное значение в диапазоне от нуля и более, но не достигает конечного число finalNumMVPCand кандидатов.
В то же время в случае, если число numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров превышает конечное число finalNumMVPCand кандидатов (НЕТ на этапе S5103 и ДА на этапе S5107), то все кандидаты на предсказываемый вектор движения, каждый из которых имеет индекс i по списку mvpListLX предсказываемых векторов движения по списку LX опорных кадров, составляющий больше, чем "finalNumMVPCand - 1", удаляются (на этапе S5108), значение finalNumMVPCand задается равным числу numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров (на этапе S5109), и этот процесс ограничения завершается.
В случае равенства числа numMVPCandLX кандидатов на предсказываемый вектор движения по списку LX опорных кадров и конечного числа finalNumMVPCand кандидатов (НЕТ на этапе S5103 и НЕТ на этапе S5107) этот процесс ограничения завершается без выполнения процесса ограничения.
Вариант 2 осуществления
Во втором варианте осуществления на стороне декодирования предсказываемый вектор движения определяется без создания списка предсказываемых векторов движения. В случае создания списка предсказываемых векторов движения необходимо выполнить вычисление масштаба для каждого кандидата в пространстве и кандидата во времени, однако во втором варианте осуществления определение предсказываемого вектора движения без создания списка предсказываемых векторов движения позволяет сократить число операций вычисления масштаба. Устройство кодирования согласно этому варианту осуществления и устройство декодирования согласно другому варианту осуществления являются такими же, что и в варианте 1 осуществления. При этом может быть получен тот же результат декодирования предсказываемого вектора движения, что и в первом варианте осуществления.
Фиг. 22 является блок-схемой последовательности процесса, иллюстрирующей процесс получения предсказываемого вектора движения на стороне декодирования согласно варианту 2 осуществления.
Прежде всего извлекаются индекс mvp_idx_LX кандидата на предсказываемый вектор движения и флаг availableFlagLXCol, представляющий возможность или невозможность использования кандидата во времени (на этапах S2201 и S2202). Порядок извлечения индекса mvp_idx_LX и флага availableFlagLXCol является произвольным, и поэтому порядок следования этапов S2201 и S2202 может изменяться. Далее определяется, удовлетворяют ли значения извлеченных индекса mvp_idx_LX и флага availableFlagLXCol следующим условиям: mvp_idx_LX=0 и availableFlagLXCol=1 (на этапе S2203). Так как добавление (генерирование) предсказываемых векторов движения осуществляется в порядке приоритетов mvLXCol, mvLXA и mvLXB, то в случае, если mvp_idx_LX= =0 и availableFlagLXCol= =1 (ДА на этапе S2203), кандидат на предсказываемый вектор движения может быть определен в качестве кандидата на предсказываемый вектор движения во времени, и, следовательно, вектор движения извлекается из блока предсказания другого времени и извлеченный вектор движения задается в качестве предсказываемого вектора движения (на этапе S2204). В то же время в случае невыполнения условий mvp_idx_LX= =0 и availableFlagLXCol= =1 (НЕТ на этапе S2203), другими словами, в случае, если mvp_ idx_LX=! 0 или availableFlagLXCol= =0, кандидат на предсказываемый вектор движения может быть определен в качестве кандидата на предсказываемый вектор движения в пространстве, и, следовательно, вектор движения извлекается из блока предсказания в пространстве. В настоящем изобретении добавление кандидатов на предсказываемый вектор осуществляется в порядке mvLXCol, mvLXA и mvLXB, и уровень приоритета кандидата на предсказываемый вектор движения во времени задается самым высоким. Следовательно, в случае существования кандидата на предсказываемый вектор движения во времени обязательно выполняется условие mvp_idx_LX = =0, а в случае mvp_idx_LX!= =0 кандидат на предсказываемый вектор движения в пространстве может быть обязательно определен. И в случае availableFlagLXCol= =0, означающем отсутствие кандидата на предсказываемый вектор движения во времени, предсказываемый вектор движения может быть определен в качестве кандидата на предсказываемый вектор движения в пространстве. Поэтому в соответствии со значениями mvp_idx_LX и availableFlagLXCol можно определить, является ли предсказываемый вектор движения кандидатом на предсказываемый вектор движения во времени или кандидатом на предсказываемый вектор движения в пространстве.
В случае, если предсказываемый вектор движения определяется в качестве кандидата на предсказываемый вектор движения в пространстве (НЕТ на этапе S2203), точно так же, как и на этапе S303 согласно первому варианту осуществления, показанном на фиг. 16, кандидат на предсказываемый вектор извлекается из левого блока предсказания (на этапе S2205), и кандидат на предсказываемый вектор извлекается из верхнего блока (на этапе S2206) предсказания. Затем определяется неидентичность или идентичность кандидата на предсказываемый вектор, извлеченного из левого блока предсказания, и кандидата на предсказываемый, вектор, извлеченного из верхнего блока предсказания, и в случае идентичности векторов движения один из этих векторов удаляется (на этапе S2207). В заключение на основе значения mvp_idx_LX выбирается предсказываемый вектор движения (на этапе S2208). В данном случае для дополнительного уменьшения объема обработки определение кандидата на предсказываемый вектор движения в пространстве может осуществляться на основе только availableFlagLXA без определения идентичности или неидентичности векторов предсказания между кандидатами на предсказываемый вектор движения в пространстве.
Фиг. 23 иллюстрирует шаблон выбора предсказываемого вектора движения (на этапе S2208, показанном на фиг. 22) в случае определения, что предсказываемый вектор движения является кандидатом на предсказываемый вектор движения в пространстве (НЕТ на этапе S2203, показанном на фиг. 22). В случае, если mvp_idx_LX = =0 и availableFlagLXCol= =0, то выбирается первый кандидат в пространстве. В случае, если mvp_idx_LX = =1 и availableFlagLXCol = =1, то также выбирается первый кандидат в пространстве, а в случае, если mvp_idx_LX= =1 и availableFlagLXCol= =0, то выбирается второй кандидат в пространстве. В случае же отсутствия кандидата на предсказываемый вектор движения в пространстве в каждом состоянии предсказываемый вектор движения задается равным (0, 0).
Как и во втором варианте осуществления, определение предсказываемого вектора движения без создания списка предсказываемых векторов движения позволяет получать такой же вектор предсказания, что и в случае выполнения декодирования согласно первому варианту осуществления и дополнительно дает следующие преимущества.
Значения mvp_idx_LX и availableFlagLXCol позволяют определять, является ли предсказываемый вектор движения кандидатом на предсказываемый вектор движения во времени или кандидатом на предсказываемый вектор движения в пространстве, что обеспечивает возможность выполнения только одного из процессов - процесса извлечения вектора предсказания для кандидата на предсказываемый вектор движения во времени или процесса извлечения вектора предсказания для кандидата на предсказываемый вектор движения в пространстве. Поэтому объем обработки при декодировании сокращается примерно наполовину по сравнению со случаем извлечения как кандидата на предсказываемый вектор движения во времени, так и кандидат на предсказываемый вектор движения в пространстве, что позволяет повысить скорость исполнения со стороны программного обеспечения и сократить потребление энергии со стороны зрения аппаратных средств.
Кроме того, в случае необходимости вычисления масштаба предсказываемого вектора движения для каждого кандидата на предсказываемый вектор движения во времени и каждого кандидата на предсказываемый вектор движения в пространстве при создании списка предсказываемых векторов движения в первом варианте осуществления необходимо выполнение однократного вычисления масштаба для извлечения кандидата на предсказываемый вектор движения во времени и однократного вычисления масштаба для извлечения кандидат на предсказываемый вектор движения в пространстве. Во втором же варианте осуществления выбирается и осуществляется один из процессов - процесс извлечения вектора предсказания для кандидата на предсказываемый вектор движения во времени или процесс извлечения вектора предсказания для кандидата на предсказываемый вектор движения в пространстве, и поэтому появляется возможность извлечения предсказываемого вектора движения в результате выполнения вычисления масштаба только на стороне декодирования. Следовательно, в частности, схема масштабирования, требуемая для выполнения разделения с использованием аппаратных средств, может быть использована и для извлечения кандидата на предсказываемый вектор движения во времени, и для извлечения кандидата на предсказываемый вектор движения в пространстве, что позволяет уменьшить размер схемы.
Кроме того, так как результат декодирования согласно первому примеру осуществления настоящего изобретения и результат декодирования согласно второму варианту осуществления являются одинаковыми, выбор архитектуры может быть осуществлен на стороне декодирования. Другими словами, в случае целесообразности одной и той же конфигурации, как на стороне кодирования, так и на стороне декодирования в системе, такой как видеокамера, в которой устройство кодирования и устройство декодирования объединены в одно целое, как в первом варианте осуществления, предсказываемый вектор движения, может быть определен в результате создания списка предсказываемых векторов движения. В то же время в случае, если значение имеет только сокращение объема обработки на стороне декодирования, как во втором варианте осуществления, то после определения кандидата во времени или кандидата в пространстве без создания списка предсказываемых векторов движения предсказываемый вектор движения может быть определен в результате проведения только одного из процессов - процесса извлечения кандидата в пространстве или процесса извлечения кандидата во времени.
Аспектами варианта осуществления, обеспечивающими такие преимущества настоящего изобретения, являются следующие два аспекта.
1. Кандидат на предсказываемый вектор движения во времени (один кандидат) задается с уровнем приоритета выше, чем уровень приоритета кандидатов на предсказываемый вектор движения в пространстве (два кандидата).
2. Процесс удаления избыточных кандидатов в случае, когда предсказываемые векторы движения являются идентичными, не выполняется между кандидатами на предсказываемый вектор движения во времени и кандидатами на предсказываемый вектор движения в пространстве (выполнение процесса удаления избыточных кандидатов допускается только между кандидатами на предсказываемый вектор движения в пространстве).
Другими словами, отличительным признаком является то, что уровень приоритета кандидата на предсказываемый вектор движения во времени, позволяющий однозначно определять существование или несуществование кандидата на предсказываемый вектор движения на основе флага availableFlagLXCol используемости кандидата на предсказываемый вектор движения во времени, используемого для единственного кандидата на предсказываемый вектор движения, задается высоким, а уровень приоритета предсказываемого вектора движения в пространстве с множеством кандидатов на предсказываемый вектор движения и изменяющимся числом кандидатов на предсказываемый вектор движения задается низким, и предсказываемый вектор движения добавляется в список предсказываемых векторов движения. Удаление избыточных кандидатов среди кандидатов на предсказываемый вектор движения в пространстве осуществляется на основе определения идентичности, и, следовательно, уровень приоритета такого кандидата в списке кандидатов на предсказываемый вектор движения задается низким, и добавление осуществляется на нижнюю позицию. В то же время, так как определение идентичности между кандидатом на предсказываемый вектор движения во времени и кандидатом на предсказываемый вектор движения в пространстве не осуществляется, то кандидат на предсказываемый вектор движения во времени имеет в списке кандидатов на предсказываемый вектор движения высокий уровень приоритета и добавляется на верхнюю позицию. Следовательно, появляется возможность разделения предсказываемого вектора движения в пространстве и предсказываемого вектора движения во времени в списке, что позволяет повысить степень разделения между направлением в пространстве и направлением во времени при предсказании вектора движения и, тем самым, повысить эффективность процесса обработки и уменьшить размер схемы.
Битовый поток движущегося изображения, выводимый устройством кодирования движущегося изображения согласно варианту осуществления, описанному выше, имеет специфический формат данных, обеспечивающий возможность декодирования в соответствии со способом кодирования, используемым в варианте осуществления, и, следовательно, устройство декодирования движущегося изображения, соответствующее устройству кодирования движущегося изображения, может декодировать битовый поток в этом специфическом формате данных.
Для обмена битовым потоком между устройством кодирования движущегося изображения и устройством декодирования движущегося изображения в случае использования проводной или беспроводной сети передача битового потока может осуществляться с преобразованием в формат данных, соответствующий форме передачи в канале связи. В этом случае устанавливаются устройство передачи движущегося изображения, которое преобразует выводимый битовый поток с помощью устройства кодирования движущегося изображения в данные кодирования с форматом данных, соответствующим форме передачи в канале связи, и устройство приема движущегося изображения, которое обеспечивает прием данных кодирования из сети, восстановление битового потока из данных кодирования и подачу восстановленного битового потока в устройство декодирования движущегося изображения.
Устройство передачи движущегося изображения включает в себя: память, которая осуществляет буферизацию кодированного битового потока, выводимого устройством кодирования движущегося изображения; блок пакетной обработки, осуществляющий пакетирование битового потока; и блок передачи, обеспечивающий передачу пакетированных данных кодирования через сеть. Устройство приема движущегося изображения включает в себя: блок приема, обеспечивающий прием пакетированных данных кодирования через сеть; память, которая осуществляет буферизацию принятых данных кодирования; и блок пакетной обработки, генерирующий битовый поток в результате выполнения процесса пакетной обработки данных кодирования, и подает генерированный битовый поток в устройство декодирования движущегося изображения.
Процессы обработки, относящейся к кодированию и декодированию, описанным выше, могут быть реализованы не только в виде устройства передача/хранения/приема, использующего аппаратные средства, но и с помощью встроенного программного обеспечения, хранимого в постоянной памяти (ROM), во флэш-памяти или т.п., или с помощью программного обеспечения компьютера или т.п. Поставка встроенного программного обеспечения или программы системы программного обеспечения, может осуществляться в виде записи на носителе записи, считываемом компьютером, или т.п., с сервера через проводную или беспроводную сеть или с использованием широковещательной передачи данных по спутниковым каналам цифрового вещания.
Выше было приведено описание настоящего изобретения на основе вариантов осуществления. Однако такие варианты осуществления следует рассматривать исключительно в качестве примеров, и специалисту в данной области техники должна быть очевидна возможность существования различных модификаций в каждом составляющем элементе этих примеров или в комбинации каждого из процессов обработки, и включения таких модифицированных примеров в объем настоящего изобретения.
Пункт 1
Устройство кодирования движущегося изображения, кодирующее движущееся изображение с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство кодирования движущегося изображения содержит:
блок генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
блок удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью удаления кандидатов на предсказываемый вектор движения, являющихся идентичными среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата;
блок выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения;
блок вычисления вектора разности, выполненный с возможностью вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и
блок кодирования, выполненный с возможностью кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Пункт 2
Устройство кодирования движущегося изображения, кодирующее движущееся изображение с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство кодирования движущегося изображения содержит:
блок генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
блок удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов движения среди кандидатов на предсказываемый вектор движения, предсказанных кодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения, за исключением одного кандидата;
блок выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения;
блок вычисления вектора разности, выполненный с возможностью вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и
блок кодирования, выполненный с возможностью кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Пункт 3
Устройство кодирования движущегося изображения по пункту 1 или 2, отличающееся тем, что блок генерирования кандидатов на предсказываемый вектор движения добавляет кандидата на предсказываемый вектор движения, предсказанного на основе кодированного блок, смежного во времени, и кандидата на предсказываемый вектор движения, предсказанного на основе кодированного блока, смежного в пространстве, к списку кандидатов на предсказываемый вектор движения в указанном порядке.
Пункт 4
Способ кодирования движущегося изображения для кодирования движущегося изображения с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где способ кодирования движущегося изображения содержит:
этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этап удаления кандидатов на предсказываемый вектор движения, являющихся идентичными среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата;
этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения;
этап вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и
этап кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Пункт 5
Способ кодирования движущегося изображения для кодирования движущегося изображения с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где способ кодирования движущегося изображения содержит:
этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этап удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов движения среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения, за исключением одного кандидата;
этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения;
этап вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и
этап кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Пункт 6
Программа кодирования движущегося изображения для кодирования движущегося изображения с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где программа кодирования движущегося изображения обеспечивает выполнение компьютером:
этапа получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этапа удаления кандидатов на предсказываемый вектор движения, являющихся идентичными среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата;
этапа выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения;
этапа вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и
этапа кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Пункт 7
Программа кодирования движущегося изображения для кодирования движущегося изображения с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где программа кодирования движущегося изображения обеспечивает выполнение компьютером:
этапа получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этапа удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов движения среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения, за исключением одного кандидата;
этапа выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения;
этапа вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и
этапа кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Пункт 8
Устройство декодирования движущегося изображения, декодирующее битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство декодирования движущегося изображения содержит:
блок декодирования, выполненный с возможностью декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения;
блок генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
блок удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью удаления кандидатов на предсказываемый вектор движения, являющихся идентичными среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата;
блок выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
блок вычисления вектора движения, выполненный с возможностью вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Пункт 9
Устройство декодирования движущегося изображения, декодирующее битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство декодирования движущегося изображения содержащий:
блок декодирования, выполненный с возможностью декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения;
блок генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
блок удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов движения среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения, за исключением одного кандидата;
блок выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
блок вычисления вектора движения, выполненный с возможностью вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Пункт 10
Устройство декодирования движущегося изображения по пункту 8 или 9, отличающееся тем, что блок генерирования кандидатов на предсказываемый вектор движения добавляет кандидата на предсказываемый вектор движения, предсказанного на основе кодированного блока, смежного во времени, и кандидата на предсказываемый вектор движения, предсказанного на основе кодированного блока, смежного в пространстве, к списку кандидатов на предсказываемый вектор движения в указанном порядке.
Пункт 11
Способ декодирования движущегося изображения для декодирования битового потока, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где способ декодирования движущегося изображения содержит:
этап декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения;
этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этап удаления кандидатов на предсказываемый вектор движения, являющихся идентичными среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата;
этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
этап вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Пункт 12
Способ декодирования движущегося изображения для декодирования битового потока, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где способ декодирования движущегося изображения содержит:
этап декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения;
этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этап удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов движения среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения, за исключением одного кандидата;
этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
этап вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Пункт 13
Программа декодирования движущегося изображения для декодирования битового потока, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где программа декодирования движущегося изображения обеспечивает выполнение компьютером:
этапа декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения;
этапа получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этапа удаления кандидатов на предсказываемый вектор движения, являющихся идентичными среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата;
этапа выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
этапа вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Пункт 14
Программа декодирования движущегося изображения для декодирования битового потока, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где программа декодирования движущегося изображения обеспечивает выполнение компьютером:
этапа декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения;
этапа получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этапа удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов движения среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, из списка кандидатов на предсказываемый вектор движения, за исключением одного кандидата;
этапа выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
этапа вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Устройство кодирования движущегося изображения, кодирующее движущееся изображение с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство кодирования движущегося изображения содержит:
блок генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
блок удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе кодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе кодированного блока, смежного во времени;
блок выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения;
блок вычисления вектора разности, выполненный с возможностью вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и
блок кодирования, выполненный с возможностью кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Устройство декодирования движущегося изображения, декодирующее битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство декодирования движущегося изображения содержит:
блок декодирования, выполненный с возможностью декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения;
блок генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
блок удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного во времени;
блок выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
блок вычисления вектора движения, выполненный с возможностью вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Способ декодирования движущегося изображения, выполняемый устройством декодирования движущегося изображения, декодирующим битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где способ декодирования движущегося изображения содержит:
этап декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, вместе с разностью векторов движения;
этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этап определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного во времени;
этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
этап вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Устройство передачи, содержащее:
блок пакетной обработки, выполненный с возможностью получения данных кодирования в результате пакетирования потока битов, кодированного с использованием способа кодирования движущегося изображения для кодирования движущегося изображения с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения; и
блок передачи, выполненный с возможностью передачи пакетированных данных кодирования,
где способ кодирования движущегося изображения включает в себя:
этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этап определения, являются ли значения векторов одинаковыми среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе кодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе кодированного блока, смежного во времени, одинаковыми;
этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения;
этап вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и
этап кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Способ передачи, содержащий:
этап получения данных кодирования в результате пакетирования потока битов, кодированного с использованием способа кодирования движущегося изображения для кодирования движущегося изображения с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения; и
этап передачи пакетированных данных кодирования,
где способ кодирования движущегося изображения включает в себя:
этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из кодированных блоков, смежных с блоком, являющимся объектом кодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этап определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе кодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе кодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе кодированного блока, смежного во времени;
этап выбора предсказываемого вектора движения от списка кандидатов на предсказываемый вектор движения;
этап вычисления разности векторов движения на основе разности между выбранным предсказываемым вектором движения и вектором движения, используемым для компенсации движения; и
этап кодирования информации, представляющей выбранный предсказываемый вектор движения, вместе с разностью векторов движения.
Устройство приема, декодирующее битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство приема содержит:
блок приема, выполненный с возможностью приема пакетированных данных кодирования через сеть;
блок пакетной обработки, выполненный с возможностью генерирования потока битов в результате выполнения пакетной обработки принятых данных кодирования;
блок декодирования, выполненный с возможностью декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору из потока битов, вместе с разностью векторов движения;
блок генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и генерирования списка кандидатов на предсказываемый вектор движения;
блок удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного во времени;
блок выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
блок вычисления вектора движения, выполненный с возможностью вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Устройство декодирования движущегося изображения, декодирующее битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство декодирования движущегося изображения содержит:
блок декодирования, выполненный с возможностью декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору из списка кандидатов на предсказываемый вектор движения, имеющего определенное число кандидатов на предсказываемый вектор движения, вместе с разностью векторов движения;
блок генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
блок удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного во времени;
блок добавления кандидатов на предсказываемый вектор движения, выполненный с возможностью добавления заданного кандидата на предсказываемый вектор движения в список кандидатов на предсказываемый вектор движения, осуществляемого в случае, когда число кандидатов на предсказываемый вектор движения в списке кандидатов на предсказываемый вектор движения после удаления избыточного кандидата на предсказываемый вектор движения меньше определенного числа кандидатов на предсказываемый вектор движения, в результате которого обеспечивается достижение определенного числа кандидатов на предсказываемый вектор движения в списке кандидатов на предсказываемый вектор движения;
блок выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения, ограниченного определенным числом кандидатов на предсказываемый вектор движения, на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
блок вычисления вектора движения, выполненный с возможностью вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Способ декодирования движущегося изображения, выполняемый устройством декодирования движущегося изображения, декодирующим битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где способ декодирования движущегося изображения содержит:
этап декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору из списка кандидатов на предсказываемый вектор движения, имеющего определенное число кандидатов на предсказываемый вектор движения, вместе с разностью векторов движения;
этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этап определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного во времени;
этап добавления заданного кандидата на предсказываемый вектор движения в список кандидатов на предсказываемый вектор движения, осуществляемого в случае, когда число кандидатов на предсказываемый вектор движения в списке кандидатов на предсказываемый вектор движения после удаления избыточного кандидата на предсказываемый вектор движения меньше определенного числа кандидатов на предсказываемый вектор движения, в результате которого обеспечивается достижение определенного числа кандидатов на предсказываемый вектор движения в списке кандидатов на предсказываемый вектор движения;
этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения, ограниченного определенным числом кандидатов на предсказываемый вектор движения, на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
этап вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Носитель записи, на котором хранится программа декодирования движущегося изображения, исполняемая компьютером в составе устройства декодирования движущегося изображения, декодирующего битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где программа декодирования движущегося изображения обеспечивает выполнение компьютером:
этапа декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору из списка кандидатов на предсказываемый вектор движения, имеющего определенное число кандидатов на предсказываемый вектор движения, вместе с разностью векторов движения;
этапа получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этап определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного во времени;
этапа добавления заданного кандидата на предсказываемый вектор движения в список кандидатов на предсказываемый вектор движения, осуществляемого в случае, когда число кандидатов на предсказываемый вектор движения в списке кандидатов на предсказываемый вектор движения после удаления избыточного кандидата на предсказываемый вектор движения меньше определенного числа кандидатов на предсказываемый вектор движения, в результате которого обеспечивается достижение определенного числа кандидатов на предсказываемый вектор движения в списке кандидатов на предсказываемый вектор движения;
этапа выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения, ограниченного определенным числом кандидатов на предсказываемый вектор движения, на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
этапа вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения.
Устройство декодирования движущегося изображения, декодирующее битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где устройство декодирования движущегося изображения содержит:
блок декодирования, выполненный с возможностью декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, из списка кандидатов на предсказываемый вектор движения, имеющего определенное число кандидатов на предсказываемый вектор движения, вместе с разностью векторов движения;
блок генерирования кандидатов на предсказываемый вектор движения, выполненный с возможностью получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
блок удаления избыточных кандидатов на предсказываемый вектор движения, выполненный с возможностью определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного во времени;
блок выбора предсказываемого вектора движения, выполненный с возможностью выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
блок вычисления вектора движения, выполненный с возможностью вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения,
причем блок удаления избыточных кандидатов на предсказываемый вектор движения определяет, являются ли одинаковыми значение вектора, являющегося первым кандидатом на предсказываемый вектор движения, предсказанным на основе первых декодированных блоков, смежных в пространстве, и значение вектора, являющегося вторым кандидатом на предсказываемый вектор движения, предсказанным на основе вторых декодированных блоков, смежных в пространстве, и удаляет второго кандидата на предсказываемый вектор движения, имеющего одинаковое значение вектора, из списка кандидатов на предсказываемый вектор движения.
Способ декодирования движущегося изображения, выполняемый устройством декодирования движущегося изображения, декодирующим битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где способ декодирования движущегося изображения содержит:
этап декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору, из списка кандидатов на предсказываемый вектор движения, имеющего определенное число кандидатов на предсказываемый вектор движения, вместе с разностью векторов движения;
этап получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этап определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного во времени;
этап выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
этап вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения,
причем на указанном этапе удаления кандидатов на предсказываемый вектор движения определяется, являются ли одинаковыми значение вектора, являющегося первым кандидатом на предсказываемый вектор движения, предсказанным на основе первых декодированных блоков, смежных в пространстве, и значение вектора, являющегося вторым кандидатом на предсказываемый вектор движения, предсказанным на основе вторых декодированных блоков, смежных в пространстве, и из списка кандидатов на предсказываемый вектор движения удаляется второй кандидат на предсказываемый вектор движения, имеющий одинаковое значение вектора.
Носитель записи, на котором хранится программа декодирования движущегося изображения, исполняемая компьютером в составе устройства декодирования движущегося изображения, декодирующего битовый поток, в котором движущееся изображение кодировано с использованием компенсации движения в единицах блоков, полученных в результате разделения каждого кадра движущегося изображения, где программа декодирования движущегося изображения обеспечивает выполнение компьютером:
этапа декодирования информации, представляющей предсказываемый вектор движения, подлежащий выбору из списка кандидатов на предсказываемый вектор движения, имеющего определенное число кандидатов на предсказываемый вектор движения, вместе с разностью векторов движения;
этапа получения множества кандидатов на предсказываемый вектор движения в результате предсказания на основе вектора движения одного из декодированных блоков, смежных с блоком, являющимся объектом декодирования, в пространстве или во времени, и создания списка кандидатов на предсказываемый вектор движения;
этапа определения, являются ли одинаковыми значения векторов среди кандидатов на предсказываемый вектор движения, предсказанных на основе декодированного блока, смежного в пространстве, и удаления кандидатов на предсказываемый вектор движения, имеющих одинаковые значения векторов, из списка кандидатов на предсказываемый вектор движения при сохранении по меньшей мере одного кандидата без определения, являются ли одинаковыми значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного в пространстве, и значение вектора, являющегося предсказываемым вектором движения, предсказанным на основе декодированного блока, смежного во времени;
этапа выбора предсказываемого вектора движения из списка кандидатов на предсказываемый вектор движения на основе информации, представляющей декодированный предсказываемый вектор движения, подлежащий выбору; и
этапа вычисления вектора движения, используемого для компенсации движения, в результате суммирования выбранного предсказываемого вектора движения и разности векторов движения,
причем на указанном этапе удаления кандидатов на предсказываемый вектор движения определяется, являются ли одинаковыми значение вектора, являющегося первым кандидатом на предсказываемый вектор движения, предсказанным на основе первых декодированных блоков, смежных в пространстве, и значение вектора, являющегося вторым кандидатом на предсказываемый вектор движения, предсказанным на основе вторых декодированных блоков, смежных в пространстве, и из списка кандидатов на предсказываемый вектор движения удаляется второй кандидат на предсказываемый вектор движения, имеющий одинаковое значение вектора.
ОПИСАНИЕ НОМЕРОВ ПОЗИЦИЙ
101 - память изображения, 102 - блок обнаружения вектора движения, 103 - блок вычисления разности векторов движения, 104 - блок оценки информации по межкадровому предсказанию, 105 - блок предсказания компенсации движения, 106 - блок определения способа предсказания, 107 - блок генерирования остаточного сигнала, 108 - блок ортогонального преобразования и квантования, 109 - блок генерирования первого битового потока, 110 - блок генерирования второго битового потока, 111 - блок мультиплексирования, 112 - блок обратного квантования и обратного ортогонального преобразования, 113 - блок наложения сигнала декодированного изображения, 114 - память для хранения информации по кодированию, 115 - память декодированного изображения, 121 - блок генерирования кандидатов на предсказываемый вектор движения, 122 - блок добавления кандидатов на предсказываемый вектор движения, 123 - блок удаления избыточных кандидатов на предсказываемый вектор движения, 124 - блок ограничения числа кандидатов на предсказываемый вектор движения, 125 - блок вычисления количеств кода для кандидатов на предсказываемый вектор движения, 126 - блок выбора предсказываемого вектора движения, 127 - блок вычитания векторов движения, 201 - блок разделения, 202 - блок декодирования первого битового потока, 203 - блок декодирования второго битового потока, 204 - блок вычисления вектора движения, 205 - блок оценки информации по межкадровому предсказанию, 206 - блок предсказания компенсации движения, 207 - блок обратного квантования и обратного ортогонального преобразования, 208 - блок наложения сигнала декодированного изображения, 209 - память для хранения информации по кодированию, 210 - память декодированного изображения, 221 - блок генерирования кандидатов на предсказываемый вектор движения, 222 - блок добавления кандидатов на предсказываемый вектор движения, 223 - блок удаления избыточных кандидатов на предсказываемый вектор движения, 224 - блок ограничения числа кандидатов на предсказываемый вектор движения, 225 - блок выбора предсказываемого вектора движения, 226 - блок суммирования векторов движения.
ПРОМЫШЛЕННАЯ ПРИМЕНИМОСТЬ
Настоящее изобретение может быть использовано в технологии декодирования движущегося изображения с использованием компенсации движения.