Кодирование и декодирование видео
Иллюстрации
Показать всеИзобретение относится к технологиям обработки видеоданных. Техническим результатом является сокращение объема памяти за счет отображения векторов движения на один дополнительный опорный кадр. Предложен способ сохранения векторов движения первого опорного кадра, которым разрешено указывать на множество дополнительных опорных кадров. Способ содержит этап, на котором выбирают один из упомянутых дополнительных опорных кадров. Далее согласно способу отображают в выбранный дополнительный опорный кадр каждый вектор движения упомянутого первого опорного кадра, который указывает на один из упомянутых дополнительных опорных кадров, отличных от выбранного дополнительного опорного кадра, так что после отображения все векторы движения первого опорного кадра указывают на выбранный дополнительный опорный кадр. Сохраняют векторы движения, подвергнутые упомянутому отображению. 7 н. и 13 з.п. ф-лы, 16 ил., 4 табл.
Реферат
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Изобретение относится к способу и устройству для кодирования последовательности цифровых изображений и способу и устройству для декодирования соответствующего битового потока.
Изобретение относится к области цифровой обработки сигнала, и в частности к области сжатия видео с использованием компенсации движения для сокращения пространственной и временной избыточностей в потоках видео.
УРОВЕНЬ ТЕХНИКИ
Во многих форматах сжатия видео, например H.263, H.264, MPEG-1, MPEG-2, MPEG-4, SVC, используется поблочное дискретное косинусное преобразование (DCT) и компенсация движения для исключения пространственной и временной избыточностей. Эти форматы можно назвать форматами видео с прогнозированием. Каждый кадр или изображение видеосигнала разделяют на секции (срезы), которые кодируются и могут быть декодированы по отдельности. Секция обычно представляет собой прямоугольный участок кадра, или более обобщенно участок кадра или весь кадр. Далее каждую секцию делят на макроблоки (MB), и каждый макроблок далее разделяют на блоки, обычно на блоки 8х8 пикселей. В более новой технологии высокоэффективного видеокодирования (HEVC), которая в настоящее время находится в процессе стандартизации, каждую секцию разделяют на неперекрывающиеся наибольшие единицы кодирования (LCU), в общем случае представляющие собой блоки размером 64х64 пикселей. Каждая LCU может быть, в свою очередь, итерационно разделена на меньшие единицы кодирования (CU) переменного размера с использованием разложения квадродерева. Каждая CU может быть далее разбит на максимум 2 симметричных прямоугольных единицы разделения. Кодируемые кадры имеют два типа: прогнозируемые во времени кадры (либо прогнозируемые из одного опорного кадра, называемые P-кадрами, либо прогнозируемые из двух опорных кадров, называемые В-кадрами) и прогнозируемые не во времени кадры (называемые Intra кадрами (кадрами с внутрикадровым прогнозированием) или I-кадрами).
Прогнозирование во времени состоит в нахождении в опорном кадре, то есть либо в предшествующем, либо в будущем кадре последовательности видео, участка изображения или опорной области, которая является ближайшей к подлежащему кодированию блоку. Этот этап известен как оценка движения. Далее, разность между блоком, подлежащим кодированию, и опорным участком кодируют (компенсация движения) вместе с элементом информации движения относительно вектора движения, который указывает опорную область, которую следует использовать для компенсации движения.
Для дополнительного уменьшения издержек на кодирование информации движения предложено кодирование вектора движения посредством разности по отношению к предиктору вектора движения, обычно вычисляемой на основании векторов движения блоков, окружающих блок, подлежащий кодированию.
В H.264 векторы движения кодируют по отношению к медианному предиктору, вычисляемому на основании векторов движения, расположенных в каузальном соседстве с блоком, подлежащим кодированию, например на основании блоков, расположенных выше и слева от блока, подлежащего кодированию. Кодируют только разность, также называемую остаточным вектором движения, между медианным предиктором и вектором движения текущего блока.
Кодирование с использованием остаточных векторов движения в некоторой степени экономит скорость передачи битов, но делает необходимым выполнение декодером того же вычисления предиктора вектора движения для декодирования значения вектора движения блока, подлежащего декодированию.
Недавно были предложены дальнейшие усовершенствования, такие как использование множества кандидатов-предикторов векторов движения. Данный способ, называемый конкуренцией векторов движения, состоит в определении из нескольких предикторов векторов движения или кандидатов, того предиктора вектора движения, который минимизирует издержки кодирования, обычно издержки скорость передачи - искажение, остаточной информации движения. Остаточная информация движения содержит остаточный вектор движения, то есть разность между фактическим вектором движения блока, подлежащего кодированию, и выбранным предиктором вектора движения, и элемент информации, указывающей выбранный предиктор вектора движения, такой как, например, кодированное значение индекса выбранного предиктора вектора движения.
В высокоэффективном видеокодировании (HEVC), которое в настоящее время находится в процессе стандартизации, было предложено выбирать первый пространственный предиктор вектора движения из предварительно определенной группы блоков над текущим блоком, подлежащим кодированию, и второй пространственный предиктор вектора движения из другой предварительно определенной группы блоков слева от текущего блока, и временной предиктор вектора движения из соотнесенного (совместно размещенного) блока в опорном кадре. Соотнесенный блок представляет собой блок, расположенный в том же положении, что и блок, подлежащий кодированию, но в другом изображении. Эта схема выбора предиктора вектора движения называется усовершенствованным прогнозированием вектора движения (AMVP).
В результате выбора предиктора вектора движения получают смешанный набор кандидатов-предикторов вектора движения из пространственных предикторов и временных предикторов, причем набор состоит из 0, 1, 2 или 3 кандидатов в зависимости от доступности различных пространственных и временных предикторов вектора движения. Для уменьшения непроизводительных затрат на сигнализацию предиктора вектора движения в битовом потоке уменьшают набор предикторов вектора движения путем применения процесса сокращения, исключающего дублируемые векторы движения, т.е. векторы движения, которые имеют одинаковое значение. Например, если первый и второй пространственные предикторы вектора движения, упомянутые выше, равны, только один из них, а также временной предиктор вектора движения, должны быть сохранены в качестве кандидатов-предикторов вектора движения. В таком случае для указания декодеру индекса предиктора вектора движения необходим только один бит.
Кандидаты-предикторы вектора движения также могут быть упорядочены таким образом, чтобы расположить наиболее вероятный предиктор вектора движения в первом положении, поскольку минимальные непроизводительные затраты имеют место, если первый кандидат выбран в качестве наилучшего предиктора.
Достаточное уменьшение набора предикторов приводит к выигрышу по непроизводительным затратам сигнализации, поскольку указание выбранного предиктора вектора движения может быть кодировано с использованием меньшего числа битов. В крайнем случае набор кандидатов может быть уменьшен до 1, например если все предикторы векторов движения равны, и таким образом нет необходимости вставки какой-либо информации, относящейся к выбранному предиктору вектора движения, в битовый поток.
Как описано выше, в предлагаемой в настоящее время схеме HEVC векторы движения кодируют путем кодирования с прогнозированием, используя множество предикторов вектора движения, которые могут быть пространственными или временными предикторами. Таким образом, для каждого кадра, который используется в качестве опорного кадра для извлечения соотнесенного предиктора вектора движения, необходимо сохранение его связанных векторов движения на сторонах кодера и декодера. По общему правилу, размер памяти векторов движения является значительным, учитывая, во-первых, дробность представления движения (в настоящей схеме HEVC минимальный размер Inter блока (блока с межкадровым прогнозированием) составляет 4х4) и, во-вторых то, что имеются вплоть до двух векторов на блок движения для B_SLICE. По оценкам, для графических изображений с разрешением 4Кх2К и с использованием дробности в один набор векторов движения на один блок из 4х4 пикселей требуется 26 Мбит на кадр.
В Yeping Su и Andrew Segall, “On motion vector competition”, JCTVC-C257, Гуанчжоу, Китай, 7-15 октября 2010 г., и в Yeping Su и Andrew Segall, “CE9: Reduced resolution storage of motion vector data”, JCTVC-D072, Дэгу, Корея, 20-28 января 2011 г., предлагается уменьшение размера памяти векторов движения, необходимой на стороне декодера для хранения соотнесенных во времени векторов и индексов опоры. Предложенное решение состоит в простом поблочном уплотнении векторов движения, как показано на Фиг. 1. В существующей в настоящее время реализации HEVC один вектор движения из 16 сохраняют в каждом квадрате из 64х64 пикселей, и рассматривают вектор движения верхнего левого блока 4х4. Это сокращает требования к памяти в 16 раз. Такая кратность уменьшения сигнализируется в наборе параметров последовательности. Процесс сжатия памяти векторов движения выполняется после процесса обработки адаптивным контурным фильтром и до того, как декодированное графическое изображение помещают в буфер декодированных графических изображений (DPB).
Это решение обеспечивает возможность значительного уменьшения памяти векторов движения в ущерб эффективности кодирования. Однако это решение не учитывает разнообразие предикторов в наборе для уплотнения блоков при сжатии памяти MV. Кроме того, были проверены несколько критериев, но без учета разнообразия. К тому же данное решение не является ни адаптивным, ни гибким. Кроме того, когда требуется большее сжатие, необходимо большее соотношение уменьшения при удалении векторов движения, что может привести к значительной потере эффективности кодирования.
В WO 2004/012459 A описано другое предложенное решение для ограничения числа сохраняемых векторов движения. Информацию ограничения кодируют в виде информации заголовка (возможно на глобальном уровне, таком как SPS, на уровне графического изображения, таком как PPS, или на уровне секции, таком как заголовок секции). Эта информация ограничения указывает число графических изображений или число макроблоков, для которых сохраняют векторы движения. Если кодируемый блок относится к вектору движения, который сохранен, то используют этот вектор движения, в противном случае используют нулевой вектор движения (обе компоненты (которого) равны 0). Однако это решение не принимает во внимание уплотнение блоков.
Кроме предложений, направленных на снижение требований к хранению векторов движения, другие предшествующие предложения были направлены на усовершенствования предикторов для AMVP.
Например, в Jung, G. Clare, (Orange Labs), “Temporal MV predictor modification for MV-Comp, Skip, Direct and Merge schemes”, JCTVC-D164, Дэгу, Корея, 20-28 января 2011 г., предложено использование центрированного временного предиктора, см. также WO 2011/001077 A. В этом предложении соотнесенный блок находят путем отображения центра блока в соотнесенный опорный кадр вместо начала (сверху слева) блока (как в предыдущей версии HEVC). Центральный и верхний левый векторы движения имеют одинаковое значение, если соотнесенный блок имеет тот же размер или больший размер по сравнению с текущим блоком. На Фиг. 2 показан соотнесенный блок, подразделенный на 64 блока 4х4, каждый из которых имеет свой собственный вектор движения. Этот соотнесенный блок используется для текущего блока 32х32, подлежащего кодированию, и выбранный временной предиктор является вектором движения для заштрихованного блока 4х4 в центре соотнесенного блока.
Цель выбора центра разделения вместо верхней левой части состоит в нахождении лучшего представления движения для соотнесенного блока. Теоретически центр блока представляет собой лучшее представление блока, поскольку он является барицентром блока. Но временной предиктор из соотнесенного блока не является единственным предиктором в наборе предикторов AMVP.
Jian-Liang Lin, Yu-Pao Tsai, Yu-Wen Huang, Shawmin Lei (MediaTek Inc.) “Improved Advanced Motion Vector Prediction”, JCTVC-D125, Дэгу, Корея, 20-28 января 2011 г., предлагают добавить несколько временных блоков, как показано на Фиг. 3. Предложены 4 предиктора - временной соотнесенный сверху слева (T) и три других угла (снизу слева (I), снизу справа (H), сверху справа (E)). Таким образом добавляют предикторы к набору предикторов, и они соревнуются друг с другом по критерию скорость передачи-искажение.
Ни одно из двух вышеприведенных предложений для улучшения набора предикторов векторов движения не использует сжатие памяти векторов движения.
Существует потребность в устранении одного или более упомянутых недостатков уровня техники.
Также желательно снизить требования к памяти векторов движения. Предпочтительно это снижение должно быть достигнуто без значительного дополнительного ущерба эффективности кодирования или вовсе без него.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Согласно первому аспекту настоящего изобретения предложен способ хранения векторов движения первого опорного кадра, которым разрешено указывать на множество дополнительных опорных кадров, причем способ состоит в том, что: когда блок упомянутого первого опорного кадра изначально имеет два вектора движения, выбирают один из упомянутых двух векторов движения, причем невыбранный вектор движения не сохраняют.
Согласно второму аспекту настоящего изобретения предложен способ кодирования последовательности цифровых изображений в битовый поток, причем по меньшей мере один участок изображения кодируют посредством компенсации движения по отношению к участку опорного изображения, содержащий способ хранения векторов движения, реализующий вышеупомянутый первый аспект настоящего изобретения.
Согласно третьему аспекту настоящего изобретения предложен способ декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к опорному изображению, содержащий способ хранения векторов движения, реализующий вышеупомянутый первый аспект настоящего изобретения
Согласно четвертому аспекту настоящего изобретения предложено устройство для хранения векторов движения первого опорного кадра, которым разрешено указывать на множество дополнительных опорных кадров, причем устройство содержит: средство, выполненное с возможностью выбора одного из двух векторов движения, когда блок из упомянутого первого опорного кадра имеет два вектора движения, причем невыбранный вектор движения не сохраняют.
Согласно пятому аспекту настоящего изобретения предложено устройство для кодирования последовательности цифровых изображений в битовый поток, причем по меньшей мере один участок изображения кодируют посредством компенсации движения по отношению к участку опорного изображения, содержащее устройство для хранения векторов движения, реализующее вышеупомянутый четвертый аспект настоящего изобретения.
Согласно шестому аспекту настоящего изобретения предложено устройство для декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к опорному изображению, содержащее устройство для хранения векторов движения, реализующее вышеупомянутый четвертый аспект настоящего изобретения.
Согласно седьмому аспекту настоящего изобретения предложена программа, которая при выполнении компьютером или процессором побуждает компьютер или процессор выполнять способ, реализующий любой из первого, второго и третьего аспектов настоящего изобретения.
Согласно первому дополнительному аспекту настоящего изобретения предложен способ хранения векторов движения первого опорного кадра, которым разрешено указывать на множество дополнительных опорных кадров, причем способ состоит в том, что:
выбирают один из упомянутых дополнительных опорных кадров;
отображают в выбранный опорный кадр каждый вектор движения упомянутого первого опорного кадра, который указывает на один из упомянутых дополнительных опорных кадров, отличный от выбранного дополнительного опорного кадра, таким образом, что после отображения все векторы движения первого опорного кадра указывают на выбранный опорный кадр; и
сохраняют векторы движения, подвергнутые упомянутому отображению.
Такой способ исключает необходимость сохранения индекса опорного кадра для каждого вектора движения и таким образом уменьшает размер памяти векторов движения.
Например, в одном варианте выполнения векторы движения сохраняют без сохранения какой-либо информации, идентифицирующей отдельные опорные кадры для векторов движения.
Дополнительный опорный кадр может быть выбран несколькими способами.
Во-первых, выбранный дополнительный опорный кадр может быть тем из упомянутых дополнительных опорных кадров, который является ближайшим во времени к первому опорному кадру. В общем случае этот ближайший кадр будет тем кадром, на который указывает наибольшее число векторов движения в первом опорном кадре, что может снизить затраты на обработку, вызванные отображением.
Во-вторых, выбор дополнительного опорного кадра может зависеть от порядка, в котором кадры будут декодированы декодером. Это может быть полезно, когда порядок декодирования кадров отличен от порядка отображения кадров. Например, выбранный дополнительный опорный кадр может быть тем из упомянутых дополнительных опорных кадров, который имеет минимальную разность по счетчику порядка графического изображения (POC) по отношению к первому опорному кадру.
В-третьих, выбранный дополнительный опорный кадр может быть тем из упомянутых дополнительных опорных кадров, на который указывает наибольшее число векторов движения в первом опорном кадре. Это снижает затраты на обработку, вызванные отображением, поскольку в итоге отображается наименьшее число векторов движения.
В-четвертых, выбранный дополнительный опорный кадр может быть тем из упомянутых дополнительных опорных кадров, который имеет самое высокое качество графического изображения. Это должно повысить качество изображения после декодирования.
В одном варианте выполнения отображение содержит масштабирование каждого вектора движения упомянутого первого опорного кадра, который указывает на один из упомянутых дополнительных опорных кадров, отличный от выбранного дополнительного опорного кадра. Например, масштабирование может зависеть от временного соотношения между первым опорным кадром, выбранным опорным кадром и дополнительным опорным кадром, отличным от упомянутого выбранного дополнительного опорного кадра.
В другом варианте выполнения дополнительные опорные кадры содержат опорные кадры в будущем и в прошлом, и когда выбранный опорный кадр находится в будущем и дополнительный опорный кадр, отличный от выбранного опорного кадра, находится в прошлом, или когда выбранный опорный кадр находится в прошлом и дополнительный опорный кадр, отличный от выбранного опорного кадра, находится в будущем, отображение содержит изменение знака вектора движения.
Такой вариант выполнения подходит для использования в случае иерархической структуры B-графических изображений с опорными кадрами, относящимися как к прошлому, так и к будущему.
В другом варианте выполнения, который полезен, когда блок упомянутого первого опорного кадра исходно имеет два вектора движения, отображение также содержит выбор одного из упомянутых двух векторов движения, невыбранный вектор движения не сохраняют. Это может дополнительно уменьшить размер памяти векторов движения, поскольку не требуется сохранения ни одного бита для сигнализации того, какой вектор движения используется.
В другом варианте выполнения для упомянутого или каждого Intra-кодированного блока в упомянутом первом опорном кадре генерируют псевдовектор движения, который указывает на выбранный опорный кадр таким образом, что все блоки первого опорного кадра являются Inter-кодированными, посредством чего не требуется бита на блок для сигнализации Inter/Intra кодирования. Это может дополнительно уменьшить размер памяти векторов движения, поскольку не требуется сохранения ни одного бита для сигнализации того, используется ли Intra или Inter кодирование.
В другом варианте выполнения выбирают репрезентативные векторы движения первого опорного изображения, и сохраняют репрезентативные векторы движения, но не другие векторы движения первого изображения. Это может дополнительно уменьшить размер памяти векторов движения, поскольку ненужные векторы движения не сохраняют.
Согласно второму дополнительному аспекту настоящего изобретения предложен способ сохранения векторов движения первого опорного кадра, которым разрешено указывать на множество дополнительных опорных кадров, причем способ состоит в том, что:
генерируют для упомянутого или каждого Intra-кодированного блока в упомянутом первом опорном кадре псевдовектор движения, указывающий на выбранный опорный кадр таким образом, что все рассматриваемые блоки первого опорного кадра являются Inter-кодированными, посредством чего не требуется ни одного бита на блок для сигнализации Inter/Intra кодирования.
Это может уменьшить разъем памяти векторов движения, поскольку не требуется сохранения ни одного бита для сигнализации того, используется ли Intra или Inter кодирование. В таком способе нет необходимости в выполнении этапов выбора и отображения согласно первому аспекту изобретения.
Согласно третьему дополнительному аспекту настоящего изобретения предложен способ кодирования последовательности цифровых изображений в битовый поток, причем по меньшей мере один участок изображения кодируют посредством компенсации движения по отношению к участку опорного изображения, содержащий способ сохранения векторов движения согласно первому дополнительному или второму дополнительному аспекту настоящего изобретения.
Согласно четвертому дополнительному аспекту настоящего изобретения предложен способ декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к опорному изображению, содержащий способ сохранения векторов движения согласно первому дополнительному или второму дополнительному аспекту настоящего изобретения.
Согласно пятому дополнительному аспекту настоящего изобретения предложено устройство для хранения векторов движения первого опорного кадра, которым разрешено указывать на множество дополнительных опорных кадров, причем устройство содержит:
средство для выбора одного из упомянутых дополнительных опорных кадров;
средство для отображения в выбранный опорный кадр каждого вектора движения упомянутого первого опорного кадра, который указывает на один из упомянутых дополнительных опорных кадров, отличный от выбранного дополнительного опорного кадра таким образом, что после отображения все векторы движения первого опорного кадра указывают на выбранный опорный кадр; и
средство для хранения векторов движения, подвергнутых упомянутому отображению.
Согласно шестому дополнительному аспекту настоящего изобретения предложено устройство для хранения векторов движения первого опорного кадра, которым разрешено указывать на множество дополнительных опорных кадров, причем устройство содержит:
средство для генерирования для упомянутого или каждого Intra-кодированного блока в упомянутом первом опорном кадре псевдовектора движения, указывающего на выбранный опорный кадр таким образом, что все рассматриваемые блоки первого опорного кадра являются Inter-кодированными, посредством чего не требуется ни одного бита на блок для сигнализации Inter/Intra кодирования.
Согласно седьмому дополнительному аспекту настоящего изобретения предложено устройство для кодирования последовательности цифровых изображений в битовый поток, причем по меньшей мере один участок изображения кодируют посредством компенсации движения по отношению к участку опорного изображения, содержащее устройство для хранения векторов движения согласно пятому дополнительному или шестому дополнительному аспекту настоящего изобретения.
Согласно восьмому дополнительному аспекту настоящего изобретения предложено устройство для декодирования битового потока, содержащего кодированную последовательность цифровых изображений, причем по меньшей мере один участок изображения кодирован посредством компенсации движения по отношению к опорному изображению, содержащее устройство для хранения векторов движения согласно пятому дополнительному или шестому дополнительному аспекту настоящего изобретения.
Настоящее изобретение также распространяется на программы, которые при выполнении компьютером или процессором побуждают компьютер или процессор выполнять любой из способов, описанных выше, или которые при загрузке в программируемое устройство побуждают это устройство становиться любым из устройств, описанных выше. Программа может быть предусмотрена сама по себе или находиться на носителе информации. Носитель информации может быть запоминающим носителем или средой записи, или может быть передаваемым носителем, таким как сигнал. Программа, реализующая настоящее изобретение, может быть временной или постоянной.
Таким образом, как описано выше, возможно сжатие информации, относящейся к векторам движения временных предикторов учитывая индекса кадра опорного кадра.
В частности, возможно исключение кодирования индексов опоры, например путем масштабирования векторов движения временного предиктора таким образом, что используется только один индекс опоры, и следовательно нет необходимости сигнализации индекса опоры.
Это позволяет уменьшить размер памяти векторов движения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Теперь в качестве примера обратимся к сопровождающим чертежам, на которых:
- Фиг. 1, описанная ранее, представляет собой принципиальную схему для использования при пояснении известного предложения по сокращению требования памяти векторов движения;
- Фиг. 2, также описанная ранее, представляет собой принципиальную схему для использования при пояснении известного предложения по улучшению набора предикторов векторов движения;
- Фиг. 3, также описанная выше по тексту, является принципиальной схемой для использования при пояснении другого известного предложения по улучшению набора предикторов векторов движения;
- на Фиг. 4 показаны части устройства, подходящего для реализации кодера или декодера согласно варианту выполнения настоящего изобретения;
- на Фиг. 5 показана блок-схема частей кодера согласно варианту выполнения настоящего изобретения;
- на Фиг. 6 показана последовательность изображений, обрабатываемых кодером по Фиг. 5;
- на Фиг. 7 показана блок-схема частей декодера согласно варианту выполнения изобретения;
- на Фиг. 8 показана принципиальная схема для использования при пояснении способа определения набора предикторов векторов движения, которые могут быть использованы кодером по Фиг. 5 и декодером по Фиг. 7;
- на Фиг. 9 показана блок-схема этапов, выполняемых кодером по Фиг. 5, когда используется способ по Фиг. 8;
- Фиг. 10 представляет собой блок-схему этапов, выполняемых декодером по Фиг. 7, когда используется способ по Фиг. 8;
- Фиг. 11 представляет собой схематичный вид векторов движения;
- Фиг. 12 представляет собой схематичный вид векторов движения для использования при пояснении того, как векторы движения по Фиг. 11 отображаются в первом варианте выполнения настоящего изобретения;
- Фиг. 13 представляет собой другой схематичный вид векторов движения;
- Фиг. 14 представляет собой схематичный вид векторов движения для использования при пояснении того, как отображаются векторы движения по Фиг. 13 в пятом варианте выполнения настоящего изобретения;
- Фиг. 15 представляет собой еще один схематичный вид векторов движения; и
- Фиг. 16 представляет собой схематичный вид векторов движения для использования при пояснении того, как отображаются векторы движения по Фиг. 15 в шестом варианте выполнения настоящего изобретения.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
На Фиг. 4 показана схема устройства 1000, выполненного с возможностью реализации кодера согласно варианту выполнения настоящего изобретения или реализации декодера согласно варианту выполнения настоящего изобретения. В качестве примера, устройство 1000 представляет собой микрокомпьютер, рабочую станцию или легкое портативное устройство.
Устройство 1000 содержит шину 1113 связи, с которой предпочтительно соединены:
- центральный процессор 1111, такой как микропроцессор, обозначенный как CPU;
- постоянное запоминающее устройство (ROM) 1107, на котором сохранены одна или более компьютерных программ для реализации изобретения;
- оперативное запоминающее устройство (RAM) 1112, на котором сохранен исполняемый код способа согласно изобретению, и которое обеспечивает регистры, выполненные с возможностью записи переменных и параметров, необходимых для реализации способа кодирования последовательности цифровых изображений и/или способа декодирования битового потока; и
- интерфейс 1102 связи, соединенный с сетью 1103 связи, по которой передают цифровые данные, которые должны быть обработаны.
Память 1112a векторов движения (MVM) составляет часть 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, соответствующего этапа способа, реализующего вариант выполнения изобретения.
Кодер 30 принимает в качестве ввода исходную последовательность цифровых изображений i0-in 301. Каждое цифровое изображение представлено набором экземпляров, известных как пиксели.
Кодер 30 выводит битовый поток 310.
Битовый поток 310 содержит множество единиц кодирования или секций, причем каждая секция содержит заголовок секции для кодирования значений параметров кодирования, используемых для кодирования секции, и тело секции, содержащее кодированные видеоданные. В HEVC эти секции разделяют на неперекрывающиеся наибольшие единицы кодирования (LCU), в общем случае представляющие собой блоки размером 64 пикселя х 64 пикселя. Каждая LCU может, в свою очередь, быть итеративно разделена на меньшие единицы кодирования (CU) переменного размера с использованием разложения квадродерева. Каждый CU может быть дополнительно разделен на максимум 2 симметричных прямоугольных единицы разделения (PU).
На Фиг. 6 показана последовательность 301 цифровых изображений i, секции 103, LCU 104, CU 105, PU 106 и TU 107. TU (единица преобразования) определяют отдельно от PU для преобразования и квантования в CU.
Следует отметить, что в нижеследующем описании нами используется понятие «блок» вместо конкретной терминологии CU и PU, используемой в HEVC. CU или PU представляет собой блок пикселей.
Возвращаясь к Фиг. 5, входные цифровые изображения i разделяют на блоки посредством модуля 302. Эти блоки представляют собой участки изображения и могут иметь переменные размеры (например, 4х4, 8х8, 16х16, 32х32, 64х64).
Модель 306 выбирает режим кодирования для каждого входного блока. Модуль 306 будет описан ниже по тексту.
Существует два семейства режимов кодирования - кодирование с пространственным прогнозированием или Intra-кодирование и кодирование с прогнозированием во времени или Inter-кодирование. Возможные режимы кодирования испытываются.
Модуль 303 реализует Intra-прогнозирование, при котором определенный блок, подлежащий кодированию, прогнозируют посредством «Intra-»предиктора, блока пикселей, построенного из уже кодированной информации, например вычисленного из пикселей по соседству с упомянутым блоком, подлежащим кодированию. Указание выбранного Intra-предиктора и разность между определенным блоком и его предиктором кодируют, если модуль 306 выбирает Intra-кодирование.
Прогнозирование во времени реализуется модулями 304 и 305. Сначала выбирают опорное изображение из набора опорных изображений 316, и участок опорного изображения, также называемый опорной областью, который представляет собой ближайшую область к определенному блоку, подлежащему кодированию, выбирается модулем 304 оценки движения. В общем случае модуль 304 оценки движения использует алгоритм сопоставления блоков (BMA).
По отношению к «Inter» кодированию возможны два вида прогнозирования. Моно-прогнозирование (тип P) состоит из прогнозирования блока путем обращения к одной опорной области из одного опорного изображения. Би-прогнозирование (тип B) состоит из прогнозирования блока путем обращения к двум опорным областям из одного или двух опорных изображений. В модуле 304 выполняется оценка движения между текущим блоком и опорными изображениями 316, чтобы идентифицировать в одном или нескольких из этих опорных изображений один (тип P) или несколько (тип B) блоков пикселей для использования в качестве предикторов для этого текущего блока.