Область техники, к которой относится изобретение
Изобретение относится к способу и устройству для кодирования последовательности цифровых изображений и к способу и устройству для декодирования соответствующего битового потока.
Изобретение относится к области обработки цифрового сигнала и, в частности, к области сжатия видеосигнала с использованием компенсации движения для снижения пространственных и временных избыточностей в видеопотоках.
Предшествующий уровень техники
Многие форматы сжатия видеосигнала, например H.263, H.264, MPEG-1, MPEG-2, MPEG-4, SVC, используют блочное дискретное косинусное преобразование (DCT) и компенсацию движения для устранения пространственных и временных избыточностей. Их можно именовать предикторными форматами видео. Каждый кадр или изображение видеосигнала делится на срезы (слайсы), которые кодируются и могут декодироваться независимо. Срез обычно представляет собой прямоугольный участок кадра или, в более общем случае, участок кадра или кадр целиком. Кроме того, каждый срез делится на макроблоки (MB), и каждый макроблок дополнительно делится на блоки, обычно блоки 8x8 пикселей. Кодированные кадры бывают двух типов: кадры с временным предсказанием (либо предсказываемые на основе одного опорного кадра, так называемые P-кадры, либо предсказываемые на основе двух опорных кадров, так называемые B-frames) и кадры без временного предсказания (так называемые интра-кадры или I-кадры).
Временное предсказание состоит в отыскании в опорном кадре, либо предыдущем, либо в будущем кадре видеопоследовательности, участка изображения или опорной области, ближайшего(ей) к кодируемому блоку. Этот этап называется оцениванием движения. Затем разность между кодируемым блоком и опорным участком кодируется (компенсация движения), совместно с элементом информации движения относительно вектора движения, которое указывает опорную область, используемую для компенсации движения.
Для дополнительного снижения стоимости информации движения для кодирования, было предложено кодировать вектор движения отличием от предиктора вектора движения, обычно вычисляемого из векторов движения блоков, окружающих кодируемый блок.
В H.264, векторы движения кодируются относительно медианного предиктора, вычисляемого из векторов движения, расположенных в каузальной окрестности кодируемого блока, например, из блоков, расположенных выше и влево от кодируемого блока. Кодируется только разность, также именуемая остаточным вектором движения, между медианным предиктором и вектором движения текущего блока.
Кодирование с использованием остаточных векторов движения несколько экономит битовую скорость, но вынуждает декодер осуществлять одно и то же вычисление предиктора вектора движения для декодирования значения вектора движения блока для декодирования.
Недавно были предложены дополнительные усовершенствования, например, использование множества возможных предикторов вектора движения. Этот способ, именуемый конкуренцией векторов движения, состоит в определении между несколькими предикторами вектора движения или кандидатами, какой предиктор вектора движения минимизирует стоимость кодирования, обычно стоимость скорости-искажения, остаточной информации движения. Остаточная информация движения содержит остаточный вектор движения, т.е. разность между фактическим вектором движения кодируемого блока и выбранным предиктором вектора движения, и элемент информации, указывающий выбранный предиктор вектора движения, например, кодированное значение индекса выбранного предиктора вектора движения.
В High Efficiency Video Coding (HEVC), в настоящее время находящемся на стадии стандартизации, было предложено использовать множество предикторов вектора движения, что схематически показано на фиг. 1: 3 так называемых пространственных предиктора V1, V2 и V3 вектора движения, взятых из блоков, расположенных в окрестности кодируемого блока, медианный предиктор вектора движения, вычисляемый на основе компонент трех пространственных предикторов V1, V2 и V3 вектора движения, и временной предиктор V0 вектора движения, который представляет собой вектор движения совмещенного блока в предыдущем изображении последовательности (например, блока изображения N-1, расположенного в той же пространственной позиции, что и блок ‘кодируемый’ изображения N). В настоящее время в HEVC 3 пространственных предиктора вектора движения берутся из блока, расположенного слева от кодируемого блока (V3), блока, расположенного над ним (V2), и одного из блоков, расположенных на соответствующих углах кодируемого блока, согласно заранее определенному правилу доступности. Эта схема выбора предиктора вектора движения называется Advanced Motion Vector Prediction (AMVP). В примере, показанном на фиг. 1, выбирается вектор V1 блока, расположенного выше и влево.
В итоге, получается набор из 5 предикторов-кандидатов вектора движения, состоящий из пространственных предикторов и временных предикторов. Для снижения издержек сигнализации предиктора вектора движения в битовом потоке, набор предикторов вектора движения сокращается за счет исключения дублированных векторов движения, т.е. векторов движения, имеющих одно и то же значение. Например, как показано на фиг. 1, V1 и V2 равны, и V0 и V3 также равны, поэтому только два из них должны остаться в качестве предикторов-кандидатов вектора движения, например V0 и V1. В этом случае, только один бит необходим для указания декодеру индекса предиктора вектора движения.
Возможно дополнительное сокращение набора предикторов вектора движения, на основе значений предикторов. Выбрав наилучший предиктор вектора движения и вычислив остаточный вектор движения, можно дополнительно исключить из набора предикторов кандидаты, которые не будут выбраны, зная остаточный вектор движения и критерий оптимизации стоимости кодера. Достаточное сокращение набора предикторов дает выигрыш в издержках сигнализации, поскольку указание выбранного предиктора вектора движения можно кодировать с использованием меньшего количества битов. В предельном случае, набор кандидатов можно сократить до 1, например, если все предикторы вектора движения равны, что избавляет от необходимости вставлять в битовый поток какую-либо информацию относительно выбранного предиктора вектора движения.
В итоге, кодирование векторов движения отличием от предиктора вектора движения, совместно с сокращением количества предикторов-кандидатов вектора движения дает выигрыш в сжатии. Однако, как объяснено выше, для данного кодируемого блока, сокращение количества предикторов-кандидатов вектора движения основано на значениях, принимаемых предикторами вектора движения из набора, в частности, значениях векторов движения соседних блоков и вектора движения совмещенного блока. Также, декодер должен быть способен применять такой же анализ набора возможных предикторов вектора движения, что и кодер, для получения количества битов, используемых для указания выбранного предиктора вектора движения и должен быть способен декодировать индекс предиктора вектора движения и, наконец, декодировать вектор движения с использованием принятого остаточного вектора движения. Согласно примеру, приведенному на фиг. 1, набор предикторов вектора движения блока ‘кодируемый’ сокращается кодером до V0 и V1, благодаря чему, индекс кодируется одним-единственным битом. Если блок ‘совмещенный’ изображения N-1 утрачивается в ходе передачи, декодер не может получить значение V0 и, таким образом, не может обнаружить, что V0 и V3 равны. Таким образом, декодер не может узнать, сколько битов использовалось для кодирования индекса предиктора вектора движения для блока ‘кодируемый’ и, следовательно, декодер не может правильно анализировать данные для среза, поскольку он не может найти, где заканчивается кодирование индекса и где начинается кодирование видеоданных.
Таким образом, тот факт, что количество битов, используемых для сигнализации предикторов вектора движения, зависит от значений, принимаемых предикторами вектора движения, делает способ очень уязвимым к ошибкам передачи, когда битовый поток передается на декодер по сети связи с потерями. Действительно, способ требует знания значений предикторов вектора движения для правильного анализа битового потока на декодере. В случае потерь пакетов, когда некоторые значения остаточных векторов движения утрачиваются, декодер не может определить, сколько битов использовалось для кодирования индекса, представляющего предиктор вектора движения, что не дает ему возможности правильно анализировать битовый поток. Такая ошибка может распространяться, приводя к десинхронизации декодера, пока декодер не примет следующее изображение синхронизации, кодированное без предсказания.
Желательно, по меньшей мере, иметь возможность анализировать кодированный битовый поток на декодере даже в случае потерь пакетов, чтобы затем можно было применять в том или ином виде пересинхронизацию или маскирование ошибок.
В документе JCTVC-C166r1, ‘TE11: Study on motion vector coding (experiment 3.3a and 3.3c)’ за авторством K. Sato, опубликованном на 3-й встрече Joint Collaborative Team on Video Coding (JTC-VC) в Гуанчжоу, 7-15 октября 2010 г., предложено использовать только пространственные предикторы вектора движения, приходящие из одного и того же среза в наборе предикторов. Это решение решает проблему анализа на декодере в случае потерь срезов. Однако эффективность кодирования значительно снижается, поскольку временной предиктор вектора движения больше не используется. Таким образом, это решение не является удовлетворительным в отношении показателей сжатия.
Сущность изобретения
Желательно устранить один или более недостатков, присущих уровню техники.
Согласно одному аспекту настоящего изобретения предусмотрен способ кодирования последовательности цифровых изображений в битовый поток, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного участка изображения,
причем, для, по меньшей мере, одного кодируемого участка изображения, способ содержит этапы, на которых:
- получают целевое количество предикторов информации движения, подлежащих использованию для упомянутого кодируемого участка изображения, и
- генерируют набор предикторов информации движения с использованием полученного целевого количества предикторов информации движения;
причем этап генерации содержит подэтапы, на которых:
- получают первый набор предикторов информации движения, каждый из которых связан с участком изображения, имеющим заранее определенное пространственное и/или временное соотношение с упомянутым кодируемым участком изображения,
- модифицируют упомянутый первый набор предикторов информации движения путем удаления одного или более дублированных предикторов информации движения для получения сокращенного набора предикторов информации движения, содержащего первое количество предикторов информации движения, причем каждый предиктор информации движения упомянутого сокращенного набора отличается от любого другого предиктора информации движения упомянутого сокращенного набора,
- после получения упомянутого сокращенного набора предикторов информации движения, сравнивают упомянутое первое количество предикторов информации движения с полученным упомянутым целевым количеством, и
- если упомянутое первое количество меньше упомянутого целевого количества,
- получают дополнительный предиктор информации движения, и
- добавляют упомянутый дополнительный предиктор информации движения в упомянутом сокращенном наборе предикторов информации движения.
Согласно другому аспекту настоящего изобретения предусмотрен способ декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем, по меньшей мере, один участок изображения закодирован посредством компенсации движения относительно опорного изображения, причем, для, по меньшей мере, одного декодируемого участка изображения, способ содержит этапы, на которых:
- получают целевое количество предикторов информации движения, подлежащих использованию для упомянутого декодируемого участка изображения, и
- генерируют набор предикторов информации движения с использованием полученного целевого количества предикторов информации движения;
причем этап генерации содержит подэтапы, на которых:
- получают первый набор предикторов информации движения, каждый из которых связан с участком изображения, имеющим заранее определенное пространственное и/или временное соотношение с упомянутым декодируемым участком изображения,
- модифицируют упомянутый первый набор предикторов информации движения путем удаления одного или более дублированных предикторов информации движения для получения сокращенного набора предикторов информации движения, содержащего первое количество предикторов информации движения, причем каждый предиктор информации движения упомянутого сокращенного набора отличается от любого другого предиктора информации движения упомянутого сокращенного набора,
- после получения упомянутого сокращенного набора предикторов информации движения, сравнивают упомянутое первое количество предикторов информации движения с полученным упомянутым целевым количеством, и
- если упомянутое первое количество меньше упомянутого целевого количества,
- получают дополнительный предиктор информации движения, и
- добавляют упомянутый дополнительный предиктор информации движения в упомянутый сокращенный набор предикторов информации движения.
Согласно другому аспекту настоящего изобретения предусмотрено устройство для кодирования последовательности цифровых изображений в битовый поток, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного участка изображения,
причем устройство содержит:
средство для получения целевого количества предикторов информации движения, подлежащих использованию для кодируемого участка изображения, и
средство для генерации набора предикторов информации движения с использованием полученного целевого количества предикторов информации движения;
причем средство генерации содержит:
средство для получения первого набора предикторов информации движения, каждый из которых связан с участком изображения, имеющим заранее определенное пространственное и/или временное соотношение с упомянутым декодируемым участком изображения,
средство для модификации упомянутого первого набора предикторов информации движения путем удаления одного или более дублированных предикторов информации движения для получения сокращенного набора предикторов информации движения, содержащего первое количество предикторов информации движения, причем каждый предиктор информации движения упомянутого сокращенного набора отличается от любого другого предиктора информации движения упомянутого сокращенного набора, и
средство, выполненное с возможностью, после получения упомянутого сокращенного набора предикторов информации движения, сравнивать упомянутое первое количество предикторов информации движения с полученным упомянутым целевым количеством, и дополнительно выполненное с возможностью:
если упомянутое первое количество меньше упомянутого целевого количества,
получать дополнительный предиктор информации движения и
добавлять упомянутый дополнительный предиктор информации движения в упомянутый сокращенный набор предикторов информации движения.
Согласно еще одному аспекту настоящего изобретения предусмотрено устройство для декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем по меньшей мере один участок изображения закодирован посредством компенсации движения относительно опорного изображения, при этом устройство содержит:
средство для получения целевого количества предикторов информации движения, подлежащих использованию для декодируемого участка изображения, и
средство для генерации набора предикторов информации движения с использованием полученного целевого количества предикторов информации движения,
причем средство генерации содержит:
средство для получения первого набора предикторов информации движения, каждый из которых связан с участком изображения, имеющим заранее определенное пространственное и/или временное соотношение с упомянутым декодируемым участком изображения,
средство для модификации упомянутого первого набора предикторов информации движения путем удаления одного или более дублированных предикторов информации движения для получения сокращенного набора предикторов информации движения, содержащего первое количество предикторов информации движения, причем каждый предиктор информации движения упомянутого сокращенного набора отличается от любого другого предиктора информации движения упомянутого сокращенного набора, и
средство, выполненное с возможностью, после получения упомянутого сокращенного набора предикторов информации движения, сравнивать упомянутое первое количество предикторов информации движения с полученным упомянутым целевым количеством, и дополнительно выполненное с возможностью:
если упомянутое первое количество меньше упомянутого целевого количества,
получать дополнительный предиктор информации движения и
добавлять упомянутый дополнительный предиктор информации движения в упомянутом сокращенном наборе предикторов информации движения.
Дополнительные аспекты настоящего изобретения предусматривают компьютерные программы, которые, при выполнении на компьютере, предписывают компьютеру осуществлять вышеописанный способ кодирования цифрового видеосигнала или вышеописанный способ декодирования битового потока. В каждом случае, компьютерная программа может храниться на машиночитаемом носителе данных.
Согласно другому аспекту настоящего изобретения предусмотрен способ кодирования последовательности цифровых изображений в битовый поток, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного участка изображения,
причем, для, по меньшей мере, одного кодируемого участка изображения, способ содержит этапы, на которых:
- получают целевое количество предикторов информации движения, подлежащих использованию для упомянутого кодируемого участка изображения, и
- получают первый набор предикторов информации движения, каждый из которых связан с участком изображения, имеющим заранее определенное пространственное и/или временное соотношение с упомянутым кодируемым участком изображения,
- исключают дубликаты из упомянутого первого набора предикторов информации движения для получения сокращенного набора предикторов информации движения, содержащего первое количество предикторов информации движения, причем каждый предиктор информации движения упомянутого сокращенного набора отличается от любого другого предиктора информации движения упомянутого сокращенного набора,
- после получения упомянутого сокращенного набора предикторов информации движения, сравнивают упомянутое первое количество предикторов информации движения с полученным упомянутым целевым количеством, и
- если упомянутое первое количество меньше упомянутого целевого количества,
- получают дополнительный предиктор информации движения, и
- добавляют упомянутый дополнительный предиктор информации движения в упомянутом сокращенном наборе предикторов информации движения.
В одном варианте осуществления, предикторы информации движения упомянутого сокращенного набора являются фактическими предикторами информации движения, векторы движения которых получены из участков изображения упомянутого кодируемого изображения или опорного изображения, и упомянутый дополнительный предиктор информации движения дополнительно является таким фактическим предиктором информации движения.
В одном варианте осуществления, предикторы информации движения упомянутого сокращенного набора являются фактическими предикторами информации движения, векторы движения которых получены из участков изображения упомянутого кодируемого изображения или опорного изображения, и упомянутый дополнительный предиктор информации движения является виртуальным предиктором информации движения, не имеющим вектора движения, полученного из участка изображения упомянутого кодируемого изображения или опорного изображения.
В одном варианте осуществления способ содержит проверку на предмет того, меньше ли количество предикторов информации движения в упомянутом сокращенном наборе упомянутого целевого количества, и, если да, первоначальное добавление одного или более упомянутых дополнительных фактических предикторов информации движения, затем повторную проверку, меньше ли количество предикторов информации движения, после добавления дополнительных фактических предикторов информации движения, упомянутого целевого количества, и, если да, добавление одного или более упомянутых виртуальных предикторов информации движения.
Согласно другому аспекту настоящего изобретения предусмотрен способ декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного изображения, причем, для, по меньшей мере, одного декодируемого участка изображения, способ содержит этапы, на которых:
- получают целевое количество предикторов информации движения, подлежащих использованию для упомянутого декодируемого участка изображения, и
- получают первый набор предикторов информации движения, каждый из которых связан с участком изображения, имеющим заранее определенное пространственное и/или временное соотношение с упомянутым декодируемым участком изображения,
- исключают дубликаты из упомянутого первого набора предикторов информации движения для получения сокращенного набора предикторов информации движения, содержащего первое количество предикторов информации движения, причем каждый предиктор информации движения упомянутого сокращенного набора отличается от любого другого предиктора информации движения упомянутого сокращенного набора,
- после получения упомянутого сокращенного набора предикторов информации движения, сравнивают упомянутое первое количество предикторов информации движения с полученным упомянутым целевым количеством, и
- если упомянутое первое количество меньше упомянутого целевого количества,
- получают дополнительный предиктор информации движения, и
- добавляют упомянутый дополнительный предиктор информации движения в упомянутом сокращенном наборе предикторов информации движения.
В одном варианте осуществления, предикторы информации движения упомянутого сокращенного набора являются фактическими предикторами информации движения, векторы движения которых получены из участков изображения упомянутого декодируемого изображения или опорного изображения, и упомянутый дополнительный предиктор информации движения дополнительно является таким фактическим предиктором информации движения.
В одном варианте осуществления, предикторы информации движения упомянутого сокращенного набора являются фактическими предикторами информации движения, векторы движения которых получены из участков изображения упомянутого декодируемого изображения или опорного изображения, и упомянутый дополнительный предиктор информации движения является виртуальным предиктором информации движения, не имеющим вектора движения, полученного из участка изображения упомянутого декодируемого изображения или опорного изображения.
В одном варианте осуществления способ содержит проверку на предмет того, меньше ли количество предикторов информации движения в сокращенном наборе упомянутого целевого количества, и, если да, первоначальное добавление одного или более упомянутых дополнительных фактических предикторов информации движения, затем повторную проверку, меньше ли количество предикторов информации движения, после добавления дополнительных фактических предикторов информации движения, упомянутого целевого количества, и, если да, добавление одного или более упомянутых виртуальных предикторов информации движения.
Дополнительные аспекты изобретения предусматривают соответствующее устройство для кодирования, соответствующее устройство для декодирования и соответствующие компьютерные программы и машиночитаемые носители данных.
Согласно другому аспекту настоящего изобретения предусмотрен способ кодирования последовательности цифровых изображений в битовый поток, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного участка изображения,
причем, для, по меньшей мере, одного кодируемого участка изображения, способ содержит этапы, на которых:
- получают целевое количество предикторов информации движения, подлежащих использованию для упомянутого кодируемого участка изображения, и
- генерируют набор предикторов информации движения, причем каждый предиктор информации движения из сгенерированного набора связан с участком изображения, имеющим заранее определенное пространственное и/или временное соотношение с упомянутым кодируемым участком изображения;
- исключают дубликаты из сгенерированного набора для получения первого набора предикторов информации движения, содержащего первое количество предикторов информации движения, причем каждый предиктор информации движения из первого набора отличается от любого другого предиктора информации движения из первого набора;
- после получения упомянутого первого набора предикторов информации движения, сравнивают упомянутое первое количество предикторов информации движения с полученным упомянутым целевым количеством, и
- если упомянутое первое количество меньше упомянутого целевого количества,
- получают дополнительный предиктор информации движения, и
- добавляют упомянутый дополнительный предиктор информации движения в упомянутый первый набор предикторов информации движения.
В одном варианте осуществления, предикторы информации движения из упомянутого первого набора являются фактическими предикторами информации движения, векторы движения которых получены из участков изображения упомянутого кодируемого изображения или опорного изображения, и упомянутый дополнительный предиктор информации движения дополнительно является таким фактическим предиктором информации движения.
В одном варианте осуществления, предикторы информации движения из упомянутого первого набора являются фактическими предикторами информации движения, векторы движения которых получены из участков изображения упомянутого кодируемого изображения или опорного изображения, и упомянутый дополнительный предиктор информации движения является виртуальным предиктором информации движения, не имеющим вектора движения, полученного из участка изображения упомянутого кодируемого изображения или опорного изображения.
В одном варианте осуществления способ содержит проверку на предмет того, меньше ли количество предикторов информации движения в упомянутом первом наборе упомянутого целевого количества, и, если да, первоначальное добавление одного или более упомянутых дополнительных фактических предикторов информации движения, затем повторную проверку, меньше ли количество предикторов информации движения, после добавления дополнительных фактических предикторов информации движения, упомянутого целевого количества, и, если да, добавление одного или более упомянутых виртуальных предикторов информации движения.
Согласно другому аспекту настоящего изобретения предусмотрен способ декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного изображения, причем, для, по меньшей мере, одного декодируемого участка изображения, способ содержит этапы, на которых:
- получают целевое количество предикторов информации движения, подлежащих использованию для упомянутого декодируемого участка изображения, и
- генерируют набор предикторов информации движения, причем каждый предиктор информации движения из сгенерированного набора связан с участком изображения, имеющим заранее определенное пространственное и/или временное соотношение с упомянутым декодируемым участком изображения;
- исключают дубликаты из сгенерированного набора для получения первого набора предикторов информации движения, содержащего первое количество предикторов информации движения, причем каждый предиктор информации движения из первого набора отличается от любого другого предиктора информации движения из первого набора;
- после получения упомянутого первого набора предикторов информации движения, сравнивают упомянутое первое количество предикторов информации движения с полученным упомянутым целевым количеством, и
- если упомянутое первое количество меньше упомянутого целевого количества,
- получают дополнительный предиктор информации движения, и
- добавляют упомянутый дополнительный предиктор информации движения в упомянутый первый набор предикторов информации движения.
В одном варианте осуществления, предикторы информации движения из упомянутого первого набора являются фактическими предикторами информации движения, векторы движения которых получены из участков изображения упомянутого декодируемого изображения или опорного изображения, и упомянутый дополнительный предиктор информации движения дополнительно является таким фактическим предиктором информации движения.
В одном варианте осуществления, предикторы информации движения из упомянутого первого набора являются фактическими предикторами информации движения, векторы движения которых получены из участков изображения упомянутого декодируемого изображения или опорного изображения, и упомянутый дополнительный предиктор информации движения является виртуальным предиктором информации движения, не имеющим вектора движения, полученного из участка изображения упомянутого декодируемого изображения или опорного изображения.
В одном варианте осуществления способ содержит проверку на предмет того, меньше ли количество предикторов информации движения в упомянутом первом наборе упомянутого целевого количества, и, если да, первоначальное добавление одного или более упомянутых дополнительных фактических предикторов информации движения, затем повторную проверку, меньше ли количество предикторов информации движения, после добавления дополнительных фактических предикторов информации движения, упомянутого целевого количества, и, если да, добавление одного или более упомянутых виртуальных предикторов информации движения.
Дополнительные аспекты изобретения предусматривают соответствующее устройство для кодирования, соответствующее устройство для декодирования и соответствующие компьютерные программы и машиночитаемые носители данных.
Желательно также обеспечить способ, позволяющий правильно производить анализ на декодере даже в случае повреждения битового потока за счет потерь при передаче, в то же время, поддерживающий высокую эффективность сжатия.
С этой целью, изобретение относится к способу кодирования последовательности цифровых изображений в битовый поток, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного участка изображения. Способ содержит, для, по меньшей мере, одного кодируемого участка изображения, этапы, на которых:
- получают целевое количество предикторов информации движения, подлежащих использованию для упомянутого кодируемого участка изображения, и
- генерируют набор предикторов информации движения, состоящий из упомянутого целевого количества предикторов информации движения, причем каждый предиктор информации движения сгенерированного набора отличается от любого другого предиктора информации движения из сгенерированного набора.
Преимущественно, способ изобретения допускает систематическое определение целевого количества предикторов информации движения, подлежащих использованию для кодирования информация движения, например, вектора движения, связанного с участком изображения, и сжатие преимущественно улучшается за счет генерации набора предикторов информации движения, отличающихся друг от друга. Потенциальные издержки использования фиксированного целевого количества предикторов информации движения компенсируются за счет выбора нескольких предикторов, что способствует повышению степени сжатия. Целевое количество разных предикторов информации движения определяется и фиксируется независимо от фактических значений элементов информации движения, например, векторов движения, выбранных в качестве предикторов информации движения для текущего кодируемого участка изображения.
Вариант осуществления настоящего изобретения эффективен, когда количество первоначально генерируемых предикторов информации движения заранее неизвестно, как, например, при использовании AMVP. Например, если осуществляется сокращение начального набора и количество начальных предикторов, удаляемых в процессе сокращения заранее неизвестно, вариант осуществления настоящего изобретения можно использовать, чтобы гарантировать, что окончательный набор предикторов информации движения состоит из целевого количества предикторов информации движения.
Согласно варианту осуществления, способ кодирования дополнительно содержит этапы, на которых:
- выбирают предиктор информации движения для упомянутого кодируемого участка изображения из упомянутого сгенерированного набора предикторов информации движения, и
- кодируют элемент информации, представляющий упомянутый выбранный предиктор информации движения, на основе полученного упомянутого целевого количества.
Преимущественно, предиктор информации движения можно выбирать для текущего кодируемого блока, и выбранный предиктор вектора движения можно кодировать в зависимости от определенного количества предикторов информации движения. Количество предикторов информации движения может систематически извлекаться декодером, благодаря чему, кодированный битовый поток может систематически анализироваться на декодере даже в случае потерь.
Согласно варианту осуществления, элемент информации, представляющий упомянутый выбранный предиктор вектора движения, является индексом выбранного предиктора вектора движения в сгенерированном наборе предикторов информации движения, и индекс кодируется количеством битов, зависящим от полученного упомянутого целевого количества.
Согласно варианту осуществления, на этапе получения целевого количества предикторов информации движения, подлежащих использованию для упомянутого кодируемого участка изображения, упомянутое целевое количество задается равным заранее определенному значению для любого кодируемого участка изображения последовательности цифровых изображений.
Преимущество этого варианта осуществления состоит в том, что целевое количество предикторов информации движения можно легко получить, без какого-либо вспомогательного вычисления или издержек сигнализации, на кодере или декодере.
Согласно другому варианту осуществления, на этапе получения целевого количества предикторов информации движения, подлежащих использованию для упомянутого кодируемого участка изображения, упомянутое целевое количество определяется, для данного кодируемого участка изображения, в зависимости от информации кодирования упомянутого данного кодируемого участка изображения.
Преимущественно, такая информация кодирования может быть параметром кодирования, например, если изображения делятся на макроблоки переменного размера для обработки, размером макроблока, которому принадлежит кодируемый участок изображения. Такая информация кодирования также может быть, например, режимом кодирования, связанным с кодируемым участком изображения.
Согласно еще одному аспекту, изобретение относится к устройству для кодирования последовательности цифровых изображений в битовый поток, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного участка изображения. Устройство содержит, для, по меньшей мере, одного кодируемого участка изображения:
- средство для получения целевого количества предикторов информации движения, подлежащих использованию для упомянутого кодируемого участка изображения, и
- средство для генерации набора предикторов информации движения, состоящего из упомянутого целевого количества предикторов информации движения, причем каждый предиктор информации движения сгенерированного набора отличается от любого другого предиктора информации движения из сгенерированного набора.
Согласно еще одному аспекту, изобретение также относится к компьютерному программному продукту, который можно загружать в программируемое устройство, содержащему последовательности инструкций для реализации способа кодирования последовательности цифровых изображений, кратко описанного выше, когда программа загружается в программируемое устройство и выполняется им. Такая компьютерная программа может быть транзиторной или нетранзиторной. В одной реализации, компьютерная программа может храниться на нетранзиторном (невременном) машиночитаемом носителе.
Конкретные характеристики и преимущества устройства для кодирования последовательности цифровых изображений, средства хранения и компьютерного программного продукта, аналогичны характеристикам и преимуществам способа кодирования цифрового видеосигнала, поэтому они здесь не повторяются.
Согласно еще одному аспекту, изобретение также относится к способу декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного изображения. Для, по меньшей мере, одного упомянутого декодируемого участка изображения, способ содержит этапы, на которых:
- получают целевое количество предикторов информации движения, подлежащих использованию для упомянутого декодируемого участка изображения, и
- генерируют набор предикторов информации движения, состоящий из упомянутого целевого количества предикторов информации движения, причем каждый предиктор информации движения сгенерированного набора отличается от любого другого предиктора информации движения из сгенерированного набора.
Преимущество способа декодирования битового потока состоит в том, что он позволяет определять целевое количество предикторов информации движения и использовать такое количество разных предикторов информации движения. Целевое количество предикторов информации движения можно систематически извлекать и, следовательно, битовый поток можно систематически анализировать, даже в случае ошибок передачи. Дополнительное преимущество состоит в том, что в любом случае, анализ битового потока упрощен и, в частности, проще, чем с применением традиционных способов, которые адаптивно сокращают количество предикторов информации движения вместо того, чтобы использовать заранее определенное целевое количество, которое может быть получено декодером.
Согласно варианту осуществления, способ дополнительно содержит этап декодирования элемента информации, представляющего выбранный предиктор информации движения для упомянутого декодируемого участка изображения на основе полученного упомянутого целевого количества.
Преимущественно, в случае кодирования, зависящего от количества предикторов информации движения, примененных на кодере, элемент информации, представляющий выбранный предиктор информации движения для упомянутого декодируемого участка изображения, можно систематически декодировать, даже в случае ошибок передачи.
Согласно еще одному аспекту, изобретение также относится к устройству для декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного участка изображения. Устройство содержит, для, по меньшей мере, одного упомянутого декодируемого участка изображения:
- средство для получения целевого количества предикторов информации движения, подлежащих использованию для упомянутого декодируемого участка изображения, и
- средство для генерации набора предикторов информации движения, состоящего из упомянутого целевого количества предикторов информации движения, причем каждый предиктор информации движения сгенерированного набора отличается от любого другого предиктора информации движения из сгенерированного набора.
Согласно еще одному аспекту, изобретение также относится к средству хранения информации, которое может считываться компьютером или микропроцессором, причем это средство хранения является сменным, и на нем хранятся инструкции компьютерной программы для реализации способа декодирования битового потока, кратко описанного выше.
Согласно еще одному аспекту, изобретение также относится к компьютерному программному продукту, который можно загружать в программируемое устройство, содержащему последовательности инструкций для реализации способа декодирования битового потока, кратко описанного выше, когда программа загружается в программируемое устройство и выполняется им. Такая компьютерная программа может быть транзиторной или нетранзиторной. В одной реализации, компьютерная программа может храниться на нетранзиторном (невременном) машиночитаемом носителе.
Конкретные характеристики и преимущества устройства для декодирования битового потока, средства хранения и компьютерного программного продукта, аналогичны характеристикам и преимуществам способа декодирования, поэтому они здесь не повторяются.
Согласно другому аспекту настоящего изобретения предусмотрен способ кодирования последовательности цифровых изображений в битовый поток, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного участка изображения, причем способ содержит генерацию набора предикторов информации движения, имеющих управляемое разнесение, и выбор предиктора информации движения для упомянутого кодируемого участка изображения из упомянутого сгенерированного набора предикторов информации движения.
Управляемое разнесение означает, что предикторы информации движения набора отличаются друг от друга, но один или более из них с большой степенью статистического правдоподобия близок к фактической информации движения, в связи с чем, остаток (разность между фактической информацией движения и рассматриваемым предиктором) мал и, следовательно, допускает эффективное сжатие.
Способ может содержать:
генерацию первых предикторов информации движения;
идентификацию одного или более первых предикторов информации движения в качестве затравочных предикторов;
генерацию одного или более вторых предикторов информации движения на основе затравочного(ых) предиктора(ей); и
формирование упомянутого набора предикторов информации движения из первых и/или вторых предикторов информации движения.
В этом случае, первые предикторы информации движения могут представлять собой предикторы, от которых статистически ожидаются хорошие результаты в отношении эффективности сжатия. Вторые предикторы информации движения, которые основаны на первых предикторах, затем можно использовать для организованного или систематического исследования других предикторов в пространстве предикторов, соседствующих с первыми предикторами. От таких предикторов также можно ожидать хороших результатов, и чем больше предикторов будет исследовано, тем больше вероятность найти хорошее совпадение с фактической информацией движения.
В одном варианте осуществления, по меньшей мере, один из первых предикторов информации движения идентифицируется как такой затравочный предиктор на основе важности рассматриваемого первого предиктора информации движения.
Важность может зависеть от того, сколько раз рассматриваемый первый предиктор информации движения появляется среди первых предикторов информации движения. Чем больше раз появляется предиктор, тем более важным он считается, и тем более вероятно, что он будет использован в наборе. Помимо поиска идентичных предикторов (дубликатов), также может быть эффективным поиск близких совпадений.
Альтернативно, важность может зависеть от меры того, насколько рассматриваемый первый предиктор информации движения представляет первые предикторы информации движения в целом. Например, если первые предикторы информации движения усредняются, разность или расстояние между средним предиктором и данным первым предиктором информации движения является мерой того, насколько данный предиктор представляет первые предикторы информации движения в целом.
Один способ управления разнесением состоит в генерации, по меньшей мере, одного упомянутого второго предиктора информации движения путем прибавления или вычитания смещения от одного из упомянутых затравочных предикторов. Смещение может быть фиксированным. Оно также может быть псевдослучайным значением при условии, что декодеру доступно то же затравочное (seed) значение, что и кодеру. Если затравочные предикторы являются векторами, разнесение также можно управлять, прибавляя к затравочному предиктору другой вектор, например фиксированной величины и заранее определенного направления относительно направления затравочного предиктора.
Множество упомянутых вторых предикторов информации движения можно генерировать на основе одного и того же упомянутого затравочного предиктора. Если каждый из предикторов информации движения являются векторами имеет компоненты X и Y, множество вторых предикторов информации движения можно получить, прибавляя и/или вычитая смещения к/из одной или обеих упомянутых компонент одного и того же упомянутого затравочного предиктора. Например, одно и то же смещение можно прибавлять к или вычитать из одного и того же затравочного предиктора. Если затравочный предиктор является вектором, имеющим компоненты X и Y, существует несколько перестановок прибавления/вычитания смещений к/из одной или обеих из компонент X и Y одного и того же затравочного предиктора. Это также позволяет эффективно генерировать управляемое разнесение без большой обработочной нагрузки.
Другой способ управления разнесением предусматривает генерацию множества вторых предикторов информации движения путем усреднения разных пар (или других комбинаций) первых предикторов информации движения. Например, если первыми предикторами информации движения являются V1, V2 и V3, три вторых предикторов информации движения можно сформировать из средних V1 & V2, V2 & V3 и V3 & V1. Также можно формировать различные взвешенные комбинации одних и тех же первых предикторов информации движения в качестве разных вторых предикторов информации движения.
Первые предикторы информации движения могут представлять собой или включать в себя предикторы информации движения, каждый из которых связан с участком изображения, имеющим заранее определенное пространственное и/или временное соотношение с кодируемым участком изображения. Например, предикторы информации движения, используемые в AMVP, могут быть первыми предикторами информации движения. Это хороший источник затравочных предикторов.
В другом варианте осуществления способ содержит:
генерацию первых предикторов информации движения;
проверку разностей между генерируемыми первыми предикторами информации движения; и
исключение из упомянутого набора предикторов информации движения одного или более первых предикторов информации движения на основе разностей.
С учетом разностей между первыми предикторами информации движения можно управлять разнесением предикторов информации движения набора. В этом случае ее требуется идентифицировать затравочные предикторы среди первых предикторов информации движения и генерировать вторые предикторы информации движения на основе затравочных предикторов. Это может быть эффективно, например, если первоначально имеется достаточно большое количество первых предикторов информации движения.
Например, согласно способу управления разнесением, первый предиктор информации движения, имеющий наименьшее отличие от другого первого предиктора информации движения можно удалить. При необходимости, процесс можно повторять, чтобы последовательно удалять все менее разнесенные предикторы.
Важно заметить, что в этом аспекте изобретения, количество предикторов информации движения в упомянутом наборе может быть переменным.
Однако, согласно другому основному аспекту настоящего изобретения, количество предикторов информации движения в упомянутом наборе может быть заранее определенным, по меньшей мере, для данного кодируемого участка изображения или даже для всех участков изображения (целевое количество). Это позволяет не только достигать управляемого разнесения между предикторами набора, но и решать проблему анализа, указанную во введении.
Этот аспект изобретения также предусматривает соответствующий способ декодирования и соответствующие устройства кодирования и декодирования, а также программы, согласно которым осуществляются кодирование и декодирование.
Согласно еще одному аспекту, изобретение относится к способу кодирования последовательности цифровых изображений в битовый поток, причем, по меньшей мере, один участок изображения кодируется посредством компенсации движения относительно опорного участка изображения. Способ содержит, для, по меньшей мере, одного кодируемого участка изображения, этапы, на которых:
- получают первый набор предикторов вектора движения, подлежащих использованию для упомянутого кодируемого участка изображения, и
- генерируют второй набор предикторов вектора движения из упомянутого первого набора предикторов вектора движения, причем каждый предиктор вектора движения сгенерированного набора отличается от любого другого предиктора вектора движения из сгенерированного второго набора предикторов вектора движения, причем, по меньшей мере, один предиктор вектора движения из второго набора вычисляется из выбранного предиктора вектора движения первого набора.
Преимущественно, сгенерированный второй набор предикторов вектора движения используется для кодирования вектора движения, связанного с кодируемым участком изображения. Второй набор предикторов вектора движения содержит множество разных предикторов вектора движения, которые генерируются (и, возможно, выбираются) для повышения эффективности сжатия.
Согласно варианту осуществления, предиктор вектора движения первого набора выбирается на этапе выбора согласно значению важности.
Согласно варианту осуществления, способ кодирования содержит этап вычисления значения важности, связанного с каждым предиктором вектора движения первого набора.
Согласно варианту осуществления, предиктор вектора движения первого набора выбирается на этапе выбора согласно расстоянию между предикторами вектора движения первого набора.
Различные варианты осуществления для выбора предиктора вектора движения для генерации других дополнительных или виртуальных предикторов вектора движения позволяют применять выбор управляемого разнесения, который имеет преимущество в повышении эффективности сжатия. Действительно, использование предикторов вектора движения, вычисляемых из важных предикторов вектора движения начального набора, позволяет более точно представлять вектор движения текущего кодируемого участка изображения. Опять же, не существенно иметь фиксированное или целевое количество предикторов в окончательном наборе.
Согласно варианту осуществления, предикторы вектора движения из первого набора предикторов вектора движения являются векторами движения, связанными с участки изображения для кодирования кодируемого изображения и/или опорного изображения. Первый набор может состоять из, или включать в себя, предикторы, используемые в AMVP.
Краткое описание чертежей
Другие признаки и преимущества явствуют из нижеследующего описания, которое приведено исключительно в порядке неограничительного примера со ссылкой на прилагаемые чертежи, в которых:
- фиг. 1, ранее описанный, схематически иллюстрирует набор предикторов вектора движения, используемый в схеме предсказания векторов движения;
- фиг. 2 - схема устройства обработки, предназначенного для реализации варианта осуществления настоящего изобретения;
- фиг. 3 - блок схема кодера согласно варианту осуществления изобретения;
- фиг. 4 - блок схема декодера согласно варианту осуществления изобретения;
- фиг. 5 детализирует определение набора предикторов вектора движения согласно первому варианту осуществления;
- фиг. 6 детализирует определение набора предикторов вектора движения согласно второму варианту осуществления;
- фиг. 7 иллюстрирует схематически второй набор предикторов вектора движения;
- фиг. 8 иллюстрирует схематически векторы движения в системе координат.
Подробное описание вариантов осуществления
Фиг. 2 иллюстрирует схему устройства 1000 обработки, предназначенного для реализации одного варианта осуществления настоящего изобретения. Устройством 1000 является, например, микрокомпьютер, рабочая станция или легкое портативное устройство.
Устройство 1000 содержит шину 1113 связи, к которой, предпочтительно, подключены:
- центральный процессор 1111, например, микропроцессор, обозначенный ЦП (CPU);
- постоянная память 1107 способная содержать компьютерные программы для реализации изобретения, обозначенная ПЗУ (ROM);
- оперативная память 1112, обозначенная ОЗУ (RAM), способная содержать исполнимый код способа изобретения, а также регистры, предназначенные для записи переменных и параметров, необходимых для реализации способа кодирования последовательности цифровых изображений и/или способа декодирования битового потока; и
- интерфейс 1102 связи подключенный к сети 1103 связи, по которой передаются цифровые данные, подлежащие обработке.
В необязательном порядке, устройство 1000 также может иметь следующие компоненты:
- средство 1104 хранения данных, например, жесткий диск, способный содержать программы, реализующие изобретение, и данные, используемые или вырабатываемые в ходе реализации изобретения;
- дисковод 1105 для диска 1106, причем дисковод предназначен для считывания данных с диска 1106 или для записи данных на упомянутый диск;
- экран 1109 для отображения данных и/или обеспечения графического интерфейса с пользователем, посредством клавиатуры 1110 или любого другого указательного средства.
Устройство 1000 может быть подключено к различным периферийным устройствам, например, цифровой камере 1100 или микрофону 1108, каждый из которых подключен к карте ввода-вывода (не показана) для подачи мультимедийных данных на устройство 1000.
Шина связи обеспечивает связь и возможность взаимодействия между различными элементами, включенными в устройство 1000 или подключенными к нему. Представление шины не является ограничительным, и, в частности, центральный процессор способен передавать инструкции на любой элемент устройства 1000 непосредственно или посредством другого элемента устройства 1000.
Диск 1106 можно заменить любым носителем информации, например, компакт-диском (CD-ROM), перезаписываемым или нет, ZIP-диском или картой памяти, и, в общем случае, средством хранения информации, которое может считываться микрокомпьютером или микропроцессором, интегрированным или нет в устройство, возможно, сменным и предназначенным для хранения одной или более программ, выполнение которых позволяет реализовать способ кодирования последовательности цифровых изображений и/или способ декодирования битового потока согласно изобретению.
Исполнимый код может храниться в постоянной памяти 1107, на жестком диске 1104 или на сменном цифровом носителе, например, ранее описанном диске 1106. Согласно варианту, исполнимый код программы может приниматься посредством сети 1103 связи, через интерфейс 1102, для сохранения в одном из средств хранения устройства 1000, прежде чем он будет выполнен, например, на жестком диске 1104.
Центральный процессор 1111 предназначен для управления и руководства выполнением инструкций или участков программного кода программы или программ согласно изобретению, инструкций, которые хранятся в одном из вышеупомянутых средств хранения. При включении питания, программа или программы, которые хранятся в энергонезависимой памяти, например, на жестком диске 1104 или в постоянной памяти 1107, переносятся в оперативную память 1112, которая затем содержит исполнимый код программы или программ, а также регистры для хранения переменных и параметров, необходимых для реализации изобретения.
В этом варианте осуществления, устройство является программируемым устройством, которое использует программное обеспечение для реализации изобретения. Однако, альтернативно, настоящее изобретение можно реализовать аппаратными средствами (например, в форме специализированной интегральной схемы или ASIC).
Фиг. 3 иллюстрирует блок схему кодера согласно варианту осуществления изобретения. Кодер представлен соединенными модулями, причем каждый модуль предназначен для реализации, например в форме инструкций программирования, подлежащих выполнению на ЦП 1111 устройства 1000, соответствующего этапа способа, реализующего вариант осуществления изобретения.
Исходная последовательность цифровых изображений с i0 по in 301 принимается в качестве входного сигнала кодером 30. Каждое цифровое изображение представляется набором выборок, известных как пиксели.
Битовый поток 310 выводится кодером 30.
Битовый поток 310 содержит множество единиц кодирования или срезов, причем каждый срез содержит заголовок среза для кодирования значений параметров кодирования, используемых для кодирования среза, и тело среза, содержащее кодированные видеоданные.
Входные цифровые изображения делятся на блоки (302), причем блоки являются участками изображения и могут иметь переменные размеры (например, 4x4, 8x8, 16x16, 32x32). Для каждого входного блока выбирается режим кодирования. Существует два семейства режимов кодирования, кодирование с пространственным предсказанием или интра-кодирование, и кодирование с временным предсказанием или интер-кодирование. Возможные режимы кодирования тестируются.
Модуль 303 реализует интра-предсказание, в котором данный кодируемый блок предсказывается предиктором, вычисленным из пикселей окрестности упомянутого кодируемого блока. Указание выбранного интра-предиктора и разность между данным блоком и его предиктором кодируется, если выбрано интра-кодирование.
Временное предсказание реализуется модулями 304 и 305. Прежде всего, выбирается опорное изображение из набора опорных изображений 316, и участок опорного изображения, также именуемый опорной областью, которая является областью, ближайшей к данному кодируемому блоку, выбирается модулем 304 оценивания движения. Разность между выбранной опорной областью и данным блоком, также именуемая остаточным блоков, вычисляется модулем 305 компенсации движения. Выбранная опорная область указывается вектором движения.
Информация относительно вектора движения и остаточного блока кодируется, если выбрано интер-предсказание. Для дополнительного снижения битовой скорости, вектор движения кодируется разностью относительно предиктора вектора движения. Набор предикторов вектора движения, также именуемых предикторами информации движения, получается из поля 318 векторов движения модулем 317 предсказания и кодирования векторов движения.
Преимущественно, набор предикторов вектора движения, используемый для выбора наилучшего предиктора вектора движения для кодирования текущего вектора движения, генерируется как объяснено более подробно ниже со ссылкой на фиг. 5 и 6. Для данного текущего кодируемого блока, устанавливается заранее определенное количество Nmax предикторов вектора движения, и, следовательно, индекс выбранного предиктора вектора движения, который является элементом информации, представляющим выбранный предиктор вектора движения, можно кодировать с использованием заранее определенного количества битов. Это заранее определенное количество битов также может извлекаться декодером даже в случае потерь, что позволяет гарантировать, что декодер будет способен анализировать битовый поток даже в случае ошибок или потерь. Nmax предикторов вектора движения выбираются согласно различным вариантам осуществления таким образом, чтобы все они отличались друг от друга, для повышения эффективности сжатия.
Выбор заранее определенного количества Nmax предикторов вектора движения и соответствующего количества битов для кодирования индекса предиктора вектора движения можно применять либо для всей последовательности, либо для группы изображений последовательности, либо на уровне блоков в зависимости от параметров кодирования, например, размера блока или режима кодирования. Например, первое заранее определенное количество Nmax1 предикторов вектора движения можно использовать для блоков, кодированных с использованием интер-предсказания, при котором кодируется остаточный блок, и второе заранее определенное количество Nmax2 предикторов вектора движения можно использовать для блоков, кодированных с использованием режима SKIP, когда кодируется только вектор движения, но не остаточный блок. Соответствующие количества Nmax1 и Nmax2 предикторов вектора движения могут, например, сигнализироваться в битовом потоке путем их вставки в заголовок, например, заголовок среза, или в любое подходящее поле метаданных.
Кодер 30 дополнительно содержит модуль 306 выбора режима кодирования, который использует критерий стоимости кодирования, например, критерий скорости-искажения, для определения, какой из режима пространственного предсказания и режима временного предсказания является наилучшим. Преобразование 307 применяется к остаточному блоку, затем полученные преобразованные данные квантуются модулем 308 и статистически кодируются модулем 309. Наконец, кодированный остаточный блок текущего кодируемого блока вставляется в битовом потоке 310, совместно с информацией относительно используемого предиктора. Для блоков, кодированных в режиме ‘SKIP’, в битовый поток кодируется только ссылка на предиктор, без какого-либо остаточного блока.
Кодер 30 дополнительно осуществляет декодирование кодированного изображения для создания опорного изображения для оценивания движения последующих изображений. Модуль 311 осуществляет обратное квантование квантованных данных с последующим обратным преобразованием 312. Модуль 313 предсказания обратного движения использует информацию предсказания для определения, какой предиктор использовать для данного блока, и модуль 314 компенсации обратного движения фактически добавляет остаток, полученный модулем 312, в опорную область, полученную из набора опорных изображений 316. В необязательном порядке, фильтр 315 устранения блочности (деблокинга) применяется для устранения эффектов блокировки и повышения визуального качества декодированного изображения. Такой же фильтр деблокинга применяется на декодере, благодаря чему, в отсутствие потери передачи, кодер и декодер применяют одну и ту же обработку.
Фиг. 4 иллюстрирует блок схему декодера согласно варианту осуществления изобретения. Декодер представлен соединенными модулями, причем каждый модуль предназначен для реализации, например в форме инструкций программирования, подлежащих выполнению на ЦП 1111 устройства 1000, соответствующего этапа способа, реализующего вариант осуществления изобретения.
Декодер 40 принимает битовый поток 401, содержащий единицы кодирования, каждая из которых состоит из заголовка, содержащего информацию о параметрах кодирования, и тела, содержащего кодированные видеоданные. Как объяснено со ссылкой на фиг. 3, кодированные видеоданные статистически кодируются, и индексы предикторов вектора движения кодируются, для данного блока, заранее определенным количеством битов. Принятые кодированные видеоданные статистически декодируются (402), деквантуются (403), после чего применяется обратное преобразование (404).
В частности, когда принятые кодированные видеоданные соответствуют остаточному блоку текущего декодируемого блока, декодер также декодирует информацию предсказания движения из битового потока, чтобы найти опорную область, используемую кодером.
Модуль 410 применяет декодирование вектора движения для каждого текущего блока, кодированного посредством предсказания движения, содержащее определение количества Nmax используемых предикторов вектора движения и извлечение индекса предиктора вектора движения, кодированного количеством битов, зависящим от Nmax. Аналогично модулю 317, показанному на фиг. 3, модуль 410 декодирования вектора движения генерирует набор из Nmax предикторов вектора движения. Варианты осуществления, объясненные ниже со ссылкой на фиг. 5 и 6, применяются аналогично. Если битовый поток принимается без потерь, декодер генерирует точно такой же набор предикторов вектора движения, что и кодер. В случае потерь, может не представиться возможность сгенерировать набор предикторов вектора движения, и, таким образом, правильно декодировать вектор движения, связанный с текущим блоком. Однако, анализ битового потока всегда возможен, даже в случае потерь, поскольку количество битов, используемых для кодирования индекса предиктора вектора движения, может систематически извлекаться декодером.
После получения индекса предиктора вектора движения для текущего блока, если не происходит потерь, фактическое значение вектора движения, связанного с текущим блоком, можно декодировать и использовать для применения компенсации (406) обратного движения. Опорная область, указанная декодированным вектором движения, выделяется из опорного изображения (408) для окончательного применения компенсации 406 обратного движения.
В случае применения интра-предсказания, обратное интра-предсказание применяется модулем 405.
В итоге, получается декодированный блок. Фильтр 407 деблокинга применяется аналогично фильтру 315 деблокинга, применяемому на кодере. Наконец, декодированный видеосигнал 409 обеспечивается декодером 40.
Фиг. 5 детализирует генерацию набора предикторов вектора движения или векторов-кандидатов движения в первом варианте осуществления настоящего изобретения. Все этапы алгоритма, представленного на фиг. 5, могут быть реализованы программными средствами и выполняться центральным процессором 1111 устройства 1000.
Фиг. 5 представляет блок-схему операций, применяемую для данного текущего кодируемого блока, с которым связан вектор движения, указывающий опорную область в опорном изображении.
Прежде всего, на этапе S500 получается начальный набор L1 предикторов вектора движения. Набор L1 состоит из N кандидатов. Согласно варианту осуществления, начальный набор предикторов вектора движения содержит векторы-кандидаты движения, выбранные согласно схеме предсказания векторов движения AMVP, ранее описанной со ссылкой на фиг. 1, например векторы с V0 по V3 на фиг. 1 и медианный вектор, вычисленный из V1, V2 и V3. Соответственно, N равно максимум 5.
Предпочтительно, начальный набор L1 предикторов вектора движения содержит только векторы движения, отличающиеся друг от друга. В примере, приведенном на фиг. 1, только векторы движения V0, V1 и медианный вектор должны оставаться в L1, и количество предикторов вектора движения N=3.
В альтернативном варианте осуществления, можно применять любую другую схему для выбора ранее вычисленных векторов движения и вычисление других векторов движения из доступных (т.е. среднего, медианного и т.д.) для формирования начального набора L1 предикторов вектора движения.
В еще одном альтернативном варианте осуществления, начальный набор L1 предикторов вектора движения пуст, и N=0.
На следующем этапе S502, получается целевое количество Nmax используемых предикторов-кандидатов вектора движения. Nmax может быть либо заранее определенным для всей последовательности кодируемых цифровых изображений, например Nmax=4, либо может выбираться согласно параметров кодирования текущего кодируемого блока или единицы кодирования (например, среза), которой принадлежит текущий кодируемый блок.
Например, количество Nmax может зависеть от размера преобразования, применяемого к макроблоку, которому принадлежит текущий обрабатываемый блок: например Nmax=p для преобразования, применяемого на блоке 2p+1x2p+1.
Согласно варианту осуществления, количество k битов, используемых для кодирования индекса предиктора вектора движения, непосредственно связан с Nmax: k=INTsup(log2(Nmax)), где INTsup(x) - наименьшее целое число, превышающее значение x. Предпочтительно, Nmax должно быть степенью 2, Nmax=2k, чтобы можно было использовать все индексы, которые можно кодировать на k битах. Преимущественно, все биты, используемые для сигнализации, используются для указания множества предикторов вектора движения и для улучшения сжатия.
Альтернативно, можно использовать любой тип кодирования индексов, представляющих предикторы вектора движения, после определения количества разных предикторов вектора движения Nmax. В частности, можно использовать любой тип статистического кодирования, например, кодирование методом Хаффмана или арифметическое кодирование. Кроме того, индексы также можно кодировать с использованием кода префиксного типа, например, Райса-Голомба (Rice-Colomb) или унарного кода.
Затем, на этапе S503 производится проверка, больше ли количество N предикторов вектора движения из набора L1, чем Nmax.
В случае положительного ответа, после проверки S503 следует этап S504 выбора предиктора-кандидата вектора движения из L1, с последующим удалением выбранного предиктора-кандидата вектора движения из L1 на этапе S506 для формирования модифицированного набора L2 предикторов вектора движения.
Выбор на этапе S504 применяется согласно критерию удаления, например, критерию расстояния. Например, набор L1 содержит предикторы {V1,…,VN} вектора движения, причем каждый предиктор вектора движения является вектором, представленным своими компонентами или координаты по оси X и оси Y в системе координат, представленной на фиг. 8.
Согласно варианту осуществления, на этап S504 определяется расстояние между каждым вектором Vk и каждым другим вектором Vn из L1, отличным от самого Vk, путем вычисления расстояния в виде:
Альтернативно можно применять любой другой тип метрики для вычисления расстояний.
Минимальное найденное расстояние d(Vp,Vq) указывает два ближайших вектора Vp, Vq, из набора L1, и, таким образом, один из этих двух векторов выбирается для удаления. Выбирать один из этих двух векторов можно на основе расстояния каждого из них до оставшихся векторов предсказания движения в модифицированном наборе L1: вектор между Vp и Vq, который имеет наименьшее расстояние до другого вектора из набора L1, выбирается для удаления.
Это позволяет гарантировать, что расстояние между остальными векторами в модифицированном наборе L2 было максимальным, чтобы можно было использовать по возможности более различные или разнесенные предикторы вектора движения.
После удаления выбранного вектора, значение N уменьшается (S508), после чего N сравнивается с Nmax (S510). Если значение N еще не достигло Nmax (ответ ‘нет’ при проверке S510) этапы S504 - S510 повторяются. В противном случае, если N достигло Nmax, за этапом S510 следует этап S522, описанный ниже.
Если ответом при проверке S503 является ‘нет’, то проверка S512 проверяет, меньше ли N, чем Nmax. В случае отрицательного ответа, т.е. если N=Nmax, за проверкой S512 следует этап S522, описанный ниже.
Если ответом при проверке S512 является ‘да’, т.е. если N строго меньше Nmax, то за проверкой S512 следует этап S514 получения или генерации дополнительного предиктора-кандидата вектора движения. Действительно, начиная с начального набора L1 предикторов вектора движения, можно добавлять другие кандидаты в качестве предикторов вектора движения, в заранее определенном порядке, для формирования модифицированного набора L2 предикторов вектора движения. В примере, приведенном на фиг. 7, векторы движения блоков 710, 720, 730 и 740 можно добавлять в качестве возможных предикторов вектора движения. Кроме того, 2 предиктора из 770, 760, 750, которые не были выбраны на этапе S500 можно добавлять в качестве возможных предикторов вектора движения.
Для каждого потенциальный предиктор-кандидат вектора движения MV, производится проверка, отличается ли предиктор вектора движения MV от всех предикторов-кандидатов вектора движения, ранее сохраненных в наборе L2.
Если каждый потенциальный вектор-кандидат движения рассматриваемый, например, как векторы движения блоков 710, 720, 730, 740, 750, 760 и 770 на фиг. 7, равен предиктору вектора движения из набора L2, новые ‘виртуальные’ предикторы-кандидаты вектора движения вычисляются на этапе S514.
Такие предикторы-кандидаты вектора движения называются виртуальными, поскольку они не являются векторами движения других блоков текущего изображения или опорного изображения. Виртуальные предикторы вектора движения вычисляются из существующих предикторов вектора движения, например путем добавления смещений. Например, из вектора движения MV набора L2 с координатами (MVx, MVy), можно вычислить четыре виртуальных предиктора вектора движения путем добавления/вычитания смещение off к его координатам: MV’(MVx±off, MVy±off). Обычно, off можно задавать равным 1 или 2.
Альтернативно, можно применять другие модификации компонент предиктора вектора движения MV для получения виртуальных предикторов вектора движения, для получения разнесенных предикторов вектора движения, начиная с существующих предикторов вектора движения для повышения эффективности сжатия.
Например, компоненты вектора движения MV можно модифицировать независимо, с использованием соответственно двух значений offx и offy, и offx или offy можно задавать равным 0.
Согласно варианту осуществления, оба offx и offy пропорциональны соответствующей компоненте: offx=aMVx и offy=bMVy где a и b обычно меньше 0.5. При необходимости, модифицированные координаты MVx и MVy округляются до ближайшего целочисленного значения, для представления смещение на сетке пикселей.
Согласно варианту осуществления, вспомогательный вектор движения, с заранее определенной нормой, прибавляется к вектору MV, причем вспомогательный вектор имеет такое же направление, как вектор движения MV, что представлено на фиг. 8: вспомогательный вектор 850 прибавляется к вектору 820.
В еще одном альтернативном варианте осуществления, вычисляется дисперсия векторов движения из набора L2:
Один предиктор вектора движения, полученный на этапе S514, добавляется в набор L2 предикторов вектора движения на этапе S516, и количество N увеличивается на 1 (этап S518).
Затем, на этапе S520 производится проверка, равны ли между собой N и Nmax. В случае отрицательного ответа, этапы S514-S520 повторяются.
В случае положительного ответа, достигается определенное целевое количество предикторов-кандидатов вектора движения Nmax, и после этапа S520, на кодере выполняется этап S522 выбора оптимального предиктора вектора движения для текущего блока из набора L2. Например, критерий скорости-искажения оптимизации применяется для выбора оптимального предиктора вектора движения MVi для кодирования вектора движения текущего блока.
На кодере кодируется остаток движения, т.е. разность между вектором движения текущего блока и выбранным предиктором вектора движения, а также указание предиктора вектора движения, выбранное на этапе S524. Например, индекс i выбранного предиктора вектора движения MVi из L2 кодируется, с использованием k=INTsup(log2(Nmax)) битов.
Альтернативно, можно применять статистическое кодирование индекса i.
В еще одной альтернативе, индекс i можно кодировать с использованием кода префиксного типа, например, кода Райса-Голомба, в котором каждое значение i кодируется с использованием i единиц, сопровождаемых нулями.
Алгоритм, показанный на фиг. 5, также может быть реализован декодером для генерации набора предикторов-кандидатов вектора движения или векторов-кандидатов движения для данного блока, без этапов S522 и S524.
На декодере, индекс i выбранного предиктора вектора движения MVi для данного декодируемого блока получается из битового потока, на основе Nmax и, таким образом, количества k битов, на котором закодирован индекс i. Этапы S500 - S518 аналогично реализуются для получения набора L2 предикторов вектора движения, таким образом, что индекс i, декодированный из битового потока, указывает предиктор вектора движения, фактически используемый кодером.
В случае потерь в ходе передачи, поскольку количество Nmax может систематически извлекаться декодером, принятый битовый поток может систематически анализироваться для выделения индекса i, указывающего выбранный предиктор вектора движения, даже если, в зависимости от потерянных пакетов, на декодере может не получаться полного набора L2 предикторов вектора движения.
Фиг. 6 детализирует генерацию набора предикторов-кандидатов вектора движения или векторов-кандидатов движения во втором варианте осуществления настоящего изобретения. Все этапы алгоритма, представленного на фиг. 6, могут быть реализованы программными средствами и выполняться центральным процессором 1111 устройства 1000.
Фиг. 6 представляет блок-схему операций, применяемую для данного текущего кодируемого блока, с которым связан вектор движения, указывающий опорную область в опорном изображении.
Прежде всего, аналогично этапу S502 на фиг. 5, целевое количество Nmax используемых предикторов-кандидатов вектора движения определяется на этапе S600.
Согласно варианту осуществления, Nmax выражается в виде 2k, поэтому каждое значение индекса, которое может кодироваться k битами, соответствует возможному предиктору вектора движения.
Например, для использования всех предикторов вектора движения схемы AMVP, которая предусматривает 5 предикторов вектора движения, 3 бита необходимо для кодирования индекса предиктора вектора движения. В этом случае, предпочтительно Nmax=23=8.
Начальный набор L1 предикторов-кандидатов вектора движения получается на этапе S602. Например, выбирается начальный набор из N=5 предикторов вектора движения AMVP.
Процесс сокращения применяется к начальному набору предикторов вектора движения для устранения дубликатов, с целью получения сокращенного набора предикторов вектора движения, содержащего N1 элементов. Предпочтительно, количество дубликатов каждого оставшегося вектора после процесса сокращения записывается и сохраняется в памяти для последующего использования на этапе S612, описанном ниже.
Далее проверяется (проверка S606), действительно ли N1 больше или равно Nmax, целевому количеству предикторов вектора движения. Это может указывать, что положительный исход этой проверки наступает только, если алгоритм начинается с первого набора предикторов вектора движения большее количество векторов движения, чем Nmax. В случае положительного ответа, за этапом S606 следует этап S630 выбора первых Nmax предикторов-кандидатов вектора движения из набора L1 для формирования набора L2 предикторов вектора движения.
В случае отрицательного ответа, т.е. если N1 меньше, чем Nmax, набор предикторов вектора движения следует дополнить дополнительными предикторами вектора движения.
Второй набор L1’ предикторов-кандидатов вектора движения получается на этапе S608.
Второй набор L1’ предикторов вектора движения состоит из оставшихся предикторов вектора движения первого набора L1 и из дополнительных векторов движения, например соответствующих векторам движения блока 710, 720, 730 и 740 опорного изображения, представленным на фиг. 7. Кроме того, 2 предиктора из 770, 760, 750, которые не были выбраны на этапе S600, можно добавлять в качестве возможных предикторов вектора движения. Каждый предиктор вектора движения из набора L1’ имеет соответствующий индекс.
Затем процесс сокращения применяется ко второму набору предикторов вектора движения на этапе S610 для получения сокращенного второго набора L1” предикторов вектора движения из N2 векторов. Процесс сокращения устраняет дубликаты, благодаря чему, все предикторы вектора движения из L1” отличаются друг от друга. Количество дубликатов каждого вектора, оставшегося в L1”, записывается и сохраняется в памяти для последующего использования на этапе S612, описанном ниже.
Затем на этапе S628 производится проверка, действительно ли количество предикторов вектора движения N2 больше или равно Nmax. В случае положительного ответа, за этапом S628 следует ранее описанный этап S630.
В случае отрицательного ответа, необходимо добавить дополнительные предикторы вектора движения в сокращенный второй набор L1” предикторов вектора движения для получения окончательного набора из Nmax предикторов вектора движения.
После проверки S628, в случае отрицательного ответа, значение важности назначается каждому оставшемуся предиктору-кандидату вектора движения из сокращенного второго набора L1” предикторов вектора движения на этапе S612.
В альтернативном варианте осуществления, за этапом S612 непосредственно следует проверка S606, в случае отрицательного ответа при проверке S606.
Значение важности вычисляется в этом варианте осуществления в качестве количества дубликатов данного предиктора вектора движения, с использованием количества дубликатов данного предиктора вектора движения, вычисленного и сохраненного на этапах S604 и S610. В примере, приведенном на фиг. 1, два вектора, V0 и V3, равны, поэтому вектор V0 имеет значение важности, равное 2.
В альтернативном варианте осуществления, значение важности можно вычислять как функцию расстояния до репрезентативного вектора из набора рассматриваемых векторов, например, среднее значение векторов набора или медиану векторов набора. Затем важность можно вычислить как величину, обратную расстоянию данного вектора из набора Vn до репрезентативного вектора: чем ближе вектор Vn к репрезентативному вектору набора, тем выше важность Vn.
Затем N2 оставшихся предикторов-кандидатов вектора движения упорядочиваются на этапе S614 согласно в порядке убывания значения важности. Если несколько предикторов вектора движения имеют одно и то же значение важности, их можно упорядочивать в порядке возрастания их индексов.
Переупорядоченным предикторам вектора движения переназначаются увеличивающиеся индексы {V0,V1,…,VN2-1}.
На следующем этапе S616, переменная n инициализируется в 0 и переменная N инициализируется в N2, т.е. текущее количество предикторов вектора движения в переупорядоченном наборе.
Затем, на этапе S618, следующем за этапом S616, виртуальные предикторы-кандидаты вектора движения добавляются в переупорядоченный набор. В этом варианте осуществления, виртуальные предикторы вектора движения вычисляются из оставшихся предикторов вектора движения, упорядоченных согласно их важности. Рассмотрим предиктор вектора движения с индексом n из переупорядоченного набора, Vn с координатами (Vnx, Vny). Нижеследующий список из 8 виртуальных предикторов вектора движения, заданных их координатами, можно вычислять из Vn, путем последовательного добавления +off и -off к одной или двум координатам Vn: {(Vnx+off, Vny), (Vnx-off, Vny), (Vnx+off, Vny+off), (Vnx+off, Vny-off), (Vnx-off, Vny+off), (Vnx-off, Vny-off), (Vnx, Vny+off), (Vnx, Vny-off)}.
Можно использовать любое альтернативное вычисление виртуальных предикторов вектора движения, начиная с предиктора Vn вектора движения, в частности, альтернативы, описанные выше относительно этапа S514 на фиг. 5.
Этот список из виртуальных предикторов вектора движения прибавляется к текущему набору предикторов вектора движения.
Дубликаты исключаются на этапе S620.
Значение N обновляется на этапе S622 до оставшегося количества предикторов вектора движения после удаления потенциальных дубликатов.
Затем, на этапе S624, производится проверка, действительно ли N больше или равно Nmax. В случае отрицательного ответа, за этапом S624 следует этап S634 увеличения значения n на 1, и этапы S618 - S624 повторяются.
В случае положительного ответа на этапе S624, делается вывод, что получено достаточное количество предикторов вектора движения. За этапом S624 следует этап S630 выбора первых Nmax векторов-кандидатов движения для формирования окончательного набора L2 предикторов вектора движения из Nmax векторов.
На кодере, за этапом S630 следует этап S632, аналогичный этапу S522 на фиг. 5, выбора оптимального предиктора вектора движения MVi из набора предикторов вектора движения для текущего блока, согласно заранее определенному критерию, например критерию скорости-искажения.
За этапом S632 следует этап S634 кодирования вектора движения текущего блока с использованием предиктора вектора движения MVi, аналогичный этапу S524 на фиг. 5. Например, индекс i предикторов вектора движения MVi кодируется с использованием k битов, причем k вычисляется из Nmax согласно k=INTsup(log2(Nmax)).
Альтернативно, можно применять статистическое кодирование индекса i.
В еще одной альтернативе, индекс i можно кодировать с использованием кода префиксного типа, например, кода Райса-Голомба, в котором каждое значение i кодируется с использованием i единиц, сопровождаемых нулями.
Алгоритм, показанный на фиг. 6 также может быть реализован декодером для генерации набора предикторов-кандидатов вектора движения или векторов-кандидатов движения для данного блока, за исключением того, что этапы S632 и S634 опущены на стороне декодера.
На декодере, индекс i выбранного предиктора вектора движения MVi для данного декодируемого блока получается из битового потока, на основе Nmax и, таким образом, количества k битов, на котором закодирован индекс i. Этапы S600 - S630 аналогично реализуются для получения набора L2 предикторов вектора движения, таким образом, что индекс i, декодированный из битового потока, указывает предиктор вектора движения, фактически используемый кодером.
В случае потерь в ходе передачи, поскольку количество Nmax может систематически извлекаться декодером, принятый битовый поток может систематически анализироваться для выделения индекса i, указывающего выбранный предиктор вектора движения, даже если, в зависимости от потерянных пакетов, на декодере может не получаться полного набора L2 предикторов вектора движения.
Описанные выше варианты осуществления основаны на разбиении входных изображений на блоки, но, в более общем случае, можно рассматривать любой тип участков изображения для кодирования или декодирования, в частности, прямоугольные участки или, в более общем случае, геометрические участки.
Можно предусмотреть другие альтернативные варианты осуществления, например, начинающиеся с большого набора предикторов-кандидатов вектора движения, содержащего количество N векторов, превышающее целевое количество Nmax определенных предикторов вектора движения, и применяющие алгоритм кластеризационного типа для сокращения набора векторов. Например, разбиение Вороного (Voronoi) можно применять для сокращения набора до Nmax наиболее репрезентативных векторов из набора согласно заранее заданному расстоянию между векторами набора.
В более общем случае, любая модификация или усовершенствование вышеописанных вариантов осуществления, которое может легко вообразить специалист в данной области техники, следует рассматривать как отвечающие объему изобретения.
По настоящей заявке испрашивается приоритет патентной заявки Великобритании № 1100462.9, поданной 12 января 2011 г., содержание которой в полном объеме включено в данное описание в порядке ссылки.
Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Способ кодирования содержит получение целевого количества предсказателей информации движения, подлежащих использованию для кодируемого участка изображения, и генерацию набора предсказателей информации движения с использованием полученного целевого количества. Набор генерируется посредством: получения первого набора предсказателей информации движения, каждый из которых связан с участком изображения, имеющим заранее определенное пространственное и/или временное соотношение с кодируемым участком изображения; модификации первого набора предсказателей информации движения путем удаления дублированных предсказателей информации движения для получения сокращенного набора предсказателей информации движения, содержащего первое количество предсказателей информации движения. 3 н. и 6 з.п. ф-лы, 8 ил.
1. Способ декодирования битового потока, содержащего кодированную последовательность цифровых изображений, при этом по меньшей мере один участок изображения закодирован по отношению к опорному участку изображения посредством процесса оценивания движения, которым определяется информация движения, идентифицирующая этот опорный участок изображения, причем способ содержит декодирование информации движения с использованием процесса предсказания информации движения, содержащего этапы, на которых:
получают для участка изображения декодируемого изображения один или более первых предикторов информации движения, имеющих векторы движения, полученные из векторов движения, связанных с участками изображения декодируемого изображения;
генерируют один или более вторых предикторов информации движения посредством прибавления величины смещения к или вычитания величины смещения из первых предикторов информации движения;
формируют набор предикторов информации движения из первых и вторых предикторов информации движения; и
определяют предиктор информации движения из этого набора предикторов информации движения для упомянутого участка изображения декодируемого изображения.
2. Способ по п.1, в котором величина смещения может быть задана равной заранее определенному значению.
3. Способ по п.1, в котором полученные один или более первых предикторов информации движения имеют векторы движения с компонентами X и Y, и величина смещения прибавляется к или вычитается из одного или обоих из компонентов X и Y одного из векторов движения.
4. Способ по п.3, в котором величина смещения для одного или обоих из компонентов X и Y может быть задана равной нулю.
5. Способ по п.1, в котором применение упомянутого смещения содержит прибавление заранее определенного вектора движения к вектору движения упомянутых одного или более первых предикторов информации движения для генерирования упомянутых одного или более вторых предикторов информации движения.
6. Способ по п.1, дополнительно содержащий этап, на котором декодируют элемент информации, представляющий выбранный предиктор информации движения для упомянутого участка изображения декодируемого изображения.
7. Способ по п.6, в котором упомянутый выбранный предиктор информации движения определяется из сформированного набора предикторов информации движения с использованием упомянутого декодированного элемента информации.
8. Устройство для декодирования битового потока, содержащего кодированную последовательность цифровых изображений, при этом по меньшей мере один участок изображения закодирован по отношению к опорному участку изображения посредством процесса оценивания движения, которым определяется информация движения, идентифицирующая этот опорный участок изображения, причем устройство содержит средство для декодирования информации движения с использованием процесса предсказания информации движения, каковое средство для декодирования содержит:
средство для получения, для участка изображения декодируемого изображения, одного или более первых предикторов информации движения, имеющих векторы движения, полученные из векторов движения, связанных с участками изображения декодируемого изображения;
средство для генерирования одного или более вторых предикторов информации движения посредством прибавления величины смещения к или вычитания величины смещения из первых предикторов информации движения;
средство для формирования набора предикторов информации движения из первых и вторых предикторов информации движения; и
средство для определения предиктора информации движения из этого набора предикторов информации движения для упомянутого участка изображения декодируемого изображения.
9. Машиночитаемый носитель информации, хранящий компьютерную программу, которая при ее исполнении в компьютере предписывает компьютеру выполнять способ декодирования битового потока по п.1.
Авторы
Даты
2021-12-24—Публикация
2019-11-25—Подача