УСТРОЙСТВО И СПОСОБ КОДИРОВАНИЯ ВИДЕО
VIDEO ENCODING DEVICE AND METHOD

Область техники, к которой относится изобретение
Настоящее изобретение относится к области технологий кодирования видео и, в частности, к устройству и способу кодирования видео.
Уровень техники
Технология цифровой обработки видео может широко применяться в различных устройствах, включающих в себя цифровое телевидение, систему цифрового прямого вещания, систему беспроводного вещания, персональный цифровой помощник (PDA), портативный компьютер, планшетный компьютер, электронное устройство для чтения книг, цифровая камера, устройство цифровой записи, цифровой медиаплеер, устройство видеоигры, игровая консоль, сотовый или спутниковый радиотелефон, устройство видеоконференцсвязи, устройство для передачи потокового видео и т.п. Цифровое видеоустройство реализует технологии декодирования видео, например MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 часть 10 усовершенствованное декодирование видео (advanced video coding, AVC), ITU-T H.265 (также называемый высокоэффективным декодированием видео (HEVC)) и технологии декодирования видео, описанные в частя расширений этих стандартов. Цифровое видеоустройство может передавать, принимать, кодировать, декодировать и/или хранить цифровую видеоинформацию более эффективно за счет реализации этих технологий декодирования видео.
В технологии сжатия видео внутренняя избыточная информация в видеопоследовательности может быть уменьшена или удалена путем выполнения пространственного (внутреннего) предсказания и/или временного (внешнего) предсказания. Для блочного декодирования видео видеоизображение может быть разделено на блоки видеоданных. Блок видеоданных может также называться древовидным блоком, блоком кодирования/блоком декодирования (coding unit, CU) или узлом кодирования/узлом декодирования. Блок видеоданных во внутренне-декодированном (I) сегменте изображения кодируется посредством пространственного предсказания для опорной выборки в соседнем блоке в том же изображении. Блок видеоданных во внешне-декодированном (P или B) сегменте изображения может быть закодирован посредством пространственного предсказания для опорной выборки в соседнем блоке в том же изображении или временного предсказания для опорной выборки в другом опорном изображении. Изображение может быть указано как кадр, и опорное изображение может упоминаться в качестве опорного кадра.
Раскрытие сущности изобретения
Варианты осуществления настоящего изобретения обеспечивают способ для кодирования видео и связанное с ним устройство и, в основном, относятся к получению вектора движения. В традиционной технологии внешнего предсказания и технологии внутреннего предсказания, относящейся к оценке движения, вектор движения является ключевым элементом реализации и используется для определения предсказателя блока, подлежащего обработке, для восстановления блока, подлежащий обработке. Обычно вектор движения состоит из предсказанного вектора движения и разности вектора движения. Разность вектора движения является разностью между вектором движения и предсказанным вектором движения. В некоторых технологиях, например, в режиме объединения векторов движения (Merge mode), разность вектора движения не используется, и предсказанный вектор движения непосредственно рассматривается как вектор движения. Предсказанный вектор движения обычно получается из предшествующего блока кодирования или декодирования, который имеет временную или пространственную корреляцию с блоком, подлежащим обработке, и вектор движения блока, подлежащего обработке, обычно используется в качестве предсказанного вектора движения последующего блока кодирования или блока декодирования.
Однако с развитием технологий была предложена технология, относящаяся к обновлению вектора движения. Вектор движения для определения предсказателя блока, подлежащего обработке, больше не получают напрямую из предсказанного вектора движения или суммы предсказанного вектора движения и разности векторов движения (в данном случае предсказанный вектор движения или сумма предсказанного вектора движения и разность вектора движения называются исходным вектором движения), но получают из обновленного значения исходного вектора движения. В частности, после того, как получен исходный вектор движения блока, подлежащего обработке, исходный вектор движения сначала обновляется для получения фактического вектора движения, и затем получается блок предсказания блока, подлежащего обработке, с использованием фактического вектора движения. Фактический вектор движения сохраняется для использования в процедуре предсказания последующего блока кодирования или блока декодирования. Технология обновления вектора движения повышает точность предсказания и эффективность кодирования. Однако для последующего блока кодирования или блока декодирования этап предсказания может выполняться только после завершения обновления вектора движения для одного или более предшествующих блоков кодирования или блоков декодирования, другими словами, после определения фактического вектора движения. Это вызывает задержку параллельной обработки или конвейерной (pipe-line) обработки различных блоков по сравнению со способом, в котором не выполняется обновление вектора движения.
В соответствии с первым аспектом настоящего изобретения, предложен способ получения вектора движения, включающий в себя: определение опорного блока, подлежащего обработке, где опорный блок, подлежащий обработке, имеет заданную временную или пространственную корреляцию, опорный блок имеет исходный вектор движения и один или более заданных смещений вектора движения, исходный вектор движения опорного блока получается на основании предсказанного вектора движения опорного блока, и получают блок предсказания опорного блока на основании исходного вектора движения и одного или более заданных смещений вектора движения; и использование исходного вектора движения опорного блока в качестве предсказанного вектора движения блока, подлежащего обработке.
Вышеупомянутым способом исходный вектор движения перед обновлением используется для замены фактического вектора движения и используется для предсказания последующего блока кодирования или блока декодирования. Этап предсказания может выполняться для последующего блока кодирования или блока декодирования до завершения обновления фактического вектора движения. Это обеспечивает повышение эффективности кодирования за счет обновления вектора движения и устраняет задержку обработки.
В первой возможной реализации первого аспекта, исходный вектор движения опорного блока специально получен следующим образом: использование предсказанного вектора движения опорного блока в качестве исходного вектора движения опорного блока; или сложение предсказанного вектора движения опорного блока и разности вектора движения опорного блока для получения исходного вектора движения опорного блока.
В различных режимах внешнего предсказания исходный вектор движения может быть получен из предсказанного вектора движения или суммы предсказанного вектора движения и разности вектора движения. Это повышает эффективность кодирования.
Во второй возможной реализации первого аспекта, блок предсказания опорного блока специально получен следующим образом: получают блок изображения из опорного кадра опорного блока, указанного исходным вектором движения опорного блока, и используют полученный блок изображения в качестве временного блока предсказания опорного блока; складывают исходный вектор движения и один или более заданных смещений векторов движения опорного блока для получения одного или более фактических векторов движения, где каждый фактический вектор движения указывает на позицию поиска; получают один или более кандидатов блоков предсказания на позициях поиска, указанных одним или более фактическими векторами движения, где каждая позиция поиска соответствует одному кандидату блока предсказания; и выбирают из одного или более кандидатов блоков предсказания кандидата блока предсказания с минимальной разницей пикселя из блока временного предсказания в качестве блока предсказания опорного блока.
В этой реализации конкретно описывается способ для обновления вектора движения. На основании обновления вектора движения предсказание становится более точным и повышается эффективность кодирования.
В третьей возможной реализации первого аспекта, способ используется для двунаправленного предсказания, опорный кадр включает в себя опорный кадр первого направления и опорный кадр второго направления, исходный вектор движения включает в себя исходный вектор движения первого направления и исходный вектор движения второго направления, и получение блока изображения из опорного кадра опорного блока, указанного исходным вектором движения опорного блока, и использование полученного блока изображения в качестве временного блока предсказания опорного блока включает в себя: получение из опорного кадра первого направления опорного блока первого блока изображения, указанного исходным вектором движения первого направления опорного блока; получение из опорного кадра второго направления опорного блока второго блока изображения, указанного исходным вектором движения второго направления; и взвешивание первого блока изображения и второго блока изображения для получения временного блока предсказания опорного блока.
В этой реализации конкретно описывается способ обновления вектора движения во время двунаправленного предсказания. На основании обновления вектора движения предсказание становится более точным и повышается эффективность кодирования.
В четвертой возможной реализации первого аспекта, способ дополнительно включает в себя: когда разрешение вектора движения фактического вектора движения выше, чем заданная точность пикселя, округление разрешения вектора движения фактического вектора движения, так что разрешение вектора движения обработанного фактического вектора движения равно заданной точности пикселя.
Эта реализация гарантирует, что разрешение вектора движения фактического вектора движения равно заданной точности пикселя и снижает сложность вычислений, вызванную различными разрешениями вектора движения. Следует понимать, что, когда не используется способ, в котором исходный вектор движения используется перед обновлением для замены фактического вектора движения и используется для предсказания последующего блока кодирования или блока декодирования, то эта реализация также может уменьшить задержку, когда эта реализация используется отдельно, поскольку уменьшается сложность обновления вектора движения.
В пятой возможной реализации первого аспекта, выбор из одного или более кандидатов блоков предсказания кандидата блока предсказания с минимальной разницей пикселя из блока временного предсказания в качестве блока предсказания опорного блока включает в себя: выбор из одного или более кандидатов блоков предсказания фактического вектора движения, соответствующего кандидату блока предсказания с минимальной разностью пикселя из временного блока предсказания; когда разрешение вектора движения выбранного фактического вектора движения выше, чем заданная точность пикселей, округление разрешения вектора движения выбранного фактического вектора движения так, чтобы разрешение вектора движения обработанного выбранного фактического вектора движения было равным заданной точности пикселя; и определение того, что блок предсказания, соответствующий позиции, указанной обработанным выбранным фактическим вектором движения, является блоком предсказания опорного блока.
Эта реализация также гарантирует, что разрешение вектора движения фактического вектора движения равно заданной точности пикселя, и снижает сложность вычислений, вызванную различными разрешениями вектора движения. Следует понимать, что, когда способ, в котором исходный вектор движения перед обновлением используется для замены фактического вектора движения и используется для предсказания последующего блока кодирования или блока декодирования, не используется, эта реализация также может уменьшить задержку, когда эта реализация используется отдельно, поскольку уменьшается сложность обновления вектора движения.
В шестой возможной реализации первого аспекта заданная точность пикселей представляет собой точность целого пикселя, точность 1/2 пикселя, точность 1/4 пикселя или точность 1/8 пикселя.
В седьмой возможной реализации первого аспекта способ дополнительно включает в себя: использование предсказанного вектора движения блока, подлежащего обработке, в качестве исходного вектора движения блока, подлежащего обработке.
В восьмой возможной реализации первого аспекта, способ дополнительно включает в себя: сложение предсказанного вектора движения блока, подлежащего обработке, и разности вектора движения блока, подлежащего обработке, для получения исходного вектора движения блока, подлежащего обработке.
В девятой возможной реализации первого аспекта, способ используется для декодирования видео, и разность вектора движения блока, подлежащего обработке, получается путем синтаксического анализа первой идентификационной информации в битовом потоке.
В различных режимах внешнего предсказания исходный вектор движения может быть взят из предсказанного вектора движения или суммы предсказанного вектора движения и разности вектора движения. Это повышает эффективность кодирования.
В десятой возможной реализации первого аспекта, способ используется для декодирования видео, и определение опорного блока, блока, подлежащего обработке, включает в себя: синтаксический анализ битового потока для получения второй идентификационной информации; и определение опорного блока, блока, подлежащего обработке, на основании второй идентификационной информации.
В одиннадцатой возможной реализации первого аспекта, способ используются для кодирования видео, и определение опорного блока, блока, подлежащего обработке, включает в себя: выбор из одного или более кандидатов опорных блоков блока, подлежащего обработке, кандидата опорного блока с минимальной стоимостью искажений скорости передачи в качестве опорного блока, блока подлежащего обработке.
Опорный блок представляет собой блок видеоизображения, который имеет пространственную или временную корреляцию с блоком, подлежащего обработке, например, может быть пространственно-смежным блоком или временным совместно расположенным (co-located) блоком. Вектор движения опорного блока используется для предсказания вектора движения блока, подлежащего обработке. Это повышает эффективность кодирования вектора движения.
В соответствии со вторым аспектом настоящего изобретения, предложено устройство для получения вектора движения, включающее в себя: модуль определения, выполненный с возможностью определять опорный блок блока, подлежащего обработке, в котором опорный блок и блок, подлежащий обработке, имеют заданную временную или пространственную корреляцию, опорный блок имеет исходный вектор движения и одно или более заданных смещений вектора движения, исходный вектор движения опорного блока получают на основании предсказанного вектора движения опорного блока и блок предсказания опорного блока получают на основании исходного вектора движения и одного или более заданных смещений вектора движения; и модуль получения, выполненный с возможностью использования исходного вектора движения опорного блока в качестве предсказанного вектора движения блока, подлежащего обработке.
В первой возможной реализации второго аспекта, модуль получения дополнительно выполнен с возможностью: использования предсказанного вектора движения опорного блока в качестве исходного вектора движения опорного блока; или сложения предсказанного вектора движения опорного блока и разности вектора движения опорного блока, для получения исходного вектора движения опорного блока.
Во второй возможной реализации второго аспекта, модуль получения дополнительно выполнен с возможностью: получать, из опорного кадра опорного блока, блок изображения, указанный исходным вектором движения опорного блока, и использовать полученный блок изображения в качестве временного блока предсказания опорного блока; складывать исходный вектор движения и одно или более заданных смещений вектора движения опорного блока для получения одного или более фактических векторов движения, где каждый фактический вектор движения указывает позицию поиска; получать один или более кандидатов блоков предсказания на позициях поиска, указанных одним или более фактическими векторами движения, где каждая позиция поиска соответствует одному кандидату блока предсказания; и выбирать из одного или более кандидатов блоков предсказания кандидата блока предсказания с минимальной разницей пикселя из блока временного предсказания в качестве блока предсказания опорного блока.
В третьей возможной реализации второго аспекта, устройство сконфигурировано для двунаправленного предсказания, опорный кадр включает в себя опорный кадр первого направления и опорный кадр второго направления, исходный вектор движения включает в себя исходный вектор движения первого направления и исходный вектор движения второго направления, и модуль получения специально выполнен с возможностью: получать, из опорного блока первого направления, опорного блока, первый блок изображения, указанный исходным вектором движения первого направления опорного блока; получать, из опорного блока второго направления, опорного блока, второй блок изображения, указанный исходным вектором движения второго направления опорного блока; и взвешивание первого блока изображения и второго блока изображения для получения временного блока предсказания опорного блока.
В четвертой возможной реализации второго аспекта, устройство дополнительно включает в себя: модуль округления, выполненный с возможностью: когда разрешение вектора движения фактического вектора движения выше, чем заданная точность пикселя, округлять разрешение вектора движения фактического вектора движения, так что разрешение вектора движения обработанного фактического вектора движения равно заданной точности пикселя.
В пятой возможной реализации второго аспекта, модуль получения специально выполнен с возможностью: выбирать из одного или более кандидатов блоков предсказания фактический вектор движения, соответствующий кандидату блока предсказания с минимальной разностью пикселя из временного блока предсказания; когда разрешение вектора движения выбранного фактического вектора движения выше, чем заданная точность пикселя, округлить разрешение вектора движения выбранного фактического вектора движения так, чтобы разрешение вектора движения обработанного выбранного фактического вектора движения равнялось заданной точности пикселя; и определять, что блок предсказания, соответствующий позиции, указанной обработанным выбранным фактическим вектором движения, является блоком предсказания опорного блока.
В шестой возможной реализации второго аспекта, заданная точность пикселя представляет собой точность целого пикселя, точность 1/2 пикселя, точность 1/4 пикселя или точность 1/8 пикселя.
В седьмой возможной реализации второго аспекта модуль получения специально выполнен с возможностью использовать предсказанный вектор движения блока, подлежащий обработке, в качестве исходного вектора движения блока, подлежащего обработке.
В восьмой возможной реализации второго аспекта, модуль получения специально выполнен с возможностью складывать предсказанный вектор движения блока, подлежащего обработке, и разность вектора движения блока, подлежащего обработке, для получения исходного вектора движения блока, подлежащего обработке.
В девятой возможной реализации второго аспекта, устройство используется для декодирования видео, и разность вектора движения блока, подлежащего обработке, получается путем синтаксического анализа первой идентификационной информации в битовом потоке.
В десятой возможной реализации второго аспекта, устройство используется для декодирования видео, и модуль определения специально выполнен с возможностью: выполнять синтаксический анализ битового потока для получения второй идентификационной информации; и определять опорный блок блока, подлежащего обработке, на основании второй идентификационной информации.
В одиннадцатой возможной реализации второго аспекта, устройство используется для кодирования видео, и модуль определения специально выполнен с возможностью: выбирать из одного или более кандидатов опорных блоков блока, подлежащего обработке, кандидата опорного блока с минимальной стоимостью искажения скорости в качестве опорного блока, подлежащего обработке блока.
В соответствии с третьим аспектом настоящего изобретения, предложен способ для получения вектора движения и включает в себя: определение опорного блока подлежащего обработке блока, где опорный блок и подлежащий обработке блок имеют заданную временную или пространственную корреляцию; получение исходного вектора движения блока, подлежащего обработке, на основании опорного блока; получение блока предсказания блока, подлежащего обработке, на основании исходного вектора движения и одного или более заданных смещений вектора движения блока, подлежащего обработке; и использование исходного вектора движения блока, подлежащего обработке в качестве предсказанного вектора движения последующего блока, подлежащего обработке, который обрабатывается после блока, подлежащего обработке.
Во второй возможной реализации третьего аспекта, получение блока предсказания блока, подлежащего обработке, на основании исходного вектора движения и одного или более заданных смещений вектора движения блока, подлежащего обработке, включает в себя: получение из опорного кадра блока, подлежащего обработке, и блок изображения указывается исходным вектором движения блока, подлежащего обработке, и использование полученного блока изображения в качестве временного блока предсказания блока, подлежащего обработке; сложение исходного вектора движения и одного или более заданных смещений вектора движения блока, подлежащего обработке для получения одного или более фактических векторов движения, где каждый фактический вектор движения указывает позицию поиска; получение одного или более кандидатов блоков предсказания на позициях поиска, указанных одним или более фактическими векторами движения, где каждая позиция поиска соответствует одному кандидату блока предсказания; и выбор из одного или более кандидатов блоков предсказания кандидата блока предсказания с минимальной разницей пикселей из временного блока предсказания в качестве блока предсказания блока, подлежащего обработке.
В третьей возможной реализации третьего аспекта, способ используется для двунаправленного предсказания, опорный кадр включает в себя опорный кадр первого направления и опорный кадр второго направления, исходный вектор движения подлежащего обработке блока включает в себя исходный вектор движения первого направления и исходный вектор движения второго направления, и получение из опорного кадра блока, подлежащего обработке, блока изображения, указанного исходным вектором движения блока, подлежащего обработке, и использование полученного блока изображения в качестве временного блока предсказания блока, подлежащего обработке, включает в себя: получение из опорного кадра первого направления блока, подлежащего обработке, первого блока изображения, указанного исходным вектором движения первого направления блока, подлежащего обработке; получение из опорного кадра второго направления блока, подлежащего обработке, второго блока изображения, указанного исходным вектором движения второго направления блока, подлежащего обработке; и взвешивание первого блока изображения и второго блока изображения для получения временного блока предсказания блока, подлежащего обработке.
В четвертой возможной реализации третьего аспекта, способ дополнительно включает в себя: когда разрешение вектора движения фактического вектора движения выше, чем заданная точность пикселя, округление разрешения вектора движения фактического вектора движения, так что разрешение вектора движения обработанного фактического вектора движения равно заданной точности пикселя.
В пятой возможной реализации третьего аспекта, выбор из одного или более кандидатов блоков предсказания, кандидата блока предсказания с минимальной разностью пикселя из временного блока предсказания в качестве блока предсказания блока, подлежащего обработке, включает в себя: выбор, из одного или более кандидатов блоков предсказания, фактического вектора движения, соответствующего кандидату блока предсказания с минимальной разностью пикселя из временного блока предсказания; когда разрешение вектора движения выбранного фактического вектора движения выше, чем заданная точность пикселя, округление разрешения вектора движения выбранного фактического вектора движения так, чтобы разрешение вектора движения обработанного выбранного фактического вектора движения было равным заданной точности пикселя; и определение, что блок предсказания, соответствующий позиции, указанной обработанным выбранным фактическим вектором движения, является блоком предсказания блока, подлежащего обработке.
В шестой возможной реализации третьего аспекта, заданная точность пикселя представляет собой точность целого пикселя, точность 1/2 пикселя, точность 1/4 пикселя или точность 1/8 пикселя.
В седьмой возможной реализации третьего аспекта способ дополнительно включает в себя: использование предсказанного вектора движения следующего блока, подлежащего обработке, который обрабатывается после блока, подлежащего обработке, в качестве исходного вектора движения последующего блока, подлежащего обработке, который обрабатывается после блока, подлежащего обработке.
В восьмой возможной реализации третьего аспекта, способ дополнительно включает в себя: сложение предсказанного вектора движения и вектора движения следующего блока, подлежащего обработке, который обрабатывается после блока, подлежащего обработке, для получения исходного вектора движения последующего блока, подлежащего обработке, который обрабатывается после блока, подлежащего обработке.
В девятой возможной реализации третьего аспекта, способ используется для декодирования видео, и разность вектора движения последующего блока, подлежащего обработке, который обрабатывается после блока, подлежащего обработке, получается путем синтаксического анализа первой идентификационной информации в битовом потоке.
В десятой возможной реализации третьего аспекта, способ используется для декодирования видео, и определение опорного блока, блока, подлежащего обработке, включает в себя: синтаксический анализ битового потока для получения второй идентификационной информации; и определение опорного блока, блока, подлежащего обработке, на основании второй идентификационной информации.
В одиннадцатом возможной реализации третьего аспекта, способ используется для кодирования видео, и определение опорного блока, блока, подлежащего обработке, включает в себя: выбор из одного или более кандидатов опорных блоков, блока подлежащего обработке, кандидата опорного блока с минимальной стоимостью искажения скорости в качестве опорного блока, блока подлежащего обработке.
Согласно четвертому аспекту настоящего изобретения, обеспечивается устройство для получения вектора движения. Устройство может применяться на стороне кодера или стороне декодера. Устройство включает в себя процессор и память. Процессор и память подключены друг к другу (например, соединены друг с другом через шину). В возможной реализации устройство может дополнительно включать в себя приемопередатчик. Приемопередатчик подключен к процессору и памяти и выполнен с возможностью принимать/передавать данные. Память выполнена с возможностью хранить программный код и видеоданные. Процессор выполнен с возможностью считывать программный код, хранящийся в памяти, для выполнения способа, описанного в первом или третьем аспектах.
Согласно пятому аспекту настоящего изобретения обеспечивается система для кодирования видео. Система для кодирования видео включает в себя устройство источника и устройство назначения. Устройство источника и устройство назначения могут быть соединены с возможностью связи. Устройство источника генерирует кодированные видеоданные. Следовательно, устройство источника может называться устройством для кодирования видео или выполненным с возможностью кодировать видео. Устройство назначения может декодировать кодированные видеоданные, сгенерированные устройством источника. Следовательно, устройство назначения может упоминаться как устройство для декодирования видео или приспособление для декодирования видео. Устройство источника и устройство назначения могут быть примерами устройства для кодирования видео или приспособления для кодирования видео. Способ, описанный в первом аспекте или третьем аспекте, применяется к устройству для кодирования видео или приспособлению для кодирования видео.
Согласно шестому аспекту настоящего изобретения, обеспечивается машиночитаемый носитель данных. Машиночитаемый носитель данных хранит инструкции. Когда инструкции выполняются на компьютере, компьютер выполнен с возможностью выполнять способ, описанный в первом или третьем аспектах.
Согласно седьмому аспекту настоящего изобретения, обеспечивается компьютерный программный продукт, включающий в себя инструкции. Когда компьютерный программный продукт выполняется на компьютере, компьютер выполнен с возможностью выполнять способ, описанный в первом или третьем аспектах.
Следует понимать, что варианты осуществления, соответствующие второму-седьмому аспектам настоящего изобретения, и вариант осуществления, соответствующий первому аспекту настоящего изобретения, имеют одинаковые задачи изобретения, аналогичные технические признаки и одинаковые полезные технические эффекты. Подробности снова не описываются.
Краткое описание чертежей
Фиг.1 является блок-схемой примера системы для кодирования видео, которая может быть выполнена с возможностью использования в варианте осуществления настоящего изобретения;
Фиг.2 является блок-схемой примера системы видеокодера, который может быть выполнен с возможностью использования в варианте осуществления настоящего изобретения;
Фиг.3 является блок-схемой примера системы видеодекодера, который может быть выполнен с возможностью использования в варианте осуществления настоящего изобретения;
Фиг.4 является блок-схемой примера модуля внешнего предсказания, который может быть выполнен с возможностью использования в варианте осуществления настоящего изобретения;
Фиг.5 является блок-схемой алгоритма примерной реализации режима предсказания объединения;
Фиг.6 является блок-схемой алгоритма примерной реализации режима расширенного предсказания вектора движения;
Фиг.7 является блок-схемой алгоритма примерной реализации компенсации движения с помощью видеодекодера, который может быть выполнен с возможностью использования в варианте осуществления настоящего изобретения;
Фиг.8 является схемой примера блока кодирования и блока изображения в соседней позиции, ассоциированной с блоком кодирования;
Фиг.9 является блок-схемой алгоритма примерной реализации формирования списка кандидатов предсказанных векторов движения;
Фиг.10 является схемой примерной реализации добавления объединенного кандидата вектора движения в список кандидатов предсказанных векторов движения в режиме объединения;
Фиг.11 является схемой примерной реализации добавления масштабированного кандидата вектора движения в список кандидатов предсказанных векторов движения в режиме объединения;
Фиг.12 является схемой примерной реализации добавления нулевого вектора движения к списку кандидатов предсказанных векторов движения в режиме объединения;
Фиг.13 является блок-схемой алгоритма способа обновления вектора движения при кодировании видео согласно варианту осуществления настоящего изобретения;
Фиг.14 является блок-схемой алгоритма способа обновления вектора движения при декодировании видео согласно варианту осуществления настоящего изобретения;
Фиг.15 является блок-схемой алгоритма обновления вектора движения согласно варианту осуществления настоящего изобретения;
Фиг.16 является блок-схемой алгоритма обновления вектора движения согласно варианту осуществления настоящего изобретения;
Фиг.17A и фиг.17B являются блок-схемами алгоритма обновления вектора движения согласно варианту осуществления настоящего изобретения;
Фиг.18 является блок-схемой алгоритма обновления вектора движения согласно варианту осуществления настоящего изобретения;
Фиг.19 является блок-схемой алгоритма способа получения вектора движения при кодировании видео согласно варианту осуществления настоящего изобретения;
Фиг.20 является блок-схемой алгоритма способа получения вектора движения при кодировании видео согласно варианту осуществления настоящего изобретения;
Фиг.21 является блок-схемой устройства для получения вектора движения при декодировании видео согласно варианту осуществления настоящего изобретения; и
Фиг.22 является блок-схемой устройства для кодирования видео согласно варианту осуществления настоящего изобретения.
Осуществление изобретения
Нижеследующее ясно описывает технические решения в вариантах осуществления настоящего изобретения со ссылкой на сопроводительные чертежи в вариантах осуществления настоящего изобретения.
Фиг.1 является блок-схемой системы 10 для кодирования видео согласно варианту осуществления настоящего изобретения. Как показано на фиг.1, система 10 включает в себя устройство 12 источника. Устройство 12 источника генерирует кодированные видеоданные, которые должны быть впоследствии декодированы устройством 14 назначения. Устройство 12 источника и устройство 14 назначения могут включать в себя любое из широкого диапазона устройств, включающие в себя настольный компьютер, портативный компьютер, планшетный компьютер, телеприставку, телефонную трубку, такую как «умный» телефон, «умный» тачпад, телевизор, камеру, устройство отображения, цифровой медиаплеер, игровую консоль, устройство для передачи потокового видео и т.п. В некоторых приложениях устройство 12 источника и устройство 14 назначения могут быть выполнены с возможностью осуществлять беспроводную связь.
Устройство 14 назначения может принимать кодированные видеоданные, подлежащие декодированию, по каналу 16. Канал 16 может включать в себя любой тип носителя или устройства, которые могут передавать кодированные видеоданные из устройства 12 источника в устройство 14 назначения. В возможной реализации канал 16 может включать в себя среду связи, которая позволяет устройству 12 источника напрямую передавать закодированные видеоданные в устройство 14 назначения в реальном времени. Закодированные видеоданные могут быть модулированы в соответствии со стандартом связи (например, протоколом беспроводной связи), и затем переданы в устройство 14 назначения. Среда связи может включать в себя любую беспроводную или проводную среду связи, например, радиочастотный спектр или одну или более физических линий передачи. Среда связи может составлять часть сети пакетной передачи (например, локальную сеть, обширную сеть или глобальную сеть, такую как интернет). Среда связи может включать в себя маршрутизатор, коммутатор, базовую станцию или любые другие устройства, которые могут использоваться для обеспечения связи из устройства 12 источника в устройство 14 назначения.
В качестве альтернативы, кодированные данные могут быть выведены в устройство 24 хранения через интерфейс 22 вывода. Аналогично, к кодированным данным можно получить доступ из устройства 24 хранения через интерфейс ввода. Устройство 24 хранения может включать в себя любой из множества разрозненных или локальных носителей данных, например, жесткий диск, диск Blu-ray, DVD, CD-ROM, флэш-память, энергозависимую или энергонезависимую. энергозависимая память или любой другой подходящий цифровой носитель информации, выполненный с возможностью хранить кодированные видеоданные. В другой возможной реализации устройство 24 хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, выполненному с возможностью хранить закодированное видео, сгенерированное устройством 12 источника. Устройство 14 назначения может осуществлять доступ к сохраненным видеоданным из устройства 24 хранения посредством потоковой передачи или скачивания. Файловый сервер может быть сервером любого типа, который может хранить закодированные видеоданные и передавать закодированные видеоданные в устройство 14 назначения. В возможной реализации файловый сервер включает в себя сервер веб-сайта, сервер протокола передачи файлов, запоминающее устройство сети или привод локального диска. Устройство 14 назначения может получить доступ к закодированным видеоданным через любое стандартное соединение для передачи данных, включающее в себя интернет-соединение. Соединение для передачи данных может включать в себя беспроводной канал (например, Wi-Fi соединение) или проводное соединение (например, кабельный модем), которое пригодно для доступа к кодированным видеоданным, хранящимся на файловом сервере, или их комбинации. Кодированные видеоданные могут передаваться из устройства 24 хранения в режиме потоковой передачи посредством загрузки или их комбинации.
Технологии в настоящем изобретении не обязательно ограничиваются беспроводными приложениями или настройками. Технологии могут применяться для декодирования видео для поддержки любого из множества мультимедийных приложений, например, эфирного телевещания, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео (например, через интернет), кодирование цифрового видео для хранения на носителе данных, декодирование цифрового видео, хранящегося на носителе данных, или другое приложение. В некоторых возможных реализациях система 10 может быть выполнена с возможностью поддерживать однонаправленную или двунаправленную передачи видео для поддержки таких приложений, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
В возможной реализации на фиг.1, устройство 12 источника включает в себя источник 18 видео, видеокодер 20 и интерфейс 22 вывода. В некоторых реализациях интерфейс 22 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве 12 источника источник 18 видео может включать в себя, например, следующие источники: устройство захвата видео (например, видеокамеру), видеоархив, включающий в себя ранее захваченное видео, интерфейс подачи видео для приема видео из поставщика видеоконтента и/или систему компьютерной графики для генерирования данных компьютерной графики в качестве источника видео или их комбинации. В возможной реализации, если источником 18 видео является видеокамера, устройство 12 источника и устройство 14 назначения могут составлять телефон с камерой или видеотелефон. Например, технологии, описанные в настоящем изобретении, могут быть применимы к декодированию видео и могут быть применимы к беспроводным и/или проводным приложениям.
Видеокодер 20 может кодировать захваченное или предварительно захваченное видео или видео, сгенерированное компьютером. Кодированные видеоданные могут быть непосредственно переданы в устройство 14 назначения через интерфейс 22 вывода устройства 12 источника. Кодированные видеоданные также могут (или альтернативно) сохраняться в устройстве 24 хранения, так что устройство 14 назначения или другое устройство впоследствии обращается к кодированным видеоданным для декодирования и/или воспроизведения.
Устройство 14 назначения включает в себя интерфейс 28 ввода, видеодекодер 30 и устройство 32 отображения. В некоторых реализациях интерфейс 28 ввода может включать в себя приемник и/или модем. Интерфейс 28 ввода устройства 14 назначения принимает кодированные видеоданные по каналу 16. Кодированные видеоданные, передаваемые или предоставляемые в устройство 24 хранения по каналу 16, могут включать в себя множество элементов синтаксиса, которые генерируются видеокодером 20. и используется видеодекодером 30 для декодирования видеоданных. Эти элементы синтаксиса могут быть включены в закодированные видеоданные, которые передаются на носителе связи, и которые хранятся на носителе данных или хранятся на файловом сервере.
Устройство 32 отображения может быть интегрировано с устройством 14 назначения или расположено вне устройства 14 назначения. В некоторых возможных реализациях устройство 14 назначения может включать в себя интегрированное устройство отображения, и также выполнено с возможностью подключения к интерфейсу внешнего устройство отображения. В других возможных реализациях устройство 14 назначения может быть устройством отображения. Обычно устройство 32 отображения отображает декодированные видеоданные пользователю и может включать в себя любое из множества устройств отображения, например, жидкокристаллический дисплей, плазменный дисплей, дисплей на органических светодиодах или устройство отображения другого типа.
Видеокодер 20 и видеодекодер 30 могут работать согласно, например, стандарту сжатия кодирования видео следующего поколения (H.266), который в настоящее время разрабатывается, и могут соответствовать тестовой модели H.266 (JEM). В качестве альтернативы видеокодер 20 и видеодекодер 30 могут работать согласно, например, другим специализированным или промышленным стандартам, таким как стандарт ITU-T H.265 или стандарт ITU-T H.264 или расширения этих стандартов. Стандарт ITU-T H.265 также упоминается как стандарт высокоэффективного кодирования видео, и стандарт ITU-T H.264 альтернативно упоминается как MPEG-4 часть 10 или усовершенствованное кодирование видео (advanced video coding, AVC). Однако технологии в настоящем изобретении не ограничиваются каким-либо конкретным стандартом кодирования. В других возможных реализациях стандарты сжатия видео включают в себя MPEG-2 и ITU-T H.263.
Хотя это не показано на фиг.1, в некоторых аспектах видеокодер 20 и видеодекодер 30 могут быть соответственно интегрированы с аудиокодером и аудиодекодером и могут включать в себя соответствующий блок мультиплексора-демультиплексора (MUX-DEMUX) или другое оборудование и программное обеспечение для кодирования как аудио, так и видео в одном потоке данных или в разных потоках данных. Если применимо, в некоторых возможных реализациях, MUX-DEMUX блок может соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
Видеокодер 20 и видеодекодер 30 каждый может быть реализован в виде любой из множества соответствующих схем кодера, например, одного или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, программное обеспечение, аппаратное обеспечение, встроенное ПО или любая их комбинация. Когда технологии частично реализованы в программном обеспечении, устройство может хранить инструкцию для программного обеспечения на соответствующем постоянном машиночитаемом носителе и может выполнять инструкцию на аппаратном уровне с использованием одного или более процессоров для выполнения технологий в настоящем изобретении. Видеокодер 20 и видеодекодер 30 могут быть интегрированы в один или более кодеров или декодеров. Любой из видеокодер 20 и видеодекодер 30 может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем устройстве.
Настоящее изобретение может, например, относиться к другому устройству, в котором видеокодер 20 передает конкретную информацию, например, видеодекодеру 30. Однако следует понимать, что видеокодер 20 может ассоциировать конкретные элементы синтаксиса с закодированными частями видеоданных для передачи информации. То есть, видеокодер 20 может хранить конкретные элементы синтаксиса в информации заголовка закодированных частей видеоданных, чтобы сигнализировать данные. В некоторых реализациях эти элементы синтаксиса могут быть закодированы и сохранены (например, сохранены в системе 34 хранения или файловом сервере 36) до того, как они будут приняты и декодированы видеодекодером 30. Следовательно, термин «сигнал» может означать, например, передачу синтаксиса или передачу других данных, используемых для декодирования сжатых видеоданных, независимо от того, выполняется ли передача в реальном времени, почти в реальном времени или в пределах промежутка времени. Например, передача может выполняться, когда элемент синтаксиса сохраняется на носителе во время кодирования, и затем этот элемент синтаксиса может быть проанализирован устройством декодирования в любое время после сохранения на носителе.
JCT-VC разработал стандарт H.265 (HEVC). Стандартизация HEVC основана на развитой модели устройства декодирования видео, где модель называется HEVC тестовой моделью (HM). Последний стандартный документ H.265 доступен по адресу http://www.itu.int/rec/T-REC-H.265. Последней версией стандартного документа является H.265 (12/16) и стандартный документ полностью включен в настоящий документ посредством ссылки. В HM предполагается, что устройство декодирования видео имеет несколько дополнительных возможностей по сравнению с существующим алгоритмом ITU-TH.264/AVC. Например, H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, тогда как HM может обеспечивать до 35 режимов кодирования с внутренним предсказанием.
JVET стремится к разработке H.266 стандарта. Процесс стандартизации H.266 основан на развитой модели устройства декодирования видео, где модель называется тестовой моделью H.266. Описания H.266 алгоритмов доступны по адресу http://phenix.int-evry.fr/jvet, и последние описания алгоритмов включены в JVET-G1001-v1. Документ с описанием алгоритма полностью включен в настоящий документ посредством ссылки. Дополнительно, справочное программное обеспечение для тестовой модели JEM доступно по адресу https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/, и оно также полностью включено в настоящий документ посредством ссылки.
Обычно, как описано в рабочей модели HM, видеокадр или изображение могут быть разделены на последовательность древовидных блоков или наибольших блоков кодирования (largest coding unit, LCU), включающие в себя выборки как яркости, так и цветности. LCU также называется CTU. Древовидный блок имеет функцию, аналогичную функции макроблока в H.264 стандарте. Сегмент включает в себя несколько последовательных древовидных блоков в порядке декодирования. Видеокадр или изображение могут быть разделены на один или более сегментов. Каждый древовидный блок может быть разделен на блоки кодирования на основании квадродерева. Например, древовидный блок, служащий корневым узлом квадродерева, может быть разделен на четыре дочерних узла, и каждый дочерний узел может также служить в качестве родительского узла и может быть разделен на четыре других дочерних узла. Конечный нерасщепляемый дочерний узел, служащий конечным узлом квадродерева, включает в себя узел декодирования, например, декодированный блок видеоданных. В синтаксических данных, ассоциированные с декодированным битовым потоком, может быть определено максимальное количество раз, когда древовидный блок может быть разделен, и может быть определен минимальный размер узла декодирования.
Блок кодирования включает в себя узел декодирования, блок предсказания (prediction unit, PU) и блок преобразования (transform unit, TU), ассоциированный с узлом декодирования. Размер CU соответствует размеру узла декодирования, и форма CU должна быть квадратной. Размер CU может варьироваться от 8 x 8 пикселей до максимум 64 x 64 пикселя, или большего размера древовидного блока. Каждый CU может включать в себя один или более PUs и один или более TUs. Например, синтаксические данные, ассоциированные с CU, могут описывать разделение одного CU на один или более PUs. Шаблоны разделения могут изменяться, когда CU кодируется в режиме пропуска или прямого предсказания, кодируется в режиме внутреннего предсказания или кодируется в режиме внешнего предсказания. PU, полученный в результате разделения, может иметь неквадратную форму. Например, синтаксические данные, ассоциированные с CU, могут также описывать разделение одного CU на один или более TUs на основании квадродерева. TU может иметь квадратную или неквадратную форму.
Стандарт HEVC допускает преобразование на основании TU, и TUs могут быть разными для разных CUs. Размер TU обычно устанавливается на основании размера PU в данном CU, определенном для разделенного LCU. Однако так бывает не всегда. Размер TU обычно такой же или меньше размера PU. В некоторых возможных реализациях структура квадродерева, называемая «остаточным квадродеревом» (residual quadtree, RQT), может использоваться для разделения остаточной выборки, соответствующей CU, на меньшие блоки. Конечный узел RQT может называться TU. Разность пикселей, ассоциированная с TU, может быть преобразована для генерирования коэффициента преобразования, и коэффициент преобразования может быть квантован.
Обычно PU включает в себя данные, относящиеся к процессу предсказания. Например, когда PU кодируется в режиме внутрикадрового прогнозирования, PU может включать в себя данные, описывающие режим внутреннего предсказания PU. В другой возможной реализации, когда PU кодируется в режиме межкадрового прогнозирования, PU может включать в себя данные, определяющие вектор движения для PU. Например, данные, определяющие вектор движения для PU, могут описывать горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение (например, точность 1/4 пикселя или точность 1/8 пикселя) вектора движения, опорное изображение, которое вектор движения указывает, и/или список опорного изображения (например, список 0, список 1 или список С) вектора движения.
Обычно для TU используются процессы преобразования и квантования. Данный CU, включающий в себя один или более PUs, также может включать в себя один или более TUs. После предсказания видеокодер 20 может вычислить остаточное значение, соответствующее PU. Остаточное значение включает в себя разницу пикселей. Разность пикселей может быть преобразована в коэффициент преобразования, и коэффициент преобразования квантуется и подвергается сканированию TU, чтобы сгенерировать сериализованный коэффициент преобразования для энтропийного декодирования. В настоящем изобретении термин «блок видеоданных» обычно используется для обозначения узла декодирования CU. В некоторых конкретных реализациях в настоящем изобретении термин «блок видеоданных» также может использоваться для обозначения древовидного блока, включающего в себя узел декодирования, PU и TU, например, древовидный блок является LCU или CU.
Видеопоследовательность обычно включает в себя серию видеокадров или изображений. Например, группа изображений (group of pictures, GOP) включает в себя серию видеоизображений или одно или более видеоизображений. GOP может включать в себя синтаксические данные в информации заголовка GOP, информации заголовка одного или более изображений или где-либо еще, и синтаксические данные описывают количество изображений, включенных в GOP. Каждый сегмент изображения может включать в себя синтаксические данные сегмента, описывающие режим кодирования соответствующего изображения. Видеокодер 20 обычно выполняет операцию на блоке видеоданных в некоторых сегментах видео, чтобы кодировать видеоданные. Блок видеоданных может соответствовать узлу декодирования в CU. Размер блок видеоданных может быть фиксированным или изменяемым и может изменяться в зависимости от указанного стандарта декодирования.
В возможной реализации HM поддерживает предсказание для множества размеров PU. Предполагая, что размер заданного CU равен 2N x 2N, HM поддерживает внутреннее предсказание для PU размера 2N x 2N или N x N, и внешнее предсказание для симметричного PU размера 2N x 2N, 2N x N, N x 2N или N x N. HM также поддерживает асимметричное разделение для внешнего предсказания для PU размеров 2N x nU, 2N x nD, nL x 2N и nR x 2N. При асимметричном разделении CU не разделяется в одном направлении, и делится на две части в другом направлении, где одна часть составляет 25% CU и другая часть равна 75% CU. Часть, на которую приходится 25% CU, указывается индикатором, включающим в себя «n», за которым следуют «U (вверх)», «D (вниз)», «L (влево)» или «R (вправо)». Следовательно, например, «2N x nU» относится к горизонтально разделенному 2N x 2N CU, с PU 2N x 0,5N вверху и PU 2N x 1,5N внизу.
В настоящем изобретении «N x M» и «N, умноженное на M» могут использоваться взаимозаменяемо для указания размера пикселя блок видеоданных в вертикальном и горизонтальном измерениях, например, 16 x 16 пикселей или 16 пикселей, умноженные на 16 пикселей. Обычно блок размером 16 x 16 имеет 16 пикселей в вертикальном направлении (y = 16) и 16 пикселей в горизонтальном направлении (x = 16). Точно так же блок N x N имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N является неотрицательным целым числом. Пиксели в блоке могут быть расположены в строках и столбцах. Дополнительно, в блоке количество пикселей в горизонтальном направлении и количество пикселей в вертикальном направлении не обязательно может быть одинаковым. Например, блок может включать в себя N x M пикселей, где M не обязательно равно N.
После выполнения декодирования с внутренним или внешним предсказанием для PU в CU видеокодер 20 может вычислить остаточные данные TU в CU. PU может включать в себя данные пикселей в пространственной области (также называемой областью пикселей). TU может включать в себя коэффициент в области преобразования после того, как преобразование (например, дискретное косинусное преобразование (discrete cosine transform, DCT), целочисленное преобразование, вейвлет-преобразование или концептуально подобное преобразование) выполняется над остаточными видеоданными. Остаточные данные могут соответствовать разнице пикселей между пикселями некодированного изображения и предсказателем, соответствующим PU. Видеокодер 20 может генерировать TU, включающий в себя остаточные данные CU, и затем преобразовывать TU, чтобы сгенерировать коэффициент преобразования CU.
После выполнения любого преобразования для генерирования коэффициентов преобразования, видеокодер 20 может квантовать коэффициенты преобразования. Квантование относится, например, к процессу квантования коэффициентов, чтобы уменьшить количество данных, используемых для представления коэффициентов, и реализовать дополнительное сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, во время квантования n-битовое значение может быть уменьшено до m-битового значения посредством округления, где n больше m.
Модель JEM дополнительно улучшает структуру кодирования видеоизображения. В частности, вводится структура блочного кодирования, называемая структурой «квадродерево плюс двоичное дерево» (QTBT). Без использования таких концепций, как CU, PU и TU в HEVC, структура QTBT поддерживает более гибкие секционированные формы CU. Один CU может иметь квадратную или прямоугольную форму. Разделение квадродерева сначала выполняется на CTU, а разделение двоичного дерева дополнительно выполняется на конечном узле квадродерева. Дополнительно, при разделении двоичного дерева применяют два шаблона разделения: симметричное горизонтальное разделение и симметричное вертикальное разделение. Конечный узел двоичного дерева называется CU. CU в модели JEM не может быть дополнительно разделен во время предсказания и преобразования. Другими словами, CU, PU и TU в модели JEM имеют одинаковый размер блока. В существующей модели JEM максимальный размер CTU составляет 256 x 256 пикселей яркости.
В некоторых возможных реализациях видеокодер 20 может сканировать квантованный коэффициент преобразования в заранее определенном порядке сканирования для генерирования сериализованного вектора, который может быть энтропийно кодирован. В других возможных реализациях видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованного коэффициента преобразования для формирования одномерного вектора видеокодер 20 может выполнить энтропийное декодирование одномерного вектора с использованием контекстно-зависимого адаптивного кодирования с переменной длиной (CAVLC), контекстного адаптивного двоичного арифметического декодирования (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое декодирование (SBAC), энтропийное декодирование сегментирования интервала вероятности (PIPE) или другой способ энтропийного декодирования. Видеокодер 20 может дополнительно выполнять энтропийное кодирование элемента синтаксиса, ассоциированного с кодированными видеоданными, чтобы видеодекодер 30 декодировал видеоданные.
Для выполнения CABAC видеокодер 20 может назначить контекст в контекстной модели символу, который должен быть передан. Контекст может быть связан с тем, является ли соседнее значение символа ненулевым. Для выполнения CAVLC видеокодер 20 может выбрать код переменной длины для передаваемого символа. Кодовое слово в кодировании с переменной длиной слова (VLC) может быть построено так, чтобы более короткий код соответствовал более вероятному символу, и более длинный код соответствует менее вероятному символу. Таким образом, по сравнению с использованием кодовых слов одинаковой длины для всех символов, подлежащих передаче, использование VLC может снизить скорость передачи битов. Вероятность в CABAC может быть определена на основании контекста, назначенного символу.
В этом варианте осуществления настоящего изобретения видеокодер может выполнять внешнее предсказание для снижения временной избыточности между изображениями. Как описано выше, CU может иметь один или более блоков предсказания PUs в зависимости от различных стандартов кодирования сжатия видео. Другими словами, множество PUs могут принадлежать CU или PU и CU имеют одинаковый размер. В этой спецификации, когда CU и PU имеют одинаковый размер, шаблон разделения CU не является разделением, или CU разделен на один PU, и PU единообразно используется для описания. Когда видеокодер выполняет внешнее предсказание, видеокодер может передавать информацию движения для PU в видеодекодер. Например, информация движения для PU может включать в себя индекс опорного изображения, вектор движения и идентификатор направления предсказания. Вектор движения может указывать смещение между блоком изображения (также называемым блоком видеоданных, блоком пикселей, набором пикселей или т.п.) PU и опорным блоком PU. Опорный блок PU может быть частью опорного изображения, аналогично блоку изображения PU. Опорный блок может быть расположен в качестве опорного изображения, указанного индексом опорного изображения и идентификатором направления предсказания.
Для уменьшения количества кодированных битов, необходимых для представления информации движения для PU, видеокодер может сгенерировать список кандидатов предсказанных векторов движения (Motion Vector, MV) для каждого PU согласно режиму предсказания объединения или режиму расширенного предсказания вектора движения. Каждый кандидат предсказанного вектора движения в списке кандидатов предсказанных векторов движения для PU может указывать информацию движения. Информация движения, указанная некоторыми кандидатами предсказанных векторов движения в списке кандидатов предсказанных векторов движения, может быть основана на информации движения для других PUs. Если кандидат предсказанного вектора движения указывает информацию движения одной из указанной позиции кандидата пространственного предсказанного вектора движения или указанной позиции кандидата временного предсказанного вектора движения, кандидат предсказанного вектора движения может упоминаться как «исходный» кандидат предсказанного вектора движения в настоящем изобретении. Например, в режиме объединения, также называемом в этом описании режимом предсказания объединения, может иметь пять исходных позиций кандидатов пространственного предсказанного вектора движения и одну исходную позицию кандидата временного предсказанного вектора движения. В некоторых примерах видеокодер может генерировать дополнительный кандидат предсказанного вектора движения путем объединения некоторых векторов движения из различных кандидатов исходных предсказанных векторов движения, модифицировать кандидата исходного предсказанного вектора движения или вставлять только нулевой вектор движения в качестве кандидата предсказанного вектора движения. Дополнительный кандидат предсказанного вектора движения не рассматривается в качестве кандидата исходного предсказанного вектора движения и в настоящем изобретении может упоминаться как искусственно сгенерированный кандидат предсказанного вектора движения.
Технологии в настоящем изобретении обычно включают в себя технологию для генерирования списка кандидатов предсказанных векторов движения в видеокодере и технологию для генерирования того же самого списка кандидатов предсказанных векторов движения в видеодекодере. Видеокодер и видеодекодер могут сгенерировать один и тот же список кандидатов предсказанных векторов движения путем реализации одной и той же технологии для генерирования списка кандидатов предсказанных векторов движения. Например, видеокодер и видеодекодер могут генерировать одинаковые списки кандидатов предсказанных векторов движения (например, пять кандидатов предсказанных векторов движения). Видеокодер и видеодекодер могут сначала рассматривать кандидатов предсказанных пространственных векторов движения (например, соседние блоки в одном изображении) и затем рассматривать кандидатов предсказанных временных векторов движения (например, кандидаты предсказанных векторов движения в разных изображениях) и, наконец, могут рассматривать искусственно сгенерированные кандидаты предсказанных векторов движения до тех пор, пока требуемое количество кандидатов предсказанных векторов движения не будет добавлено в списки. Согласно технологиям в настоящем изобретении, во время формирования списка кандидатов предсказанных векторов движения операция сокращения может выполняться для некоторых типов кандидатов предсказанных векторов движения для удаления повторяющихся кандидатов предсказанных векторов движения из списка кандидатов предсказанных векторов движения, и может не выполняться для других типов кандидатов предсказанных векторов движения для снижения сложности декодера. Например, для списка кандидатов пространственных предсказанных векторов движения и для кандидата временного предсказанного вектора движения операция сокращения может выполняться для удаления кандидата предсказанного вектора движения с повторяющейся информацией движения из списка кандидатов предсказанных векторов движения. Однако искусственно сгенерированный кандидат предсказанного вектора движения может быть добавлен в список кандидатов предсказанных векторов движения без сокращения.
После генерирования списка кандидатов предсказанных векторов движения для PU из CU видеокодер может выбрать кандидата предсказанного вектора движения из списка кандидатов предсказанных векторов движения и вывести индекс кандидата предсказанного вектора движения в битовом потоке. Выбранный кандидат предсказанного вектора движения может быть кандидатом предсказанного вектора движения для генерирования вектора движения, который наиболее точно соответствует предсказателю целевого PU, который декодируется. Индекс кандидата предсказанного вектора движения может указывать позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения. Видеокодер может дополнительно генерировать блок предсказания изображения для PU на основании опорного блока, указанного информацией движения для PU. Информация движения для PU может быть определена на основании информации движения, указанной выбранным кандидатом предсказанного вектора движения. Например, в режиме объединения информация движения для PU может быть такой же, как информация движения, указанная выбранным кандидатом предсказанного вектора движения. В режиме AMVP информация движения для PU может определяться на основании разности векторов движения для PU и информации движения, указанной выбранным кандидатом предсказанного вектора движения. Видеокодер может генерировать один или более блоков остаточного изображения для CU на основании блока предсказания изображения для PU из CU и исходного блока изображения для CU. Затем видеокодер может кодировать один или более блоков остаточного изображения и выводить один или более блоков остаточного изображения в битовом потоке.
Битовый поток может включать в себя данные, идентифицирующие выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения для PU. Видеодекодер может определять информацию движения для PU на основании информации движения, указанной выбранным кандидатом предсказанного вектора движения в списке кандидатов предсказанных векторов движения для PU. Видеодекодер может идентифицировать один или более опорных блоков для PU на основании информации движения для PU. После идентификации одного или более опорных блоков для PU видеодекодер может генерировать блок предсказания изображения для PU на основании одного или более опорных блоков для PU. Видеодекодер может восстановить блок изображения для CU на основании блока предсказания изображения для PU в CU и одного или более блоков остаточного изображения для CU.
Для простоты объяснения в настоящем изобретении позиция или блок изображения могут быть описаны как имеющие различные пространственные отношения с CU или PU. Описание может быть объяснено следующим образом: позиция или блок изображения имеет различные пространственные отношения с блоком изображения, ассоциированным с CU или PU. Дополнительно, в настоящем изобретении PU в настоящее время декодируемый видеодекодером, может упоминаться как текущий PU, и может упоминаться как текущий блок изображения, подлежащий обработке. В настоящем изобретении CU, декодируемый в настоящий момент видеодекодером, может называться текущим CU. В настоящем изобретении изображение, декодируемое в данный момент видеодекодером, может называться текущим изображением. Следует понимать, что настоящее изобретение также применимо к случаю, в котором PU и CU имеют одинаковый размер или PU является CU, и PU единообразно используется для описания.
Как кратко описано выше, видеокодер 20 может генерировать блок предсказания изображения и информацию движения для PU CU посредством внешнего предсказания. Во многих примерах информация движения для данного PU может быть такой же или похожей на информацию движения для одной или более соседних PUs (а именно, PU, блок изображения которого пространственно или временно смежен с блоком изображения данного PU). Поскольку соседний PU часто имеет аналогичную информацию движения, видеокодер 20 может кодировать информацию движения для данного PU на основании информации движения для соседнего PU. Кодирование информации движения для данного PU на основании информации движения для соседнего PU может уменьшить количество кодированных битов, требуемых в битовом потоке для указания информации движения для данного PU.
Видеокодер 20 может кодировать информацию движения для данного PU на основании информации движения для соседнего PU различными способами. Например, видеокодер 20 может указать, что информация движения для данного PU такая же, как информация движения для соседнего PU. В настоящем изобретении режим объединения может использоваться для указания, что информация движения для данного PU является такой же, как или может быть получена из информации движения для соседнего PU. В другой возможной реализации видеокодер 20 может вычислять разность вектора движения (Motion Vector Difference, MVD) для данного PU. MVD указывает разницу между вектором движения для данного PU и вектором движения для соседнего PU. Видеокодер 20 может включать в себя MVD вместо вектора движения для данного PU в информации движения для данного PU. В битовом потоке количество кодированных битов, требуемых для представления MVD, меньше количества закодированных битов, требуемых для представления вектора движения для данного PU. В настоящем изобретении может использоваться режим расширенного предсказания вектора движения для указания, что информация движения для данного PU передается в декодер с использованием MVD и значения индекса, которое используется для идентификации кандидата вектора движения.
В режиме объединения или режиме AMVP для передачи информации движения для данного PU в декодер, видеокодер 20 может генерировать список кандидатов предсказанных векторов движения для данного PU. Список кандидатов предсказанных векторов движения может включать в себя один или более кандидатов предсказанных векторов движения. Каждый из кандидатов предсказанных векторов движения в списке кандидатов предсказанных векторов движения для данного PU может указывать информацию движения. Информация движения, указанная каждым кандидатом предсказанного вектора движения, может включать в себя вектор движения, индекс опорного изображения и идентификатор направления предсказания. Кандидаты предсказанных векторов движения в списке кандидатов предсказанных векторов движения могут включать в себя «исходные» кандидаты предсказанных векторов движения и каждый «исходный» кандидат предсказанного вектора движения указывает информацию движения одного из указанных позиций кандидатов предсказанного вектора движения в PU, отличную от заданного PU.
После генерирования списка кандидатов предполагаемых векторов движения для PU, видеокодер 20 может выбрать одного кандидата предсказанного вектора движения из списка кандидатов предсказанных векторов движения для PU. Например, видеокодер может сравнивать каждого кандидата предсказанного вектора движения с декодируемым PU и может выбирать кандидата предсказанного вектора движения с желаемой стоимостью искажения скорости. Видеокодер 20 может выводить индекс кандидата предсказанного вектора движения для PU. Индекс кандидата предсказанного вектора движения может идентифицировать позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения.
Дополнительно, видеокодер 20 может генерировать блок предсказания изображения для PU на основании опорного блока, указанного информацией движения для PU. Информация движения для PU может быть определена на основании информации движения, указанной выбранным кандидатом предсказанного вектора движения в списке кандидатов предсказанных векторов движения для PU. Например, в режиме объединения информация движения для PU может быть такой же, как информация движения, указанная выбранным кандидатом предсказанного вектора движения. В режиме AMVP информация движения для PU может определяться на основании разности векторов движения для PU и информации движения, указанной выбранным кандидатом предсказанного вектора движения. Как описано выше, видеокодер 20 может обрабатывать блок предсказания изображения для PU.
Когда видеодекодер 30 принимает битовый поток, видеодекодер 30 может генерировать список кандидатов предсказанных векторов движения для каждого PU CU. Список кандидатов предсказанных векторов движения, сгенерированный видеодекодером 30 для PU, может быть таким же, как список кандидатов предсказанных векторов движения, сгенерированный видеокодером 20 для PU. Элемент синтаксиса, полученный путем синтаксического анализа битового потока, может указывать позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения для PU. После генерирования списка кандидатов предсказанных векторов движения для PU, видеодекодер 30 может генерировать блок предсказания изображения для PU на основании одного или более опорных блоков, указанных информацией движения для PU. Видеодекодер 30 может определять информацию движения для PU на основании информации движения, указанной выбранным кандидатом предсказанного вектора движения в списке кандидатов предсказанных векторов движения для PU. Видеодекодер 30 может восстановить блок изображения для CU на основании блока предсказания изображения для PU и блока остаточного изображения для CU.
Следует понимать, что в возможной реализации в декодере формирование списка кандидатов предсказанных векторов движения и синтаксический анализ битового потока для получения позиции выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения являются независимыми друг друга, и могут выполняться в любом порядке или параллельно.
В другой возможной реализации в декодере сначала получают позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения путем синтаксического анализа битового потока, и затем формируется список кандидатов предсказанных векторов движения на основании позиции, полученной посредством синтаксического анализа. В этой реализации нет необходимости генерировать все списки кандидатов предсказанных векторов движения, и нужно сформировать только список кандидатов предсказанных векторов движения на позиции, полученной посредством синтаксического анализа, а именно, при условии, что может быть определен кандидат предсказанного вектора движения на позиции. Например, когда при синтаксическом анализе битового потока получается, что выбранный кандидат предсказанного вектора движения является кандидатом предсказанного вектора движения, индекс которого равен 3 в списке кандидатов предсказанных векторов движения, требуется сформировать только список кандидатов предсказанных векторов движения с индекса 0 до индекса 3 и можно определить кандидата предсказанного вектора движения, индекс которого равен 3. Это может снизить сложность и повысить эффективность декодирования.
Фиг.2 является блок-схемой видеокодера 20 согласно варианту осуществления настоящего изобретения. Видеокодер 20 может выполнять внутрикадровое кодирование и межкадровое кодирование для блока видеоданных в сегменте видео. Внутрикадровое кодирование основывается на пространственном предсказании для уменьшения или удаления пространственной избыточности видео в данном видеокадре или изображении. Межкадровое кодирование основывается на временном предсказании для уменьшения или удаления временной избыточности видео в соседнем кадре или изображении видеопоследовательности. Внутренний режим (режим I) может быть любым из нескольких режимов сжатия, основанном на пространстве. Внешний режим, такой как режим однонаправленного предсказания (режим P) или режим двунаправленного предсказания (режим B), может быть любым из нескольких режимов сжатия, основанном на времени.
В возможной реализации на фиг.2, видеокодер 20 включает в себя блок 35 разделения, блок 41 предсказания, память 64 опорных изображений, сумматор 50, блок 52 обработки преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Блок 41 предсказания включает в себя блок 42 оценки движения, блок 44 компенсации движения и блок 46 внутреннего предсказания. Для восстановления блока видеоданных видеокодер 20 дополнительно включает в себя блок 58 обратного квантования, блок 60 обратного преобразования и сумматор 62. Видеокодер 20 может дополнительно включать в себя фильтр деблокинга (не показан на фиг.2) для фильтрации границы блока и удаления артефакта блокинга из восстановленного видео. При необходимости фильтр деблокинга обычно фильтрует выходной сигнал сумматора 62. В дополнение к фильтру деблокинга может также использоваться дополнительный контурный фильтр (внутри или после контура).
Как показано на фиг.2, видеокодер 20 принимает видеоданные и блок 35 разделения разделяет данные на блоки видеоданных. Такое разделение может дополнительно включать в себя разделение на сегменты, блоки изображения или другие более крупные блоки и (например) разделение блок видеоданных на основании структур квадродерева LCU и CU. Например, видеокодер 20 является компонентом для кодирования блока видеоданных в сегменте видео, который должен быть закодирован. Обычно один сегмент может быть разделен на множество блоков видеоданных (и может быть разделен на наборы блоков видеоданных, которые называются блоками изображения).
Блок 41 предсказания может выбрать один из множества возможных режимов декодирования, например, один из множества режимов внутреннего декодирования или один из множества режимов внешнего декодирования для текущего блока видеоданных на основании качества кодирования и результата расчета стоимости (например, стоимость искажения скорости, RD стоимость или называемая стоимостью искажения скорости). Блок 41 предсказания может предоставить полученный внутренне-декодированный или внешне-декодированный блок в сумматор 50 для генерирования данных остаточного блока и предоставить полученный внутренне-декодированный или внешне-декодированный блок в сумматор 62 для восстановления кодированного блока и использования восстановленного кодированного блока в качестве опорного изображения.
Блок 42 оценки движения и блок 44 компенсации движения в блоке 41 предсказания выполняют декодирование с внешним предсказанием для текущего блока видеоданных относительно одного или более блоков предсказания одного или более опорных изображений для обеспечения сжатия по времени. Блок 42 оценки движения может быть выполнен с возможностью определять режим внешнего предсказания для сегмента видео на основании заданного режима видеопоследовательности. В заданном режиме сегмент видео в последовательности может быть задан как P-сегмент, B-сегмент или GPB-сегмент. Блок 42 оценки движения и блок 44 компенсации движения могут быть в высокой степени интегрированы, но описаны отдельно для объяснения концепций. Оценка движения, выполняемая блоком 42 оценки движения, является процессом генерирования вектора движения для оценки блока видеоданных. Например, вектор движения может указывать на смещение PU блока видеоданных в текущем кадре видео или изображении относительно блока предсказания в опорном изображении.
Блок предсказания является обнаруживаемым блоком в PU на основании разности пикселей, который должен в максимальной степени совпадать с блоком видеоданных, подлежащий декодированию. Разность пикселей может быть определена на основании суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или другой метрики разности. В некоторых возможных реализациях видеокодер 20 может вычислить значение позиции суб-целого числа (sub-integer) пикселей опорного изображения, сохраненного в памяти 64 опорного изображения. Например, видеокодер 20 может интерполировать значение позиции 1/4 пикселя, позиции 1/8 пикселя или позиции другого фракционного значения пикселя опорного изображения. Следовательно, блок 42 оценки движения может выполнять поиск движения относительно позиции полного пикселя и позиции дробного пикселя и выводить вектор движения с точностью до дробного пикселя.
Блок 42 оценки движения вычисляет вектор движения для PU блока видеоданных во внешне-декодированном сегменте путем сравнения позиции PU и позиции блока предсказания в опорном изображении. Опорное изображение может быть выбрано из первого списка опорных изображений (список 0) или второго списка опорных изображений (список 1). Каждый элемент в списке используется для идентификации одного или более опорных изображений, хранящихся в памяти 64 опорных изображений. Блок 42 оценки движения отправляет вычисленный вектор движения в блок 56 энтропийного кодирования и блок 44 компенсации движения.
Компенсация движения, выполняемая блоком 44 компенсации движения, может включать в себя извлечение или генерирование блока предсказания на основании вектора движения, определенного посредством оценки движения, и может выполняться интерполяция на уровне суб-пикселей. После приема вектора движения PU текущего блока видеоданных блок 44 компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений. Видеокодер 20 вычитает значение пикселя блока предсказания из значения пикселя текущего декодируемого блока видеоданных для получения остаточного блока видеоданных и получения разности пикселей. Разность пикселей составляет остаточные данные блока и может включать в себя как компонент разности яркости, так и компонент разности цвета. Сумматор 50 является одним или более компонентами, которые выполняют операцию вычитания. Блок 44 компенсации движения может дополнительно генерировать элемент синтаксиса, ассоциированный с блоком видеоданных и сегментом видео, для видеодекодера 30, чтобы декодировать блок видеоданных в сегменте видео.
Если PU расположен в B-сегменте, изображение, включающее в себя PU, может быть ассоциировано с двумя списками опорных изображений, называемыми «списком 0» и «списком 1». В некоторых возможных реализациях изображение, включающее в себя B-сегмент, может быть ассоциировано с комбинацией списка из списка 0 и списка 1.
Дополнительно, если PU расположен в B-сегменте, блок 42 оценки движения может выполнять однонаправленное предсказание или двунаправленное предсказание для PU. В некоторых возможных реализациях двунаправленное предсказание является предсказанием, выполняемое отдельно на основании изображений в списке 0 опорных изображений и изображений в списке 1 опорных изображений. В некоторых других возможных реализациях двунаправленное предсказание выполняется отдельно на основании восстановленного будущего кадра и восстановленного прошедшего кадра, которые относится к текущему кадру в порядке отображения. Когда блок 42 оценки движения выполняет однонаправленное предсказание для PU, блок 42 оценки движения может осуществлять поиск опорных изображений в списке 0 или списке 1 для опорного блока для PU. Затем блок 42 оценки движения может генерировать опорный индекс, указывающий на опорное изображение, включающее в себя опорный блок в списке 0 или списке 1, и вектор движения, указывающий пространственное смещение между PU и опорным блоком. Блок 42 оценки движения может выводить опорный индекс, идентификатор направления предсказания и вектор движения в качестве информации движения для PU. Идентификатор направление предсказания может указать, что опорный индекс указывает опорное изображение в списке 0 или списке 1. Блок 44 компенсации движения может генерировать блок предсказания изображения для PU на основании опорного блока, указанной информацией движения для PU.
Когда блок 42 оценки движения выполняет двунаправленное предсказание для PU, блок 42 оценки движения может осуществлять поиск опорных изображений в списке 0 для опорного блока для PU, и может дополнительно искать опорные изображения в списке 1 для другого опорного блока для PU. Затем блок 42 оценки движения может генерировать опорные индексы, указывающие опорные изображения, включающие в себя опорные блоки в списке 0 и списке 1, и векторы движения, указывающие пространственные смещения между опорными блоками и PU. Блок 42 оценки движения может выводить опорные индексы и векторы движения для PU в качестве информации движения для PU. Блок 44 компенсации движения может генерировать блок предсказания изображения для PU на основании опорных блоков, указанных информацией движения для PU.
В некоторых возможных реализациях блок 42 оценки движения не выводит полный набор информации движения для PU в блок 56 энтропийного кодирования. Вместо этого блок 42 оценки движения может сигнализировать информацию движения для PU со ссылкой на информацию движения для другого PU. Например, блок 42 оценки движения может определить, что информация движения для PU аналогична информации движения для соседнего PU. В этой реализации блок 42 оценки движения может указывать значение индикатора в структуре синтаксиса, ассоциированной с PU, и значение индикатора указывает видеодекодеру 30, что информация движения для PU является такой же, как или может быть получена из информации движения для соседнего PU. В другой реализации блок 42 оценки движения может идентифицировать в структуре синтаксиса, ассоциированной с PU, кандидата предсказанного вектора движения и разность векторов движения (MVD), которые ассоциированы с соседним PU. MVD указывает разность между вектором движения для PU и указанным кандидатом предсказанного вектора движения, ассоциированного с соседним PU. Видеодекодер 30 может использовать указанного кандидата предсказанного вектора движения и MVD для определения вектора движения для PU.
Как описано выше, блок 41 предсказания может генерировать список кандидатов предсказанных векторов движения для каждого PU в CU. Один или более списков кандидатов предсказанных векторов движения могут включать в себя один или более исходных кандидатов предсказанных векторов движения и один или более дополнительных кандидатов предсказанных векторов движения, полученных из одного или более исходных кандидатов предсказанных векторов движения.
Блок 46 внутреннего предсказания в блоке 41 предсказания может выполнять декодирование с внутренним предсказанием для текущего блока видеоданных относительно одного или более соседних блоков, которые находятся в том же изображении или сегменте, что и текущий блок, который должен быть декодирован, чтобы обеспечить пространственное сжатие. Следовательно, в качестве альтернативы внешнему предсказанию (как описано выше), выполняемому блоком 42 оценки движения и блоком 44 компенсации движения, блок 46 внутреннего предсказания может выполнять внутреннее предсказание для текущего блока. В частности, блок 46 внутреннего предсказания может определять режим внутреннего предсказания для кодирования текущего блока. В некоторых возможных реализациях блок 46 внутреннего предсказания может (например) использовать различные режимы внутреннего предсказания для кодирования текущего блока во время отдельного выполнения кодирования, и блок 46 внутреннего предсказания (или блок 40 выбора режима в некоторых возможных реализациях) может выбирать соответствующий режим внутреннего предсказания из протестированных режимов.
После того, как блок 41 предсказания генерирует блок предсказания текущего блока видеоданных посредством внешнего предсказания или внутреннего предсказания, видеокодер 20 вычитает блок предсказания из текущего блока видеоданных для получения остаточного блока видеоданных. Остаточные видеоданные в остаточном блоке могут быть включены в один или более блоков TUs и применяться к блоку 52 обработки преобразования. Блок 52 обработки преобразования выполняет преобразование, например, дискретное косинусное преобразование (DCT) или концептуально подобное преобразование (например, дискретное синусоидальное преобразование DST) для преобразования остаточных видеоданных в остаточные коэффициенты преобразования. Блок 52 обработки преобразования может преобразовывать остаточные видеоданные из данных пиксельной области в данные области преобразования (например, частотной области).
Блок 52 обработки преобразования может передавать полученные коэффициенты преобразования в блок 54 квантования. Блок 54 квантования квантует коэффициенты преобразования, чтобы дополнительно уменьшить скорость передачи битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена путем регулировки параметра квантования. В некоторых возможных реализациях блок 54 квантования затем может сканировать матрицу, включающую в себя квантованный коэффициент преобразования. Альтернативно, блок 56 энтропийного кодирования может выполнять сканирование.
После квантования блок 56 энтропийного кодирования может выполнять энтропийное кодирование квантованного коэффициента преобразования. Например, блок 56 энтропийного кодирования может выполнять контекстно-адаптивное декодирование с переменной длиной слова (CAVLC), контекстно-адаптивное двоичное арифметическое декодирование (CABAC), контекстно-адаптивное двоичное арифметическое декодирование на основании синтаксиса (SBAC), энтропийное декодирование разделения вероятностного интервала (PIPE) или другой способ или технологию энтропийного кодирования. Блок 56 энтропийного кодирования может дополнительно выполнять энтропийное кодирование вектора движения и другого элемента синтаксиса текущего декодируемого сегмента видео. После того, как блок 56 энтропийного кодирования выполняет энтропийное кодирование, закодированный битовый поток может быть передан в видеодекодер 30 или сохранен для последующей передачи или для анализа видеодекодером 30.
Блок 56 энтропийного кодирования может кодировать информацию, указывающую, согласно технологии в настоящем изобретении, выбранный режим внутреннего предсказания. Видеокодер 20 может включать в себя в передаваемом битовом потоке, данные конфигурации, которые могут включать в себя множество таблиц индексов режима внутреннего предсказания и множество модифицированных таблиц индексов режима внутреннего предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования различных блоков и указания MPM, таблицы индексов режима внутреннего предсказания и модифицированной таблицы индексов режима внутреннего предсказания, которые используются для каждого из контекстов.
Блок 58 обратного квантования и блок 60 обратного преобразования, соответственно, выполняют обратное квантование и обратное преобразование для восстановления остаточного блока в пиксельной области, которые будут впоследствии использоваться в качестве опорного блока опорного кадра. Блок 44 компенсации движения может вычислить опорный блок путем добавления остаточного блока и блока предсказания в одном опорном кадре в одном из списков опорных изображений. Блок 44 компенсации движения также может применять один или более фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить значение суб-целого пикселя для оценки движения. Сумматор 62 складывает восстановленный остаточный блок и блок предсказания с компенсацией движения, сгенерированный блоком 44 компенсации движения, чтобы сгенерировать опорный блок, и опорный блок сохраняется в памяти 64 опорных изображений. Опорный блок может использоваться блоком 42 оценки движения и блоком 44 компенсации движения в качестве опорного блока для выполнения внешнего предсказания на блоке в последующем видеокадре или изображении.
Фиг.3 является блок-схемой видеодекодера 30 согласно варианту осуществления настоящего изобретения. В возможной реализации, показанной на фиг. 3, видеодекодер 30 включает в себя блок 80 энтропийного декодирования, блок 81 предсказания, блок 86 обратного квантования, блок 88 обратного преобразования, сумматор 90 и память 92 опорных изображений. Блок 81 предсказания включает в себя блок 82 компенсации движения и блок 84 внутреннего предсказания. В некоторых возможных реализациях видеодекодер 30 может выполнять примерный процесс декодирования, обратный процессу кодирования, описанному в отношении видеокодера 20 на фиг. 4.
Во время декодирования видеодекодер 30 принимает из видеокодера 20 закодированный битовый поток видеоданных, который представляет блок видеоданных закодированного сегмента видео и ассоциированные элементы синтаксиса. Блок 80 энтропийного кодирования видеодекодера 30 выполняет энтропийное декодирование битового потока для генерирования квантованного коэффициента, вектора движения и других элементов синтаксиса. Блок 80 энтропийного кодирования передает вектор движения и другие элементы синтаксиса в блок 81 предсказания. Видеодекодер 30 может принимать элементы синтаксиса на уровне сегмента видео и/или уровне блока видеоданных.
Когда сегмент видео декодируется в сегмент (I) с внутренним декодированием, блок 84 внутреннего предсказания блока 81 предсказания может генерировать данные предсказания блока видеоданных текущего сегмента видео на основании сигнализированного режима внутреннего предсказания и данных ранее декодированного блока текущего кадра или изображения.
Когда видеоизображение декодируется во внешне-декодированный сегмент (например, B-сегмент, P-сегмент или GPB-сегмент), блок 82 компенсации движения блока 81 предсказания генерирует блок предсказания блок видеоданных текущего видеоизображения на основании вектора движения и других элементов синтаксиса, которые принимаются из блока 80 энтропийного кодирования. Блок предсказания может быть сгенерирован из одного опорного изображения в одном из списков опорных изображений. Видеодекодер 30 может использовать технологию формирования по умолчанию для построения списка опорных изображений (список 0 и список 1) на основании опорного изображения, хранящемся в памяти 92 опорных изображений.
Блок 82 компенсации движения определяет информацию предсказания блока видеоданных текущего сегмента видео путем синтаксического анализа вектора движения и других элементов синтаксиса и использует информацию предсказания для генерирования блока предсказания текущего декодируемого блока видеоданных. Например, блок 82 компенсации движения использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннего предсказания или внешнего предсказания) для декодирования блока видеоданных сегмента видео, типа сегмента с внешним предсказанием (например, B-сегмент, P-сегмент или GPB-сегмент), информацию формирования одного или более списков опорных изображений сегмента, вектор движения каждого внешне-кодированного блока видеоданных сегмента, статус внешнего предсказания каждого внешне-декодированного блока видеоданных сегмента и другую информацию для декодирования блока видеоданных в текущем сегменте видео.
Блок 82 компенсации движения может дополнительно выполнять интерполяцию с использованием фильтра интерполяции. Блок 82 компенсации движения может использовать, например, фильтр интерполяции, используемый видеокодером 20 во время кодирования блока видеоданных для вычисления значения интерполяции суб-целого пикселя опорного блока. В настоящем изобретении блок 82 компенсации движения может определять, на основании принятых элементов синтаксиса, фильтр интерполяции, используемый видеокодером 20 и использовать фильтр интерполяции для генерирования блока предсказания.
Если PU кодируется посредством внешнего предсказания, блок 82 компенсации движения может генерировать список кандидатов векторов движения для PU. Битовый поток может включать в себя данные для идентификации позиции выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанного вектора движения для PU. После генерирования кандидата предсказанного вектора движения для PU, блок 82 компенсации движения может генерировать блок предсказания изображения для PU на основании одного или более опорных блоков, указанных информацией движения для PU. Опорный блок для PU может быть расположен в изображении по времени, отличном от изображения по времени PU. Блок 82 компенсации движения может определять информацию движения для PU на основании выбранной информации движения в списке кандидатов предсказанных векторов движения для PU.
Блок 86 обратного квантования выполняет обратное квантование (например, деквантование) квантованных коэффициентов преобразования, которые обеспечивается в битовом потоке и декодируется блоком 80 энтропийного кодирования. Процесс обратного квантования может включать в себя: определение степени квантования на основании параметра квантования, вычисляемого видеокодером 20 для каждого блока видеоданных в сегменте видео, и аналогичным образом определение степени обратного квантования, которое должно применяться. Блок 88 обратного преобразования выполняет обратное преобразование (например, обратное DCT, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования) коэффициентов преобразования для генерирования остаточного блока пиксельной области.
После того, как блок 82 компенсации движения сгенерирует блок предсказания текущего блок видеоданных на основании вектора движения и других элементов синтаксиса, видеодекодер 30 добавляет остаточный блок из блока 88 обратного преобразования и соответствующий блок предсказания, сгенерированный блоком 82 компенсации движения, чтобы составить декодированный блок видеоданных. Сумматор 90 представляет собой один или более компонентов, которые выполняют операцию суммирования. При необходимости, для фильтрации декодированного блока может дополнительно использоваться фильтр деблокинга с целью удаления артефакта блокинга. Может дополнительно использоваться другой контурный фильтр (в цикле декодирования или после него) для сглаживания пикселей, или может быть повышено качество видео другим способом. Затем декодируются блок видеоданных в данном кадре или изображении сохраняется в памяти 92 опорных изображений. Память 92 опорных изображений хранит опорное изображение, используемое для последующей компенсации движения. Память 92 опорных изображений дополнительно хранит декодированное видео для последующего отображения на устройстве отображения, таком как устройство 32 отображения на фиг.1.
Как описано выше, технологии в настоящем изобретении относятся, например, к внешнему декодированию. Следует понимать, что технологии в настоящем изобретении могут выполняться любым видеокодером, описанным в настоящем изобретении, и видеодекодер включает в себя (например) видеокодер 20 и видеодекодер 30, показанные и описанные на фиг.1 - фиг. 3. В частности, в возможной реализации блок 41 предсказания, описанный на фиг. 2, может выполнять конкретную технологию, описанную ниже, когда внешнее предсказание выполняется во время кодирования блока видеоданных. В другой возможной реализации блок 81 предсказания, описанный на фиг.3, может выполнять конкретную технологию, описанную ниже, когда внешнее предсказание выполняется во время декодирования блока видеоданных. Следовательно, ссылка на общий «видеокодер» или «видеодекодер» может включать в себя видеокодер 20, видеодекодер 30 или другой блок кодирования видео или блок декодирования.
Фиг.4 является блок-схемой модуля внешнего предсказания согласно варианту осуществления настоящего изобретения. Модуль 121 внешнего предсказания, например, может включать в себя блок 42 оценки движения и блок 44 компенсации движения. Взаимосвязь между PU и CU изменяется в зависимости от стандарта кодирования сжатия видео. Модуль 121 внешнего предсказания может разделить текущий CU на PUs согласно множеству шаблонов разделения. Например, модуль 121 внешнего предсказания может разделить текущий CU на PUs в соответствии с шаблонами разделения 2N x 2N, 2N x N, N x 2N и N x N. В другом варианте осуществления текущий CU является текущим PU, и это не ограничено.
Модуль 121 внешнего предсказания может выполнять целочисленную оценку движения (Integer Motion Estimation, IME) и затем дробную оценку движения (Fraction Motion Estimation, FME) для каждого PU. Когда модуль 121 внешнего предсказания выполняет IME для PU, модуль 121 внешнего предсказания может искать одно или более опорных изображений для опорного блока для PU. После нахождения опорного блока для PU, модуль 121 внешнего предсказания может генерировать вектор движения, который указывает, с точностью до целого числа, пространственное смещение между PU и опорным блоком для PU. Когда модуль 121 внешнего предсказания выполняет FME для PU, модуль 121 внешнего предсказания может улучшить вектор движения, сгенерированный путем выполнения IME для PU. Вектор движения, сгенерированный выполнением FME для PU, может иметь суб-целое значение точности (например, точность ½ пикселя, точность ¼ пикселя). После генерирования вектора движения для PU, модуль 121 внешнего предсказания может генерировать блок предсказания изображения для PU, используя вектор движения для PU.
В некоторых возможных реализациях, в которых модуль 121 внешнего предсказания передает информацию движения для PU в декодер в режиме AMVP, модуль 121 внешнего предсказания может генерировать список кандидатов предсказанных векторов движения для PU. Список кандидатов векторов движения может включать в себя один или более исходных кандидатов предсказанных векторов движения и один или более дополнительных кандидатов предсказанных векторов движения, полученных из одного или более исходных кандидатов предсказанных векторов движения. После генерирования списка кандидатов предсказанных векторов движения для PU, модуль 121 внешнего предсказания может выбрать кандидата предсказанного вектора движения из списка кандидатов предсказанных векторов движения и сгенерировать разность векторов движения (MVD) для PU. MVD для PU может указывать разность между вектором движения, указанным выбранным кандидатом предсказанного вектора движения, и вектором движения, сгенерированным для PU посредством IME и FME. В этих возможных реализациях модуль 121 внешнего предсказания может выводить индекс кандидата предсказанного вектора движения, идентифицирующий позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения. Модуль 121 внешнего предсказания может дополнительно выводить MVD для PU. Ниже подробно описывается возможная реализация режима расширенного предсказания вектора движения (AMVP) на фиг.6 в этом варианте настоящего изобретения.
В дополнение к выполнению IME и FME на PU для генерирования информации движения для PU, модуль 121 внешнего предсказания может дополнительно выполнить операцию объединения (Merge) для PU. Когда модуль 121 внешнего предсказания выполняет операцию объединения для PU, модуль 121 внешнего предсказания может сгенерировать список кандидатов предсказанных векторов движения для PU. Список кандидатов предсказанных векторов движения для PU может включать в себя один или более исходных кандидатов предсказанных векторов движения и один или более дополнительных кандидатов предсказанных векторов движения, полученных из одного или более исходных кандидатов предсказанных векторов движения. Исходные кандидаты предсказанных векторов движения в списке кандидатов предсказанных векторов движения могут включать в себя один или более пространственных кандидатов предсказанных векторов движения и временных кандидатов предсказанных векторов движения. Пространственный кандидат предсказанного вектора движения может указывать информацию движения для другого PU в текущем изображении. Временной кандидат предсказанного вектора движения может быть основан на информации движения для соответствующего PU в изображении, отличном от текущего изображения. Временной кандидат предсказанного вектора движения может называться временным предсказанием вектора движения (TMVP).
После генерирования списка кандидатов предсказанных векторов движения модуль 121 внешнего предсказания может выбрать один кандидат предсказанного вектора движения из списка кандидатов предсказанных векторов движения. Затем модуль 121 внешнего предсказания может генерировать блок предсказания изображения для PU на основании опорного блока, указанного информацией движения для PU. В режиме объединения информация движения для PU может быть такой же, как информация движения, указанная выбранным кандидатом предсказанного вектора движения. Фиг.5, описанный ниже, представляет собой блок-схему алгоритма примера режима объединения.
После генерирования блока предсказания изображения для PU посредством IME и FME и генерирования блока предсказания изображения для PU посредством операции объединения, модуль 121 внешнего предсказания может выбрать блок предсказания изображения, сгенерированный посредством выполнения операции FME, или блок предсказания изображения, сгенерированный при выполнении операции объединения. В некоторых возможных реализациях, модуль 121 внешнего предсказания может выбирать блок предсказания изображения для PU путем синтаксического анализа стоимостей искажения скорости для блока предсказания изображения, сгенерированного посредством выполнения операции FME, и блока предсказания изображения, сгенерированного посредством выполнения операции объединения.
После того, как модуль 121 внешнего предсказания выбрал блок предсказания изображения PU, сгенерированного путем разделения текущего CU в соответствии с каждым шаблоном разделения (в некоторых реализациях, после того, как CTU блок дерева кодирования разделен на CUs, CU больше не разделяется на более мелкие PUs, и в этом случае, PU эквивалентен CU), модуль 121 внешнего предсказания может выбрать шаблон разделения для текущего CU. В некоторых реализациях модуль 121 внешнего предсказания может выбирать шаблон разделения для текущего CU путем синтаксического анализа стоимости искажения скорости выбранного блока предсказания изображения PU, сгенерированного путем разделения текущего CU согласно каждому шаблону разделения. Модуль 121 внешнего предсказания может выводить блок предсказания изображения, ассоциированный с PU, который принадлежит выбранному шаблону разделения, в модуль 102 остаточного генерирования. Модуль 121 внешнего предсказания может выводить синтаксический элемент информации движения для PU, который принадлежит выбранному шаблону разделения, в модуль 116 энтропийного кодирования.
На показанной на фиг. 4 схеме, модуль 121 внешнего предсказания включает в себя IME модули 180A-180N (вместе именуемые «IME модуль 180»), FME модули 182A-182N (все вместе именуемые как «FME модуль 182»), модули 184A-184N объединения ( вместе именуемые «модуль 184 объединения»), модули 186A-186N принятия решений по шаблону PU (вместе именуемые «модуль 186 принятия решения по шаблону PU») и модуль 188 принятия решения по шаблону CU (и могут дополнительно выполнить процесс принятия решения по шаблону CTU к CU).
IME модуль 180, FME модуль 182 и модуль 184 объединения могут соответственно выполнять операцию IME, операцию FME и операцию объединения PU текущего CU. На схеме, показанной на фиг.4, модуль 121 внешнего предсказания описан как включающий в себя отдельный IME модуль 180, отдельный FME модуль 182 и отдельный модуль 184 объединения для каждого PU в каждом шаблоне разделения для CU. В другой возможной реализации модуль 121 внешнего предсказания не включает в себя отдельный IME модуль 180, отдельный FME модуль 182 или отдельный модуль 184 объединения для каждого PU в каждом шаблоне разделения CU.
Как показано на схеме на фиг.4, IME модуль 180A, FME модуль 182A и модуль 184A объединения могут соответственно выполнять операцию IME, операцию FME и операцию объединения для PU, сгенерированного путем разделения CU в соответствии с шаблоном разделения 2N x 2N. Модуль 186A принятия решения по шаблону PU может выбрать один из блоков изображения предсказания, сгенерированных IME модулем 180A, FME модулем 182A и модулем 184A объединения.
IME модуль 180B, FME модуль 182B и модуль 184B объединения могут соответственно выполнять операцию IME, операцию FME и операцию объединения для левого PU, сгенерированного путем разделения CU согласно шаблону разделения N x 2N. Модуль 186B принятия решения по шаблону PU может выбрать один из блоков предсказанного изображения, сгенерированных IME модулем 180B, FME модулем 182B и модулем 184B объединения.
IME модуль 180C, FME модуль 182C и модуль 184C объединения могут соответственно выполнять операцию IME, операцию FME и операцию объединения для правого PU, сгенерированного путем разделения CU согласно шаблону разделения N x 2N. Модуль 186C принятия решения по шаблону PU может выбрать один из блоков предсказанного изображения, сгенерированных IME модулем 180C, FME модулем 182C и модулем 184C объединения.
IME модуль 180N, FME модуль 182N и модуль 184N объединения могут соответственно выполнять операцию IME, операцию FME и операцию объединения на нижнем правом PU, сгенерированном путем разделения CU согласно шаблону разделения N x N. Модуль 186N принятия решения по шаблону PU может выбрать один из блоков предсказанного изображения, сгенерированных IME модулем 180N, FME модулем 182N и модулем 184N объединения.
Модуль 186 принятия решения по шаблону PU может выбрать блок предсказания изображения путем синтаксического анализа стоимости искажения скорости для множества возможных блоков изображения предсказания и выбрать блок предсказания изображения, который обеспечивает оптимальную стоимость искажения скорости в данном сценарии декодирования. Например, для приложения с ограниченной полосой пропускания, модуль 186 принятия решения шаблона PU может предпочесть блок предсказания изображения, для которого увеличена степень сжатия, и для другого приложения модуль 186 принятия решения шаблона PU может предпочесть блок предсказания изображения, для которого улучшено качество восстановленного видео. После того, как модуль 186 принятия решения шаблона PU выбирает блоки изображения предсказания для PU текущего CU, модуль 188 принятия решения шаблона CU выбирает шаблон разделения для текущего CU и выводит блок предсказания изображения и информацию движения для PU, который принадлежит выбранному шаблону разделения.
Фиг.5 является блок-схемой алгоритма примера режима объединения согласно варианту осуществления настоящего изобретения. Видеокодер (например, видеокодер 20) может выполнять операцию 200 объединения. В другой возможной реализации видеокодер может выполнять операцию объединения, отличную от операции 200 объединения. Например, в другой возможной реализации видеокодер может выполнять операцию объединения, где видеокодер выполняет больше или меньше этапов, чем этапы операции 200 объединения, или этапы, отличные от этапов операции 200 объединения. В другой возможной реализации видеокодер может выполнять этапы операции 200 объединения в разном порядке или параллельно. Кодер может дополнительно выполнить операцию 200 объединения PU, закодированном в режиме пропуска (skip).
После того, как видеокодер начинает операцию 200 объединения, видеокодер может сгенерировать список кандидатов предсказанных векторов движения для текущего PU (202). Видеокодер может генерировать список кандидатов предсказанных векторов движения для текущего PU различными способами. Например, видеокодер может генерировать согласно одной из примерных технологий, описанных ниже со ссылкой на фиг. 8 - фиг. 12, список кандидатов предсказанных векторов движения для текущего PU.
Как описано выше, список кандидатов предсказанных векторов движения для текущего PU может включать в себя временный кандидат предсказанного вектора движения. Временный кандидат предсказанного вектора движения может указывать информацию движения для соответствующего совместно размещенного (co-located) PU во временной области. Совместно размещенный PU может быть пространственно расположен на том же позиции, что и текущий PU в кадре изображения в качестве опорного изображения вместо текущего изображения. В настоящем изобретении, опорное изображение, включающее в себя соответствующий PU временной области может называться взаимосвязанным опорным изображением. В настоящем изобретении индекс опорного изображения соответствующего опорного изображения может упоминаться как взаимосвязанный индекс опорного изображения. Как описано выше, текущее изображение может быть ассоциировано с одним или более списками опорных изображений (например, списком 0 и списком 1). Индекс опорного изображения может указывать на опорное изображение, указав позицию опорного изображения в списке опорных изображений. В некоторых возможных реализациях текущее изображение может быть ассоциировано с объединенным списком опорных изображений.
В некоторых видеокодерах, соответствующий индекс опорного изображения является индексом опорного изображения для PU, который занимает позицию источника опорного индекса, ассоциированную с текущим PU. В этих видеокодерах, позиция источника опорного индекса, ассоциированная с текущим PU, примыкает слева от текущего PU или примыкает к верхней части текущего PU. В настоящем изобретении, если блок изображения, ассоциированный с PU, включает в себя конкретную позицию, PU может «занимать» конкретную позицию. В этих видеокодерах, видеокодер может использовать индекс 0 опорного изображения, если позиция источника опорного индекса недоступна.
Однако, в примере позиция источника опорного индекса, ассоциированная с текущим PU, находится в пределах текущего CU. В этом примере PU, которая занимает позицию источника опорного индекса, ассоциированную с текущим PU, может считаться доступным, если PU находится выше или слева от текущего CU. В этом случае видеокодеру может потребоваться информация движения доступа к другому PU текущего CU для определения опорного изображения, включающего в себя совместно размещенный PU. Таким образом, эти видеокодеры могут использовать информацию движения (например, индекс опорного изображения) для PU, принадлежащего к текущему CU, чтобы генерировать временный кандидат предсказанного вектора движения для текущего PU. Другими словами, эти видеокодеры могут использовать информацию движения для PU, принадлежащего текущему CU, для генерирования временного кандидата предсказанного вектора движения. Таким образом, видеокодер может быть не в состоянии генерировать параллельно списки кандидатов предсказанного вектора движения для текущего PU и PU, который занимают позицию источника опорного индекса, ассоциированное с текущим PU.
Согласно технологии, в настоящем изобретении, видеокодер может явно установить соответствующий индекс опорного изображения, не обращаясь к индексу опорного изображения для любого другого PU. Таким образом, видеокодер может параллельно генерировать списки кандидатов предсказанных векторов движения для текущего PU и другого PU текущего CU. Поскольку видеокодер явно устанавливает соответствующий индекс опорного изображения, соответствующий индекс опорного изображения не основан на информации движения для любого другого PU текущего CU. В некоторых возможных вариантах осуществления, в которых видеокодер явно устанавливает соответствующий индекс опорного изображения, видеокодер всегда может установить соответствующий индекс опорного изображения на фиксированный заданный индекс опорного изображения (например, 0). Таким образом, видеокодер может генерировать временной кандидат предсказанного вектора движения на основании информации движения для совместно расположенного PU в опорном изображении, указанном заданным индексом опорного изображения, где временной кандидат предсказанного вектора движения может быть включен в список кандидатов предсказанных векторов движения для текущего CU.
В возможной реализации, в которой видеокодер явно устанавливает соответствующий индекс опорного изображения, видеокодер может явно сигнализировать соответствующий индекс опорного изображения в структуре синтаксиса (например, заголовок изображения, заголовок сегмента, APS или другая структура синтаксиса). В этом возможной реализации видеокодер может сигнализировать соответствующий индекс опорного изображения для каждого LCU (а именно, CTU), CU, PU, TU или субблока другого типа в декодер. Например, видеокодер может сигнализировать соответствующий индекс опорного кадра для каждого PU CU равен «1».
В некоторых возможных вариантах осуществления, соответствующий индекс опорного изображения может быть установлен косвенно, а не явно. В этих возможных реализациях, видеокодер может генерировать каждый временный кандидат предсказанного вектора движения в списке кандидатов предсказанных векторов движения для PU текущего CU, используя информацию движения для PU в опорном изображении, указанный индексом опорного изображения для PU, который занимает позиции за пределами текущего CU даже, если эти позиции не являются строго смежными с текущим PU.
После генерирования списка кандидатов предсказанных векторов движения для текущего PU видеокодер может сгенерировать блок предсказания изображения, ассоциированный с кандидатом предсказанного вектора движения в списке кандидатов предсказанных векторов движения (204). Видеокодер может определять информацию движения для текущего PU на основании информации движения указанного кандидата предсказанного вектора движения, и затем генерировать блок предсказания изображения на основании одного или более опорных блоков, указанных информацией движения для текущего PU, чтобы сгенерировать блок предсказания изображения, ассоциированный с кандидатом предсказанного вектора движения. Затем видеокодер может выбрать одного кандидата предсказанного вектора движения из списка кандидатов предсказанных векторов движения (206). Видеокодер может выбирать кандидата предсказанного вектора движения различными способами. Например, видеокодер может выбрать одного кандидата предсказанного вектора движения путем синтаксического анализа стоимости искажения скорости каждого блока предсказания изображения, ассоциированного с кандидатами предсказанных векторов движения.
После выбора кандидата предсказанного вектора движения, видеокодер может вывести индекс кандидата предсказанного вектора движения (208). Индекс кандидата предсказанного вектора движения может указывать позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения. В некоторых возможных реализациях предсказанный индекс кандидата вектора движения может быть представлен как «merge_idx».
Фиг.6 является блок-схемой алгоритма примера режима расширенного предсказания вектора движения (AMVP) согласно варианту осуществления настоящего изобретения. Видеокодер (например, видеокодер 20) может выполнять операцию 210 AMVP.
После того, как видеокодер начитает операцию 210 AMVP, видеокодер может сгенерировать один или более векторов движения для текущего PU (211). Видеокодер может выполнять целочисленную оценку движения и дробную оценку движения, чтобы генерировать вектор движения для текущего PU. Как описано выше, текущее изображение может быть ассоциировано с двумя списками опорных изображений (список 0 и список 1). Если текущий PU предсказывается однонаправленно, видеокодер может генерировать вектор движения списка 0 или вектор движения списка 1 для текущего PU. Вектор движения списка 0 может указывать на пространственное смещение между блоком изображения, соответствующий текущему PU, и опорным блоком, в опорном изображении в списке 0. Вектор движения списка 1 может указывать на пространственное смещение между блоком изображения, соответствующий текущему PU, и опорным блоком в опорном изображении в списке 1. Если текущий PU предсказан двунаправленно, то видеокодер могут генерировать вектор движения списка 0 и вектор движения списка 1 для текущего PU.
После генерирования одного или более векторов движения для текущего PU видеокодер может генерировать блок предсказания изображения для текущего PU (212). Видеокодер может генерировать блок предсказания изображения для текущего PU на основании одного или более опорных блоков, указанных одним или более векторами движения для текущего PU.
Дополнительно, видеокодер может генерировать список кандидатов предсказанных векторов движения для текущего PU (213). Видеокодер может генерировать список кандидатов предсказанных векторов движения для текущего PU различными способами. Например, видеокодер может генерировать список кандидатов предсказанных векторов движения для текущего PU согласно одной или более из возможных реализаций, описанных ниже со ссылкой на фиг.8 - фиг.12. В некоторых возможных реализациях, когда видеокодер генерирует список кандидатов предсказанных векторов движения в операции 210 AMVP, список кандидатов предсказанных векторов движения может быть ограничен двумя кандидатами предсказанных векторов движения. Напротив, когда видеокодер генерирует список кандидатов предсказанных векторов движения в операции объединения, список кандидатов предсказанных векторов движения может включать в себя больше кандидатов предсказанных векторов движения (например, пять кандидатов предсказанных векторов движения).
После генерирования списка кандидатов предсказанных векторов движения для текущего PU видеокодер может генерировать одну или более разностей векторов движения (MVD) для каждого кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения (214). Видеокодер может определять разность между вектором движения, указанным кандидатом предсказанного вектора движения, и соответствующим вектором движения для текущего PU, чтобы сгенерировать разность векторов движения для кандидата предсказанного вектора движения.
Если текущий PU предсказывается однонаправленно, видеокодер может генерировать одиночную MVD для каждого кандидата предсказанного вектора движения. Если текущий PU предсказан двунаправленно, видеокодер может генерировать две MVDs для каждого кандидата предсказанного вектора движения. Первая MVD может указывать разность между вектором движения, указанным кандидатом предсказанного вектора движения, и вектором движения списка 0 для текущего PU. Вторая MVD может указывать разность между вектором движения, указанным кандидатом предсказанного вектора движения, и вектором движения списка 1 для текущего PU.
Видеокодер может выбрать один или более кандидатов предсказанных векторов движения из списка кандидатов предсказанных векторов движения (215). Видеокодер может выбирать один или более кандидатов предсказанных векторов движения различными способами. Например, видеокодер может выбрать кандидата предсказанного вектора движения, который соответствует минимальной ошибке, ассоциированного вектора движения вектора движения, который должен быть закодирован. Это может уменьшить количество битов, необходимых для представления разности вектора движения для кандидата предсказанного вектора движения.
После выбора одного или более кандидатов предсказанных векторов движения, видеокодер может выводить один или более индексов опорных изображений для текущего PU, один или более индексов кандидата вектора движения для текущего PU и одну или более разностей векторов движения для одного или более выбранных кандидатов предсказанных векторов движения (216).
В качестве примера, в котором текущее изображение ассоциировано с двумя списками опорных изображений (список 0 и списка 1) и текущий PU предсказан однонаправленно, видеокодер может выводить индекс опорного изображения («ref_idx_10») для списка 0 или индекса опорного изображения («ref_idx_11») для списка 1. Видеокодер может дополнительно выводить кандидат индекса предсказанного вектора движения («mvp_10_flag»), что указывает на позицию выбранного кандидата индекса предсказанного вектора движения списка 0 для текущего PU в списке кандидатов предсказанных векторов движения. В качестве альтернативы, видеокодер может выводить кандидата индекса предсказанного вектора движения («mvp_11_flag»), который указывает позицию выбранного кандидата предсказанного вектора движения вектора движения списка 1 для текущего PU в списке кандидатов предсказанных векторов движения. Видеокодер может дополнительно выводить MVD для вектора движения списка 0 или вектора движения списка 1 для текущего PU.
В качестве примера, в котором текущее изображение ассоциировано с двумя списками опорных изображений (список 0 и списка 1) и текущим PU, предсказанным двунаправленно, видеокодер может выводить индекс опорного изображения («ref_idx_10») для списка 0 и индексом опорного изображения ( «ref_idx_11») для списка 1. Видеокодер может дополнительно выводить кандидат индекса предсказанного вектора движения («mvp_10_flag»), что указывает на позицию выбранного кандидата предсказанного вектора движения списка 0 вектора движения для текущего PU в списке кандидатов предсказанных векторов движения. Дополнительно, видеокодер может выводить кандидата индекса предсказанного вектора движения («mvp_11_flag»), который указывает позицию выбранного кандидата предсказанного вектора движения списка 1 для текущего PU в списке кандидатов предсказанных векторов движения. Видеокодер может дополнительно выводить MVD для вектора движения списка 0 для текущего PU и MVD для вектора движения списка 1 для текущего PU.
Фиг.7 является блок-схемой алгоритма примера компенсации движения, выполняемой видеодекодером (например, видеодекодером 30) согласно варианту осуществления настоящего изобретения.
Когда видеодекодер выполняет операцию 220 компенсации движения, видеодекодер может принимать указание для выбранного кандидата предсказанного вектора движения для текущего PU (222). Например, видеодекодер может принимать кандидата индекса предсказанного вектора движения, указывающий позицию выбранного кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения для текущего PU.
Если информация движения для текущего PU кодируется в режиме AMVP и текущий PU предсказывается двунаправленно, видеодекодер может принимать первый кандидат индекса предсказанного вектора движения и второй кандидат индекса предсказанного вектора движения. Первый кандидат индекса предсказанного вектора движения указывает позицию выбранного кандидата предсказанного вектора движения вектора движения списка 0 для текущего PU в списке кандидатов предсказанных векторов движения. Второй кандидат индекса предсказанного вектора движения указывает позицию выбранного кандидата предсказанного вектора движения вектора движения списка 1 для текущего PU в списке кандидатов предсказанных векторов движения. В некоторых возможных реализациях один элемент синтаксиса может использоваться для идентификации двух кандидатов индексов предсказанных векторов движения.
Дополнительно, видеодекодер может генерировать список кандидатов предсказанных векторов движения для текущего PU (224). Видеодекодер может сгенерировать список кандидатов предсказанных векторов движения для текущего PU различными способами. Например, видеодекодер может генерировать список кандидатов предсказанных векторов движения для текущего PU с использованием технологий, описанных ниже со ссылкой на фиг.8-фиг.12. Когда видеодекодер генерирует временный кандидат предсказанного вектора движения для списка кандидатов предсказанных векторов движения, видеодекодер может явно или неявно установить индекс опорного изображения, идентифицирующий опорное изображение, включающее в себя совместно расположенный PU, как описан выше со ссылкой на фиг.5.
После генерирования списка кандидатов предсказанных векторов движения для текущего PU, видеодекодер может определять информацию движения для текущего PU на основании информации движения, указанной одним или более выбранными кандидатами предсказанных векторов движения в списке кандидатов предсказанных векторов движения для текущего PU (225). Например, если информация движения для текущего PU кодируется в режиме объединения, информация движения для текущего PU может быть такой же, как информация движения, указанная выбранным кандидатом предсказанного вектора движения. Если информация движения для текущего PU кодируется в режиме AMVP, видеодекодер может восстановить один или более векторов движения для текущего PU, используя один или более векторов движения, указанных одним или более выбранным кандидатом предсказанного вектора движения, и одним или более указанными MVDs в битовом потоке. Индекс опорного кадра и идентификатор направления предсказания текущего PU может быть таким же, как индексы опорного изображения и идентификаторы направления предсказания одного или более выбранных кандидатов предсказанных векторов движения. После определения информации движения для текущего PU, видеодекодер может сгенерировать блок предсказания изображения для текущего PU на основании одного или более опорных блоков, указанных информацией движения для текущего PU (226).
Фиг. 8 является схемой примера блока кодирования (CU) и блока изображения смежной позиции, ассоциированного с блоком кодирования, согласно варианту осуществления настоящего изобретения. Фиг.8 является схемой для иллюстрации CU 250 и схемой позиций 252A-252E кандидатов предсказанного вектора движения, ассоциированных с CU 250. В настоящем изобретении позиции 252A-252E кандидатов предсказанного вектора движения вместе могут называться позицией 252 кандидата предсказанного вектора движения. Позиция 252 кандидата предсказанного вектора движения представляет собой пространственный кандидат предсказанного вектора движения, который находится в том же изображении, что и CU 250. Позиция 252A кандидата предсказанного вектора движения находится слева от CU 250. Позиция 252В кандидата предсказанного вектора движения расположена над CU 250. Позиция 252C кандидата предсказанного вектора движения расположена в верхнем правом углу CU 250. Позиция 252D кандидата предсказанного вектора движения находится в нижнем левом углу CU 250. Позиция 252Е кандидата предсказанного вектора движения расположена в верхнем левом углу CU 250. Фиг.8 показывает схему реализацию способа, которым модуль 121 внешнего предсказания и модуль 162 компенсации движения могут генерировать списки кандидатов предсказанных векторов движения. Далее реализация поясняется со ссылкой на модуль 121 внешнего предсказания. Однако следует понимать, что модуль 162 компенсации движения может реализовывать ту же технологию и, следовательно, генерировать тот же самый список кандидатов предсказанных векторов движения. В этом варианте осуществления настоящего изобретения блок изображения, в котором находится позиция кандидата вектора движения, упоминается как опорный блок. Дополнительно, опорный блок включает в себя пространственный опорный блок, например, блоки изображения, в которых расположены 252A-252E, и включает в себя временный опорный блок, например, блок изображения, в котором расположен совместно расположенный блок, или пространственный смежный блок изображения совместно расположенного блока.
Фиг.9 является блок-схемой алгоритма примера формирования списка кандидатов предсказанных векторов движения согласно варианту осуществления настоящего изобретения. Технология на фиг. 9 описывается на основании списка, включающего в себя пять кандидатов предсказанных векторов движения, но технология, описанная в этой спецификации, может альтернативно использоваться со списком другого размера. Каждый из пяти кандидатов предсказанных векторов движения может иметь индекс (например, от 0 до 4). Технология на фиг.9 описывается на основании обычного видеодекодера. Обычным видеодекодером может быть, например, видеокодер (например, видеокодер 20) или видеодекодер (например, видеодекодер 30).
Чтобы восстановить список кандидатов предсказанных векторов движения согласно реализации на фиг.9, видеодекодер сначала рассматривает четыре пространственных кандидатов предсказанных векторов движения (902). Четыре пространственных кандидатов предсказанных векторов движения могут включать в себя позиции 252A, 252B, 252C и 252D кандидатов предсказанных векторов движения. Четыре пространственных кандидатов предсказанных векторов движения могут соответствовать информации движения для четырех PUs, которые расположены в том же изображении, что и текущий CU (например, CU 250). Видеодекодер может рассматривать четыре пространственных кандидатов предсказанных векторов движения в списке в указанном порядке. Например, сначала может быть рассмотрена позиция 252A кандидата предсказанного вектора движения. Если позиция 252A кандидата предсказанного вектора движения доступна, позиция 252A кандидата предсказанного вектора движения может быть назначена индексу 0. Если позиция 252A кандидата предсказанного вектора движения недоступна, видеодекодер может не добавить позицию 252A кандидата предсказанного вектора движения в список кандидатов предсказанных векторов движения. Позиция кандидата предсказанного вектора движения может быть недоступна по разным причинам. Например, если позиция кандидата предсказанного вектора движения не находится в текущем изображении, позиция кандидата предсказанного вектора движения может быть недоступна. В другой возможной реализации, если позиция кандидата предсказанного вектора движения подвергается внутреннему предсказанию, позиция кандидата предсказанного вектора движения может быть недоступна. В другой возможной реализации, если позиция кандидата предсказанного вектора движения находится в сегменте, отличном от сегмента текущего CU, позиция кандидата предсказанного вектора движения может быть недоступна.
После рассмотрения позиции 252A кандидата предсказанного вектора движения, видеодекодер может рассмотреть позицию 252B кандидата предсказанного вектора движения. Если позиция 252B кандидата предсказанного вектора движения доступна и отличается от позиции 252A кандидата предсказанного вектора движения, видеодекодер может добавить позицию 252B кандидата предсказанного вектора движения в список кандидатов предсказанных векторов движения. В этом конкретном контексте термин «одинаковый» или «другой» означает, что информация движения, ассоциированная с позициями кандидатов предсказанных векторов движения, одинакова или отличается. Следовательно, если две позиции кандидатов предсказанных векторов движения имеют одинаковую информацию движения, то две позиции кандидатов предсказанных векторов движения считаются одинаковыми; или, если две позиции кандидатов предсказанных векторов движения имеют разную информацию движения, то две позиции кандидатов предсказанных векторов движения считаются разными. Если позиция 252A кандидата предсказанного вектора движения недоступна, видеодекодер может назначить позицию 252B кандидата предсказанного вектора движения индексу 0. Если позиция 252A кандидата предсказанного вектора движения доступна, видеодекодер может назначить позицию 252 кандидата предсказанного вектора движения индексу 1. Если позиция 252B кандидата предсказанного вектора движения недоступна или такая же, как позиция 252A кандидата предсказанного вектора движения, то видеодекодер пропускает операцию добавления позиции 252B кандидата предсказанного вектора движения в список кандидатов предсказанных векторов движения.
Аналогичным образом, видеодекодер рассматривает позицию 252C кандидата предсказанного вектора движения, чтобы определить, следует ли добавлять позицию 252C кандидата предсказанного вектора движения в список. Если позиция 252C кандидата предсказанного вектора движения доступна и отличается от позиций 252B и 252A кандидатов предсказанного вектора движения, видеодекодер может назначить позицию 252C кандидата предсказанного вектора движения следующему доступному индексу. Если позиция 252C кандидата предсказанного вектора движения недоступна или совпадает, по меньшей мере, с одной из позиций 252A и 252B кандидата предсказанного вектора движения, видеодекодер не добавляет позицию 252C кандидата предсказанного вектора движения в список кандидатов предсказанных векторов движения. Затем видеодекодер рассматривает позицию 252D кандидата предсказанного вектора движения. Если позицию 252D кандидата предсказанного вектора движения доступна и отличается от позиций 252A, 252B и 252C кандидатов предсказанного вектора движения, видеодекодер может назначить позицию 252D кандидата предсказанного вектора движения следующему доступному индексу. Если позиция 252D кандидата предсказанного вектора движения недоступна или является такой же, как, по меньшей мере, одна из позиций 252A, 252B и 252C кандидатов предсказанного вектора движения, видеодекодер не добавляет позицию 252D кандидата предсказанного вектора движения в список кандидатов предсказанного вектора движения. В вышеупомянутой реализации в целом описывается пример, в котором рассматриваются позиции 252A-252D кандидатов предсказанных векторов движения для определения, должны ли быть включены в список кандидатов предсказанных векторов движения. Однако в некоторых реализациях все позиции 252A-252D кандидатов предсказанных векторов движения могут быть сначала добавлены в список кандидатов предсказанных векторов движения, и затем повторяющаяся позиция кандидата предсказанного вектора движения удаляется из списка кандидатов предсказанных векторов движения.
После того, как видеодекодер рассматривает первые четыре пространственных кандидатов предсказанных векторов движения, или список кандидатов предсказанных векторов движения может включать в себя четыре пространственных кандидатов предсказанных вектора движения, или список может включать в себя менее четырех пространственных кандидатов предсказанных векторов движения. Если список включает в себя четыре пространственный кандидатов предсказанных векторов движения (904, да), видеодекодер рассматривает временной кандидат предсказанного вектора движения (906). Временной кандидат предсказанного вектора движения может соответствовать информации движения для совместно расположенного PU изображения, отличного от текущего изображения. Если временной кандидат предсказанного вектора движения доступен и отличается от первых четырех пространственных кандидатов предсказанных векторов движения, видеодекодер назначает временной кандидат предсказанного вектора движения индексу 4. Если временной кандидат предсказанного вектора движения недоступен или является таким же, как один из первых четырех пространственных кандидатов предсказанных векторов движения, видеодекодер не добавляет временной кандидат предсказанного вектора движения к списку кандидатов предсказанных векторов движения. Следовательно, после того, как видеодекодер рассматривает временной кандидат предсказанного вектора движения (906), список кандидатов предсказанных векторов движения может включать в себя пять кандидатов предсказанных векторов движения (первые четыре пространственных кандидата предсказанных векторов движения, рассматриваемых на 902, и рассматриваемый временной кандидат предсказанного вектора движения на этапе 906) или может включать в себя четыре кандидата предсказанных векторов движения (первые четыре пространственных кандидатов предсказанных векторов движения рассматриваются на этапе 902). Если список кандидатов предсказанных векторов движения включает в себя пять кандидатов предсказанных векторов движения (908, да), видеодекодер завершает формирование списка.
Если список кандидатов предсказанных векторов движения включает в себя четыре кандидата предсказанных вектора движения (908, нет), видеодекодер может рассматривать пятый пространственный кандидат предсказанного вектора движения (910). Пятый пространственный кандидат предсказанного вектора движения может (например) соответствовать позиции 252E кандидата предсказанного вектора движения. Если позиция 252Е кандидата предсказанного вектора движения доступна и отличается от позиций 252A, 252B, 252C и 252D кандидатов предсказанных векторов движения, видеодекодер может добавить пятый пространственный кандидат предсказанного вектора движения в список кандидатов предсказанных векторов движения и назначить пятый пространственный кандидат предсказанного вектора движения индексу 4. Если кандидат предсказанного вектора движения на позиции 252E недоступен или совпадает с кандидатами предсказанных векторов движения на позициях 252A, 252B, 252C и 252D кандидатов предсказанных векторов движения, видеодекодер может не добавлять кандидата предсказанного вектора движения на позиции 252Е к списку кандидатов предсказанных векторов движения. Следовательно, после того, как пятый пространственный кандидат предсказанного вектора движения рассматривается (910), список может включать в себя пять кандидатов предсказанных векторов движения (первые четыре пространственных кандидатов предсказанных векторов движения рассматриваются на этапе 902 и пятый пространственный кандидат предсказанного вектора движения рассматривается на этапе 910) или может включать в себя четыре кандидата предсказанных векторов движения (первые четыре пространственных кандидатов предсказанных векторов движения рассматриваются на этапе 902).
Если список кандидатов предсказанных векторов движения включает в себя пять кандидатов предсказанных векторов движения (912, да), видеодекодер завершает формирование списка кандидатов предсказанных векторов движения. Если список кандидатов предсказанных векторов движения включает в себя четыре кандидата предсказанных векторов движения (912, нет), видеодекодер добавляет искусственно сгенерированный кандидат предсказанного вектора движения (914) до тех пор, пока список не будет включать в себя пять кандидатов предсказанных векторов движения (916, да).
Если список включает в себя менее четырех пространственных кандидатов предсказанных векторов движения (904, нет) после того, как видеодекодер рассматривает первые четыре пространственных кандидатов предсказанных вектора движения, видеодекодер может рассматривать пятый пространственный кандидат предсказанного вектора движения (918). Пятый пространственный кандидат предсказанного вектора движения может (например) соответствовать позиции 252E кандидата предсказанного вектора движения. Если кандидат предсказанного вектора движения на позиции 252E доступен и отличается от существующих кандидатов предсказанных векторов движения в списке кандидатов предсказанных векторов движения, видеодекодер может добавить пятый пространственный кандидат предсказанного вектора движения в список кандидатов предсказанных векторов движения, и назначить пятый пространственный кандидат предсказанного вектора движения следующему доступному индексу. Если кандидат предсказанного вектора движения на позиции 252E недоступен или совпадает с одним из существующих кандидатов предсказанных векторов движения в списке кандидатов предсказанных векторов движения, видеодекодер может не добавлять кандидат предсказанного вектора движения на позиции 252E в список кандидатов предсказанных векторов движения. Затем видеодекодер может рассмотреть временного кандидата предсказанного вектора движения (920). Если временной кандидат предсказанного вектора движения доступен и отличается от существующих кандидатов предсказанных векторов движения в списке предсказанных векторов движения, видеодекодер может добавить временной кандидат предсказанного вектора движения в список кандидатов предсказанных векторов движения и назначить временной кандидат предсказанного вектора движения следующему доступному индексу. Если временной кандидат предсказанного вектора движения недоступен или совпадает с одним из существующих кандидатов предсказанных векторов движения в списке кандидатов предсказанных векторов движения, видеодекодер может не добавлять временной кандидат предсказанного вектора движения в список кандидатов предсказанных векторов движения.
Если список кандидатов предсказанных векторов движения включает в себя пять кандидатов предсказанных векторов движения (922, да) после того, как учитываются пятый пространственный кандидат предсказанного вектора движения (на этапе 918) и временной кандидат предсказанного вектора движения (на этапе 920), видеодекодер завершает генерирование списка кандидатов предсказанных векторов движения. Если список кандидатов предсказанных векторов движения включает в себя менее пяти кандидатов предсказанных векторов движения (922, нет), видеодекодер добавляет искусственно сгенерированный кандидат предсказанного вектора движения (914) до тех пор, пока список не будет включать в себя пять кандидатов предсказанных векторов движения (916, да).
Согласно технологиям в настоящем изобретении, дополнительный кандидат объединения предсказанного вектора движения может быть искусственно сгенерирован после пространственного кандидата предсказанного вектора движения и временного кандидата предсказанного вектора движения, так что размер списка кандидатов объединения предсказанных векторов движения является фиксированным и равен заданному количеству (например, пяти в возможной реализации на фиг.9) кандидатов объединения предсказанных векторов движения. Дополнительный кандидат объединения предсказанных векторов движения может включать в себя примеры кандидата объединенного предсказанного вектора движения с двойным предсказанием (кандидат предсказанного вектора 1 движения), масштабированного кандидата объединения предсказанных векторов движения с двойным предсказанием (кандидат предсказанного вектора 2 движения) и кандидат объединения предсказанных векторов движения нулевого вектора/AMVP (кандидат предсказанного вектора 3 движения).
Фиг.10 является схемой примера добавления объединенного кандидата вектора движения в список кандидатов предсказанных векторов движения в режиме объединения согласно варианту осуществления настоящего изобретения. Объединенный кандидат объединения предсказанных векторов движения с двойным предсказанием может быть сгенерирован путем объединения исходных кандидатов объединения предсказанных векторов движения. В частности, два исходных кандидата предсказанных векторов движения (которые имеют mvL0 и refIdxL0 или mvL1 и refIdxL1) могут использоваться для генерирования кандидата объединения предсказанных векторов движения с двойным предсказанием. На фиг.10, два кандидата предсказанных векторов движения включены в список исходных кандидатов объединения предсказанных векторов движения. Типом предсказания одного кандидата предсказанного вектора движения является однонаправленное предсказание с использованием списка 0, и типом предсказания другого кандидата предсказанного вектора движения является однонаправленное предсказание с использованием списка 1. В этой возможной реализации mvL0_A и ref0 берутся из списка 0 и mvL1_B и ref0 берутся из списка 1. Затем может быть сгенерирован кандидат объединения предсказанных векторов движения с двунаправленным предсказанием (который имеет mvL0_A и ref0 в списке 0 и mvL1_B и ref0 в списке 1), и проверяется, отличается ли кандидат объединения предсказанных векторов движения с двунаправленным предсказанием от существующего кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения. Если кандидат объединения предсказанных векторов движения с двойным предсказанием отличается от существующего кандидата предсказанного вектора движения, видеодекодер может добавить кандидат объединения предсказанных векторов движения с двойным предсказанием в список кандидатов предсказанных векторов движения.
Фиг.11 является схемой примера добавления масштабированного кандидата вектора движения в список кандидатов предсказанных векторов движения в режиме объединения согласно варианту осуществления настоящего изобретения. Масштабированный кандидат объединения предсказанных векторов движения с двойным предсказанием может быть сгенерирован путем масштабирования исходного кандидата объединения предсказанных векторов движения. В частности, один исходный кандидат предсказанного вектора движения (который имеет mvLX и refIdxLX) может использоваться для генерирования кандидата объединения предсказанных векторов движения с двойным предсказанием. В возможной реализации, показанной на фиг. 11, два кандидата предсказанных векторов движения включены в список исходных кандидатов объединения предсказанных векторов движения. Типом предсказания одного кандидата предсказанного вектора движения является однонаправленное предсказание с использованием списка 0 и типом предсказания другого кандидата предсказанного вектора движения является однонаправленное предсказание с использованием списка 1. В этой возможной реализации mvL0_A и ref0 могут быть взяты из списка 0 и ref0 могут быть скопированы в список 1 и обозначены как опорный индекс ref0'. Затем mvL0'_A может быть вычислен путем масштабирования mvL0_A с помощью ref0 и ref0'. Масштабирование может зависеть от расстояния POC (Picture Order Count). Затем может быть сгенерирован кандидат объединения предсказанных векторов движения с двойным предсказанием (который имеет mvL0_A и ref0 в списке 0 и mvL0'_A и ref0 'в списке 1), и проверяется, повторяется ли кандидат объединения предсказанных векторов движения с двойным предсказанием. Если кандидат объединения предсказанного вектора движения объединения с двойным предсказанием не повторяется, то он может быть добавлен в список кандидатов объединения предсказанных векторов движения.
Фиг.12 является схемой примера добавления нулевого вектора движения к списку кандидатов предсказанных векторов движения в режиме объединения согласно варианту осуществления настоящего изобретения. Кандидат объединения нулевого вектора предсказанного вектора движения может быть сгенерирован путем объединения нулевого вектора и опорного индекса, на который можно ссылаться. Если кандидат объединения нулевого вектора предсказанного вектора движения не повторяется, он может быть добавлен в список кандидатов объединения предсказанных векторов движения. Информация движения каждого сгенерированного кандидата объединения предсказанного вектора движения может сравниваться с информацией движения предшествующего кандидата предсказанного вектора движения в списке.
В возможной реализации, если вновь сгенерированный кандидат предсказанного вектора движения отличается от существующего кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения, сгенерированный кандидат предсказанного вектора движения добавляется в список кандидатов объединения предсказанных векторов движения. Процесс определения, отличается ли кандидат предсказанного вектора движения от существующего кандидата предсказанного вектора движения в списке кандидатов предсказанных векторов движения, иногда называется сокращением (pruning). Посредством сокращения каждый вновь сгенерированный кандидат предсказанного вектора движения может сравниваться с существующим кандидатом предсказанного вектора движения в списке. В некоторых возможных реализациях операция сокращения может включать в себя: сравнение одного или более новых кандидатов предсказанных векторов движения с существующим кандидатом предсказанным вектором движения в списке кандидатов предсказанных векторов движения и пропуск добавления нового кандидата предсказанного вектора движения, который совпадает с существующим кандидатом предсказанного вектора движения в списке кандидатов предсказанных векторов движения. В некоторых других возможных реализациях операция сокращения может включать в себя: добавление одного или более новых кандидатов предсказанных векторов движения в список кандидатов предсказанных векторов движения и затем удаление повторяющегося кандидата предсказанного вектора движения из списка.
В возможной реализации настоящего изобретения, во время внешнего предсказания способ предсказания информации движения блока изображения, подлежащего обработке, включает в себя: получение информации движения, по меньшей мере, одного блока изображения, вектор движения которого определяется в изображении в котором расположен блок изображения, подлежащий обработке, где, по меньшей мере, один блок изображения, вектор движения которого определяется, включает в себя блок изображения, который не является смежным с блоком изображения, подлежащий обработке, и чей вектор движения определяется; получение первой идентификационной информации, при этом первая идентификационная информация используется для определения целевой информации движения в информации движения, по меньшей мере, одного блока изображения, вектор движения которого определен; и предсказание информации движения блока изображения, подлежащий обработке, на основании целевой информации движения.
Фиг.13 является блок-схемой алгоритма примера обновления вектора движения при кодировании видео согласно варианту осуществления настоящего изобретения. Блок, подлежащий обработке, является блоком, который подлежит кодированию.
S1301: получить исходный вектор движения блока, подлежащего обработке, на основании предсказанного вектора движения блока, подлежащего обработке.
В возможной реализации, например, в режиме объединения, предсказанный вектор движения блока, подлежащего обработке, используется как исходный вектор движения блока, подлежащего обработке.
В другой возможной реализации, например, в режиме AMVP, предсказанный вектор движения блока, подлежащий обработке, и разность вектора движения блока, подлежащего обработке, складываются для получения исходного вектора движения блока, подлежащего обработке.
Предсказанный вектор движения блока, подлежащего обработке, может быть получен в соответствии со способами, показанными на фиг.9-фиг.12 в вариантах осуществления настоящего изобретения или любого из существующих способов получения предсказанного вектора движения в стандарте H.265 или в опорном режиме JEM. Это не ограничено. Разность вектора движения может быть получена путем использования блока, подлежащего обработке, в качестве опорного, выполнения оценки движения в пределах диапазона поиска, определенного на основании предсказанного вектора движения блока, подлежащего обработке, и вычисление разницы между вектором движения, полученным после оценки движения, блока, подлежащего обработке, и предсказанным вектором движения блока, подлежащего обработке.
Во время двунаправленного предсказания этот этап, в частности, включает в себя: получение прямого исходного вектора движения блока, подлежащего обработке, на основании прямого предсказанного вектора движения блока, подлежащего обработке, и получение обратного исходного вектора движения блока, подлежащего обработке, на основании обратного предсказанного вектора движения блока, подлежащего обработке.
S1302: получить блок предсказания блока, подлежащего обработке, на основании исходного вектора движения и одного или более заданных смещений вектора движения. В частности:
S13021: получение из опорного кадра, который является блоком, подлежащим обработке, и указанный индексом опорного кадра блока, подлежащего обработке, блока изображения, указанного исходным вектором движения блока, подлежащего обработке, и использовать полученный блок изображения в качестве временного блока предсказания блока, подлежащего обработке.
S13022: складывать исходный вектор движения и одно или более предварительно установленных смещений вектора движения блока, подлежащего обработке, чтобы получить один или более фактических векторов движения, где каждый фактический вектор движения указывает позицию поиска.
S13023: получить один или более кандидатов блоков предсказания на позициях поиска, указанных одним или более фактическими векторами движения, где каждая позиция поиска соответствует одному кандидату блока предсказания.
S13024: выбрать из одного или более кандидатов блоков предсказания кандидата блока предсказания с минимальной разницей пикселя из временного блока предсказания в качестве блока предсказания блока, подлежащего обработке.
Следует понимать, что разность пикселя может быть вычислена множеством способов. Например, может быть вычислена сумма абсолютных ошибок между пиксельными матрицами кандидата блока предсказания и временного блока предсказания, или может быть вычислена среднеквадратическая ошибка между пиксельными матрицами, или может быть вычислена корреляция между пиксельными матрицами. Это не ограничено.
Во время двунаправленного предсказания, этот этап конкретно включает в себя: получение из направленного вперед опорного кадра, который является блоком, подлежащего обработке, и указанный индексом направленного вперед опорного кадра блока, подлежащего обработке, первого блока изображения, указанный направленным вперед исходным вектором движения, блока, подлежащего обработке, получение из направленного назад опорного кадра, который является блоком, подлежащий обработке, и указанный индексом направленного назад опорного кадра блока, подлежащего обработке, второго блока изображения, указанный направленным назад исходным вектором движения блока, подлежащего обработке, и взвешивание первого блока изображения и второго блока изображения, чтобы получить временный блок предсказания блока, подлежащего обработке; сложение направленного вперед исходного вектора движения и одного или более заданных смещений вектора движения блока, подлежащего обработке, чтобы получить один или более направленных вперед фактических векторов движения, и сложение направленного назад исходного вектора движения и одного или более заданных смещений вектора движения блока, подлежащего обработке, чтобы получить один или более направленных назад фактических векторов движения; получение одного или более кандидатов блоков прямого предсказания на позициях поиска, указанных одним или более направленных вперед фактическими векторами движения, и получение одного или более кандидатов блоков обратного предсказания на позициях поиска, указанных одним или более направленными назад фактическими векторами движения; и выбор из одного или более кандидатов блоков прямого предсказания кандидата блока предсказания с минимальной разностью пикселя из временного блока предсказания в качестве блока прямого предсказания блока, подлежащего обработке, выбор из одного или более кандидатов блоков обратного предсказания кандидата блока предсказания с минимальной разницей пикселя из временного блока предсказания в качестве блока обратного предсказания блока, подлежащего обработке, и взвешивание блока прямого предсказания и блока обратного предсказания для получения блока предсказания блока, подлежащего обработке.
В качестве варианта, в возможной реализации, после этапа S13022, способ дополнительно включает в себя следующий этап:
S13025: когда разрешение вектора движения фактического вектора движения выше, чем заданная точность пикселей, округлить разрешение вектора движения фактического вектора движения, чтобы разрешение вектора движения обработанного фактического вектора движения была равна заданной точности пикселя. Заданная точность пикселя является точностью целого пикселя, точностью 1/2, точностью 1/4 или 1/8 пикселя, и это не ограничено.
Следует понимать, что разрешение вектора движения является точностью пикселя, которую можно различить вектором движения в процессе оценки движения или компенсации движения. Округление может включать в себя округление, округление в большую сторону, округление в меньшую сторону и т.п. на основании типа точности пикселей. Это не ограничено.
Например, округление может включать в себя следующие операции:
Горизонтальная составляющая или вертикальная составляющая вектора движения, подлежащего обработке, разлагается на целую часть a, десятичную часть b и знаковый бит. Очевидно, a является неотрицательным целым числом, b является дробной частью больше 0 и меньше 1 и знаковый бит положительный или отрицательный.
Можно предположить, что заданная точность пикселя равна точности N пикселей, где N больше 0 и меньше или равно 1 и c равно b, деленному на N.
Когда используется правило округления, десятичная часть c округляется; когда используется правило округления в большую сторону, целая часть c увеличивается на 1 и десятичная часть отбрасывается; когда используется правило округления в меньшую сторону, десятичная часть c отбрасывается. Можно предположить, что c, полученное после обработки, равно d.
Абсолютное значение обработанной составляющей вектора движения получается путем умножения d на N и последующего добавления a, и положительный или отрицательный знак составляющей вектора движения остается неизменным.
Например, для фактического вектора движения (1,25, 1), когда заданная точность пикселя является точностью целого пикселя, фактический вектор движения округляется для получения (1, 1). Для фактического вектора движения (–1,7, –1), когда заданная точность пикселя равна точности 1/4 пикселя, фактический вектор движения округляется для получения (–1,75, –1).
В качестве варианта, в другой возможной реализации, этап S13024 включает в себя: выбор из одного или более кандидатов блоков предсказания фактического вектора движения, соответствующего кандидату блока предсказания с минимальной разностью пикселя из временного блока предсказания; когда разрешение вектора движения выбранного фактического вектора движения выше, чем заданная точность пикселя, округление разрешения вектора движения выбранного фактического вектора движения так, чтобы разрешение вектора движения обработанного выбранного фактического вектора движения было равным заданной точности пикселя; и определение, что блок предсказания, соответствующий позиции, указанной обработанным выбранным фактическим вектором движения, является блоком предсказания блока, подлежащего обработке.
Аналогичным образом, заданная точность пикселя представляет собой точность целого пикселя, точность 1/2 пикселя, точность 1/4 пикселя или точность 1/8 пикселя. Это не ограничено. Для округления обратитесь к примеру в вышеупомянутой возможной реализации. Подробности снова не описываются.
Следует понимать, что более высокая точность пикселя обычно означает, что более сложная интерполяция (interpolation) пикселей должна выполняться в области поиска в процессе оценки движения или компенсации движения, чтобы сделать разрешение вектора движения равным заданной точности пикселя. Это может снизить сложность.
Фиг.14 является блок-схемой алгоритма примера обновления вектора движения при декодировании видео согласно варианту осуществления настоящего изобретения. Блок, подлежащий обработке, является блоком, который должен быть декодирован.
S1401: получить исходный вектор движения блока, подлежащего обработке, на основании предсказанного вектора движения блока, подлежащий обработке.
В возможной реализации, например, в режиме объединения, предсказанный вектор движения блока, подлежащего обработке, используется как исходный вектор движения блока, подлежащего обработке.
В другой возможной реализации, например, в режиме AMVP, предсказанный вектор движения блока, подлежащего обработке, и разность вектора движения блока, подлежащего обработке, сгладываются для получения исходного вектора движения блока, подлежащего обработке.
Предсказанный вектор движения блока, подлежащего обработке, может быть получен согласно способам, показанным на фиг.9-фиг.12 в вариантах осуществления настоящего изобретения или любого из существующих способов получения предсказанного вектора движения в стандарте H.265 или в опорном режиме JEM. Это не ограничено. Разность вектора движения может быть получена путем синтаксического анализа битового потока.
Во время двунаправленного предсказания этот этап, в частности, включает в себя: получение направленного вперед исходного вектора движения блока, подлежащего обработке, на основании направленного вперед предсказанного вектора движения блока, подлежащего обработке, и получение направленного назад исходного вектора движения блока, подлежащего обработке, на основании направленного назад предсказанного вектора движения блока, подлежащего обработке.
S1402: получить блок предсказания блока, подлежащего обработке, на основании исходного вектора движения и одного или более заданных смещений вектора движения. В частности:
S14021: получить из опорного кадра, который является блоком, подлежащий обработке, и указанный индексом опорного кадра блока, подлежащего обработке, блок изображения, указанный исходным вектором движения блока, подлежащего обработке, и использовать полученный блок изображения в качестве временного блока предсказания блока, подлежащего обработке.
S14022: сложить исходный вектор движения и одно или более заданных смещений вектора движения блока, подлежащего обработке, чтобы получить один или более фактических векторов движения, где каждый фактический вектор движения указывает позицию поиска.
S14023: получить один или более кандидатов блоков предсказания на позициях поиска, указанных одним или более фактическими векторами движения, где каждая позиция поиска соответствует одному кандидату блока предсказания.
S14024: выбрать из одного или более кандидатов блоков предсказания кандидата блока предсказания с минимальной разностью пикселя из временного блока предсказания в качестве блока предсказания блока, подлежащего обработке.
Следует понимать, что разность пикселя может быть вычислена множеством способов. Например, может быть вычислена сумма абсолютных ошибок между пиксельными матрицами кандидата блока предсказания и временного блока предсказания, или может быть вычислена среднеквадратическая ошибка между пиксельными матрицами, или может быть вычислена корреляция между пиксельными матрицами. Это не ограничено.
Во время двунаправленного предсказания, этот этап конкретно включает в себя: получение из направленного вперед опорного кадра, который является блоком, подлежащий обработке, и указанный индексом направленного вперед опорного кадра блока, подлежащего обработке, первого блока изображения, указанного направленным вперед исходным вектором движения, блока, подлежащего обработке, получение из направленного назад опорного кадра, который является блоком, подлежащего обработке, и указанный индексом направленного назад опорного кадра блока, подлежащего обработке, второго блока изображения, указанный направленным назад исходным вектором движения блока, подлежащего обработке, и взвешивание первого блока изображения и второго блока изображения, чтобы получить временный блок предсказания блока, подлежащий обработке; сложение направленного вперед исходного вектора движения и одного или более заданных смещений вектора движения блока, подлежащего обработке, чтобы получить один или более направленных вперед фактических векторов движения, и сложение направленного назад исходного вектора движения и одного или более заданных смещений вектора движения блока, подлежащего обработке, чтобы получить один или более направленных назад фактических векторов движения; получение одного или более кандидатов блоков прямого предсказания на позициях поиска, указанных одним или более направленными вперед фактическими векторами движения, и получение одного или более кандидатов блоков обратного предсказания на позициях поиска, указанных одним или более направленными назад фактическими векторами движения; и выбор из одного или более кандидатов блоков прямого предсказания кандидата блока предсказания с минимальной разностью пикселя из временного блока предсказания в качестве блока прямого предсказания блока, подлежащего обработке, выбор из одного или более кандидатов блоков обратного предсказания кандидата блока предсказания с минимальной разницей пикселя из временного блока предсказания в качестве блока обратного предсказания блока, подлежащего обработке, и взвешивание блока прямого предсказания и блока обратного предсказания для получения блока предсказания блока, подлежащего обработке.
В качестве варианта, в возможной реализации, после этапа S14022, способ дополнительно включает в себя следующий этап:
S14025: когда разрешение вектора движения фактического вектора движения выше, чем заданная точность пикселя, округлить разрешение вектора движения фактического вектора движения так, чтобы разрешение вектора движения обработанного фактического вектора движения равнялось заданной точности пикселя. Заданная точность пикселя представляет собой точность целого пикселя, точность 1/2, точность 1/4 или 1/8 пикселя, и это не ограничено.
В качестве варианта, в другой возможной реализации, этап S14024 включает в себя: выбор из одного или более кандидатов блоков предсказания фактического вектора движения, соответствующего кандидату блока предсказания с минимальной разностью пикселя, из временного блока предсказания; когда разрешение вектора движения выбранного фактического вектора движения выше, чем заданная точность пикселя, округление разрешения вектора движения выбранного фактического вектора движения так, чтобы разрешение вектора движения обработанного выбранного фактического вектора движения было равным заданной точности пикселя; и определение, что блок предсказания, соответствующий позиции, указанной обработанным выбранным фактическим вектором движения, является блоком предсказания блока, подлежащего обработке.
Аналогичным образом, заданная точность пикселя представляет собой точность целого пикселя, точность 1/2 пикселя, точность 1/4 пикселя или точность 1/8 пикселя. Это не ограничено. Для округления обратитесь к примеру в вышеупомянутой возможной реализации. Подробности снова не описываются.
Используя несколько конкретных вариантов осуществления, нижеследующее подробно описывает реализацию обновления вектора движения. Следует понимать, что, как описано в способе кодирования на фиг.13 и способе декодирования на фиг.14, обновление вектора движения согласовано на кодере и декодере. Следовательно, следующие варианты осуществления описываются только для кодера или декодера. Следует понимать, что, когда описание обеспечивается для кодера, реализация декодера остается согласованной с реализацией кодера; когда описание предоставлено для декодера, реализация в кодере остается согласованной с реализацией декодера.
Вариант 1 осуществления
Как показано на фиг.15, текущий блок декодирования является первым блоком декодирования, и получается информация предсказания движения текущего блока декодирования. Предполагается, что предсказателями вектора движения вперед и назад текущего блока декодирования являются соответственно (–10, 4) и (5, 6), POC изображения, в котором расположен текущий блок декодирования, равен 4, POCs опорных изображений и указанные значениями индексов опорных изображений, соответственно равны 2 и 6. Следовательно, POC, соответствующий текущему блоку декодирования, равен 4, POC, соответствующий блоку прямого предсказания опорного изображения, равен 2, и POC, соответствующий блоку обратного предсказания опорного изображения, равен 6.
Прямое предсказание и обратное предсказание выполняются отдельно для текущего блока декодирования, чтобы получить исходный блок прямого предсказания декодирования (ForwardpredictionBlock, FPB) и исходный блок обратного предсказания декодирования (BackwardPredictionBlock, BPB) текущего блока декодирования, и предполагается, что исходный блок прямого предсказания декодирования и исходный блок обратного предсказания декодирования являются соответственно FPB1 и BPB1. Первый блок предсказания декодирования (DecodingPredictionBlock, DPB) текущего блока декодирования получается путем выполнения взвешенного суммирования FPB1 и BPB1, и предполагается, что является DPB1.
(-10, 4) и (5, 6), используются в качестве опорных входных данных предсказателей вектора движения вперед и назад, и поиск движения с первой точностью выполняется отдельно на блоке прямого предсказания опорного изображения и блоке обратного предсказания опорного изображения. В этом случае первая точность составляет 1/2 пикселя в диапазоне 1 пиксель. Первый блок предсказания декодирования DPB1 используется в качестве опорного. Соответствующие новые блоки прямого и обратного предсказания декодирования, полученные в каждом поиске движения, сравниваются с первым блоком предсказания декодирования DPB1, чтобы получить новый блок предсказания декодирования с минимальной разностью от DPB1, и предсказатели вектора движения вперед и назад, соответствующие новому блоку предсказания декодирования, используются в качестве целевых предсказателей вектора движения и предполагаются равными (–11, 4) и (6, 6) соответственно.
Целевые предсказатели вектора движения обновляются до (–11, 4) и (6, 6), выполняются прямое предсказание и обратное предсказание в первом блоке декодирования на основании целевых предсказателей вектора движения, целевой блок предсказания декодирования получен путем выполнения взвешенного суммирования полученных новых блоков прямого и обратного предсказания декодирования и предполагается равным DPB2, и блок предсказания декодирования текущего блока декодирования обновляется до DPB2.
Следует отметить, что, когда поиск движения с первой точностью выполняется для блока прямого предсказания опорного изображения и блока обратного предсказания опорного изображения, первая точность может быть любой заданной точностью, например, может быть точностью целочисленного пикселя, точностью 1/2, точностью 1/4 или точностью 1/8 пикселя.
Вариант 2 осуществления
Как показано на фиг.16, текущий блок декодирования является первым блоком декодирования, и получается информация предсказанного движения текущего блока декодирования. Предполагается, что предсказательом вектора движения вперед текущего блока декодирования является (–21, 18), POC изображения, в котором расположен текущий блок декодирования, равен 4 и POC, который является опорным изображением и указан значением индекса опорного кадра, равен 2. Таким образом, POC, соответствующий текущему блоку декодирования, равен 4, и POC, соответствующий блоку прямого предсказания опорного изображения, равен 2.
Прямое предсказание выполняется для текущего блока декодирования, чтобы получить исходный блок прямого предсказания декодирования текущего блока декодирования, и предполагается, что исходный блок прямого предсказания декодирования является FPB1. В этом случае FPB1 используется в качестве первого блока предсказания декодирования текущего блока декодирования, и первый блок предсказания декодирования обозначается как DPB1.
(-21, 18) используются в качестве опорных входных данных предсказателя вектора движения вперед, и поиск движения с первой точностью выполняются на блоке прямого предсказания опорного изображения. В этом случае первая точность составляет 1 пиксель в диапазоне 5 пикселей. Первый блок предсказания декодирования DPB1 используется в качестве опорного. Соответствующий новый блок прямого предсказания декодирования, полученный в каждом поиске движения, сравнивается с первым блоком предсказания декодирования DPB1, чтобы получить новый блок предсказания декодирования с минимальной разностью от DPB1, и предсказатель вектора движения вперед, соответствующий новому блоку предсказания декодирования, используется в качестве целевого предсказателя вектора движения и предполагается равным (–19, 19).
Целевой предсказатель вектора движения обновляется до (–19, 19), прямое предсказание выполняется для первого блока декодирования на основании целевого предсказателя вектора движения, полученный новый блок прямого предсказания декодирования используется в качестве целевого блока предсказания декодирования, и предполагается, равным DPB2, и блок предсказания декодирования текущего блока декодирования обновляется до DPB2.
Следует отметить, что, когда поиск движения с первой точностью выполняется для блока прямого предсказания опорного изображения и блока обратного предсказания опорного изображения, первая точность может быть любой заданной точностью, например, может быть точностью целочисленного пикселя, точностью 1/2, точностью 1/4 или точностью 1/8 пикселя.
Вариант 3 осуществления
Как показано на фиг.17A и фиг.17B, текущий блок кодирования является первым блоком кодирования, и получается информация движения предсказания текущего блока кодирования. Предполагается, что предсказателями вектора движения вперед и назад текущего блока кодирования являются соответственно (–6, 12) и (8, 4), POC изображения, в котором расположен текущий блок кодирования, равен 8, и POCs, которые являются опорными изображениями и указаны значениями индексов опорных изображений, соответственно равны 4 и 12. Следовательно, POC, соответствующий текущему блоку кодирования, равен 4, POC, соответствующий блоку прямого предсказания опорного изображения, равен 4, и POC, соответствующий блоку обратного предсказания опорного изображения, равен 12.
Прямое предсказание и обратное предсказание выполняются отдельно для текущего блока кодирования, чтобы получить исходный блок прямого предсказания кодирования и исходный блок обратного предсказания кодирования текущего блока кодирования и предполагается, что исходный блок прямого предсказания кодирования и исходный блок обратного предсказания кодирования являются соответственно FPB1 и BPB1. Первый блок предсказания кодирования текущего блока кодирования получается путем выполнения взвешенного суммирования FPB1 и BPB1, и предполагается, что является DPB1.
(-6, 12) и (8, 4) используются в качестве опорных входных данных предсказателей вектора движения вперед и назад, и поиск движения с первой точностью выполняются отдельно на блоке прямого предсказания опорного изображения и блоке обратного предсказания опорного изображения. Первый блок предсказания кодирования DPB1 используется в качестве опорного. Соответствующие новые блоки прямого и обратного предсказания кодирования, полученные в каждом поиске движения, сравниваются с первым блоком предсказания кодирования DPB1, чтобы получить новый блок предсказания кодирования с минимальным отличием от DPB1, и предсказатели вектора движения вперед и назад, соответствующие новому блоку предсказания кодирования, используются в качестве целевых предсказателей вектора движения и предполагаются равными (–11, 4) и (6, 6) соответственно.
Целевые предсказатели вектора движения обновляются до (–11, 4) и (6, 6), прямое и обратное предсказание выполняется для первого блока кодирования на основании целевых предсказателей вектора движения, целевой блок предсказания кодирования получен путем выполнения взвешенного суммирования полученных новых блоков прямого и обратного предсказания кодирования и предполагается, что является DPB2, и блок предсказания кодирования текущего блока кодирования обновляется до DPB2.
Затем (–11, 4) и (6, 6) используются в качестве опорных входных данных предсказателей вектора движения вперед и назад, и поиск движения с первой точностью выполняется отдельно для блока прямого предсказания опорного изображения и блока обратного предсказания опорного изображения. Блок предсказания кодирования DPB2 текущего блока кодирования используется в качестве опорного. Соответствующие новые блоки прямого и обратного предсказания кодирования, полученные в каждом поиске движения, сравниваются с первым блоком предсказания кодирования DPB2, чтобы получить новый блок предсказания кодирования с минимальным отличием от DPB2, и предсказатели вектора движения вперед и назад, соответствующие новому блоку предсказания кодирования, используются в качестве новых целевых предсказателей вектора движения и предполагаются равными (–7, 11) и (6, 5) соответственно.
Затем целевые предсказатели вектора движения обновляются до (–7, 11) и (6, 5), прямое и обратное предсказание выполняется для первого блока кодирования на основании последних целевых предсказателей вектора движения, целевой блок предсказания кодирования получают путем выполнения взвешенного суммирования полученных новых блоков прямого и обратного предсказания кодирования и предполагается, что является DPB3, и блок предсказания кодирования текущего блока кодирования обновляется до DPB3.
Кроме того, целевые предсказатели вектора движения могут непрерывно обновляться согласно вышеизложенному способу, и количество циклов не ограничено.
Следует отметить, что, когда поиск движения с первой точностью выполняется для блока прямого предсказания опорного изображения и блока обратного предсказания опорного изображения, первая точность может быть любой заданной точностью, например, может быть точностью целого пикселя, точностью 1/2, точностью 1/4 или точностью 1/8 пикселя.
Следует понимать, что в некоторых возможных вариантах осуществления цикл заканчивается при выполнении условия. Например, цикл заканчивается, когда разница между DPBn и DPBn – 1 меньше порогового значения, где n является положительным целым числом, большее 2.
Вариант 4 осуществления
Как показано на фиг.18, текущий блок декодирования является первым блоком декодирования, и получается информация предсказанного движения текущего блока декодирования. Предполагается, что значения предсказания вектора движения вперед и назад текущего блока декодирования равны соответственно (–10, 4) и (5, 6), разности векторов движения вперед и назад текущего блока декодирования равны (–2, 1) и ( 1, 1) соответственно, POC изображения, в котором расположен текущий блок декодирования, равен 4, POCs, которые являются опорными изображениями и указаны значениями индексов опорных изображений, соответственно равны 2 и 6. Следовательно, POC, соответствующий текущему блоку декодирования, равен 4, POC, соответствующий блоку прямого предсказания опорного изображения, равен 2, и POC, соответствующий блоку обратного предсказания опорного изображения, равен 6.
Прямое предсказание и обратное предсказание выполняются отдельно для текущего блока декодирования, чтобы получить исходный блок прямого предсказания декодирования (FPB) и исходный блок обратного предсказания декодирования (BPB) текущего блока декодирования, и предполагается, что исходный блок прямого предсказания декодирования и исходный блок обратного предсказания декодирования, соответственно, равны FPB1 и BPB1. Первый блок предсказания декодирования (DPB) текущего блока декодирования получается путем выполнения взвешенного суммирования FPB1 и BPB1, и предполагается, что является DPB1.
Сумма предсказателя вектора движения вперед и разности вектора движения вперед и сумма предсказателя вектора движения назад и разности вектора движения назад, а именно, (–10, 4) + (- 2, 1) = (- 12, 5) и (5, 6) + (1, 1) = (6, 7), используются для вектора движения вперед и вектора движения назад соответственно, и поиск движения с первой точностью отдельно выполняется на блоке прямого предсказания опорного изображения и блоке обратного предсказания опорного изображения. В этом случае первая точность составляет 1/4 пикселя в диапазоне 1 пиксель. Первый блок предсказания декодирования DPB1 используется в качестве опорного. Соответствующие новые блоки прямого и обратного предсказания декодирования, полученные в каждом поиске движения, сравниваются с первым блоком предсказания декодирования DPB1, чтобы получить новый блок предсказания декодирования с минимальным отличием от DPB1, и векторы движения вперед и назад, соответствующие новому блоку предсказания декодирования, используются в качестве целевых предсказателей вектора движения и предполагаются равными (–11, 4) и (6, 6) соответственно.
Целевые векторы движения обновляются до (–11, 4) и (6, 6), прямое и обратное предсказание выполняется отдельно для первого блока декодирования на основании целевых векторов движения, целевой блок предсказания декодирования получается посредством выполнения взвешенного суммирования полученных новых блоков прямого и обратного предсказания декодирования и предполагается, что является DPB2, и блок предсказания декодирования текущего блока декодирования обновляется до DPB2.
Фиг.19 является блок-схемой алгоритма способа получения вектора движения кодером согласно варианту осуществления настоящего изобретения. Способ включает в себя следующие этапы.
S1901: определить опорный блок блока, подлежащего обработке.
Опорный блок был описан выше со ссылкой на фиг.8. Следует понимать, что опорный блок не только включает в себя пространственно смежный блок подлежащего обработке блока, показанного на фиг. 8, но также включает в себя другой фактический или виртуальный блок изображения, который имеет заданную временную или пространственную корреляцию с подлежащим обработке блоком.
Следует понимать, что полезные эффекты этого варианта осуществления настоящего изобретения отражены в сценарии, в котором вектор движения опорного блока, блока, подлежащего обработке, обновляется. Более конкретно, опорный блок имеет исходный вектор движения и один или более заданных смещений вектора движения, исходный вектор движения опорного блока получается на основании предсказанного вектора движения опорного блока, и блок предсказания опорного блока получается на основании исходного вектора движения и одного или более заданных смещений вектора движения.
В частности на фиг.13 в настоящем изобретении проиллюстрирован вариант осуществления процесса обновления вектора движения опорного блока и получения исходного вектора движения. Следует понимать, что опорный блок в варианте осуществления, показанный на фиг.19, является блоком, подлежащим обработке, в варианте осуществления, проиллюстрированный на фиг.13.
В некоторых возможных реализациях определение опорного блока, подлежащего обработке блока, в частности, включает в себя: выбор из одного или более кандидатов опорных блоков блока, подлежащего обработке, кандидата опорного блока с минимальной стоимостью искажения скорости в качестве опорного блока, блока, подлежащего обработке.
В некоторых возможных вариантах осуществления, после определения опорного блока, блока, подлежащего обработке, в одном или более кандидатов опорных блоков, блока, подлежащего обработке, причем способ дополнительно включает в себя: кодирование идентификационной информации определенного опорного блока в одном или более кандидатов опорных блоков в битовом потоке.
S1902: использовать исходный вектор движения опорного блока в качестве предсказанного вектора движения блока, подлежащего обработке.
В некоторых возможных реализациях, например, в режиме объединения, после этапа S1902, способ дополнительно включает в себя: использование предсказанного вектора движения блока, подлежащего обработке, в качестве исходного вектора движения блока, обрабатываемого блока. В качестве альтернативы, на этапе S1902 исходный вектор движения опорного блока используется в качестве исходного вектора движения, блока, подлежащего обработке.
В другой возможной реализации, например, в режиме AMVP, после этапа S1902 способ дополнительно включает в себя: сложение предсказанного вектора движения блока, подлежащего обработке, и разности векторов движения блока, подлежащего обработке, чтобы получить исходный вектор движения блока, подлежащего обработке.
Фиг.20 является блок-схемой алгоритма способа получения вектора движения декодером согласно варианту осуществления настоящего изобретения. Способ включает в себя следующие этапы.
S2001: определить опорный блок блока, подлежащего обработке.
Следует понимать, что полезные эффекты этого варианта осуществления настоящего изобретения отражены в сценарии, в котором вектор движения опорного блока, блока, подлежащего обработке, обновляется. Более конкретно, опорный блок имеет исходный вектор движения и один или более заданных смещений вектора движения, исходный вектор движения опорного блока получается на основании предсказанного вектора движения опорного блока, и блок предсказания опорного блока получается на основании исходного вектора движения и одного или более заданных смещений вектора движения.
В частности, на фиг.14 настоящего изобретения проиллюстрирован процесс обновления вектора движения опорного блока и получения исходного вектора движения. Следует понимать, что опорный блок в варианте осуществления, показанный на фиг.20, является блоком, подлежащим обработке, в варианте осуществления, проиллюстрированном на фиг.14.
В некоторых возможных вариантах реализации определение опорного блока обработанного блока, в частности, включает в себя: синтаксический анализ битового потока для получения второй идентификационной информации; и определение опорного блока, блока, подлежащего обработке, на основании второй идентификационной информации.
S2002: использовать исходный вектор движения опорного блока в качестве предсказанного вектора движения, блока, подлежащего обработке.
В возможной реализации, например, в режиме объединения, после этапа S2002, способ дополнительно включает в себя: использование предсказанного вектора движения блока, подлежащего обработке, в качестве исходного вектора движения блока, подлежащего обработке. В качестве альтернативы, на этапе S2002, исходный вектор движения опорного блока используется в качестве исходного вектора движения, блока, подлежащего обработке.
В другой возможной реализации, например, в режиме AMVP, после этапа S2002 способ дополнительно включает в себя: сложение предсказанного вектора движения блока, подлежащего обработке, и разности вектора движения блока, подлежащего обработке, чтобы получить исходный вектор движения блока, подлежащего обработке, где разность вектора движения блока, подлежащего обработке, получается путем синтаксического анализа первой идентификационной информации в битовом потоке.
В вышеупомянутых реализациях исходный вектор движения перед обновлением используется для замены фактического вектора движения и используется для предсказания последующего блока кодирования или блока декодирования. Этап предсказания может выполняться для последующего блока кодирования или блока декодирования до завершения обновления фактического вектора движения. Это обеспечивает повышение эффективности кодирования за счет обновления вектора движения и устраняет задержку обработки.
Фиг.21 является блок-схемой устройства 2100 для получения вектора движения согласно варианту осуществления настоящего изобретения. Устройство 2100 включает в себя:
модуль 2101 определения, выполненный с возможностью определять опорный блок блока, подлежащего обработке, в котором опорный блок и блок, подлежащий обработке, имеет заданную временную или пространственную корреляцию, опорный блок имеет исходный вектор движения и одно или более заданных смещений вектора движения, исходный вектор движения опорного блока получается на основании предсказанного вектора движения опорного блока и блок предсказания опорного блока получают на основании исходного вектора движения и одного или более заданных смещений вектора движения; и
модуль 2102 получения, выполненный с возможностью использовать исходный вектор движения опорного блока в качестве предсказанного вектора движения блока, подлежащего обработке.
В возможной реализации, модуль 2102 получения дополнительно выполнен с возможностью: использовать предсказанный вектор движения опорного блока в качестве исходного вектора движения опорного блока; или складывать предсказанный вектор движения опорного блока и разность вектора движения опорного блока для получения исходного вектора движения опорного блока.
В возможной реализации, модуль 2102 получения дополнительно выполнен с возможностью: получать из опорного кадра опорного блока блок изображения, указанный исходным вектором движения опорного блока, и использовать полученный блок изображения в качестве временного блока предсказания опорного блока; складывать исходный вектор движения и одно или более заданных смещений векторов движения опорного блока, чтобы получить один или более фактических векторов движения, где каждый фактический вектор движения указывает позицию поиска; получать один или более кандидатов блоков предсказания на позициях поиска, указанных одним или более фактическими векторами движения, где каждая позиция поиска соответствует одному кандидату блоку предсказания; и выбирать из одного или более кандидатов блоков предсказания кандидата блока предсказания с минимальной разницей пикселя из временного блока предсказания в качестве блока предсказания опорного блока.
В возможной реализации устройство 2100 сконфигурировано для двунаправленного предсказания, опорный кадр включает в себя опорный кадр первого направления и опорный кадр второго направления, исходный вектор движения включает в себя исходный вектор движения первого направления и исходный вектор движения второго направления, и модуль 2102 получения специально выполнен с возможностью: получать из опорного кадра первого направления опорного блока первый блок изображения, указанный исходным вектором движения первого направления опорного блока; получать из опорного кадра второго направления опорного блока второй блок изображения, указанный исходным вектором движения второго направления опорного блока; и взвешивать первый блок изображения и второй блок изображения для получения временного блока предсказания опорного блока.
В возможной реализации устройство 2100 дополнительно включает в себя: модуль 2103 округления, выполненный с возможностью: когда разрешение вектора движения фактического вектора движения выше заданной точности пикселя, округлять разрешение вектора движения фактического вектора движения, так что разрешение вектора движения обработанного фактического вектора движения равняется заданной точности пикселя.
В возможной реализации модуль 2102 получения специально выполнен с возможностью: выбирать из одного или более кандидатов блоков предсказания фактический вектор движения, соответствующий кандидату блока предсказания с минимальной разностью пикселей из временного блока предсказания; когда разрешение вектора движения выбранного фактического вектора движения выше заданной точности пикселя, округлить разрешение вектора движения выбранного фактического вектора движения так, чтобы разрешение вектора движения обработанного выбранного фактического вектора движения равнялось заданной точности пикселя; и определять, что блок предсказания, соответствующий позиции, указанной обработанным выбранным фактическим вектором движения, является блоком предсказания опорного блока.
В возможной реализации заданная точность пикселей представляет собой точность целого пикселя, точность 1/2 пикселя, точность 1/4 пикселя или точность 1/8 пикселя.
В возможной реализации модуль 2102 получения специально выполнен с возможностью использовать предсказанный вектор движения блока, подлежащего обработке, в качестве исходного вектора движения блока, подлежащего обработке.
В возможной реализации модуль 2102 получения специально выполнен с возможностью складывать предсказанный вектор движения блока, подлежащего обработке, и разность вектора движения блока, подлежащего обработке, чтобы получить исходный вектор движения блока, подлежащего обработке.
В возможной реализации устройство 2100 выполнено с возможностью декодировать видео, и получают разность векторов движения блока, подлежащего обработке, посредством синтаксического анализа первой идентификационной информации в битовом потоке.
В возможной реализации устройство 2100 выполнено с возможностью декодировать видео, и модуль 2101 определения специально выполнен с возможностью: выполнять синтаксический анализ битового потока для получения второй идентификационной информации; и определить опорный блок блока, подлежащего обработке, на основании второй идентификационной информации.
В возможной реализации, устройство 2100 выполнено с возможностью кодировать видео, и модуль 2101 определения специально выполнен с возможностью: выбирать из одного или более кандидатов опорных блоков блока, подлежащего обработке, кандидата опорного блока с минимальной стоимостью искажения скорости в качестве опорного блока, подлежащего обработке блока.
Фиг.22 является блок-схемой устройства кодирования видео согласно варианту осуществления настоящего изобретения. Устройство 2200 может быть применено к кодеру или может быть применено к декодеру. Устройство 2200 включает в себя процессор 2201 и память 2202. Процессор 2201 и память 2202 соединены друг с другом (например, соединены друг с другом через шину 2204). В возможной реализации устройство 2200 может дополнительно включать в себя приемопередатчик 2203. Приемопередатчик 2203 подключен к процессору 2201 и памяти 2202 и выполнен с возможностью принимать/передавать данные.
Память 2202 включает в себя, но не ограничено, оперативную память (random access memory, RAM), постоянную память (read-only memory, ROM), стираемую программируемую постоянную память (erasable programmable read only memory, EPROM) или постоянное запоминающее устройство на компакт-диске (compact disk read-only memory, CD-ROM). Память 2202 выполнена с возможностью хранить соответствующий программный код и видеоданные.
Процессор 2201 может быть одним или более центральными процессорами (central processing unit, CPU). Когда процессор 2201 является одним CPU, CPU может быть одноядерным или многоядерным CPU.
Процессор 2201 выполнен с возможностью считывать программный код, хранящийся в памяти 2202, и выполнять операции в соответствии с любым решением реализации, соответствующим фиг.13 - фиг.20, и в различных возможных вариантах реализации решения.
Например, вариант осуществления настоящего изобретения дополнительно обеспечивает машиночитаемый носитель данных. Машиночитаемый носитель данных хранит инструкции. Когда инструкции выполняются на компьютере, компьютер получает возможность выполнять операции в соответствии с любым решением реализации, соответствующим фиг. 13 - фиг. 20 и различным возможным вариантам реализации решения.
Например, вариант осуществления настоящего изобретения дополнительно предоставляет компьютерный программный продукт, включающий в себя инструкции. Когда компьютерный программный продукт выполняется на компьютере, компьютер может выполнять операции в любом решении для реализации, соответствующем фиг.13 - фиг.20 и различных возможных вариантах реализации решения.
Специалист в данной области техники может знать, что в сочетании с примерами, описанными в вариантах осуществления, раскрытых в этом описании, блоки и этапы алгоритма могут быть реализованы электронным оборудованием или комбинацией компьютерного программного обеспечения и электронного оборудования. Вариант реализации функций аппаратным или программным обеспечением зависит от конкретных приложений и проектных ограничений технических решений. Специалист в данной области техники может использовать разные способы для реализации описанных функций для каждого конкретного приложения, но следует учитывать, что реализация не должна выходить за рамки настоящего изобретения.
Специалисту в данной области техники может быть понятно, что с целью удобного и краткого описания подробные рабочие процессы вышеупомянутой системы, устройства и блока относятся к соответствующим процессам в вышеупомянутых вариантах осуществления способа, и подробности здесь снова не описываются.
Все или некоторые из вышеизложенных вариантов осуществления могут быть реализованы с использованием программного обеспечения, аппаратного обеспечения, встроенного программного обеспечения или любой их комбинации. Когда программное обеспечение используется для реализации вариантов осуществления, варианты осуществления могут быть реализованы полностью или частично в форме компьютерного программного продукта. Компьютерный программный продукт включает в себя одну или более компьютерных инструкций, и когда инструкции компьютерной программы загружаются и выполняются на компьютере, генерируются все или некоторые из процедур или функций согласно вариантам осуществления настоящего изобретения. Компьютер может быть компьютером общего назначения, компьютером специального назначения, компьютерной сетью или другим программируемым устройством. Компьютерные инструкции могут храниться на машиночитаемом носителе данных или могут передаваться с машиночитаемого носителя данных на другой машиночитаемый носитель данных. Например, компьютерные инструкции могут быть переданы с веб-сайта, компьютера, сервера или центра обработки данных на другой веб-сайт, компьютер, сервер или центр обработки данных по проводной связи (например, коаксиальному кабелю, оптическому волокну или цифровой абонентской линии) или беспроводной связи (например, в инфракрасном или микроволновом диапазоне). Машиночитаемый носитель данных может быть любым используемым носителем, доступным для компьютера, или может быть устройством хранения данных, таким как сервер или центр обработки данных, объединяющим один или более используемых носителей. Используемый носитель может быть магнитным носителем (например, дискета, жесткий диск или магнитная лента), оптическим носителем (например, DVD), полупроводниковым носителем (например, твердотельным накопителем) или т.п.
В вышеупомянутых вариантах осуществления описание каждого варианта осуществления имеет соответствующие акценты. Для части, которая не описана подробно в варианте осуществления, обратитесь к соответствующим описаниям в других вариантах осуществления.
Вышеприведенные описания представляют собой просто конкретные реализации настоящего изобретения, но не предназначены для ограничения объема защиты настоящего изобретения. Любое изменение или замена, легко обнаруживаемые специалистом в данной области техники в пределах технического объема, раскрытого в настоящем изобретении, должны подпадать под объем защиты настоящего изобретения. Следовательно, объем защиты настоящего изобретения должен быть предметом объема защиты формулы изобретения.