Область техники, к которой относится изобретение
Данное изобретение относится к способу и устройству для кодирования последовательности цифровых изображений, и способу и устройству для декодирования соответствующего битового потока.
Данное изобретение принадлежит к области цифровой обработки сигналов, и в частности, к области сжатия видео с использованием компенсации движения для уменьшения пространственных и временных избыточностей в видеопотоках.
Описание известного уровня техники
Многие форматы сжатия видео, например, H.263, H.264, MPEG-1, MPEG-2, MPEG-4, SVC, используют дискретное косинусное преобразование (DCT), основанное на блоках, и компенсацию движения для удаления пространственных и временных избыточностей. Они могут быть названы видеоформатами с предсказанием. Каждый кадр или изображение видеосигнала разделено на вырезки, которые кодированы и могут быть декодированы раздельно. Вырезка является обычно прямоугольным участком кадра, или в более общем смысле, участком кадра или целым кадром. Кроме того, каждая вырезка разделена на макроблоки (MB), и каждый макроблок дополнительно разделен на блоки, обычно блоки 8x8 пикселей. В наиболее современном высокоэффективном кодировании видео (HEVC), в текущий момент в процессе стандартизации, каждая вырезка разделена на неперекрывающиеся наибольшие единицы кодирования (LCU), в основном блоки размером 64 пикселя x 64 пикселя. Каждая LCU может в свою очередь быть итерационно разделена на единицы кодирования (CU) меньшего переменного размера с использованием разбиения тетрарного дерева. Каждая CU может быть разбита на максимум 2 симметричные прямоугольные единицы сегментов. Кодированные кадры могут быть двух типов: кадры с временным предсказанием (либо предсказанные исходя из одного опорного кадра, называемые P-кадрами, либо предсказанные исходя из двух опорных кадров, называемые B-кадрами) и кадры с невременным предсказанием (называемые внутренними кадрами или I-кадрами).
Временное предсказание состоит в обнаружении в опорном кадре, либо предыдущем, либо будущем кадре видеопоследовательности, участка изображения или опорной области, которая является ближайшей к блоку, подлежащему кодированию. Этот этап известен как оценка движения. Далее, разность между блоком, подлежащим кодированию, и опорным участком кодируется, вместе с элементом информации движения относительно вектора движения, который указывает опорную область для использования для компенсации движения.
Для того, чтобы дополнительно уменьшить стоимость кодирования информации движения, было предложено кодировать векторы движения посредством разности от предиктора вектора движения, обычно вычисляемой из векторов движения блоков, окружающих блок, подлежащий кодированию.
В H.264, векторы движения кодируются относительно срединного предиктора, вычисленного из векторов движения, расположенных в причинной близости к блоку, подлежащему кодированию, например, из блоков, расположенных выше и слева от блока, подлежащего кодированию. Кодируется только разность, так называемый остаточный вектор движения, между срединным предиктором и вектором движения текущего блока.
Кодирование с использованием остаточных векторов движения сберегает некоторую битовую скорость, но делает необходимым, чтобы декодер выполнял то же самое вычисление предиктора вектора движения для того, чтобы декодировать значение вектора движения блока, подлежащего декодированию.
В последнее время, были предложены дополнительные улучшения, такие как использование множества возможных предикторов векторов движения. Это способ, называемый конкуренцией векторов движения, состоит в определении между несколькими предикторами векторов движения или кандидатами, какой предиктор вектора движения минимизирует стоимость кодирования, обычно стоимость «скорость передачи - искажение», для информации остаточного движения. Информация остаточного движения содержит остаточный вектор движения, т.е. разность между действительным вектором движения блока, подлежащего кодированию, и выбранным предиктором вектора движения, и элемент информации, указывающий выбранный предиктор вектора движения, такой как например, кодированное значение индекса выбранного предиктора вектора движения.
В высокоэффективном кодировании видео (HEVC), находящемся в текущий момент в процессе стандартизации, было предложено выбирать первый пространственный предиктор вектора движения из предварительно определенной группы блоков выше текущего блока, подлежащего кодированию, и второй пространственный предиктор вектора движения из другой предварительно определенной группы блоков слева от текущего блока, и временной предиктор вектора движения из идентично расположенного блока в опорном кадре. Идентично расположенный блок является блоком, расположенным в том же положении, как и блок, подлежащий кодированию, но в другом изображении. Эта схема выбора предиктора вектора движения называется усовершенствованным предсказанием вектора движения (AMVP).
В результате выбора предиктора вектора движения получается набор кандидатов предикторов векторов движения, смешивающий пространственные предикторы и временные предикторы, данный набор состоит из 0, 1, 2 или 3 кандидатов в зависимости от доступности различных пространственных и временных предикторов векторов движения. Для того, чтобы уменьшить издержки сигнализации предиктора вектора движения в битовом потоке, набор предикторов вектора движения уменьшается посредством применения процесса устранения, ликвидирующего дублированные векторы движения, т.е. векторы движения, которые имеют одинаковое значение. Например, если первый и второй пространственные предикторы векторов движения, упомянутые выше, равны, только один из них, а также временной предиктор вектора движения, должен быть удержан в качестве кандидатов предсказания векторов движения. В этом случае, для указания декодеру индекса предиктора вектора движения необходим только один бит.
Кандидаты предикторов векторов движения могут также быть упорядочены так, чтобы расположить наиболее вероятный предиктор вектора движения в первом положении, так как минимальные издержки возникают, если первый кандидат выбран в качестве наилучшего предиктора.
Значительное уменьшение набора предикторов ведет к повышению издержек сигнализации, так как указание выбранного предиктора вектора движения может быть кодировано с использованием меньшего количества битов. При ограничении, набор кандидатов может быть уменьшен до 1, например, если все предикторы векторов движения равны, и вследствие этого нет необходимости вставлять какую-либо информацию, относящуюся к выбранному предиктору вектора движения, в битовый поток.
Как описано выше, в текущем предложении HEVC, векторы движения кодируются посредством кодирования с предсказанием, с использованием множества предикторов векторов движения, которые могут быть пространственными или временными предикторами. Вследствие этого, для каждого кадра, который используется в качестве опорного кадра для получения идентично расположенного предиктора вектора движения, необходимо хранить на сторонах кодера и декодера связанные с ними векторы движения. По умолчанию, размер памяти векторов движения является значительным, учитывая сначала степень детализации представления движения (в текущем проекте HEVC, минимальный размер внешнего блока составляет 4х4), и во-вторых, что существуют до двух векторов на каждый блок движения для B_SLICE. Оценено, что для картинок с разрешением 4Kx2K и использования степени детализации одного набора векторов движения на каждый блок из 4х4 пикселей, на каждый кадр требуется 26 Мбит.
Yeping Su и Andrew Segall, "On motion vector competition", JCTVC-C257, Guangzhou, CN, 7-15 октября, 2010, и Yeping Su и Andrew Segall, "CE9: Reduced resolution storage of motion vector data", JCTVC-D072, Daegu, KR, 20-28 января, 2011, предлагает уменьшить размер памяти векторов движения, необходимый на стороне декодера для хранения временных идентично расположенных векторов и опорных индексов. Предложенное решение состоит из простого поблокового суммирования векторов движения, как проиллюстрировано на Фиг. 1. В текущей реализации HEVC, один вектор движения из 16 удерживается в каждом квадрате из 64x64 пикселей, и учитывается вектор движения верхнего левого блока 4х4. Это уменьшает требования к памяти на коэффициент 16. Этот коэффициент уменьшения сигнализируется в наборе параметров последовательности. Процесс сжатия памяти векторов движения выполняется после процесса адаптивной контурной фильтрации и перед тем, как декодированная картинка выводится в буфер декодированных картинок (DPB).
Это решение обеспечивает возможность значительного уменьшения памяти векторов движения с ухудшением эффективности кодирования. Однако, это решение не учитывает разнесение предикторов в наборе для суммирования блоков при сжатии памяти MV. Более того, были проверены несколько критериев, но без учета разнесения. К тому же, это решение не является ни адаптивным, ни гибким. Кроме того, когда требуется большее сжатие, необходима более высокая степень уменьшения удаления векторов движения, что может привести к значительной потере эффективности кодирования.
WO 2004/012459A описывает другое предложение для ограничения числа хранящихся векторов движения. Информация ограничения кодируется как информация заголовка (возможно на глобальном уровне, как например SPS, на уровне картинки, как например PPS, или уровне вырезки, как например заголовок вырезки). Эта информация ограничения указывает число картинок или число макроблоков, для которых хранятся векторы движения. Если кодированный блок относится к вектору движения, который сохранен, то используется этот вектор движения, иначе используется нулевой вектор движения (обе составляющие равны 0). Однако, это решение не учитывает суммирование блоков.
Помимо предложений уменьшить требования к хранению векторов движения, другие прежние предложения стремились к улучшениям предикторов для AMVP.
Например, Jung, G. Clare, (Orange Labs), "Temporal MV predictor modification for MV-Comp, Skip, Direct and Merge schemes", JCTVC-D164, Daegu, KR, 20-28 январь, 2011, предлагает использование центрированного временного предиктора, см. также WO 2011/001077 A. В этом предложении идентично расположенный блок найден посредством отображения центра блока в идентично расположенный опорный кадр, вместо первоначального (верхнего левого) для блока (как предыдущая версия HEVC). Центральный и верхний левый векторы движения имеют одинаковое значение, если идентично расположенный блок имеет тот же размер или больший размер, чем текущий блок. Фиг. 2 показывает идентично расположенный блок, подразделенный на 64 блока 4х4, причем каждый имеет свой собственный вектор движения. Этот идентично расположенный блок используется для текущего блока 32x32, подлежащего кодированию, и выбранный временной предиктор является вектором движения затененного блока 4х4 в центре идентично расположенного блока.
Целью выбора центра сегмента вместо верхнего левого является обнаружить лучшее представление движения идентично расположенного блока. Теоретически, центр блока является наилучшим представлением блока, так как это центр тяжести блока. Но временной предиктор из идентично расположенного блока не является единственным предиктором в наборе предикторов AMVP.
Jian-Liang Lin, Yu-Pao Tsai, Yu-Wen Huang, Shawmin Lei, (MediaTek Inc.), "Improved Advanced Motion Vector Prediction", JCTVC-D125, Daegu, KR, 20-28 январь, 2011, предлагает добавить несколько временных блоков, как изображено на Фиг. 3. Предложены 4 предиктора, временной идентично расположенный верхний левый (T) и три других угла (нижний левый (I), нижний правый (H), верхний правый (E)). Таким образом, предикторы добавляются в набор предикторов, и они конкурируют друг с другом согласно критерию «скорость передачи - искажение».
Ни одно из вышеприведенных двух предложений для улучшения набора предикторов векторов движения не предусматривает сжатие памяти векторов движения.
Желательно решить один или более недостатков известного уровня техники.
Также желательно уменьшить требования к памяти векторов движения. Предпочтительно, это уменьшение должно быть достигнуто без ухудшения или без значительного дополнительного ухудшения эффективности кодирования. Еще более предпочтительно, это уменьшение должно быть достигнуто в комбинации с улучшениями эффективности кодирования.
Также желательно достигнуть улучшений эффективности кодирования. Предпочтительно, эти улучшения должны быть достигнуты без ухудшения или без значительного ухудшения по требованиям к памяти векторов движения. Еще более предпочтительно, эти улучшения должны быть достигнуты в комбинации с уменьшениями требований к памяти векторов движения.
Также желательно обнаружить хорошие репрезентативные векторы движения в опорном кадре для использования в качестве предикторов, однако используются те репрезентативные векторы движения, т.е., даже если они используются в целях, отличных от уменьшения требования к памяти векторов движения или улучшения эффективности кодирования.
Сущность изобретения
Согласно первому аспекту настоящего изобретения предоставлен способ определения временного предиктора вектора движения, включаемого, вместе с одним или более пространственными предикторами векторов движения, в набор предикторов векторов движения для подлежащего кодированию блока текущего кадра, причем способ содержит этап, на котором выбирают, в качестве упомянутого временного предиктора, один вектор движения из числа векторов движения в опорном блоке опорного кадра, отличного от упомянутого текущего кадра, причем опорный блок является блоком опорного кадра, расположенным идентично упомянутому блоку, подлежащему кодированию, или блоком опорного кадра, соседствующим с идентично расположенным блоком, и выбор основывается на критерии разнесения для достижения разнесения среди предикторов упомянутого набора.
Такой способ может быть использован для обнаружения наилучшего вектора движения для поблокового суммирования векторов во время процесса сжатия памяти. Выбор наилучшего предиктора может быть основан на пространственном и/или пространственно-временном расстоянии между положениями предикторов, которые могли бы быть использованы для предсказания текущего вектора движения или для предиктора режимов слияния и пропуска.
В одном варианте осуществления положение вектора движения выбирается среди набора положений, у которого, в том, что касается пространственного расстояния, самое дальнее положение по сравнению с положениями других предикторов. Более того, рассматриваемые положения должны быть хорошим представлением соседних блоков или идентично расположенного блока. Таким образом, возможно получить разнесение наборов предикторов.
Согласно второму аспекту настоящего изобретения предоставлен способ определения временного предиктора вектора движения, включаемого, вместе с одним или более пространственными предикторами векторов движения, в набор предикторов векторов движения для подлежащего кодированию блока текущего кадра, причем способ содержит этап, на котором выбирают, в качестве упомянутого временного предиктора, вектор движения в нижнем правом положении блока опорного кадра, расположенного идентично упомянутому блоку, подлежащему кодированию.
Такой выбор хорошо работает с относительно небольшими размерами блоков и имеет преимущество отсутствия нагрузки обработки, так как данный выбор предварительно определен.
Согласно третьему аспекту настоящего изобретения предоставлен способ определения временного предиктора вектора движения, включаемого, вместе с одним или более пространственными предикторами векторов движения, в набор предикторов векторов движения для подлежащего кодированию блока текущего кадра, причем способ содержит этап, на котором выбирают, в качестве упомянутого временного предиктора, вектор движения в нижнем правом положении блока опорного кадра, расположенного идентично упомянутому блоку, подлежащему кодированию, или в предварительно определенном положении, вблизи от упомянутого нижнего правого положения, в блоке опорного кадра, соседствующем с идентично расположенным блоком.
В этом аспекте данного изобретения выбор расширяется, чтобы включать в себя положения вблизи от упомянутого нижнего правого положения, в блоке опорного кадра, соседствующем с идентично расположенным блоком.
Такой выбор также хорошо работает с относительно небольшими размерами блоков и имеет преимущество отсутствия нагрузки обработки, так как данный выбор предварительно определен.
Согласно четвертому аспекту настоящего изобретения предоставлен способ определения временного предиктора вектора движения, включаемого, вместе с одним или более пространственными предикторами векторов движения, в набор предикторов векторов движения для подлежащего кодированию блока текущего кадра, причем способ содержит этап, на котором выбирают, в качестве упомянутого временного предиктора, один вектор движения из числа векторов движения в опорном блоке опорного кадра, отличного от упомянутого текущего кадра, причем опорный блок является блоком опорного кадра, расположенным идентично упомянутому блоку, подлежащему кодированию, или блоком опорного кадра, соседствующим с идентично расположенным блоком, и выбор зависит от размера блока для блока, подлежащего кодированию.
Такой способ обеспечивает возможность выбора вектора движения по-разному для разных размеров блоков. В экспериментах, хорошие результаты были достигнуты с помощью этого способа.
Например, в случае первого размера блока вектор движения в первом предварительно определенном положении в опорном блоке может быть выбран в качестве упомянутого временного предиктора, и в случае второго размера блока, отличного от первого размера блока, вектор движения во втором предварительно определенном положении в опорном блоке, отличном от первого положения, может быть выбран в качестве упомянутого временного предиктора. Когда первый размер блока меньше, чем второй размер блока, эффективно сделать первым положением нижнее правое положение в идентично расположенном блоке и сделать вторым положением центральное положение в идентично расположенном блоке.
В качестве альтернативы, в случае первого размера блока один вектор движения в опорном блоке может быть выбран в качестве упомянутого временного предиктора с использованием первого способа выбора, и в случае второго размера блока, отличного от первого размера блока, один вектор движения в опорном блоке может быть выбран с использованием второго способа выбора, отличного от упомянутого первого способа.
Некоторые варианты осуществления предусматривают определение относительных положений по меньшей мере одного упомянутого пространственного предиктора и по меньшей мере одного вектора движения упомянутого опорного блока, и выбор упомянутого временного предиктора в зависимости от упомянутых относительных положений. Это является эффективным способом гарантировать управляемое разнесение между предикторами.
Другие варианты осуществления предусматривают определение доступности по меньшей мере одного упомянутого пространственного предиктора и выбора упомянутого временного предиктора в зависимости от упомянутой доступности. Снова, это является эффективным способом гарантировать управляемое разнесение. Например, в некоторых реализациях могут быть исключены один или более пространственных предикторов. Также для некоторых положений в кадре, например, вверху кадра или у левого края кадра, заранее известно, что один или более пространственных предикторов недоступны.
Другие варианты осуществления используют таблицу соответствия для выбора упомянутого временного предиктора, причем таблица соответствия хранит для одной или более разных выбираемых комбинаций пространственных предикторов информацию, идентифицирующую вектор движения опорного блока, который должен быть выбран для рассматриваемой комбинации. Это имеет низкую сложность и может работать быстро.
Способы по первому по четвертый аспектам могут быть использованы для достижения уменьшения требования к памяти для хранения векторов движения. Они могут быть также использованы для улучшения эффективности кодирования.
В случае уменьшения памяти, пространственный предиктор выбирается до выбора по меньшей мере одного пространственного предиктора. Соответственно, в этом случае, данные способы могут дополнительно содержать этап, на котором оценивают положение рассматриваемого пространственного предиктора в зависимости от среднего положения среди потенциальных положений рассматриваемого пространственного предиктора. Среднее может быть взвешено, по желанию, согласно относительным частотам, с которыми будут выбираться потенциальные положения. Это, в свою очередь, зависит от процесса выбора, применяемого, например, в AMVP, при этом поиск проводится справа налево для верхнего предиктора и снизу вверх для левого предиктора. Это оказывает влияние на относительные частоты.
Согласно пятому аспекту настоящего изобретения изобретения предоставлен способ сохранения векторов движения, которые должны быть использованы в качестве временных предикторов векторов движения, содержащий этап, на котором сохраняют, из числа векторов движения подлежащего кодированию блока текущего кадра, вектор движения, имеющий то же положение, как и временной предиктор, определенный способом по любому из первого по четвертый аспектов настоящего изобретения, так что сохраненный вектор движения доступен в качестве временного предиктора для кодирования дальнейшего кадра относительно упомянутого текущего кадра, и не сохраняют другие упомянутые векторы движения подлежащего кодированию блока текущего кадра.
Это улучшает эффективность кодирования по сравнению с прежними способами суммирования блоков.
Согласно шестому аспекту настоящего изобретения, предоставлен способ генерирования набора предикторов векторов движения для подлежащего кодированию блока текущего кадра, причем разрешено, чтобы набор включал в себя по меньшей мере один пространственный предиктор вектора движения и по меньшей мере один временной предиктор вектора движения, содержащий использование способа по любому из первого по четвертый аспектов настоящего изобретения для определения данного упомянутого временного предиктора вектора движения из набора или одного из них.
Это может предоставить улучшения эффективности кодирования. В этом аспекте настоящего изобретения возможно хранить все векторы движения, т.е. нет необходимости уменьшать число хранящихся векторов движения, хотя это, конечно, предпочтительно.
В этом случае, по меньшей мере один упомянутый пространственный предиктор выбирается до определения временного предсказания, и определение временного предиктора предпочтительно проводится в зависимости от выбранного пространственного предиктора(ов). В отличие от этого, при применении уменьшения памяти, вследствие этого, могут быть приняты во внимание действительные итоги выборов пространственных предикторов, что дает хорошие результаты в том, что касается улучшения разнесения.
Согласно седьмому аспекту настоящего изобретения, предоставлен способ кодирования последовательности цифровых изображений в битовый поток, при этом по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к участку опорного изображения, содержащий способ определения временного предиктора вектора движения согласно любому из первого по четвертый аспектов настоящего изобретения.
Согласно восьмому аспекту настоящего изобретения, предоставлен способ кодирования последовательности цифровых изображений в битовый поток, при этом по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к участку опорного изображения, содержащий способ сохранения векторов движения согласно пятому аспекту настоящего изобретения.
Согласно девятому аспекту настоящего изобретения, предоставлен способ кодирования последовательности цифровых изображений в битовый поток, при этом по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к участку опорного изображения, содержащий способ генерирования набора предикторов векторов движения согласно шестому аспекту настоящего изобретения.
В десятом - пятнадцатом аспектах настоящего изобретения, способы по первому - шестому аспектам могут быть также использованы в способе декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к опорному изображению.
Согласно шестнадцатому аспекту настоящего изобретения предоставлено устройство для определения временного предиктора вектора движения, включаемого, вместе с одним или более пространственными предикторами векторов движения, в набор предикторов векторов движения для подлежащего кодированию блока текущего кадра, причем устройство содержит средство для выбора, в качестве упомянутого временного предиктора, одного вектора движения из числа векторов движения в опорном блоке опорного кадра, отличного от упомянутого текущего кадра, причем опорный блок является блоком опорного кадра, расположенным идентично упомянутому блоку, подлежащему кодированию, или блоком опорного кадра, соседствующим с идентично расположенным блоком, и выбор основывается на критерии разнесения для достижения разнесения среди предикторов упомянутого набора.
Согласно семнадцатому аспекту настоящего изобретения предоставлено устройство для определения временного предиктора вектора движения, включаемого, вместе с одним или более пространственными предикторами векторов движения, в набор предикторов векторов движения для подлежащего кодированию блока текущего кадра, причем устройство содержит средство для выбора, в качестве упомянутого временного предиктора, вектора движения в нижнем правом положении блока опорного кадра, расположенного идентично упомянутому блоку, подлежащему кодированию.
Согласно восемнадцатому аспекту настоящего изобретения предоставлено устройство для определения временного предиктора вектора движения, включаемого, вместе с одним или более пространственными предикторами векторов движения, в набор предикторов векторов движения для подлежащего кодированию блока текущего кадра, причем устройство содержит средство для выбора, в качестве упомянутого временного предиктора, вектора движения в нижнем правом положении блока опорного кадра, расположенного идентично упомянутому блоку, подлежащему кодированию, или в предварительно определенном положении, вблизи от упомянутого нижнего правого положения, в блоке опорного кадра, соседствующем с идентично расположенным блоком.
Согласно девятнадцатому аспекту настоящего изобретения предоставлено устройство для определения временного предиктора вектора движения, включаемого, вместе с одним или более пространственными предикторами векторов движения, в набор предикторов векторов движения для подлежащего кодированию блока текущего кадра, причем устройство содержит средство для выбора, в качестве упомянутого временного предиктора, одного вектора движения из числа векторов движения в опорном блоке опорного кадра, отличного от упомянутого текущего кадра, причем опорный блок является блоком опорного кадра, расположенным идентично упомянутому блоку, подлежащему кодированию, или блоком опорного кадра, соседствующим с идентично расположенным блоком, и выбор зависит от размера блока для блока, подлежащего кодированию.
Согласно двадцатому аспекту настоящего изобретения предоставлено устройство для хранения векторов движения, которые должны быть использованы в качестве временных предикторов векторов движения, содержащее средство управления для побуждения сохранения, из числа векторов движения подлежащего кодированию блока текущего кадра, вектора движения, имеющего то же положение, как и временной предиктор, определенный устройством по любому из шестнадцатого по девятнадцатый аспектов настоящего изобретения, так что сохраненный вектор движения доступен в качестве временного предиктора для кодирования дальнейшего кадра относительно упомянутого текущего кадра, и для предотвращения хранения других упомянутых векторов движения подлежащего кодированию блока текущего кадра.
Согласно двадцать первому аспекту настоящего изобретения, предоставлено устройство для генерирования набора предикторов векторов движения для подлежащего кодированию блока текущего кадра, причем разрешено, чтобы набор включал в себя по меньшей мере один пространственный предиктор вектора движения и по меньшей мере один временной предиктор вектора движения, содержащее устройство по любому из шестнадцатого по девятнадцатый аспектов настоящего изобретения для определения данного упомянутого временного предиктора вектора движения из набора или одного из них.
Согласно двадцать второму аспекту настоящего изобретения, предоставлено устройство для кодирования последовательности цифровых изображений в битовый поток, при этом по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к участку опорного изображения, содержащее устройство по любому из шестнадцатого по девятнадцатый аспектов для определения временного предиктора вектора движения.
Согласно двадцать третьему аспекту настоящего изобретения, предоставлено устройство для кодирования последовательности цифровых изображений в битовый поток, при этом по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к участку опорного изображения, содержащее устройство для хранения векторов движения по двадцатому аспекту настоящего изобретения.
Согласно двадцать четвертому аспекту настоящего изобретения, предоставлено устройство для кодирования последовательности цифровых изображений в битовый поток, при этом по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к участку опорного изображения, содержащее устройство для генерирования набора предикторов векторов движения по двадцать первому аспекту настоящего изобретения.
Согласно двадцать пятому аспекту настоящего изобретения, предоставлено устройство для кодирования битового потока, содержащего кодированную последовательность цифровых изображений, при этом по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к участку опорного изображения, содержащее устройство по любому из шестнадцатого по девятнадцатый аспектов для определения временного предиктора вектора движения.
Согласно двадцать шестому аспекту настоящего изобретения, предоставлено устройство для кодирования битового потока, содержащего кодированную последовательность цифровых изображений, при этом по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к участку опорного изображения, содержащее устройство для хранения векторов движения по двадцатому аспекту настоящего изобретения.
Согласно двадцать седьмому аспекту настоящего изобретения, предоставлено устройство для кодирования битового потока, содержащего кодированную последовательность цифровых изображений, при этом по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к участку опорного изображения, содержащее устройство для генерирования набора предикторов векторов движения по двадцать первому аспекту настоящего изобретения.
Настоящее изобретение также распространяется на программы, которые при выполнении на компьютере или процессоре предписывают компьютеру или процессору осуществлять любой из способов, описанных выше, или которые при загрузке в программируемое устройство предписывают этому устройству становиться любым из устройств, описанных выше. Программа может быть предоставлена сама по себе, или переноситься несущей средой. Несущая среда может быть носителем хранения или записывающим носителем, или она может быть средой передачи, такой как сигнал. Программа, осуществляющая настоящее изобретение, может быть кратковременной или некратковременной.
Как описано выше, в вариантах осуществления настоящего изобретения положения пространственных предикторов принимаются во внимание для создания разнесения в наборе предикторов, вместо использования наилучшего представления набора предикторов.
Для сжатия памяти MV, получены значительные результаты по сравнению с другими предложениями. Также нет влияния на сложность вычисления по сравнению с известным уровнем техники.
Данное изобретение может быть также использовано для процесса получения вектора движения для того, чтобы создать разнесение в наборе предикторов.
Данное изобретение может быть также использовано для увеличения эффективности кодирования при сжатии памяти векторов движения. Более точно, в этом случае, возможно уменьшить потерю (в том, что касается эффективности кодирования), созданную суммированием блоков при сжатии памяти векторов движения, или увеличить степень сжатия (при сжатии памяти векторов движения) при эффективности кодирования, аналогичной классическому суммированию блоков.
Соответственно, варианты осуществления данного изобретения могут улучшить эффективность кодирования схемы AMVP и режима слияния.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Теперь будет сделана ссылка, в качестве примера, на прилагающиеся чертежи, на которых:
- Фиг. 1, рассмотренная выше, является схематичным представлением для использования при разъяснении прежнего предложения для уменьшения требования к памяти векторов движения;
- Фиг. 2, также рассмотренная выше, является схематичным представлением для использования при разъяснении прежнего предложения для улучшения набора предикторов векторов движения;
- Фиг. 3, также рассмотренная выше, является схематичным представлением для использования при разъяснении другого прежнего предложения для улучшения набора предикторов векторов движения;
- Фиг. 4 показывает части устройства, подходящего для реализации кодера или декодера, согласно варианту осуществления настоящего изобретения;
- Фиг. 5 показывает блок-схему частей кодера согласно варианту осуществления настоящего изобретения;
- Фиг. 6 показывает последовательность изображений, обработанных кодером по Фиг. 5;
- Фиг. 7 иллюстрирует блок-схему частей декодера согласно варианту осуществления данного изобретения;
- Фиг. 8 является схематичным представлением для использования при разъяснении способа определения набора предикторов векторов движения, который может быть использован кодером по Фиг. 5 и декодером по Фиг. 7;
- Фиг. 9 является схемой последовательности этапов, проводимых кодером по Фиг. 5, когда используется способ по Фиг. 8;
- Фиг. 10 является схемой последовательности этапов, проводимых декодером по Фиг. 7, когда используется способ по Фиг. 8;
- Фиг. 11 является схемой последовательности операций способа суммирования блоков векторов движения, используемого кодером по Фиг. 5 и декодером по Фиг. 7;
- Фиг. 12 является схематичным представлением для использования при разъяснении принципа лежащего в основе способа по Фиг. 11; и
- Фиг. 13A - 13C показывают соответствующие матрицы расстояний, подходящие для использования в способе по Фиг. 11.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Фиг. 4 иллюстрирует схему устройства 1000, адаптированного для реализации кодера согласно варианту осуществления настоящего изобретения или для реализации декодера согласно варианту осуществления настоящего изобретения. Устройство 1000 является, например, микрокомпьютером, рабочей станцией или легким портативным устройством.
Устройство 1000 содержит шину 1113 связи, к которой предпочтительно присоединены:
- центральный блок 1111 обработки, такой как микропроцессор, обозначенный как CPU;
- постоянная память (ROM) 1107, которая хранит одну или более компьютерных программ для реализации данного изобретения;
- оперативная память (RAM) 1112, которая хранит исполняемый код способа данного изобретения и предоставляет регистры, адаптированные для записи переменных и параметров, необходимых для реализации способа кодирования последовательности цифровых изображений и/или способа декодирования битового потока; и
- интерфейс 1102 связи, присоединенный к сети 1103 связи, по которой передаются цифровые данные, которые должны быть обработаны.
Память векторов движения (MVM) 1112a образует часть RAM 1112 и используется для хранения векторов движения опорных кадров.
Необязательно, устройство 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)).
Фиг. 5 иллюстрирует блок-схему кодера 30 согласно варианту осуществления данного изобретения. Кодер представлен соединенными модулями, причем каждый модуль адаптирован для реализации, например, в виде программных инструкций, которые должны быть исполнены посредством CPU 1111 устройства 1000, соответствующего этапа способа, реализующего вариант осуществления данного изобретения.
Первоначальная последовательность цифровых изображений с i0 по in 301 принимается в качестве входа кодером 30. Каждое цифровое изображение представлено набором выборок, известных как пиксели.
Битовый поток 310 выводится кодером 30.
Битовый поток 310 содержит множество единиц кодирования или вырезок, причем каждая вырезка содержит заголовок вырезки для кодирования значений параметров кодирования, используемых для кодирования вырезки и тела вырезки, содержащих кодированные видеоданные. В HEVC эти вырезки разделены на неперекрывающиеся наибольшие единицы кодирования (LCU), в основном блоки размером 64 пикселя x 64 пикселя. Каждая LCU может в свою очередь быть итерационно разделена на единицы кодирования (CU) меньшего переменного размера с использованием разбиения тетрарного дерева. Каждая CU может быть разбита на максимум 2 симметричные прямоугольные единицы сегментов (PU).
Фиг. 6 показывает последовательность 301 цифровых изображений i, вырезок 103, LCU 104, CU 105, PU 106 и TU 107. TU (единица преобразования) задана отдельно от PU для преобразования и квантования в CU.
Следует отметить, что в дальнейшем описании используется термин "блок" вместо специальной терминологии CU и PU, используемой в HEVCA, CU или PU является блоком пикселей.
Ссылаясь на Фиг. 5, входные цифровые изображения i разделены на блоки модулем 302. Эти блоки являются участками изображений и могут быть переменных размеров (например, 4х4, 8x8, 16x16, 32x32, 64x64).
Режим кодирования выбирается для каждого входного блока модулем 306. Модуль 306 описан позже.
Есть два семейства режимов кодирования: кодирование с пространственным предсказанием или внутрикадровое кодирование, и кодирование с временным предсказанием или межкадровое кодирование. Протестированы возможные режимы кодирования.
Модуль 303 реализует внутрикадровое предсказание, в котором заданный блок, подлежащий кодированию, предсказан посредством "внутрикадрового" предиктора, причем блок пикселей сконструирован из уже кодированной информации, например, вычисленной из пикселей соседнего заданного блока, подлежащего кодированию. Указание выбранного внутрикадрового предиктора и разности между заданным блоком и его предиктором кодируется, если внутрикадровое кодирование выбрано модулем 306.
Временное предсказание реализовано модулями 304 и 305. Во-первых выбирается опорное изображение из набора опорных изображений 316, и участок опорного изображения, также называемый опорной областью, который является ближайшей областью к заданному блоку, подлежащему кодированию, выбирается модулем 304 оценки движения. В основном, модуль 304 оценки движения использует алгоритм сравнения блоков (BMA).
Что касается "межкадрового" кодирования, возможны два типа предсказания. Моно-предсказание (P-тип) состоит из предсказания блока посредством ссылки на одну опорную область из одного опорного изображения. Двойное-предсказание (B-тип) состоит из предсказания блока посредством ссылки на две опорные области из одного или более опорных изображений. В модуле 304 делается оценка движения между текущим блоком и опорными изображениями 316 для того, чтобы идентифицировать, в одном или нескольких этих опорных изображениях, один (P-тип) или несколько (B-тип) блоков пикселей для использования в качестве предикторов этого текущего блока. В этом случае, когда используются несколько предикторов блоков (B-тип), они сливаются для генерирования одиночного блока предсказания. Используемые опорные изображения являются изображениями в видеопоследовательности, которые уже были кодированы и затем реконструированы (посредством декодирования).
Разность между выбранной опорной областью и заданным блоком, также называемая остаточным блоком, вычисляется модулем 305 компенсации движения. Выбранная опорная область указана вектором движения.
Информация относительно вектора движения и остаточного блока кодируется, если модулем 306 выбрано межкадровое предсказание. Чтобы дополнительно уменьшить битовую скорость, вектор движения кодируется посредством разности относительно предиктора вектора движения. Набор предикторов векторов движения, также называемых предикторами информации движения, получается из поля 318 векторов движения посредством предсказания векторов движения и модуля 317 кодирования. Работа модуля 317 будет подробно описана позднее относительно Фиг. 8 и 9.
Модуль выбора режима 306 кодирования использует критерий стоимости кодирования, такой как критерий «скорость передачи - искажение», чтобы определить какой из режимов внутрикадрового и межкадрового предсказания является наилучшим режимом. Преобразование 307 применяется к остаточному блоку, полученные преобразованные данные затем квантуются модулем 308 и энтропийно кодируются модулем 309. Преобразование применяется к вышеупомянутой единице преобразования (TU), которая включена в блок. TU может быть дополнительно поделена на меньшие TU с использованием так называемого разбиения остаточного тетрарного дерева (RQT), как показано на Фиг. 6. В HEVC используются в основном 2 или 3 уровня разбиения и установленными размерами преобразования являются от 32x32, 16x16, 8x8 и 4x4. Основа преобразования получена из дискретного косинусного преобразования DCT.
Наконец, кодированный остаточный блок текущего блока, подлежащего кодированию, вставляется в битовый поток 310, вместе с информацией относительно используемого предиктора. Для блоков, кодированных в режиме 'пропуска', в битовом потоке кодируется только ссылка на предиктор, без какого-либо остаточного блока.
Для того, чтобы вычислить "внутрикадровые" предикторы или сделать оценку движения для "межкадровых" предикторов, кодер выполняет декодирование уже кодированных блоков посредством так называемого контура 311-315 декодирования. Контур декодирования делает возможным реконструкцию блоков и изображений из квантованных преобразованных остатков.
Квантованный преобразованный остаток деквантуется в модуле 311 посредством применения обратного квантования к остатку, предоставленному модулем 308, и реконструируется в модуле 312 посредством применения обратного преобразования к остатку из модуля 307.
Если остаток образуется из-за "внутрикадрового" кодирования, то в модуле 313 используемый "внутрикадровый" предиктор добавляется к этому остатку для того, чтобы восстановить реконструированный блок, соответствующий первоначальному блоку, модифицированному посредством потерь, возникающих из-за преобразования с потерей, здесь операций квантования.
Если, с другой стороны, остаток образуется из-за "межкадрового" кодирования, блоки, указанные текущими векторами движения (эти блоки принадлежат опорным изображениям 316, на которые делается ссылка посредством индексов текущих изображений), сливаются при добавлении к этому декодированному остатку в модуле 314. Таким образом получается первоначальный блок, модифицированный потерями, возникающими из-за операций квантования.
Последний контурный фильтр 315 применяется к реконструированному сигналу для того, чтобы уменьшить эффекты, созданные тяжелым квантованием полученных остатков, и улучшить качество сигнала. Контурный фильтр содержит две ступени, фильтр "удаления блочности" и линейную фильтрацию. Фильтрация для удаления блочности сглаживает границы между блоками для того, чтобы визуально смягчить эти высокие частоты, созданные кодированием. Линейная фильтрация дополнительно улучшает сигнал с использованием коэффициентов фильтра, адаптивно определяемых в кодере. Фильтрация модулем 315 таким образом применяется к изображению, когда все блоки или пиксели этого изображения были декодированы.
Профильтрованные изображения, также называемые реконструированными изображениями, затем сохраняются как опорные изображения 316 для того, чтобы обеспечить возможность последующих "межкадровых" предсказаний, имеющих место во время сжатия следующих изображений текущей видеопоследовательности.
В контексте HEVC, возможно использовать несколько опорных изображений 316 для оценки компенсации движения текущего изображения. Другими словами, оценка движения проводится над N изображениями. Таким образом, наилучшие "межкадровые" предикторы текущего блока, для компенсации движения, выбраны в некоторых из многочисленных опорных изображений. Следовательно два примыкающих блока могут иметь два блока предиктора, которые происходят из двух отличных опорных изображений. Это, в частности, является причиной, почему, в сжатом битовом потоке, указывается индекс опорного изображения (в дополнение к вектору движения), используемого для блока предиктора.
Использование многочисленных опорных изображений является как инструментом для противостояния ошибкам, так и инструментом для улучшения эффективности сжатия. Группа VCEG рекомендует ограничение числа опорных изображений до четырех.
Фиг. 7 иллюстрирует блок-схему декодера 40 согласно варианту осуществления данного изобретения. Декодер представлен соединенными модулями, причем каждый модуль адаптирован для реализации, например, в виде программных инструкций, которые должны быть исполнены посредством CPU 1111 устройства 1000, соответствующего этапа способа, реализующего вариант осуществления данного изобретения.
Декодер 40 принимает битовый поток 401, содержащий единицы кодирования, причем каждая единица кодирования состоит из заголовка, содержащего информацию о параметрах кодирования, и тело, содержащее кодированные видеоданные. Как разъяснено ранее со ссылкой на Фиг. 5, кодированные видеоданные энтропийно кодированы, и индексы предикторов векторов движения кодируются, для заданного блока, с предварительно определенным числом битов. Принятые кодированные видеоданные энтропийно декодируются модулем 402, деквантуются модулем 403 и затем обратное преобразование применяется модулем 404.
В частности, когда принятые кодированные видеоданные соответствуют остаточному блоку текущего блока, подлежащего декодированию, декодер также декодирует информацию предсказания движения из битового потока, с тем чтобы обнаружить опорную область, используемую кодером.
Модуль 410 применяет декодирование вектора движения для каждого текущего блока, кодированного посредством предсказания движения. Аналогично модулю 317 кодера по Фиг. 5, модуль 410 декодирования вектора движения использует информацию (поле 411 векторов движения, которое аналогично полю 318 векторов движения на Фиг. 5), относящуюся к векторам движения из текущего кадра и из опорных кадров, чтобы сгенерировать набор предикторов векторов движения. Работа модуля 410 будет более подробно описана позднее со ссылкой на Фиг. 10. Если битовый поток принят без потерь, декодер генерирует точно такой же набор предикторов векторов движения как и кодер. Как только был получен индекс предиктора вектора движения для текущего блока, если не возникло потерь, действительное значение вектора движения, связанного с текущим блоком, может быть декодировано и подано в модуль 406, который применяет обратную компенсацию движения. Опорная область, указанная декодированным вектором движения извлекается из опорного изображения из числа хранящихся опорных изображений 408 и также подается в модуль 406 для обеспечения ему возможности применения обратной компенсации движения.
В случае, когда было применено внутрикадровое предсказание, обратное внутрикадровое предсказание применяется модулем 405.
В результате декодирования согласно либо межкадровому, либо внутрикадровому режиму, получен декодированный блок. Фильтр удаления блочности применяется модулем 407, аналогично фильтру 315 удаления блочности, применяемому в кодере. Декодированный видеосигнал 409 наконец предоставляется декодером 40.
Фиг. 8 является схематичным представлением для использования при разъяснении генерирования набора предикторов векторов движения или кандидатов векторов движения в текущей реализации HEVC.
В текущем проекте HEVC, векторы движения кодируются посредством кодирования с предсказанием, с использованием множества векторов движения. Это способ называется усовершенствованным предсказанием вектора движения (AMVP) и был адаптирован, чтобы учитывать контекст HEVC со структурой с большими блоками. Эта схема применяется к режимам пропуска, межкадровому и слияния.
Этот способ обеспечивает возможность выбора наилучшего предиктора из заданного набора, где набор составлен из пространственных векторов движения и временных векторов движения. Оптимальное число пространственных и временных предикторов все еще оценивается в процессе стандартизации HEVC. Однако, на момент подачи настоящей заявки, текущая реализация включает в себя 2 пространственных предиктора и один временной идентично расположенный предиктор для режима пропуска и межкадрового режима, и 4 пространственных предиктора и один временной предиктор для режима слияния. Настоящее изобретение не ограничено использованием с текущей реализацией AMVP. Реализация AMVP может изменяться относительно текущей реализации, описанной ниже, но предполагается, что варианты осуществления настоящего изобретения, которые должны быть описаны ниже, предоставят полезные эффекты и результаты одинаковые с другими реализациями, которые могут быть приняты.
Более того в JCTVC-D072, на которое сделана ссылка в введении, было предложено использовать больше временных предикторов вместо использования только одного в текущей версии. К данному изобретению может также быть применена эта модификация.
В наборе предикторов, представленном на Фиг. 8, два пространственных вектора движения выбираются среди пространственных векторов движения сверху и среди левых блоков, в том числе верхних угловых блоков и левого углового блока.
Левый предиктор выбирается из числа блоков I, H, G, F. Предиктор вектора движения считается доступным, если существует вектор, и если индекс опорного кадра является таким же как индекс опорного кадра текущего блока (означая, что вектор движения, используемый в качестве предиктора, указывает тот же опорный кадр, как и вектор движения текущего блока). Выбор выполняется посредством поиска снизу (I) вверх (F). Первый предиктор, который отвечает критерию доступности сверху, выбирается в качестве левого предиктора (только один левый предиктор добавляется к набору предикторов). Если нет предиктора, отвечающего данному критерию, левый предиктор считается недоступным.
Межкадровый блок может быть с моно-предсказанием (тип P) и и двойным предсказанием (тип B). В P-кадре, межкадровые блоки только типа P. В B-кадре, межкадровые блоки типа P или B. В межкадровом блоке типа P, используется список L0 опорных кадров. Его вектор движения относится к одному опорному кадру из этого списка. Опорный индекс вследствие этого связан с вектором движения. В межкадровом блоке типа B, используются два списка L0 и L1 опорных кадров. Один из его двух векторов движения относится к одному опорному кадру из списка L0, и другой из его двух векторов движения относится к одному опорному кадру из списка L1. Опорный индекс вследствие этого связан с каждым из двух векторов движения.
Несуществование вектора движения означает, что относящийся блок был подвергнут внутрикадровому кодированию, или что в списке не существует вектора движения, с которым связан кодированный вектор движения. Например, для блока в B-кадре, если соседний блок имеет только один вектор движения в списке 'L1', и текущий вектор движения находится в 'L0', соседний вектор движения считается как несуществующий для предсказания текущего вектора движения.
Верхний предиктор выбирается из числа блоков E, D, C, B, A, опять в качестве результата поиска, в этом случае справа налево. Первый вектор движения, справа налево, который отвечает критерию доступности, заданным выше (если предиктор существует и имеет тот же опорный кадр как и текущий вектор движения), выбран в качестве верхнего предиктора. Если нет предиктора, подтверждающего достоверность данного критерия, верхний предиктор считается недоступным.
Временной предиктор вектора движения происходит из ближайшего опорного кадра, когда кадры не упорядочены по-разному для кодирования и для отображения (они кодируются последовательно без переупорядочивания). Эта конфигурация соответствует конфигурации с низкой задержкой (нет задержки между процессом декодирования и процессом отображения). В случае B-кадров, 2 вектора движения учитываются для идентично расположенного блока. Один находится в первом списке "L0" опорных изображений и один во втором списке "L1" опорных изображений. Если существуют оба вектора движения, выбирается движение, которое имеет самое короткое временное расстояние. Если оба предиктора имеют одинаковое временное расстояние, выбирается движение из "L0". Выбранный идентично расположенный вектор движения затем масштабируется, если нужно, согласно временному расстоянию между опорным изображением и изображением, содержащим блок, подлежащий кодированию. Если не существует идентично расположенного предиктора, предиктор считается недоступным.
Для иерархического кодирования B-кадров, которое предусматривает переупорядочивание кадров и, вследствие этого, большую задержку декодирования, могут учитываться 2 идентично расположенных вектора движения. Оба происходят из будущего кадра. Выбирается вектор движения, который пересекает текущий кадр. Если оба предиктора пересекают текущий кадр, выбирается блок, содержащий вектор движения, который имеет самое короткое временное расстояние. Если оба предиктора имеют одинаковое временное расстояние, тогда выбирается вектор движения из первого списка "L0". Идентично расположенный вектор движения, выбранный в качестве временного предиктора вектора движения, затем масштабируется, если нужно, согласно временному расстоянию между опорным изображением и изображением, содержащим блок, подлежащий кодированию. Если не существует идентично расположенного предиктора, предиктор считается недоступным.
Как для случая с низкой задержкой, так и для иерархического случая, когда идентично расположенный блок разделен на множество сегментов (потенциально, идентично расположенный блок содержит множество векторов движения), выбранный вектор движения происходит из центрального сегмента, как упомянуто в введении к настоящему описанию, см. Jung, G. Clare, (Orange Labs), "Temporal MV predictor modification for MV-Comp, Skip, Direct and Merge schemes", JC7VC-D164, Daegu, KR, 20-28 январь, 2011 предлагает использование центрированного временного предиктора, и WO 2011/001077 A.
В результате этого способа генерирования предикторов векторов движения, набор сгенерированных предикторов может содержать 0, 1, 2 или 3 предиктора. Если предиктор не мог быть включен в набор, вектор движения не предсказывается. Как вертикальная, так и горизонтальная составляющие кодируются без предсказания. (Это соответствует предсказанию посредством предиктора, равного нулевому значению.) В текущей реализации HEVC, индекс предиктора равен 0.
Режим слияния является особенным межкадровым кодированием, аналогичным обычному режиму пропуска, хорошо известному специалистам в данной области техники. Основная разница по сравнению с обычным режимом пропуска состоит в том, что режим слияния распространяет значение индекса опорного кадра, направление (двунаправленное или однонаправленное) и список (с однонаправленным направлением) предикторов векторов движения на предсказанный блок. Режим слияния использует предиктор вектора движения и индекс его опорного кадра, пока предиктор является временным предиктором, где рассматриваемый опорный кадр всегда является самым ближайшим предшествующим опорным кадром, также называемым как Ref0 (и всегда двойное предсказание для B-кадров). Так предикторы блоков (скопированные блоки) происходят из опорных кадров, указанных предикторами векторов движения.
Упорядочивание кандидатов в наборе является важным для уменьшения издержек сигнализации наилучшего предиктора движения в наборе предикторов. Упорядочивание набора адаптировано, в зависимости от текущего режима предсказания, располагать наиболее вероятный предиктор движения в первом положении, так как минимальные издержки возникают, если первый кандидат выбран в качестве наилучшего предиктора. В текущей реализации HEVC, временной предиктор находится в первом положении.
Издержки сигнализации индекса наилучшего предиктора могут быть дополнительно уменьшены посредством минимизирования числа кандидатов в наборе. Дублированные векторы движения просто удаляются из набора.
Для конкретного случая режима слияния, процесс устранения принимает во внимание значения вектора движения и его опорный кадр. Соответственно, чтобы определить являются ли два предиктора дублированными предикторами, две составляющие вектора движения и его опорный индекс сравниваются для двух предикторов, и только если эти три значения равны, один предиктор удаляется из списка. Для B-кадра, этот критерий равенства распространяется на направление и списки. Так, два предиктора рассматриваются как дублированные предикторы, если они оба используют одинаковое направление, одинаковые списки (L0, L1, или L0 и L1), индексы опорных кадров и имеют одинаковые значения векторов движения (MV_L0 и MV_L1 для двойного предсказания).
В AMVP, сигнализация индекса зависит от результата процесса устранения предиктора вектора движения, описанного выше. На самом деле, число битов, выделенных на сигнализацию зависит от числа векторов движения, оставшихся после устранения. Например, если в конце процесса устранения, остается только один вектор движения, не требуется издержек для сигнализации индекса предиктора вектора движения, так как индекс может легко быть извлечен декодером. Таблица 1 ниже показывает кодовое слово для кодирования каждого индекса согласно числу предикторов после процесса устранения.
Фиг. 9 является схемой последовательности операций для использования при разъяснении работы схемы AMVP на стороне кодера. Операции на Фиг. 9 проводятся модулем 317 на Фиг. 5, кроме тех случаев, когда указано иначе, и это модуль 317 может рассматриваться как содержащий модули 603, 605, 607, 610 и 615 на Фиг. 9. Поле 601 векторов движения на Фиг. 9 соответствует полю 318 векторов движения на Фиг. 5. Модуль 612 энтропийного кодера на Фиг. 9 соответствует модулю 309 энтропийного кодера на Фиг. 5. Все операции на Фиг. 9 могут быть реализованы в программном обеспечении и исполнены центральным блоком 1111 обработки устройства 1000.
Модуль 603 генерирования предикторов векторов движения принимает индекс 613 опорного кадра текущего вектора движения, подлежащего кодированию, и также принимает поле 601 векторов движения. Модуль 603 генерирует набор 604 предикторов векторов движения как описано выше со ссылкой на Фиг. 8 принимая во внимание индекс 613 опорного кадра. Затем процесс устранения применяется модулем 605, как также описано выше со ссылкой на Фиг. 8. Модуль 605 производит уменьшенный набор 606 предикторов векторов движения. Число предикторов 616 векторов движения в уменьшенном наборе 606 также выводится. Модуль 607 принимает вектор движения, подлежащий кодированию, 602 и применяет выбор «скорость передачи - искажение» (RD) наилучшего предиктора из уменьшенного набора 606 предикторов векторов движения. Если выбран наилучший предиктор, модуль 607 выводит индекс 608 предиктора вектора движения и выбранный предиктор 609 вектора движения. Затем, модуль 610 образует разность между вектором движения, подлежащим кодированию, 602 и выбранным предиктором 609 вектора движения. Эта разность является остатком 611 вектора движения. Этот остаток вектора движения затем энтропийно кодируется в модуле 612. Модуль 614 преобразует индекс 608 предиктора вектора движения в кодовое слово 615 согласно числу предикторов 616 в уменьшенном наборе 606 предикторов векторов движения, как описано выше со ссылкой на таблицу 1. Как описано выше, если этот набор содержит только один предиктор, на сторону декодера индекс не передается и кодовое слово не генерируется. Если набор содержит один или более предикторов, кодовое слово генерируется в модуле 614 и затем энтропийно кодируется в модуле 612.
Фиг. 10 является схемой последовательности операций для использования при разъяснении работы схемы AMVP на стороне декодера. Операции на Фиг. 10 проводятся модулем 410 на Фиг. 7, кроме тех случаев, когда указано иначе, и этот модуль 317 может рассматриваться как содержащий модули 702, 704, 711 и 715 на Фиг. 10. Поле 701 векторов движения на Фиг. 10 соответствует полю 411 векторов движения на Фиг. 7. Модуль 706 энтропийного декодера на Фиг. 10 соответствует модулю 402 энтропийного декодера на Фиг. 7. Все операции на Фиг. 10 могут быть реализованы в программном обеспечении и исполнены центральным блоком 1111 обработки устройства 1000.
Модуль 702 принимает поле 701 векторов движения текущего кадра и предыдущих декодированных кадров. Модуль 702 также принимает индекс 713 опорного кадра текущего вектора движения, подлежащего декодированию. Модуль 702 генерирует набор 703 предикторов векторов движения на основе поля 701 векторов движения и индекса 713 опорного кадра. Эта обработка является такой же как обработка, описанная в отношении модуля 603 на стороне кодера. Затем модулем 704 применяется процесс устранения. Эта обработка является такой же как обработка, описанная в отношении модуля 605 на стороне кодера. Модуль 704 производит уменьшенный набор 708 предикторов векторов движения. Число предикторов 716 векторов движения в уменьшенном наборе 708 также выводится.
Модуль 706 энтропийного декодера извлекает остаток 707 вектора движения из битового потока 705 и декодирует его. Число предикторов 716 в уменьшенном наборе 708 затем используется модулем 706 для извлечения (если нужно) кодового слова 714 предиктора вектора движения. Это кодовое слово (если оно существует) преобразуется модулем 715 в значение 709 индекса предиктора согласно числу предикторов 716 в уменьшенном наборе, с использованием таблицы 1 выше для преобразования. Предиктор 710 вектора движения затем извлекается из уменьшенного набора 708 согласно значению 709 индекса предиктора. Модуль 711 добавляет предиктор вектора движения к остатку 707 движения для того, чтобы произвести декодированный вектор движения 712.
Из вышеприведенного понятно, что для каждого кадра, который используется в качестве опорного кадра для получения идентично расположенного предиктора вектора движения, необходимо хранить на сторонах кодера и декодера связанные с ними векторы движения. Это ведет к тому, что размер памяти векторов движения становится значительным, учитывая во-первых степень детализации представления движения (в текущем проекте HEVC, минимальный размер блока в межкадровом режиме составляет 4х4) и во-вторых, что есть 2 вектора на каждый блок движения для B_SLICE. Оценено, что для картинок с разрешением 4Kx2K и использования степени детализации одного набора векторов движения на каждый блок 4х4, на каждый кадр требуется 26 Мбит. Память векторов движения должна быть быстрой и является обычно частью RAM, например, RAM 1112 на Фиг. 4. Это является дорогостоящим, особенно для портативных устройств.
Первый вариант осуществления
Теперь будет описан первый вариант осуществления настоящего изобретения.
В первом варианте осуществления, как в предложениях JCTVC-C257 и JCTVC-D072, упомянутых в введении и показанных на Фиг. 1, одно положение блока используется для суммирования блоков набора векторов движения NxN. Вектор движения блока, соответствующего этому одному положению блока, сохраняется как репрезентативный вектор движения для всего набора NxN. Эти прежние предложения используют исключительно положение верхнего левого блока, как показано на Фиг. 1. Однако, этот способ суммирования не может принять во внимание, что идентично расположенный предиктор вектора движения используется в конкурентной схеме с другими пространственными предикторами. В результате, хотя эти прежние предложения предлагают значительное уменьшение требования к памяти векторов движения (например, коэффициент 16-кратного уменьшения в примере по Фиг. 1), они предусматривают ухудшение в том, что касается эффективности кодирования. Например, оценено, что использование 16-кратного уменьшения требования к памяти приводит к 0,5% потери в эффективности кодирования в TMuC v0,9. Это происходит потому, что часто вектор движения в положении верхнего левого блока идентично расположенного блока является аналогичным пространственным предикторам из блоков, соседствующих с текущим блоком, подлежащим кодированию. Это означает, что идентично расположенный предиктор вектора движения не приносит достаточно разнесения в набор предикторов в целом.
Посредством использования другого положения блока внутри идентично расположенного блока, или даже используя положение блока в другом блоке, соседствующем с идентично расположенным блоком, может быть получена большая степень разнесения. Эффект от этого состоит в том, что несмотря на то, что все еще достигается такое же уменьшение требования к памяти векторов движения как в прежних предложениях, упомянутых выше, настоящее изобретение не подвергается или подвергается незначительному ухудшению эффективности кодирования по сравнению с системой, в которой хранятся все векторы движения и не используется суммирование блоков.
Варианты осуществления настоящего изобретения признают, что разнесение набора предикторов, включающего в себя смесь пространственных и временных предикторов, зависит от относительных положений блоков, из которых происходят предикторы. Чем больше расстояние от одного предиктора до другого, тем более вероятно, что предикторы должны быть разнесены. Таким образом, может быть предпочтительным выбирать в качестве положения блока в идентично расположенном блоке положение блока дальше от положений блоков пространственных предикторов. Конечно, расстояние не должно быть таким большим, что временной предиктор больше не является репрезентативным для векторов движения в идентично расположенном блоке. После всего, идентично расположенный блок определенно выбирается в качестве источника временного предиктора, так как он расположен идентично текущему блоку. Соответственно, то, что требуется, это выбрать положение блока для временного предиктора, которое обеспечивает управляемое разнесение между этим предиктором и пространственными предикторами.
Следует осознавать, что в AMVP пространственные предикторы выбираются из числа определенных положений (положений с A по I, показанных на Фиг. 8) согласно критерию доступности. Это означает, что в зависимости от доступности, могут быть выбраны 0, 1 или 2 пространственных предиктора. Положение блока, которое должно быть выбрано, для суммирования блоков идентично расположенного блока не может принимать во внимание выбор(ы) действительного пространственного предиктора, так как оно проводится до выбора(ов) пространственного предиктора. Чтобы сделать возможным принятие во внимание пространственного предиктора при выборе положения блока идентично расположенного блока, было бы необходимым хранить векторы движения во всех положениях блоков в идентично расположенном блоке, что несовместимо с уменьшением требования к памяти векторов движения.
Однако в этой связи, когда целью является не уменьшить требование к памяти, а улучшить эффективность кодирования, возможно принять во внимание выбор(ы) пространственного предиктора при выборе положения блока идентично расположенного блока, как будет описано в дальнейших вариантах осуществления.
В текущей реализации тестовой модели HEVC, для текущего блока пропуска или межкадрового блока, используются два пространственных предиктора, как описано выше со ссылкой на Фиг. 8, тогда как четыре пространственных предиктора используются для режима слияния. Однако режим слияния выбирается менее часто, чем режим пропуска и межкадровый режим. Соответственно, в настоящем варианте осуществления предполагается, что имеется 2 пространственных предиктора, а именно левый предиктор и верхние предикторы, как показано на Фиг. 8. Настоящий вариант осуществления может легко быть распространен, когда в наборе пространственных предикторов используются больше или меньше предикторов. Более того, описание этого варианта осуществления относится к сжатию памяти векторов движения на основе суммирования блоков 4х4. Это может быть легко распространено на все другие размеры, используемые для суммирования блоков.
Фиг. 11 показывает этапы способа определения положение блока 4х4, чей вектор движения будет выбран в качестве одиночного вектора движения в процессе сжатия памяти векторов движения по первому варианту осуществления. Как разъяснено выше, это может считаться процессом суммирования блоков, так как это приводит к выбору одного вектора движения в качестве представления блока в целом. Невыбранные векторы движения блока (например, 15 векторов движения в настоящем случае), имеющие положения блоков отличные от определенного положения блока, не должны быть сохранены, что приводит к значительному сжатию памяти векторов движения (например, на коэффициент 16 в настоящем случае).
В этой связи, в дополнение к самим векторам движения (причем каждый имеет вертикальную и горизонтальную составляющие и индекс опорного кадра), выбор положения блока мог бы быть применен ко всем другим данным, нужным для процесса получения идентично расположенного предиктора (текущая реализация сжатия памяти MV не принимает во внимание другие данные). Этими данными являются: режим (межкадровый/внутрикадровый), индекс опорного кадра вектора движения, список 'L0' 'L1' опорных изображений, и направление двунаправленное или однонаправленное.
На первом этапе S1001 принимается список потенциальных положений пространственных предикторов. Эти положения являются относительными положениями по сравнению с текущим блоком. Для целей суммирования блоков, можно считать, что размер (в пикселях) текущего блока составляет 16x16, когда применяется суммирование блока 4х4 векторов движения, как изображено на Фиг. 1. Так, потенциальные положения А, В, C, D, E для верхнего предиктора и потенциальные положения F, G, H, I для левого предиктора по Фиг. 8 принимаются посредством алгоритма. Для простоты, можно считать, что соседние блоки имеют минимальный размер CU, равный 4х4 (в пикселях), как изображено на Фиг. 12. В этом случае, все блоки пространственных предикторов имеют одинаковый размер, который является размером блоков, которые будут суммированы при сжатии памяти MV. Как изображено на Фиг. 12, потенциальными положениями верхнего предиктора являются TP1-TP6, и потенциальными положениями левого предиктора являются LP1-LP5. Затем, на этапе S1002 алгоритм определяет среднее положение для каждого пространственного предиктора. В нашем упрощенном примере по Фиг. 12, средним положением для левого предиктора является положение блока LP3, и средним положением для верхнего предиктора является граница между блоками TP3 и TP4. Так как средним положением для верхнего преобразователя является граница между блоками TP3 и TP4, положения обоих блоков TP3 и TP4 учитываются при последующей обработке, тогда как для левого предиктора при последующей обработке учитывается только положение блока LP3. Затем, на этапе S1003 генерируется матрица расстояний для каждого предиктора. Эта матрица имеет ячейку для каждого возможного положения блока для блока, который суммируется, и содержит в каждой ячейке минимальное расстояние между средним положением рассматриваемого предиктора (верхний предиктор или левый предиктор, в зависимости от случая) и возможным положением блока рассматриваемой ячейки. Возможные положения блоков имеют номера с 1 по 16 на Фиг. 12 согласно зигзагообразному представлению, принятому для памяти векторов движения. Строение этой матрицы разъяснено ниже со ссылкой на Фиг. с 13A по 13C. Затем, на этапе S1004 матрицы расстояний для обоих предикторов поячеечно суммируются, для того, чтобы получить одиночную общую матрицу расстояний. На этапе S1005, идентифицируется максимальное значение в этой общей матрице расстояний. Положение, соответствующее этому максимальному значению, является положением, используемым для суммирования блоков при сжатии памяти MV (1006).
Чтобы сгенерировать матрицу минимальных расстояний между средним положением и каждым возможным положением блока, имеющими номера с 1 по 16 на Фиг. 12, можно учитывать число блоков, которые должны быть пройдены для достижения положения блока, когда начинают со среднего положения для рассматриваемого предиктора. Например, с помощью этого измерении, как изображено на Фиг. 13A, который показывает матрицу расстояний для левого предиктора, минимальное расстояние между соответствующим средним положением LP3 и положением блока, имеющим номер 7 на Фиг. 12, составляет 4. Это следует потому, что для того, чтобы достигнуть этого положения, нужно пройти положения блоков, имеющих номера 9, 3, 4 и 7, что составляет 4 блока. В этом измерении, диагональный случай не учитывается для вычисления расстояния, но такой случай мог бы быть использован по желанию. Более того, другие измерения расстояний могли бы быть использованы в настоящем алгоритме.
Фиг. 13A и 13B показывают соответственно матрицы расстояний, вычисленные с помощью этого измерения для левого и верхнего предикторов. Более того, Фиг. 13C показывает общую матрицу расстояний, образованную посредством поячеечного суммирования этих двух матриц по Фиг. 13A и 13B.
Можно наблюдать, что максимальное значение составляет 10 для положения блока, имеющего номер 16 (см. Фиг. 12), которое является нижним правым положением блока. Это положение блока, идентифицированное посредством алгоритма, в случае, когда используются верхний и левый предикторы.
В первом варианте осуществления, тот же самый алгоритм проводится также и декодером, и декодер выбирает то же самое положение блока, как и кодер, и избегает хранения векторов движения невыбранных положений блоков. Таким образом, аналогичное уменьшение требования к памяти векторов движения достигается также и в декодере.
Второй вариант осуществления
В первом варианте осуществления вероятность выбора пространственных предикторов в разных положениях TP1-TP6 и LP1-LP5 во внимание не принимается. Однако, в процессе AMVP, поиск верхнего предиктора начинается с самого правого положения и двигается в самое левое положение, как уже описано со ссылкой на Фиг. 8. Таким образом, ожидается, что предиктор в положении TP6 будет выбираться чаще, чем предиктор в положении TP5, и так далее справа налево на Фиг. 12. То же правдиво для левого предиктора, для которого поиск начинается в нижнем положении и двигается вверх к верхнему положению. Принимая во внимание относительные частоты выбора может быть предпочтительно регулировать среднее положение для верхнего предиктора вправо и среднее положение для левого предиктора вниз. Среднее положение для каждого предиктора могло бы быть вычислено как взвешенное среднее потенциальных положений, с помощью весов, отражающих относительные частоты выбора.
Третий вариант осуществления
В первом и втором вариантах осуществления, описанных выше, кодер использует два пространственных предиктора (верхний и левый предикторы). В третьем варианте осуществления, кодер использует только один пространственный предиктор в наборе пространственных предикторов. Например, если используется только левый предиктор, матрица расстояний левого предиктора, заданная на Фиг. 13A, используется для обнаружения наилучшего положения. В этом случае, выбранное положение является номером 6 положения блока, верхним правым блоком. Если используется только верхний предиктор, два положения блоков имеют максимальное значение (номер 11 положения блока и номер 16 положения блока). В этом случае, если используется AMVP, как описано со ссылкой на Фиг. 8, теоретически предикторы с правой стороны более выбираемые, чем предикторы с левой стороны (как разъяснено, в HEVC-процессе получения, предикторы выбираются с E по A). Так, алгоритм может учитывать использование блока, имеющего номер 11, так как это должен быть самый дальний блок.
Четвертый вариант осуществления
В первом, втором и третьем вариантах осуществления, описанных выше, предполагается, что все блоки, которые должны быть кодированы, могут иметь два пространственных предиктора (верхний и левый предикторы). Соответственно, для целей суммирования блоков различие между блоками не делается.
В четвертом варианте осуществления, для целей суммирования блоков по меньшей мере один блок обрабатывается отлично от другого блока.
Например, кодер и декодер могут знать некоторую область изображения, где существует только один пространственный предиктор или где не существует ни одного. В частности, кодер и декодер знают границу кадра (граница кадра имеет одинаковое положение для всех кадров). Так, алгоритм может принимать во внимание это конкретное знание. Например, для верхнего левого блока кадра предикторы недоступны. В этом случае, алгоритм может обнаружить, что наилучшим положением блока для суммирования блоков является центр блока. Для блоков вдоль верхней границы, мог бы быть доступен только левый предиктор, и положением блока, выбранным посредством алгоритма, является верхнее правое положение блока, имеющее номер 6 (как в третьем варианте осуществления). Для блоков вдоль левой границы доступны только некоторые верхние предикторы. Алгоритм может обнаружить, что положением является номер 11 блока, т.е., нижнее левое положение. На самом деле, положение TP1 на Фиг. 12 всегда недоступно для левой границы, так средним из положений является TP4 (не граница между TP3 и TP4), и следовательно, алгоритм обнаруживает номер 11 блока как самое дальнее положение.
Этот вариант осуществления может распространяться на границу вырезки, если все кадры в битовом потоке имеют в точности одинаковую вырезку (т.е., если каждая вырезка имеет в точности одинаковое положение для всех кадров).
Пятый вариант осуществления
В предшествующих вариантах осуществления декодер проводит такую же обработку как и кодер, чтобы определить положение блока для суммирования блоков.
В пятом варианте осуществления, только кодер использует данный алгоритм, и положение блока, используемого для суммирования блоков, передается декодеру в битовом потоке (последовательности/картинке/заголовке вырезки).
Шестой вариант осуществления
В предшествующих вариантах осуществления кодер (и, кроме пятого варианта осуществления, декодер) выполняет алгоритм по Фиг. 11 для определения положения блока.
В шестом варианте осуществления, кодер и декодер ссылаются на таблицу, которая содержит положение блока согласно использованию или нет пространственных предикторов. Пример такой таблицы задан в таблице 2 ниже. Эта таблица определена заранее с использованием того же алгоритма, как и алгоритм по Фиг. 11. Это решение является менее сложным, чем постоянное применение данного алгоритма. Следующая таблица показывает эту конкретную таблицу для примера, описанного ранее. Положения ссылаются на Фиг. 12.
Седьмой вариант осуществления
Этот вариант осуществления распространяет идею шестого варианта осуществления еще дальше. Нижнее правое положение всегда используется для суммирования блоков вне зависимости от того, использован ли пространственный блок для AMVP или режима слияния. Это сберегает от нагрузки обработки и нет необходимости сигнализировать декодеру, какое положение блока было определено.
Восьмой вариант осуществления
Предшествующие варианты осуществления предполагают, что суммирование блоков применяется единообразно ко всем блокам. Однако, в HEVC, разрешены блоки разных размеров. Положения блоков для одного размера блока могут не быть оптимальными для другого размера блока. Например, было обнаружено, что положения блоков, показанные в таблице 2, хорошо работают для небольших блоков, например, блока 4х4, но в случае большого блока может быть лучше использовать другие положения блоков.
В восьмом варианте осуществления, возможно принимать во внимание размер блока при определении положения блока. Это может быть достигнуто, имея матрицу расстояний, аналогичную матрице расстояний по Фиг. 13C для каждого разного размера блока.
Девятый вариант осуществления
Возможно упростить восьмой вариант осуществления посредством простого переключения с одного предварительно определенного положения блока для первого размера блока на другое предварительно определенное положение блока для второго размера блока. Например, когда размер блока мал, например, меньше 16x16 (пикселей) или равный этому, могло бы быть всегда выбранным нижнее правое положение блока, тогда как когда размер блока большой, например, 32x32 (пикселя), или больше, могло бы быть всегда выбранным центральное положение блока, см. затененное положение блока на Фиг. 2.
Результаты симуляции для этого варианта осуществления являются многообещающими. Было получено сбережение битовой скорости (улучшение эффективности кодирования) по сравнению с использованием центрального положения блока во всех случаях, как в прежних предложениях JCT-VC D164, упомянутых в введении.
По желанию, таблица типа, показанного в таблице 2, могла бы предоставляться для каждого размера блока, содержащая положения блоков, подходящие для каждой перестановки доступных предикторов.
Полагают, что для больших блоков центральное положение блока работает лучше, чем нижнее правое положение, так как нижнее правое положение в случае большого блока может не быть таким репрезентативным для блока в целом, как центральный блок. Дело обстоит иначе с малыми блоками, для которых нижнее правое положение еще является репрезентативным для блока в целом из-за меньших предусмотренных расстояний и все еще вводит управляемое разнесение по отношению к пространственным предикторам.
Десятый вариант осуществления
В десятом варианте осуществления, положение(я) блока, используемые в JCT-VC D164, используются для больших блоков, и нижнее правое положение блока используется для небольших блоков.
Одиннадцатый вариант осуществления
В предшествующих вариантах осуществления, положение блока, выбранное для суммирования блоков, было одним из положений блоков в идентично расположенном блоке. Однако, необязательно ограничивать положение блока положением блока в идентично расположенном блоке. Например, вместо нижнего правого положения идентично расположенного блока было бы возможно использовать положение блока вблизи от этого нижнего правого положения из другого блока в том же опорном кадре, соседствующего с идентично расположенным блоком. Например, положением блока могло бы быть нижнее левое положение в блоке непосредственно справа от идентично расположенного блока, или верхнее правое положение в блоке непосредственно ниже идентично расположенного блока, или верхнее левое положение в блоке ниже по диагонали и вправо от идентично расположенного блока.
Двенадцатый вариант осуществления
В JCT-VC D125, описанном в введении, используются 4 временных предиктора, один (T) из идентично расположенного блока и три других (E, H и I) вне идентично расположенного блока в верхнем левом, нижнем левом и нижнем правом углах идентично расположенного блока. Вместо использования T в качестве одного из временных предикторов было бы возможно использовать нижнее правое положение блока в идентично расположенном блоке. Это вероятно не даст хороший компромисс в том, что касается разнесения, но при этом центральное должно быть наилучшим. Но в том, что касается кодирования индекса предиктора, это имеет преимущество, так как нижнее правое быть равно чаще предиктору H (один предиктор часто удаляется). На самом деле, при содействии JCT-VC D125 используются слишком много предикторов, так D125 увеличивает скорость передачи, выделенную для индекса предиктора.
Тринадцатый вариант осуществления
В предшествующих вариантах осуществления, положение блока выбиралось в целях уменьшения требования к памяти векторов движения.
В тринадцатом варианте осуществления положение блока выбирается в целях улучшения эффективности кодирования. Это возможно, так как если временной предиктор из опорного кадра, например, из подходящего положения блока в идентично расположенном блоке, выбран так, чтобы достичь управляемой разнесения с пространственными предикторами, то временной предиктор имеет тенденцию быть хорошим конкурентом для пространственного предиктора, когда сделан выбор «скорость передачи - искажение». Если временной предиктор является лучшим предиктором, чем пространственные предикторы, как часто бывает на практике, то улучшение этого предиктора (в смысле делая его ближе к требуемому вектору движения для блока, подлежащего кодированию, и следовательно минимизация остатка хороша для эффективности кодирования) хорошо для эффективности кодирования.
В принципе, все из вышеприведенных с первого по двенадцатый вариантов осуществления могут быть использованы для выбора положения блока в целях улучшения эффективности кодирования. В тринадцатом варианте осуществления, тем не менее все векторы движения могут быть сохранены, т.е., нет необходимости использовать уменьшение памяти векторов движения. Однако, такое уменьшение желательно во многих случаях.
Четырнадцатый вариант осуществления
Если хранятся векторы движения во всех положения блоков, возможно принимать во внимание действительный итог выбора пространственных предикторов при выборе наилучшего положения блока. Например, на Фиг. 12, если доступен только верхний предиктор и выбрано положение TP6, могло бы быть выбрано положение блока, имеющее номер 11. Если, с другой стороны, доступен только верхний предиктор и выбрано положение TP1, то могло бы быть выбрано положение блока, имеющее номер 16. Другие положения блоков были бы лучше, если комбинация верхнего и левого предикторов была доступна, снова в зависимости от положений выбранных верхнего и левого предикторов. В основном, для каждого возможного итога выбора пространственного предиктора может быть определено наилучшее положение блока. Наилучшие положения блоков могли бы храниться в таблице соответствия, имеющей запись для каждого разного итога.
Варианты осуществления, описанные выше, основаны на сегментах блока входного изображения, но в более общем смысле, может учитываться любой тип участков изображения, которые должны быть кодированы или декодированы, в частности, прямоугольные участки или, в более общем смысле, геометрические участки.
В более общем смысле, любая модификация или улучшение вышеописанных вариантов осуществления, которое специалист в данной области техники может легко задумать, должно считаться как попадающее в рамки объема данного изобретения.
Изобретение относится к вычислительной технике. Технический результат заключается в повышении эффективности кодирования. Способ получения кандидатов предиктора вектора движения для блока для кодирования, формирующего часть текущей картинки, которая подлежит кодированию, причем способ содержит этапы, на которых выбирают один или более векторов движения, связанных с блоками в предварительно определенных положениях в текущей картинке, в качестве одного или более пространственных кандидатов предиктора вектора движения и выбирают вектор движения, связанный с блоком ниже по диагонали и вправо от области на картинке, отличной от текущей картинки, в качестве временного кандидата предиктора вектора движения, причем количество временных кандидатов предиктора вектора движения для блока для кодирования не более одного, и причем упомянутая область расположена в положении, соответствующем блоку для кодирования. 5 н. и 6 з.п. ф-лы, 15 ил., 2 табл.
1. Способ декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем по меньшей мере часть видеокадра кодируется с помощью межкадрового предсказания относительно опорного кадра, причем способ содержит генерирование кандидатов предиктора вектора движения для блока для декодирования, образующего часть текущего видеокадра, которая должна быть декодирована при помощи этапов, на которых
генерируют пространственного кандидата предиктора вектора движения путем, если доступно, выбора, в качестве пространственного кандидата предиктора вектора движения, вектора движения, ассоциированного с блоком, соседствующим и по диагонали выше и слева с блоком для декодирования; и
генерируют временного кандидата предиктора вектора движения путем, если доступно, выбора, в качестве временного кандидата предиктора вектора движения, вектора движения, ассоциированного с верхним левым положением в блоке опорного кадра, соседствующем и по диагонали снизу и справа с областью опорного кадра, при этом опорный кадр отличается от текущего видеокадра, а упомянутая область расположена в положении, соответствующем блоку для декодирования,
при этом количество сгенерированных временных кандидатов предиктора вектора движения не превышает одного.
2. Способ по п.1, в котором пространственный кандидат предиктора вектора движения выбирается до генерирования временного кандидата предиктора вектора движения.
3. Способ по п.1, в котором упомянутая область имеет то же положение и такой же размер, что и блок для декодирования.
4. Способ по п.1, содержащий декодирование части видеокадра с использованием одного или более сгенерированных кандидатов предиктора вектора движения в качестве предиктора вектора движения.
5. Устройство для декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем по меньшей мере часть видеокадра кодируется с помощью межкадрового предсказания относительно опорного кадра, причем устройство содержит:
средство, выполненное с возможностью генерирования пространственного кандидата предиктора вектора движения путем, если доступно, выбора, в качестве пространственного кандидата предиктора вектора движения, вектора движения, ассоциированного с блоком, соседствующим и по диагонали выше и слева с блоком для декодирования, причем блок для декодирования образует часть текущего видеокадра, которая должна быть декодирована; и
средство, выполненное с возможностью генерирования временного кандидата предиктора вектора движения путем, если доступно, выбора, в качестве временного кандидата предиктора вектора движения, вектора движения, ассоциированного с верхним левым положением в блоке опорного кадра, соседствующем и по диагонали снизу и справа с областью опорного кадра, при этом опорный кадр отличается от текущего видеокадра, а упомянутая область расположена в положении, соответствующем блоку для декодирования,
при этом количество сгенерированных временных кандидатов предиктора вектора движения не превышает одного.
6. Устройство по п.5, в котором средство выполнено с возможностью выбирать упомянутый пространственный кандидат предиктора вектора движения до генерирования временного кандидата предиктора вектора движения.
7. Устройство по п.5, в котором упомянутая область имеет то же положение и такой же размер, что и блок для декодирования.
8. Устройство по п.5, содержащее средство, выполненное с возможностью декодирования видеопотока с использованием одного или более сгенерированных кандидатов предиктора вектора движения в качестве предиктора вектора движения.
9. Способ кодирования последовательности цифровых изображений в битовый поток, причем по меньшей мере часть видеокадра кодируется с помощью межкадрового предсказания относительно опорного кадра, причем способ содержит генерирование кандидатов предиктора вектора движения для блока для кодирования, образующего часть текущего видеокадра, которая должна быть кодирована при помощи этапов, на которых
генерируют пространственного кандидата предиктора вектора движения путем, если доступно, выбора, в качестве пространственного кандидата предиктора вектора движения, вектора движения, ассоциированного с блоком, соседствующим и по диагонали выше и слева с блоком для кодирования; и
генерируют временного кандидата предиктора вектора движения путем, если доступно, выбора, в качестве временного кандидата предиктора вектора движения, вектора движения, ассоциированного с верхним левым положением в блоке опорного кадра, соседствующем и по диагонали снизу и справа с областью опорного кадра, при этом опорный кадр отличается от текущего видеокадра, а упомянутая область расположена в положении, соответствующем блоку для кодирования,
при этом количество сгенерированных временных кандидатов предиктора вектора движения не превышает одного.
10. Устройство для кодирования последовательности цифровых изображений в битовый поток, причем по меньшей мере часть видеокадра кодируется с помощью межкадрового предсказания относительно опорного кадра, причем устройство содержит:
средство, выполненное с возможностью генерирования пространственного кандидата предиктора вектора движения путем, если доступно, выбора, в качестве пространственного кандидата предиктора вектора движения, вектора движения, ассоциированного с блоком, соседствующим и по диагонали выше и слева с блоком для кодирования, причем блок для кодирования образует часть текущего видеокадра, которая должна быть кодирована; и
средство, выполненное с возможностью генерирования временного кандидата предиктора вектора движения путем, если доступно, выбора, в качестве временного кандидата предиктора вектора движения, вектора движения, ассоциированного с верхним левым положением в блоке опорного кадра, соседствующем и по диагонали снизу и справа с областью опорного кадра, при этом опорный кадр отличается от текущего видеокадра, а упомянутая область расположена в положении, соответствующем блоку для кодирования,
при этом количество сгенерированных временных кандидатов предиктора вектора движения не превышает одного.
11. Компьютерно-читаемый носитель записи, хранящий записанную программу, которая при выполнении на компьютере или процессоре, предписывает компьютеру или процессору осуществлять способ по любому из пп. 1-4 или 9.
Способ подготовки стальных резервуаров под эмалирование | 1987 |
|
SU1528812A1 |
US 7450642 B2, 11.11.2008 | |||
ПРОСТРАНСТВЕННО-ВРЕМЕННОЕ ПРОГНОЗИРОВАНИЕ ДЛЯ ДВУНАПРАВЛЕНО ПРОГНОЗИРУЕМЫХ (В) ИЗОБРАЖЕНИЙ И ПРОГНОЗИРОВАНИЕ ВЕКТОРА ДВИЖЕНИЯ ДЛЯ КОМПЕНСАЦИИ ДВИЖЕНИЯ МНОЖЕСТВЕННЫХ ИЗОБРАЖЕНИЙ С ПОМОЩЬЮ ЭТАЛОНА | 2003 |
|
RU2310231C2 |
CN 101365137 B, 25.08.2010 | |||
СПОСОБ ОБУЧЕНИЯ ТЕХНИКЕ УДАРНОГО ДВИЖЕНИЯ ПРИ ПОДАЧАХ И НАПАДАЮЩИХ УДАРАХ В ВОЛЕЙБОЛЕ | 2008 |
|
RU2391126C1 |
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
Авторы
Даты
2021-01-21—Публикация
2020-09-10—Подача