Настоящая заявка выделена из заявки № 2016125782 на выдачу патента РФ на изобретение, поданной 05.01.2015, с испрашиванием приоритета по дате подачи заявки KR 10-2014-0000527, поданной 03.01.2014, заявки KR 10-2014-0001531, поданной 06.01.2014, и заявки KR 10-2015-0000578, поданной 05.01.2015.
Область техники, к которой относится изобретение
Настоящее изобретение относится к устройствам и способам для кодирования/ декодирования трехмерных изображений, и, более конкретно, к способам и устройствам кодирования/ декодирования изображений, в которых межракурсная информация движения определяется параллельно по множеству подэлементов предсказания.
Уровень техники
В растущей индустрии информационных технологий повсеместно распространились услуги вещания стандарта HD (high definition), и для все большего числа пользователей просмотр видеоизображений стандарта HD становится обычным делом.
Соответственно, пользователям нужны изображения с более высоким качеством и разрешением, и, чтобы соответствовать таким ожиданиям, сразу несколько организаций стремятся как можно скорее разработать следующее поколение устройств для работы с изображениями. В результате пользователи уже получили возможность попробовать системы, способные работать с изображениями стандартов FHD (Full HD) и UHD (Ultra HD).
Однако потребности пользователей не ограничиваются достигнутым и идут на шаг дальше, к трехмерным (3D) изображениям, которые могут создавать ощущение или эффекты трехмерности. Для удовлетворения этих пользовательских потребностей различные организации создали системы для работы с трехмерными изображениями.
Однако трехмерные изображения содержат больше данных, чем двумерные изображения, поскольку имеют в своем составе не только собственно изображение (текстуру), но и информацию карты глубины. Соответственно, кодирование/ декодирование трехмерных изображений с использованием существующих способов кодирования/ декодирования изображений оказывается недостаточно эффективным.
Раскрытие изобретения
Целью настоящего изобретения является предложение устройства и способа для определения информации движения, относящейся к блоку, для которого выполняется кодирование/ декодирование.
Еще одной целью настоящего изобретения является предложение устройства и способа для устранения зависимости от данных при определении информации движения, относящейся к блоку, для которого выполняется кодирование/ декодирование.
Еще одной целью настоящего изобретения является предложение устройства и способа для повышения эффективности кодирования/ декодирования изображения путем устранения зависимости от данных при выполняемом по подэлементам предсказания определении информации движения, относящейся к блоку, для которого выполняется кодирование/ декодирование.
Еще одной целью настоящего изобретения является предложение устройства и способа для повышения эффективности кодирования/ декодирования изображения путем использования информации движения, относящейся к опорному блоку, при выполняемом по подэлементам предсказания определении информации движения, относящейся к блоку, для которого выполняется кодирование/ декодирование.
Техническое решение.
В соответствии с вариантом осуществления настоящего изобретения может быть предложен способ кодирования трехмерного (3D) изображения, включающий:
определение режима межкадрового предсказания в качестве режима предсказания для текущего блока;
определение, имеет ли опорный блок, соответствующий в опорном кадре текущему блоку, информацию движения;
определение информации движения, относящейся к текущему блоку, для каждого подблока предсказания в текущем блоке, если опорный блок имеет информацию движения; и
определение элементарного значения предсказания для текущего блока на основании информации движения, относящейся к текущему блоку.
При этом текущий блок и опорный блок могут быть блоками предсказания.
При этом информация движения, относящаяся к опорному блоку, может быть расположена в центре опорного блока.
При этом на шаге определения информации движения, относящейся к текущему блоку, для каждого подблока предсказания в текущем блоке, если подблок предсказания в опорном блоке, соответствующий подблоку предсказания в текущем блоке, имеет информацию движения, то информацию движения, относящуюся к подблоку предсказания текущего блока, можно определить как информацию движения, присутствующую в подблоке предсказания опорного блока.
Если подблок предсказания в опорном блоке, соответствующий подблоку предсказания в текущем блоке, не имеет информации движения, то информацию движения, относящуюся к подблоку предсказания текущего блока, определяют как информацию движения опорного блока.
В соответствии с еще одним вариантом осуществления настоящего изобретения может быть предложено устройство кодирования трехмерного (3D) изображения, содержащее модуль хранения, выполненный с возможностью определения режима межкадрового предсказания в качестве режима предсказания для текущего блока и с возможностью определения, имеет ли опорный блок, соответствующий в опорном кадре текущему блоку, информацию движения; и модуль определения, выполненный с возможностью, если опорный блок имеет информацию движения, определения информации движения, относящейся к текущему блоку, для каждого подблока предсказания в текущем блоке, и с возможностью определения элементарного значения предсказания для текущего блока на основании информации движения, относящейся к текущему блоку.
При этом текущий блок и опорный блок могут быть блоками предсказания.
При этом информация движения, относящаяся к опорному блоку, может быть расположена в центре опорного блока.
При этом, в модуле определения, если подблок предсказания в опорном блоке, соответствующий подблоку предсказания в текущем блоке, имеет информацию движения, то информация движения, относящаяся к подблоку предсказания текущего блока, может быть определена как информация движения, присутствующая в подблоке предсказания опорного блока.
Если подблок предсказания в опорном блоке, соответствующий подблоку предсказания в текущем блоке, не имеет информации движения, то информация движения, относящаяся к подблоку предсказания текущего блока, может быть определена как информация движения опорного блока.
В соответствии с еще одним вариантом осуществления настоящего изобретения может быть предложен способ декодирования трехмерного (3D) изображения, включающий: определение режима межкадрового предсказания в качестве режима предсказания для текущего блока; определение, имеет ли опорный блок, соответствующий в опорном кадре текущему блоку, информацию движения; определение информации движения, относящейся к текущему блоку, для каждого подблока предсказания в текущем блоке, если опорный блок имеет информацию движения; и определение элементарного значения предсказания для текущего блока на основании информации движения, относящейся к текущему блоку.
При этом текущий блок и опорный блок могут представлять собой блоки предсказания.
При этом информация движения, относящаяся к опорному блоку, может быть расположена в центре опорного блока.
При этом на шаге определения информации движения, относящейся к текущему блоку, для каждого подблока предсказания в текущем блоке, если подблок предсказания в опорном блоке, соответствующий подблоку предсказания в текущем блоке, имеет информацию движения, то информацию движения, относящуюся к подблоку предсказания текущего блока, можно определить как информацию движения, присутствующую в подблоке предсказания опорного блока.
Если подблок предсказания в опорном блоке, соответствующий подблоку предсказания в текущем блоке, не имеет информации движения, то информацию движения, относящуюся к подблоку предсказания текущего блока, можно определить как информацию движения опорного блока.
В соответствии с еще одним вариантом осуществления настоящего изобретения может быть предложено устройство декодирования трехмерного (3D) изображения, содержащее модуль хранения, выполненный с возможностью определения режима межкадрового предсказания в качестве режима предсказания для текущего блока и с возможностью определения, имеет ли опорный блок, соответствующий в опорном кадре текущему блоку, информацию движения; и модуль определения, выполненный с возможностью, если опорный блок имеет информацию движения, определения информации движения, относящейся к текущему блоку, для каждого подблока предсказания в текущем блоке, и с возможностью определения элементарного значения предсказания для текущего блока на основании информации движения, относящейся к текущему блоку.
При этом текущий блок и опорный блок могут представлять собой блоки предсказания.
При этом информация движения, относящаяся к опорному блоку, может быть расположена в центре опорного блока.
При этом в модуле определения, если подблок предсказания в опорном блоке, соответствующий подблоку предсказания в текущем блоке, имеет информацию движения, то информация движения, относящаяся к подблоку предсказания текущего блока, может быть определена как информация движения, присутствующая в подблоке предсказания опорного блока.
Если подблок предсказания в опорном блоке, соответствующий подблоку предсказания в текущем блоке, не имеет информации движения, то информация движения, относящаяся к подблоку предсказания текущего блока, может быть определена как информация движения опорного блока.
Технический результат.
Настоящее изобретение дает возможность определения информации движения, относящейся к блоку, для которого выполняется кодирование/ декодирование.
Настоящее изобретение дает возможность устранения зависимости от данных при определении информации движения, относящейся к блоку, для которого выполняется кодирование/ декодирование.
Настоящее изобретение дает возможность повышения эффективности кодирования/ декодирования изображения путем устранения зависимости от данных при выполняемом по подэлементам предсказания определении информации движения, относящейся к блоку, для которого выполняется кодирование/ декодирование.
Настоящее изобретение дает возможность повышения эффективности кодирования/ декодирования изображения с использованием информации движения, относящейся к опорному блоку, путем устранения зависимости от данных при выполняемом по подэлементам предсказания определении информации движения, относящейся к блоку, для которого выполняется кодирование/ декодирование.
Краткое описание чертежей
Фиг. 1 представляет собой схематичную иллюстрацию базовой структуры системы для работы с трехмерными видеоизображениями.
Фиг. 2 представляет собой пример изображения воздушных шаров и пример изображения карты информации глубин.
Фиг. 3 представляет собой схематичную иллюстрацию структуры, на которую изображение разбивается при кодировании и декодировании.
Фиг. 4 иллюстрирует элементы предсказания, которые могут содержаться в элементе кодирования (ЭК).
Фиг. 5 иллюстрирует пример структуры межракурсного предсказания в кодеке трехмерного изображения.
Фиг. 6 иллюстрирует пример операции кодирования и/ или декодирования собственно изображения (текстурного вида) и карты информации глубин (глубинного вида) в кодере и/ или декодере трехмерного изображения.
Фиг. 7 представляет собой структурную схему, иллюстрирующую конфигурацию кодера изображения в соответствии с вариантом осуществления настоящего изобретения.
Фиг. 8 представляет собой структурную схему, иллюстрирующую конфигурацию декодера изображения в соответствии с вариантом осуществления настоящего изобретения.
Фиг. 9 представляет собой иллюстрацию примера структуры предсказания для кодека трехмерного изображения.
Фиг. 10 иллюстрирует пример, в котором для построения списка кандидатов слияния для текущего блока используются прилегающие блоки.
Фиг. 11 представляет собой иллюстрацию примера операции определения информации движения, относящейся к текущему блоку, с использованием информации движения из соседнего ракурса.
Фиг. 12 представляет собой иллюстрацию примера, в котором один элемент предсказания (ЭП) разбит на несколько подэлементов предсказания.
Фиг. 13 представляет собой иллюстрацию примера операции определения информации движения, относящейся к текущему блоку, с использованием опорного блока.
Фиг. 14 представляет собой иллюстрацию примера опорного блока, используемого для определения информации движения, относящейся к текущему блоку.
Фиг. 15a-15e представляют собой схематичные иллюстрации примера операции определения информации движения с использованием информации движения, сохраненной в хранилище.
Фиг. 16a-16g представляют собой схематичные иллюстрации еще одного примера операции определения информации движения с использованием информации движения, сохраненной в хранилище.
Фиг. 17 представляет собой блок-схему, иллюстрирующую способ определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием подэлемента предсказания опорного блока в соответствии с вариантом осуществления настоящего изобретения.
Фиг. 18 представляет собой иллюстрацию примера операции параллельного определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием подэлемента предсказания опорного блока.
Фиг. 19 представляет собой иллюстрацию примера операции поиска подэлемента предсказания, пригодного для использования, при расположении этого подэлемента предсказания в правом нижнем углу опорного блока.
Фиг. 20 представляет собой схематичную иллюстрацию затрат времени, требуемых для определения информации движения по подэлементам предсказания.
Фиг. 21 представляет собой структурную схему, иллюстрирующую конфигурацию модуля межкадрового предсказания в соответствии с настоящим изобретением.
Фиг. 22 представляет собой блок-схему, схематично иллюстрирующую способ определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием опорного блока в соответствии с вариантом осуществления настоящего изобретения.
Фиг. 23 представляет собой блок-схему, схематично иллюстрирующую способ определения информации движения, относящейся к подэлементу предсказания текущего блока, в соответствии с еще одним вариантом осуществления настоящего изобретения.
Фиг. 24 представляет собой иллюстрацию примера операции определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием информации движения из некоторого положения.
Фиг. 25 представляет собой блок-схему, иллюстрирующую способ определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием некоторого значения информации движения в соответствии с еще одним вариантом осуществления настоящего изобретения.
Фиг. 26 представляет собой иллюстрацию примера операции определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием некоторой информации движения.
Фиг. 27 представляет собой схематичную иллюстрацию затрат времени, требуемых для определения информации движения в соответствии с настоящим изобретением.
Осуществление изобретения
Далее со ссылкой на сопровождающие чертежи подробно описываются варианты осуществления настоящего изобретения. С целью более ясного раскрытия настоящего изобретения подробное описание известных систем или функций, имеющих к отношение к настоящему изобретению, не приводится.
Если о некотором компоненте сказано, что он соединен или связан с другим компонентом, то это означает, что этот компонент может быть соединен или связан с другим компонентом как непосредственно, так и посредством других компонентов. Если в настоящем документе сказано, что настоящее изобретение содержит или включает определенный компонент, то это означает, что настоящее изобретение не исключает присутствия других компонентов, и вполне возможно, что в технической сущности настоящего изобретения или в вариантах осуществления настоящего изобретения также присутствуют дополнительные компоненты.
Для описания различных компонентов могут использоваться термины «первый» и «второй», но указанными терминами на эти компоненты не накладывается никаких ограничений. Данные термины используются лишь с целью отличить один компонент от другого. Например, без отступления от идеи настоящего изобретения первый компонент может быть назван вторым компонентом, а второй компонент может быть назван первым компонентом.
В настоящем документе компоненты с целью представления соответствующих им индивидуальных особенностей могут быть показаны независимыми, но это не означает, что каждый компонент должен представлять собой отдельный аппаратный или программный элемент. Иными словами, для упрощения описания компоненты показаны раздельными. Для выполнения какой-либо функции могут быть объединены по меньшей мере два компонента с образованием одного компонента, либо любой компонент может быть разделен на множество компонентов. Такое объединение или разделение, не являясь отступлением от идеи настоящего изобретения, также входит в объем охраны настоящего изобретения.
Некоторые компоненты могут быть не обязательными компонентами, служащими для выполнения существенных функций настоящего изобретения, а необязательными компонентами, служащими для улучшения работы. Для осуществления настоящего изобретения достаточно лишь существенных компонентов, реализующих идею настоящего изобретения, а компоненты, используемые для повышения качества функционирования, могут быть исключены, и такая конфигурация также входит в объем охраны настоящего изобретения.
Трехмерное изображение на трехмерном стереоскопическом дисплее создает стереоскопический эффект, подобный тому, что пользователь видит и ощущает в реальном мире. В этой связи группа JCT-3V (The Joint Collaborative Team on 3D Image Coding Extension Development) из группы MPEG (Moving Picture Experts Group) при ISO/IEC (International Organization for Standartization - International Electrotechnical Commission) и группа VCEG (Video Coding Experts Group) в ITU-T (International Telecommunication Union - Telecommunication Standardization Sector) работают над разработкой стандартов для трехмерных изображений.
Фиг. 1 представляет собой схематичную иллюстрацию базовой структуры системы для работы с трехмерными изображениями.
Как показано на фиг. 1, в состав системы трехмерного видео (3DV) могут входить передатчик и приемник. При этом система трехмерного видео, показанная на фиг. 1, может быть базовой системой трехмерного видео, представленной в стандартах трехмерных изображений, в числе которых могут быть стандарты в отношении перспективных форматов данных и связанных с ними технологий, которые могут поддерживать воспроизведение автостереоскопических изображений, а также стереоскопических изображений, использующих текстуру и соответствующую ей карту информации глубин.
Передатчик может формировать информационный материал с изображением, содержащим множество ракурсов. Конкретно, на передающей стороне с использованием стереокамеры и камеры, обеспечивающей съемку нескольких ракурсов, может формироваться информация изображения, а с использованием камеры, обеспечивающей съемку информации глубин, может формироваться карта информации глубин (или глубинный вид). Передатчик может преобразовывать двумерное изображение в трехмерное изображение с использованием преобразователя. С использованием сформированной информации изображения и карты информации глубин передатчик может формировать информационный материал с изображением, содержащим N ракурсов (N≥2), т.е. с многоракурсным изображением. При этом информационный материал с N-ракурсным изображением может содержать информацию изображения, информацию карты глубины этого изображения и дополнительную информацию, относящуюся к камере. Указанный информационный материал с N-ракурсным изображением может сжиматься кодером трехмерного изображения с использованием схемы кодирования многоракурсных изображений, а сжатый информационный материал с изображением (битовый поток) может передаваться через сеть в терминал приемника.
Приемник выполнен с возможностью декодирования информационного материала с изображением, принятого из передатчика, и с возможностью выдачи многоракурсного изображения. Конкретно, входящий в состав приемника декодер изображения (например, декодер трехмерного изображения, декодер стереоскопического изображения или декодер двумерного изображения) с целью восстановления N-ракурсного изображения из битового потока выполнен с возможностью декодирования принятого битового потока с использованием схемы декодирования многоракурсных изображений. При этом декодер изображения выполнен с возможностью формирования N (или более)-ракурсных виртуальных изображений с использованием восстановленного N-ракурсного изображения и операции визуализации на основе информации глубины изображения (depth image-based rendering, DIBR). Сформированные N (или более)-ракурсные виртуальные изображения воспроизводятся разнообразными трехмерными дисплеями (к примеру, N-ракурсным дисплеем, стереоскопическим дисплеем или двумерным дисплеем), которые создают у пользователя ощущение трехмерности изображения.
Фиг. 2 представляет собой пример изображения воздушных шаров и пример изображения карты информации глубин. На фиг. 2(a) показано изображение воздушных шаров, которое принято использовать в разработанном группой MPEG (международной организацией по стандартизации) стандарте кодирования трехмерных изображений. На фиг. 2(b) показано изображение карты информации глубин, соответствующей изображению воздушных шаров, показанному на фиг. 2(a). Это изображение карты информации глубин получено визуализацией информации глубин путем отображения на экране ее представления с кодированием восемью битами на пиксел.
Карта информации глубин используется для формирования виртуальных изображений ракурсов и строится путем представления расстояния между камерой и реальным объектом в реальном пространстве (информации глубин, соответствующей каждому пикселу, с тем же разрешением, как у текстуры) заранее заданным числом битов. При этом карта информации глубин может быть построена с использованием камеры для получения карты информации глубин или с использованием собственно обычного изображения (текстуры).
Карта информации глубин, которая строится с использованием камеры для получения карты информации глубин, для неподвижных объектов или сцен дает самую надежную информацию глубин, однако эта камера работоспособна только в заранее заданном интервале расстояний. Для устранения этого недостатка камера для получения карты информации глубин может использовать схему измерения, в которой применяется лазерный луч или структурированный свет, или световую времяпролетную схему измерения (TFL, time-of-flight of light, время пролета света).
Карта информации глубин, кроме того, может быть сформирована с использованием собственно обычного изображения (текстуры) и вектора невязки. Вектором невязки называют информацию, представляющую различие между ракурсами, представленными двумя обычными изображениями. Вектор невязки может быть получен путем сравнения пиксела из текущего ракурса и пикселов из других ракурсов с целью отыскания пиксела, наиболее сходного с пикселом из текущего ракурса, и измерения расстояния между пикселом из текущего ракурса и этим наиболее сходным пикселом.
Текстура и ее карта информации глубин могут представлять собой изображение (изображения), полученные одной или более камерами. Изображения, полученные несколькими камерами, могут кодироваться независимо, а для их кодирования/ декодирования может использоваться типовой кодек для кодирования/ декодирования двумерных изображений. Ракурсы в изображениях, полученных несколькими камерами, коррелированы, и по этой причине для повышения эффективности кодирования могут кодироваться с использованием предсказания с использованием предсказания по разным ракурсам (межракурсного предсказания).
Фиг. 3 представляет собой схематичную иллюстрацию структуры, на которую изображение разбивается при кодировании и декодировании.
При рационально выполненном разбиении изображение может кодироваться и декодироваться отдельно в каждом элементе кодирования (ЭК). Термин «элемент» обозначает блок, содержащий синтаксический элемент и элементарные значения изображения (значения элементов изображения, отсчеты, samples). Выражение «элемент разбит» может означать, что разбит блок, соответствующий указанному элементу.
Как показано на фиг. 3, изображение 300 последовательно разбивается на самые большие элементы кодирования (СБЭК) и определяется структура разбиения каждого СБЭК. В настоящем документе под СБЭК может пониматься элемент дерева кодирования (ЭДК). Под структурой разбиения может пониматься размещение элементов кодирования (ЭК) в каждом из СБЭК 310 с целью рационального кодирования изображения; такое размещение может определяться тем, разбивается ли один ЭК на четыре ЭК, каждый из которых вдвое меньше исходного ЭК как в горизонтальном, так и в вертикальном направлении. Таким же образом ЭК, полученный в результате разбиения, тоже может последовательно разбиваться на четыре ЭК, каждый из которых вдвое меньше исходного ЭК как в горизонтальном, так и в вертикальном направлении.
Разбиение элемента кодирования может выполняться последовательно до заранее определенной глубины разбиения. Под информацией глубины понимается информация, указывающая размер ЭК; эта информация может быть сохранена для каждого ЭК. Например, глубина разбиения СБЭК может быть равной 0, а глубина разбиения самого малого элемента кодирования (СМЭК) может быть равна заранее определенной наибольшей глубине разбиения. Здесь СБЭК представляет собой элемент кодирования наибольшего размера, как указано выше, а СМЭК представляет собой элемент кодирования наименьшего размера.
Всякий раз, когда LCU 310 делится пополам как в горизонтальном, так и в вертикальном направлениях, глубина разбиения данного ЭК увеличивается на единицу. Например, если при некоторой глубине L разбиения размер ЭК равен 2Nx2N, то размер ЭК, получающегося в результате разбиения данного ЭК, сокращается до NxN. При этом глубина разбиения такого ЭК с размером NxN равна L+1. Иными словами, величина N, соответствующая размеру ЭК, уменьшается вдвое при каждом увеличении глубины разбиения на единицу.
Как показано на фиг. 3, размер самого большого элемента кодирования (СБЭК), соответствующего наименьшей глубине разбиения, равной 0, может быть 64x64 пиксела, а размер самого малого элемента кодирования (СМЭК), соответствующего наименьшей глубине разбиения, равной 3, может быть 8x8 пикселов. При этом глубина разбиения ЭК размером 64x64 пиксела (СБЭК) может быть положена равной 0, ЭК размером 32x32 пиксела равной 1, ЭК размером 16x16 пикселов равной 2, а ЭК размером 8x8 пикселов (СМЭК) равной 3.
Информация о том, разбивается ли определенный ЭК, может быть представлена посредством однобитовой информации разбиения данного ЭК. Эта информация разбиения может содержаться во всех ЭК, кроме самых малых ЭК. Например, если ЭК не разбит, то в информации разбиения данного ЭК может храниться 0, а если разбит, то в информации разбиения данного ЭК может храниться 1.
Фиг. 4 иллюстрирует элементы предсказания, которые могут содержаться в элементе кодирования (ЭК).
Элемент кодирования из числа элементов кодирования, полученных разбиением СБЭК, не подвергаемый дальнейшему разбиению, может быть разбит или разделен еще и на один или более элементов предсказания.
Элемент предсказания (далее ЭП) представляет собой базовый элемент, в котором выполняется предсказание. Элемент предсказания кодируется и декодируется в режиме пропуска, в межкадровом режиме или во внутрикадровом режиме. В зависимости от режима элемент предсказания может быть разбит различными способами, представленными на фиг. 4.
В режиме пропуска возможна поддержка режима 410, в котором ЭП имеет размер 2Nx2N, такой же, как у неразбитого ЭК.
В межкадровом режиме возможна поддержка ЭК восьми типов разделения, например, режим 410 2Nx2N, режим 415 2NxN, режим 420 Nx2N, режим 425 NxN, режим 430 2NxnU, режим 435 2NxnD, режим 440 nLx2N, и режим 445 NRx2N.
Во внутрикадровом режиме возможна поддержка режима 410 2Nx2N и режима 425 NxN.
Фиг. 5 иллюстрирует пример структуры межракурсного предсказания в кодеке трехмерного изображения.
Межракурсное предсказание для ракурса 1 и ракурса 2 может быть выполнено с использованием ракурса 0 в качестве опорного изображения, но ракурс 0 должен быть кодирован раньше ракурса 1 и ракурса 2.
При этом ракурс 0 может кодироваться независимо от других ракурсов, поэтому ракурс 0 называется независимым ракурсом. Ракурс 1 и ракурс 2, которые должны использовать ракурс 0 в качестве опорного изображения, называют зависимыми ракурсами. Изображение независимого ракурса может кодироваться с использованием обычного кодека двумерного изображения. Изображения зависимых ракурсов должны подвергаться межракурсному предсказанию, поэтому эти ракурсы могут кодироваться с использованием кодека трехмерного изображения, выполненного с возможностью межракурсного предсказания.
Для повышения эффективности кодирования ракурс 1 и ракурс 2 могут кодироваться с использованием карты информации глубин. Например, текстура и карта информации глубин при кодировании могут кодироваться и/ или декодироваться независимо друг от друга. Кроме того, текстура и карта информации глубин при кодировании могут кодироваться и/ или декодироваться в зависимости друг от друга, что показано на фиг. 6.
Фиг. 6 иллюстрирует пример операции кодирования и/ или декодирования собственно изображения (текстурного вида) и карты информации глубин (глубинного вида) в кодере и/ или декодере трехмерного изображения.
Как показано на фиг. 6, кодер трехмерного изображения может содержать текстурный кодер (кодер текстуры) для кодирования собственно изображения (текстурного вида) и кодер карты информации глубин (кодер глубины) для кодирования карты информации глубин (глубинного вида).
При этом кодер текстуры выполнен с возможностью кодирования текстуры с использованием карты информации глубин, кодированной кодером карты информации глубин. В то же время кодер карты информации глубин выполнен с возможностью кодирования карты информации глубин с использованием текстуры, кодированной кодером текстуры.
Декодер трехмерного изображения может содержать декодер собственно изображения (декодер текстуры) для декодирования текстуры и декодер карты информации глубин для декодирования карты информации глубин.
При этом декодер текстуры выполнен с возможностью декодирования текстуры с использованием карты информации глубин, декодированной декодером карты информации глубин. В то же время декодер карты информации глубин выполнен с возможностью декодирования карты информации глубин с использованием текстуры, декодированной декодером текстуры.
Фиг. 7 представляет собой структурную схему, иллюстрирующую конфигурацию кодера изображения в соответствии с вариантом осуществления настоящего изобретения.
Фиг. 7 иллюстрирует пример кодера изображения, применимого к многоракурсной структуре, который может быть осуществлен путем модификации кодера одноракурсных изображений. При этом кодер изображения, показанный на фиг. 7, может использоваться в кодере текстуры и/ или в кодере карты информации глубин, как показано на фиг. 6, и под этим кодером может пониматься устройство кодирования.
Как показано на фиг. 7, кодер 700 изображения содержит модуль 710 межкадрового предсказания, модуль 720 внутрикадрового предсказания, переключатель 715, вычитатель 725, модуль 730 преобразования, модуль 740 квантования, модуль 750 энтропийного кодирования, модуль 760 деквантования, модуль 770 обратного преобразования, сумматор 775, фильтр 780 и буфер 790 опорного кадра.
Кодер 700 изображения выполнен с возможностью кодирования входного изображения во внутрикадровом режиме или в межкадровом режиме с формированием битового потока.
Под внутрикадровым предсказанием понимается предсказание по одному кадру, а под межкадровым предсказанием понимается предсказание по разным кадрам или по разным ракурсам. Внутрикадровый или межкадровый режим задается переключателем 715.
Кодер 700 изображения выполнен с возможностью формирования блока предсказания для блока входного кадра (текущего блока) с последующим кодированием разности между текущим блоком и этим блоком предсказания.
Модуль 720 внутрикадрового предсказания выполнен с возможностью использования во внутрикадровом режиме в качестве своего опорного пиксела значения пиксела из уже закодированного блока, соседнего с текущим блоком. Модуль 720 внутрикадрового предсказания выполнен с возможностью формирования элементарных значений предсказания для текущего блока с использованием этого опорного пиксела.
Модуль 710 межкадрового предсказания выполнен с возможностью получения в межкадровом режиме вектора движения, указывающего опорный блок, соответствующий входному блоку (текущему блоку) в опорном кадре, сохраненном в буфере 790 опорного кадра. Модуль 710 межкадрового предсказания выполнен с возможностью формирования блока предсказания для текущего блока путем выполнения компенсации движения с использованием опорного кадра, сохраненного в буфере 790 опорного кадра, и указанного вектора движения.
В многоракурсной структуре межкадровое предсказание, применяемое в межкадровом режиме, может содержать межракурсное предсказание. Модуль 710 межкадрового предсказания выполнен с возможностью построения межракурсного опорного кадра путем отбора элементарных значений из кадра опорного ракурса. Модуль 710 межкадрового предсказания выполнен с возможностью осуществления межракурсного предсказания с использованием списка опорных кадров, содержащего указанный межракурсный опорный кадр. Относительная взаимосвязь между ракурсами может сообщаться посредством информации, указывающей зависимость одного ракурса от другого ракурса.
Если кадр текущего ракурса и кадр опорного ракурса имеют одинаковые размеры, то под отбором элементарных значений, применяемым к кадру опорного ракурса, может пониматься формирование опорного элементарного значения путем копирования элементарного значения из кадра опорного ракурса или путем интерполяции в кадре опорного ракурса. Если же кадр текущего ракурса и кадр опорного ракурса имеют различные размеры, то под отбором элементарных значений, применяемым к кадру опорного ракурса, может пониматься отбор элементарных значений с повышением разрешения или с понижением разрешения. Например, если ракурсы имеют различные разрешения, то для построения межракурсного опорного кадра может выполняться отбор элементарных значений из восстановленного кадра опорного ракурса с повышением разрешения.
Ракурс, кадр из которого должен использоваться для построения межракурсного опорного кадра, может определяться с учетом, например, стоимости кодирования. Кодер может передавать в декодирующее устройство информацию, указывающую ракурс, которому принадлежит кадр, подлежащий использованию в качестве межракурсного опорного кадра.
Кадр, используемый для предсказания текущего блока в ракурсе, относительно которого ведется межракурсное предсказание - то есть в опорном ракурсе - может быть тем же, что и кадр того же элемента доступа (ЭД), что и текущий кадр (кадр в текущем ракурсе, для которого выполняется предсказание).
Вычитатель 725 выполнен с возможностью формирования остаточного блока (остаточного сигнала) путем вычисления разности между текущим блоком и блоком предсказания.
Модуль 730 преобразования преобразует остаточный блок в коэффициент преобразования. В режиме пропуска преобразования модуль 730 преобразования может пропускать указанное преобразование остаточного блока.
Модуль 740 квантования квантует указанный коэффициент преобразования, формируя квантованный коэффициент в соответствии с параметрами квантования.
Блок 750 энтропийного кодирования выполняет энтропийное кодирование значений, полученных модулем 740 квантования, или параметров кодирования, полученных в процессе кодирования, в битовый поток в соответствии с распределением вероятности. Блок 750 энтропийного кодирования также выполнен с возможностью энтропийного кодирования, в дополнение к информации пикселов изображения, еще и информации (к примеру, синтаксического элемента) для декодирования изображения.
Указанные параметры кодирования в качестве информации, необходимой для кодирования и декодирования, могут содержать информацию, которая может быть определена в процессе кодирования или декодирования, а также такую информацию, как, например, синтаксический элемент, закодированный кодером и переданный в декодирующее устройство.
Под остаточным сигналом может пониматься разность между исходным сигналом и предсказанным сигналом, сигнал, полученный преобразованием разности между исходным сигналом и предсказанным сигналом, или сигнал, полученный преобразованием разности между исходным сигналом и предсказанным сигналом и последующим квантованием преобразованной разности. При рассмотрении на уровне блоков остаточный сигнал может быть назван остаточным блоком.
Когда применяется энтропийное кодирование, символы могут быть представлены таким образом, что символ с более высокой вероятностью присутствия кодируется меньшим количеством битов, а другой символ с меньшей вероятностью присутствия кодируется большим количеством битов, тем самым для символов, подвергаемых кодированию, может быть снижен объем битового потока. Таким образом, кодирование изображения с использованием энтропийного кодирования дает возможность получить лучшее сжатие.
Схемой кодирования, используемой при энтропийном кодировании, может быть, например, экспоненциальная схема Голомба, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC, context-adaptive variable length coding), или контекстно-адаптивное двоичное арифметическое кодирование (CABAC, context-adaptive binary arithmetic coding). Например, блок 750 энтропийного кодирования может выполнять энтропийное кодирование с использованием таблицы кодирования с переменной длиной слова (таблицы VLC, variable length coding/ code). Блок 750 энтропийного кодирования выполнен с возможностью выбора способа разбиения на интервалы, целевого символа и вероятностной модели указанного целевого символа/ интервала, и выполнен с возможностью реализации энтропийного кодирования с использованием выбранного способа разбиения на интервалы и вероятностной модели.
Прошедший квантование коэффициент может быть деквантован модулем 760 деквантования и может быть подвергнут обратному преобразованию модулем 770 обратного преобразования. Сумматор 775 складывает деквантованный и прошедший обратное преобразование коэффициент с блоком предсказания, в результате чего получается восстановленный блок.
Восстановленный блок проходит через фильтр 780. В фильтре 780 к восстановленному блоку или восстановленному кадру может применяться по меньшей мере один из следующих фильтров: фильтр подавления блочности; фильтр с адаптивным смещением (sample adaptive offset, SAO) и фильтр с адаптивным контуром (adaptive loop filter, ALF). Восстановленный блок после прохождения через фильтр 780 может сохраняться в буфере 790 опорного кадра.
Фиг. 8 представляет собой структурную схему, иллюстрирующую конфигурацию декодера изображения в соответствии с вариантом осуществления настоящего изобретения. Фиг. 8 иллюстрирует пример декодера изображения, применимого к многоракурсной структуре, который может быть осуществлен путем модификации декодера одноракурсных изображений.
Декодер изображения, показанный на фиг. 8, может использоваться в декодере текстуры и/ или в декодере карты информации глубин, показанном на фиг. 6. Для простоты описания в настоящем документе термины «дешифрование» и «декодирование» могут быть использованы с возможностью взаимной замены; также с возможностью взаимной замены могут быть использованы термины «декодирующее устройство» и «декодер».
Как показано на фиг. 8, декодер 800 изображения содержит модуль 810 энтропийного декодирования, модуль 820 деквантования, модуль 830 обратного преобразования, модуль 840 внутрикадрового предсказания, модуль 850 межкадрового предсказания, фильтр 860 и буфер 870 опорного кадра.
Декодер 800 изображения выполнен с возможностью приема битового потока из кодера, декодирования этого битового потока во внутрикадровом режиме или в межкадровом режиме и выдачи воссозданного изображения, т.е. восстановленного изображения.
Внутрикадровый или межкадровый режим может выбираться переключателем.
Декодер 800 изображения выполнен с возможностью получения остаточного блока, восстановленного из принятого битового потока, с возможностью формирования блока предсказания и с возможностью сложения восстановленного остаточного блока с этим блоком предсказания, в результате чего формируется воссозданный блок, т.е. восстановленный блок.
Модуль 810 энтропийного декодирования выполнен с возможностью преобразования принятого битового потока в информацию, например, в квантованный коэффициент и синтаксический элемент, путем энтропийного декодирования в соответствии с распределением вероятности.
Квантованный коэффициент деквантуется модулем 820 деквантования и подвергается обратному преобразованию, выполняемому модулем 830 обратного преобразования. Квантованный коэффициент путем деквантования/ обратного преобразования может быть преобразован в восстановленный остаточный блок.
Модуль 840 внутрикадрового предсказания выполнен с возможностью формирования во внутрикадровом режиме блока предсказания для текущего блока с использованием значения пиксела из уже закодированного блока, соседнего с текущим блоком.
Модуль 850 межкадрового предсказания выполнен с возможностью формирования в межкадровом режиме блока предсказания для текущего блока путем выполнения компенсации движения с использованием опорного кадра, сохраненного в буфере 870 опорного кадра, и вектора движения.
В многоракурсной структуре межкадровое предсказание, применяемое в межкадровом режиме, может содержать межракурсное предсказание. Модуль 850 межкадрового предсказания выполнен с возможностью построения межракурсного опорного кадра путем отбора элементарных значений из кадра опорного ракурса. Модуль 850 межкадрового предсказания выполнен с возможностью осуществления межракурсного предсказания с использованием списка опорных кадров, содержащего указанный межракурсный опорный кадр. Относительная взаимосвязь между ракурсами может сообщаться посредством информации, указывающей зависимость одного ракурса от другого ракурса.
Если кадр текущего ракурса (текущий кадр) и кадр опорного ракурса имеют одинаковые размеры, то под отбором элементарных значений, применяемым к кадру опорного ракурса, может пониматься формирование опорного элементарного значения путем копирования элементарного значения из кадра опорного ракурса или путем интерполяции в кадре опорного ракурса. Если же кадр текущего ракурса и кадр опорного ракурса имеют различные размеры, то под отбором элементарных значений, применяемым к кадру опорного ракурса, может пониматься отбор элементарных значений с повышением разрешения или с понижением разрешения.
Например, если межкадровое предсказание применяется к ракурсам, имеющим различные разрешения, то для построения межракурсного опорного кадра может выполняться отбор элементарных значений из восстановленного кадра опорного ракурса с повышением разрешения.
При этом из кодера в декодер может передаваться информация, указывающая ракурс, которому принадлежит кадр, подлежащий использованию в качестве межракурсного опорного кадра.
Кадр, используемый для предсказания текущего блока в ракурсе, относительно которого ведется межракурсное предсказание - то есть в опорном ракурсе - может быть тем же, что и кадр того же элемента доступа (ЭД), что и текущий кадр (кадр в текущем ракурсе, для которого выполняется предсказание).
Восстановленный остаточный блок и блок предсказания суммируются сумматором 855, в результате чего формируется восстановленный блок. Иными словами, путем сложения остаточного элементарного значения и элементарного значения предсказания формируется восстановленное элементарное значение или восстановленный кадр.
Восстановленный кадр фильтруется фильтром 860. В фильтре 860 к восстановленному блоку или восстановленному кадру может применяться по меньшей мере один из следующих фильтров: фильтр подавления блочности, фильтр с адаптивным смещением, фильтр с адаптивным контуром. Фильтр 860 выдает воссозданный (модифицированный) или фильтрованный восстановленный кадр (воссозданный кадр). Этот воссозданный кадр сохраняется в буфере 870 опорного кадра для использования в межкадровом предсказании.
Несмотря на то, что в варианте осуществления, описанном совместно с фиг. 7 и 8, указанные модули выполняют свои соответствующие функции независимо друг от друга, настоящее изобретение этим не ограничено. Например, один модуль может выполнять две или более функции. Например, операции, выполняемые, соответственно, модулем внутрикадрового предсказания и модулем межкадрового предсказания, показанными на фиг. 7 и 8, могут выполняться одним модулем (предсказывающим модулем).
Как указано выше в связи с фиг. 7 и 8, один кодер/ декодер выполняет кодирование/ декодирование всех ракурсов из множества ракурсов. Однако это сделано лишь для простоты описания, и для каждого ракурса из множества ракурсов может быть предусмотрен отдельный кодер/ декодер.
В таком случае кодер/ декодер для текущего ракурса может выполнять кодирование/ декодирование текущего ракурса с использованием информации, относящей к другому ракурсу. Например, предсказывающий модуль (модуль межкадрового предсказания) для текущего ракурса может выполнять внутрикадровое предсказание или межкадровое предсказание для текущего блока с использованием указанной информации пикселов или информации восстановленного кадра другого ракурса.
Несмотря на то, что здесь описывается межракурсное предсказание, текущий уровень может кодироваться/ декодироваться с использованием информации, относящейся к другому ракурсу, независимо от того, предусмотрен ли кодер/ декодер для каждого ракурса или множество ракурсов обрабатывается одним устройством.
Описание, относящееся к ракурсам в соответствии с настоящим изобретением, может в равной степени применяться к уровням с поддержкой масштабирования. Например, в качестве описываемого в настоящем документе ракурса может выступать уровень.
Фиг. 9 представляет собой иллюстрацию примера структуры предсказания для кодека трехмерного изображения. Для упрощения описания фиг. 9 иллюстрирует структуру предсказания для кодирования текстур, полученных тремя камерами, и карт информации глубин, соответствующих указанным текстурам.
Как показано на фиг. 9, три текстуры, полученные, соответственно, с трех камер, обозначены как T0, T1 и T2 в соответствии с ракурсами, а три карты информации глубин, соответствующие указанным трем текстурам, обозначены как D0, D1 и D2 в соответствии с ракурсами. Здесь T0 и D0 представляют собой изображения, полученные в ракурсе 0, T1 и D1 в ракурсе 1, а T2 и D2 в ракурсе 2. Показанные на фиг. 9 четырехугольники представляют собой изображения (кадры).
Указанные изображения (кадры) в зависимости от типов кодирования/ декодирования подразделяются на кадры типа I (кадры с внутренним предсказанием), кадры типа P (кадры с предсказанием со ссылкой на один кадр) и кадры типа B (кадры с предсказанием со ссылкой на два кадра), и каждый кадр может кодироваться/ декодироваться в соответствии с его типом кодирования/ декодирования. Для получения кадров типа I изображения кодируются сами по себе, без использования межкадрового предсказания. Для получения кадров типа P в межкадровом предсказании могут быть использованы только опорные изображения из одного направления, а для получения кадров типа B в межкадровом предсказании могут быть использованы опорные изображения из двух направлений. Стрелки на фиг. 9 указывают направления предсказания. Иными словами, текстура и ее карта информации глубин могут кодироваться/ декодироваться во взаимосвязи в зависимости от направлений предсказания.
Для кодирования/ декодирования изображения с использованием межкадрового предсказания необходима информация движения, относящаяся к текущему блоку. Для получения информации движения, относящейся к текущему блоку, могут использоваться следующие способы: способ с использованием информации движения, относящейся к блоку, смежному с текущим блоком; способ с использованием временной корреляции в один и тот же момент времени; и способ с использованием межракурсной корреляции в близкий момент времени. Для одного кадра эти способы межкадрового предсказания могут использоваться в сочетании. Текущим блоком здесь называется блок, для которого выполняется предсказание. Под информацией движения может пониматься вектор движения, номер опорного кадра и/ или направление предсказания (к примеру, является ли предсказание однонаправленным предсказанием или двунаправленным предсказанием, используется ли в предсказании временная корреляция или межракурсная корреляция и т.д.).
Направление предсказания может, как правило, подразделяться на однонаправленное предсказание или двунаправленное предсказание в зависимости от того, используется ли список опорных кадров (RefPicList). Двунаправленное предсказание подразделяется на предсказание со ссылкой вперед (Pred_L0: Prediction L0), в котором используется список (LIST 0, L0) опорных кадров со ссылкой вперед, предсказание со ссылкой назад (Pred_L1: Prediction L1), в котором используется список (LIST 1, L1) опорных кадров со ссылкой назад, и предсказание со ссылкой как вперед, так и назад (Pred_BI: Prediction BI), в котором используется как список (LIST 0) опорных кадров со ссылкой вперед, так и список (LIST 1) опорных кадров со ссылкой назад. Случай, в котором список опорных кадров со ссылкой вперед (LIST 0) копируется в список опорных кадров со ссылкой назад (LIST 1), в результате чего имеют место две операции предсказания со ссылкой вперед, также может быть отнесен к категории двунаправленного предсказания.
Направление предсказания может определяться с использованием флагов predFlagL0 и predFlagL1. При этом predFlagL0 представляет собой индикатор, указывающий, используется ли список опорных кадров со ссылкой вперед (LIST 0), а predFlag1 представляет собой индикатор, указывающий, используется ли список опорных кадров со ссылкой назад (LIST 1). Например, в случае однонаправленного предсказания и предсказания со ссылкой вперед predFlagL0 может быть равен 1, а predFlagL1 может быть равен 0; в случае однонаправленного предсказания и предсказания со ссылкой назад predFlagL0 равен 0, а predFlagL1 равен 1; а в случае двунаправленного предсказания predFlagL0 равен 1 и predFlagL1 равен 1.
Фиг. 10 иллюстрирует пример, в котором для построения списка кандидатов слияния для текущего блока используются прилегающие блоки.
Слияние представляет собой способ выполнения межкадрового предсказания. В режиме слияния информация движения, относящаяся к блокам, прилегающим к текущему блоку, может использоваться в качестве информации движения, относящейся к текущему блоку (например, в указанном качестве может использоваться по меньшей мере один элемент из следующего списка: вектор движения, список опорных кадров, индекс опорного кадра). Использование информации движения, относящейся к соседним блокам, в качестве информации движения, относящейся к текущему блоку, называется слиянием или слиянием движения.
В режиме слияния возможно слияние движения по элементам кодирования (ЭК) и по элементам предсказания (ЭП).
Для слияния движения, выполняемого поблочно (к примеру, по элементам кодирования или по элементам предсказания, далее, для упрощения описания, «по блокам») необходима информация о том, выполняется ли слияние движения по части блока, и информация о том, с каким из прилегающих блоков текущего блока выполняется слияние движения.
Для выполнения слияния движения может строиться список кандидатов слияния.
Под списком кандидатов слияния понимается список элементов информации движения, который может формироваться до выполнения слияния. При этом информацией движения списка кандидатов слияния может быть информация движения, относящаяся к соседним блокам текущего блока, или информация движения, вновь созданная путем комбинирования элементов информации движения, уже содержащихся в указанном списке кандидатов слияния. Информацией движения, относящейся к соседним блокам (например, вектором движения и/ или индексом опорного кадра) может быть информация движения, указываемая соседними блоками, или информация движения, сохраненная в соседних блоках (или использованная для декодирования соседних блоков).
Как показано на фиг. 10, в число соседних блоков могут входить прилегающие блоки A, B, C, D и E, пространственно смежные с текущим блоком, и соответственно расположенный блок-кандидат H или M, по времени соответствующий текущему блоку. Под соответственно расположенным блоком-кандидатом понимается блок, находящийся в соответствующем положении в соответственно расположенном кадре, по времени соответствующем текущему кадру, содержащему текущий блок. При доступности блока H в соответственно расположенном кадре в качестве соответственно расположенного блока-кандидата может быть взят этот блок H, если же блок H недоступен, то в качестве соответственно расположенного блока-кандидата может быть взят блок M в соответственно расположенном кадре.
При построении списка кандидатов слияния проверяется, может ли информация движения, относящаяся к соседним блокам (A, B, C, D и E) и соответственно расположенному блоку-кандидату (H или M), использоваться в качестве кандидата слияния для построения списка кандидатов слияния, относящегося к текущему блоку. Иными словами, информация движения, относящаяся к блокам, которые могут быть использованы для межкадрового предсказания в отношении текущего блока, может быть добавлена в список кандидатов слияния в качестве кандидата слияния.
Например, в качестве способа построения списка кандидатов слияния для блока X может использоваться следующий способ. 1) Если соседний блок A доступен, то этот соседний блок A добавляется в список кандидатов слияния. 2) Затем, только в случае, когда информация движения, относящаяся к соседнему блоку B, отличается от информации движения, относящейся к соседнему блоку A, в список кандидатов слияния добавляется этот соседний блок B. 3) Аналогично, только в случае, когда информация движения, относящаяся к соседнему блоку C, отличается от информации движения, относящейся к соседнему блоку B, в список кандидатов слияния добавляется соседний блок C. 4) Только в случае, когда информация движения, относящаяся к соседнему блоку D, отличается от информации движения, относящейся к соседнему блоку C, в список кандидатов слияния добавляется соседний блок D. 5) Далее, только в случае, когда информация движения, относящаяся к соседнему блоку E, отличается от информации движения, относящейся к соседнему блоку D, соседний блок E может быть добавлен в список кандидатов слияния. 6) Наконец, в список кандидатов слияния добавляется соседний блок H (или M). В результате соседние блоки могут быть добавлены в список возможных блоков слияния в порядке A→B→C→D→E→H (или M). Здесь под одинаковой информацией движения может пониматься использование того же вектора движения, того же опорного кадра и того же направления предсказания (однонаправленного или двунаправленного).
Здесь для упрощения описания перемешаны выражения «добавление соседнего блока в список кандидатов слияния в качестве возможного блока слияния» и «добавление информации движения в список кандидатов слияния в качестве возможного блока слияния», хотя два этих выражения обозначают, по существу, одно и то же. Например, когда говорится о соседнем блоке в качестве кандидата слияния, это может означать информацию движения, относящуюся к указанному блоку.
Фиг. 11 представляет собой иллюстрацию примера операции определения информации движения, относящейся к текущему блоку, с использованием информации движения из соседнего ракурса.
С целью упрощения описания, связанного с фиг. 11, в нем для определения информации движения, относящейся к текущему блоку, используется только один ракурс. Однако может использоваться два или более соседних ракурса.
Как показано на фиг. 11, для эффективного кодирования/ декодирования информации движения система трехмерного видео может использовать информацию движения из соседнего ракурса. Конкретно, для текущего блока, показанного на фиг. 11 (блока в текущем местоположении X), с целью определения информации движения, относящейся к текущему блоку, ищется целевой блок в соседнем ракурсе (в опорном положении XR). При этом под целевым блоком в соседнем ракурсе понимается блок, соответствующий текущему блоку. Поскольку в текущем кадре единственное различие между текущим ракурсом и опорным ракурсом заключается в положении камер, целевой блок в соседнем ракурсе может быть определен из вектора невязки (DV, disparity vector), как описано выше.
Фиг. 12 представляет собой иллюстрацию примера, в котором один элемент предсказания (ЭП) разбит на несколько подэлементов предсказания.
В примере, показанном на фиг. 12, элемент предсказания размером 64x64 разбит на подэлементы предсказания, каждый из которых имеет размер 8x8. Размер элемента предсказания 64x64 на фиг. 12 выбран только для упрощения описания, и без ограничений указанный размер может быть равен 32x32, 16x16, 8x8 или 4x4. В системе трехмерного видео один элемент предсказания может быть разбит на несколько подэлементов предсказания. В этом случае определение информации движения с использованием вектора невязки выполняется по подэлементам предсказания. Подэлемент предсказания может иметь заранее определенный размер (к примеру, 4x4, 8x8 или 16x16), и размер подэлемента предсказания может задаваться при кодировании. Информация о размере подэлемента предсказания может включаться и сообщаться в расширенном синтаксисе набора параметров изображения (VPS, Video Parameter Set).
Фиг. 13 представляет собой иллюстрацию примера операции определения информации движения, относящейся к текущему блоку, с использованием опорного блока.
Под операцией определения информации движения, относящейся к текущему блоку, понимается задание в качестве информации движения, относящейся к текущему блоку, информации движения, содержащейся в опорном блоке. Однако для эффективного кодирования/ декодирования информации движения система трехмерного видео может для текущего блока X, находящегося в текущем кадре в текущем ракурсе, определять информацию движения по подэлементам предсказания.
Иными словами, система трехмерного видео может присваивать значение информации движения, содержащейся в подэлементе предсказания опорного блока XR, информации движения, относящейся к подэлементу предсказания текущего блока X. При этом под опорным блоком XR может пониматься опорный блок XR, находящийся в текущем кадре в опорном ракурсе. Конкретная операция определения информации движения описывается далее.
Фиг. 14 представляет собой иллюстрацию примера опорного блока, используемого для определения информации движения, относящейся к текущему блоку.
Как показано на фиг. 14, под опорным блоком может пониматься элемент предсказания (ЭП), и один опорный блок может в сумме содержать 16 подэлементов предсказания. При этом информация движения, относящаяся к каждому подэлементу предсказания в текущем блоке, может быть определена из информации движения, содержащейся в подэлементах предсказания опорного блока.
Далее со ссылкой на фиг. 15a-15e и фиг. 16a-16g описывается способ определения информации движения, относящейся к подэлементам предсказания текущего блока, с использованием опорного блока.
Фиг. 15a-15e представляют собой схематичные иллюстрации примера операции определения информации движения с использованием информации движения, сохраненной в хранилище. При этом опорным блоком, используемым на фиг. 15a-15e, может быть опорный блок, показанный на фиг. 14.
При присваивании подэлементам предсказания текущего блока информации движения, относящейся к подэлементам предсказания опорного блока, возможна ситуация, в которой не все подэлементы предсказания опорного блока содержат информацию движения. Иными словами, в опорном блоке могут быть подэлементы предсказания, из которых невозможно получить информацию движения. Соответственно, при наличии подэлементов предсказания, из которых невозможно получить информацию движения, для устранения невозможности определения информации движения из подэлемента предсказания текущего блока может быть использована информация движения, относящаяся к предыдущему или последующему подэлементу предсказания относительно подэлемента предсказания, на который в данный момент осуществляется ссылка. Например, информация движения, относящаяся к подэлементу предсказания, доступному в опорном блоке, может сохраняться заранее в целях подготовки к ситуации, в которой из другого подэлемента предсказания опорного блока определить информацию движения будет невозможно, и эта ранее сохраненная информация движения может быть введена в подэлемент предсказания текущего блока для определения информации движения, относящейся к текущему блоку.
Для лучшего понимания описанного выше способа далее со ссылкой на чертежи описывается каждый шаг предлагаемого в качестве примера способа определения информации движения, относящейся к подэлементу предсказания текущего блока, в случае, когда первый подэлемент предсказания опорного блока содержит свою информацию движения, а второй или следующие за ним подэлементы предсказания опорного блока могут не содержать ее.
Фиг. 15a представляет собой иллюстрацию исходного состояния подэлементов предсказания текущего блока и хранилища.
На фиг. 15a Ref обозначает опорный блок, а через Ref 0, 1, 2 и 3, соответственно, обозначены подэлементы предсказания в опорном блоке. Иными словами, Ref 0 обозначает подэлемент 0 предсказания опорного блока (первый подэлемент предсказания опорного блока), Ref 1 обозначает подэлемент 1 предсказания опорного блока (второй подэлемент предсказания опорного блока), Ref 2 обозначает подэлемент 2 предсказания опорного блока (третий подэлемент предсказания опорного блока), а Ref 3 обозначает подэлемент 3 предсказания опорного блока (четвертый подэлемент предсказания опорного блока). Cur обозначает текущий блок, а через Cur 0, 1, 2 и 3, соответственно, обозначены подэлементы предсказания в текущем блоке. Иными словами, Cur 0 обозначает подэлемент 0 предсказания текущего блока (первый подэлемент предсказания текущего блока), Cur 1 обозначает подэлемент 1 предсказания текущего блока (второй подэлемент предсказания текущего блока), Cur 2 обозначает подэлемент 2 предсказания текущего блока (третий подэлемент предсказания текущего блока), а Cur 3 обозначает подэлемент 3 предсказания (четвертый подэлемент предсказания текущего блока).
Символ X в позиции Ref 2 на фиг. 15a обозначает информацию движения, которую невозможно определить с использованием подэлемента 2 предсказания опорного блока.
Фиг. 15b представляет первый шаг определения информации движения из подэлемента предсказания опорного блока.
Как показано на фиг. 15b, информация движения для подэлемента 0 предсказания текущего блока определяется из подэлемента 0 предсказания опорного блока. При этом, поскольку имеется возможность определения информации движения из подэлемента 0 предсказания опорного блока, информация движения, относящаяся к подэлементу 0 предсказания опорного блока, сохраняется в хранилище. В этом случае информация движения, сохраненная в хранилище, может быть обозначена как информация 0 движения; эта информация движения может быть использована, когда из каких-либо других подэлементов предсказания опорного блока невозможно определить информацию движения.
Фиг. 15c представляет второй шаг определения информации движения из подэлемента предсказания опорного блока.
Как показано на фиг. 15c, информация движения для подэлемента 1 предсказания текущего блока определяется из подэлемента 1 предсказания опорного блока. При этом, поскольку имеется возможность определения информации движения из подэлемента 1 предсказания опорного блока, информация движения, относящаяся к подэлементу 1 предсказания опорного блока, сохраняется в хранилище. В этом случае сохраненная информация движения, относящаяся к подэлементу 1 предсказания, может быть обозначена как информация 1 движения; эта информация 1 движения может сохраняться в хранилище вместо информации 0 движения. Информация 1 движения может использоваться, когда из какого-либо другого подэлемента предсказания опорного блока невозможно определить информацию движения.
Фиг. 15d представляет третий шаг определения информации движения из подэлемента предсказания опорного блока.
Как показано на фиг. 15d, предпринимается попытка определения информации движения для подэлемента 2 предсказания текущего блока из подэлемента 2 предсказания опорного блока. Однако поскольку из подэлемента 2 предсказания опорного блока информацию движения определить невозможно, информация движения, относящаяся к подэлементу 2 предсказания текущего блока, определяется из информации движения, сохраненной в хранилище. В этом случае информацией движения, сохраненной в хранилище, может быть информация 1 движения.
Фиг. 15e представляет четвертый шаг определения информации движения из подэлемента предсказания опорного блока.
Как показано на фиг. 15e, информация движения для подэлемента 3 предсказания текущего блока определяется из подэлемента 3 предсказания опорного блока. При этом, поскольку имеется возможность определения информации движения из подэлемента 3 предсказания опорного блока, информация движения, относящаяся к подэлементу 3 предсказания опорного блока, сохраняется в хранилище. В этом случае сохраненная информация движения, относящаяся к подэлементу 3 предсказания, может быть названа информацией 3 движения; эта информация 3 движения может сохраняться в хранилище вместо информации 1 движения. Информация 3 движения может использоваться, когда из какого-либо другого подэлемента предсказания опорного блока невозможно определить информацию движения.
Фиг. 16a-16g представляют собой схематичные иллюстрации еще одного примера операции определения информации движения с использованием информации движения, сохраненной в хранилище.
Фиг. 16a-16g иллюстрируют пример операции определения информации движения в случае, когда имеется подэлемент предсказания опорного блока, из которого невозможно определить информацию движения и за которым следует еще один подэлемент предсказания опорного блока, из которого возможно определить информацию движения.
Фиг. 16a представляет собой иллюстрацию исходного состояния подэлементов предсказания текущего блока и хранилища.
На фиг. 16a, Ref обозначает опорный блок, а через Ref 0, 1, 2 и 3, соответственно, обозначены подэлементы предсказания в опорном блоке. Иными словами, Ref 0 обозначает подэлемент 0 предсказания опорного блока, Ref 1 обозначает подэлемент 1 предсказания опорного блока, Ref 2 обозначает подэлемент 2 предсказания опорного блока, а Ref 3 обозначает подэлемент 3 предсказания опорного блока. Cur обозначает текущий блок, а через Cur 0, 1, 2 и 3, соответственно, обозначены подэлементы предсказания в текущем блоке. Иными словами, Cur 0 обозначает подэлемент 0 предсказания текущего блока, Cur 1 обозначает подэлемент 1 предсказания текущего блока, Cur 2 обозначает подэлемент 2 предсказания текущего блока, а Cur 3 обозначает подэлемент 3 предсказания текущего блока. Символ X в позиции Ref 0 на фиг. 16a обозначает информацию движения, которую невозможно определить с использованием подэлемента 0 предсказания опорного блока и подэлемента 1 предсказания опорного блока.
Фиг. 16b представляет первый шаг определения информации движения из подэлемента предсказания опорного блока.
Как показано на фиг. 16b, предпринимается попытка определения информации движения для подэлемента 0 предсказания текущего блока из подэлемента 0 предсказания опорного блока. Однако, как указано выше, информация движения не может быть определена из подэлемента 0 предсказания опорного блока, и при этом нет информации движения, сохраненной в хранилище. Соответственно, выполняется второй шаг.
Фиг. 16c представляет второй шаг определения информации движения из подэлемента предсказания опорного блока.
Как показано на фиг. 16c, предпринимается попытка определения информации движения для подэлемента 1 предсказания текущего блока из подэлемента 1 предсказания опорного блока. Однако, как указано выше, информация движения не может быть определена из подэлемента 1 предсказания опорного блока, и при этом нет информации движения, сохраненной в хранилище. Соответственно, выполняется третий шаг.
Фиг. 16d представляет третий шаг определения информации движения из подэлемента предсказания опорного блока.
Как показано на фиг. 16d, информация движения для подэлемента 2 предсказания текущего блока определяется из подэлемента 2 предсказания опорного блока. При этом, поскольку имеется возможность определения информации движения из подэлемента 2 предсказания опорного блока, информация движения, относящаяся к подэлементу 2 предсказания опорного блока, сохраняется в хранилище. В этом случае информация движения, сохраненная в хранилище, может быть обозначена как информация 2 движения; эта информация движения может быть использована, когда из каких-либо других подэлементов предсказания опорного блока невозможно определить информацию движения.
Фиг. 16e представляет четвертый шаг определения информации движения из подэлемента предсказания опорного блока.
Как показано на фиг. 16e, информация движения для подэлемента 0 предсказания текущего блока определяется с использованием информации 2 движения, сохраненной в хранилище.
Фиг. 16f представляет пятый шаг определения информации движения из подэлемента предсказания опорного блока.
Как показано на фиг. 16f, информация движения для подэлемента предсказания 1 текущего блока определяется с использованием информации 2 движения, сохраненной в хранилище.
Фиг. 16g представляет шестой шаг определения информации движения из подэлемента предсказания опорного блока.
Как показано на фиг. 16g, информация движения для подэлемента 3 предсказания текущего блока определяется из подэлемента 3 предсказания опорного блока. При этом, поскольку имеется возможность определения информации движения из подэлемента 3 предсказания опорного блока, информация движения, относящаяся к подэлементу 3 предсказания опорного блока, сохраняется в хранилище. В этом случае сохраненная информация движения, относящаяся к подэлементу 3 предсказания, может быть названа информацией 3 движения; эта информация 3 движения может сохраняться в хранилище вместо информации 2 движения. Информация 3 движения может использоваться, когда из какого-либо другого подэлемента предсказания опорного блока невозможно определить информацию движения.
Фиг. 17 представляет собой блок-схему, иллюстрирующую способ определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием подэлемента предсказания опорного блока в соответствии с вариантом осуществления настоящего изобретения. Каждая операция в способе, показанном на фиг. 17, может выполняться кодером и/ или декодером или модулем межкадрового предсказания кодера и/ или декодера, например, модулем 720 внутрикадрового предсказания, показанным на фиг. 7, или модулем 850 межкадрового предсказания, показанным на фиг. 8.
Сначала со ссылкой на фиг. 17 описывается функционирование в случае, когда подэлемент предсказания опорного блока содержит свою информацию движения. Модуль межкадрового предсказания проверяет, содержит ли подэлемент предсказания опорного блока информацию движения (S1700).
Если подэлемент предсказания опорного блока содержит информацию движения, то модуль межкадрового предсказания вводит информацию движения, содержащуюся в указанном подэлементе предсказания опорного блока, в подэлемент предсказания текущего блока, для которого выполняется определение информации движения (S1710).
Затем модуль межкадрового предсказания проверяет, содержится ли в хранилище информация движения (S1720). Если в хранилище содержится информация движения, то выполняется шаг S1750. Хранилище было подробно описано выше, и в данном случае хранилище содержит информацию движения.
Если информация движения в хранилище не хранится, то модуль межкадрового предсказания проверяет, является ли подэлемент предсказания текущего блока, для которого выполняется определение информации движения, первым подэлементом предсказания текущего блока (S1730). Если подэлемент предсказания текущего блока, для которого выполняется определение информации движения, представляет собой первый подэлемент предсказания текущего блока, то модуль межкадрового предсказания выполняет шаг S1750.
Если на шаге S1730 установлено, что подэлемент предсказания текущего блока не является первым подэлементом предсказания, то модуль межкадрового предсказания вводит информацию движения, содержащуюся в указанном подэлементе предсказания опорного блока, в подэлемент (подэлементы) предсказания текущего блока, находящиеся впереди первого подэлемента предсказания текущего блока. Например, если подэлемент предсказания текущего блока, для которого выполняется определение информации движения, является третьим подэлементом предсказания, то модуль межкадрового предсказания вводит информацию движения, относящуюся к указанному подэлементу предсказания опорного блока, в первый и второй подэлементы предсказания текущего блока.
Модуль межкадрового предсказания сохраняет в хранилище информацию движения, относящуюся к подэлементу предсказания опорного блока, заменяя имеющуюся в хранилище информацию (S1750). Подробное описание сохранения и замены информации движения приведено выше.
Модуль межкадрового предсказания проверяет, является ли подэлемент предсказания опорного блока, для которого выполняется определение информации движения, последним подэлементом предсказания опорного блока (S1790). Если подэлемент предсказания опорного блока, для которого выполняется определение информации движения, является последним подэлементом предсказания опорного блока, то модуль межкадрового предсказания завершает данную операцию определения информации движения. Если же подэлемент предсказания опорного блока, для которого выполняется определение информации движения, не является последним подэлементом предсказания указанного опорного блока, то модуль межкадрового предсказания переходит к обработке следующего подэлемента предсказания опорного блока (S1780). Затем модуль межкадрового предсказания повторяет шаги S1700-S1790.
Если подэлементы предсказания опорного блока, содержащие информацию движения, отсутствуют, то выполняется следующая операция.
Модуль межкадрового предсказания проверяет, содержит ли подэлемент предсказания опорного блока информацию движения (S1700).
Если подэлемент предсказания опорного блока не содержит информацию движения, то модуль межкадрового предсказания проверяет, содержится ли информация движения в хранилище (S1770). Если хранилище не содержит информацию движения, то модуль межкадрового предсказания выполняет шаг S1790.
Если хранилище содержит информацию движения, то модуль межкадрового предсказания вводит информацию движения, сохраненную в хранилище, в подэлемент предсказания опорного блока, для которого выполняется определение информации движения (S1750).
Выполнив вышеперечисленные шаги, модуль межкадрового предсказания проверяет, является ли подэлемент предсказания опорного блока, для которого выполняется определение информации движения, последним подэлементом предсказания опорного блока (S1790). Если подэлемент предсказания опорного блока, для которого выполняется определение информации движения, является последним подэлементом предсказания опорного блока, то модуль межкадрового предсказания завершает данную операцию определения информации движения. Если же подэлемент предсказания опорного блока, для которого выполняется определение информации движения, не является последним подэлементом предсказания указанного опорного блока, то модуль межкадрового предсказания переходит к обработке следующего подэлемента предсказания опорного блока (S1780). Затем модуль межкадрового предсказания повторяет шаги S1700-S1790.
После этого модуль межкадрового предсказания определяет элементарное значение предсказания для текущего блока на основании информации движения, относящейся к текущему блоку, определенной в вышеописанных шагах. Под элементарным значением предсказания может пониматься вышеописанный сигнал предсказания, а под этим сигналом предсказания может пониматься разность между исходным сигналом и остаточным сигналом, как указано выше.
Описанная выше операция определения информации движения, относящаяся к подэлементу предсказания текущего блока, может применяться, в частности, и к трехмерным изображениям, как показано в таблице 1. Как указано выше, операция, представленная в таблице 1, может выполняться кодером/ декодером или модулем межкадрового предсказания кодера/ декодера.
Таблица 1
В данной операции используются следующие входные данные:
- положение (xPb, yPb) левого верхнего угла текущего элемента предсказания;
- ширина (nPbW) и высота (nPbH) текущего элемента предсказания;
- индекс refViewIdx опорного ракурса;
- вектор mvDisp невязки.
В данной операции получаются следующие выходные данные:
- флаг availableFlagLXinterView для указания доступности возможного временного межракурсного вектора движения, где LX может быть списком опорных кадров L0 и L1;
Здесь определение «временной межракурсный» понимается в том смысле, что кадр из ракурса, отличного от ракурса текущего кадра, может рассматриваться как кадр из того же ракурса, что и текущий кадр, но соответствующий другому моменту времени (т.е. имеющий другой порядковый номер кадра, POC).
- возможный временной межракурсный вектор mvLXInterView движения, где LX может быть списком L0 или L1 опорных кадров;
- ссылочный индекс refIdxLXInterView, указывающий опорный кадр, содержащийся в списке RefPicListLX опорных кадров, где LX может быть списком L0 или L1 опорных кадров.
LX может быть списком L0 или L1 опорных кадров. К списку LX применяется следующая операция:
- флагу availableFlagLXInterView присваивается начальное значение 0.
- вектору mvLXInterView движения присваивается начальное значение (0,0).
- ссылочному индексу refIdxLXInterView присваивается начальное значение -1.
Переменным nSbW и nSbH присваиваются начальные значения следующим образом:
nSbW=Min(nPbW, SubPbSize);
nSbH=Min(nPbH, SubPbSize).
Переменной ivRefPic в качестве начального значения присваивается значение, соответствующее кадру, имеющему то же значение ViewIdx, что refViewIdx в текущем элементе доступа. Переменной curSubBlockIdx присваивается начальное значение 0, переменной lastAvailableFlag присваивается начальное значение 0. При изменении yBlk от 0 до (nPbH/nSbH-1) и при изменении xBlk от 0 до (nPbW/nSbW-1) выполняется следующая операция:
- переменной curAvailableFlag присваивается начальное значение 0;
- при изменении X от 0 до 1 выполняется следующая операция:
- флагу spPredFlagL1[xBlk][yBlk] присваивается начальное значение 0;
- вектору spMvLX движения присваивается начальное значение (0,0);
- ссылочному индексу spRefIdxLX[xBlk][yBlk] присваивается начальное значение -1;
- положение (xRef, yRef) опорного блока определяется следующим образом:
xRef=Clip3(0, PicWidthInSamplesL-1), xPb+xBlk*nSbW+nSbW/2+((mvDisp[0]+2)>>2));
yRef=Clip3(0, PicHeightInSamplesL-1, yPb+yBlk*nSbH+nSbH/2+((mvDisp[1]+2)>>2)).
- переменная ivRefPb указывает на яркостный блок предсказания в положении (xRef, yRef) в межракурсном опорном кадре, указываемом ivRefPic;
- (xIvRefPb, yIvRefPb) указывает на положение левого верхнего угла опорного блока, указываемого ivRefPb;
- кроме случаев, когда ivRefPb был кодирован во внутрикадровом режиме, при изменении X от 0 до 1 выполняется следующая операция :
- если значение X равно 0 или текущим слайсом является слайс B, то при изменении Y от X до (1-X) выполняется следующая операция :
- переменным refPixListLYIvRef, predFlagLYIvRef[x][y], mvLYIvRef[x][y] и refIdxLYIvRef[x][y] присваиваются, соответственно, значения RefPicListLY, PredFlagLY[x][y], MvLY[x][y] и RefIdxLY[x][y] в кадре, указываемом ivRefPic;
- если значение predFlagLYIvRef[xIvRefPb][yIvRefPb] равно 1, то при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке опорных кадров) выполняется следующая операция:
- если порядковый номер кадра (POC) у refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]] такой же, как у RefPicListLX[i], и значение spPredFlagLX[xBlk][yBlk] равно 0, то выполняются следующие операции:
spMvLX[xBlk][yBlk]=mvLYIvRef[xIvRefPb][yIvRefPb];
spRefIdxLX[xBlk][yBlk]=i;
spPredLfagLX[xBlk][yBlk]=1;
curAvailableFlag=1.
Соответственно значению curAvailableFlag выполняется следующая операция:
- если значение curAvailableFlag равно 1, то используется следующая последовательность:
1. Если lastAvailableFlag равен 0, выполняются следующие операции:
- при изменении X от 0 до 1 выполняется следующая операция:
mxLXInterView=spMvLX[xBlk][yBlk];
refIdxLXInterView=spRefIdxLX[xBlk][yBlk];
availableFlagLXInterview=spPredFlag[xBlk][yBlk].
- если curSubBlockIdx больше 0, то при изменении k от 0 до (curSubBlockIdx-1) выполняются следующие операции:
- переменные i и j определяются следующим образом:
i=k%(nPSW/nSbW);
j=k/(nPSW/nSbW).
- при изменении X от 0 до 1 выполняется следующая операция:
spMvLX[i][j]=spMvLX[xBlk][yBlk];
spRefIdxLX[i][j]=spRefIdxLX[xBlk][yBlk];
spPredFlagLX[i][j]=spPredFlagLX[xBlk][yBlk].
2. Переменной lastAvailableFlag присваивается значение 1.
3. Значения xBlk и yBlk сохраняются в переменных xLastAvail и yLastAvail, соответственно.
- Если значение curAvailableFlag равно 0 и значение lastAvailableFlag равно 1, то при изменении X от 0 до 1 выполняется следующая операция:.
spMvLX[xBlk][yBlk]=spMvLX[xLastAvail][yLastAvail];
spRefIdxLX[xBlk][yBlk]=spRefIdxLX[xLastAvail][yLastAvail];
spPredFlagLX[xBlk][yBlk]=spPredFlagLX[xLastAvail][yLastAvail].
- переменной curSubBlockIdx присваивается значение curSubBlockIdx+1.
Далее таблица 1 описывается подробно.
Как показано в таблице 1, в модуль межкадрового предсказания вводятся положение левого верхнего угла текущего блока предсказания, ширина и высота текущего блока предсказания, индекс опорного ракурса и вектор невязки. При этом положение левого верхнего угла текущего блока предсказания может быть обозначено как (xPb, yPb), где xPb может означать координату текущего блока предсказания на оси x, а yPb может означать координату текущего блока предсказания на оси y. Ширина текущего блока предсказания может быть обозначена как nPbW, а высота текущего блока предсказания может быть обозначена как nPbH. Индекс опорного ракурса может быть обозначен как refViewIdx, а вектор невязки как mvDisp. При этом модуль межкадрового предсказания может соответствовать вышеописанному модулю межкадрового предсказания кодера/ декодера изображения.
Как показано на фиг. 17, после завершения операции определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием подэлемента предсказания опорного блока, модуль межкадрового предсказания выдает флаг, сигнализирующий о готовности возможного временного межракурсного вектора движения к использованию, возможный временной межракурсный вектор движения и опорный кадр, содержащийся в списке опорных кадров. При этом флаг, сигнализирующий о готовности возможного временного межракурсного вектора движения к использованию, может быть обозначен как availableFlagLXInterView, а указанный возможный временной межракурсный вектор движения может быть обозначен как mvLXInterView. Указанный список опорных кадров может быть обозначен как RefPicListLX, а ссылочный индекс, указывающий опорный кадр, содержащийся в указанном списке опорных кадров, может быть обозначен как refIdxLXInterView. В обозначениях availableFlagLXInterView, mvLXInterView, RefPicListLX и refIdxLXInterView кодом LX может быть код списка 0 опорных кадров (List 0, L0) или код списка 1 опорных кадров (List 1, L1).
Далее описывается способ определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием подэлемента предсказания опорного блока, имеющий целью определение модулем межкадрового предсказания вышеописанных выходных данных по вышеописанным входным данным.
Перед определением информации движения, относящейся к подэлементу предсказания текущего блока, с использованием подэлемента предсказания опорного блока модуль межкадрового предсказания выполняет присваивание начальных значений. При этом для availableFlagLXInterView задается значение 0, для mvLXInterView значение (0,0), а для refIdxLXInterView значение -1. При выполнении присваивания начальных значений модулем межкадрового предсказания также присваиваются начальные значения ширине и высоте подэлемента предсказания. При этом ширина подэлемента предсказания может быть обозначена как nSbW, а высота подэлемента предсказания как nSbH. Конкретный способ присваивания начальных значений переменным nSbW и nSbH дается нижеприведенной формулой 1.
[Формула 1]
.
Здесь SubPbSize обозначает размер (включающий высоту и ширину) подэлемента предсказания, указываемого набором параметров изображения (VPS), а nuh_layer_id обозначает индекс, идентифицирующий уровень (к примеру, какой это опорный ракурс). Функция Min(), выдающая наименьшую из входных переменных, может быть определена согласно формуле 2.
[Формула 2]
.
Модуль межкадрового предсказания может присваивать начальные значения не только вышеуказанным переменным, но и информации, идентифицирующей подэлемент предсказания текущего блока и яркостный блок предсказания в положении (xRef, yRef) в межракурсном опорном кадре, и информации, указывающей на наличие информации движения, сохраненной в хранилище.
При этом яркостному блоку предсказания в положении (xRef, yRef) в межракурсном опорном кадре присваивается значение блока в кадре, имеющем такой же индекс ракурса, как индекс опорного ракурса в текущем элементе доступа. Яркостный блок предсказания в положении (xRef, yRef) в межкадровом опорном изображении обозначается как ivRefPic, а под указанным элементом доступа понимается элемент, в котором выполняется кодирование/ декодирование изображения. Этот элемент доступа содержит изображения с различными ракурсами, имеющими одинаковый порядковый номер кадра (picture order count, POC). Например, при наличии трех ракурсов один элемент доступа может содержать обычное изображение и/ или изображение информации глубин первого ракурса, обычное изображение и/ или изображение информации глубин второго ракурса и обычное изображение и/ или изображение информации глубин третьего ракурса. Индекс опорного ракурса может быть обозначен как refViewIdx, а индекс ракурса как ViewIdx. При этом под ViewIdx может пониматься ракурс текущего изображения.
При этом информации для идентификации подэлемента предсказания текущего блока при присваивании начальных значений может быть присвоено значение 0, а информация идентификации подэлемента предсказания текущего блока может быть обозначена как curSubBlockIdx. Также задается информация для указания наличия информации движения, сохраненной в хранилище, которая может быть обозначена как lastAvalableFlag, с начальным значением 0.
После присваивания начальных значений описанным выше переменным модуль межкадрового предсказания выполняет следующую операцию при изменении yBlk от 0 до (nPbH/nSbH-1) и изменении xBlk от 0 до (nPbW/nSbW-1). Здесь xBlk обозначает координату x блока, а yBlk обозначает координату y блока.
Вначале модуль межкадрового предсказания присваивает начальное значение информации, служащей для указания на необходимость предсказания информации движения из подэлемента предсказания опорного блока, флагу предсказания указанного подэлемента предсказания, информации движения, относящейся к указанному подэлементу предсказания, и ссылочному индексу указанного подэлемента предсказания. Конкретно, информации, служащей для указания на необходимость предсказания информации движения из подэлемента предсказания опорного блока, может быть присвоено значение 0. При этом информация, служащая для указания на необходимость предсказания информации движения из подэлемента предсказания опорного блока, может быть обозначена как curAvailableFlag. Флагу предсказания подэлемента предсказания может быть присвоено значение 0, и этот флаг предсказания подэлемента предсказания может быть обозначен как spPredFlagL1. С целью представления координат блока флаг подэлемента предсказания может быть обозначен как spPredFlagL1[ xBlk ][ yBlk ]. Вектору движения подэлемента предсказания присваивается значение (0, 0), и этот вектор движения подэлемента предсказания может быть обозначен как spMvLX. Ссылочному индексу указанного подэлемента предсказания может быть присвоено значение -1, и этот ссылочный индекс подэлемента предсказания может быть обозначен как spRefIdxLX. С целью представления координат блока ссылочный индекс подэлемента предсказания может быть обозначен как spRefIdxLX[xBlk][yBlk].
Положение (xRef, yRef) опорного блока может быть задано в соответствии с нижеприведенной формулой 3.
[Формула 3]
Здесь xRef обозначает координату x положения опорного блока, а yRef обозначает координату y положения опорного блока. Через PicWidthInSamplesL обозначена ширина в текущем кадре, через PicHeightInSamplesL обозначена высота в текущем кадре. Функция Clip3() может быть определена в соответствии с нижеприведенной формулой 4.
[Формула 4]
.
В случае кодирования межракурсного опорного блока во внутрикадровом режиме выполняется следующая операция при изменении X от 0 до 1. Под межракурсным опорным блоком понимается яркостный блок предсказания в положении (xRef, yRef) в межракурсном опорном кадре, указываемом ivRefPic, и этот межракурсный опорный блок может быть обозначен как ivRefPb. Иными словами, ivRefPb обозначает яркостный блок предсказания в положении (xRef, yRef) в межракурсном опорном кадре, указываемом ivRefPic, а ivRefPic обозначает межракурсный опорный кадр. Положению левого верхнего угла опорного блока, указываемого ivRefPb, может быть присвоено значение (xIvRefPb, yIvRefPb).
Если X равен 0 или текущим слайсом является слайс B, то каждой переменной присваивается новое значение в соответствии с Y (значение Y изменяется от X до (1-X)) следующим образом. Переменной refPicListLYIvRef присваивается значение RefPicListLY в кадре, указываемом ivRefPic, где RefPicListLY обозначает список опорных кадров. Флагу predFlagLYIvRef[ x ][ y ] присваивается значение PredFlagLY[ x ][ y ] в кадре, указываемом ivRefPic, где PredFlagLY обозначает идентификатор, указывающий список опорных кадров. Переменной mvLYIvRef[ x ][ y ] присваивается значение MvLY[ x ][ y ] в кадре, указываемом ivRefPic, где MvLY обозначает вектор движения. Аналогично, переменной refIdxLYIvRef[ x ][ y ] присваивается значение RefIdxLY[ x ][ y ] в кадре, указываемом ivRefPic, где через RefIdxLY обозначен ссылочный индекс.
При этом, если значение predFlagLYIvRef[ xIvRefPb ][ yIvRefPb ] равно 1, то может применяться нижеприведенная формула 5 при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке опорных кадров).
[Формула 5]
.
В соответствии с таблицей 1, в случае, когда curAvailableFlag равен 1 и в случае, когда curAvailableFalg равен 0, выполняются, соответственно, следующие операции.
Если curAvailableFlag равен 1, то модуль межкадрового предсказания выполняет следующую операцию.
1. Если lastAvailableFlag равен 0, то может применяться нижеприведенная формула 6 при изменении X от 0 до 1.
[Формула 6]
.
Если lastAvailableFlag равен 0, а curSubBlockIdx больше 0, то согласно нижеприведенной формуле 7 могут вычисляться переменные i и j при изменении k от 0 до (curSubBlockIdx - 1).
[Формула 7]
.
В этом случае может применяться нижеприведенная формула 8 при изменении X от 0 до 1.
[Формула 8]
.
2. Выполнив вышеприведенную последовательность операций, модуль межкадрового предсказания изменяет значение lastAvailableFlag на значение 1.
3. Затем модуль межкадрового предсказания сохраняет значения xBlk и yBlk в переменных xLastAvail и yLastAvail, соответственно.
Если значение curAvailableFlag равно 1 и значение lastAvailableFlag равно 1, то модуль межкадрового предсказания использует нижеприведенную формулу 9 при изменении X от 0 до 1.
[Формула 9]
После выполнения всех описанных выше операций переменной curSubBlockIdx присваивается значение curSubBlockIdx+1.
Способ определения информации движения, относящейся к подэлементу предсказания текущего блока, описанный выше совместно с фиг. 17, при невозможности определения информации движения из подэлемента предсказания опорного блока использует информацию движения, относящуюся к подэлементу предсказания опорного блока, обращение к которому осуществлялось ранее (или будет осуществляться позже). Поэтому в способе определения информации движения в соответствии с фиг. 17 обязательно должно использоваться обращение к подэлементу предсказания из другого опорного блока, и, соответственно, данный способ является зависимым. Зависимый способ определения информации движения плохо подходит для параллельных схем обработки, подробно описанных с использованием фиг. 18.
Фиг. 18 представляет собой иллюстрацию примера операции параллельного определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием подэлемента предсказания опорного блока.
На фиг. 18 через Ref обозначен опорный блок, а элементы Ref 0, 1, 2, 3, 4, 5, 6 и 7 представляют собой, соответственно, подэлементы 0, 1, 2, 3, 4, 5, 6 и 7 предсказания опорного блока. Через Cur обозначен текущий блок, а Cur 0, 1, 2, 3, 4, 5, 6 и 7 представляют собой, соответственно, подэлементы 0, 1, 2, 3, 4, 5, 6 и 7 предсказания текущего блока. Символ X в позициях Ref 2, 3, 4 и 5 означает, что подэлементы предсказания 2, 3, 4 и 5 опорного блока недоступны при определении информации движения.
В варианте осуществления в соответствии с фиг. 18 модуль межкадрового предсказания для определения информации движения из подэлемента предсказания, из которого определение информации движения невозможно, выполняет поиск подэлемента предсказания, из которого информация движения может быть определена, как описано выше. Соответственно, модуль межкадрового предсказания не может независимо определять информацию движения для каждого подэлемента предсказания текущего блока, и вышеописанную операцию определения информации движения трудно выполнять параллельно.
Фиг. 19 представляет собой иллюстрацию примера операции поиска подэлемента предсказания, пригодного для использования, при расположении этого подэлемента предсказания в правом нижнем углу опорного блока.
На фиг. 19 каждый квадрат обозначает подэлемент предсказания; квадрат, выделенный жирными линиями, обозначает пригодный для определения информации движения подэлемент предсказания, а квадраты, ограниченные тонкими сплошными линиями, обозначают подэлементы предсказания, непригодные для определения информации движения. Стрелка, выполненная штриховой линией, показывает порядок поиска информации движения.
Если подэлемент предсказания, из которого может быть определена информация движения, находится в правом нижнем углу опорного блока, как это показано на фиг. 19, то для отыскания подэлемента предсказания, из которого может быть определена информация движения, придется выполнить последовательный перебор всех подэлементов предсказания по штриховой стрелке, начиная с левого верхнего угла опорного блока. Обычно неизвестно, какой подэлемент предсказания и в каком опорном блоке может быть использован для определения информации движения. Соответственно, для отыскания подэлемента предсказания, который может использоваться для определения информации движения, приходится последовательно перебирать подэлементы предсказания опорного блока, начиная с первого подэлемента предсказания опорного блока.
Однако способ определения информации движения, показанный на фиг. 19, для отыскания пригодного к использованию подэлемента предсказания требует проверки всех подэлементов предсказания в опорном блоке, что вызывает частые обращения к памяти. Если при этом информация движения содержится лишь в небольшом числе подэлементов предсказания опорного блока, то в основном проверяются подэлементы предсказания, не содержащие полезной информации. В частности, если ни один из подэлементов предсказания в опорном блоке не может быть использован для определения информации движения, то отыскание пригодных подэлементов предсказания в опорном блоке приводит лишь к бесполезным обращениям к памяти. При этом «отсутствие информации движения» означает, что для текущего блока не удалось обнаружить похожую область в опорном блоке соседнего кадра.
Соответственно, когда информация движения содержится лишь в нескольких подэлементах предсказания опорного блока или не содержится ни в одном подэлементе предсказания опорного блока, кодирование/ декодирование текущего блока с использованием межкадрового предсказания может дать более высокую эффективность. Иными словами, в случае, когда информация движения содержится лишь в нескольких подэлементах предсказания опорного блока или не содержится ни в одном подэлементе предсказания опорного блока, для выполнения кодирования/ декодирования текущего блока более рациональным может оказаться поиск похожей области в соседнем пикселе текущего блока.
Фиг. 20 представляет собой схематичную иллюстрацию затрат времени, требуемых для определения информации движения по подэлементам предсказания.
Как показано на фиг. 20, если время, необходимое для определения информации движения из одного подэлемента предсказания, равно T, а количество подэлементов предсказания в опорном блоке равно N, то время, необходимое для определения всей информации движения из опорного блока, равно NxT. Вышеупомянутый способ определения информации движения обладает зависимостью от данных и приводит к частым обращениям к памяти. Зависимые от данных способы определения информации движения не дают возможности независимого определения информации движения из каждого подэлемента предсказания, и поэтому для определения информации движения из одного подэлемента предсказания необходимо дожидаться завершения определения информации движения из другого подэлемента предсказания. Как следствие, зависимые от данных способы определения информации движения могут приводить к задержкам при кодировании/ декодировании.
В итоге описанный выше способ определения информации движения не дает возможности использования параллельной обработки данных для одновременного определения информации движения, а в силу своей архитектуры данный способ может приводить к частым обращениям к памяти, что снижает эффективность использования памяти.
Для устранения вышеуказанных недостатков в настоящем изобретении предлагаются устройство и способ для устранения зависимости при определении информации движения. На фиг. 21 показан пример конфигурации модуля межкадрового предсказания в соответствии с настоящим изобретением. Способ определения информации движения в соответствии с вариантом осуществления настоящего изобретения подробно описывается со ссылкой на фиг. 22-26.
Фиг. 21 представляет собой структурную схему, иллюстрирующую конфигурацию модуля 2100 межкадрового предсказания в соответствии с настоящим изобретением.
Как показано на фиг. 21, модуль 2100 межкадрового предсказания может содержать модуль 2110 хранения и модуль 2120 определения. Под модулем 2100 межкадрового предсказания может пониматься описанный выше модуль 710 межкадрового предсказания в кодере трехмерного изображения или модуль 850 межкадрового предсказания в декодере трехмерного изображения. Модуль 2100 межкадрового предсказания, показанный на фиг. 21, может использоваться в вышеописанной операции кодирования/ декодирования изображения.
Модуль 2110 хранения отмечает информацию движения и сохраняет ее в хранилище. Модуль 2110 хранения для получения сохраняемой информации движения может использовать информацию движения, имеющуюся в некотором положении опорного блока. В настоящем изобретении этим положением может быть центр опорного блока или (под)элемента предсказания, покрывающего центр опорного блока. Информации движения, сохраненной в модуле 2110 хранения, может быть присвоено начальное значение. Если информация движения не может быть сохранена в хранилище, то операция определения информации движения по подэлементам предсказания может быть исключена. При исключении операции определения информации движения по подэлементам предсказания межкадровое предсказание может выполняться в соответствии с вышеприведенным описанием. Модуль 2110 хранения более подробно описывается далее.
Модуль 2120 определения выполняет операцию определения информации движения из подэлемента предсказания текущего блока. При этом модуль 2120 определения выполнен с возможностью выполнения, в основном, вышеописанной операции определения информации движения. Однако на случай, когда подэлемент предсказания опорного блока, соответствующий первому подэлементу предсказания текущего блока, не содержит информацию движения, предлагаемый в настоящем изобретении модуль 2120 определения выполнен с возможностью поиска подэлемента предсказания опорного блока, содержащего информацию движения, и с возможностью вместо определения информации движения, относящейся к первому подэлементу предсказания текущего блока, из подэлемента предсказания опорного блока, содержащего информацию движения, последующего определения информации движения, относящейся к первому подэлементу предсказания текущего блока, из информации движения, сохраненной в модуле хранения. Модуль 2120 определения более подробно описывается далее.
Далее со ссылкой на чертежи подробно описываются варианты осуществления настоящего изобретения.
Вариант 1 осуществления
Фиг. 22 представляет собой блок-схему, схематично иллюстрирующую способ определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием опорного блока в соответствии с вариантом осуществления настоящего изобретения.
В варианте 1 осуществления информацию движения, относящуюся к подэлементу предсказания текущего блока (текущему подэлементу) определяют на основании информации движения, относящейся к центру опорного блока. Вариант 1 осуществления может выполняться в кодере и декодере или в предсказывающем модуле или в модуле межкадрового предсказания кодера и декодера. Далее для упрощения описания вариант 1 осуществления реализуется модулем 2100 межкадрового предсказания, показанным на фиг. 21.
Как показано на фиг. 22, модуль 2100 межкадрового предсказания может определять положение центра опорного блока (S2200). Положение центра опорного блока может быть определено по нижеприведенной формуле 10. При этом опорным блоком может быть блок, находящийся в опорном кадре в том же положении, что и текущий блок, и опорный блок может иметь тот же размер, что и текущий блок.
[Формула 10]
Положение X = xPb+(nPbW>>1)
Положение Y = yPb+(nPbH>>1).
При этом xPb и yPb представляют собой положение левого верхнего угла текущего ЭП, nPbW ширину данного ЭП, а nPbH высоту данного ЭП.
Модуль 2100 межкадрового предсказания может проверять наличие информации движения в центре опорного блока (S2210). Положение центра опорного блока может быть указано в соответствии с вышеприведенным описанием.
Если в центре опорного блока нет информации движения, которую можно использовать, то, модуль 2100 межкадрового предсказания может завершать данную операцию определения информации движения.
Например, без наличия в центре опорного блока информации движения, которую можно использовать, модуль 2100 межкадрового предсказания может и не определить информацию движения, относящуюся к текущему блоку.
Если информация движения в центре опорного блока присутствует, то модуль 2100 межкадрового предсказания может сохранять эту информацию движения, присутствующую в центре опорного блока, в хранилище (S2220). Информацией движения, присутствующей в центре опорного блока, может быть информация движения, относящаяся к блоку предсказания, содержащему положение целостного элементарного значения, наиболее близкого к центру опорного блока. Конкретная операция сохранения информации движения модулем 2100 межкадрового предсказания была описана выше. Модуль 2100 межкадрового предсказания может определять информацию движения, относящуюся к текущему подэлементу предсказания, на основании указанной сохраненной информации движения, относящейся к опорному блоку.
Модуль 2100 межкадрового предсказания может проверять, содержит ли подэлемент предсказания опорного блока, соответствующий текущему подэлементу предсказания, информацию движения (S2240).
Если подэлемент предсказания опорного блока содержит информацию движения, то модуль 2100 межкадрового предсказания может вводить в текущий подэлемент предсказания информацию движения, относящуюся к указанному подэлементу предсказания опорного блока (S2250). Иными словами, модуль 2100 межкадрового предсказания может присваивать информации движения, относящейся к соответствующему текущему подэлементу предсказания, значение информации движения, относящейся к подэлементу предсказания опорного блока (например, вектор движения, индекс опорного кадра).
Если же подэлемент предсказания опорного блока не содержит доступной информации движения, то модуль 2100 межкадрового предсказания вводит в текущий подэлемент предсказания информацию движения опорного блока, сохраненную в хранилище (S2260). Иными словами, если информация движения, относящаяся к подэлементу предсказания опорного блока, соответствующего текущему подэлементу предсказания, недоступна, то модуль 2100 межкадрового предсказания может присваивать информации движения, относящейся к текущему подэлементу предсказания, значение информации движения, относящейся к центру опорного блока, сохраненной в шаге S2200.
Модуль 2100 межкадрового предсказания может проверять, является ли подэлемент предсказания опорного блока, соответствующий текущему подэлементу предсказания, последним подэлементом предсказания в этом опорном блоке (или, что то же самое по смыслу, является ли текущий подэлемент предсказания последним подэлементом предсказания в текущем блоке) (S2270). Если подэлемент предсказания опорного блока является последним подэлементом предсказания, то модуль 2100 межкадрового предсказания может завершать данную операцию определения информации движения.
Если же подэлемент предсказания опорного блока не является последним подэлементом предсказания, то модуль 2100 межкадрового предсказания с целью продолжения определения информации движения переходит к определению информации движения, относящейся к следующему подэлементу предсказания текущего блока (S2230).
Вышеописанная операция определения информации движения в соответствии с вариантом 1 осуществления может применяться к декодированию трехмерного изображения, как это показано в таблице 2.
Таблица 2
В данной операции используются следующие входные данные:.
- положение (xPb, yPb) левого верхнего угла текущего элемента предсказания;
- ширина (nPbW) и высота (nPbH) текущего элемента предсказания;
- индекс refViewIdx опорного ракурса;
- вектор mvDisp невязки.
В данной операции получаются следующие выходные данные:
- флаг availableFlagLXinterView для указания доступности возможного временного межракурсного вектора движения, где LX может быть списком опорных кадров L0 и L1;
- возможный временной межракурсный вектор mvLXInterView движения, где LX может быть списком L0 или L1 опорных кадров;
- ссылочный индекс refIdxLXInterView, указывающий опорный кадр, содержащийся в списке RefPicListLX опорных кадров, где LX может быть списком L0 или L1 опорных кадров.
LX может быть списком L0 или L1 опорных кадров. К списку LX применяется следующая операция.
- флагу availableFlagLXInterView присваивается начальное значение 0;
- вектору mvLXInterView движения присваивается начальное значение (0,0);
- ссылочному индексу refIdxLXInterView присваивается начальное значение -1.
Переменным nSbW и nSbH присваиваются начальные значения следующим образом:
nSbW=Min(nPbW, SubPbSize);
nSbH=Min(nPbH, SubPbSize),
где SubPbSize представляет собой размер, включающий высоту и ширину подэлемента предсказания, указываемого набором параметров (VPS).
Переменной ivRefPic в качестве начального значения присваивается значение, соответствующее кадру, имеющему то же значение ViewIdx, что refViewIdx в текущем элементе доступа.
Переменной curSubBlockIdx присваивается начальное значение 0.
Опорное положение (xRef, yRef) может быть определено следующим образом.
.
Переменной ivRefPic присваивается значение, соответствующее кадру, имеющему то же значение ViewIdx, что refViewIdx в текущем элементе доступа. Информация движения в опорном кадре может сохраняться в элементах, представляющих собой блоки пикселов 8x8. Корректирующими коэффициентами xRefFull и yRefFull может быть положение центра целостного элементарного значения опорного блока, указываемого с использованием mvDisp.
Блоком ivRefPb может быть блок предсказания, покрывающий положение (xRef, yRef) в ivRefPic.
Положение (xIvRefPb, yIvRefPb) определяет положение левого верхнего угла блока ivRefPb.
Кроме случаев, когда ivRefPb был кодирован во внутрикадровом режиме, при изменении Y от X до (1-X) может выполняться следующая операция:
- переменным refPixListLYIvRef, predFlagLYIvRef[x][y], mvLYIvRef[x][y] и refIdxLYIvRef[x][y] присваиваются, соответственно, значения переменных, соответствующих им в межракурсном опорном кадре ivRefPic, т.е. RefPicListLY, PredFlagLY[x][y], MvLY[x][y] и RefIdxLY[x][y].
- если значение predFlagLYIvRef[xIvRefPb][yIvRefPb] равно 1, то при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке опорных кадров) может выполняться следующая операция:
- если порядковый номер кадра (POC) у refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]] такой же, как у RefPicListLX[i], и значение availableFlagLXInterView равно 0, то выполняются следующие операции:
.
Если значение availableFlagL0InterView или значение availableFlagL1Interview равно 1, то выполняется следующая операция:
- при изменении yBlk от 0 до (nPbH/nSbH-1) и при изменении xBlk от 0 до (nPbW/nSbW-1) выполняется следующая операция:
- переменной curAvailableFlag присваивается начальное значение 0;
- при изменении X от 0 до 1 выполняется следующая операция:
- флагу spPredFlagL1[xBlk][yBlk] присваивается начальное значение 0;
- вектору spMvLX движения присваивается начальное значение (0,0);
- ссылочному индексу spRefIdxLX[xBlk][yBlk] присваивается начальное значение -1;
- положение (xRef, yRef) опорного блока определяется следующим образом:
xRef=Clip3(0, PicWidthInSamplesL-1);
xPb+xBlk*nSbW+nSbW/2+((mvDisp[0]+2)>>2));
yRef=Clip3(0, PicHeightInSamplesL-1);
yPb+yBlk*nSbH+nSbH/2+((mvDisp[1]+2)>>2)).
- переменная ivRefPb указывает на яркостный блок предсказания в положении (xRef, yRef) в межракурсном опорном кадре, указываемом ivRefPic.
- (xIvRefPb, yIvRefPb) указывает на положение левого верхнего угла опорного блока, указываемого ivRefPb.
- кроме случаев, когда ivRefPb был кодирован во внутрикадровом режиме, при изменении X от 0 до 1 выполняется следующая операция :
- если значение X равно 0 или текущим слайсом является слайс B, то при изменении Y от X до (1-X) выполняется следующая операция :
- переменным refPixListLYIvRef, predFlagLYIvRef[x][y], mvLYIvRef[x][y] и refIdxLYIvRef[x][y] присваиваются, соответственно, значения RefPicListLY, PredFlagLY[x][y], MvLY[x][y] и RefIdxLY[x][y] в кадре, указываемом ivRefPic;
- если значение predFlagLYIvRef[xIvRefPb][yIvRefPb] равно 1, то при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке опорных кадров) выполняется следующая операция:
- если порядковый номер кадра (POC) у refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]] такой же, как у RefPicListLX[i], и значение spPredFlagLX[xBlk][yBlk] равно 0, то выполняются следующие операции:
spMvLX[xBlk][yBlk]=mvLYIvRef[xIvRefPb][yIvRefPb];
spRefIdxLX[xBlk][yBlk]=i;
spPredLfagLX[xBlk][yBlk]=1;
curAvailableFlag=1.
- соответственно значению curAvailableFlag выполняется следующая операция:
- если curAvailableFlag равен 0, то при X, изменяющемся от 0 до 1, выполняются следующие операции:
.
- переменной curSubBlockIdx присваивается значение curSubBlockIdx+1.
Если значение availableFlagL0InterView и значение availableFlagL1InterView равны 0, то данная операция завершается.
Вариант 1 осуществления описывается еще раз по таблице 2.
Как указано в таблице 2, в модуль 2100 межкадрового предсказания вводятся положение левого верхнего угла текущего блока предсказания, ширина и высота текущего блока предсказания, индекс опорного ракурса и вектор невязки. При этом положение левого верхнего угла текущего блока предсказания может быть обозначено как (xPb, yPb). Ширина текущего блока предсказания может быть обозначена как nPbW, а высота текущего блока предсказания как nPbH. Индекс опорного ракурса может быть обозначен как refViewIdx, а вектор невязки как mvDisp.
После завершения операции определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием подэлемента предсказания опорного блока, модуль 2100 межкадрового предсказания может выдавать флаг, сигнализирующий о возможности межракурсного предсказания, межракурсный вектор движения и ссылочный индекс, указывающий опорный кадр, содержащийся в списке опорных кадров. При этом флаг, сигнализирующий о готовности возможного временного межракурсного вектора движения к использованию, может быть обозначен как availableFlagLXInterView, а указанный возможный временной межракурсный вектор движения может быть обозначен как mvLXInterView. Указанный список опорных кадров может быть обозначен как RefPicListLX, а ссылочный индекс, указывающий опорный кадр, содержащийся в указанном списке опорных кадров, может быть обозначен как refIdxLXInterView. В обозначениях availableFlagLXInterView, mvLXInterView, RefPicListLX и refIdxLXInterView кодом LX может быть код списка 0 опорных кадров (List 0, L0) или код списка 1 опорных кадров (List 1, L1).
Далее описывается способ определения информации движения, относящейся к подэлементу предсказания текущего блока, путем получения вышеописанных выходных данных по входным данным.
Вначале, перед определением информации движения, относящейся к подэлементу предсказания текущего блока, с использованием подэлемента предсказания опорного блока, модуль 2100 межкадрового предсказания выполняет присваивание начальных значений. При этом availableFlagLXInterView может быть присвоено значение 0, mvLXInterView значение (0,0), а refIdxLXInterView значение -1. При выполнении присваивания начальных значений модулем 2100 межкадрового предсказания также могут присваиваться начальные значения ширине и высоте подэлемента предсказания. При этом ширина подэлемента предсказания может быть обозначена как nSbW, а высота подэлемента предсказания как nSbH. Пример способа присваивания начальных значений переменным nSbW и nSbH дается формулой 11.
[Формула 11]
.
Здесь SubPbSize обозначает размер (включающий высоту и ширину) подэлемента предсказания, указываемого набором параметров изображения (VPS), а nuh_layer_id обозначает индекс, идентифицирующий уровень (к примеру, какой опорный ракурс им является). Min() представляет собой оператор, выдающий меньшую из входных переменных.
Модуль 2100 межкадрового предсказания может присваивать начальные значения не только вышеуказанным переменным, но и информацию, идентифицирующую подэлемент предсказания текущего блока и яркостный блок предсказания в положении (xRef, yRef) в межракурсном опорном кадре, и информацию, указывающую на наличие информации движения, сохраненной в хранилище.
При этом в качестве указанного межракурсного опорного кадра может быть взят кадр, имеющий индекс ракурса, например, индекс опорного ракурса в текущем элементе доступа. Межракурсный опорный кадр может быть обозначен как ivRefPic, а яркостный блок предсказания в положении (xRef, yRef) в межракурсном опорном кадре может быть обозначен как ivRefPb. Один элемент доступа содержит изображения с различными ракурсами, имеющими одинаковый порядковый номер кадра (POC). Индекс опорного ракурса может быть обозначен как refViewIdx, а указанный индекс ракурса как ViewIdx.
Указанным опорным положением может быть положение, указывающее блок предсказания, покрывающий центр опорного блока в соответствии с вариантом 1 осуществления. Для определения информации движения, относящейся к текущему подэлементу предсказания, может выполняться сохранение информации движения, относящейся к опорному ракурсу. Формула 12 представляет пример способа определения опорного положения (xRef, yRef).
[Формула 12]
.
Здесь XRefFull и yRefFull обозначают положение целостного элементарного значения, близкого к центру опорного блока. Иначе говоря, xRefFull и yRefFull соответственно обозначают координату x и координату y элементарного значения, находящегося в целочисленном положении.
Элементом ivRefPb может быть подэлемент предсказания или блок предсказания, покрывающий точку (xRef, yRef). Положение (xIvRefPb, yIvRefPb) яркостного элементарного значения может указывать левый верхний угол ivRefPb.
Кроме случаев, когда ivRefPb был кодирован/ декодирован во внутрикадровом режиме, могут применяться следующие операции (1) и (2) при изменении Y от X до (1-X).
Переменной refPicListLYIvRef присваивается значение RefPicListLY в межракурсном опорном изображении ivRefPic, флагу predFlagLYIvRef[ x ][ y ] присваивается значение PredFlag[ x ][ y ] в межракурсном опорном изображении ivRefPic, а переменной refIdxLYIvRef[ x ][ y ] присваивается значение RefIdxLY[ x ][ y ] в межракурсном опорном изображении ivRefPic.
Если значение predFlagLYIvRef[ xIvRefPb ][ yIvRefPb ] равно 1, то при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке X опорных кадров) выполняется следующая операция. Если POC (порядковый номер кадра) для refPicListLYIvRef[ refIdxLYIvRef[ xIvRefPb ][ yIvRefPb ] ] равен RefPicListLX[ i ] и availableFlagLXInterView равен 0, то может применяться формула 13.
[Формула 13]
.
Если значение vailableFlagL0InterView или значение availableFlagL1InterView равно 1, то модуль 2100 межкадрового предсказания выполняет описанную далее операцию при изменении yBlk от 0 до (nPbH/nSbH-1) и изменении xBlk от 0 до (nPbW/nSbW-1). При этом xBlk обозначает координату x, а yBlk обозначает координату y. Иными словами, когда можно определить информацию движения, доступную в центре опорного блока, модуль 2100 межкадрового предсказания может определять информацию движения по подэлементам предсказания.
Вначале модуль 2100 межкадрового предсказания может присваивать начальное значение информации, служащей для указания на необходимость предсказания информации движения из подэлемента предсказания опорного блока, флаг предсказания подэлемента предсказания, информацию движения, относящуюся к указанному подэлементу предсказания, и ссылочный индекс подэлемента предсказания.
При этом информация, служащая для указания на необходимость предсказания информации движения из подэлемента предсказания опорного блока, может быть обозначена как curAvailableFlag, флаг предсказания подэлемента предсказания как spPredFlagLX1, флаг подэлемента предсказания как spPredFlagLX[xBlk][yBlk], вектор движения подэлемента предсказания как spMvLX, ссылочный индекс подэлемента предсказания как spRefIdxLX, а ссылочный индекс определенного подэлемента предсказания как spRefIdxLX[xBlk][yBlk].
Положение (xRef, yRef) опорного блока переустанавливается по подэлементам предсказания, как в нижеприведенной формуле 14.
[Формула 14]
PicWidthInSamplesL обозначает ширину текущего изображения, а PicHeightInSamplesL обозначает высоту текущего изображения. Функция Clip3() была описана выше.
Затем, в случае кодирования межракурсного опорного блока во внутрикадровом режиме, выполняется следующая операция при изменении X от 0 до 1.
Если X равен 0 или текущим слайсом является слайс B, то каждой переменной присваивается новое значение в соответствии с Y (значение Y изменяется от X до (1-X)) следующим образом. Переменной refPicListLYIvRef может быть присвоено значение из списка опорных кадров RefPicListLY для кадра, указываемого переменной ivRefPic (т.е. для межракурсного опорного кадра). Переменной predFlagLYIvRef[ x ][ y ] присваивается значение PredFlagLY[ x ][ y ]. Через predFlagLY[ x ][ y ] обозначен список опорных кадров, который применяется в точке (x,y) в изображении, указываемом ivRefPic. Переменной mvLYIvRef[ x ][ y ] присваивается значение MvLY[ x ][ y ]. Через MvLY[ x ][ y ] обозначен вектор движения в точке (x,y) в изображении, указываемом ivRefPic. Переменной refIdxLYIvRef[ x ][ y ] присваивается значение RefIdxLY[ x ][ y ]. Через RefIdxLY[ x ][ y ] обозначен опорный пиксел в точке (x,y) в изображении, указываемом ivRefPic.
В случае, когда значение predFlagLYIvRef[ xIvRefPb ][ yIvRefPb ] равно 1, может применяться нижеприведенная формула 15 при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке опорных кадров), если POC для refPicListLYIvRef[ refIdxLYIvRef[ xIvRefPb ][ yIvRefPb ] ] равен RefPicListLX[ i ] и spPredFlagLX[ xBlk ][ yBlk ] равен 0.
[Формула 15]
.
Но если, даже после выполнения вышеописанной операции, значение curAvailableFlag осталось равным исходно установленному значению 0 (т.е. всегда, за исключением случаев, когда spRefIdxLX=i (к примеру, spRefIdxLx=-1) и spPredFlagLX=1 (к примеру, spPredFlagLX=-1)), можно сказать, что информация движения не может быть определена по подэлементам предсказания. Соответственно, модуль 2100 межкадрового предсказания может использовать формулу 16 при изменении X от 0 до 1.
Иными словами, если информацию движения из подэлемента предсказания опорного блока определить невозможно, то модуль 2100 межкадрового предсказания может определять информацию движения, относящуюся к подэлементу предсказания текущего блока, из информации движения, относящейся к центру опорного блока.
[Формула 16]
.
Наконец, после того, как все вышеописанные операции выполнены, переменной curSubBlockIdx присваивается значение curSubBlockIdx + 1, и если значения availableFlagL0InterView и availableFlagL1InterView равны 0, то операция определения информации движения в соответствии с вариантом осуществления 1 завершается.
Вариант 2 осуществления
Фиг. 23 представляет собой блок-схему, схематично иллюстрирующую способ определения информации движения, относящейся к подэлементу предсказания текущего блока, в соответствии с еще одним вариантом осуществления настоящего изобретения. В примере, показанном на фиг. 23, информация движения, относящейся к подэлементу предсказания текущего блока, может быть определена с использованием подэлемента предсказания, находящегося в центральном положении опорного блока.
В варианте 2 осуществления информация движения, относящаяся к подэлементу предсказания текущего блока, может быть определена на основании информации движения, относящейся к подэлементу предсказания, покрывающему центр опорного блока.
Пример, показанный на фиг. 23, может выполняться в кодере и декодере или в предсказывающем блоке кодера и декодера или в модуле 2100 межкадрового предсказания, показанном на фиг. 21. При этом, для упрощения описания, модуль 2100 межкадрового предсказания выполняет каждый шаг так, как показано на фиг. 23.
Как показано на фиг. 23, модуль 2100 межкадрового предсказания может определять положение подэлемента предсказания, находящегося в центре опорного блока (центрального подэлемента предсказания) (S2300). Под центральным подэлементом предсказания, находящимся в опорном блоке, понимается подэлемент предсказания, находящийся в центре опорного блока; центр опорного блока рассмотрен выше. Формула 17 представляет пример определения положения центрального подэлемента предсказания опорного блока.
[Формула 17]
Значение координаты X центра подэлемента предсказания =.
Значение координаты Y центра подэлемента предсказания =.
Здесь xPb и yPb указывают положение левого верхнего угла текущего элемента предсказания, nPbW ширину текущего элемента предсказания, а nPbH высоту текущего элемента предсказания.
Модуль 2100 межкадрового предсказания проверяет, содержит ли центральный подэлемент предсказания опорного блока информацию движения (S2310); положение центрального подэлемента предсказания опорного блока рассмотрено выше. Если в месте, где находится центральный подэлемент предсказания опорного блока, информация движения отсутствует, то модуль 2100 межкадрового предсказания может завершать данную операцию определения информации движения.
Если же в центральном подэлементе предсказания опорного блока информация движения имеется, то модуль 2100 межкадрового предсказания может сохранять эту информацию движения, имеющуюся в центре (S2320). Конкретная операция сохранения информации движения модулем 2100 межкадрового предсказания была описана выше.
Модуль 2100 межкадрового предсказания определяет информацию движения, относящуюся к текущему подэлементу предсказания. Модуль 2100 межкадрового предсказания может проверять, содержит ли подэлемент предсказания опорного блока, соответствующий текущему подэлементу предсказания, информацию движения (S2340).
Если указанный подэлемент предсказания опорного блока содержит информацию движения, то модуль 2100 межкадрового предсказания может вводить в текущий подэлемент предсказания информацию движения, содержащуюся в указанном подэлементе предсказания опорного блока (S2350). Если же подэлемент предсказания опорного блока не содержит информацию движения, то модуль 2100 межкадрового предсказания может вводить в текущий подэлемент предсказания (S2360) информацию движения, сохраненную в шаге S2320.
Модуль 2100 межкадрового предсказания может проверять, не является ли подэлемент предсказания опорного блока, для которого выполняется определение информации движения, последним подэлементом предсказания (S2370). Если указанный подэлемент предсказания опорного блока является последним подэлементом предсказания, то модуль 2100 межкадрового предсказания может завершать данную операцию определения информации движения текущего блока. Если же указанный подэлемент предсказания опорного блока не является последним подэлементом предсказания, то модуль 2100 межкадрового предсказания переходит к обработке следующего подэлемента предсказания текущего блока с целью продолжения определения информации движения (S2330).
Вышеописанная операция определения информации движения в соответствии с вариантом 1 осуществления 2 может применяться к декодированию трехмерных изображений, как это показано в таблице 3.
Таблица 3
В данной операции используются следующие входные данные:
- положение (xPb, yPb) левого верхнего угла текущего элемента предсказания;
- ширина (nPbW) и высота (nPbH) текущего элемента предсказания;
- индекс refViewIdx опорного ракурса;
- вектор mvDisp невязки.
В данной операции получаются следующие выходные данные:
- флаг availableFlagLXInterView для указания доступности возможного временного межракурсного вектора движения, где LX может быть списком L0 или L1 опорных кадров;
- возможный временной межракурсный вектор mvLXInterView движения, где LX может быть списком L0 или L1 опорных кадров;
- ссылочный индекс refIdxLXInterView, указывающий опорный кадр, содержащийся в списке RefPicListLX опорных кадров, где LX может быть списком L0 или L1 опорных кадров.
LX может быть списком L0 или L1 опорных кадров. К списку LX применяется следующая операция.
- флагу availableFlagLXInterView присваивается начальное значение 0;
- вектору mvLXInterView движения присваивается начальное значение (0, 0);
- ссылочному индексу refIdxLXInterView присваивается начальное значение -1.
Переменным nSbW и nSbH присваиваются начальные значения следующим образом:
.
где SubPbSize представляет собой размер, включающий высоту и ширину подэлемента предсказания, указываемого набором параметров (VPS).
Переменной ivRefPic в качестве начального значения присваивается значение, соответствующее кадру, имеющему то же значение ViewIdx, что refViewIdx в текущем элементе доступа.
Переменной curSubBlockIdx присваивается начальное значение 0.
Опорное положение (xRef, yRef) может быть определено следующим образом:
.
Переменной ivRefPic присваивается значение, соответствующее кадру, имеющему то же значение ViewIdx, что refViewIdx в текущем элементе доступа.
Переменной ivRefPb присваивается значение, соответствующее блоку предсказания, покрывающему положение (xRef, yRef) в ivRefPic.
Переменной (xIvRefPb, yIvRefPb) присваивается значение положения левого верхнего угла опорного блока, указываемого ivRefPb.
Кроме случаев, когда ivRefPb был кодирован во внутрикадровом режиме, при изменении X от 0 до 1 может применяться следующая операция:
- если X равен 0 или текущим слайсом является слайс B, то при изменении Y от X до (1-X) выполняется следующая операция:
- переменным refPixListLYIvRef, predFlagLYIvRef[x][y], mvLYIvRef[x][y] и refIdxLYIvRef[x][y] присваиваются, соответственно, значения переменных, соответствующих им в межракурсном опорном кадре ivRefPic, т.е. RefPicListLY, PredFlagLY[x][y], MvLY[x][y] и RefIdxLY[x][y];
- если значение predFlagLYIvRef[xIvRefPb][yIvRefPb] равно 1, то при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке опорных кадров) может выполняться следующая операция:
- если порядковый номер кадра (POC) у refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]] такой же, как у RefPicListLX[i], и значение centerPredFlag равно 0, то выполняются следующие операции:
.
Если значение centerAvailableFlag равно 1, то выполняется следующая операция:
- при изменении yBlk от 0 до (nPbH/nSbH-1) и при изменении xBlk от 0 до (nPbW/nSbW-1) выполняется следующая операция:
- переменной curAvailableFlag присваивается начальное значение 0;
- при изменении X от 0 до 1 выполняется следующая операция:
- флагу spPredFlagL1[xBlk][yBlk] присваивается начальное значение 0;
- вектору spMvLX движения присваивается начальное значение (0,0);
- ссылочному индексу spRefIdxLX[xBlk][yBlk] присваивается начальное значение -1;
- положение (xRef, yRef) опорного блока определяется следующим образом:
xRef=Clip3(0, PicWidthInSamplesL-1), xPb+xBlk*nSbW+nSbW/2+((mvDisp[0]+2)>>2));
yRef=Clip3(0, PicHeightInSamplesL-1), yPb+yBlk*nSbH+nSbH/2+((mvDisp[1]+2)>>2));
- переменная ivRefPb указывает на яркостный блок предсказания в положении (xRef, yRef) в межракурсном опорном кадре, указываемом ivRefPic;
- (xIvRefPb, yIvRefPb) указывает на положение левого верхнего угла опорного блока, указываемого ivRefPb;
- кроме случаев, когда ivRefPb был кодирован во внутрикадровом режиме, при изменении X от 0 до 1 выполняется следующая операция :
- если значение X равно 0 или текущим слайсом является слайс B, то при изменении Y от X до (1-X) выполняется следующая операция :
- переменным refPixListLYIvRef, predFlagLYIvRef[x][y], mvLYIvRef[x][y] и refIdxLYIvRef[x][y] присваиваются, соответственно, значения RefPicListLY, PredFlagLY[x][y], MvLY[x][y] и RefIdxLY[x][y] в кадре, указываемом ivRefPic.
- если значение predFlagLYIvRef[xIvRefPb][yIvRefPb] равно 1, то при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке опорных кадров) выполняется следующая операция:
- если порядковый номер кадра (POC) у refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]] такой же, как у RefPicListLX[i], и значение spPredFlagLX[xBlk][yBlk] равно 0, то выполняются следующие операции:
.
- соответственно значению curAvailableFlag выполняется следующая операция:
- если curAvailableFlag равен 0, то при X, изменяющемся от 0 до 1, выполняются следующие операции:
.
- переменной curSubBlockIdx присваивается значение curSubBlockIdx+1.
В противном случае, т.е. если значение centerAvailableFlag равно 0, данная операция завершается.
Вариант 2 осуществления описывается еще раз по таблице 3.
Переменные в таблице 3 те же, что и в таблице 2.
Модуль 2100 межкадрового предсказания перед определением информации движения, относящейся к текущему подэлементу предсказания, с использованием подэлемента предсказания опорного блока, выполняет присваивание начальных значений. Это присваивание начальных значений выполняется так же, как описано выше при рассмотрении таблицы 2.
Модуль межкадрового предсказания может указывать положение центрального подэлемента предсказания опорного блока. Положение блока, на который осуществляется ссылка, может определяться на основании опорного положения (xRef, yRef), определяемого в соответствии с формулой 18.
[Формула 18]
ivRefPic представляет собой кадр с тем же ViewIdx, что и refViewIdx в текущем элементе доступа, а ivRefPb представляет собой блок предсказания или подэлемент предсказания, покрывающий определенную по формуле 19 точку (xRef, yRef) в ivRefPic.
Точка (xIvRefPb, yIvRefPb) задает положение левого верхнего угла блока ivRefPb.
Если ivRefPb не был кодирован/ декодирован во внутрикадровом режиме и значение X равно 0 или текущим слайсом является слайс B, то при изменении Y от X до (1-X) выполняется следующая операция.
Как указано выше при рассмотрении таблицы 2, переменной refPicListLYIvRef присваивается значение RefPicListLY, predFlagLYIvRef[ x ][ y ] значение PredFlag[ x ][ y ], а refIdxLYIvRef[ x ][ y ] значение RefIdxLY[ x ][ y ].
Если значение predFlagLYIvRef[ xIvRefPb ][ yIvRefPb ] равно 1, то при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке X опорных кадров) применяется формула 19 в случае, когда POC (порядковый номер изображения) для refPicListLYIvRef[ refIdxLYIvRef[ xIvRefPb ][ yIvRefPb ] ] равен RefPicListLX[ i ] и значение availableFlagLXInterView равно 0.
[Формула 19]
.
В формуле 1 флаг centerAvailableFlag указывает на возможность использования центрального подэлемента предсказания опорного блока, а под centerMvLX понимается вектор движения для центрального подэлемента предсказания опорного блока. Далее, centerRefIdxLX обозначает ссылочный индекс для центрального подэлемента предсказания опорного блока, а centerPredFlagLX обозначает список опорных кадров центрального подэлемента предсказания. При этом centerAvailableFlag, centerMvLX, centerRefIdxLX и/ или centerPredFlagLX представляют собой информацию движения, относящуюся к центральному подэлементу предсказания. Иными словами, модуль 2100 межкадрового предсказания может сохранять в хранилище информацию движения, относящуюся к центральному подэлементу предсказания опорного блока, определенную по формуле 19.
После присваивания указанным переменным значений в соответствии с вышеприведенным описанием, если значение centerAvailableFlag равно 1, то модуль 2100 межкадрового предсказания выполняет описанную далее операцию при изменении yBlk от 0 до (nPbH/nSbH-1) и изменении xBlk от 0 до (nPbW/nSbW-1). Здесь xBlk обозначает координату x блока, а yBlk обозначает координату y блока. Иными словами, когда можно определить информацию движения, доступную из подблока, находящегося в центре опорного блока, модуль 2100 межкадрового предсказания может определять информацию движения, относящуюся к текущему блоку, по подэлементам предсказания.
Вначале модуль 2100 межкадрового предсказания присваивает начальное значение информации, служащей для указания на необходимость предсказания информации движения из подэлемента предсказания опорного блока, флаг предсказания подэлемента предсказания, информацию движения, относящуюся к указанному подэлементу предсказания, и ссылочный индекс подэлемента предсказания. Это присваивание начальных значений выполняется так же, как описано выше при рассмотрении таблицы 2.
Смена положения (xRef, yRef) опорного блока выполняется, как видно из формулы 20, для каждого подэлемента предсказания.
[Формула 20]
Здесь xRef обозначает координату x положения опорного блока, а yRef обозначает координату y положения опорного блока. PicWidthInSamplesL обозначает ширину текущего изображения, а PicHeightInSamplesL обозначает высоту текущего изображения. Функция Clip3() была описана выше.
Если межракурсный опорный блок закодирован во внутрикадровом режиме, то модуль 2100 межкадрового предсказания выполняет следующую операцию при изменении X от 0 до 1.
Если значение X равно 0 или текущим слайсом является слайс B, то каждой переменной присваивается новое значение в соответствии с Y (значение Y изменяется от X до (1-X)) следующим образом. Это присваивание начальных значений выполняется так же, как описано выше при рассмотрении таблицы 2.
В случае, когда значение predFlagLYIvRef[ xIvRefPb ][ yIvRefPb ] равно 1, может применяться нижеприведенная формула 21 при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке опорных кадров), если POC для refPicListLYIvRef[ refIdxLYIvRef[ xIvRefPb ][ yIvRefPb ] ] равен RefPicListLX[ i ] и spPredFlagLX[ xBlk ][ yBlk ] равен 0.
[Формула 21]
.
Но если, даже после выполнения вышеописанной операции, значение curAvailableFlag осталось равным исходно установленному значению 0 (т.е. всегда, за исключением случаев, когда spRefIdxLX=i (к примеру, spRefIdxLx=-1) и spPredFlagLX=1 (к примеру, spPredFlagLX=-1)), можно сказать, что информация движения не может быть определена по подэлементам предсказания. Соответственно, модуль 2100 межкадрового предсказания может использовать формулу 22 при изменении X от 0 до 1.
Иными словами, если информацию движения из подэлемента предсказания опорного блока определить невозможно, то модуль 2100 межкадрового предсказания может определять информацию движения, относящуюся к подэлементу предсказания текущего блока, из информации движения, относящейся к центральному подэлементу.
[Формула 22]
.
Наконец, после того, как все вышеописанные операции выполнены, переменной curSubBlockIdx присваивается значение curSubBlockIdx + 1, и если значения availableFlagL0InterView и availableFlagL1InterView равны 0, то операция определения информации движения в соответствии с вариантом 2 осуществления завершается.
Фиг. 24 представляет собой иллюстрацию примера операции определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием информации движения из некоторого положения.
На фиг. 24 блоки верхнего ряда представляют собой подэлементы предсказания опорного блока, а блоки нижнего ряда представляют собой подэлементы предсказания текущего блока. X обозначает некоторое положение, и информация движения из положения X сохранена в хранилище. Здесь под информацией движения в некотором положении на фиг. 24 может пониматься как информация движения в центре опорного блока, как в варианте 1 осуществления, так и информация движения, относящаяся к центральному подэлементу предсказания опорного блока, как в варианте 2 осуществления.
При определении информации движения, относящейся к подэлементу предсказания текущего блока, с использованием информации движения из некоторого положения, информация движения из этого положения может использоваться для каждого подэлемента предсказания в опорном блоке. Иными словами, возможно одновременное определение информации движения, относящейся к множеству подэлементов предсказания текущего блока, с использованием информации движения из некоторого положения, при котором возможно устранение недостатка, выражающегося в зависимости от данных. Соответственно, при использовании информации движения из некоторого положения, модуль 2100 межкадрового предсказания может определять информацию движения параллельно.
Как указано выше, в вариантах 1 и 2 осуществления изобретения информация движения определяется с использованием информации движения, имеющейся в каком-либо месте. Соответственно, способы определения информации движения в соответствии с вариантами 1 и 2 осуществления делают возможным независимое определение информации движения, относящейся к каждому подэлементу предсказания в опорном блоке. Иными словами, в вариантах 1 и 2 осуществления изобретения для нахождения подэлементов предсказания, из которых может быть определена информация движения, не требуется выполнение последовательного поиска подэлементов предсказания, из которых может быть определена информация движения, и если для определения информации движения невозможно использовать первый подэлемент предсказания опорного блока, то в вариантах 1 и 2 осуществления изобретения информация движения, относящаяся к подэлементу предсказания текущего блока, определяется с использованием заранее заданной информации движения. Таким образом, при определении информации движения в соответствии с вариантами 1 и 2 осуществления устраняется зависимость от данных, что делает возможным распараллеленное определение информации движения, относящейся к каждому подэлементу предсказания. Кроме того, при определении информации движения в соответствии с вариантами 1 и 2 осуществления устраняются излишние обращения к памяти, присущие существующим способам определения информации движения, чем сокращается число актов обращения к памяти.
Вариант 3 осуществления
Фиг. 25 представляет собой блок-схему, иллюстрирующую способ определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием некоторого значения информации движения в соответствии с еще одним вариантом осуществления настоящего изобретения.
Как показано на фиг. 25, в варианте 3 осуществления предлагается способ задания стандартной информации движения и определения информации движения, относящейся к текущему подэлементу предсказания, из этой стандартной информации движения в случае, когда информацию движения невозможно определить из подэлемента предсказания опорного блока. При этом под стандартной информацией движения может пониматься нулевой вектор. Конкретный способ определения информации движения в соответствии с вариантом 3 осуществления описывается далее.
Модуль 2100 межкадрового предсказания может сохранять стандартную информацию движения в хранилище (S2500). Конкретная операция сохранения информации движения модулем 2100 межкадрового предсказания была описана выше.
Затем модуль 2100 межкадрового предсказания может определять информацию движения, относящуюся к текущему подэлементу предсказания. Модуль 2100 межкадрового предсказания может проверять, содержит ли подэлемент предсказания опорного блока, соответствующий текущему подэлементу предсказания, информацию движения (S2520).
Если подэлемент предсказания опорного блока содержит информацию движения, то модуль 2100 межкадрового предсказания может вводить в текущий подэлемент предсказания информацию движения, относящуюся к указанному подэлементу предсказания опорного блока (S2530). Если же подэлемент предсказания опорного блока не содержит информацию движения, то модуль 2100 межкадрового предсказания может вводить информацию движения, сохраненную в хранилище, в текущий подэлемент предсказания (S2540).
Модуль 2100 межкадрового предсказания может проверять, не является ли подэлемент предсказания опорного блока, для которого выполняется определение информации движения, последним подэлементом предсказания (S2550). Если указанный подэлемент предсказания опорного блока является последним подэлементом предсказания, то модуль 2100 межкадрового предсказания может завершать данную операцию определения информации движения. Если же подэлемент предсказания опорного блока не является последним подэлементом предсказания, то модуль 2100 межкадрового предсказания с целью продолжения определения информации движения может переходить к определению информации движения, относящейся к следующему подэлементу предсказания опорного блока (S2510).
Вышеописанная операция определения информации движения в соответствии с вариантом 3 осуществления может применяться к тексту 2 проекта 3D-HEVC, как показано в таблице 4.
Таблица 4
В данной операции используются следующие входные данные:.
- положение (xPb, yPb) левого верхнего угла текущего элемента предсказания;
- ширина (nPbW) и высота (nPbH) текущего элемента предсказания;
- индекс refViewIdx опорного кадра;
- вектор mvDisp невязки.
В данной операции получаются следующие выходные данные:
- флаг availableFlagLXinterView для указания доступности возможного временного межракурсного вектора движения, где LX может быть списком опорных кадров L0 и L1;
- возможный временной межракурсный вектор mvLXInterView движения, где LX может быть списком L0 или L1 опорных кадров.
- ссылочный индекс refIdxLXInterView, указывающий опорный кадр, содержащийся в списке RefPicListLX опорных кадров, где LX может быть списком L0 или L1 опорных кадров.
LX может быть списком L0 или L1 опорных кадров. К списку LX применяется следующая операция:
- флагу availableFlagLXInterView присваивается начальное значение 0;
- вектору mvLXInterView движения присваивается начальное значение (0,0);
- ссылочному индексу refIdxLXInterView присваивается начальное значение -1.
Переменным nSbW и nSbH присваиваются начальные значения следующим образом:
- nSbW=Min(nPbW, SubPbSize);
- nSbH=Min(nPbH, SubPbSize),
где SubPbSize представляет собой размер, включающий высоту и ширину подэлемента предсказания, указываемого набором параметров (VPS).
Переменной ivRefPic в качестве начального значения присваивается значение, соответствующее кадру, имеющему то же значение ViewIdx, что refViewIdx в текущем элементе доступа.
Переменной curSubBlockIdx присваивается начальное значение 0.
Переменным availableFlagL0InterView и availableFlagL1Interview начальные значения присваиваются следующим образом:
.
Если текущим слайсом является слайс B, то
.
При изменении yBlk от 0 до (nPbH/nSbH-1) и при изменении xBlk от 0 до (nPbW/nSbW-1) выполняется следующая операция:
- переменной curAvailabeFlag присваивается начальное значение 0;
- при изменении X от 0 до 1 выполняется следующая операция:
- флагу spPredFlagL1[xBlk][yBlk] присваивается начальное значение 0;
- вектору spMvLX движения присваивается начальное значение (0, 0);
- ссылочному индексу spRefIdxLX[xBlk][yBlk] присваивается начальное значение -1.
- положение (xRef, yRef) опорного блока определяется следующим образом:
.
- переменная ivRefPb указывает на яркостный блок предсказания в положении (xRef, yRef) в межракурсном опорном кадре, указываемом ivRefPic;
- (xIvRefPb, yIvRefPb) указывает на положение левого верхнего угла опорного блока, указываемого ivRefPb;
- Кроме случаев, когда ivRefPb был кодирован во внутрикадровом режиме, при изменении X от 0 до 1 может применяться следующая операция:
- если X равен 0 или текущим слайсом является слайс B, то при изменении Y от X до (1-X) выполняется следующая операция:
- переменным refPixListLYIvRef, predFlagLYIvRef[x][y], mvLYIvRef[x][y] и refIdxLYIvRef[x][y] присваиваются, соответственно, значения переменных, соответствующих им в межракурсном опорном кадре ivRefPic, т.е. RefPicListLY, PredFlagLY[x][y], MvLY[x][y] и RefIdxLY[x][y];
- если значение predFlagLYIvRef[xIvRefPb][yIvRefPb] равно 1, то при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке опорных кадров) может выполняться следующая операция:
- если порядковый номер кадра (POC) у refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]] такой же, как у RefPicListLX[i], и значение centerPredFlag равно 0, то выполняются следующие операции:
.
- Соответственно значению curAvailableFlag выполняется следующая операция:
- если curAvailableFlag равен 0, то при X, изменяющемся от 0 до 1, выполняются следующие операции:
.
- переменной curSubBlockIdx присваивается значение curSubBlockIdx+1.
Вариант 3 осуществления описывается еще раз по таблице 4. Переменные в таблице 4 те же, что и в таблице 2.
Модуль 2100 межкадрового предсказания перед определением информации движения, относящейся к текущему подэлементу предсказания, с использованием подэлемента предсказания опорного блока, выполняет присваивание начальных значений. Это присваивание начальных значений выполняется так же, как описано выше при рассмотрении таблицы 2.
Далее переменным availableFlagLXZero, mvLXZero и refIdxLXZero присваиваются значения согласно формулам 23 и 24. При этом X принимает значения 0 или 1.
[Формула 23]
.
[Формула 24]
.
Здесь через availableFlagLXZero обозначен идентификатор, указывающий доступность стандартной информации движения, через mvLXZero обозначена стандартная информация движения, а через refIdxLXZero обозначен ссылочный индекс стандартной информации движения.
После присваивания значений переменным в соответствии с вышеприведенным описанием модуль 2100 межкадрового предсказания выполняет следующую операцию при изменении yBlk от 0 до (nPbH/nSbH-1) и при изменении xBlk от 0 до (nPbW/nSbW-1). Здесь xBlk обозначает координату x блока, а yBlk обозначает координату y блока.
Вначале модуль 2100 межкадрового предсказания присваивает начальное значение информации, служащей для указания на необходимость предсказания информации движения из подэлемента предсказания опорного блока, флаг предсказания подэлемента предсказания, информацию движения, относящуюся к указанному подэлементу предсказания, и ссылочный индекс подэлемента предсказания. Это присваивание начальных значений выполняется так же, как описано выше при рассмотрении таблицы 2.
Смена положения (xRef, yRef) опорного блока выполняется, как видно из формулы 25, для каждого подэлемента предсказания.
[Формула 25]
Если межракурсный опорный блок закодирован во внутрикадровом режиме, то модуль 2100 межкадрового предсказания может выполнять следующую операцию при изменении X от 0 до 1.
Если X равен 0 или текущим слайсом является слайс B, то каждой переменной присваивается новое значение в соответствии с Y (значение Y изменяется от X до (1-X)), как указано выше при рассмотрении таблицы 2.
В этом случае, если значение predFlagLYIvRef[ xIvRefPb ][ yIvRefPb ] равно 1, то может применяться нижеприведенная формула 26 при изменении i от 0 до num_ref_idx_lX_active_minus1 (количество опорных кадров в списке опорных кадров).
[Формула 26]
.
После выполнения описанной выше операции, если значение curAvailableFlag равно 0, то модуль 2100 межкадрового предсказания может применять формулу 27 при изменении X от 0 до 1.
Иными словами, если невозможно определить информацию движения из подэлемента предсказания опорного блока, то модуль 2100 межкадрового предсказания может определять информацию движения, относящуюся к подэлементу предсказания текущего блока, из произвольно заданной стандартной информации движения.
[Формула 27]
.
Наконец, после того, как все вышеописанные операции выполнены, переменной curSubBlockIdx присваивается значение curSubBlockIdx + 1, и если значения availableFlagL0InterView и availableFlagL1InterView равны 0, то операция определения информации движения в соответствии с вариантом 3 осуществления завершается.
Фиг. 26 представляет собой иллюстрацию примера операции определения информации движения, относящейся к подэлементу предсказания текущего блока, с использованием некоторой информации движения.
На фиг. 26 блоки верхнего ряда представляют собой подэлементы предсказания опорного блока, а блоки нижнего ряда представляют собой подэлементы предсказания текущего блока. Кроме того, в хранилище сохранена стандартная информация движения. При этом под показанной на фиг. 26 стандартной информацией движения может пониматься стандартная информация движения, произвольно заданная в соответствии с вариантом 3 осуществления.
При определении информации движения, относящейся к подэлементу предсказания текущего блока, с использованием стандартной информации движения, для каждого подэлемента предсказания в опорном блоке может использоваться стандартная, произвольно заданная информация движения. Иными словами, возможно одновременное определение информации движения, относящейся к множеству подэлементов предсказания текущего блока, с использованием стандартной информации движения, и такое использование множества подэлементов предсказания текущего блока может способствовать устранению недостатка, выражающегося в зависимости от данных. Соответственно, при использовании стандартной информации движения с некоторым значением модуль 2100 межкадрового предсказания может определять информацию движения параллельно.
Как указано выше, в соответствии с вариантом 3 осуществления модуль 2100 межкадрового предсказания определяет информацию движения с использованием стандартной информации движения, которой присвоено некоторое значение. Соответственно, способ определения информации движения в соответствии с вариантом 3 осуществления делает возможным независимое определение информации движения, относящейся к каждому подэлементу предсказания в опорном блоке. Иными словами, в варианте 3 осуществления для нахождения подэлементов предсказания, из которых может быть определена информация движения, не требуется выполнение последовательного поиска подэлементов предсказания, из которых может быть определена информация движения, и если для определения информации движения невозможно использовать первый подэлемент предсказания опорного блока, то в варианте 3 осуществления изобретения информация движения, относящаяся к подэлементу предсказания текущего блока, определяется с использованием заранее заданной информации движения. Таким образом, при определении информации движения в соответствии с вариантом 3 осуществления устраняется зависимость от данных, что делает возможным распараллеленное определение информации движения, относящейся к каждому подэлементу предсказания. Кроме того, при определении информации движения в соответствии с вариантом 3 осуществления устраняются излишние обращения к памяти, присущие существующим способам определения информации движения, чем сокращается число актов обращения к памяти.
Фиг. 27 представляет собой схематичную иллюстрацию затрат времени, требуемых для определения информации движения в соответствии с настоящим изобретением.
На фиг. 20 показано, что если время, необходимое для определения информации движения из одного подэлемента предсказания, равно T, а количество подэлементов предсказания в опорном блоке равно N, то время, необходимое для определения всей информации движения из опорного блока, равно NxT. Однако в соответствии с вариантом осуществления настоящего изобретения определение информации движения может быть распараллелено, и поэтому время, требуемое для определения информации движения, соответствует T, а задержка кодирования/ декодирования трехмерного изображение снижается.
Описанные выше варианты осуществления изобретения могут иметь разные диапазоны применения в зависимости от размеров блока, глубины элемента кодирования (ЭК) или глубины элемента преобразования (ЭПр). В качестве параметра, определяющего диапазон применения, может использоваться значение, заранее заданное в кодере/ декодере, или значение, определяемое в соответствии с профилем или уровнем; если же кодер указывает значение параметра в битовом потоке, то декодер может получать это значение из битового потока.
Например, в случае, когда диапазон применения зависит от глубины элементов кодирования, могут быть предусмотрены схема (способ A), применяемая только при глубине не меньше заданной, схема (способ B), применяемая только при глубине не больше заданной, или схема (способ C), применяемая только при заданной глубине. Если способы в соответствии с настоящим изобретением неприменимы ни к одной из глубин, то для указания на это может использоваться индикатор (флаг), или посредством глубины ЭК может указываться, что способы в соответствии с настоящим изобретением неприменимы, при этом глубина ЭК может быть установлена превосходящей наибольшую глубину, которую может иметь ЭК.
Таблица 5
В вышеизложенных вариантах осуществления способы описываются с использованием блок-схем с последовательностями шагов или модулей, но настоящее изобретение не ограничено порядком следования шагов, а некоторые шаги могут выполняться одновременно с другими шагами или в другом порядке. Специалисту обычного уровня в данной области техники должно быть понятно, что шаги в блок-схемах не исключают друг друга и что в блок-схемы могут быть добавлены другие шаги или некоторые из шагов могут быть удалены из блок-схем без влияния на объем настоящего изобретения.
Кроме того, вышеизложенные варианты осуществления изобретения содержат различные аспекты примеров. Невозможно описать все возможные комбинации для представления различных аспектов, и специалистам в данной области техники должно быть понятно, что возможны и другие комбинации, кроме описанных. Соответственно, настоящее изобретение содержит все изменения, модификации и разновидности, охватываемые приведенной ниже формулой изобретения.
Описанные выше способы в соответствии с настоящим изобретением могут быть реализованы в программе, исполняемой компьютером, которая может быть сохранена на машиночитаемом записываемом носителе, в число примеров которого входят постоянное запоминающее устройство (ПЗУ), оперативное запоминающее устройство (ОЗУ), компакт-диск, магнитная лента, гибкий диск, оптическое запоминающее устройство; указанная программа также может быть или представлена в виде передаваемого сигнала (например, в виде передачи через Интернет).
Указанный машиночитаемый записываемый носитель может быть распределен по компьютерным системам, соединенным сетью, а машиночитаемые коды могут сохраняться и исполняться распределенно. Функциональные программы, коды или кодовые сегменты для реализации описанных выше способов легко могут разработаны программистами, знакомыми с областью техники, к которой относится настоящее изобретение.
Несмотря на то, что настоящее изобретение представлено и описано связанным с предпочтительными вариантами его осуществления, оно не ограничено указанными вариантами, и в настоящем изобретении без выхода за пределы его объема, определяемого нижеприведенной формулой изобретения, могут быть сделаны разнообразные изменения, которые не должны интерпретироваться индивидуально в отрыве от технической сущности или объема настоящего изобретения.
Группа изобретений относится к технологиям кодирования/декодирования трехмерных изображений. Техническим результатом является повышение эффективности кодирования/декодирования изображений посредством устранения зависимости от данных при определении информации движения. Предложен способ декодирования изображения. Способ содержит этап определения информации движения, относящейся к текущему блоку. Далее, согласно способу, осуществляют определение элементарного значения предсказания для текущего блока на основании информации движения, относящейся к текущему блоку. Причем шаг определения информации движения, относящейся к текущему блоку, включает: определение информации движения, относящейся к подблокам в текущем блоке, по подблокам в опорном блоке, если центральный подблок в опорном блоке имеет информацию движения. 3 н. и 2 з.п. ф-лы, 37 ил., 5 табл.
1. Способ декодирования изображения, включающий:
определение информации движения, относящейся к текущему блоку; и
определение элементарного значения предсказания для текущего блока на основании информации движения, относящейся к текущему блоку,
причем шаг определения информации движения, относящейся к текущему блоку, включает:
определение того, имеет ли центральный подблок, соответствующий центральному положению текущего блока, в опорном блоке информацию движения;
определение информации движения, относящейся к подблокам в текущем блоке, по подблокам в опорном блоке, если центральный подблок в опорном блоке имеет информацию движения; и
завершение определения информации движения, относящейся к подблокам предсказания в текущем блоке, по подблокам в опорном блоке, если центральный подблок в опорном блоке не имеет информации движения,
причем информация движения включает в себя вектор движения.
2. Способ по п. 1, отличающийся тем, что шаг определения информации движения, относящейся к подблокам в текущем блоке, включает:
определение того, имеет ли подблок в опорном блоке информацию движения, при этом подблок в опорном блоке соответствует текущему подблоку в текущем блоке;
определение информации движения, относящейся к текущему подблоку в текущем блоке, по подблоку в опорном блоке, если подблок в опорном блоке имеет информацию движения; и
определение информации движения, относящейся к текущему подблоку в текущем блоке, по центральному подблоку в опорном блоке, если подблок в опорном блоке не имеет информации движения.
3. Способ кодирования изображения, включающий:
определение информации движения, относящейся к текущему блоку; и
кодирование информации движения, относящейся к текущему блоку,
причем шаг определения информации движения, относящейся к текущему блоку, включает:
определение того, имеет ли центральный подблок, соответствующий центральному положению текущего блока, в опорном блоке информацию движения;
определение информации движения, относящейся к подблокам в текущем блоке, по подблокам в опорном блоке, если центральный подблок в опорном блоке имеет информацию движения; и
завершение определения информации движения, относящейся к подблокам в текущем блоке, по подблокам в опорном блоке, если центральный подблок в опорном блоке не имеет информации движения,
причем информация движения включает в себя вектор движения.
4. Способ по п. 3, отличающийся тем, что шаг определения информации движения, относящейся к подблокам в текущем блоке, включает:
определение того, имеет ли подблок в опорном блоке информацию движения, при этом подблок в опорном блоке соответствует текущему подблоку в текущем блоке;
определение информации движения, относящейся к текущему подблоку в текущем блоке, по подблоку в опорном блоке, если подблок в опорном блоке имеет информацию движения; и
определение информации движения, относящейся к текущему подблоку в текущем блоке, по центральному подблоку в опорном блоке, если подблок в опорном блоке не имеет информации движения.
5. Машиночитаемый носитель информации, хранящий битовый поток, образованный посредством способа кодирования изображения, включающего:
определение информации движения, относящейся к текущему блоку; и
кодирование информации движения, относящейся к текущему блоку,
причем шаг определения информации движения, относящейся к текущему блоку, включает:
определение того, имеет ли центральный подблок, соответствующий центральному положению текущего блока, в опорном блоке информацию движения;
определение информации движения, относящейся к подблокам в текущем блоке, по подблокам в опорном блоке, если центральный подблок в опорном блоке имеет информацию движения; и
завершение определения информации движения, относящейся к подблокам в текущем блоке, по подблокам в опорном блоке, если центральный подблок в опорном блоке не имеет информации движения,
причем информация движения включает в себя вектор движения.
WO 2013188785 A1, 19.12.2013 | |||
WO 2013016004 A1, 31.01.2013 | |||
WO 2013159643 A1, 31.10.2013 | |||
WO 2012073057 A2, 07.06.2012 | |||
WO 2013158097 A1, 24.10.2013 | |||
СПОСОБ СКРЫТОЙ ПЕРЕДАЧИ ИНФОРМАЦИИ И СПОСОБ ИЗВЛЕЧЕНИЯ СКРЫТОЙ ИНФОРМАЦИИ | 1997 |
|
RU2181930C2 |
Авторы
Даты
2022-12-08—Публикация
2015-01-05—Подача