ВЫПОЛНЕНИЕ ПРЕДСКАЗАНИЯ ВЕКТОРА ДВИЖЕНИЯ ДЛЯ КОДИРОВАНИЯ ВИДЕО Российский патент 2016 года по МПК H04N19/56 

Описание патента на изобретение RU2573227C1

[0001] По данной заявке испрашивается приоритет Предварительной Заявки США №61/579465, поданной 22 декабря 2011 г., и Предварительной Заявки США №61/584096, поданной 06 января 2012 г., каждая из которых во всей своей полноте включена в настоящее описание посредством ссылки.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

[0002] Данное изобретение относится к кодированию видео и, в частности, к аспектам компенсации движения кодирования видео.

УРОВЕНЬ ТЕХНИКИ

[0003] Возможности цифрового видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового непосредственного вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), компьютеры класса лэптоп или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые мультимедийные проигрыватели, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, устройства проведения видео телеконференций, и подобное. Устройства цифрового видео реализуют методики сжатия видео, такие как те, что описаны в стандартах, которые определяются стандартами MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Расширенное Кодирование Видео (AVC), и расширениях таких стандартов, для более эффективной передачи и приема информации цифрового видео. Разрабатываются новые стандарты кодирования видео, такие как стандарт Высокоэффективного Кодирования Видео (HEVC), разрабатываемый «Совместной Объединенной Группой - Кодирование Видео» (JCT-VC), которая является объединением MPEG и ITU-T. Развивающийся стандарт HEVC иногда именуется как H.265, несмотря на то, что такое название официально не было принято.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[0004] В целом, данное изобретение описывает методики для удержания в определенных пределах диапазона векторов движения - кандидатов, используемых в процессе предсказания вектора движения, чтобы они находились в рамках точно определенного диапазона. Предсказание вектора движения обычно используется в кодировании видео как способ повышения эффективности, с которой выполняется оценка движения. Вместо выполнения поиска блоков в опорных кадрах, которые совпадают с текущим блоком, посредством выполнения того, что обычно именуется «оценкой движения», кодировщик видео может определять эти векторы движения - кандидаты по блокам, которые являются пространственными или временными соседями для текущего блока видеоданных, и выбирать один из этих векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных. В некоторых случаях, эти векторы движения - кандидаты могут быть масштабированы. Когда масштабированный вектор движения - кандидат выбирается в качестве предиктора вектора движения, то методики могут предоставить кодировщику видео возможность удержания в определенных пределах одной или более из: горизонтальной составляющей и вертикальной составляющей данных масштабированных векторов движения - кандидатов.

[0005] В одном примере, способ кодирования видеоданных содержит этапы, на которых: определяют множество векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить процесс предсказания вектора движения; масштабируют один или более из упомянутого множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов; и модифицируют масштабированные векторы движения - кандидаты таким образом, чтобы они находились в рамках точно определенного диапазона. Способ дополнительно содержит этапы, на которых: выбирают один из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных, и кодируют текущий блок видеоданных на основании предиктора вектора движения.

[0006] В другом примере, устройство кодирования видео, выполненное с возможностью выполнения процесса предсказания вектора движения для кодирования видеоданных, содержит: процессор, выполненный с возможностью: определения множества векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить процесс предсказания вектора движения; масштабирования одного или более из упомянутого множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов; и модифицирования масштабированных векторов движения - кандидатов таким образом, чтобы они находились в рамках точно определенного диапазона; выбора одного из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных; и кодирования текущего блока видеоданных на основании предиктора вектора движения.

[0007] В другом примере, устройство кодирования видео, выполненное с возможностью выполнения процесса предсказания вектора движения для кодирования видеоданных, содержит: средство для определения множества векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить процесс предсказания вектора движения; и средство для масштабирования одного или более из упомянутого множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов. Устройство кодирования видео дополнительно содержит: средство для модифицирования масштабированных векторов движения - кандидатов таким образом, чтобы они находились в рамках точно определенного диапазона; средство для выбора одного из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных; и средство для кодирования текущего блока видеоданных на основании предиктора вектора движения.

[0008] В другом примере, невременной считываемый компьютером носитель данных имеет хранящиеся на нем инструкции, которые при исполнении, побуждают один или более процессоров: определять множество векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить процесс предсказания вектора движения; масштабировать один или более из упомянутого множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов; модифицировать масштабированные векторы движения - кандидаты таким образом, чтобы они находились в рамках точно определенного диапазона; выбирать один из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных; и кодировать текущий блок видеоданных на основании предиктора вектора движения.

[0009] Подробности одного или более примеров изложены в сопроводительных чертежах и представленном ниже описании. Прочие признаки, объекты, и преимущества будут очевидны из описания и чертежей, и из формулы изобретения.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0010] Фиг. 1 является структурной схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может быть выполнена с возможностью использования методик, описываемых в данном изобретении, для удержания в определенных пределах диапазона векторов движения - кандидатов при выполнении процесса предсказания вектора движения.

[0011] Фиг. 2 является структурной схемой, иллюстрирующей пример кодера видео, который может реализовывать методики, описываемые в данном изобретении для удержания в определенных пределах диапазона MVP.

[0012] Фиг. 3 является структурной схемой, иллюстрирующей пример декодера видео, который реализует методики предсказания вектора движения, описываемые в данном изобретении.

[0013] Фиг. 4 является блок-схемой, иллюстрирующей примерное функционирование кодировщика видео при выполнении аспектов методик предсказания вектора движения, описываемых в данном изобретении.

[0014] Фиг. 5 является блок-схемой, иллюстрирующей примерное функционирование кодировщика видео при реализации других аспектов методик предсказания вектора движения, описываемых в данном изобретении.

[0015] Фиг. 6 является схемой, иллюстрирующей примерную компоновку смежных соседних предсказывающих единиц (PU) и временной совместно расположенной PU для текущей PU.

ПОДРОБНОЕ ОПИСАНИЕ

[0016] Варианты осуществления методик, описываемых в данном изобретении, предоставляют кодировщикам видео (которые могут представлять собой понятие, используемое в данном описание как относящее к одному из или к обоим из кодера видео и декодера видео) возможность удержания в определенных пределах диапазона выбранных векторов движения - кандидатов таким образом, чтобы он находился в точно определенном диапазоне, при выполнении процесса предсказания вектора движения. Другими словами, методики предоставляют кодировщику видео возможность определения списка векторов движения - кандидатов (при этом эти векторы движения - кандидаты также могут именоваться как «кандидаты - предикторы вектора движения», а список может именоваться как «список кандидатов») для текущего блока видеоданных и выбора одного из векторов движения - кандидатов в данном списке для представления предиктора вектора движения (MVP) для текущего блока видеоданных. Затем кодировщик видео может определять, был ли масштабирован выбранный вектор движения - кандидат. После определения того, что выбранный вектор движения - кандидат был масштабирован, затем кодировщик видео может определять, укладывается ли горизонтальная составляющая и/или вертикальная составляющая выбранного вектора движения - кандидата в точно определенный диапазон значений горизонтальной составляющей и/или точно определенный диапазон значений вертикальной составляющей, соответственно. Эти указанные диапазоны могут эффективно представлять собой то, что может именоваться как ограничение горизонтального смещения и/или ограничение вертикального смещения. Если не укладывается в точно определенный диапазон значений горизонтальной составляющей и/или точно определенный диапазон значений вертикальной составляющей, то тогда кодировщик видео может усекать значения таким образом, что значения горизонтальной и/или вертикальной составляющей укладываются в точно определенный диапазон значений горизонтальной составляющей и/или точно определенный диапазон значений вертикальной составляющей.

[0017] Таким образом, методики могут модифицировать процесс генерирования списка кандидатов, что может именоваться как процесс усечения кандидатов - предикторов вектора движения. Например, кодировщик видео может усекать вертикальную составляющую вектора движения - кандидата таким образом, чтобы она оставалась в границах диапазона вектора движения. Аналогичным образом, кодировщик видео может усекать горизонтальную составляющую вектора движения - кандидата таким образом, чтобы она оставалась в границах диапазона вектора движения. Дополнительно, кодировщик видео может масштабировать вектор движения, чтобы он оставался в границах диапазона вектора движения. Эти методики могут быть применены к некоторым или ко всем промежуточным векторам движения - кандидатам, или только к итоговому выбранному предиктору вектора движения для текущего видеоблока.

[0018] Другими словами, когда вектор движения - кандидат из списка кандидатов указывает на блок предсказания, расположенный за пределами ограничения смещения вектора движения, кодировщик видео (который также может именоваться как «устройство кодирования видео») может усекать или иным образом урезать значение вектора движения - кандидата. Затем кодировщик видео может кодировать текущий видеоблок на основании выбранного усеченного вектора движения - кандидата из списка кандидатов.

[0019] Посредством ограничения или иного удержания в определенных пределах диапазона значений горизонтальной и/или вертикальной составляющей выбранного вектора движения - кандидата в некоторых случаях (таких как, когда выбранный вектор движения - кандидат является масштабированным), методики могут гарантировать то, что горизонтальные и/или вертикальные векторы движения не потребуют больше некоторого количества бит для выражения их целочисленных значений со знаком. Другими словами, значения составляющих векторов движения, которые являются целочисленными значениями со знаком, как правило, выражаются при помощи 16 бит. Вследствие этого при определении векторов движения декодеры видео выделяют 16 бит на составляющую вектора движения. Допущение превышения 16 бит для векторов движения может значительно усложнить разработку декодера видео при реализации в аппаратном обеспечении, поскольку требуется обеспечить дополнительную физическую память для хранения этих составляющих вектора движения, требующих для выражения более 16 бит.

[0020] Дополнительно, посредством удержания в определенных пределах диапазона составляющих вектора движения в некоторых случаях таким образом, чтобы они находились в точно определенном диапазоне, методики могут способствовать более эффективному использованию пропускной способности памяти. Для иллюстрации, при условии, что кодирование видео кадра видеоданных, как правило, протекает в очередности растрового сканирования (которая обычно соответствует очередности считывания сверху вниз, слева направо), то ограничение вертикальной составляющей векторов движения может удерживать в определенных пределах то, какой объем видеоданных опорного кадра, к которому относится вектор движения, требуется загрузить во внутрикристальную память. Меньшая вертикальная составляющая вектора движения, при кодировании видео с растровым сканированием, может быть рассмотрена в качестве эффективного способа ограничения объема внутрикристальной памяти, которая требуется при реализациях в аппаратном обеспечении кодировщика видео. Чрезмерно большие вертикальные составляющие вектора движения могут привести в случаях, где несколько блоков каждый из которых ссылается полностью на разные части одного и того же опорного кадра, к тому, что затем от декодера видео потребуется частый обмен этими разными частями опорного кадра между внекристальной и внутрикристальной памятью. Посредством удержания в определенных пределах диапазона составляющих вектора движения в некоторых случаях, методики могут способствовать более эффективному использованию пропускной способности памяти.

[0021] Фиг. 1 является структурной схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может быть сконфигурирована для использования методик, описываемых в данном изобретении, для удержания в определенных пределах диапазона векторов движения - кандидатов, при выполнении процесса предсказания вектора движения. Как показано в примере на Фиг. 1, система 10 включает в себя устройство-источник 12, которое генерирует закодированное видео для устройства-получателя 14. Устройство-источник 12 может передавать закодированное видео устройству-получателю 14 через канал 16 связи или может сохранять закодированное видео на носителе 34 данных или файловом сервере 36, таким образом, что доступ к закодированному видео может быть осуществлен устройством-получателем 14 по желанию. Устройство-источник 12 и устройство-получатель 14 могут быть выполнены в виде широкого многообразия устройств, включая настольные компьютеры, компьютеры класса ноутбук (т.е., компьютер класса лэптоп), планшетные компьютеры, абонентские телевизионные приставки, телефонные трубки (включая сотовые телефоны или телефонные трубки и так называемые интеллектуальные телефоны), телевизоры, камеры, устройства отображения, цифровые мультимедийные проигрыватели, видеоигровые консоли, или подобное.

[0022] Во многих случаях, такие устройства могут быть оборудованы для обеспечения беспроводной связи. Следовательно, канал 16 связи может быть выполнен в виде беспроводного канала. В качестве альтернативы, канал 16 связи может быть выполнен в виде проводного канала, сочетания беспроводного и проводного каналов или любого другого типа канала связи или сочетания каналов связи, пригодных для передачи закодированных видеоданных, такого как радиочастотный (RF) спектр или один или более физических линий передачи. В некоторых примерах, канал 16 связи может быть частью основанной на пакетной передаче сети, такой как локальная сеть (LAN), широкомасштабная сеть (WAN), или глобальная сеть, такая как Интернет. Вследствие этого, канал 16 связи, как правило, представляет собой любое пригодное средство связи, или совокупность разных средств связи, для передачи видеоданных от устройства-источника 12 к устройству-получателю 14, включая любое пригодное сочетание проводных или беспроводных средств. Канал 16 связи может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезно для обеспечения связи от устройства-источника 12 к устройству-получателю 14.

[0023] Как дополнительно показано в примере на Фиг. 1, устройство-источник 12 включает в себя источник 18 видео, кодер 20 видео, модулятор/демодулятор 22 («модем 22») и передатчик 24. В устройстве-источнике 12, источник 18 видео может включать в себя источник, такой как устройство захвата видео. Устройство захвата видео, в качестве примера, может включать в себя одно или более из устройств: видеокамеру; видеоархив, содержащий ранее захваченное видео; интерфейс внешнего видеосигнала для приема видео от поставщика видео контента; и/или систему компьютерной графики для генерирования данных компьютерной графики в качестве источника видео. В качестве одного примера, если источником 18 видео является видеокамера, то устройство-источник 12 и устройство-получатель 14 могут образовывать так называемые камерофоны или видеофоны. Тем не менее, методики, описываемые в данном изобретении, не ограничиваются беспроводными приложениями или настройками, и могут быть применены к не беспроводным устройствам, включающим в себя возможности кодирования и/или декодировании видео. Вследствие этого, устройство-источник 12 и устройство-получатель 14 являются лишь примерами кодирующих устройств, которые могут поддерживать описываемые здесь методики.

[0024] Кодер 20 видео может кодировать захваченное, предварительно захваченное, или генерируемое компьютером видео. Как только закодировано, кодер 20 видео может выводить данное закодированное видео на модем 22. Затем модем 22 может модулировать закодированное видео в соответствии со стандартом связи, таким как протокол беспроводной связи, после чего передатчик 24 может передавать модулированные данные закодированного видео устройству-получателю 14. Модем 22 может включать в себя различные преобразователи частоты, фильтры, усилители или другие компоненты, разработанные для модуляции сигнала. Передатчик 24 может включать в себя схемы, разработанные для передачи данных, включая усилители, фильтры, и одну или более антенн.

[0025] Захваченное, предварительно захваченное, сгенерированное компьютером видео, которое кодируется кодером 20 видео, также может быть сохранено на носителе 34 данных или файловом сервере 36 для извлечения, декодирования и потребления позже. Носитель 34 данных может включать в себя диски Blu-ray, DVD, CD-ROM, флэш-память, или любой другой пригодный цифровой носитель данных для хранения закодированного видео. Устройство-получатель 14 может осуществлять доступ к закодированному видео, хранящемуся на носителе 34 данных или файловом сервере 36, декодировать данное закодированное видео, чтобы сгенерировать декодированное видео, и воспроизводить данное декодированное видео.

[0026] Файловый сервер 36 может быть любым типом сервера, выполненного с возможностью хранения закодированного видео и передачи этого закодированного видео устройству-получателю 14. Примерные файловые серверы включают в себя web-сервер (например, для web-сайта), FTP сервер, устройства подключаемого к сети накопителя (NAS), локальный накопитель на дисках, или любой другой тип устройства, выполненного с возможностью хранения закодированных видеоданных и передачи их устройству-получателю. Передача закодированных видеоданных от файлового сервера 36 может быть потоковой передачей, передачей загрузки, или сочетанием обоих. Устройство-получатель 14 может получать доступ к файловому серверу 36 в соответствии с любым стандартным соединением для передачи данных, включая Интернет соединение. Данное соединение может включать в себя беспроводной канал (например, Wi-Fi соединение или беспроводное сотовое соединение для передачи данных), проводное соединение (например, DSL, кабельный модем, и т.д.), сочетание как проводного, так и беспроводного каналов, или любой другой тип канала связи пригодный для получения доступа к закодированным видеоданным, хранящимся на файловом сервере.

[0027] Устройство-получатель 14, в примере на Фиг. 1, включает в себя приемник 26, модем 28, декодер 30 видео, и устройство 32 отображения. Приемник 26 устройства-получателя 14 принимает информацию по каналу 16, а модем 28 демодулирует информацию для того, чтобы создать демодулированный битовый поток для декодера 30 видео. Информация, передаваемая по каналу 16, может включать в себя разнообразную информацию синтаксиса, сгенерированную кодером 20 видео для использования декодером 30 видео при декодировании связанных закодированных видеоданных. Такой синтаксис также может быть включен в закодированные видеоданные, хранящиеся на носителе 34 данных или файловом сервере 36. Как кодер 20 видео, так и декодер 30 видео могут быть частью соответствующего кодера-декодера (Кодека), который выполнен с возможностью кодирования или декодирования видеоданных.

[0028] Устройство 32 отображения устройства-получателя 14 представляет собой любой тип дисплея, выполненного с возможностью представления видеоданных для потребления зрителем. Несмотря на то, что показано как встроенное в устройство-получатель 14, устройство 32 отображения может быть встроено в, или быть внешним по отношению к, устройству-получателю 14. В некоторых примерах, устройство-получатель 14 может включать в себя встроенное устройство отображения и также может быть выполнено с возможностью взаимодействия с внешним устройством отображения. В других примерах, устройство-получатель 14 может быть устройством отображения. В целом, устройство 32 отображения отображает декодированные видеоданные пользователю, и может быть выполнено в виде любого из многообразия устройств отображения, такого как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED), или другой тип устройства отображения.

[0029] Данное изобретение в целом может относиться к «сигнализации» кодером 20 видео информации синтаксиса другому устройству, такому как декодер 30 видео. Тем не менее, следует понимать, что кодер 20 видео может сигнализировать информацию посредством привязки элементов синтаксиса к различным закодированным частям видеоданных. Т.е., кодер 20 видео может «сигнализировать» данные посредством сохранения некоторых элементов синтаксиса в заголовках различных закодированных частей видеоданных. В некоторых случаях, такие элементы синтаксиса могут кодироваться и сохраняться (например, сохраняться на носителе 34 данных или файловом сервере 36) перед тем как будут приняты и декодированы декодером 30 видео. Таким образом, понятие «сигнализация» в целом может относиться к передаче синтаксиса или других данных, используемых для декодирования сжатых видеоданных, будет ли такая передача происходить в режиме реального времени, в режиме близком к реальному времени или через промежуток времени, так, как это может происходить при сохранении элементов синтаксиса на носитель данных во время кодирования, которые затем могут быть извлечены декодирующим устройством в любой момент времени после того как были сохранены на данном носителе данных.

[0030] Кодер 20 видео и декодер 30 видео могут функционировать в соответствии со стандартом сжатия видео, таким как стандарт Высокоэффективного Кодирования Видео (HEVC), который разрабатывается в настоящее время, и могут соответствовать Тестовой Модели HEVC (HM). В качестве альтернативы, кодер 20 видео и декодер 30 видео могут функционировать в соответствии с другими частными или промышленными стандартами, такими как стандарт ITU-T H.264, альтернативно именуемый как MPEG-4, Часть 10, Расширенное Кодирование Видео (AVC), или расширения таких стандартов. Тем не менее, методики данного изобретения, не ограничиваются каким-либо конкретным стандартом кодирования. Прочие примеры включают в себя MPEG-2 и ITU-T H.263.

[0031] HM обращается к блоку видеоданных как к единице кодирования (CU). В целом, CU имеет аналогичное назначение, что и макроблок, кодируемый в соответствии с H.264, за исключением того, что CU не имеет различия по размеру, которое связано с макроблоками в H.264. Таким образом, CU может быть разбита на суб-CU. В целом, ссылки в данном изобретении на CU могут относиться к наибольшей единице кодирования (LCU) картинки или суб-CU из LCU. Например, данные синтаксиса в битовом потоке могут определять LCU, которая является наибольшей единицей кодирования в единицах количества пикселей. LCU может быть разбита на суб-CU, и каждая суб-CU может быть разбита на суб-CU. Данные синтаксиса для битового потока могут определять максимальное количество раз, которое может быть разбита LCU, которое именуется как максимальная глубина CU. Соответственно, битовый поток также может определять наименьшую единицу кодирования (SCU).

[0032] LCU может быть связана с иерархической структурой данных квадрадерева. В целом, структура данных квадрадерева включает в себя один узел из расчета на CU, при этом корневой узел соответствует LCU. Если CU разбивается на четыре суб-CU, то узел, соответствующий CU включает в себя ссылку для каждого из четырех узлов, которые соответствуют суб-CU. Каждый узел структуры данных квадрадерева может предоставлять данные синтаксиса для соответствующей CU. Например, узел в квадрадереве может включать в себя флаг разбиения, указывающий на то, разбивается ли CU, соответствующая узлу, на суб-CU. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, разбивается ли CU на суб-CU.

[0033] CU которая не разбивается может включать в себя одну или более единиц предсказания (PU). В целом, PU представляет собой всю или часть соответствующей CU, и включает в себя данные для извлечения опорного отсчета для PU. Например, когда PU является закодированной в интра-режиме, то PU может включать в себя данные, описывающие режим интра-предсказания (внутреннего предсказания) для PU. В качестве другого примера, когда PU является закодированной в интер-режиме, то PU может включать в себя данные, определяющие один или более векторов движения для PU. Вектор движения, как правило, идентифицирует совместно расположенную CU в одном или более опорных кадрах, где понятие «опорный кадр» относится к кадру, который по времени имеет место до или после кадра, в котором располагается PU. Данные для CU, определяющие PU, также могут описывать, например, разбиение CU на одну или более PU. Режимы разбиения могут различаться в зависимости от того, является ли CU не кодируемой, кодируемой в режиме интра-предсказания, или кодируемой в режиме интер-предсказания (внешнего предсказания).

[0034] Данные, определяющие вектор движения, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность в одну четвертую пикселя или точность в одну восьмую пикселя), опорный кадр, на который указывает вектор движения, направление предсказания, которое определяет, находится ли идентифицированный опорный кадр до или после текущего кадра, и/или опорный список (например, список 0 или список 1) для вектора движения. В качестве альтернативы, данные, определяющие вектор движения могут, описывать вектор движения с точки зрения того, что именуется как предиктор вектора движения (MVP). Предиктор вектора движения может включать в себя вектор движения соседней PU или временной совместно расположенной PU. Как правило, список из пяти векторов движения - кандидатов формируется определенным образом (как например, посредством перечисления векторов движения - кандидатов, начиная с тех, что обладают наивысшей амплитудой, до тех, что обладают наименьшей амплитудой, т.е., наибольшее или наименьшее смещение между текущей PU, которая должна быть закодирована, и опорной PU, или посредством перечисления векторов движения - кандидатов на основании местоположения, т.е., верхние блоки, левые блоки, угловые блоки, временные блоки), где четыре из пяти векторов движения - кандидатов являются пространственными векторами движения, выбранными из четырех соседних PU, а пятый вектор движения - кандидат является вектором движения с общим местоположением по времени, выбранным из временной совместно расположенной PU в опорном кадре.

[0035] Несмотря на то, что, как правило, временной вектор движения - кандидат занимает общее местоположение в той же самой части опорного кадра, что и текущая часть в текущем кадре, методики не должны ограничиваться строго временными совместно расположенными векторами движения - кандидатами. Наоборот, методики могут быть реализованы в отношении любого временного вектора движения - кандидата вне зависимости от того, является ли он совместно расположенным. В некоторых случаях, кодер видео может идентифицировать временной вектор движения - кандидат, который не является совместно расположенным по отношению к текущему блоку или части текущего кадра, и может использовать данный временной вектор движения - кандидат при выполнении процесса предсказания вектора движения. Обычно, кодер видео может сигнализировать о том, что был использован не являющийся совместно расположенным временной вектор движения - кандидат или, в некоторых случаях, заданный контекст может указывать, что был использован не являющийся совместно расположенным временной вектор движения - кандидат (и в данном случае кодер видео может не сигнализировать о том, был или нет не являющийся совместно расположенным временной вектор движения - кандидат выбран в качестве MVP).

[0036] После формирования списка из пяти векторов движения - кандидатов, кодер 20 видео может получать доступ к каждому из векторов движения - кандидатов для определения того, какой обеспечивает наилучшие характеристики по скорости и искажению, которые наилучшим образом совпадают с заданным профилем скорости и искажения, выбранным для кодирования видео. Кодер 20 видео может выполнять процедуру оптимизации скорости-искажения (RDO) по отношению к каждому из пяти векторов движения - кандидатов, выбирая один из векторов движения - кандидатов с наилучшими результатами RDO, в качестве MVP. В качестве альтернативы кодер 20 видео может выбирать один из пяти векторов движения - кандидатов, сохраненных в списке, который наилучшим образом аппроксимирует вектор движения, который определен для текущей PU в качестве MVP.

[0037] В любом случае, кодер 20 видео может указывать вектор движения, используя данные, которые содержат индекс, идентифицирующий выбранный один из векторов движения - кандидатов в списке из пяти векторов движения - кандидатов, один или более опорных кадров, на которые указывает вектор движения (часто в виде списка) и направление предсказания, идентифицирующее, является ли предсказание однонаправленным или двунаправленным. В качестве альтернативы, данные, определяющие вектор движения могут указывать только индекс выбранного вектора движения - кандидата в списке из пяти векторов движения - кандидатов, не указывая опорный кадр и направление движения, что сигнализирует декодерам видео о том, что выбранный один из векторов движения - кандидатов должен во всей своей полноте использоваться для текущей PU.

[0038] В дополнение к наличию одной или более PU, которые определяют один или более векторов движения, CU может включать в себя одну или более единиц преобразования (TU). Вслед за предсказанием при помощи PU, кодер видео может вычислять остаточное значение для части CU, соответствующей PU, где данное остаточное значение также может именоваться как остаточные данные. Остаточное значение может быть преобразовано, квантовано, и просканировано. TU не обязательно ограничивается размером PU. Таким образом, TU может быть больше или меньше чем соответствующая PU для той же самой CU. В некоторых примерах, максимальный размер TU может быть размером соответствующей CU. Данное изобретение также использует понятие «блок» для обращения к любой одной или сочетанию из CU, PU, и/или TU.

[0039] В целом, закодированные видеоданные могут включать в себя данные предсказания и остаточные данные. Кодер 20 видео может создавать данные предсказания во время режима интра-предсказания или режима интер-предсказания. Интра-предсказание, как правило, включает в себя предсказание значений пикселя в блоке картинки по отношению к опорным отсчетам в соседних, ранее закодированных блоках той же самой картинки. Интер-предсказание, как правило, включает в себя предсказание значений пикселя в блоке картинки по отношению к данным ранее закодированной картинки.

[0040] Вслед за интра- или интер- предсказанием, кодер 20 видео может вычислять остаточные значения пикселя для блока. Остаточные значения, как правило, соответствуют разностям между данными предсказанного значения пикселя для блока и данными истинного значения пикселя блока. Например, остаточные значения могут включать в себя значения пиксельной разности, указывающие разности между кодируемыми пикселями и пикселями предсказания. В некоторых примерах, кодируемые пиксели могут быть связаны с блоком пикселей, который должен быть закодирован, а пиксели предсказания могут быть связаны с одним или более блоками пикселей, использованными для предсказания кодируемого блока.

[0041] Для того чтобы дополнительно сжать остаточное значение блока, остаточное значение может быть преобразовано в набор коэффициентов преобразования, которые компактно размещают настолько много данных (также именуемые как «энергия»), насколько это возможно в небольшом количестве коэффициентов по возможности. Методики преобразования могут содержать процесс дискретного косинусного преобразования (DCT) или концептуально аналогичный процесс, целочисленные преобразования, вейвлет преобразования, или другие типы преобразований. Преобразование конвертирует остаточные значения пикселей из пространственной области в область преобразования. Коэффициенты преобразования соответствуют двумерной матрице коэффициентов, которая обычно имеет тот же размер, что и у исходного блока. Другими словами, присутствует столько коэффициентов преобразования, сколько пикселей в исходном блоке. Тем не менее, благодаря преобразованию, многие коэффициенты преобразования могут иметь значения равные нулю.

[0042] Затем кодер 20 видео может квантовать коэффициенты преобразования для дополнительного сжатия видеоданных. Квантование, как правило, задействует сопоставление значений в рамках относительно большого диапазона со значениями в относительно небольшом диапазоне, тем самым сокращая объем данных, требуемых для представления квантованных коэффициентов преобразования. В частности, квантование может быть применено в соответствии с параметром квантования (QP), который может быть определен на уровне LCU. Соответственно, одинаковый уровень квантования может быть применен ко всем коэффициентам преобразования в TU, связанной с разными PU CU внутри LCU. Тем не менее, вместо сигнализации самого QP, изменение (т.е., дельта) QP может сигнализироваться с помощью LCU. Дельта QP определяет изменение параметра квантования для LCU относительно некоторого опорного QP, такого как QP ранее переданной LCU.

[0043] Вслед за квантованием, кодер 20 видео может сканировать коэффициенты преобразования, создавая одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Затем кодер 20 видео может выполнять статистическое кодирование без потерь (которое в целом ошибочно именуется «энтропийным кодированием») для кодирования результирующего массива в дополнительно сжатые данные. В целом, энтропийное кодирование содержит один или более процессы, которые вместе сжимают последовательность коэффициентов преобразования и/или другую информацию синтаксиса. Например, элементы синтаксиса, такие как дельта QP, векторы предсказания, режимы кодирования, фильтры, коррекции, или другая информация, также может быть включена в энтропийно закодированный битовый поток. Затем просканированные коэффициенты энтропийно кодируются наряду с любой информацией синтаксиса, например, посредством контекстно-зависимого адаптивного кодирования с переменной длиной кодового слова (CAVLC), контекстно-зависимого адаптивного бинарного арифметического кодирования, или любого другого процесса статистического кодирования без потерь.

[0044] Как отмечено выше, данные, определяющие вектора движения для PU могут принимать некоторое количество форм. Кодер 20 видео может реализовывать разные способы, посредством которых вектора движения могут быть выражены для сжатия данных вектора движения. Кодер 20 видео может реализовывать то, что именуется «режимом слияния» для выражения векторов движения в качестве индекса, идентифицирующего вектор движения - кандидат как хранящийся в списке векторов движения - кандидатов, который строится определенным образом. Декодер 30 видео, при реализации процесса обратного данному режиму слияния, принимает данный индекс, восстанавливает список из пяти векторов движения - кандидатов в соответствии с определенным способом и выбирает один из пяти векторов движения - кандидатов в списке, указываемый индексом, в качестве MVP для текущего блока декодируемых видеоданных. Затем декодер 30 видео создает экземпляр выбранного одного из векторов движения - кандидатов в качестве MVP для связанной PU с тем же разрешением выбранного одного из векторов движения - кандидатов, и который указывает на тот же самый опорный кадр, на который указывает выбранный один из векторов движения - кандидатов. При реализации режима слияния, кодеру 20 видео может не требоваться выполнение оценки движения в полном объеме, который необходим для извлечения вектора движения, указания горизонтальной и вертикальной составляющих вектора движения, разрешения вектора движения, направления вектора движения (которое означает, указывает ли вектор движения на кадр, который по времени находится перед или после текущего кадра) или индекс опорного кадра, тем самым потенциально сокращая циклы процессора, которые требуются для определения вектора движения и сжатия данных вектора движения.

[0045] Кодер 20 видео также может реализовывать режим адаптивного предсказания вектора движения (AMVP), который, аналогично режиму слияния, включает в себя выражение векторов движения в качестве индекса, идентифицирующего один из векторов движения - кандидатов в качестве MVP. Тем не менее, в противоположность режиму слияния, кодер 20 видео также может указывать направление предсказания и опорный кадр, эффективно замещая эти части выбранного одного из векторов движения - кандидатов. При реализации режима AMVP, кодеру 20 видео может не требоваться выполнения оценки движения в полном объеме, который необходим для извлечения вектора движения, указания горизонтальной и вертикальной составляющих вектора движения, и разрешения вектора движения, тем самым потенциально сокращая циклы процессора, которые требуются для определения вектора движения и сжатия данных вектора движения.

[0046] Как правило, стандарты кодирования видео, которые являются предшественниками предлагаемого в настоящее время стандарта, HEVC, определяют различные пределы для сдерживания размера вертикальной и горизонтальной составляющих вектора движения. Эти пределы могут, как отмечено выше, быть определены в качестве диапазонов, которые удерживают в определенных пределах вертикальное и/или горизонтальное смещение максимальным и минимальным значениями. В HEVC, эти диапазоны составляющей вектора движения (обозначаемые обычно как «mvrange») были сначала предложены и использованы на основании использования этих диапазонов в предшествующих стандартах кодирования видео, таком как H.264. Тем не менее, совсем недавно, эти диапазоны для горизонтального и/или вертикального смещения были аннулированы в HEVC с тем, чтобы обеспечить возможность ссылки векторам движения в целом на любую часть опорного кадра. Также в стандарте HEVC векторы движения были определены как обладающие значениями составляющей, каждое из которых составляет в длину 16 бит, что, как правило, обеспечивает достаточное количество бит для выражения больших значений составляющей вектора движения, направленного чуть ли не на любую часть опорного кадра. Посредством обеспечения возможности векторам движения ссылаться вообще на любую часть опорного кадра, кодеры видео могут выполнять исчерпывающие поиски частей опорного кадра, что приводит к меньшему объему остаточных данных (что является еще одним способом сказать о более эффективном сжатии текущего блока видеоданных).

[0047] Тем не менее, в некоторых обстоятельствах, ограничение диапазона векторов движения может быть выгодным. Например, при выполнении одного из вышеприведенных процессов предсказания вектора движения (например, режима слияния или режима AMVP), один или более из векторов движения - кандидатов может быть масштабирован перед тем, как добавляется в список кандидатов. Тогда составляющие данного масштабированного вектора движения могут превысить 16-битную длину, которая обычно определена для каждой составляющей вектора движения. Когда такие масштабированные векторы движения больше 16-битной длины, кодер 20 видео может определить, что режим слияния недоступен или, другими словами, что режим слияния не может быть выбран. Данная аналогичная проблема может возникнуть при выполнении режима AMVP, поскольку один или более из векторов движения могут быть масштабированы при выполнении AMVP. Ограничение использования любого из или как режима слияния, так и режима AMVP может привести к неэффективности сжатия.

[0048] В соответствии с методиками, описываемыми в данном изобретении, кодер 20 видео может определять множество векторов движения - кандидатов для текущего блока видеоданных с тем, чтобы выполнить процесс предсказания вектора движения. Т.е., кодер 20 видео может идентифицировать один или более соседних блоков текущего блока видеоданных (где эти соседние блоки могут также именоваться как «блоки видеоданных - кандидаты» или «видеоблоки - кандидаты»). Кодер 20 видео может идентифицировать один или более (и, обычно, четыре) пространственные соседние блоки и один или более (и, обычно, один) временные соседние блоки. Местоположение этих пространственных и временных соседних блоков по отношению к текущему блоку подробно показано ниже в отношении Фиг. 6. После идентификации этих соседних блоков, кодер 20 видео затем может определять векторы движения, связанные с каждым из этих соседних блоков, где векторы движения могут представлять собой векторы движения - кандидаты для процесса предсказания вектора движения.

[0049] После определения этих векторов движения, кодер 20 видео может, в некоторых случаях, масштабировать один или более из множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы генерировать один или более масштабированных векторов движения - кандидатов. Для иллюстрации, при выполнении режима слияния процесса предсказания вектора движения, кодер 20 видео может определять вектор движения, связанный с временным соседним блоком, при этом данный временной соседний блок относится к блоку видеоданных, занимающему общее местоположение в той же самой позиции опорного кадра, что и у текущего блока видеоданных. Данный опорный кадр может быть связан со счетчиком очередности картинки, который относится к номеру, назначенному каждому кадру видеоданных, который идентифицирует очередность, в которой кадр должен отображаться по отношению к другим кадрам. Обычно, кодер 20 видео может масштабировать временной вектор движения - кандидат на основании разности счетчика очередности картинки между опорным кадром, в котором размещается блок видеоданных с общим местоположением, и текущим кадром, в котором размещается текущий блок видеоданных.

[0050] В качестве другого примера, при выполнении режима усовершенствованного предсказания вектора движения (AMVP) процесса предсказания вектора движения, кодер 20 видео может аналогичным образом масштабировать временной вектор движения - кандидат на основании разности счетчика очередности картинки между опорным кадром, в котором размещается блок видеоданных с общим местоположением, и текущим кадром, в котором размещается текущий блок видеоданных. Тем не менее, как отмечено выше, режим AMVP процесса предсказания вектора движения разрешает эффективное замещение различных аспектов векторов движения - кандидатов. В результате, в режиме AMVP процесса предсказания вектора движения, кодер 20 видео может замещать опорный кадр, связанный с пространственными векторами движения - кандидатами, что может привести к масштабированию пространственных векторов движения - кандидатов на основании разности в счетчике очередности картинки между указанным (или замещенным) опорным кадром и текущим кадром, в котором размещается текущий блок видеоданных. Соответственно, кодер 20 видео может масштабировать как временные, так и пространственные векторы движения - кандидаты при выполнении режима AMVP процесса предсказания вектора движения.

[0051] Затем кодер 20 видео может ограничивать диапазон одного или более масштабированных векторов движения - кандидатов таким образом, чтобы они находились в точно определенном диапазоне, перед выбором одного из множества векторов движения - кандидатов в качестве MVP для текущего блока. Другими словами, кодер 20 видео может модифицировать масштабированные векторы движения - кандидаты таким образом, чтобы они находились в рамках точно определенного диапазона, перед выбором одного из векторов движения - кандидатов в качестве MVP для текущего блока. При модифицировании одного или более масштабированных векторов движения - кандидатов перед выбором одного из векторов движения - кандидатов в качестве MVP для текущего блока, кодер 20 видео может модифицировать каждый из масштабированных векторов движения - кандидатов, чтобы гарантировать то, что эти масштабированные векторы движения - кандидаты удерживаются в определенных пределах указанным диапазоном (который также может именоваться как «пределы смещения»). Точно определенный диапазон, в качестве одного примера, точно определен как [-32768, 32767] в единицах четверти пикселя.

[0052] После выбора одного из векторов движения - кандидатов в качестве MVP для текущего блока (и потенциально модифицирования выбранного одного из векторов движения - кандидатов), кодер 20 видео затем может кодировать текущий блок видеоданных, используя MVP. Т.е., кодер 20 видео может использовать MVP для идентификации опорного блока в опорном кадре и генерировать остаточный блок видеоданных в качестве разности между текущим блоком и опорным блоком. Кодер 20 видео затем может выполнять упомянутые выше операции преобразования для преобразования данного остаточного блока видеоданных из пространственной области в частотную область, формируя блок коэффициентов преобразования. Кодер 20 видео далее может квантовать коэффициенты преобразования, осуществлять кодирование длины серий квантованных коэффициентов преобразования, и энтропийно кодировать (что является другим способом обращения к статистическому кодированию без потерь) полученные после кодирования по длинам серий квантованные коэффициенты преобразования. Кодер 20 видео может выводить эти закодированные видеоданные в битовый поток со связанными элементами синтаксиса.

[0053] Декодер 30 видео может принимать данный битовый поток и декодировать битовый поток в соответствии с элементами синтаксиса. Декодер 30 видео может в целом выполнять операции обратные тем, что описаны выше в отношении кодера 20 видео. Т.е., декодер 30 видео может энтропийно декодировать каждый блок закодированных видеоданных, выполнять обратное квантование, чтобы применить обратное квантование в отношении блока закодированных видеоданных, и применять обратное преобразование для преобразования полученного после обратного квантования блока закодированных видеоданных из частотной области в пространственную область. Данный преобразованный блок закодированных видеоданных может представлять собой восстановленную версию остаточных данных. Декодер 30 видео может определять из элементов синтаксиса, связанных с текущим блоком закодированных видеоданных, которые в данном случае могут относиться к восстановленной версии остаточных данных, что вектор движения для данного текущего блока должен быть получен при помощи процесса предсказания вектора движения.

[0054] Предполагая, что декодер 30 видео определяет, что вектор движения для данного текущего блока должен быть получен при помощи процесса предсказания вектора движения, декодер 30 видео может затем в целом выполнять те же операции, как те, что описаны выше в отношении кодера 20 видео, для получения предиктора вектора движения для текущего блока закодированных данных. Таким образом, декодер 30 видео может определять множество векторов движения - кандидатов для текущего блока видеоданных с тем, чтобы выполнять процесс предсказания вектора движения. Т.е., декодер 30 видео может идентифицировать один или более соседние блоки текущего блока видеоданных. Декодер 30 видео может идентифицировать один или более пространственные соседние блоки и один или более временные соседние блоки. Вновь, местоположение этих пространственных и временных соседних блоков по отношению к текущему блоку подробно показано ниже в отношении Фиг. 6. После идентификации этих соседних блоков, декодер 30 видео затем может определять векторы движения, связанные с каждым из этих соседних блоков, где векторы движения могут представлять собой векторы движения - кандидаты для процесса предсказания вектора движения.

[0055] После определения этих векторов движения, декодер 30 видео, в случаях, описанных выше в отношении кодера 20 видео, масштабирует один или более из множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов. Декодер 30 видео затем может ограничивать диапазон одного или более из масштабированных векторов движения - кандидатов таким образом, чтобы они находились в рамках точно определенного диапазона, перед выбором одного из множества векторов движения - кандидатов в качестве MVP для текущего блока. Другими словами, декодер 30 видео может модифицировать масштабированные векторы движения - кандидаты таким образом, чтобы они находились в рамках точно определенного диапазона, перед выбором одного из векторов движения - кандидатов в качестве MVP для текущего блока. При модифицировании одного или более из масштабированных векторов движения - кандидатов перед выбором одного из векторов движения - кандидатов в качестве MVP для текущего блока, декодер 30 видео может модифицировать каждый из масштабированных векторов движения - кандидатов, чтобы гарантировать то, что эти масштабированные векторы движения - кандидаты удерживаются в определенных пределах указанным диапазоном (который также может именоваться «пределами смещения»). Таким образом, декодер 30 видео может модифицировать масштабированные векторы движения - кандидаты, чтобы они находились в рамках точно определенного диапазона.

[0056] Декодер 30 видео может определять, какой из векторов движения - кандидатов выбирать, на основании одного или более элементов синтаксиса (такого как элемент синтаксиса индекс предиктора вектора движения («mvp_idx»)), связанных с текущим блоком видеоданных (которые были ранее указаны кодером 20 видео в битовом потоке). Декодер 30 видео, используя данный элемент mvp_idx индекса, например, может выбирать один из векторов движения - кандидатов. Затем декодер 30 видео может восстанавливать текущий блок видеоданных, используя вектор движения - кандидат для идентификации опорного блока видеоданных, который затем декодер 30 видео складывает с остаточными данными для восстановления текущего блока видеоданных. Затем декодер 30 видео сохраняет восстановленный блок видеоданных.

[0057] Таким образом, методики, описанные в данном изобретении могут в целом предоставлять кодировщику видео (любому из или как, например, кодеру 20 видео и декодеру 30 видео) возможность модифицирования тех векторов движения - кандидатов, которые были масштабированы. Т.е., методики могут предоставлять таким кодировщикам видео возможность модифицирования только тех векторов движения - кандидатов процесса предсказания вектора движения, которые должны быть масштабированы, не модифицируя или же даже в дальнейшем не рассматривая те из векторов движения - кандидатов, которые не были масштабированы. В связи с этим, методики могут обеспечивать компромисс между модифицированием всех из векторов движения - кандидатов и модифицированием ни одного из векторов движения - кандидатов, таким образом, что только те вектора движения - кандидаты, которые были масштабированы, рассматриваются для модифицирования.

[0058] Методики для удержания в определенных пределах смещения составляющей вектора движения, описанные в отношении примеров данного изобретения, могут быть применены к кодированию видео для поддержки любых из многообразия мультимедийных приложений, таких как: эфирное телевизионное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео, например, через Интернет, кодирование цифрового видео для хранения на носителе хранения данных, декодирование цифрового видео, хранящегося на носителе хранения данных, или других приложений. В некоторых примерах, система 10 может быть выполнена для поддержки односторонней или двусторонней передачи видео для приложений, таких как потоковая передача видео, воспроизведение видео, вещание видео, и/или видео телефония.

[0059] Несмотря на то, что не показано на Фиг. 1, в некоторых аспектах, кодер 20 видео и декодер 30 видео каждый может быть объединен с аудио кодером и декодером, и может включать в себя соответствующие модули MUX-DEMUX, или иное аппаратное и программное обеспечение, для обработки кодирования как аудио, так и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах, модули MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223, или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).

[0060] Кодер 20 видео и декодер 30 видео каждый может быть реализован в качестве любой из многообразия пригодных схем кодера, таких как один или более микропроцессоры, цифровые сигнальные процессоры (DSP), специализированные интегральные микросхемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, программное обеспечение, аппаратное обеспечение, встроенное программное обеспечение или любое их сочетание. При частичной реализации методик в программном обеспечении, устройство может хранить инструкции для программного обеспечения на пригодном, невременном считываемом компьютером носителе данных и исполнять инструкции в аппаратном обеспечении, при помощи одного или более процессоров для выполнения методик данного изобретения. Каждый из кодера 20 видео и декодера 30 видео может быть включен в один или более кодеры или декодеры, любой из которых может быть интегрирован как часть объединенного кодера/декодера (CODEC) в соответствующее устройство.

[0061] Фиг. 2 является структурной схемой, иллюстрирующей пример кодера 20 видео, который может реализовывать методики для точного определения предикторов вектора движения. Кодер 20 видео может выполнять интра- и интер- кодирование блоков в видеокадрах, включая макроблоки, или разделы или подразделы макроблоков. Интра-кодирование основывается на пространственном предсказании для сокращения или удаления пространственной избыточности в видео внутри заданного видеокадра. Интер-кодирование основывается на временном предсказании для сокращения или удаления временной избыточности в видео в пределах смежных кадров видеопоследовательности. Интра-режим (I-режим) может относиться к любому из нескольких основанных на пространстве режимов сжатия, а интер-режимы, такие как однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим), могут относиться к любому из нескольких основанных на времени режимов сжатия. Несмотря на то, что на Фиг. 2 изображены компоненты для кодирования в интер-режиме, следует понимать, что кодер 20 видео может дополнительно включать в себя компоненты для кодирования в интра-режиме. Тем не менее, такие компоненты не проиллюстрированы для краткости и ясности.

[0062] Как показано на Фиг. 2, кодер 20 видео принимает текущий видеоблок в видеокадре, который должен быть закодирован. В примере на Фиг. 2, кодер 20 видео включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, память 64, сумматор 50, модуль 52 преобразования, модуль 54 квантования, и модуль 56 энтропийного кодирования. Для восстановления видеоблока, кодер 20 видео также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования, и сумматор 62. Фильтр удаления блочности (не показан на Фиг. 2) также может быть включен для фильтрации границ блока с целью удаления артефактов блочности из восстановленного видео. При желании, фильтр удаления блочности, как правило, будет фильтровать выход сумматора 62. Несмотря на то, что описан как включающий в себя память 64, которая, как правило, относится к запоминающему устройству с произвольной выборкой (RAM), динамическому RAM (DRAM), статическому RAM (SRAM), Flash памяти или другому постоянному или непостоянному основанному на микросхеме запоминающему носителю информации, может использоваться любой тип невременного считываемого компьютером носителя данных, включая накопители на жестких дисках, накопители на оптических дисках, дисковые накопители, и подобное.

[0063] Во время процесса кодирования, кодер 20 видео принимает видеокадр или слайс (вырезка), который должен быть закодирован. Кадр или слайс может быть разделен на несколько видеоблоков. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с интер-предсказанием принятого видеоблока по отношению к одному или более блокам в одном или более опорных кадрах для обеспечения временного сжатия. Модуль 46 интра-предсказания также может выполнять кодирование с интра-предсказанием принятого видеоблока по отношению к одному или более соседним блокам в том же самом кадре или слайсе, что и блок, который должен быть закодирован, для обеспечения пространственного сжатия.

[0064] Как дополнительно показано в примере на Фиг. 2, кодер 20 видео включает в себя модуль 40 выбора режима. Модуль 40 выбора режима может выбирать один из режимов кодирования, интра или интер, например, на основании результатов ошибки, и предоставлять результирующий закодированный с интра-предсказанием или интер-предсказанием блок сумматору 50 для генерирования данных остаточного блока и сумматору 62 для восстановления закодированного блока для использования в качестве опорного кадра.

[0065] Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высокоинтегрированными, однако иллюстрируются по отдельности для концептуальных целей. Оценка движения является процессом генерирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение предсказывающего блока внутри предсказывающего опорного кадра (или другой закодированной единицы) относительно текущего кодируемого блока внутри текущего кадра (или другой закодированной единицы). Предсказывающий блок является блоком, который обнаружен как близко совпадающий с блоком, который должен быть закодирован, в единицах пиксельной разности, которая может быть определена посредством суммы абсолютных разностей (SAD), суммы квадратных разностей (SSD), или других метрик разности. Вектор движения также может указывать смещение раздела макроблока. Компенсация движения может включать в себя отсчет или генерирование предсказывающего блока на основании вектора движения, который определен посредством оценки движения. Вновь, модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально объединены, в некоторых примерах.

[0066] Модуль 42 оценки движения вычисляет вектор движения для видеоблока, кодируемого с интер-предсказанием кадра, посредством сравнения видеоблока с видеоблоками опорного кадра в памяти 64. Модуль 44 компенсации движения также может интерполировать суб-целочисленные пиксели опорного кадра, например, I-кадра или P-кадра. Развивающийся стандарт HEVC (и стандарт ITU H.264) хранит опорные кадры посредством одной или более структур данных в виде списка, которые в общем именуются как «списки». Вследствие этого, данные, хранящиеся в памяти 64, также могут быть рассматриваемыми списками. Модуль 42 оценки движения сравнивает блоки одного или более опорных кадров (или списков) из памяти 64 с блоком, который должен быть закодирован, текущего кадра, например, P-кадра или B-кадра. Когда опорные кадры в памяти 64 включают в себя значения суб-целочисленных пикселей, то вектор движения, вычисляемый модулем 42 оценки движения, может относиться к суб-целочисленному местоположению пикселя опорного кадра. Модуль 42 оценки движения отправляет вычисленный вектор движения модулю 56 энтропийного кодирования и модулю 44 компенсации движения. Блок опорного кадра (который может содержать CU), идентифицированный вектором движения, может именоваться предсказывающим блоком. Модуль 44 компенсации движения вычисляет значения ошибки для предсказывающего блока опорного кадра.

[0067] Модуль 44 компенсации движения может вычислять данные предсказания на основании предсказывающего блока. Кодер 20 видео формирует остаточный видеоблок посредством вычитания данных предсказания от модуля 44 компенсации движения из исходного кодируемого видеоблока. Сумматор 50 представляет собой компонент или компоненты, которые выполняют данную операцию вычитания. Модуль 52 преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий остаточные значения коэффициента преобразования. Модуль 52 преобразования может выполнять другие преобразования, такие как те, что определены стандартом H.264, которые концептуально аналогичны DCT. Также могут быть использованы вейвлет преобразования, целочисленные преобразования, полосные преобразования или другие типы преобразований. В любом случае, модуль 52 преобразования применяет преобразование к остаточному блоку, создавая блок остаточных коэффициентов преобразования. Преобразование может конвертировать остаточную информацию из области значения пикселя в область преобразования, такую как частотная область. Модуль 54 квантования квантует остаточные коэффициенты преобразования, чтобы дополнительно сократить скорость передачи бит. Процесс квантования может сокращать битовую глубину, связанную с некоторыми или со всеми коэффициентами. Степень квантования может быть модифицирована посредством регулировки параметра квантования.

[0068] Вслед за квантованием, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно-зависимое адаптивное кодирование с переменной длиной кодового слова (CVLC), контекстно-зависимое адаптивное бинарное арифметическое кодирование (CABAC), или другую методику энтропийного кодирования. Вслед за энтропийным кодированием посредством модуля 56 энтропийного кодирования, закодированное видео может быть передано другому устройству или заархивировано для передачи или извлечения позже. В случае контекстно-зависимого адаптивного бинарного арифметического кодирования, контекст может быть основан на соседних макроблоках.

[0069] В некоторых случаях, модуль 56 энтропийного кодирования или другой модуль кодера 20 видео может быть выполнен с возможностью выполнения других функций кодирования, в дополнение к энтропийному кодированию. Например, модуль 56 энтропийного кодирования может быть выполнен с возможностью определения значения CBP для макроблоков и разделов. Также, в некоторых случаях, модуль 56 энтропийного кодирования может выполнять кодирование по длинам серий коэффициентов в макроблоке или его разделе. В частности, модуль 56 энтропийного кодирования может применять зигзагообразное сканирование или другой шаблон сканирования для сканирования коэффициентов преобразования в макроблоке или разделе и кодировать ряды нулей для дальнейшего сжатия. Модуль 56 энтропийного кодирования также может создавать информацию заголовка с соответствующими элементами синтаксиса для передачи в битовом потоке закодированного видео.

[0070] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для восстановления остаточного блока в области пикселей, например, для последующего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислять опорный блок посредством сложения остаточного блока с предсказывающим блоком одного из кадров хранилища опорных кадров в памяти 64. Модуль 44 компенсации движения также может применять один или более фильтры интерполяции для восстановления остаточного блока для вычисления суб-целочисленных значений пикселя для использования при оценке движения. Сумматор 62 складывает восстановленный остаточный блок с полученным после компенсации движения блоком предсказания, созданным модулем 44 компенсации движения, для создания восстановленного видеоблока для сохранения в хранилище опорных кадров в памяти 64. Восстановленный видеоблок может быть использован модулем 42 оценки движения и модулем 44 компенсации движения в качестве опорного блока для интер-кодирования блока в последующем видеокадре.

[0071] Как отмечено выше, модуль 42 оценки движения может, в некоторых случаях, не вычислять вектор движения, а вместо этого может определять список векторов движения - кандидатов (например, так называемый «список кандидатов»), четыре вектора в котором являются пространственными векторами движения - кандидатами, а один вектор в котором является временным вектором движения - кандидатом. Как правило, модуль 42 оценки движения воздерживается от вычисления вектора движения для того, чтобы сократить сложность вычислений оценки движения и тем самым повысить скорость, с которой могут кодироваться видеоданные, при этом также сокращая энергопотребление.

[0072] В соответствии с методиками, описываемыми в настоящем изобретении, модуль 42 оценки движения может определять множество векторов движения - кандидатов для текущего блока видеоданных с тем, чтобы выполнить процесс предсказания вектора движения, и масштабировать один или более из множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов. Как отмечено выше, данный процесс масштабирования может быть основан на разности между счетчиками очередности картинки для опорного и текущего кадра. В частности, модуль 42 оценки движения может определять так называемый масштабный коэффициент по расстоянию (который может быть представлен в стандарте HEVC в качестве переменной «DistScaleFactor»), когда предиктор вектора движения получается из вектора движения - кандидата, указывающего на другую опорную картинку или кадр.

[0073] В данном процессе масштабирования вектора движения, модуль 42 оценки движения может вычислять DistScaleFactor, который может быть определен следующим уравнением (1):

DistScaleFactor=(POCcurr-POCref)/(POCmvp_blk-POCmvp_blk_ref)=tb/td. (1)

В уравнении (1), POC относится к счетчику очередности картинки, где POCcurr обозначает счетчик очередности картинки для текущей картинки или кадра, POCref относится к счетчику очередности картинки опорного кадра или картинки, POCmvp_blk обозначает счетчик очередности картинки кадра или картинки, в которой размещается потенциальный или соседний блок с выбранным одним из векторов движения - кандидатов (или, другими словами, MVP), и POCmvp_blk_ref обозначает счетчик очередности картинки для картинки или кадра, в котором размещается опорный блок, на который указывает MVP. Переменная «td» в уравнении (1) вследствие этого представляет собой разность счетчиков очередности картинки (или, другими словами, расстояние) между блоком MVP_BLK и его опорным блоком, тогда как переменна «tb» в уравнении (1) представляет собой расстояние POC между текущим блоком и его опорным блоком.

[0074] Модуль 42 оценки движения может дополнительно вычислять коэффициент масштабирования, обозначенный как «tx», в соответствии со следующим уравнением (2):

tx=(16384+Abs(td/2))/td. (2)

Модуль 42 оценки движения тогда может вычислять DistScaleFactor в соответствии со следующим уравнением (3):

DistScaleFactor=Clip3(-4096, 4095, (tb*tx+32)>>6). (3)

Вследствие этого DistScaleFactor может быть вычислен как функция от td и tx, но урезанная таким образом, чтобы он находился в точно определенном диапазоне от -4096 до 4095. Используя данный DistScaleFactor, модуль 42 оценки движения может масштабировать один или более векторов движения - кандидатов в соответствии со следующим уравнением (4):

caledMV=sign(DistScaleFactor × MV)×((abs(DistScaleFactor × MV)+127))>>8. (4)

В уравнении (4), ScaledMV обозначает масштабированный вектор движения - кандидат, «sign» относится к функции, которая возвращает знаки, «abs» относится к функции, которая вычисляет абсолютное значение значения и «>>» обозначает побитовый сдвиг вправо.

[0075] Как отмечено выше, ScaledMV, основанный на расстояниях POC, может превышать точно определенный диапазон (который может именоваться «диапазоном вектора движения» или, в качестве альтернативы, «диапазоном»), который может быть определен в соответствии с профилем или уровнем кодирования видео. В результате, модуль 42 оценки движения может выполнять методики, описываемые в данном изобретении, для модифицирования масштабированных векторов движения - кандидатов, чтобы они находились в рамках точно определенного диапазона. Более того, модуль 42 оценки движения может модифицировать масштабированные векторы движения - кандидаты без модификации любых других векторов движения - кандидатов, которые не были масштабированы.

[0076] Модуль 42 оценки движения может модифицировать масштабированные векторы движения - кандидаты несколькими способами. Например, модуль 42 оценки движения может усекать вертикальную составляющую масштабированного вектора движения - кандидата, чтобы она оставалась в границах диапазона вектора движения. Другими словами, модуль 42 оценки движения может эффективно ограничивать вертикальное значение вектора движения максимальным/минимальным диапазоном вертикальной составляющей вектора движения.

[0077] В качестве другого примера, модуль 42 оценки движения может масштабировать масштабированный вектор движения - кандидат, чтобы он оставался в границах диапазона вектора движения. Для иллюстрации, применительно к заданному масштабированному вектору движения с горизонтальной составляющей (mv_x) и вертикальной составляющей (mv_y), которая превышает точно определенный диапазон вертикальных пределов вектора движения, модуль 42 оценки движения может ограничивать y-составляющую до mv_y', которая соответствует вертикальному пределу MV. Модуль 42 оценки движения также может масштабировать горизонтальную составляющую, mv_x в соответствии со следующим уравнением (5):

mv_x'=mv_x*mv_y'/mv_y. (5)

В уравнении (5), mv_x' обозначает масштабированную горизонтальную составляющую масштабированного вектора движения - кандидата. Модуль 42 оценки движения может выполнять данную операцию масштабирования, выраженную в качестве уравнения (5) с различными уровнями точности, используя аппроксимации операции деления для создания модифицированного масштабированного вектора движения с потенциально как модифицированной горизонтальной составляющей, mv_x', так и модифицированной вертикальной составляющей, mv_y'.

[0078] Несмотря на то, что методики описаны выше в отношении нескольких разных способов, посредством которых можно модифицировать один или более из масштабированных векторов движения, методики могут быть выполнены в любом количестве способ для модифицирования векторов движения - кандидатов при выполнении процесса предсказания вектора движения. Например, модуль 42 оценки движения может усекать масштабированные векторы движения - кандидаты перед выбором одного из множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных.

[0079] В качестве еще одного другого примера, модуль 42 оценки движения может усекать вертикальную составляющую масштабированных векторов движения - кандидатов, чтобы она находилась в рамках вертикального точно определенного диапазона, и усекать горизонтальную составляющую масштабированных векторов движения - кандидатов, чтобы она находилась в рамках горизонтального точно определенного диапазона. В этих случаях, операции усечения могут соответствовать следующему уравнению (6):

mvLXA=Clip3(-32768, 32767, Sign2(DistScaleFactor*mvLXA)* ((Abs(DistScaleFactor*mvLXA)+127)>>8)). (6)

В уравнении (6), уравнение усечения включает в себя уравнение масштабирования, показанное выше как уравнение (4), при этом усечение одной из или как горизонтальной, так и вертикальной составляющих масштабированного вектора движения, выполняется до точно определенного диапазона от -32768 до 32767. Масштабированный вектор движения обозначен в уравнении (6) как «mvLXA». Другими словами, точно определенный диапазон может быть указан, как [-32768, 32767] в единицах четверти пикселя, при этом данный точно определенный диапазон, может, в некоторых случаях, быть фиксированным и жестко заданным в одном или более из декодера видео и кодера видео.

[0080] В некоторых случаях, точно определенный диапазон может указывать, как отмечено выше, предел смещения вектора движения, который включает в себя предел вертикального смещения, при этом модуль 42 оценки движения может усекать вертикальную составляющую масштабированных векторов движения - кандидатов таким образом, что вертикальная составляющая масштабированных векторов движения - кандидатов находится в рамках предела вертикального смещения.

[0081] В некоторых случаях, вместо усечения как горизонтальной, так и вертикальной составляющих, модуль 42 оценки движения может усекать только горизонтальную составляющую масштабированного вектора движения - кандидата. Вновь, точно определенный диапазон может указывать предел смещения вектора движения, который включает в себя предел горизонтального смещения, и модуль 42 оценки движения может усекать горизонтальную составляющую масштабированных векторов движения - кандидатов таким образом, что горизонтальная составляющая масштабированных векторов движения - кандидатов находится в рамках предела горизонтального смещения. Как отмечено выше, модуль 42 оценки движения может усекать одну из горизонтальной или вертикальной составляющих и затем масштабировать другую, не усеченную составляющую (которая может быть вертикальной составляющей и не должна ограничиваться вышеприведенным примером), так что масштабированные вектора движения - кандидаты ограничиваются одним или более пределами смещения вектора движения. Соответственно, методики не должны ограничиваться любым из описанного выше примерного модифицирования.

[0082] Для выбора одного из векторов движения - кандидатов в качестве предиктора вектора движения, модуль 44 компенсации движения затем может идентифицировать блок опорного кадра (который, вновь, может именоваться как блок предсказания) для каждого из векторов движения - кандидатов, включенных в список. Модуль 44 компенсации движения затем может вычислять данные предсказания на основании предсказывающего блока, который определен для каждого из векторов движения - кандидатов. Кодер 20 видео затем может определять остаточные данные для каждых данных предсказания, вычисленных для соответствующего одного из векторов движения - кандидатов, преобразовывать остаточные данные, квантовать преобразованные остаточные данные и затем энтропийно кодировать квантованные остаточные данные описанным выше способом. Затем кодер 20 видео может выполнять обратные операции для декодирования этих энтропийно закодированных остаточных данных, сгенерированных в отношении каждого из векторов движения - кандидатов, оставшихся после усечения, для воссоздания опорных данных в виде восстановленных видеоблоков. Модуль 40 выбора режима может анализировать каждый из восстановленных видеоблоков, сгенерированных в отношении каждого из векторов движения - кандидатов, для выбора одного из векторов движения - кандидатов. Модуль 40 выбора режима может выбирать один из векторов движения - кандидатов, который обеспечивает наилучшее отношение скорости к искажению посредством процесса обычно именуемого как «оптимизация скорости к искажению», который, как правило, указывается аббревиатурой «RDO».

[0083] RDO обычно включает в себя сравнение восстановленного кадра, слайса или блока, сжатого для достижения некоторой скорости (которая обычно именуется частотой следования битов, с которой сжатые видеоданные, которые включают в себя сжатый кадр, слайс или блок, могут быть отправлены) с исходным кадром, слайсом или блоком, и определение объема искажений, которые присутствуют между исходным кадром, слайсом или блоком и восстановленным кадром, слайсом или блоком при заданной скорости. Модуль 40 выбора режима может кодировать одни и те же видеоданные при помощи нескольких разных метрик, которые достигают или пытаются достигнуть заданной скорости, выполняя процесс оптимизации искажения в отношении этих различных метрик. В данном случае, модуль 40 выбора режима может сравнивать выходные данные RDO каждого восстановленного видеоблока и выбирать один, который обеспечивает наименьшее искажение при целевой скорости.

[0084] Затем модуль 40 выбора режима может указывать данный выбор модулю 42 оценки движения, который переходит к взаимодействию с модулем 56 энтропийного кодирования для информирования модуля 56 энтропийного кодирования о выборе. Как правило, модуль 42 оценки движения взаимодействует с модулем 56 энтропийного кодирования для указания того, что было выполнено предсказание вектора движения, наряду с индексом, идентифицирующим выбранный вектор движения - кандидат. Как отмечено выше, модуль 42 оценки движения может упорядочивать векторы движения - кандидаты определенным образом, как например, от наибольшей амплитуды к наименьшей амплитуде или от наименьшей амплитуды к наибольшей амплитуде или любым другим определенным образом. В качестве альтернативы, модуль 42 оценки движения также может сигнализировать модулю 56 энтропийного кодирования способ, посредством которого векторы движения - кандидаты были упорядочены в данном потенциальном списке. Модуль 56 энтропийного кодирования затем может кодировать данный индекс наряду с любой другой информацией, которая может быть необходима для указания того, что для кодирования данных движения был выполнен процесс предсказания вектора движения. Модуль 56 энтропийного кодирования может выводить закодированный индекс в качестве элемента синтаксиса (который может быть обозначен как «mvp_idx») в битовый поток, который может сохраняться или передаваться образом, который описан выше в отношении примера на Фиг. 1. Таким образом, кодер 20 видео может выбирать один из множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных и кодировать текущий блок видеоданных на основании предиктора вектора движения.

[0085] В некоторых случаях, модуль 56 энтропийного кодирования выполняет вид энтропийного кодирования именуемый контекстно-зависимым адаптивным бинарным арифметическим кодированием (CABAC). При выполнении CABAC, модуль 56 энтропийного кодирования может выбирать один из множества так называемых контекстов (которые являются разными кодовыми таблицами, точно определенными для разного контекста так, чтобы более эффективно сжимать видеоданные, связанные с соответствующим контекстом) и кодировать сжатые остаточные данные в соответствии с кодовой таблицей, которая определена для выбранного контекста. Модуль 56 энтропийного кодирования может выбирать один из контекстов на основании информации контекста, которая может включать в себя опорный индекс, который определен при выполнении предсказания вектора движения, количество уникальных векторов движения - кандидатов и направление предсказания, которое определено при выполнении предсказания вектора движения.

[0086] Фиг. 3 является структурной схемой, иллюстрирующей пример декодера 30 видео, который декодирует закодированную видеопоследовательность. В примере на Фиг. 3, декодер 30 видео включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 интра-предсказания, модуль 76 обратного квантования, модуль 78 обратного преобразования, память 82 и сумматор 80. Декодер 30 видео может, в некоторых примерах, выполнять проход декодирования в целом обратный проходу кодирования, описанному в отношении кодера видео, такого как кодер 20 видео, показанный в примерах на Фиг. 1 и 2. Несмотря на то, что проход в целом является обратным, декодер 30 видео может, в некоторых случаях, выполнять методики, аналогичные тем, что выполняются кодером 20 видео. Другими словами, декодер 30 видео может выполнять по существу процессы аналогичные тем, что выполняются кодером 20 видео. Более того, как описано выше, кодер 20 видео может выполнять декодирование видео в процессе выполнения кодирования видео. Для иллюстрации, модуль 58 обратного квантования, модуль 60 обратного преобразования, и сумматор 62 кодера 20 видео могут выполнять операции по существу аналогичные операциям, выполняемым модулем 76 обратного квантования, модулем 78 обратного преобразования и сумматором 80 декодера 30 видео.

[0087] Как показано в примере на Фиг. 3, модуль 70 энтропийного декодирования принимает закодированный битовый поток, который в целях иллюстрации предполагается, что включает в себя унарный или усеченный унарный закодированный индекс, идентифицирующий выбранный вектор движения - кандидат (где, вновь, эти векторы движения - кандидаты могут именоваться векторами движения - кандидатами или предикторами вектора движения - кандидатами («MVP - кандидатами»)). Модуль 70 энтропийного декодирования может, при выполнении процесса в целом обратного процессу, выполняемому модулем 56 энтропийного кодирования кодера 20 видео, принимать элемент синтаксиса или другие данные кодирования для текущей PU, указывающие на то, что для текущей PU для определения вектора движения выполнялся процесс предсказания вектора движения. В ответ на данный элемент синтаксиса или другие данные кодирования, модуль 70 энтропийного декодирования проводит синтаксический анализ индекса (mvp_idx) предиктора вектора движения в битовом потоке, предоставляя данный индекс предиктора вектора движения модулю 72 компенсации движения. Модуль 70 энтропийного декодирования также декодирует закодированный блок видеоданных, с которым связан данный индекс предиктора вектора движения, предоставляя данный закодированный блок видеоданных модулю 76 обратного квантования.

[0088] Модуль 72 компенсации движения извлекает пространственные векторы движения - кандидаты для PU, смежных с текущей PU, и временной вектор движения - кандидат для совместно расположенной PU в опорном кадре. Модуль 70 энтропийного декодирования также может предоставлять модулю 72 компенсации движения опорный кадр, идентифицированный для текущей PU (как правило, в качестве другого элемента синтаксиса в битовом потоке). В качестве альтернативы, модуль 72 компенсации движения может быть выполнен с возможностью реализации либо AMVP, или режима слияния, извлечения временного вектора движения - кандидата из опорного кадра, идентифицируемого установленным образом (например, как один, два или любое другое число назад или вперед от текущего кадра, в котором располагается текущая PU).

[0089] Затем модуль 72 компенсации движения может создавать список кандидатов, который включает в себя четыре пространственных вектора движения - кандидата и временной вектор движения - кандидат. При генерировании данного списка кандидатов, модуль 72 компенсации движения может масштабировать один или более из множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов. Как отмечено выше, данный процесс масштабирования может быть основан на разности между счетчиками очередности картинки для опорного и текущего кадра. Более того, масштабированный вектор движения, основанный на расстояниях POC, может превышать точно определенный диапазон (который может именоваться «диапазоном вектора движения»), который может быть определен в соответствии с профилем или уровнем кодирования видео. В результате, модуль 72 компенсации движения может выполнять методики, описанные в данном изобретении для модифицирования масштабированных векторов движения - кандидатов, чтобы они находились в рамках точно определенного диапазона. Более того, модуль 72 компенсации движения может модифицировать масштабированные векторы движения - кандидаты без модификации любых других векторов движения - кандидатов, которые не были масштабированы.

[0090] Модуль 72 компенсации движения может модифицировать масштабированные векторы движения - кандидаты любым количеством способов, описанных выше в отношении модуля 42 оценки движения кодера 20 видео, показанного в примерах на Фиг. 1, 2. Например, модуль 72 компенсации движения может усекать вертикальную составляющую масштабированного вектора движения - кандидата, чтобы он оставался в границах диапазона вектора движения. Другими словами, модуль 72 компенсации движения может эффективно ограничивать вертикальное значение вектора движения максимальным/минимальным диапазоном вертикальной составляющей вектора движения. Модуль 72 компенсации движения также может усекать горизонтальную составляющую вектора движения - кандидата, чтобы он оставался в границах диапазона вектора движения. Другими словами, модуль 72 компенсации движения может эффективно ограничивать горизонтальное значение вектора движения максимальным/минимальным диапазоном горизонтальной составляющей вектора движения.

[0091] В качестве другого примера, модуль 72 компенсации движения может масштабировать масштабированный вектор движения - кандидат, чтобы он оставался в границах диапазона вектора движения. Для иллюстрации, применительно к заданному масштабированному вектору движения с горизонтальной составляющей (mv_x) и вертикальной составляющей (mv_y), которая превышает точно определенный диапазон вертикальных пределов вектора движения, модуль 72 компенсации движения может ограничивать y-составляющие до mv_y', которая соответствует вертикальному пределу MV.

[0092] В любом случае, после формирования данного списка кандидатов, модуль 72 компенсации движения затем выбирает один из векторов движения - кандидатов из списка кандидатов, который идентифицируется индексом предиктора вектора движения. Применительно к закодированному с интер-предсказанием блоку, модуль 72 компенсации движения может затем генерировать данные интер-предсказания на основании идентифицированного вектора движения Модуль 72 компенсации движения может использовать данный вектор движения для идентификации блока предсказания в опорных кадрах, хранящихся в памяти 82. Применительно к закодированным с интра-предсказанием блокам, модуль 74 интра-предсказания может использовать режимы интра-предсказания, принятые в битовом потоке, для формирования блока предсказания из пространственно смежных блоков. Модуль 76 обратного квантования обратно квантует, т.е., применяет обратное квантование к квантованным коэффициентам блока, предоставленным в битовом потоке и декодированным посредством модуля 70 энтропийного декодирования. Процесс обратного квантования может включать в себя обычный процесс, например, как определено стандартом декодирования H.264. Процесс обратного квантования также может включать в себя использование параметра QPY квантования, вычисленного сумматором 50 для каждого макроблока, чтобы определить степень квантования и, аналогичным образом, степень обратного квантования, которое должно быть применено.

[0093] Модуль 60 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования для того, чтобы создать остаточные блоки в пиксельной области. Модуль 72 компенсации движения создает блоки после компенсации движения, возможно выполняя интерполяцию на основании фильтров интерполяции. Идентификаторы для фильтров интерполяции, которые должны быть использованы для оценки движения с суб-пиксельной точностью, могут быть включены в элементы синтаксиса. Модуль 72 компенсации движения может использовать фильтры интерполяции, как те, что используются кодером 20 видео во время кодирования видеоблока для вычисления интерполированных значений для суб-целочисленных пикселей опорного блока. Модуль 72 компенсации движения может определять фильтры интерполяции, использованные кодером 20 видео, в соответствии с принятой информацией синтаксиса, и использовать фильтры интерполяции для создания предсказывающих блоков.

[0094] Модуль 72 компенсации движения использует некоторую информацию синтаксиса для определения размеров CU, использованных для кодирования кадра(ов) закодированной видеопоследовательности, информацию раздела, которая описывает то, каким образом каждая CU кадра закодированной видеопоследовательности разделена, режимы, указывающие на то, каким образом закодирована каждая CU, один или более опорных кадров (или списки) для каждой закодированной с интер-предсказанием CU, и прочую информацию для декодирования закодированной видеопоследовательности.

[0095] Сумматор 80 суммирует остаточные блоки с соответствующими блоками предсказания, сгенерированными модулем 72 компенсации движения или модулем интра-предсказания для формирования декодированных блоков. При необходимости, также может быть применен фильтр удаления блочности для фильтрации декодированных блоков с целью удаления артефактов блочности. Декодированные видеоблоки затем сохраняются в хранилище опорного кадра в памяти 82, которое может именоваться буфером декодированной картинки в стандарте HEVC, которое предоставляет опорные блоки для последующей компенсации движения и также предоставляет декодированное видео для представления на устройстве отображения (таком как устройство 32 отображения с Фиг. 1).

[0096] В некоторых случаях, временной вектор движения - кандидат может быть недоступен, как например, когда слайс, который точно определяет временной вектор движения - кандидат, потерян, т.е., не восстановлен или не принят в закодированном битовом потоке, в качестве одного примера. Когда данный временной вектор движения - кандидат недоступен, модуль 72 компенсации движения может устанавливать данный временной вектор движения - кандидат равным значению по умолчанию или иным образом может определять информацию вектора движения по умолчанию для данного временного вектора движения - кандидата. В некоторых случаях, данная информация вектора движения по умолчанию для временного вектора движения - кандидата может быть восстановлена в зависимости от того, был ли опорный кадр закодирован с интра-предсказанием. Когда определяется, что опорный кадр является закодированным с интра-предсказанием, модуль 72 компенсации движения может извлекать информацию вектора движения по умолчанию для вектора движения - кандидата по умолчанию на основании пространственных векторов движения, которые определены для части опорного кадра, которая занимает общее местоположение в том же самом местоположении опорного кадра, в котором располагается и текущая часть в текущем кадре. Аналогичным образом, один или более из предсказанных по времени пространственных векторов движения - кандидатов могут быть недоступны или потеряны и может извлекаться информация вектора движения по умолчанию для вектора движения - кандидата по умолчанию на основании пространственных векторов движения, которые определены для части опорного кадра, которая занимает общее местоположение в том же самом местоположении опорного кадра, в котором располагается и текущая часть в текущем кадре.

[0097] Как отмечено выше, существует два типа предсказания вектора движения: режим слияния и AMVP. Применительно к режиму слияния, модуль 72 компенсации движения определяет амплитуду вектора движения, направление предсказания и опорный индекс, при определении информации движения по умолчанию. Применительно к AMVP, модуль 72 компенсации движения определяет амплитуду вектора движения, но ему не требуется определять направление предсказания и опорный индекс, поскольку они сигнализируются отдельно в битовом потоке для текущей PU. Таким образом, модуль 72 компенсации движения может основывать определение информации движения по умолчанию на основании режима, сигнализируемого для выполнения предсказания вектора движения, т.е., является ли тип сигнализируемого предсказания вектора движения режимом слияния или AMVP для текущей PU.

[0098] Фиг. 4 является блок-схемой, иллюстрирующей примерное функционирование кодировщика видео, такого как кодер 20 видео, показанный в примере на Фиг. 2 и/или декодер 30 видео, показанный в примере на Фиг. 3, при выполнении аспектов методик предсказания вектора движения, описываемых в данном изобретении. Исходно, обращаясь сначала к кодеру 20 видео, модуль 42 оценки движения может, как описано выше, определять пространственные векторы движения - кандидаты для текущей PU, соответствующей текущей CU (90). Модуль 42 оценки движения может далее определять временной вектор движения - кандидат для текущей PU из совместно расположенной PU в опорном кадре, вновь, как описано выше (92). При определении любого из или как пространственных векторов движения - кандидатов, так и временного вектора движения - кандидата, модуль 42 оценки движения может масштабировать один или более из векторов движения - кандидатов описанным выше способом (94). Дополнительно, модуль 42 оценки движения может модифицировать один или более масштабированные векторы движения, как описано выше (95).

[0099] После модифицирования одного или более масштабированных векторов движения, модуль 42 оценки движения может формировать список кандидатов из пространственных и временных векторов движения - кандидатов и выбирать один из векторов движения - кандидатов в качестве MVP для текущей PU (96, 98). Данный выбор может, как отмечено выше, включать выполнение кодером 20 видео анализа RDO, при этом выбранный один из векторов движения - кандидатов затем используется для кодирования блока видеоданных описанным выше способом. Модуль 56 энтропийного кодирования может указывать выбранный один из векторов движения - кандидатов в качестве индекса (mvp_idx) предиктора вектора движения в битовом потоке, тем самым позволяя декодеру видео идентифицировать выбранный один из векторов движения - кандидатов.

[0100] Применительно к декодеру 30 видео, модуль 72 компенсации движения может выполнять операции аналогичные тем, что описаны выше в отношении модуля 42 оценки движения. Т.е., модуль 72 компенсации движения может, как описано выше, определять пространственные векторы движения - кандидаты для текущей PU, соответствующей текущей CU (90). Модуль 72 компенсации движения может далее определять временной вектор движения - кандидат для текущей PU из совместно расположенной PU в опорном кадре, вновь, как описано выше (92). При определении любого из или как пространственных векторов движения - кандидатов, так и временного вектора движения - кандидата, модуль 72 компенсации движения может масштабировать один или более из векторов движения - кандидатов описанным выше способом (94). Дополнительно модуль 72 компенсации движения может модифицировать один или более масштабированные векторы движения, чтобы они находились в рамках точно определенного диапазона, как описано выше (95).

[0101] После модифицирования одного или более масштабированных векторов движения, модуль 72 компенсации движения может формировать список кандидатов из пространственных и временных векторов движения - кандидатов и выбирать один из векторов движения - кандидатов в качестве MVP для текущей PU (96, 98). Модуль 70 энтропийного декодирования может проводить синтаксический анализ индекса (mvp_idx) предиктора вектора движения в битовом потоке и предоставлять данный индекс предиктора вектора движения модулю 72 компенсации движения для использования при выборе одного из векторов движения - кандидатов в качестве MVP для текущей PU.

[0102] Фиг. 5 является блок-схемой, иллюстрирующей примерное функционирование кодировщика видео, такого как кодер 20 видео, показанный в примере на Фиг. 2, и/или декодер 30 видео, показанный в примере на Фиг. 3, при выполнении других аспектов методик предсказания вектора движения, описываемых в данном изобретении. Исходно, обращаясь сначала к кодеру 20 видео, модуль 42 оценки движения может, как описано выше, определять пространственные векторы движения - кандидаты для текущей PU, соответствующей текущей CU (100). Модуль 42 оценки движения далее может определять временной вектор движения - кандидат для текущей PU из совместно расположенной PU в опорном кадре, вновь, как описано выше (102). При определении любого из или как пространственных векторов движения - кандидатов, так и временного вектора движения - кандидата, модуль 42 оценки движения может масштабировать один или более из векторов движения - кандидатов описанным выше способом (104).

[0103] Далее, модуль 42 оценки движения может формировать список кандидатов из пространственных и временных векторов движения - кандидатов и выбирать один из векторов движения - кандидатов в качестве MVP для текущей PU (106, 108). Данный выбор может, как отмечено выше, включать в себя выполнение кодером 20 видео анализа RDO, при этом выбранный один из векторов движения - кандидатов затем используется для кодирования блока видеоданных описанным выше способом. Перед выполнением данного анализа RDO, модуль 42 оценки движения может сначала определять, был ли масштабирован выбранный один из векторов движения - кандидатов (109). Если не масштабирован («НЕТ» 109), модуль 42 оценки движения может не выполнять любые дополнительные операции при рассмотрении текущего одного из векторов движения - кандидатов. Тем не менее, если масштабирован («ДА» 109), модуль 42 оценки движения может модифицировать выбранный один из векторов движения - кандидатов, чтобы он находился в рамках точно определенного диапазона описанным выше способом (110). Как отмечено выше, модуль 56 энтропийного кодирования может указывать выбранный один из векторов движения - кандидатов в качестве индекса (mvp_idx) в битовом потоке, тем самым разрешая декодеру видео идентифицировать выбранный один из векторов движения - кандидатов.

[0104] Применительно к декодеру 30 видео, модуль 72 компенсации движения, как описано выше, определяет пространственные векторы движения - кандидаты для текущей PU, соответствующей текущей CU (100). Модуль 72 компенсации движения далее может определять временной вектор движения - кандидат для текущей PU из совместно расположенной PU в опорном кадре, вновь, как описано выше (102). При определении любого из или как пространственных векторов движения - кандидатов, так и временного вектора движения - кандидата, модуль 72 компенсации движения может масштабировать один или более из векторов движения - кандидатов описанным выше способом (104).

[0105] Далее, модуль 72 компенсации движения может формировать список кандидатов из пространственных и временных векторов движения - кандидатов и выбирать один из векторов движения - кандидатов в качестве MVP для текущей PU (106, 108). Для выбора одного из векторов движения - кандидатов, модуль 70 энтропийного декодирования может проводить синтаксический анализ индекса (mvp_idx) предиктора вектора движения в битовом потоке и предоставлять данный индекс предиктора вектора движения модулю 72 компенсации движения для использования при выборе одного из векторов движения - кандидатов в качестве MVP для текущей PU. Модуль 72 компенсации движения затем может определять, был ли масштабирован выбранный один из векторов движения - кандидатов (109). Если не масштабирован («НЕТ» 109), то модуль 72 компенсации движения может не выполнять каких-либо дополнительных операций при рассмотрении текущего одного из векторов движения - кандидатов. Тем не менее, если масштабирован («ДА» 109), то модуль 72 компенсации движения может не модифицировать выбранный один из векторов движения - кандидатов описанным выше способом (110).

[0106] Фиг. 6 является концептуально схемой, иллюстрирующей пространственные и временные соседние блоки, из которых генерируются кандидаты - предикторы вектора движения для режимов предсказания вектора движения. В настоящей тестовой модели HEVC (HM), поддерживается два режима предсказания вектора движения: режим слияния и режим адаптивного предсказания вектора движении (AMVP). В любом режиме, каждый из кодера 20 видео и декодера 30 видео генерирует одинаковый список кандидатов - предикторов вектора движения, из которого определяют вектор движения для текущего видеоблока или PU 112. Кандидаты - предикторы вектора движения в режиме слияния и режиме AMVP могут включать в себя векторы движения для пространственно соседних блоков текущей PU 112, например, соседних блоков A, B, C, D и E, иллюстрируемых на Фиг. 6. Кандидаты - предикторы вектора движения также могут включать в себя векторы движения для временных соседних блоков совместно расположенного блока 114 текущей PU 112, например, соседних блоков T1 и T2, иллюстрируемых на Фиг. 4. В некоторых случаях, кандидаты - предикторы вектора движения могут включать в себя сочетания векторов движения для двух или более из соседних блоков, например, среднее, медианное, или средневзвешенное из двух или более векторов движения.

[0107] В случае режима AMVP, список кандидатов - предикторов вектора движения может быть сгенерирован так, чтобы включать в себя векторы движения для пространственных или временных соседних блоков. Кодер 20 видео затем выбирает наиболее точный потенциальный предиктор вектора движения для текущей PU 112 из списка кандидатов. В одном примере, кодер 20 видео может выбирать потенциальный предиктор вектора движения, сгенерированный из вектора движения одного из соседних блоков, в качестве предиктора вектора движения для PU 112. В другом примере, кодер 20 может выбирать потенциальный предиктор вектора движения, сгенерированный из векторов движения двух или более соседних блоков, в качестве предиктора вектора движения для PU 112. В данном случае, предиктор вектора движения может быть вычислен в качестве среднего, медианного, или средневзвешенного значения из двух или более векторов движения. Затем кодер 20 видео определяет разность векторов движения между предиктором вектора движения и вектором движения текущей PU 112. Затем кодер 20 видео сигнализирует разность векторов движения и индекс предиктора вектора движения для текущей PU 112 декодеру 30 видео.

[0108] Декодер 30 видео принимает битовый поток, представляющий собой закодированный видеоблок, включая разности векторов движения и индексы предикторов вектора движения для видеоблока. Для декодирования видеоблока, декодер 30 видео генерирует список кандидатов - предикторов вектора движения таким же образом что и кодер 20 видео. Декодер 30 видео выбирает предиктор вектора движения для текущей PU 112 из списка кандидатов. Затем декодер 30 видео складывает просигнализированную разность векторов движения с выбранным предиктором вектора движения для восстановления вектора движения для текущей PU 112. Декодер 30 видео использует вектор движения для текущей PU 112 для определения местоположения предсказывающего блока в опорной картинке, для восстановления закодированного видеоблока.

[0109] В случае режима слияния, список кандидатов - предикторов вектора движения может быть сгенерирован таким образом, чтобы включать в себя всю информацию движения, включая вектор движения, индекс опорной картинки, и направление предсказания, для каждого из пространственных или временных блоков. Затем кодер 20 видео выбирает наиболее точную информацию движения для текущей PU 112 из соседних блоков в потенциальном списке. Вместо сигнализации разности векторов движения, индекса опорной картинки, и направления предсказания для текущей PU 112 декодеру 30 видео, кодер 20 видео непосредственно использует выбранную информацию движения для соседнего блока в качестве итоговой информации движения для текущей PU 112. Таким образом, кодер 20 видео лишь сигнализирует индекс для указания соседнего блока, из которого вся информация движения должна быть извлечена для текущей PU 112 декодеру 30 видео.

[0110] Декодер 30 видео принимает битовый поток, представляющий собой закодированный видеоблок, включая значения индекса для видеоблока. Для декодирования видеоблока, декодер 30 видео генерирует список кандидатов - предикторов вектора движения таким же образом, как это делает кодер 20 видео. Декодер 30 видео определяет всю информацию движения, включая вектор движения, индекс опорной картинки, и направление предсказания, для текущей PU 112, посредством применения сигнализированного индекса к потенциальному списку для выбора информации движения соседнего блока. Затем декодер 30 видео использует вектор движения для текущей PU 112 для определения местоположения предсказывающего блока для восстановления закодированного видеоблока.

[0111] В одном или более примерах, описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенном программном обеспечении, или любом их сочетании. При реализации в программном обеспечении, функции могут быть сохранены на или переданы через в качестве одной или более инструкций или кода на считываемом компьютером носителе данных. Считываемые компьютером носители данных могут включать в себя компьютерные запоминающие носители данных или средства связи, включающие в себя любой носитель данных, который способствует переносу компьютерной программы из одного места в другое. Запоминающие носители данных могут быть любыми доступными носителями, доступ к которым может быть осуществлен посредством одного или более компьютеров или одного или более процессоров для извлечения инструкций, кода и/или структур данных для реализации, описываемых в данном изобретении, методик. В качестве примера, а не ограничения, такие считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске, или другие магнитные запоминающие устройства, флэш память или любой другой носитель данных, который может быть использован для переноса и хранения требуемого программного кода в виде инструкций или структур данных, и доступ к которому может быть осуществлен посредством компьютера. Также любое соединение надлежащим образом определяется как считываемый компьютером носитель данных. Например, если программное обеспечение передается от web-сайта, сервера, или другого удаленного источника при помощи коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL), или посредством беспроводных технологий, таких как инфракрасная, радио, или микроволновая, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL, иди беспроводные технологии, такие как инфракрасная, радио, и микроволновая, включаются в определение носителя данных. Используемые здесь магнитный диск и немагнитный диск включают в себя компакт диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и blu-ray диск, при этом магнитные диски обычно воспроизводят данные магнитным образом, тогда как немагнитные диски воспроизводят данные оптически с помощью лазеров. Сочетания вышеприведенного также должны быть включены в объем машиночитаемых носителей информации.

[0112] Код может исполняться одним или более процессорами, такими как один или более цифровые сигнальные процессоры (DSP), микропроцессоры общего назначения, проблемно ориентированные интегральные микросхемы (ASIC), программируемые вентильные матрицы (FPGA), или другие эквивалентные интегрированные или дискретные логические схемы. Соответственно, используемое здесь понятие «процессор» может относиться к любой из вышеприведенных структур или любой другой структуре, пригодной для реализации описываемых здесь методик. В дополнение, в некоторых аспектах, описываемые здесь функциональные возможности могут быть предоставлены внутри выделенного аппаратного обеспечения и/или модулей программного обеспечения, выполненных с возможностью кодирования и декодирования, или включены в объединенный кодек. Также, методики могут быть полностью реализованы в одной или более схемах или логических элементах.

[0113] Методики данного изобретения могут быть реализованы в широком многообразии устройств и аппаратур, включая беспроводную трубку, интегральную микросхему (IC) или набор IC (например, набор микросхем). Различные компоненты, модули, или блоки описаны в данном изобретении для того, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрываемых методик, и не обязательно требуется реализация в разных модулях аппаратного обеспечения. Наоборот, как описано выше, различные модули могут быть объединены в кодек модуль аппаратного обеспечения или предоставлены посредством совокупности работающих совместно модулей аппаратного обеспечения, включая один или более процессоры, как описано выше, совместно с пригодным программным обеспечением или встроенным программным обеспечением.

[0114] Были описаны различные примеры. Эти и прочие примеры находятся в рамках объема нижеследующей формулы изобретения.

Похожие патенты RU2573227C1

название год авторы номер документа
БУФЕРИЗАЦИЯ ДАННЫХ ПРЕДСКАЗАНИЯ ПРИ КОДИРОВАНИИ ВИДЕО 2012
  • Чиэнь Вэй-Цзюн
  • Чжэн Юньфэй
  • Ван Сянлинь
  • Карчевич Марта
  • Го Ливэй
RU2573744C2
КОДИРОВАНИЕ ВЕКТОРА ДВИЖЕНИЯ И БИ-ПРЕДСКАЗАНИЕ В HEVC И ЕГО РАСШИРЕНИЯХ 2013
  • Чэнь Ин
  • Ван Е-Куй
  • Чжан Ли
RU2624560C2
ОБХОДНЫЕ БИНЫ ДЛЯ КОДИРОВАНИЯ ОПОРНЫХ ИНДЕКСОВ ПРИ КОДИРОВАНИИ ВИДЕО 2013
  • Карчевич Марта
  • Серегин Вадим
  • Ван Сянлинь
  • Кобан Мухаммед Зейд
RU2643655C2
СПОСОБЫ И УСТРОЙСТВА ДЛЯ КОДИРОВАНИЯ ВИДЕО С ИСПОЛЬЗОВАНИЕМ ВЕКТОРА ДВИЖЕНИЯ ВРЕМЕННОГО ПРЕДСКАЗАНИЯ НА ОСНОВЕ СУББЛОКОВ 2019
  • Чэнь, И-Вэнь
  • Ван, Сянлинь
RU2757209C1
ПРЕДСКАЗАНИЕ ВЕКТОРОВ ДВИЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО 2012
  • Чэнь Ин
  • Чэнь Пэйсун
  • Карчевич Марта
RU2575690C2
УНИФИЦИРОВАННЫЙ ВЫБОР КАНДИДАТОВ ДЛЯ РЕЖИМА СЛИЯНИЯ И АДАПТИВНОГО РЕЖИМА ПРЕДСКАЗАНИЯ ВЕКТОРА ДВИЖЕНИЯ 2012
  • Чжэн Юньфей
  • Ван Сянлинь
  • Карчевич Марта
RU2574831C2
ГЕНЕРИРОВАНИЕ ДОПОЛНИТЕЛЬНЫХ КАНДИДАТОВ ДЛЯ СЛИЯНИЯ 2012
  • Чжэн Юньфэй
  • Ван Сянлинь
  • Карчевич Марта
RU2577779C2
КОДИРОВАНИЕ ПАРАМЕТРА КВАНТОВАНИЯ (QP) ПРИ КОДИРОВАНИИ ВИДЕО 2013
  • Серегин Вадим
  • Ван Сянлинь
RU2645291C2
ОГРАНИЧЕНИЕ ОДНОНАПРАВЛЕННЫМ ИНТЕР-ПРЕДСКАЗАНИЕМ ДЛЯ БЛОКОВ ПРЕДСКАЗАНИЯ В В-СЛАЙСАХ 2013
  • Ван Сянлинь
  • Серегин Вадим
  • Карчевич Марта
RU2620723C2
РАСШИРЕННАЯ СИГНАЛИЗАЦИЯ РЕЖИМА ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ ДЛЯ КОДИРОВАНИЯ ВИДЕО, ИСПОЛЬЗУЮЩЕГО РЕЖИМ СОСЕДСТВА 2012
  • Чиэнь Вэй-Цзюн
  • Карчевич Марта
  • Ван Сянлинь
RU2601843C2

Иллюстрации к изобретению RU 2 573 227 C1

Реферат патента 2016 года ВЫПОЛНЕНИЕ ПРЕДСКАЗАНИЯ ВЕКТОРА ДВИЖЕНИЯ ДЛЯ КОДИРОВАНИЯ ВИДЕО

Изобретение относится к средствам кодирования видео. Техническим результатом является повышение эффективности использования пропускной способности памяти при кодировании. В способе определяют множество векторов движения - кандидатов для текущего блока видеоданных для предсказания вектора движения, масштабируют векторы движения - кандидаты для генерации масштабированных векторов движения - кандидатов, модифицируют масштабированные векторы движения - кандидаты таким образом, чтобы они находились в рамках диапазона [-32768, 32767] в единицах четверти пикселя, выбирают вектор движения - кандидат в качестве предиктора вектора движения для текущего блока видеоданных, кодируют текущий блок видеоданных на основании указанного предиктора. 4 н. и 41 з.п. ф-лы, 6 ил.

Формула изобретения RU 2 573 227 C1

1. Способ кодирования видеоданных, при этом способ содержит этапы, на которых:
определяют множество векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить процесс предсказания вектора движения;
масштабируют один или более из упомянутого множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов;
модифицируют масштабированные векторы движения - кандидаты таким образом, чтобы они находились в рамках точно определенного диапазона, причем точно определенный диапазон равен [-32768, 32767] в единицах четверти пикселя;
выбирают один из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных; и
кодируют текущий блок видеоданных на основании предиктора вектора движения.

2. Способ по п. 1, в котором этап, на котором модифицируют масштабированные векторы движения - кандидаты, содержит этап, на котором модифицируют масштабированные векторы движения - кандидаты без модификации любых других векторов движения - кандидатов, которые не были масштабированы.

3. Способ по п. 1, в котором этап, на котором модифицируют масштабированные векторы движения - кандидаты, содержит этап, на котором усекают масштабированные векторы движения - кандидаты перед выбором одного из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных.

4. Способ по п. 1, в котором процесс предсказания вектора движения является одним из режима слияния и режима усовершенствованного предсказания вектора движения.

5. Способ по п. 1, в котором точно определенный диапазон задается профилем или уровнем кодирования видео.

6. Способ по п. 1, в котором точно определенный диапазон является фиксированным и жестко заданным в одном или более из декодера видео и кодера видео.

7. Способ по п. 1, в котором этап, на котором модифицируют масштабированные векторы движения, включает в себя этапы, на которых:
усекают вертикальную составляющую масштабированных векторов движения - кандидатов, чтобы она находилась в рамках вертикального точно определенного диапазона; и
усекают горизонтальную составляющую масштабированных векторов движения - кандидатов, чтобы она находилась в рамках горизонтального точно определенного диапазона.

8. Способ по п. 1,
в котором точно определенный диапазон точно определяет предел смещения вектора движения, который включает в себя предел вертикального смещения,
в котором масштабированные векторы движения - кандидаты выходят за рамки предела вертикального смещения, и
в котором этап, на котором модифицируют масштабированные векторы движения - кандидаты, дополнительно содержит этап, на котором усекают вертикальную составляющую масштабированных векторов движения - кандидатов таким образом, что вертикальная составляющая масштабированных векторов движения - кандидатов находится в рамках предела вертикального смещения.

9. Способ по п. 1,
в котором точно определенный диапазон точно определяет предел смещения вектора движения, который включает в себя предел горизонтального смещения,
в котором масштабированные векторы движения - кандидаты выходят за рамки предела горизонтального смещения, и
в котором этап, на котором модифицируют масштабированные векторы движения - кандидаты, дополнительно содержит этап, на котором усекают горизонтальную составляющую масштабированных векторов движения - кандидатов таким образом, что горизонтальная составляющая масштабированных векторов движения - кандидатов находится в рамках предела горизонтального смещения.

10. Способ по п. 1, в котором этап, на котором модифицируют масштабированные векторы движения - кандидаты, содержит этап, на котором масштабируют масштабированные векторы движения - кандидаты таким образом, что масштабированные векторы движения - кандидаты находятся в границах одного или более пределов смещения вектора движения.

11. Способ по п. 1, дополнительно содержащий этап, на котором определяют вектор движения для текущего блока видеоданных на основании выбранного одного из упомянутого
множества векторов движения - кандидатов для текущего блока видеоданных, при этом определенный вектор движения идентифицирует блок предсказания видеоданных,
при этом этап, на котором кодируют текущий блок видеоданных, содержит этап, на котором декодируют текущий блок видеоданных по отношению к блоку предсказания видеоданных.

12. Способ по п. 1, дополнительно содержащий этап, на котором определяют вектор движения для текущего блока видеоданных на основании выбранного одного из упомянутого множества векторов движения - кандидатов для текущего блока видеоданных, при этом определенный вектор движения идентифицирует блок предсказания видеоданных, и
при этом этап, на котором кодируют текущий блок видеоданных, содержит этап, на котором кодируют текущий блок видеоданных по отношению к блоку предсказания видеоданных.

13. Способ по п. 1, дополнительно содержащий этапы, на которых:
декодируют индекс предиктора вектора движения для идентификации выбранного одного из упомянутого множества векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить режим усовершенствованного предсказания вектора движения процесса предсказания вектора движения; и
декодируют разность векторов движения между выбранным одним из упомянутого множества векторов движения - кандидатов и вектором движения для текущего блока видеоданных, чтобы определить вектор движения для текущего блока видеоданных,
при этом этап, на котором кодируют текущий блок видеоданных, содержит этап, на котором декодируют текущий блок видеоданных, используя определенный вектор движения для текущего блока видеоданных.

14. Способ по п. 1, дополнительно содержащий этапы, на которых:
декодируют индекс для идентификации выбранного одного из упомянутого множества векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить режим слияния процесса предсказания вектора движения; и
определяют вектор движения для текущего блока видеоданных, чтобы он был эквивалентен выбранному одному из упомянутого множества векторов движения - кандидатов,
при этом этап, на котором кодируют текущий блок видеоданных, содержит этап, на котором декодируют текущий блок видеоданных, используя определенный вектор движения для текущего блока видеоданных.

15. Устройство кодирования видео, выполненное с возможностью выполнения процесса предсказания вектора движения для кодирования видеоданных, при этом устройство кодирования видео содержит:
процессор, выполненный с возможностью: определения множества векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить процесс предсказания вектора движения; масштабирования одного или более из упомянутого множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов; модифицирования масштабированных векторов движения - кандидатов таким образом, чтобы они находились в рамках точно определенного диапазона, причем точно определенный диапазон равен [-32768, 32767] в единицах четверти пикселя; выбора одного из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных; и кодирования текущего блока видеоданных на основании предиктора вектора движения.

16. Устройство кодирования видео по п. 15, в котором процессор дополнительно выполнен с возможностью, при модифицировании масштабированных векторов движения - кандидатов, модифицирования масштабированных векторов движения - кандидатов без модификации любых других векторов движения - кандидатов, которые не были масштабированы.

17. Устройство кодирования видео по п. 15, в котором процессор дополнительно выполнен с возможностью, при модифицировании масштабированных векторов движения - кандидатов, усечения масштабированных векторов движения - кандидатов перед выбором одного из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных.

18. Устройство кодирования видео по п. 15, в котором процесс предсказания вектора движения является одним из режима слияния и режима усовершенствованного предсказания вектора движения.

19. Устройство кодирования видео по п. 15, в котором точно определенный диапазон задается профилем или уровнем кодирования видео.

20. Устройство кодирования видео по п. 15, в котором точно определенный диапазон является фиксированным и жестко заданным в одном или более из декодера видео и кодера видео.

21. Устройство кодирования видео по п. 15, в котором процессор дополнительно выполнен с возможностью, при модифицировании масштабированных векторов движения, усечения вертикальной составляющей масштабированных векторов движения - кандидатов, чтобы она находилась в рамках вертикального точно определенного диапазона, и усечения горизонтальной составляющей масштабированных векторов движения - кандидатов, чтобы она находилась в рамках горизонтального точно определенного диапазона.

22. Устройство кодирования видео по п. 15,
в котором точно определенный диапазон точно определяет предел смещения вектора движения, который включает в себя предел вертикального смещения,
в котором масштабированные векторы движения - кандидаты выходят за рамки предела вертикального смещения, и
в котором процессор дополнительно выполнен с возможностью, при модифицировании масштабированных векторов движения - кандидатов, усечения вертикальной составляющей масштабированных векторов движения - кандидатов таким образом, что вертикальная составляющая масштабированных векторов движения - кандидатов находится в рамках предела вертикального смещения.

23. Устройство кодирования видео по п. 15,
в котором точно определенный диапазон точно определяет
предел смещения вектора движения, который включает в себя предел горизонтального смещения,
в котором масштабированные векторы движения - кандидаты выходят за рамки предела горизонтального смещения, и
в котором процессор дополнительно выполнен с возможностью, при модифицировании масштабированных векторов движения - кандидатов, усечения горизонтальной составляющей масштабированных векторов движения - кандидатов таким образом, что горизонтальная составляющая масштабированных векторов движения - кандидатов находится в рамках предела горизонтального смещения.

24. Устройство кодирования видео по п. 15, в котором процессор дополнительно выполнен с возможностью, при модифицировании масштабированных векторов движения - кандидатов, масштабирования масштабированных векторов движения - кандидатов таким образом, что масштабированные векторы движения - кандидаты находятся в границах одного или более пределов смещения вектора движения.

25. Устройство кодирования видео по п. 15,
в котором процессор дополнительно выполнен с возможностью определения вектора движения для текущего блока видеоданных на основании выбранного одного из упомянутого множества векторов движения - кандидатов для текущего блока видеоданных,
при этом определенный вектор движения идентифицирует блок предсказания видеоданных, и
в котором процессор дополнительно выполнен с возможностью, при кодировании текущего блока видеоданных, декодирования текущего блока видеоданных по отношению к блоку предсказания видеоданных.

26. Устройство кодирования видео по п. 15,
в котором процессор дополнительно выполнен с возможностью определения вектора движения для текущего блока видеоданных на основании выбранного одного из упомянутого множества векторов движения - кандидатов для текущего блока видеоданных,
при этом определенный вектор движения идентифицирует блок предсказания видеоданных и;
в котором процессор дополнительно выполнен с возможностью, при кодировании текущего блока видеоданных, кодирования текущего блока видеоданных по отношению к блоку предсказания видеоданных.

27. Устройство кодирования видео по п. 15, в котором процессор дополнительно выполнен с возможностью декодирования индекса предиктора вектора движения для идентификации выбранного одного из упомянутого множества векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить режим усовершенствованного предсказания вектора движения процесса предсказания вектора движения; декодирования разности векторов движения между выбранным одним из упомянутого множества векторов движения - кандидатов и вектором движения для текущего блока видеоданных, чтобы определить вектор движения для текущего блока видеоданных, и, при кодировании текущего блока видеоданных, декодирования текущего блока видеоданных, используя определенный вектор движения для текущего блока видеоданных.

28. Устройство кодирования видео по п. 15, в котором процессор дополнительно выполнен с возможностью декодирования индекса для идентификации выбранного одного из упомянутого множества векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить режим слияния процесса предсказания вектора движения; определения вектора движения для текущего блока видеоданных, чтобы он был эквивалентен выбранному одному из упомянутого множества векторов движения - кандидатов; и при кодировании текущего блока видеоданных, декодирования текущего блока видеоданных, используя определенный вектор движения для текущего блока видеоданных.

29. Устройство кодирования видео, выполненное с возможностью выполнения процесса предсказания вектора движения для кодирования видеоданных, при этом устройство кодирования видео содержит:
средство для определения множества векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить процесс предсказания вектора движения;
средство для масштабирования одного или более из упомянутого множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов;
средство для модифицирования масштабированных векторов движения - кандидатов таким образом, чтобы они находились в рамках точно определенного диапазона, причем точно определенный диапазон равен [-32768, 32767] в единицах четверти пикселя;
средство для выбора одного из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных; и
средство для кодирования текущего блока видеоданных на основании предиктора вектора движения.

30. Устройство кодирования видео по п. 29, в котором средство для модифицирования масштабированных векторов движения - кандидатов содержит средство для модифицирования масштабированных векторов движения - кандидатов без модификации любых других векторов движения - кандидатов, которые не были масштабированы.

31. Устройство кодирования видео по п. 29, в котором средство для модифицирования масштабированных векторов движения - кандидатов содержит средство для усечения масштабированных векторов движения - кандидатов перед выбором одного из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных.

32. Устройство кодирования видео по п. 29, в котором точно определенный диапазон задается профилем или уровнем кодирования видео.

33. Устройство кодирования видео по п. 29, в котором точно определенный диапазон является фиксированным и жестко заданным в одном или более из декодера видео и кодера видео.

34. Устройство кодирования видео по п. 29, в котором средство для модифицирования масштабированных векторов движения включает в себя:
средство для усечения вертикальной составляющей масштабированных векторов движения - кандидатов, чтобы она находилась в рамках вертикального точно определенного диапазона; и
средство для усечения горизонтальной составляющей масштабированных векторов движения - кандидатов, чтобы она находилась в рамках горизонтального точно определенного диапазона.

35. Устройство кодирования видео по п. 29,
в котором точно определенный диапазон точно определяет предел смещения вектора движения, который включает в себя предел вертикального смещения,
в котором масштабированные векторы движения - кандидаты выходят за рамки предела вертикального смещения, и
в котором средство для модифицирования масштабированных векторов движения - кандидатов дополнительно содержит средство для усечения вертикальной составляющей масштабированных векторов движения - кандидатов таким образом, что вертикальная составляющая масштабированных векторов движения - кандидатов находится в рамках предела вертикального смещения.

36. Устройство кодирования видео по п. 29,
в котором точно определенный диапазон точно определяет предел смещения вектора движения, который включает в себя предел горизонтального смещения,
в котором масштабированные векторы движения - кандидаты выходят за рамки предела горизонтального смещения, и
в котором средство для модифицирования масштабированных векторов движения - кандидатов дополнительно содержит средство для усечения горизонтальной составляющей масштабированных векторов движения - кандидатов таким образом, что горизонтальная составляющая масштабированных векторов движения - кандидатов
находится в рамках предела горизонтального смещения.

37. Невременной считываемый компьютером носитель данных с хранящимися на нем инструкциями, которые, при исполнении, побуждают один или более процессоров:
определять множество векторов движения - кандидатов для текущего блока видеоданных таким образом, чтобы выполнить процесс предсказания вектора движения;
масштабировать один или более из упомянутого множества векторов движения - кандидатов, определенного для текущего блока видеоданных, чтобы сгенерировать один или более масштабированных векторов движения - кандидатов;
модифицировать масштабированные векторы движения - кандидаты таким образом, чтобы они находились в рамках точно определенного диапазона, причем точно определенный диапазон равен [-32768, 32767] в единицах четверти пикселя;
выбирать один из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных; и
кодировать текущий блок видеоданных на основании предиктора вектора движения.

38. Невременной считываемый компьютером носитель данных по п. 37, в котором инструкции, при исполнении, побуждают один или более процессоров, при модифицировании масштабированных векторов движения - кандидатов, модифицировать масштабированные векторы движения - кандидаты без модификации любых других векторов движения - кандидатов, которые не были масштабированы.

39. Невременной считываемый компьютером носитель данных по п. 37, в котором инструкции, при исполнении, побуждают один или более процессоров, при модифицировании масштабированных векторов движения - кандидатов, усекать масштабированные векторы движения - кандидаты перед выбором одного из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных.

40. Невременной считываемый компьютером носитель данных по п. 37, дополнительно содержащий хранящиеся на нем инструкции, которые, при исполнении, побуждают один или более процессоров:
выбирать один из упомянутого множества векторов движения - кандидатов в качестве предиктора вектора движения для текущего блока видеоданных; и
кодировать текущий блок видеоданных на основании предиктора вектора движения.

41. Невременной считываемый компьютером носитель данных по п. 37, в котором точно определенный диапазон задается профилем или уровнем кодирования видео.

42. Невременной считываемый компьютером носитель данных по п. 37, в котором точно определенный диапазон является фиксированным и жестко заданным в одном или более из декодера видео и кодера видео.

43. Невременной считываемый компьютером носитель данных по п. 37, в котором инструкции, при исполнении, побуждают один или более процессоров, при модифицировании масштабированных векторов движения:
усекать вертикальную составляющую масштабированных векторов движения - кандидатов, чтобы она находилась в рамках вертикального точно определенного диапазона; и
усекать горизонтальную составляющую масштабированных векторов движения - кандидатов, чтобы она находилась в рамках горизонтального точно определенного диапазона.

44. Невременной считываемый компьютером носитель данных по п. 37,
в котором точно определенный диапазон точно определяет предел смещения вектора движения, который включает в себя предел вертикального смещения,
в котором масштабированные векторы движения - кандидаты выходят за рамки предела вертикального смещения, и
в котором инструкции, при исполнении, побуждают один или более процессоров, при модифицировании масштабированных векторов движения - кандидатов, усекать вертикальную составляющую масштабированных векторов движения - кандидатов таким образом, что вертикальная составляющая масштабированных векторов движения - кандидатов находится в рамках предела вертикального смещения.

45. Невременной считываемый компьютером носитель данных по п. 37,
в котором точно определенный диапазон точно определяет предел смещения вектора движения, который включает в себя предел горизонтального смещения,
в котором масштабированные векторы движения - кандидаты выходят за рамки предела горизонтального смещения, и
в котором инструкции, при исполнении, побуждают один или более процессоров, при модифицировании масштабированных векторов движения - кандидатов, усекать горизонтальную составляющую масштабированных векторов движения - кандидатов таким образом, что горизонтальная составляющая масштабированных векторов движения - кандидатов находится в рамках предела горизонтального смещения.

Документы, цитированные в отчете о поиске Патент 2016 года RU2573227C1

US 20060251330 A1, 09.11.2006
US 20080187046 A1, 07.08.2008
WO 2008045633 A2, 17.04.2008
WO 03061295 A2, 24.07.2003
СПОСОБ ГЕНЕРАЦИИ ПРЕДСКАЗАННОЙ ОПОРНОЙ ИНФОРМАЦИИ, СПОСОБЫ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕО, УСТРОЙСТВА ДЛЯ ЭТОГО, ПРОГРАММЫ ДЛЯ ЭТОГО И НОСИТЕЛЬ ДАННЫХ, ХРАНЯЩИЙ ЭТИ ПРОГРАММЫ 2007
  • Симизу Синья
  • Камикура Казуто
  • Ясима Йосиюки
  • Кимата Хидеаки
RU2434361C2
СПОСОБ И УСТРОЙСТВО ДЛЯ ДЕКОДИРОВАНИЯ/КОДИРОВАНИЯ СИГНАЛА ВИДЕО 2007
  • Дзеон Биеонг Моон
  • Парк Сеунг Воок
  • Коо Хан Сух
  • Дзеон Йонг Дзоон
  • Парк Дзи Хо
RU2395174C1

RU 2 573 227 C1

Авторы

Чэнь Цзяньлэ

Кобан Мухаммед Зейд

Ван Е-Куй

Ван Сянлинь

Карчевич Марта

Чиэнь Вей-Дзунг

Даты

2016-01-20Публикация

2012-12-11Подача