ВЫВОД ИНФОРМАЦИИ ДВИЖЕНИЯ ДЛЯ ПОДБЛОКОВ ПРИ ВИДЕОКОДИРОВАНИИ Российский патент 2019 года по МПК H04N19/513 G06T9/00 

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

[0001] Настоящая заявка испрашивает приоритет предварительной заявки США № 62/139572, поданной 27 марта 2015 года, и предварительной заявки США № 62/182367, поданной 19 июня 2015 года, полное содержание которых включено в настоящий документ путем ссылки.

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

[0002] Данное раскрытие относится к видеокодированию.

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

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

[0004] Способы видеокодирования включают в себя пространственное (внутрикадровое) предсказание и/или временное (межкадровое) предсказание для уменьшения или удаления избыточности, присущей видеопоследовательностям. Для блочного видеокодирования видеофрагмент (например, видеокадр или часть видеокадра) может быть разделен на видеоблоки, которые также могут упоминаться как древовидные блоки, единицы кодирования (CU) и/или узлы кодирования. Видеоблоки в фрагменте изображения, кодированного с внутренним предсказанием, кодируются с использованием пространственного предсказания относительно опорных выборок в соседних блоках на одном изображении. Видеоблоки во фрагменте изображения, кодированном с внешним предсказанием (P или B), могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в одном и том же изображении или временное предсказание относительно опорных выборок в других опорных изображениях. Изображения могут упоминаться как кадры, а опорные изображения могут упоминаться как опорные кадры.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0025] Фиг.4А и 4В представляют собой концептуальные диаграммы, иллюстрирующие пример соседнего пространственного расположения векторов движения - кандидатов для режима слияния и режима расширенного предсказания движения (AMVP).

[0026] Фиг. 5А и 5В представляют собой концептуальные диаграммы, иллюстрирующие пример временного предиктора вектора движения - кандидата (TMVP) и масштабирования вектора движения.

[0027] Фиг. 6 представляет собой концептуальную диаграмму, иллюстрирующую пример односторонней оценки движения (ME) в преобразовании с повышением частоты кадров (FRUC).

[0028] Фиг. 7 представляет собой концептуальную диаграмму, иллюстрирующую пример двусторонней оценки движения (ME) в FRUC.

[0029] Фиг. 8 представляет собой концептуальную диаграмму, иллюстрирующую пример выведения вектора движения на стороне декодера на основе согласования с шаблоном (DMVD).

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

[0031] Фиг. 10 представляет собой концептуальную диаграмму, иллюстрирующую расширенное двустороннее выведение вектора движения на основе согласования с шаблоном.

[0032] Фиг. 11 представляет собой блок-схему последовательности операций, иллюстрирующую пример декодирования единицы предсказания (PU) с использованием DMVD.

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

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

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

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

[0036] Способы настоящего раскрытия относятся к выведению информации движения на стороне декодера, разделению блоков и/или интерполяции видеоданных при кодировании на основе блоков. Эти способы могут применяться к любому из существующих видеокодеков, таких как высокоэффективное видеокодирование (HEVC), или могут представлять собой эффективный инструмент кодирования для любых будущих стандартов видеокодирования.

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

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

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

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

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

[0042] Хотя определенные способы интерполяции изображений использовались для целей повышения частоты кадров, такие способы не использовались широко при видеокодировании, например, для кодирования видеоданных, которые включены в кодированный битовый поток. Например, способы интерполяции изображений могут быть относительно времязатратными и/или могут требовать относительно больших вычислительных мощностей. Соответственно, такие способы, как правило, не выполнялись в цикле декодирования видеоданных.

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

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

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

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

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

[0048] Таким образом, некоторые описанные здесь способы, относящиеся к FRUC, могут в некоторых примерах использоваться для определения информации движения (например, в процессе выведения информации движения на стороне декодера). В других примерах описанные здесь способы, относящиеся к FRUC, могут использоваться для интерполяции видеоданных, например, в качестве опорных данных для кодирования видеоданных, или для вывода.

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

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

[0051] В некоторых примерах кодированные данные могут выводиться из выходного интерфейса 22 на запоминающее устройство. Аналогичным образом, кодированные данные могут быть доступны из устройства хранения через интерфейс ввода. Устройство хранения может включать в себя любой из множества распределенных или локально доступных носителей данных, таких как жесткий диск, диски Blu-ray, DVD-диски, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любое другое подходящее цифровое хранилище для хранения кодированных видеоданных. В другом примере запоминающее устройство может соответствовать файловому серверу или другому промежуточному запоминающему устройству, которое может хранить кодированное видео, сгенерированное устройством-источником 12. Целевое устройство 14 может осуществлять доступ к сохраненным видеоданным с устройства хранения посредством потоковой передачи или загрузки. Файловым сервером может быть любой тип сервера, способный хранить кодированные видеоданные и передавать эти закодированные видеоданные в целевое устройство 14. Примеры файловых серверов включают в себя веб-сервер (например, для веб-сайта), FTP-сервер, сетевые устройства хранения (NAS) или локальный диск. Целевое устройство 14 может осуществлять доступ к кодированным видеоданным через любое стандартное соединение для передачи данных, включая подключение к Интернету. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL-модем, кабельный модем) или их комбинацию, подходящую для доступа к закодированным видеоданным, хранящимся на файловом сервере. Передача закодированных видеоданных из устройства хранения может представлять собой поточную передачу, передачу в виде загрузки или их комбинацию.

[0052] Способы настоящего раскрытия необязательно ограничиваются беспроводными приложениями или устройствами. Эти способы могут применяться к видеокодированию в рамках любого из множества мультимедийных приложений, таких как эфирные телевизионные трансляции, передачи кабельного телевидения, передачи спутникового телевидения, потоковое видео в Интернете, например динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носитель данных, декодирование цифрового видео, хранящегося на носителе данных, или другие приложения. В некоторых примерах система 10 может быть выполнена с возможностью поддержки односторонней или двухсторонней передачи видео для поддержки таких приложений, как потоковое видео, воспроизведение видео, видеовещание и/или видеотелефония.

[0053] В примере на фиг. 1 устройство-источник 12 содержит видеоисточник 18, видеокодер 20 и выходной интерфейс 22. Целевое устройство 14 включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В соответствии с настоящим раскрытием видеокодер 20 устройства-источника 12 может быть выполнен с возможностью применения способов для выведения информации движения, выполнения разбиения блоков и/или интерполяции видеоданных. В других примерах устройство-источник и целевое устройство могут включать в себя другие компоненты или устройства. Например, устройство-источник 12 может принимать видеоданные от внешнего видеоисточника 18, такого как внешняя камера. Аналогичным образом, целевое устройство 14 может взаимодействовать с внешним устройством отображения, а не включать в себя интегрированное устройство отображения.

[0054] Система 10, показанная на фиг. 1, представляет собой всего лишь один пример. Способы выведения информации движения, разделения блоков и/или интерполяции видеоданных могут выполняться с помощью любого устройства кодирования и/или декодирования цифрового видео. Хотя, как правило, способы настоящего раскрытия выполняются устройством видеокодирования, способы также могут выполняться видеокодером/видеодекодером, обычно называемым «кодеком». Кроме того, способы настоящего раскрытия могут также выполняться видеопроцессором. Устройство-источник 12 и целевое устройство 14 являются просто примерами таких устройств кодирования, в которых устройство-источник 12 генерирует кодированные видеоданные для передачи в целевое устройство 14. В некоторых примерах устройства 12 и 14 могут функционировать, по существу, симметрично, так что каждое из устройств 12 и 14 включает в себя компоненты кодирования и декодирования видео. Таким образом, система 10 может поддерживать одностороннюю или двухстороннюю передачу видеосигнала между видеоустройствами 12, 14, например, для потоковой передачи видео, воспроизведения видео, видеовещания или видеотелефонии.

[0055] Видеоисточник 18 устройства-источника 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или интерфейс видеопотока для приема видео от поставщика видеоконтента. В качестве дополнительной альтернативы источник 18 видеосигнала может генерировать данные на основе компьютерной графики в качестве исходного видео или комбинацию видео в реальном времени, архивированного видео и видео с компьютера. В некоторых случаях, если видеоисточник 18 является видеокамерой, устройство-источник 12 и устройство-получатель 14 могут формировать так называемые камерафоны или видеотелефоны. Однако, как упомянуто выше, способы, описанные в этом документе, могут быть применимы к видеокодированию в целом и могут применяться к беспроводным и/или проводным приложениям. В каждом случае захваченное, предварительно захваченное или генерируемое компьютером видео может быть закодировано видеокодером 20. Затем закодированная видеоинформация может выводиться выходным интерфейсом 22 на машиночитаемый носитель 16.

[0056] Машиночитаемый носитель 16 может включать в себя переходные среды, такие как беспроводная широковещательная или проводная сетевая передача, или носитель данных (то есть долговременный носитель данных), такой как жесткий диск, флэш-накопитель, компакт-диск, цифровой видеодиск, Blu-ray-диск или другой машиночитаемый носитель. В некоторых примерах сетевой сервер (не показан) может принимать закодированные видеоданные из устройства-источника 12 и предоставлять закодированные видеоданные целевому устройству 14, например, посредством сетевой передачи. Аналогично, вычислительное устройство установки по изготовлению носителей данных, такой как средство штамповки дисков, может принимать закодированные видеоданные из устройства-источника 12 и создавать диск, содержащий закодированные видеоданные. Следовательно, в различных примерах машиночитаемый носитель 16 можно понимать как включающий в себя один или несколько машиночитаемых носителей различных видов.

[0057] Входной интерфейс 28 целевого устройства 14 принимает информацию от машиночитаемого носителя 16. Информация машиночитаемого носителя 16 может включать в себя синтаксическую информацию, определенную видеокодером 20, которая также используется видеодекодером 30, который включает в себя синтаксические элементы, описывающие характеристики и/или обработку блоков и других единиц кодирования, например, GOP. Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.

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

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

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

[0061] Видеоэнкодер 20 и видеодекодер 30 могут работать в соответствии со стандартом кодирования видео. Примеры стандартов кодирования видео, разработанные Объединенной группой сотрудничества по кодированию видео (JCT-VC), а также Совместной группа сотрудничества по разработке расширения 3D-кодирования видео (JCT-3V) Группы экспертов по кодированию видеоматериалов МСЭ-T (VCEG) и ISO/IEC Группы экспертов по движущимся изображениям (MPEG) включают в себя высокоэффективное видеокодирование (HEVC) или ITU-T H.265, включая расширение диапазона, многовидовое расширение (MV-HEVC) и расширение масштабирования (SHVC). Окончательный документ стандарта HEVC опубликован в виде ʺITU-T H.265, SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving video - High efficiency video coding,ʺ Telecommunication Standardization Sector of International Telecommunication Union (ITU), Апрель 2013. В качестве альтернативы, видеоэнкодер 20 и видеодекодер 30 могут работать в соответствии с другими проприетарными или отраслевыми стандартами, такими как ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включая его расширение масштабируемого кодирования видео (SVC) и расширение многовидового кодирования видео (MVC). Однако способы этого раскрытия не ограничиваются каким-либо конкретным стандартом кодирования. Например, способы этого раскрытия могут использоваться с различными другими проприетарными или непроприетарными способами видеокодирования или последующими стандартами, такими как ITU-T H.266.

[0062] Как отмечено выше, для режимов с внешним предсказанием видеоэнкодер 20 может искать блок, аналогичный тому, в отношении которого выполняется кодирование («текущий блок»), в изображении с другим временным положением, называемом опорным изображением. Информация, используемая для идентификации опорного изображения, может упоминаться как информация движения. Например, набор информации движения может быть доступен для каждого блока. Набор информации движения содержит информацию движения для направлений предсказания вперед и назад. Здесь направления предсказания вперед и назад представляют собой два направления предсказания режима двунаправленного предсказания, а термины «вперед» и «назад» необязательно имеют геометрическое значение, напротив, они соответствуют списку 0 опорных изображений (RefPicList0) и списку 1 опорных изображений (RefPicList1) текущего изображения. Когда доступен только один список опорных изображений для изображения или фрагмента, доступен только RefPicList0, и информация движения каждого блока фрагмента всегда относится к направлению вперед.

[0063] В некоторых случаях вектор движения вместе со своим опорным индексом используется в процессах декодирования, причем такой вектор движения со связанным опорным индексом обозначается как единичный предсказательный набор информации движения.

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

[0065] Счетчик последовательности изображений (POC) широко используется в стандартах видеокодирования, чтобы идентифицировать порядок отображения изображения. Хотя бывают случаи, когда два изображения в одной кодированной видеопоследовательности могут иметь одно и то же значение POC, обычно это не происходит в кодированной видеопоследовательности. Когда в битовом потоке присутствуют несколько кодированных видеопоследовательностей, изображения с одинаковым значением POC могут быть ближе друг к другу в терминах порядка декодирования. Значения POC изображений, как правило, используются для построения списка опорных изображений, вывода набора опорных изображений в HEVC, и при масштабировании вектора движения.

[0066] В H.264/AVC каждый внешний макроблок (MB) может быть разделен четырьмя разными способами, включая: один раздел по 16 × 16 MB; два раздела по 16×8 MB; два раздела по 8×16 MB; и четыре раздела по 8×8 MB. Различные разделения MB в одном MB могут иметь разные значения опорного индекса для каждого направления (RefPicList0 или RefPicList1). Когда MB не разбит на четыре раздела 8×8 MB, он имеет только один вектор движения для каждого раздела MB в каждом направлении.

[0067] Когда MB разделен на четыре раздела 8×8 MB, каждый раздел размером 8×8 MB может быть дополнительно разбит на подблоки, каждый из которых может иметь другой вектор движения в каждом направлении. Существует четыре разных способа получения подблоков из раздела 8×8 MB, включая: один блок 8×8; два подблока 8×4; два подблока 4×8; четыре подблока 4×4. Каждый подблок может иметь другой вектор движения в каждом направлении. Таким образом вектор движения присутствует на уровне, более высоком, чем уровень подблока.

[0068] В AVC временный прямой режим может быть разрешен на уровне MB или на уровне разделения MB для режима пропуска или прямого режима в B фрагментах. Для каждого раздела MB векторы движения блока, расположенные вместе с текущим разделом MB в RefPicList1 [0] текущего блока, используются для выведения векторов движения. Каждый вектор движения в совместно размещенном блоке масштабируется на основе расстояний POC. В AVC прямой режим также может предсказывать информацию движения от пространственных соседей, что может упоминаться как пространственный прямой режим.

[0069] В HEVC для генерации кодированного представления изображения видеоэнкодер 20 может генерировать набор блоков дерева кодирования (CTU). Каждый из CTU может содержать блок дерева кодирования (CTB) выборок яркости, два соответствующих CTB с выборками цветности и синтаксические структуры, используемые для кодирования выборок CTB. В монохромных изображениях или изображениях, имеющих три отдельные цветовые плоскости, CTU может содержать один блок CTB и синтаксические структуры, используемые для кодирования выборок блока дерева кодирования.

[0070] Блок дерева кодирования может представлять собой блок NxN выборок. Размер CTB может варьироваться от 16×16 до 64×64 в основном профиле HEVC (хотя технически размеры 8×8 CTB могут поддерживаться). Единица кодирования (CU) может быть того же размера, что и CTB, а может составлять 8×8. Каждая единица кодирования кодируется в одном режиме. CTU также может упоминаться как «блок дерева» или «наибольшая единица кодирования» (LCU). CTU HEVC могут быть в широком смысле аналогичны макроблокам других стандартов, таких как H.264/AVC. Однако CTU не обязательно ограничивается конкретным размером и может включать в себя одну или более единиц кодирования (CU). Фрагмент может включать в себя целое число CTU, упорядоченных последовательно в порядке растрового сканирования.

[0071] Для генерации кодированного CTU видеоэнкодер может рекурсивно выполнять разбиение с деревом квадрантов на блоках дерева кодирования CTU для разделения блоков дерева кодирования на блоки кодирования, отсюда и название «единицы дерева кодирования». Блок кодирования может представлять собой блок NxN выборок. CU может содержать блок кодирования выборок яркости и два соответствующих блока кодирования выборок цветности изображения, которое имеет массив выборок яркости, массив выборок Cb и массив выборок Cr, а также синтаксические структуры, используемые для кодирования выборок блоков кодирования. В монохромных изображениях или изображениях, имеющих три отдельные цветовые плоскости, CU может содержать один блок кодирования и синтаксические структуры, используемые для кодирования выборок блока кодирования.

[0072] Видеоэнкодер 20 может разбивать блок кодирования из CU на один или несколько блоков предсказания. Блок предсказания представляет собой прямоугольный (т. е. квадратный или неквадратный) блок выборок, в отношении которых применяется одно и тоже предсказание. Единица предсказания (PU) из CU может содержать блок предсказания выборок яркости, два соответствующих блока предсказания выборок цветности и синтаксические структуры, используемые для предсказания блоков предсказания. В монохромных изображениях или изображениях с тремя отдельными цветовыми плоскостями PU может содержать один блок предсказания и синтаксические структуры, используемые для предсказания блока предсказания. Видеоэнкодер 20 может генерировать предсказательные блоки яркости, Cb и Cr для блоков предсказания яркости, Cb и Cr каждого PU из CU.

[0073] Видеоэнкодер 20 может использовать внутреннее предсказание или внешнее предсказание для генерации предсказательных блоков для PU. Если видеоэнкодер 20 использует внутреннее предсказание для генерации предсказательных блоков PU, видеокодер 20 может генерировать предсказательные блоки PU на основе декодированных выборок изображения, ассоциированного с PU. Если видеокодер 20 использует внешнее предсказание для генерации предсказательных блоков PU, видеокодер 20 может генерировать предсказательные блоки PU на основе декодированных выборок одного или нескольких изображений, отличных от изображения, связанного с PU. При кодировании CU с внешним кодированием, CU может быть дополнительно разделен на два или четыре PU. Когда в одном CU присутствуют два PU, в некоторых случаях PU могут быть прямоугольниками с половинным размером или двумя прямоугольниками с размером четверть или три четверти CU.

[0074] После того, как видеокодер 20 генерирует предсказательные блоки яркости, Cb и Cr для одной или нескольких PU из CU, видеокодер 20 может генерировать остаточный блок яркости для CU. Каждая выборка в остаточном блоке CU указывает на разницу между выборкой яркости в одном из предсказательных блоков яркости CU и соответствующей выборкой в исходном блоке кодирования яркости CU. Кроме того, видеокодер 20 может генерировать остаточный блок Cb для CU. Каждая выборка в остаточном блоке Cb из CU может указывать разницу между выборкой Cb в одном из предсказательных блоков Cb из CU и соответствующей выборкой в исходном блоке кодирования Cb из CU. Видеокодер 20 может также генерировать остаточный блок Cr для CU. Каждая выборка в остаточном блоке Cr из CU может указывать разницу между выборкой Cr в одном из предсказательных блоков Cr из CU и соответствующей выборкой в исходном блоке кодирования Cr из CU.

[0075] Кроме того, видеокодер 20 может использовать разбиение по дереву квадрантов для разложения остаточных блоков яркости, Cb и Cr из CU в один или несколько блоков преобразования яркости, Cb и Cr. Блок преобразования представляет собой прямоугольный (например, квадратный или неквадратный) блок выборок, в отношении которых применяется одинаковое преобразование. Блок преобразования (TU) CU может содержать блок преобразования выборок яркости, два соответствующих блока преобразования выборок цветности и синтаксические структуры, используемые для преобразования выборок блока преобразования. Таким образом, каждый TU из CU может быть связан с блоком преобразования яркости, блоком преобразования Cb и блоком преобразования Cr. Блок преобразования яркости, связанный с TU, может быть подблоком остаточного блока яркости CU. Блок преобразования Cb может быть подблоком остаточного блока Cb из CU. Блок преобразования Cr может быть подблоком остаточного блока Cr из CU. В монохромных изображениях или изображениях, имеющих три отдельные цветовые плоскости, TU может содержать один блок преобразования и синтаксические структуры, используемые для преобразования выборок блока преобразования.

[0076] Видеокодер 20 может применять одно или несколько преобразований к блоку преобразования яркости TU для генерации блока коэффициентов яркости для TU. Блок коэффициентов может быть двумерным массивом коэффициентов преобразования. Коэффициент преобразования может быть скалярной величиной. Видеокодер 20 может применять одно или несколько преобразований к блоку преобразования Cb TU для генерации блока коэффициентов Cb для TU. Видеокодер 20 может применять одно или несколько преобразований к блоку преобразования Cr TU для создания блока коэффициентов Cr для TU.

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

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

[0079] Различные типы блоков NAL могут инкапсулировать различные типы RBSP. Например, первый тип блока NAL может инкапсулировать RBSP для набора параметров изображения (PPS), второй тип блока NAL может инкапсулировать RBSP для кодированного фрагмента, третий тип блока NAL может инкапсулировать RBSP для SEI, и так далее. Блоки NAL, которые инкапсулируют RBSP для данных видеокодирования (в отличие от RBSP для наборов параметров и сообщений SEI), могут упоминаться как единицы NAL уровня видеокодирования (VCL).

[0080] Видеодекодер 30 может принимать битовый поток, генерируемый видеокодером 20. Кроме того, видеодекодер 30 может анализировать битовый поток для получения синтаксических элементов из битового потока. Видеодекодер 30 может реконструировать изображения видеоданных, основываясь, по меньшей мере, частично на синтаксических элементах, полученных из битового потока. Процесс реконструкции видеоданных может быть, в целом, обратным процессу, выполняемому видеокодером 20. Кроме того, видеодекодер 30 может выполнять обратное квантование блоков коэффициентов, связанных с TU текущего CU. Видеодекодер 30 может выполнять обратные преобразования на блоках коэффициентов для реконструкции блоков преобразования, связанных с TU текущего CU. Видеодекодер 30 может реконструировать блоки кодирования текущего CU путем добавления выборок блоков предсказания для PU текущего CU к соответствующим выборкам блоков преобразования TU текущего CU. Реконструируя блоки кодирования для каждого CU изображения, видеодекодер 30 может реконструировать изображение.

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

[0082] В режиме AMVP или слияния список векторов движения (MV) - кандидатов поддерживается для множества предикторов векторов движения. Вектор (векторы) движения текущего PU, также как и опорные индексы в режиме слияния, генерируются путем взятия одного кандидата из списка MV кандидатов.

[0083] Список MV кандидатов содержит до пяти кандидатов для режима слияния и два кандидата для режима AMVP. Кандидат слияния может содержать набор информации движения, например, векторы движения, соответствующие обоим спискам опорных изображений (список 0 и список 1), и опорные индексы. Если кандидат слияния идентифицируется индексом слияния, для предсказания текущих блоков используются опорные изображения, а также определяются связанные векторы движения. Однако в режиме AMVP для каждого потенциального направления предсказания из списка 0 или списка 1 необходимо в явном виде сигнализировать опорный индекс вместе с индексом MVP в списке MV кандидатов, поскольку кандидат AMVP содержит только вектор движения. В режиме AMVP предсказанные векторы движения могут быть дополнительно уточнены.

[0084] Как уже отмечалось выше, кандидат слияния соответствует полному набору информации движения, тогда как кандидат AMVP содержит только один вектор движения для конкретного направления предсказания и опорный индекс. Кандидаты для обоих режимов выводятся аналогично из пространственных и временных соседних блоков, как описано ниже со ссылкой на фиг. 4 и 5.

[0085] В соответствии с аспектами настоящего раскрытия, как описано более подробно ниже, видеокодер 20 и/или видеодекодер 30 могут быть выполнены с возможностью выполнения любой комбинации описанных здесь способов для выведения информации движения, выполнения разбиения блоков и/или интерполяции видеоданных. Что касается выведения информации движения, видеокодер 20 и/или видеодекодер 30 может быть выполнен с возможностью выведения информации движения посредством выполнения поиска движения для первого набора опорных данных, который соответствует второму набору опорных данных вне текущего блока. Соответствие может быть определено на основе степени сходства между опорными данными и может упоминаться здесь как определение «совпадения» или «наилучшего совпадения».

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

[0087] В случаях, когда выведение движения разрешено, в соответствии с аспектами этого раскрытия видеокодер 20 и/или видеодекодер 30 могут выполнять выведение вектора движения по согласованию с образцом. Например, видеокодер 20 и/или видеодекодер 30 могут кодировать один или несколько синтаксических элементов, которые указывают, какой применяется режим выведения информации движения из множества режимов выведения информации движения. Видеокодер 20 и/или видеодекодер 30 могут кодировать флаг для различения двух режимов выведения информации движения или индекс для различения более двух режимов выведения информации движения. Как описано в данном документе, варианты выведения информации движения по согласованию с образцом, включают в себя двустороннее согласование или согласование с шаблоном.

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

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

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

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

[0092] Фиг. 2 представляет собой блок-схему, иллюстрирующую пример видеокодера 20, который может реализовывать способы для выведения информации движения, выполнения разбиения блоков и/или интерполяции видеоданных. Видеокодер 20 может выполнять кодирование видеоблоков с внешним и внутренним предсказанием в видеофрагментах. Кодирование с внутренним предсказанием основывается на пространственном предсказании для уменьшения или удаления пространственной избыточности в видео в рамках данного видеокадра или изображения. Кодирование с внешним предсказанием использует временное предсказание для уменьшения или удаления временной избыточности в видео в соседних кадрах или изображениях видеопоследовательности. Режим с внутренним предсказанием (I-режим) может относиться к любому из нескольких режимов кодирования в пространственном режиме. Режим с внешним предсказанием, например однонаправленное предсказание (режим P) или двунаправленное предсказание (режим B), может относиться к любому из нескольких режимов временного кодирования.

[0093] Как показано на фиг. 2, видеокодер 20 принимает текущий видеоблок в кодируемом видеокадре. В примере на фиг. 2, видеокодер 20 включает в себя память 38 видеоданных, блок 40 выбора режима, память 64 опорного изображения, сумматор 50, модуль 52 обработки преобразования, блок квантования 54, и модуль 56 энтропийного кодирования. Блок 40 выбора режима, в свою очередь, включает в себя блок 44 компенсации движения, блок 42 оценки движения, блок 46 внутреннего предсказания и блок 48 разделения. Для реконструкции видеоблока видеокодер 20 также включает в себя модуль 58 обратного квантования, блок 60 обратного преобразования и сумматор 62. Также может присутствовать фильтр деблокирования (не показан на фиг.2) для фильтрации границ блоков для удаления артефактов блочности из реконструированного видео. При желании фильтр деблокирования фильтрует выходной сигнал сумматора 62. В дополнение к фильтру деблокирования также могут использоваться дополнительные фильтры (в цикле обработки или после нее). Такие фильтры для краткости не показаны, но при желании могут фильтровать выход сумматора 50 (в качестве фильтра, действующего в цикле обработки).

[0094] В процессе кодирования видеокодер 20 принимает видеокадр или фрагмент, подлежащий кодированию. Кадр или фрагмент можно разделить на несколько видеоблоков. Память 38 видеоданных может сохранять видеоданные, подлежащие кодированию компонентами видеокодера 20. Видеоданные, хранящиеся в памяти 38 видеоданных, могут быть получены, например, из видеоисточника 18. Память 64 опорных изображений, которая может упоминаться как DPB, хранит опорные видеоданные для использования при кодировании видеоданных с помощью видеокодера 20, например, в режимах с внутренним и внешним предсказанием. Память 38 хранения видеоданных и память 64 опорных изображений могут быть образованы любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM), или другими типами запоминающих устройств. Память 38 хранения видеоданных и память 64 опорных изображений могут быть обеспечены одним и тем же запоминающим устройством или реализованы в виде отдельных запоминающих устройств. В различных примерах память 38 видеоданных может быть встроенной на одной микросхеме с другими компонентами видеокодера 20 или выполнена как внешняя относительно этих компонентов.

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

[0096] Кроме того, модуль 48 разделения может разделять блоки видеоданных на подблоки на основе оценки предыдущих схем разделения в предыдущих проходах кодирования. Например, модуль 48 разделения может сначала разделять кадр или фрагмент на LCU и разбивать каждый из LCU на под-CU на основе анализа скорость-искажение (например, оптимизации скорость-искажение). Модуль 40 выбора режима может дополнительно создавать структуру дерева квадрантов, указывающую на разделение LCU на под-CU. Листья-узлы CU дерева квадрантов могут включать в себя один или более PU и один или более TU.

[0097] Модуль 40 выбора режима может выбирать один из режимов кодирования, с внутренним или внешним предсказанием, например, на основе результата ошибки, и предоставляет результирующий блок, закодированный с внутренним или внешним предсказанием, в сумматор 50 для генерации данных остаточного блока и в сумматор 62 для реконструкции кодированного блока для использования в качестве опорного кадра. Модуль 40 выбора режима также предоставляет синтаксические элементы, такие как векторы движения, индикаторы режима внутреннего предсказания, информацию о разделе и другую подобную синтаксическую информацию, в модуль 56 энтропийного кодирования.

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

[0099] В некоторых примерах видеокодер 20 может выполнять быстрый поиск движения для определения вектора движения блока. Существует много способов быстрого поиска движения, предложенных в литературе, таких как поиск способом градиентного спуска на основе блоков (BBGDS), как описано, например, в Lurng-Kuo Liu, Ephraim Feig, ʺA block-based gradient descent search algorithm for block motion estimation in video coding,ʺ IEEE Trans. Circuits Syst. Video Technol., vol. 6, pp, 419-422, Aug.1996, Неограниченный ромбовидный поиск со смещенным центром (UCBDS), как описано, например, в Jo Yew Tham, Surendra Ranganath, Maitreya Ranganath, and Ashraf Ali Kassim, ʺA novel unrestricted center-biased diamond search algorithm for block motion estimation,ʺ IEEE Trans. Circuits Syst. Video Technol., vol. 8, pp. 369-377, Aug. 1998, и гексагональный поиск (HEBS), как описано, например, Ce Zhu, Xiao Lin, and Lap-Pui Chau, ʺ Hexagon-Based Search Pattern for Fast Block Motion Estimation,ʺ IEEE Trans. Circuits Syst. Video Technol., vol. 12, pp. 349-355, May 2002. В основном, эти способы включают в себя поиск только определенного количества позиций внутри окна поиска на основе предопределенных шаблонов поиска. Эти способы обычно хорошо работают при небольшом и умеренном движении.

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

[0101] Модуль 42 оценки движения вычисляет оценку вектора движения для PU из видеоблока в фрагменте, кодированном с внутренним предсказанием, сравнивая положение PU с положением предсказательного блока опорного изображения. Опорное изображение может быть выбрано из первого списка опорных изображений (список 0) или второго списка опорных изображений (список 1), каждый из которых идентифицирует одно или более опорных изображений, сохраненных в памяти 64 опорных изображений. Модуль 42 оценки движения отправляет вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.

[0102] Компенсация движения, выполняемая модулем 44 компенсации движения, может включать в себя выборку или создание предсказательного блока на основе вектора движения, определенного модулем 42 оценки движения. Следует еще раз отметить, что в некоторых примерах модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированы. После приема вектора движения для PU текущего видеоблока модуль 44 компенсации движения может выполнять установить положение предсказательного блока, на который указывает вектор движения, в одном из списков опорных изображений. Сумматор 50 формирует остаточный видеоблок путем вычитания значений пикселя предсказательного блока из значений пикселей текущего видеоблока, в отношении которого выполняется кодирование, формируя значения разности пикселей, как обсуждается ниже. В целом, модуль 42 оценки движения выполняет оценку движения относительно компонентов яркости, а модуль 44 компенсации движения использует векторы движения, рассчитанные на основе компонентов яркости как для компонентов цветности, так и для компонентов яркости. Модуль 40 выбора режима может также генерировать синтаксические элементы, связанные с видеоблоками, и видеофрагментом для использования видеодекодером 30 при декодировании видеоблоков видеофрагмента.

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

[0104] Например, модуль 46 внутреннего предсказания может вычислять значения скорость-искажение, используя анализ скорость-искажение для различных протестированных режимов внутреннего предсказания, и выбирать режим внутреннего предсказания, имеющий наилучшие характеристики скорость-искажение среди протестированных режимов. Анализ скорость-искажение обычно определяет величину искажения (или ошибки) между кодированным блоком и исходным незакодированным блоком, который был закодирован для создания кодированного блока, а также битрейт (то есть количество битов), используемый для создания кодированного блока. Модуль 46 внутреннего предсказания может вычислять отношения искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим внутреннего предсказания имеет наилучшее значение скорость-искажение для блока.

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

[0106] Согласно аспектам настоящего раскрытия, как описано настоящем документе, видеокодер 20 может быть выполнен с возможностью выполнения любой комбинации описанных здесь способов для выведения информации движения, выполнения разбиения блоков и/или интерполяции видеоданных. В частности, некоторые способы настоящего раскрытия могут выполняться посредством модуля 49 выведения. Например, модуль 49 выведения может быть выполнен с возможностью выведения информации движения для текущего блока и без включения в битовый поток данных, указывающих информацию движения.

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

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

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

[0110] Хотя модуль 49 выведения может быть выполнен с возможностью выполнения определенных способов выведения и/или интерполяции, как описано в настоящем документе, следует понимать, что один или несколько других блоков видеокодера 20 могут также или альтернативно быть выполнены с возможностью интерполяции данных. Например, видеокодер 20 может включать в себя множество других интерполяторов или фильтров, например, для интерполяции пикселя в субпиксельном (подэлементном) местоположении во время компенсации движения.

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

[0112] В любом случае модуль 52 обработки преобразования применяет преобразование к остаточному блоку, создавая блок коэффициентов остаточного преобразования. Преобразование может преобразовывать остаточную информацию из домена значений пикселей в домен преобразования, например, в частотный домен. Модуль 52 обработки преобразования может отправлять полученные коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования для дальнейшего уменьшения скорости передачи битов. Процесс квантования может уменьшить глубину бита, связанную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена путем корректировки параметра квантования. В некоторых примерах модуль 54 квантования может затем выполнять сканирование матрицы, содержащей квантованные коэффициенты преобразования. Альтернативно, сканирование может выполнять модуль 56 энтропийного кодирования.

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

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

[0115] Фиг. 3 представляет собой блок-схему, иллюстрирующую пример видеодекодера 30, который может реализовывать способы для выведения информации движения, выполнения разбиения блоков и/или интерполяции видеоданных. В примере на фиг. 3, видеодекодер 30 включает в себя память 68 видеоданных, модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего предсказания, модуль 76 обратного квантования, модуль 78 обратного преобразования, память 82 опорных изображений и сумматор 80. Видеодекодер 30 может в некоторых примерах выполнять последовательность операций декодирования, в целом, обратную последовательности операций кодирования, описанному в отношении видеокодера 20 (фиг.2). Модуль 72 компенсации движения может генерировать данные предсказания на основе векторов движения, принятых из модуля 70 энтропийного декодирования, тогда как модуль 74 внутреннего предсказания может генерировать данные предсказания на основе индикаторов режима внутреннего предсказания, принятых из модуля 70 энтропийного декодирования.

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

[0117] Память 82 опорных изображений, которая может упоминаться как DPB, хранит опорные видеоданные для использования при декодировании видеоданных видеодекодером 30, например, в режимах с внутренним или внешним предсказанием. Память 68 видеоданных и память 82 опорных изображений могут быть образованы любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM), или другими типами запоминающих устройств. Память 68 видеоданных и память 82 опорных изображений могут быть обеспечены одним и тем же запоминающим устройством или отдельными запоминающими устройствами. В различных примерах память 68 видеоданных может быть встроенной с другими компонентами видеодекодера 30 или выполнена внешней относительно этих компонентов.

[0118] Модуль 70 энтропийного декодирования видеодекодера 30 декодирует битовый поток для генерации квантованных коэффициентов, векторов движения или индикаторов режима внутреннего предсказания и других синтаксических элементов. Модуль 70 энтропийного декодирования пересылает векторы движения и другие синтаксические элементы в модуль 72 компенсации движения. Видеодекодер 30 может принимать синтаксические элементы на уровне видеофрагмента и/или уровне видеоблока.

[0119] Когда видеофрагмент кодируется как (I) фрагмент с внутренним предсказанием, модуль 74 внутреннего предсказания может генерировать данные предсказания для видеоблока текущего видеофрагмента на основе сигнализированного режима с внутренним предсказанием и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр закодирован как фрагмент с внешним предсказанием (то есть B, P или GPB), блок 72 компенсации движения создает предсказательные блоки для видеоблока текущего видеофрагмента на основе векторов движения и других синтаксических элементов, полученных из модуля 70 энтропийного декодирования. Предсказательные блоки могут быть получены из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может создавать списки опорных кадров, список 0 и список 1, используя способы построения по умолчанию на основе опорных изображений, хранящихся в памяти 82 опорных изображений.

[0120] Модуль 72 компенсации движения определяет информацию предсказания для видеоблока текущего видеофрагмента, анализируя векторы движения и другие синтаксические элементы и использует информацию предсказания для создания предсказательных блоков для декодируемого текущего видеоблока. Например, для декодирования видеоблоков в текущем видеофрагменте модуль 72 компенсации движения использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков видеофрагмента, тип фрагмента для внешнего предсказания (например, B фрагмент, P фрагмент или GPB фрагмент), информацию о конструкции для одного или нескольких списков опорных изображений для фрагмента, вектора движения для каждого видеоблока фрагмента, кодированного с внешним предсказанием, статус внешнего предсказания для каждого видеоблока фрагмента с внешним предсказанием и другую информацию.

[0121] Модуль 72 компенсации движения также может выполнять интерполяцию на основе фильтров интерполяции. Модуль 72 компенсации движения может использовать фильтры интерполяции, используемые видеокодером 20 во время кодирования видеоблоков, для вычисления интерполированных значений для субцелочисленных пикселей опорных блоков. В этом случае модуль 72 компенсации движения может определять фильтры интерполяции, используемые видеокодером 20, из принимаемых синтаксических элементов и использовать фильтры интерполяции для создания предсказательных блоков.

[0122] В соответствии с аспектами настоящего раскрытия видеодекодер 30 может быть выполнен с возможностью выполнения любой комбинации описанных здесь способов для выведения информации движения, выполнения разбиения блоков и/или интерполяции видеоданных. В частности, некоторые способы этого раскрытия могут выполняться модулем 75 выведения. Например, в соответствии с аспектами этого раскрытия модуль 75 выведения может быть выполнен с возможностью выведения информации движения для текущего блока и без декодирования информации движения из кодированного битового потока.

[0123] В некоторых случаях модуль 75 выведения может определять, выполнять ли выведение движения для конкретного блока (например, по сравнению с внутренним предсказанием или традиционным внешним предсказанием). Например, видеодекодер 30 может декодировать один или несколько синтаксических элементов, указывающих, что информация движения выведена (а не сигнализирована) для блока, в отношении которого выполняется декодирование. Видеодекодер 30 также может декодировать один или несколько синтаксических элементов, которые указывают один из режимов выведения информации движения из множества режимов выведения информации движения, которые будут использоваться для декодирования блока. Модуль 75 выведения может определять, следует ли выполнять выведение движения и режима выведения информации движения для блока на основе декодированного синтаксиса. В некоторых примерах, как описано здесь, синтаксис может быть связан с одним или несколькими другими режимами, такими как режим слияния, AMVP или другие функции декодирования.

[0124] Согласно другим аспектам настоящего раскрытия модуль 75 выведения может интерполировать видеоданные, которые не включены в кодированный битовый поток для видеопоследовательности. Например, модуль 75 выведения может выполнять любую комбинацию способов выведения движения для интерполяции изображения, которое не включено в обработанный битовый поток, например, аналогично преобразованию с повышением частоты кадров. В некоторых случаях видеодекодер 30 может использовать интерполированное изображение во время кодирования. Например, модуль 75 выведения может интерполировать изображение и видеодекодер 30 может декодировать данные для текущего изображения относительно интерполированного изображения. В этом примере видеодекодер 30 может добавить интерполированное изображение в память 82 опорных изображений и декодировать данные других изображений на основе, по меньшей мере, части интерполированного изображения.

[0125] В других примерах модуль 75 выведения может интерполировать изображение и видеодекодер 30 может установить интерполированное изображение равным текущему изображению. Например, модуль 75 выведения может интерполировать текущее изображение, а видеодекодер 30 может декодировать синтаксические элементы для текущего изображения из кодированного битового потока (например, данные заголовка фрагмента и т.п.), но может пропускать декодированные видеоданные для текущего изображения и вместо этого интерполировать текущее изображение.

[0126] Хотя модуль 75 выведения может быть выполнен с возможностью выполнения определенных способов интерполяции, как описано в настоящем документе, следует понимать, что один или несколько других блоков видеодекодера 30 могут также или альтернативно быть выполнены с возможностью интерполяции данных. Например, видеодекодер 30 может включать в себя множество других интерполяторов или фильтров, например, для интерполяции пикселя в субпиксельном (подэлементном) местоположении во время компенсации движения.

[0127] Модуль 76 обратного квантования выполняет обратное квантование, т. е. деквантование, квантованных коэффициентов преобразования, предоставленных в битовом потоке и декодированных модулем 70 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра QPY квантования, вычисленного видеодекодером 30 для каждого видеоблока в видеофрагменте, для определения степени квантования и, аналогично, степени обратного квантования, которая должна применяться.

[0128] Модуль 78 обратного преобразования применяет обратное преобразование, например обратное DCT, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования для создания остаточных блоков в пиксельном домене.

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

[0130] Фиг. 4A и 4B представляют собой концептуальные диаграммы, иллюстрирующие соседние в пространстве кандидаты в HEVC. В некоторых примерах видеокодер 20 и/или видеодекодер 30 могут выводить вектора пространственного движения (MV) - кандидаты из соседнего блока 0, соседнего блока 1, соседнего блока 2, соседнего блока 3 или соседнего блока 4 для PU0.

[0131] В некоторых случаях способы генерации MV-кандидатов из блоков различаются для режимов слияния и AMVP. На фиг.4А показан один пример для режима слияния. Например, в HEVC видеокодер (например, такой как видеокодер 20 и/или видеодекодер 30 на фиг.1-3) может выводить до четырех пространственных кандидатов MV. Кандидаты могут быть включены в список кандидатов в определенном порядке. В одном примере порядок для примера на фиг. 4A может быть следующим: соседний блок 0 (A1), соседний блок 1 (B1), соседний блок 2 (B0), соседний блок 3 (A0) и соседний блок 4 (B2).

[0132] Фиг. 4B иллюстрирует один пример для режима AMVP. Например, в HEVC видеокодер может делить соседние блоки на две группы: левую группу, включающую в себя соседний блок 0 и соседний блок 1, и верхнюю группу, включающую в себя соседний блок 2, соседний блок 3 и соседний блок 4. Для каждой группы потенциальный вектор движения - кандидат, связанный с соседним блоком, ссылающимся на то же опорное изображение, которое указано сигнализированным опорным индексом (для блока, который кодируется в настоящее время), может иметь наивысший приоритет, для того, чтобы быть выбранным для формирования окончательного кандидата группы. Возможно, что ни один из соседних блоков не содержит вектор движения, указывающий на то же опорное изображение. Поэтому, если такой кандидат не может быть найден, видеокодер может масштабировать первого доступного кандидата для формирования окончательного кандидата, и таким образом могут быть скомпенсированы различия в расстояниях по временной оси.

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

[0134] Фиг. 5A и 5B представляют собой концептуальные диаграммы, иллюстрирующие временное предсказание вектора движения в HEVC. Временной предиктор вектора движения (TMVP) - кандидат, если он разрешен и доступен, добавляется в список MV - кандидатов после пространственных векторов движения - кандидатов. В HEVC процесс выведения вектора движения для кандидата TMVP является одинаковым как для режимов слияния, так и для AMVP, однако целевой опорный индекс для кандидата TMVP в режиме слияния обычно устанавливается равным нулю.

[0135] Фиг. Фиг.5A иллюстрирует местоположение первичного блока (показанное как блок «T») для кандидата TMVP, который является нижним правым блоком за пределами совместно размещенной PU. Это местоположение может компенсировать смещение в предыдущем и левом блоках, используемых для создания пространственных соседних кандидатов. Однако, если блок Т расположен за пределами текущей строки СТБ, или информация движения недоступна, блок заменяется центральным блоком PU, как показано пунктирными стрелками из блока Т на фиг. 5A.

[0136] Фиг. 5B иллюстрирует выведение кандидата 84 TMVP для текущего блока 86 текущего изображения 88 из совместно размещенного PU 90 совместно размещенного изображения 92, как указано на уровне фрагмента (например, в заголовке фрагмента). Подобно временному прямому режиму в AVC вектор движения -кандидат TMVP может подвергаться масштабированию вектора движения, которое выполняется для компенсации различий в расстоянии, например, временных расстояний между изображениями. Что касается масштабирования вектора движения, видеокодер (такой как видеокодер 20 и/или видеодекодер 30) может быть выполнен с возможностью изначального определения, что значение векторов движения пропорционально расстоянию между изображениями во время представления. Вектор движения связывает два изображения, опорное изображение, и изображение, содержащее вектор движения (а именно, содержащее изображение). Когда вектор движения используются для предсказания другого вектора движения, расстояние от содержащего изображения и опорного изображение рассчитываются на основе значений Счетчика Последовательности Изображений (POC).

[0137] Для предсказания вектора движения, как связанное содержащее изображение для вектора движения, так и опорное изображение вектора движения могут быть различными. Следовательно, видеокодер может вычислять новое расстояние на основе значений POC, и видеокодер может масштабировать вектор движения на основе этих двух расстояний POC. Для пространственно соседнего кандидата содержащие изображения для двух векторов движения одинаковы, а опорные изображения - разные. В HEVC масштабирование вектора движения применяется как к TMVP, так и к AMVP для пространственных и временных соседних кандидатов.

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

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

[0140] В соответствии с аспектами настоящего раскрытия вектора движения - кандидаты, такие как TMVP, показанные на фиг. 5А и 5В, могут быть использованы для выведения вектора движения для блока. Например, видеокодер может генерировать список кандидатов, который включает в себя TMVP, определенный в соответствии с процессом, описанным выше. В этом примере видеокодер может использовать TMVP в качестве исходного вектора движения в процессе выведения информации движения (например, двустороннее согласование, согласование с шаблоном и т.п.). Видеокодер может применять TMVP в процессе вывода вектора движения для идентификации опорных данных. Видеокодер может выбирать TMVP в случаях, когда TMVP идентифицирует хорошо совпадающие опорные данные (например, как описано со ссылкой на фиг.8-9 ниже). Видеокодер может в некоторых случаях дополнительно уточнить TMVP для определения выведенного вектора движения, используя процесс выведения информации движения.

[0141] В некоторых примерах видеокодер может отбрасывать элементы списка кандидатов, который включает в себя вектора движения - кандидаты (такие как те, которые описаны в отношении фиг.4А-5В). Например, в некоторых случаях кандидаты из разных блоков могут оказаться одинаковыми, что снижает эффективность списка кандидатов на слияние/AMVP. Видеокодер может применить процесс отбрасывания для решения этой проблемы. Видеокодер может сравнивать одного кандидата с другими в текущем списке кандидатов, чтобы избежать вставки идентичного кандидата. Чтобы уменьшить сложность, видеокодер может применять только ограниченное количество процессов отбрасывания вместо сравнения каждого потенциального кандидата со всеми другими существующими.

[0142] Фиг. 6 представляет собой концептуальную диаграмму, иллюстрирующую пример односторонней оценки движения (ME) в преобразовании с повышением частоты кадров (FRUC). В частности, на фиг. 6 показан текущий кадр 100, опорный кадр 102 и интерполированный кадр 104. В некоторых случаях видеодекодер или устройство последующей обработки могут интерполировать изображения на основе одного или нескольких опорных изображений. Видеодекодер или устройство последующей обработки могут интерполировать изображения для повышения исходной частоты кадров кодированного битового потока. В качестве альтернативы, видеодекодер или устройство последующей обработки могут интерполировать изображения для вставки одного или нескольких изображений, которые пропускались видеокодером для кодирования видеопоследовательности с уменьшенной частотой кадров. В любом случае видеодекодер или устройство последующей обработки интерполируют кадры (такие как интерполированный кадр 104), которые не включены в кодированный битовый поток, который был принят видеодекодером, с использованием декодированных изображений (таких как текущий кадр 100 и опорный кадр 102). Видеодекодер или устройство последующей обработки могут интерполировать изображения с использованием любого из нескольких способов интерполяции, например, с использованием интерполяции кадра с компенсацией движения, повторения кадра или усреднения кадра.

[0143] Вышеупомянутые способы интерполяции кадров обычно реализуются после цикла обработки. Например, видеодекодер обычно принимает и декодирует кодированный битовый поток для генерации реконструированного представления видеопоследовательности, включающей в себя текущий кадр 100 и опорный кадр 102. После цикла декодирования видеодекодер или другое устройство последующей обработки могут интерполировать изображения, которые должны быть включены в реконструированное представление, включая интерполированный кадр 104. В некоторых случаях процесс интерполяции изображения можно назвать повышением частоты кадров (FRUC), поскольку результирующая последовательность изображений включает в себя дополнительные (интерполированные) изображения, которые не были включены в кодированный битовый поток.

[0144] Соответственно, технология FRUC может использоваться для генерации видео с высокой частотой кадров на основе видео с низкой частотой кадров. FRUC используется в индустрии устройств отображения. В качестве примеров можно привести H. Liu, R. Xiong, D. Zhao, S. Ma, W. Gao, ʺMultiple Hypotheses Bayesian Frame Rate Up-Conversion by Adaptive Fusion of Motion-Compensated Interpolationsʺ, IEEE transactions on circuits and systems for video technology, vol. 22, No. 8, Aug. 2012; W. H. Lee, K. Choi, J. B. Ra, ʺFrame rate up conversion based on variational image fusionʺ, IEEE transactions on image processing, vol. 23, No. 1, Jan. 2014; и U. S. Kim, M. H. Sunwoo, ʺNew frame rate up-conversion algorithms with low computational complexityʺ, IEEE transactions on circuits and systems for video technology, vol. 24, No. 3, Mar. 2014.

[0145] Алгоритмы FRUC можно разделить на два типа. Способы одного типа интерполируют промежуточные кадры простым повторением кадра или усреднением. Однако этот способ обеспечивает неправильные результаты для изображения, которое содержит много движений. Способ другого типа, называемый FRUC с компенсацией движения (MC-FRUC), учитывает перемещение объекта, когда он генерирует промежуточные кадры, и состоит из двух этапов: оценки движения (ME) и интерполяции с компенсацией движения (MCI). ME генерирует векторы движения (MV), которые представляют движение объекта с использованием векторов, тогда как MCI использует MV для генерации промежуточных кадров.

[0146] Алгоритм сравнения блоков (BMA) широко используется для ME в MC-FRUC, поскольку его просто реализовать. BMA делит изображение на блоки и обнаруживает движение этих блоков, например, чтобы определить, соответствуют ли блоки друг другу. Для BMA в основном используются два типа ME: одностороннее ME и двустороннее ME.

[0147] Как показано на фиг. 6, одностороннее МЕ получает MV путем поиска наиболее совпадающего блока из опорного кадра 102 текущего кадра 100. Затем блок на траектории движения в интерполированном кадре может быть расположен так, чтобы был достигнут MV. Как показано на фиг. 6, три блока, включая 106A, 106B и 106C из текущего кадра 100, опорного кадра 102 и интерполированного кадра 104, соответственно, задействованы по траектории движения. Хотя блок-106A в текущем кадре 100 принадлежит к кодированному блоку, блок 106B с наилучшим совпадением в опорном кадре 102 может не в полной мере относятся к кодированному блоку, то же самое справедливо и для блока 106C в интерполированном кадре 104. Следовательно, в интерполированном кадре могут встречаться перекрывающиеся области блоков и незаполненные области (отверстия).

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

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

[0150] В некоторых примерах видеокодер может интерполировать текущее изображение таким образом, что режим FRUC является единственным разрешенным режимом, где режим FRUC обозначает способ одностороннего согласования, показанный на фиг. 6 или любые другие способы выведения информации или способы интерполяции, описанные в настоящем документе. Следовательно, вместо сигнализации о структуре CU на основе четырехквадрантных деревьев все блоки могут иметь одинаковую предопределенный или сигнализированный размер. В некоторых случаях может быть разрешено только подмножество допустимых режимов кодирования CU, таких как регулярный пропуск, регулярное слияние, режим FRUC и режим внутреннего предсказания. Альтернативно или дополнительно, в таком изображении или фрагменте может быть разрешен режим заполнения отверстий для FRUC.

[0151] В соответствии с аспектами настоящего раскрытия может быть введено сообщение SEI, указывающее, какие изображения или подпоследовательность изображений кодируются FRUC уровня изображения. Такие изображения можно отбросить, не влияя на качество других изображений. Такое сообщение SEI может указывать (или дополнительно указывать), какой временный уровень (уровни) содержат FRUC-кодированные изображения, или содержат только FRUC-кодированные изображения. Такая информация в сообщении SEI также может присутствовать в виде другого синтаксиса высокого уровня, например PPS, SPS и VPS.

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

[0153] Что касается заполнения отверстий, в соответствии с аспектами этого раскрытия, видеокодер может реализовывать способы заполнения отверстий на основе блоков. Например, один способ заполнения отверстий заключается в использовании пространственно соседних внешних блоков для предсказания текущего внутреннего блока в одном и том же CTU. Например, видеокодер может дважды кодировать/декодировать CTU. Первое кодирование/декодирование является нормальным. Во втором раунде кодируются/декодируются и перезаписываются только внутренние блоки. Для внутреннего блока все его пространственно соседние внешние блоки в одном и том же CTU, в том числе и в нижнем правом углу текущего блока, помечены как доступные для внутреннего предсказания. Способ заполнения отверстий также может быть на уровне фрагмента, плитки, изображения, любом другом уровне. Другой способ заполнения отверстий может использовать технику ретуширования изображения. Также могут применяться другие способы заполнения отверстий.

[0154] Фиг. 7 представляет собой концептуальную диаграмму, иллюстрирующую пример двусторонней оценки движения (ME) в FRUC. В частности, на Фиг.7 показан интерполированный блок 108 интерполированного кадра 110, который интерполирован из текущего блока 112 текущего кадра 114, и опорного блока 116 опорного кадра 118. Как показано на фиг. 7, двустороннее ME является другим решением (в MC-FRUC), которое может быть использовано для предотвращения проблем, вызванных перекрытиями и отверстиями, показанными на фиг. 6. Двусторонний МЕ получает MV проходящие через интерполированный блок 108 используя временную симметрию между блоками 112 и 116 из текущего кадра 114 и опорного кадра 118, соответственно. В результате он не создает перекрытий и отверстий. Так как предполагается, что текущий блок является блоком, который обрабатывается в определенном порядке, например, как в случае видеокодирования, последовательность таких блоков будет охватывать все промежуточное изображение без перекрытия. Например, в случае видеокодирования блоки могут обрабатываться в порядке декодирования.

[0155] Согласно аспектам настоящего раскрытия, двусторонняя оценка движения, показанная в примере на фиг. 7 может использоваться для получения информации движения. Например, как описано более подробно со ссылкой на фиг. 9 ниже, видеокодер (такой как видеокодер 20 или видеодекодер 30) может применять двустороннее согласование в качестве режима выведения информации движения для получения информации движения во время кодирования. При двустороннем согласовании, видеокодер может выполнять поиск движения для первого набора опорных данных в первом опорном изображении, который соответствует второму набору опорных данных во втором опорном изображении.

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

[0157] Фиг. 8 представляет собой концептуальную диаграмму, иллюстрирующую пример вывода вектора движения на стороне декодера с использованием согласования с шаблоном (DMVD). Для продвинутых видеокодеков процент битов информации движения в битовом потоке становится все больше. В некоторых случаях DMVD может уменьшить битовую стоимость информации движения. Основанный на шаблонах DMVD может демонстрировать улучшение эффективности кодирования, как описано, например, в S. Kamp, M. Wien, ʺDecoder-side motion vector derivation for block-based video codingʺ, IEEE transactions on circuits and systems for video technology, vol. 22, No. 12, Dec. 2012.

[0158] В примере на фиг. 8, текущее изображение 120 включает в себя цель 122 предсказания (например, блок, кодируется который в настоящее время) и шаблон 124. Опорные изображения 126 включают в себя совместно размещенный шаблон 128, наилучшее совпадение 130 и вектор 132 смещения. Видеокодер (такой как видеокодер 20 и/или видеодекодер 30) может использовать шаблон 124 для поиска наилучшего совпадения для цели 122 предсказания (например, вместо использования самой цели 122 предсказания, которая еще должна быть закодирована). Например, видеокодер может выполнять поиск движения, чтобы идентифицировать первый набор опорных данных (например, наилучшее совпадение 130), который соответствует второму набору опорных данных вне цели 122 предсказания (например, шаблон 124). Как отмечено выше, соответствие может быть определено на основе степени совпадения между опорными данными и может упоминаться здесь как определяющее «совпадение» или «наилучшее совпадение».

[0159] В показанном примере видеокодер может идентифицировать совместно размещенный шаблон 128 в опорных изображениях 126. Затем видеокодер может выполнить поиск наилучшего совпадения 130, которое включает в себя значения пикселей, которые схожи с шаблоном 124. Видеокодер может определять вектор 132 смещения на основе смещения совместно размещенного шаблона 128 и наилучшего совпадения 130 в опорных изображениях 126.

[0160] Предполагая, что шаблон 124 и цель 122 предсказания принадлежат одному и тому же объекту, вектор движения шаблона может использоваться в качестве вектора движения цели предсказания. Следовательно, в примере на фиг. 8, видеокодер может применять вектор 132 смещения к цели 122 предсказания. Поскольку согласование с шаблоном выполняется как на видеокодере, так и на видеодекодере, вектор движения может быть получен на стороне декодера, чтобы затрат, связанных с сигнализацией.

[0161] Согласно аспектам этого раскрытия видеокодер может применять согласование с шаблоном в качестве режима выведения информации движения. Например, видеокодер может применять согласование с шаблоном для выведения информации движения текущего блока путем определения наилучшего совпадения между шаблоном 124 текущего изображения и соответствующими опорными данными в опорных изображениях 126. Хотя в примере по Фиг.8 шаблон 124 показан в виде L-образного блока видеоданных, следует понимать, что могут использоваться другие шаблоны. Например, видеокодер может использовать несколько блоков в качестве шаблона, например, один или несколько блоков, расположенных слева от цели 122 предсказания, и один или несколько блоков, расположенных выше цели 122 предсказания.

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

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

[0164] Фиг. 9 представляет собой концептуальную диаграмму, иллюстрирующую пример двунаправленного выведения вектора движения в DMVD. Другая категория DMVD представляет собой двунаправленное выведение MV на основе зеркального отражения, как описано, например, в Y.-J. Chiu, L. Xu, W. Zhang, H. Jiang, ʺDecoder-side Motion Estimation and Wiener filter for HEVCʺ, Visual communications and Image Processing (VCIP), 2013. Концепция двунаправленного выведения вектора движения в DMVD может быть аналогичной двустороннему ME в FRUC. Например, основанное на зеркальном отражении выведение MV может быть применено в центросимметричной оценке движения вокруг центров поиска с точностью до дробной выборки.

[0165] Пример на фиг. 9 включает в себя текущее изображение 140, имеющее текущий блок 142 (блок, который кодируется в настоящее время), первый вектор движения - кандидат PMV0, который идентифицирует первый блок 144 шаблона первого опорного изображения 146 (L0 ref), и второй вектор движения - кандидат PMV1, который идентифицирует второй блок 148 шаблона второго опорного изображения 150. Видеокодер может применять dMV как смещение, чтобы найти первый опорный блок 152 в поисковом окне 154 первого опорного изображения 146, и, чтобы определить местонахождение второго опорного блока 156 в поисковом окне 158 второго опорного изображения 150.

[0166] Например, видеокодер может добавить dMV к PMV0 и вычесть dMV из PMV1 для генерации пары MV, MV0 и MV1. Видеокодер может проверять все значения dMV внутри поискового окна 154 и 158, чтобы определить, какое значение dMV приводит к лучшему совпадению между первым опорным блоком 152 (например, первым набором опорных данных) из L0 ref и вторым опорным блоком 156 (например, вторым набором опорных данных) из L1 ref. В некоторых примерах видеокодер может определить наилучшее совпадение, основанное на сумме абсолютной разницы (SAD). В других примерах видеокодер может использовать другой показатель для определения наилучшего совпадения. Размер и местоположение поисковых окон 154 и 158 могут быть предопределены или могут быть сигнализированы в битовом потоке.

[0167] Видеокодер может выбрать пару MV с минимальным SAD в качестве результата центросимметричной оценки движения. Поскольку этот способ использует ссылку вперед по времени (ссылку на временную позицию позже текущего кадра) и ссылку назад по времени (ссылку на временную позицию раньше текущего кадра) для сравнения по SAD, он не может быть применен к P-кадру или при малой B-задержке, в которых доступна только ссылка на более ранний кадр.

[0168] В соответствии с аспектами этого раскрытия видеокодер может применять способ двунаправленного выведения вектора движения в качестве режима выведения информации движения. В некоторых примерах видеокодер может применять способы, показанные на фиг. 9, используя один или несколько векторов движения из списка векторов движения - кандидатов. Например, видеокодер может быть выполнен с возможностью определения одного или нескольких векторов движения - кандидатов с использованием любой комбинации описанных здесь методов (например, кандидатов режима слияния, кандидатов AMVP, TMVP и т.п.). Видеокодер также может быть выполнен с возможностью применения одного или нескольких векторов движения - кандидатов в виде PMV0 и/или PMV1 для поиска первого блока 144 шаблона и второго блока 148 шаблона. Видеокодер также может быть выполнен с возможность определения того, какой из векторов движения - кандидатов приводит к наилучшему совпадению между первым блоком 144 шаблона и вторым блоком 148 шаблона.

[0168] В соответствии с аспектами этого раскрытия видеокодер может также быть сконфигурирован с возможностью уточнения вектора движения - кандидата для получения информации движения для текущего блока 142. Например, видеокодер может искать наилучшее совпадение, применяя различные значения dMV, как описано выше. Таким образом, видеокодер может выводить MV-пару MV0 и MV1.

[0170] Фиг. 11 представляет собой концептуальную диаграмму, иллюстрирующую расширенный двусторонний подход, основанный на движении вектора движения. Один из потенциальных недостатков двунаправленного MV-преобразования на основе зеркал (например, как показано на фиг.10) заключается в том, что он не работает, когда оба опорных изображения для текущего изображения расположены либо раньше, либо позже, чем текущее изображение. Способы расширенные двустороннего согласования, описанные здесь, могут в некоторых случаях преодолеть недостаток, заключающийся в том, что все опорные изображения текущего изображения находятся на одной и той же стороне (в порядке отображения) от текущего изображения.

[0171] Пример по Фиг. 11 включает в себя текущее изображение 160, включающее в себя текущий блок 162, первое опорное изображение (Ref0) 164 включающее в себя первый опорный блок 166, и второе опорное изображение (Ref0) 168, включающее в себя второй опорный блок 170. Как показано на фиг. 11, как первое опорное изображение (Ref0) 164 так и второе опорное изображение (Ref1) 168 оба расположены перед текущим изображением по временной оси. Предполагая, что первый опорный блок 166, второй опорный блок 170 и текущий блок 162 расположены вдоль одной и той же траектории движения, отношение между MV0 и MV1 должно быть равно отношению между временным расстоянием TD0 и TD1. Другими словами, с учетом двух опорных изображений Ref0 и Ref1 с временным расстоянием TD0 и TD1 до текущего изображения, для любого MV0 в Ref0, MV1 в Ref1 может быть определен масштабированием MV0.

[0172] Видеокодер может выбрать конечную пару MV0 и MV1 в качестве пары, которая минимизирует стоимость согласования между парой блоков, на которую указывают MV0 и MV1 (например, как описано выше в отношении фиг.10). Теоретически текущий блок 162 можно рассматривать как экстраполированный блок на основе первого опорного блока 166 и второго опорного блока 170. Следует отметить, что расширенное двустороннее согласование также работает в нормальном двунаправленном случае, когда текущее изображение находится между двумя опорными изображениями по временной оси. В этом случае текущий блок 162 может рассматриваться как интерполированный блок на основе первого опорного блока 166 и второго опорного блока 170. Более того, описанные здесь способы двустороннего согласования не требуют «зеркального отношения» между MV0 и MV1, даже в двунаправленном случае. Предположение для двустороннем согласования заключается в том, что отношение между MV0 и MV1 пропорционально отношению между временным расстоянием от Ref0 до текущего изображения и от Ref1 до текущего изображения.

[0173] Очевидно, что для опорных блоков, отличных от первого опорного блока 166 и второго опорного блока 170, видеокодер может выводить другую пару MV. В одном примере видеодекодер может выбирать опорные изображения для выполнения двухстороннего согласования в соответствии с порядком, в котором опорные изображения отображаются в списке опорных изображений. Например, видеокодер может выбрать первую ссылку в списке 0 опорных изображений как Ref0 и первую ссылку в списке 1 опорных изображений как Ref1. Затем видеокодер может выполнить поиск пары MV (MV0, MV1). В другом примере видеокодер выбирает Ref0 на основе записи в исходном списке (например, исходном списке векторов движения - кандидатов). Видеокодер может установить Ref1 как опорное изображение в другом списке опорных изображений, которое является самым близким по временной оси к текущему изображению. Следовательно, видеокодер может выполнять поиск пары MV (MV0, MV1) в Ref0 и Ref1.

[0174] Таким образом, в соответствии с аспектами этого раскрытия видеокодер может применять способы расширенного двунаправленного выведения движения, проиллюстрированные на фиг. 11 в качестве режима выведения информации движения. Например, видеокодер может использовать двустороннее согласование для выведения информации движения текущего блока 162 путем нахождения наилучшего совпадения между двумя блоками (например, таких как первый опорный блок 166 и второй опорный блок 170) вдоль траектории движения текущего блока в двух разных опорных изображениях. Предполагая непрерывность траектории движения, векторы движение MV0 и MV1 указывающие на два опорных блока - первый опорный блок 166 и второй опорный блок 170, должны быть пропорциональны временными расстояния, т.е. TD0 и TD1, между текущим изображением и двумя опорными изображениями. В качестве особого случая, когда текущее изображение 160 находится на временной оси между двумя опорными изображениями (как показано в примере на фиг.10), а расстояние по временной оси от текущего изображения до двух опорных изображений одинаковое, двустороннее согласование превращается в двунаправленную оценку MV на основе зеркального отражения.

[0175] Фиг. 11 представляет собой блок-схему последовательности операций, иллюстрирующую пример декодирования единицы предсказания (PU) с использованием DMVD. В Y.-J. Chiu, L. Xu, W. Zhang, H. Jiang, ʺDecoder-side Motion Estimation and Wiener filter for HEVCʺ, Visual communications and Image Processing (VCIP), 2013, было предложено также объединить двунаправленное на основе зеркального отображение выведение MV c режимом слияния в HEVC. В предлагаемом способе для PU В- фрагмента добавляется флаг pu_dmvd_flag, указывающий, применяется ли режим DMVD к текущему PU. Поскольку режим DMVD не передает в явном виде какую-либо информацию MV в битовом потоке, синтаксический элемент pu_dmvd_flag интегрируется с синтаксисом режима слияния в HEVC (который использует индекс для данных, представляющих вектор движения, а не сам вектор движения).

[0176] Как показано на фиг.11, видеодекодер (такой как видеодекодер 30) может начать декодировать PU (180). Видеодекодер 30 может определить, является ли режим, используемый для декодирования PU, режимом слияния (182), например, на основе синтаксиса, включенного в битовый поток, который включает в себя PU. Если режим слияния не используется (ветвь «нет» на этапе 182), видеодекодер 30 может использовать обычный процесс без слияния PU для декодирования PU (184) и завершить процесс (186).

[0177] Если используется режим слияния (ветвь «да» на этапе 182), видеодекодер 30 может определить, используется ли DMVD для определения информации движения для PU на основе значения синтаксического элемента (188) pu_dmvd_flag. Если DMVD не используется (ветвь «нет» на этапе 188), видеодекодер 30 может использовать обычный режим слияния для декодирования PU (190) и завершает процесс (186). Если используется DMVD (ветвь «да» на этапе 188), видеодекодер 30 может применять процесс DMVD для определения информации движения для PU (192) и завершает процесс (186).

[0178] В некоторых случаях современные методы кодирования видео могут иметь определенные ограничения. Например, некоторые способы DMVD можно рассматривать как подмножество технологии FRUC. Хотя DMVD применяется в кодировании видео, другие эффективные методы FRUC не были реализованы в видеокодировании, например, в цикле кодирования видео с помощью видеокодера или видеодекодера. Кроме того, хотя были предложены различные методы DMVD, взаимодействие и перекрытие таких методов не используются в декодере. То есть в других системах видеокодирования используется только один режим DMVD. Способ, которым можно использовать множество методов DMVD для дальнейшего улучшения эффективности кодирования, не изучен.

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

[0180] Другое потенциальное ограничение может заключаться в том, что в декодере стоимость согласования традиционных способов DMVD может учитывать только искажение. Однако в стоимости согласования не учитывалась величина вектора движения, что может привести к локальной оптимизации или неточному результату согласования, например, из-за шума в пиксельном домене. Более того, сложность традиционных способов DMVD может быть относительно высокой как с точки зрения пропускной способности памяти, так и вычислительной сложности, особенно из-за того, что интерполяция необходима для дробно-пиксельных векторов движения во время поиска в декодере.

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

[0182] Некоторые способы этого раскрытия включают в себя выбор режима выведения движения из множества потенциальных режимов выведения движения. Например, в соответствии с аспектами этого раскрытия видеокодер (например, видеокодер 20 или видеодекодер 30) может использовать два или более способов выведения движения для обеспечения лучшего предсказания информации движения в видеодекодере, чтобы избежать сигнализации информации движения в битовом потоке. Два или более способов выведения движения могут включать в себя, без ограничения, двустороннее согласование, согласование с шаблоном и любой другой метод согласования. Эти способы обычно могут упоминаться как режимы выведения информации движения или режимы FRUC. Следовательно, следует понимать, что в некоторых случаях способ, называемый режимом FRUC, может вместо этого использоваться для интерполяции информации движения для текущего блока (например, вместо интерполяции нового блока видеоданных).

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

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

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

[0186] При использовании CABAC-кодирования для представления индекса могут использоваться два бина. Эти два бина могут использовать пространственных соседей в качестве контекстов, или только один из них может использовать пространственных соседей в качестве контекстов. В качестве альтернативы один или оба бина могут использовать в качестве контекстов другую кодированную информацию, такую как глубина CU. Бинаризация индекса может быть предопределенной, например «0» для выключения, «10» для расширенного двустороннего согласования и «11» для согласования с шаблоном. Альтернативно бинаризация индекса может сигнализироваться в заголовке фрагмента или может быть получена из кодированной информации, такой как тип фрагмента, временный уровень или информация QP.

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

[0188] В некоторых примерах расширенное двустороннее согласование и согласование с шаблоном поддерживаются в режиме слияния. В таких примерах, когда merge_flag равен 1, сигнализируется новый флаг выведения движения, указывающий, выводится ли информация движения для текущего PU. Этот флаг может использовать такой же флаг своего пространственного соседа, например верхний и левый блоки, в качестве контекстов кодирования CABAC. Когда этот флаг включен, отображается второй флаг, указывающий, какой режим выведения информации движения (например, расширенное двустороннее согласование или согласование с шаблоном) используется для выведения информации движения блока. Когда выведение движения включено, даже если текущий режим является режимом слияния, никакой индекс слияния не сигнализируется. Альтернативно или дополнительно конкретное выведение информации движения (например, согласование с шаблоном) не допускается, если PU не является первым PU блока CU в порядке декодирования. В этом случае необходимо сигнализировать только флаг, чтобы указать, используется ли расширенное двустороннее согласование для PU или нет.

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

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

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

[0192] Согласно аспектам этого раскрытия, включение или отключение способов выведения информации движения, описанных здесь, может контролироваться синтаксисом высокого уровня, чтобы обеспечить лучший компромисс между сложностью и более эффективным кодированием и/или гибкостью кодирования/декодирования. В одном примере флаг может сигнализироваться в заголовке SPS, PPS, фрагмента или любом другом заголовке синтаксиса высокого уровня, чтобы указать использование режима выведения информации движения. Когда этот флаг указывает, что этот режим кодирования не включен, флаги уровня CU/PU могут не кодироваться в битовом потоке.

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

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

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

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

[0197] Альтернативно или дополнительно в исходный список могут быть добавлены векторы движения соседних по временной оси блоков текущего блока (например, TMVP для текущего блока) и/или векторы движения нижних правых блоков, соседних по временной оси с текущем блоком в опорных изображениях. Прежде чем добавлять конкретный вектор движения - кандидат в список, векторы движения могут масштабироваться или не масштабироваться на основе расстояния по временной оси.

[0198] Согласно некоторым аспектам вектор движения может быть интерполирован и/или экстраполирован из опорного изображения и может быть добавлен в исходный список. Например, перед кодированием изображения с внешним предсказанием может быть сгенерировано интерполированное и/или экстраполированное поле движения изображения на основе его опорных изображений с помощью способа, подобного односторонней ME. Интерполированное и/или экстраполированное поле движения блока может использоваться для предсказания MV или использоваться в качестве дополнительных стартовых кандидатов при поиске MV в режиме выведения информации движения. Следует отметить, что интерполированное и/или экстраполированное поле движения сохраняется в единицах 4×4 или 8×8 или любом другом предопределенном/сигнализированном уровне блока, а PU может содержать несколько таких блоков, чтобы можно было использовать несколько интерполированных и/или экстраполированных MV.

[0199] В одном примере поле движения каждого опорного изображения в обоих опорных списках переходит из NxN блока в NxN блок, где N может быть заранее определенным, например 4, 8, или 16, или может сигнализироваться. Для каждого блока, если движению, связанному с блоком, проходящим через блок NxN в текущем изображении и блоку не было назначено какое-либо интерполированное движение, движение опорного блока масштабируется до текущего изображения аналогично масштабированию MV в TMVP и масштабированное движение назначается указанному блоку в текущем кадре. Если масштабированный MV не был назначен блоку NxN, движение блока отмечается как недоступное в поле интерполированного движения. В другом примере блоку NxN в текущем изображении могут быть назначены несколько векторов движения в поле интерполированного движения.

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

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

[0202] В одном примере для двустороннего согласования пара векторов движения, которая представляет собой полный набор информации движения, содержащий как векторы движения, так и связанные с ними опорные индексы для опорных списков 0 и 1, соответственно, может быть получена на основе каждой записи исходного списка кандидатов. Затем видеокодер может выполнить двустороннее согласование для всех пар MV, генерируемых из всех записей в исходном списке, и выбирать кандидата, который приводит к минимальной стоимости согласования.

[0203] Для генерации пары MV видеокодер может выбирать запись исходного списка в качестве первого вектора движения и генерировать второй вектор движения. Например, предположим, что одна запись содержит текущий первый вектор движения MVA, и он связан с опорным индексом (со значением РОСA для РОС) к первому опорному изображению в списке опорных изображений А (с А равным 0 или 1). Предполагая, что значением POC текущего изображения является РОСС, видеокодер может быть выполнен таким образом, чтобы найти второе опорное изображение из списка опорных изображений B (с B равным 1-А) таким образом, что его значение POCB для РОС равно (2 × POCC - POCA). Если ни одно опорное изображение в списке B опорных изображений не имеет значения POC, равного (2 × РОСС-POC0), видеокодер может выбрать второе опорное изображение, проверяя все опорные изображения в списке B таким образом, что POCB не равно POCA и абсолютная величина POCC-POCB минимальна. Таким образом, видеокодер может выбрать изображение, расположенное на другой стороне текущего изображения (по порядку отображения), имеющее то же расстояние POC. Если это невозможно, видеокодер может выбрать изображение с другой стороны, имеющее наименьшее расстояние до текущего изображения. Если все опорные изображения находятся на той же временной стороне, что и первая ссылка с POCA, по отношению к текущему изображению, видеокодер может выбрать ссылку, которая ближе всего к текущему изображению по оси времени, и имеет значение POC, отличное от POCA. В соответствии с вышеприведенными предположениями видеокодер может масштабировать первый вектор движения MVA, чтобы генерировать второй вектор движения, связанный со вторым опорным изображением, например, на основе разности POC, как в TMVP. В качестве альтернативы, любые способы, основанные на допущении двустороннего MV могут быть использованы для генерирования второго опорного изображения, и его вектора движения.

[0204] Согласно некоторым аспектам, два начальных вектора движения могут быть выбраны из исходного списка. Каждый из этих двух векторов движения выбирается (в терминах минимальной стоимости согласования) из записей в двух подмножествах исходного списка. Каждое подмножество содержит векторы движения, связанные с опорным индексом только к списку 0 опорных изображений или только к списку 1 опорных изображений.

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

[0206] В соответствии с аспектами настоящего раскрытия может использоваться множество стоимостей согласования, например, при определении наилучшего совпадения для исходного вектора движения - кандидата и/или при уточнении исходного вектора движения - кандидата. В одном из примеров при поиске движения блока стоимость MV может быть включена в стоимость согласования, чтобы избежать негативного воздействия шума. Например, для расчета стоимости может использоваться уточняющая часть вектора движения (например, разность между текущим MV и центром поиска), обозначаемая как MVR. В этом примере стоимость может быть выражена следующим образом: w*(|MVR[0]|+|MVR[1]|), где w - весовой коэффициент, который может быть сигнализирован или предопределен, а MVR[0] и MVR[1] представляют собой два компонента MVR. Альтернативно, для вычисления стоимости может использоваться уточненный вектор движения MV, например, следующим образом: w*(|MV[0]|+|MV[1]|).

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

[0208] В некоторых примерах стоимость согласования может представлять собой любой вид расстояния/стоимости, например сумма абсолютных разностей (SAD), сумма квадратов ошибок предсказания (SSE) или сумма абсолютных преобразованных разностей (SATD). Для уменьшения вычислительной сложности, SAD, SSE или другие стоимости могут быть рассчитаны с уменьшенным разрешением в горизонтальном, вертикальном или в обоих направлениях. Например, для блока 8×8 SAD может быть рассчитан только на основе нечетных строк. В другом примере стоимость согласования может быть рассчитана на основе выбранного подмножества блока, например, может использоваться только центральная область блока.

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

[0210] Алгоритм поиска может быть предопределен, например, полный поиск, трехэтапный поиск, ромбовидный поиск, алгоритм поиска с градиентным спуском на основе блоков (BBGDS), как описано, например, в Lurng-Kuo Liu, Ephraim Feig, ʺA block-based gradient descent search algorithm for block motion estimation in video coding,ʺ IEEE Trans. Circuits Syst. Video Technol., vol. 6, pp, 419-422, Aug.1996, или алгоритм неограниченного ромбовидного поиска со смещенным центром (UCBDS), как описано, например, в ʺA novel unrestricted center-biased diamond search algorithm for block motion estimation,ʺ IEEE Trans. Circuits Syst. Video Technol., vol. 8, pp. 369-377, Aug. 1998.

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

[0212] Как отмечено выше, настоящее раскрытие описывает некоторые способы оптимизации для существующих процессов DMVD. Например, как описано выше в отношении примера на фиг. 10, такие способы включают в себя расширение двустороннего согласования от двунаправленного предсказания до однонаправленного предсказания. Двустороннее согласование также может применяться, когда временные положения двух опорных изображений находятся до или после временного положения текущего фрагмента (то есть значения POC меньше или больше, чем для текущего изображения). Такие способы могут совместно упоминаться здесь как расширенное двустороннее согласование.

[0213] Другие аспекты этого раскрытия относятся к способам интерполяции. Например, согласно аспектам этого раскрытия, способы интерполяции могут быть упрощены для уменьшения сложности. Как отмечено выше в отношении фиг. 2, поиск движения обычно выполняется с использованием субпиксельной точности. Соответственно, для нецелых позиций пикселей необходима интерполяция. Чтобы уменьшить вычислительную сложность, согласно аспектам этого раскрытия, видеокодер может использовать интерполяционный фильтр с более короткими отводами по сравнению с обычной интерполяцией компенсации движения. В одном примере видеокодер может использовать билинейный фильтр интерполяции во время поиска движения, например, при применении начальных векторов движения кандидата или уточнения таких векторов движения. В другом примере видеокодер может быть выполнен с возможностью первоначального выполнения поиска движения с использованием положений целочисленного пикселя с последующим выполнением поиска движения в положениях с дробным пикселем с наилучшим соответствием положения целочисленного пикселя в качестве стартовой точки.

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

[0215] В иллюстративном примере 32×32 PU может быть разделен на 16 8×8 под-PU. В этом примере видеокодер может определять разные ссылочные индексы и/или векторы движения для каждого из 8×8 под-PU. В других примерах под-PU могут иметь другие размеры, например, 4×4, 2×2 или 1×1.

[0216] В некоторых случаях размер подблока/под-PU может быть предопределен и фиксирован независимо от размера блока/PU. В других примерах может быть определена глубина D разделения для PU, которая управляет количеством раз, которое PU может быть разделен в соответствии со структурой дерева квадрантов. В некоторых примерах минимальный размер под-PU/подблока может быть предопределен или сигнализирован для указания целевого размера подблока/под-PU, до которого должен быть разбит текущий блок/PU. Целевой размер может быть наибольшим среди минимального размера под-PU/подблока и размера, полученного путем разделения текущего блока D раз в соответствии со структурой дерева квадрантов.

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

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

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

[0220] В некоторых примерах видеокодер может кодировать отдельные синтаксические элементы, которые указывают, разделен ли конкретный блок. В другом примере все блоки 2Nx2N с режимом расширенного двустороннего согласования дополнительно разбиваются на небольшие части и дополнительный флаг не сигнализируется. Размер подблока может быть предопределен или сигнализирован. В качестве альтернативы размер подблока может быть основан на размере текущего блока. Например, размер подблока может быть получен как наибольшее из двух значений. Первое значение представляет собой предопределенный или сигнализированный минимальный размер подблока (например, 4×4 или 8×8). Второе значение - относительный размер текущего блока, например (S >> d) x (S >> d), где SxS - текущий размер блока, а d - предопределенное или сигнализируемое значение, указывающее глубину дерева квадрантов с которым текущий блок разбит на подблоки. В отношении приведенных выше примерах следует отметить, что термин PU используется взаимозаменяемо с термином блок, а термин под-PU используется взаимозаменяемо с термином подблок.

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

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

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

Реконструировать блок B (с размером WxH) в FRUC

Построить исходный список

Если B - двустороннее согласование

{

Найти наилучшее совпадение (например, двустороннее совпадение) в исходном списке в качестве стартовой точки с измерением двустороннего совпадения

Уточнить MV на основе стартовой точки с двусторонним согласованием, чтобы получить вектор движения MVB для блока B

Для каждого подблока в блоке B

{

Принимая MVB в качестве стартовой точки, уточнить MV для каждого подблока

Выполнить компенсацию движения для подблока с выведенной информацией MV

}

}

Иначе // согласование с шаблоном

{

Найти наилучшее совпадение (например, совпадение с шаблоном) в исходном списке в качестве стартовой точки с измерением совпадения с шаблоном

Уточнить MV на основе стартовой точки с помощью согласования с шаблоном

}

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

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

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

[0227] Таким образом, некоторые способы этого раскрытия могут быть обобщены как инструмент кодирования на уровне блоков, который использует определенные концепции из FRUC, учитывая предположение, что текущий блок текущего изображения может считаться предсказанным посредством опорных изображений способом аналогичным тому, как текущее изображению, может считаться интерполированным с помощью опорных изображений в FRUC. В одном примере для инструмента кодирования на уровне блоков используются только процессы на основе движения. В другом примере для инструмента кодирования на уровне блоков используются только процессы на основе пикселей. В другом примере для данного блока используются либо процессы на основе движения, либо процессы на основе пикселей. В другом примере для инструмента кодирования на уровне блоков используются как процессы на основе пикселей, так и процессы на основе движения. В другом примере другой синтаксис может быть повторно использован или предсказан из других временных кадров и может использоваться для инструмента кодирования, такого как информация дерева кодирования, информация SAO, ALF, RQT.

[0228] Фиг. 12 представляет собой блок-схему последовательности операций, иллюстрирующую примерный процесс определения режима выведения информации движения для кодирования блока видеоданных. Пример процесса по фиг. 12 описан в отношении видеокодера, который может быть сконфигурирован как видеокодер 20, видеодекодер 30 или другой процессор.

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

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

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

[0232] Далее видеокодер может кодировать блок, используя определенную информацию движения, и без кодирования синтаксиса, представляющего информацию движения (206). Например, в тех случаях, когда видеокодер содержит видеодекодер, видеодекодер может определить опорный блок в опорном изображении на основании определенной информации движения, декодировать остаточные данные из кодированного битового потока, и объединить декодированные остаточные данные и определенный опорный блок для реконструкции текущего блока. В тех случаях, когда видеокодер содержит видеокодер (video encoder), видеокодер может кодировать остаточные данные для текущего блока в кодированном битовом потоке без кодирования опорных индексов или векторов движения для остаточных данных.

[0233] Фиг. 13 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса для вывода вектора движения для кодирования блока видеоданных. Пример процесса по фиг. 13 описывается в отношении видеокодера, который может быть сконфигурирован как видеокодер 20, видеодекодер 30 или другой процессор.

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

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

[0236] Далее видеокодер может определить выведенный вектор движения на основе определенного кандидата (214). Например, видеокодер может уточнить определенного кандидата для определения выведенного вектора движения, используя режим выведения движения. Затем видеокодер может кодировать указанный блок, используя выведенный вектор движения (216). Например, в тех случаях, когда видеокодер содержит видеодекодер, видеодекодер может определить опорный блок в опорном изображении на основании выведенного вектора движения, декодировать остаточные данные из кодированного битового потока, и объединить декодированный остаточный и определенный опорный блок для реконструкции текущего блока. В случаях, когда видеокодер содержит видеокодер (video encoder), видеокодер может кодировать остаточные данные для текущего блока в кодированном битовом потоке без кодирования выведенного вектора движения.

[0237] Фиг. 14 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса для выведения информации движения для подблоков блока видеоданных. Пример процесса по фиг. 14 описывается в отношении видеокодера, который может быть сконфигурирован как видеокодер 20, видеодекодер 30 или другой процессор.

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

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

[0240] Далее видеокодер может кодировать каждый из подблоков на основе выведенной информации движения без кодирования синтаксических элементов, представляющих информацию движения (226). Например, в тех случаях, когда видеокодер содержит видеодекодер, видеодекодер может определить опорный блок в опорном изображении для каждого подблока на основе определенной информации движения, декодировать остаточные данные для каждого подблока из кодированного битового потока и объединить декодированный остаток и определенный опорный блок для реконструкции каждого подблока. В тех случаях, когда видеокодер содержит видеокодер (video encoder), видеокодер может кодировать остаточные данные для каждого подблока в кодированном битовом потоке без кодирования опорных индексов или векторов движения для остаточных данных.

[0241] Следует признать, что в зависимости от примера некоторые действия или события любого из описанных здесь способов могут быть выполнены в другой последовательности, могут быть добавлены, объединены или полностью опущены (например, не все описанные действия или события необходимы для практической реализации этих способов). Более того, в некоторых примерах действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или использования нескольких процессоров, а не последовательно.

[0242] В одном или нескольких примерах описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, прошивке или любой их комбинации. Если они реализованы в программном обеспечении, функции могут храниться или передаваться в виде одной или нескольких инструкций или кода на машиночитаемом носителе и выполняться аппаратным процессором. Машиночитаемые носители могут включать в себя машиночитаемый носитель данных, который соответствует материальному средству, такому как носитель для хранения данных, или средствам связи, включая любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемый носитель обычно может соответствовать (1) материальному машиночитаемому носителю данных, который не является временным, или (2) среде связи, такой как сигнал или несущая волна. Носителями данных могут быть любые доступные носители, к которым можно получить доступ одним или несколькими компьютерами или одним или несколькими процессорами для извлечения инструкций, кодов и/или структур данных для реализации методов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.

[0243] В качестве примера, а не ограничения, такой машиночитаемый носитель данных может содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптических дисках, хранилище на магнитных дисках или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который можно использовать для хранения желаемого программного кода в виде инструкций или структур данных и доступ к которому может получить компьютер. Кроме того, любое соединение может рассматриваться в качестве машиночитаемого носителя. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радио и микроволновые, тогда коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасный, радио и микроволновый, включены в определение среды. Однако следует понимать, что машиночитаемые носители данных и носители данных не включают в себя соединения, несущие волны, сигналы или другие преходящие носители, а относятся к долговременным материальным носителям. Магнитный и оптический диск, упоминаемые в настоящем документе, включат в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск Blu-ray, причем магнитные диски обычно воспроизводят данные магнитным способом, в то время как оптические диски воспроизводят данные с помощью лазеров. Комбинации вышеизложенного также должны быть включены в объем машиночитаемых носителей.

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

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

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

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

название год авторы номер документа
ВЫВЕДЕНИЕ ВЕКТОРА ДВИЖЕНИЯ ПРИ ВИДЕОКОДИРОВАНИИ 2016
  • Ли, Сян
  • Чэнь, Ин
  • Чжан, Ли
  • Лю, Хонгбинь
  • Чэнь, Цзяньлэ
  • Карчевич, Марта
RU2742298C2
ОПРЕДЕЛЕНИЕ РЕЖИМА ВЫВОДА ИНФОРМАЦИИ ДВИЖЕНИЯ ПРИ ВИДЕОКОДИРОВАНИИ 2016
  • Ли Сян
  • Чэнь Ин
  • Чжан Ли
  • Лю Хонгбинь
  • Чэнь Цзяньлэ
  • Карчевич Марта
RU2719296C2
ПРЕДСКАЗАНИЕ ВЕКТОРА ДВИЖЕНИЯ ДЛЯ АФФИННЫХ МОДЕЛЕЙ ДВИЖЕНИЯ В КОДИРОВАНИИ ВИДЕО 2017
  • Чэнь, И-Вэнь
  • Чиэнь, Вэй-Цзюн
  • Чжан, Ли
  • Сунь, Юй-Чэнь
  • Чэнь, Цзяньлэ
  • Карчевич, Марта
RU2718225C1
УСТРОЙСТВО И СПОСОБ КОДИРОВАНИЯ ВИДЕО 2018
  • Чэнь, Сюй
  • Ань, Цзичэн
  • Чжэн, Цзяньхуа
RU2767993C1
ГЕНЕРИРОВАНИЕ ДОПОЛНИТЕЛЬНЫХ КАНДИДАТОВ ДЛЯ СЛИЯНИЯ 2012
  • Чжэн Юньфэй
  • Ван Сянлинь
  • Карчевич Марта
RU2577779C2
ЗАПОЛНЕНИЕ КРАЕВЫХ ПИКСЕЛОВ НЕИНФОРМАТИВНЫМИ СИМВОЛАМИ ДЛЯ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ ПРИ КОДИРОВАНИИ ВИДЕОСИГНАЛА 2012
  • Ван Сянлинь
  • Чиэнь Вэй-Цзюн
  • Карчевич Марта
  • Чэнь Ин
  • Чэнь Пэйсун
RU2575412C2
РЕЖИМ ГЕОМЕТРИЧЕСКОГО РАЗДЕЛЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕОДАННЫХ 2020
  • Чэнь Льень-Фэй
  • Ли Сян
  • Ли Гуйчунь
  • Лю Шань
RU2773732C1
СПОСОБЫ И УСТРОЙСТВА ДЛЯ КОДИРОВАНИЯ ВИДЕО С ИСПОЛЬЗОВАНИЕМ ВЕКТОРА ДВИЖЕНИЯ ВРЕМЕННОГО ПРЕДСКАЗАНИЯ НА ОСНОВЕ СУББЛОКОВ 2019
  • Чэнь, И-Вэнь
  • Ван, Сянлинь
RU2757209C1
Способ и устройство для видеокодирования 2020
  • Ли Гуйчунь
  • Ли Сян
  • Сюй Сяочжун
  • Лю Шань
RU2789146C1
СПОСОБЫ И УСТРОЙСТВА КОДИРОВАНИЯ ВИДЕО С ИСПОЛЬЗОВАНИЕМ ПРОГНОЗИРОВАНИЯ ВЕКТОРА ДВИЖЕНИЯ НА ОСНОВЕ ИСТОРИИ 2019
  • Ван, Сянлинь
  • Чэнь, И-Вэнь
RU2752644C1

Иллюстрации к изобретению RU 2 705 428 C2

Реферат патента 2019 года ВЫВОД ИНФОРМАЦИИ ДВИЖЕНИЯ ДЛЯ ПОДБЛОКОВ ПРИ ВИДЕОКОДИРОВАНИИ

Изобретение относится к видеокодированию. Технический результат – возможность выведения информации движения для текущего блока без информации движения, которая сигнализируется в кодированном битовом потоке. Способ обработки видеоданных включает в себя разделение текущего блока видеоданных на множество подблоков для выведения информации движения текущего блока, причем информация движения указывает движение текущего блока относительно опорных видеоданных. Способ также включает в себя выведение, отдельно для каждого соответствующего подблока из множества подблоков, информации движения, содержащее выполнение поиска движения для первого набора опорных данных, который соответствует второму набору опорных данных вне каждого соответствующего подблока. Способ также включает в себя декодирование множества подблоков на основе выведенной информации движения и без декодирования синтаксических элементов, представляющих информацию движения. 5 н. и 39 з.п. ф-лы, 16 ил.

Формула изобретения RU 2 705 428 C2

1. Способ обработки видеоданных, содержащий:

разделение текущего блока видеоданных на множество подблоков для выведения информации движения текущего блока, причем информация движения указывает движение текущего блока относительно опорных видеоданных; и

выведение, отдельно для каждого соответствующего подблока из множества подблоков, информации движения, содержащее выполнение поиска движения для первого набора опорных данных, которые соответствуют второму набору опорных данных вне каждого соответствующего подблока; и

декодирование множества подблоков на основе выведенной информации движения и без декодирования элементов синтаксиса, представляющих информацию движения.

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

3. Способ по п.1, в котором размер подблоков содержит по меньшей мере один из 1×1, 2×2, 4×4, 8×8, 16×16 или 32×32.

4. Способ по п.1, в котором текущий блок содержит единицу предсказания (PU), а подблоки содержат под-PU.

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

6. Способ по п.1, в котором разделение текущего блока содержит разделение текущего блока на основе минимального размера подблока.

7. Способ по п.6, дополнительно содержащий определение минимального размера подблока на основе параметра D глубины разделения, который указывает максимальную глубину разделения для текущего блока.

8. Способ по п.1, в котором выведение информации движения для соответствующих подблоков содержит:

выведение информации движения для текущего блока;

определение окна поиска в опорном изображении на основании выведенной информации движения для текущего блока;

поиск соответствующих опорных данных с наилучшим совпадением для соответствующих подблоков в окне поиска; и

выведение информации движения для соответствующих подблоков на основе соответствующих опорных блоков с наилучшим совпадением.

9. Способ по п.8, дополнительно содержащий:

генерирование списка кандидатов, содержащего множество векторов движения - кандидатов, причем список кандидатов включает в себя выведенную информацию движения для блока в качестве кандидата из упомянутого множества векторов движения - кандидатов;

определение вектора движения - кандидата на основе наилучшего совпадения опорных данных из опорных данных, указываемых каждым кандидатом из множества векторов движения - кандидатов;

поиск соответствующих опорных блоков с наилучшим совпадением для соответствующих подблоков на основе определенного вектора движения - кандидата.

10. Способ по п.1, дополнительно содержащий применение преобразования к текущему блоку таким образом, что преобразование применяется ко всем подблокам.

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

определение опорного блока в опорном изображении для соответствующих подблоков на основе выведенной информации движения;

декодирование остаточных данных для соответствующих подблоков из кодированного битового потока; и

объединение декодированных остаточных данных для соответствующих подблоков и опорного блока для соответствующих подблоков для реконструкции соответствующих подблоков.

12. Способ обработки видеоданных, содержащий:

разделение текущего блока видеоданных на множество подблоков для выведения информации движения текущего блока, причем информация движения указывает движение текущего блока относительно опорных видеоданных; и

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

кодирование множества подблоков на основе выведенной информации движения и без кодирования синтаксических элементов, представляющих информацию движения.

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

14. Способ по п.12, в котором размер подблоков содержит по меньшей мере один из 1×1, 2×2, 4×4, 8×8, 16×16 или 32×32.

15. Способ по п.12, в котором текущий блок содержит единицу предсказания (PU), а подблоки содержат под-PU.

16. Способ по п.12, в котором разделение текущего блока содержит разделение текущего блока для формирования подблоков фиксированного размера независимо от размера текущего блока.

17. Способ по п.12, в котором разделение текущего блока содержит разделение текущего блока на основе минимального размера подблока.

18. Способ по п.17, дополнительно содержащий определение минимального размера подблока на основе параметра D глубины разделения, который указывает максимальную глубину разделения для блока.

19. Способ по п.12, в котором выведение информации движения для соответствующих подблоков содержит:

выведение информации движения для блока;

определение окна поиска в опорном изображении на основе выведенной информации движения для блока;

поиск соответствующих опорных данных с наилучшим совпадением для соответствующих подблоков в окне поиска; и

выведение информации движения для соответствующих подблоков на основе соответствующих опорных блоков с наилучшим совпадением.

20. Способ по п.19, дополнительно содержащий:

генерирование списка кандидатов, содержащего множество векторов движения - кандидатов, причем список кандидатов включает в себя выведенную информацию движения для блока в качестве кандидата из упомянутого множества векторов движения - кандидатов;

определение вектора движения - кандидата на основе наилучшего совпадения опорных данных из опорных данных, указываемых каждым кандидатом из множества векторов движения - кандидатов;

поиск соответствующих опорных блоков с наилучшим совпадением для соответствующих подблоков на основе определенного вектора движения - кандидата.

21. Способ по п.12, дополнительно содержащий применение преобразования к текущему блоку таким образом, что преобразование применяется ко всем подблокам.

22. Способ по п.12, в котором кодирование множества подблоков содержит кодирование остаточных данных для соответствующих подблоков кодированного битового потока, причем кодированный битовый поток не включает в себя данные, указывающие выведенный вектор движения.

23. Устройство для обработки видеоданных, причем устройство содержит

память, выполненную с возможностью хранения текущего блока видеоданных, и

один или несколько процессоров, выполненных с возможностью:

разделения текущего блока видеоданных на множество подблоков для выведения информации движения текущего блока, причем информация движения указывает движение текущего блока относительно опорных видеоданных; и

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

кодирования множества подблоков на основе выведенной информации движения и без кодирования синтаксических элементов, представляющих информацию движения.

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

25. Устройство по п.23, в котором размер подблоков содержит по меньшей мере один из 1×1, 2×2, 4×4, 8×8, 16×16 или 32×32.

26. Устройство по п.23, в котором текущий блок содержит единицу предсказания (PU), а подблоки содержат под-PU.

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

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

29. Устройство по п.28, в котором один или несколько процессоров дополнительно выполнены с возможностью определения минимального размера подблока на основе параметра D глубины разделения, который указывает максимальную глубину разделения для блока.

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

выведения информации движения для блока;

определения окна поиска в опорном изображении на основе выведенной информации движения для блока;

поиска соответствующих опорных данных с наилучшим совпадением для соответствующих подблоков в окне поиска; и

выведения информации движения для соответствующих подблоков на основе соответствующих опорных блоков с наилучшим совпадением.

31. Устройство по п.30, в котором упомянутые один или несколько процессоров дополнительно выполнены с возможностью:

генерации списка кандидатов, содержащего множество векторов движения - кандидатов, причем список кандидатов включает в себя выведенную информацию движения для блока в качестве кандидата из упомянутого множества векторов движения - кандидатов;

определения вектора движения - кандидата на основе наилучшего совпадения опорных данных из опорных данных, указываемых каждым кандидатом из множества векторов движения - кандидатов;

поиска соответствующих опорных блоков с наилучшим совпадением для соответствующих подблоков на основе определенного вектора движения - кандидата.

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

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

определения опорного блока в опорном изображении для соответствующих подблоков на основе выведенной информации движения;

декодирования остаточных данных для соответствующих подблоков из кодированного битового потока; и

объединения декодированных остаточных данных для соответствующих подблоков и опорного блока для соответствующих подблоков для реконструкции соответствующих подблоков.

34. Устройство по п.33, дополнительно содержащее устройство отображения, выполненное с возможностью отображения декодированного блока.

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

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

37. Устройство по п.23, причем устройство содержит по меньшей мере одно из следующего:

интегральная схема;

микропроцессор или

устройство беспроводной связи.

38. Долговременный машиночитаемый носитель, содержащий инструкции, хранящиеся на нем, которые, при их выполнении, приводят к тому, что один или несколько процессоров:

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

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

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

39. Устройство для обработки видеоданных, причем устройство содержит

память, выполненную с возможностью хранения текущего изображения, и

один или несколько процессоров, выполненных с возможностью:

получения кодированного битового потока, который содержит множество кодированных изображений;

интерполяции одного или нескольких опорных изображений, которые не включены в кодированный битовый поток; и

декодирования видеоданных текущего изображения кодированного битового потока на основе интерполированных одного или более опорных изображений.

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

41. Устройство по п.39, в котором для декодирования видеоданных текущего изображения на основе интерполированных одного или более опорных изображений упомянутые один или более процессоров выполнены с возможностью установки видеоданных равными интерполированным одному или более опорным изображениям.

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

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

44. Устройство по п.43, в котором для кодирования одного или нескольких синтаксических элементов упомянутые один или несколько процессоров выполнены с возможностью кодирования одного или нескольких синтаксических элементов в сообщении информации дополнительного расширения (SEI).

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

Способ приготовления лака 1924
  • Петров Г.С.
SU2011A1
Способ приготовления лака 1924
  • Петров Г.С.
SU2011A1
ПОДДЕРЖКА ИНТЕРПОЛЯЦИОННОГО ФИЛЬТРА ДЛЯ СУБПИКСЕЛЬНОГО РАЗРЕШЕНИЯ В ВИДЕОКОДИРОВАНИИ 2009
  • Е Янь
  • Карчевич Марта
RU2477576C2
ПРОСТРАНСТВЕННО-ВРЕМЕННОЕ ПРОГНОЗИРОВАНИЕ ДЛЯ ДВУНАПРАВЛЕНО ПРОГНОЗИРУЕМЫХ (В) ИЗОБРАЖЕНИЙ И ПРОГНОЗИРОВАНИЕ ВЕКТОРА ДВИЖЕНИЯ ДЛЯ КОМПЕНСАЦИИ ДВИЖЕНИЯ МНОЖЕСТВЕННЫХ ИЗОБРАЖЕНИЙ С ПОМОЩЬЮ ЭТАЛОНА 2003
  • Тоурапис Александрос
  • Ли Шипенг
  • Ву Фенг
RU2310231C2
СПОСОБ И УСТРОЙСТВО ДЛЯ ОБРАБОТКИ ИЗОБРАЖЕНИЯ 2010
  • Сато Казуси
  • Ягасаки
RU2523940C2
Способ защиты переносных электрических установок от опасностей, связанных с заземлением одной из фаз 1924
  • Подольский Л.П.
SU2014A1
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем 1924
  • Волынский С.В.
SU2012A1
Способ защиты переносных электрических установок от опасностей, связанных с заземлением одной из фаз 1924
  • Подольский Л.П.
SU2014A1
УСТРОЙСТВО ДЛЯ ОБРАБОТКИ ПЛАСТОВ В СКВАЖИНЕ 2005
  • Файзуллин Расих Нафисович
  • Габдуллин Рафагат Габделвалиевич
  • Страхов Дмитрий Витальевич
  • Оснос Владимир Борисович
  • Мингазова Альбина Зяузятовна
RU2285113C1
Способ получения вискозы для формования гидратцеллюлозной нити 1988
  • Александрович Иван Францевич
  • Лунева Нина Клавдиевна
  • Ермоленко Игорь Николаевич
  • Лопаткова Светлана Викторовна
  • Титов Михаил Андреевич
  • Ренгевич Эмилия Евгеньевна
  • Коптюх Леонид Андреевич
SU1578136A1

RU 2 705 428 C2

Авторы

Ли Сян

Чэнь Ин

Чжан Ли

Лю Хонгбинь

Чэнь Цзяньлэ

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

Даты

2019-11-07Публикация

2016-03-25Подача