Кодирование коэффициентов преобразования в кодерах и/или декодерах изображения и видеоданных
Иллюстрации
Показать всеИзобретение относится к способу, системе и устройству для кодирования цифрового видеосигнала, и, конкретнее, к кодированию квантованных коэффициентов преобразования, формируемых в результате кодирования на основе блочного преобразования в кодере/декодере видеоданных и изображений с использованием кодирования переменной длины (КПД). Технический результат заключается в обеспечении собственно кодирования цифрового видеосигнала. Способ кодирования набора символов данных, содержащего некоторое первое число символов данных, имеющих первое значение, и некоторое второе число символов данных, имеющих значения иные, чем упомянутое первое значение, причем набор символов, подлежащих КПД, формируется из упомянутого набора символов данных, и КПД применяется к указанному набору символов для осуществления КПД, при этом по меньшей мере одну характеристику КПД, применяемую к набору символов, подлежащих КПД, адаптируют в соответствии с числом символов, подлежащих КПД, и обеспечивают указание числа символов, кодированных методом КПД, при этом упомянутое указание является кодовым словом переменной длины, представляющим число символов, подлежащих КПД, выбранным из одного из по меньшей мере двух альтернативных наборов кодовых слов переменной длины в соответствии с числом символов, подлежащих КПД. 6 н. и 48 з.п. ф-лы, 8 ил., 7 табл.
Реферат
Область техники
Изобретение относится к способу, системе и устройству для кодирования цифрового видеосигнала. Более конкретно, настоящее изобретение относится к кодированию квантованных коэффициентов преобразования, формируемых в результате кодирования на основе блочного преобразования в кодере/декодере видеоданных и изображений с использованием кодирования переменной длины.
Предшествующий уровень техники
Последовательности цифровых видеосигналов, подобные обычным движущимся изображениям, записанным на пленку, содержат последовательность неподвижных изображений, причем иллюзия движения создается путем последовательного отображения изображений при относительно высокой скорости, в типовом случае от 15 до 30 кадров в секунду. Ввиду относительно высокой скорости отображения изображения в последовательных кадрах обладают высокой степенью сходства и, следовательно, содержат значительный объем избыточной информации. Например, типовой эпизод может содержать несколько стационарных элементов, таких как элементы, образующие фон, и несколько участков движущегося изображения, которые могут иметь множество форм, например лицо диктора, движущийся поток транспорта и т.д. Альтернативно камера, снимающая сцену, сама может быть движущейся, и в этом случае всем элементам изображения свойственен один и тот же характер движения. Во многих случаях это означает, что общее изменение от одного видеокадра к другому весьма мало.
Каждый кадр несжатой последовательности цифровых видеоданных содержит массив пикселов изображения. Например, в обычно используемом формате цифровых видеоданных, известном как QCIF (формат обмена сжатыми видеоданными с уменьшенным вчетверо разрешением), кадр содержит массив из 176х144 пиксела, причем в этом случае каждый кадр имеет 25344 пиксела. В свою очередь, каждый пиксел представлен определенным числом битов, которые несут информацию о яркости и/или цвете области изображения, соответствующей пикселу. Обычно используется так называемая модель цвета YUV для представления яркости и цветности изображения. Компонент яркость или Y представляет интенсивность (яркость) изображения, в то время как цветовое содержимое изображения представлено двумя компонентами: компонентом цветности или цветоразностным компонентом, обозначенными соответственно U и V.
Цветовые модели, основанные на представлении яркости/ цветности, содержимого изображения, имеют некоторые недостатки по сравнению с цветовыми моделями, которые основаны на представлении, связанном с основными цветами (т.е. RGB - красный, синий, зеленый). Зрительная система человека более чувствительна вариациям интенсивности, чем к вариациям цвета, и цветовые модели YUV используют это свойство путем использования меньшего пространственного разрешения для компонентов цветности (U,V), чем для компонента яркости (Y). Таким путем можно уменьшить объем информации, требуемый для кодирования цветовой информации в изображении при допустимом снижении качества изображения.
Более низкое пространственное разрешение компонентов цветности обычно реализуется за счет субдискретизации. В типовом случае каждый кадр последовательности видеоданных делиться на так называемые макроблоки, которые содержат информацию яркости (Y) и связанную информацию цветности (U,V), которая подвергнута субдискретизации по пространству. Фиг. 3 иллюстрирует возможный способ формирования макроблоков, где показан кадр последовательности видеоданных, представленный с использованием цветовой модели YUV, причем каждый компонент имеет одинаковое пространственное разрешение. Макроблоки сформированы путем представления области 16х16 пикселов изображения на исходном изображении как четыре блока информации яркости, причем каждый блок информации яркости содержит массив 8х8 значений яркости (Y), и два пространственно соответствующих компонента цветности (U и V), которые подвергнуты субдискретизации с коэффициентом 2 по направлениям х и у для получения соответствующих массивов 8х8 значений (U,V) цветности. Соответственно некоторым рекомендациям кодирования видеоданных, таких как рекомендация Международного Союза по телекоммуникациям (ITU-T) Н.26l, размер базового блока, используемого в макроблоках, может быть иным, чем 8х8, например, таким как 4х8 или 4х4 (см. G.Bjontegaard,”H.26L Test Model Long Term Number 8 (TML-8) draft 0”, VCEG-N10, June 2001, section 2.3).
Изображение QCIF содержит 11х9 макроблоков. Если блоки яркости и блоки цветности представлены разрешением 8 битов (т.е. числами в диапазоне от 0 до 255), то общее число битов, требуемых на макроблок, равно (16х16х8)+2х(8х8х8)=3072 битов. Число битов, требуемое для представления кадра видеоданных в формате QCIF, равно, таким образом, 99х3072=304128 битов. Это означает, что количество данных, требуемых для передачи, регистрации и отображения несжатой последовательности видеоданных в формате QCIF, представленной с использованием цветовой модели YUV, при скорости 30 кадров в секунду, превышает 9 Мбит/с (миллионов битов в секунду). Это является очень высокой скоростью передачи данных и не практично для использования в приложениях записи, передачи и отображения видеоданных, поскольку для этого требуется очень большой объем памяти, высокая пропускная способность канала передачи и высокоэффективные аппаратные средства.
Если видеоданные должны передаваться в реальном времени в сети со стационарными каналами, такой как ISDN (цифровая сеть с комплексными услугами) или PSTN (коммутируемая телефонная сеть общего пользования), доступная ширина полосы передачи данных имеет величину порядка 64 кбит/с. В мобильной видеотелефонии, где передача осуществляется по меньшей мере частично по каналу радиосвязи, доступная ширина полосы может иметь величину всего лишь порядка 20 кбит/с. Это означает, что должно быть произведено значительное сокращение объема информации, используемой для представления видеоданных, чтобы можно было осуществить передачу последовательностей цифровых видеоданных в сетях связи с малой шириной полосы. По этой причине были разработаны методы сжатия видеоданных, которые сокращают объем передаваемой информации при сохранении приемлемого качества изображения.
Методы сжатия видеоданных основаны на сокращении избыточных и нерелевантных для восприятия частей последовательностей видеоданных. Избыточность в последовательностях видеоданных может быть подразделена на пространственную, временную и спектральную. Термин «пространственная избыточность» используется для описания корреляции (меры сходства) между смежными пикселами в кадре. Термин «временная избыточность» отражает тот факт, что объекты, появляющиеся в одном кадре последовательности, с большой вероятностью появятся в последующих кадрах, а «спектральная избыточность» относится к корреляции между различными цветовыми компонентами одного и того же изображения.
В достаточной степени эффективное сжатие обычно не может быть достигнуто простым снижением различных форм избыточности в заданной последовательности изображений. Таким образом, большинство современных кодеров видеоданных также снижают качество тех частей последовательности видеоданных, которые являются субъективно менее важными. Дополнительно избыточность сжатого битового потока видеоданных снижается за счет эффективного кодирования без потерь. В принципе, это достигается с использованием метода, известного как статистическое кодирование.
Часто имеется значительная степень пространственной избыточности между пикселами, которые образуют каждый кадр последовательности цифровых видеоданных. Иными словами, значение любого пиксела в кадре последовательности по существу то же самое, что и значение других пикселов в непосредственной близости. В типовом случае системы кодирования видеоданных снижают пространственную избыточность путем использования метода, известного как кодирование на основе блочного преобразования, в котором математическое преобразование применяется к пикселам изображения на основе макроблоков. Кодирование на основе преобразования преобразует данные изображения из представления, содержащего значения пикселов, в форму, содержащую набор значений коэффициентов, каждый из которых является весовым коэффициентом (множителем) для базовой функции соответствующего преобразования. С использованием определенных математических преобразований, таких как двумерное дискретное косинусное преобразование (ДКТ), пространственная избыточность в кадре последовательности цифровых видеоданных может быть существенным образом снижена, тем самым обеспечивая более компактное представление данных изображения.
Кадры последовательности видеоданных, которые сжаты с использованием кодирования на основе блочного преобразования, без ссылки на какие-либо другие кадры в последовательности называются INTRA («внутри»)-кодированными кадрами или I-кадрами. Кроме того, где возможно, блоки INTRA-кодированных кадров прогнозируются из предыдущих кодированных блоков внутри того же самого кадра. Этот метод, известный как INTRA-прогнозирование, позволяет дополнительно уменьшить объем данных, требуемых для представления INTRA-кодированного кадра.
В общем случае системы кодирования видеоданных не только снижают пространственную избыточность внутри индивидуальных кадров последовательности видеоданных, но и используют метод, известный как «прогнозирование с компенсацией движения», для снижения временной избыточности в последовательности. С использованием прогнозирования с компенсацией движения содержимое изображения некоторых (часто многих) кадров в последовательности цифровых видеоданных «прогнозируется» из одного или нескольких кадров в последовательности, известных как «эталонные» или «опорные» кадры. Прогнозирование содержимого изображения достигается отслеживанием движения объектов или участков изображения между кадрами, подлежащими кодированию (сжатию), и опорным кадром (кадрами) с использованием «векторов движения». В принципе опорный кадр (кадры) может предшествовать кадру, который должен кодироваться, или может следовать за ним в последовательности видеоданных. Как в случае INTRA-кодирования, прогнозирование с компенсацией движения кадра видеоданных обычно выполняется на основе макроблоков.
Кадры, которые сжимаются с использованием прогнозирования с компенсацией движения, в общем случае называются INTER («между»)-кодированными кадрами или Р-кадрами. Одно только кодирование с компенсацией движения едва ли обеспечит достаточно точное представление содержания изображения кадра видеоданных, и поэтому обычно необходимо обеспечить так называемый кадр «ошибки прогнозирования» (РЕ-кадр) с каждым INTER-кодированным кадром. Кадр ошибки прогнозирования представляет разность между декодированной версией INTER-кодированного кадра и содержанием изображения кадра, который должен кодироваться. Более конкретно, кадр ошибки прогнозирования содержит значения, которые представляют разность между значениями пикселов в кадре, который должен кодироваться, и соответствующими значениями воспроизведенных пикселов, сформированных на основе спрогнозированной версии данного кадра. Следовательно, кадр ошибки прогнозирования имеет характеристики, подобные неподвижному изображению, и кодирование на основе блочного преобразования может быть применено для снижения его пространственной избыточности и, следовательно, объема данных (числа битов), требуемых для его представления.
Для иллюстрации работы системы кодирования видеоданных более подробно ссылки ниже даются на фиг. 1 и 2. На фиг. 1 представлена блок-схема обобщенного кодера видеоданных, который использует комбинации INTRA- и INTER-кодирования для формирования сжатого (кодированного) битового потока видеоданных. Соответствующий декодер показан на фиг. 2 и описан ниже.
Кодер 100 видеоданных содержит вход 101 для приема сигнала цифровых видеоданных с камеры или иного источника видеоданных (не показано). Он также содержит блок 104 преобразования, который выполнен с возможностью осуществления блочного дискретного косинусного преобразования (ДКП), квантователь 106, обратный квантователь 108, блок 110 обратного преобразования, выполненный с возможностью осуществления обратного блочного дискретного косинусного преобразования (ОДКП), блоки 112 и 116 объединения и память 120 кадра. Кодер также содержит блок 130 оценки движения, кодер 140 поля движения и блок 150 прогнозирования с компенсацией движения. Переключатели 102 и 114 действуют взаимосвязанно под управлением блока 160 управления, чтобы переключать кодер между кодированием видеоданных в INTRA-режиме и кодированием видеоданных в INTER-режиме. Кодер 100 также содержит кодер 170 мультиплексирования видеоданных, который формирует единый битовый поток из различных типов информации, формируемой кодером 100, для последующей передачи к удаленному принимающему терминалу или, например, для хранения на носителе в массовой памяти, например, на накопителе на жестких дисках компьютера (не показано).
Кодер 100 работает следующим образом. Каждый кадр несжатых видеоданных, поданных от источника видеоданных на вход 101, принимается и обрабатывается на основе макроблоков, предпочтительно в порядке растрового сканирования. Когда начинается кодирование новой последовательности видеоданных, первый кадр, подлежащий кодированию, кодируется как INTRA-кодированный кадр. Затем кодер программируется для кодирования каждого кадра в формате INTER-кодирования, если только не удовлетворено одно из следующих условий: 1) принимается решение, что текущий макроблок кодируемого кадра настолько отличается от значений пикселов в опорном кадре, использованном для его прогнозирования, что вырабатывается информация чрезмерной ошибки прогнозирования, и в этом случае текущий макроблок кодируется в формате INTRA-кодирования, 2) истек предварительно определенный интервал повторения INTRA-кадра или 3) получена обратная связь от принимающего терминала, указывающая на запрос кадра, который должен быть обеспечен в формате NTRA-кодирования.
Появление условия (1) определяется путем контроля выходного результата блока 116 объединения. Блок 116 объединения образует разность между текущим макроблоком кодируемого кадра и его прогнозом, вырабатываемым в блоке 150 кодирования с компенсацией движения. Если мера этой разности (например, сумма абсолютных разностей значений пикселов) превышает предварительно определенный порог, то блок 116 объединения информирует блок 160 управления по управляющей линии 119, и блок 160 управления приводит в действие переключатели 102 и 114 по управляющей линии 113 таким образом, чтобы переключить кодер 100 в режим INTRA-кодирования. Таким путем кадр, который в противном случае кодировался бы в INTER-формате, может содержать макроблоки, кодированные в INTRA-режиме. Появление условия (2) контролируется посредством таймера или счетчика кадров, реализованного в блоке 160 управления таким образом, что когда отсчет времени установки таймера истекает, или если счетчик кадров отсчитывает предварительно определенное число кадров, то блок 160 управления приводит в действие переключатели 102 и 114 посредством управляющей линии 113 для переключения кодера в режим INTRA-кодирования. Условие (3) запускается, если блок 160 управления принимает сигнал обратной связи от, например, принимающего терминала посредством управляющей линии 121, указывающий, что принимающий терминал требует обновления INTRA-кадра. Такое условие может возникнуть, например, если ранее переданный кадр сильно искажен помехами при передаче, что приводит к невозможности его декодирования в приемнике. В этой ситуации принимающий декодер выдает запрос на кодирование следующего кадра в формате INTRA-кодирования, тем самым повторно инициализируя последовательность кодирования.
Ниже описана работа кодера 100 в режиме INTRA-кодирования. В режиме INTRA-кодирования блок 160 управления приводит в действие переключатель 102 для приема входных видеоданных из входной линии 118. Входной сигнал видеоданных принимается на основе макроблоков с входа 101 посредством входной линии 118. Принятые блоки значений яркости и цветности, которые составляют макроблок, проходят на блок 104 преобразования ДКП, который выполняет двумерное дискретное косинусное преобразование по каждому блоку значений, формируя двумерный массив коэффициентов ДКП для каждого блока. Блок 104 преобразования ДКП вырабатывает массив значений коэффициентов для каждого блока, причем число значений коэффициентов зависит от характера блоков, которые образуют макроблоки. Например, если размер базового блока, используемого в макроблоке, равен 4х4, то блок 104 преобразования ДКП вырабатывает массив 4х4 коэффициентов ДКП для каждого блока. Если размер блока есть 8х8, то формируется массив 8х8 коэффициентов ДКП.
Коэффициенты ДКП для каждого блока поступают в квантователь 106, где они квантуются с использованием параметра квантования QP. Выбор параметра квантования QP управляется блоком 160 управления через управляющую линию 115. Квантование вводит потери информации, так как квантованные коэффициенты имеют более низкую численную точность, чем коэффициенты, первоначально сформированные блоком 104 преобразования ДКП. Это обеспечивает дополнительный механизм, посредством которого объем данных, требуемых для представления каждого изображения в последовательности видеоданных, может быть уменьшен. Однако в отличие от преобразования ДКП, которое по существу осуществляется без потерь, потери, вносимые квантованием, обуславливают необратимое ухудшение качества изображения. Чем выше степень квантования, применяемая к коэффициентам ДКП, тем выше потери качества изображения.
Квантованные коэффициенты ДКП для каждого блока поступают с квантователя 106 на кодер 170 мультиплексирования видеоданных, как показано линией 125 на фиг. 1. Кодер 170 мультиплексирования видеоданных упорядочивает квантованные коэффициенты преобразования для каждого блока с использованием процедуры зигзагообразного сканирования. Эта операция преобразует двумерный массив квантованных коэффициентов преобразования в одномерный массив. Типовые порядки зигзагообразного сканирования, например, для массива 4х4, показанного на фиг.4, упорядочивают коэффициенты приближенно в нисходящем порядке пространственной частоты. Это также имеет тенденцию к упорядочиванию коэффициентов по их значениям, так что коэффициенты, позиционированные раньше в одномерном массиве, более вероятно будут иметь большие абсолютные значения, чем коэффициенты, позиционированные позже в массиве. Это объясняется тем, что более низкие пространственные частоты имеют с большей вероятностью более высокие амплитуды в блоках изображения. Следовательно, значения, возникающие в конце одномерного массива квантованных коэффициентов преобразования, стремятся к нулю.
В типовом случае кодер 170 мультиплексирования видеоданных представляет каждый ненулевой квантованный коэффициент в одномерном массиве двумя значениями, называемыми «уровень» и «серия» (диапазон значений). Уровень - это значение квантованного коэффициента, а серия - это число последовательных нулевых коэффициентов, предшествующий данному коэффициенту. Значения «уровень» и «серия» для данного коэффициента упорядочены таким образом, что значение «уровень» предшествует ассоциированному значению «серии». Значение «уровня», равное нулю, используется для указания, что больше нет ненулевых значений коэффициентов в блоке. Это значение «0-уровень» определяется как символ ЕОВ (конец блока).
Альтернативно каждый квантованный коэффициент ненулевого значения в одномерном массиве может быть представлен тремя значениями («серия», «уровень», «последний»). Значения «уровень» и «серия» идентичны тем, которые определены в предыдущей схеме, а «последний» указывает на то, имеются ли другие коэффициенты ненулевых значений в одномерном массиве, следующие за текущим коэффициентом. Следовательно, нет необходимости в отдельном символе ЕОВ.
Значения «серия» и «уровень» (и «последний», если применяется) затем сжимаются с использованием статистического кодирования. Статистическое кодирование представляет собой операцию без помех, которая использует тот факт, что символы в наборе данных, подлежащем кодированию, в общем случае имеют разные вероятности появления. Поэтому вместо использования фиксированного числа битов для представления каждого символа назначается переменное число битов, так что символы, которые возникают с более высокой вероятностью, представляются кодовыми словами, имеющими меньшее число битов. По этой причине статистическое кодирование часто называют кодированием переменной длины. Поскольку появление определенных значений «уровней» и «серий» более вероятно, чем появление других значений, то методы статистического кодирования могут использоваться более эффективно для сокращения числа битов, требуемых для представления значений «серий» и «уровней».
Если значения «серий» и «уровней» кодированы статистически, то кодер 170 мультиплексирования видеоданных далее комбинирует их с информацией управления, также статистически кодированной с использованием способа кодирования переменной длины, подходящего для рассматриваемого типа информации, для формирования единого сжатого битового потока кодированной информации 135 изображения. Именно этот битовый поток, включающий в себя кодовые слова переменной длины, представляющие пары значений («серия», «уровень»), передается из кодера.
Хотя статистическое кодирование описано во взаимосвязи с операциями, выполняемыми кодером 170 мультиплексирования видеоданных, следует отметить, что в альтернативных вариантах осуществления может быть предусмотрен отдельный блок статистического кодирования.
Локально декодированная версия макроблока также формируется в кодере 100. Это делается путем пропускания квантованных коэффициентов преобразования для каждого блока, выведенных квантователем 106, через обратный квантователь 108 и применения обратного преобразования ДКП в блоке 110 обратного преобразования. Таким способом восстановленный массив значений пикселов формируется для каждого блока макроблока. Полученные в результате декодированные данные изображения вводятся в блок 112 объединения. В режиме INTRA-кодирования переключатель 114 устанавливается так, что вход в блок 112 объединения через переключатель 114 является нулевым. За счет этого операция, выполняемая блоком 112 объединения, является эквивалентной пропусканию декодированных данных изображения неизменными.
По мере того как последующие макроблоки текущего кадра принимаются и подвергаются вышеописанным этапам кодирования и локального декодирования в блоках 104, 106, 108, 110 и 112, декодированная версия INTRA-кодированного кадра формируется в памяти 120 кадра. После того как последний макроблок текущего кадра будет INTRA-кодирован и затем декодирован, в памяти 120 кадра будет содержаться полностью декодированный кадр, доступный для использования в качестве опорного кадра прогнозирования при кодировании последующего принимаемого кадра в формате INTER-кодирования.
Ниже описана работа кодера 100 в режиме INTER-кодирования. В режиме INTER-кодирования блок 160 управления приводит в действие переключатель 102 для обеспечения поступления на него входных данных по линии 117, которые являются выходными данными блока 116 объединения. Блок 116 объединения получает входной сигнал видеоданных на основе макроблоков с входа 101. Блок 116 объединения получает блоки яркости и цветности, которые образуют макроблок, и формирует соответствующие блоки информации ошибки прогнозирования. Информация ошибки прогнозирования представляет разность между данным блоком и его прогнозом, сформированным в блоке 150 прогнозирования с компенсацией движения. Более конкретно, информация ошибки прогнозирования для каждого блока макроблока содержит двумерный массив значений, каждое из которых представляет разность между значением пиксела в кодируемом блоке информации яркости или цветности и декодированным значением пиксела, полученным путем формирования прогноза со скомпенсированным движением для данного блока, согласно процедуре, описанной ниже. Таким образом, в ситуации, когда каждый макроблок содержит, например, совокупность из 4х4 блоков, содержащих значения яркости и цветности, информация ошибки прогнозирования для каждого блока макроблока аналогично содержит массив из 4х4 значений ошибки прогнозирования.
Информация ошибки прогнозирования для каждого блока макроблока подается на блок 104 преобразования ДКП, который выполняет двумерное дискретное косинусное преобразование по каждому блоку значений ошибки прогнозирования для формирования двумерного массива коэффициентов преобразования ДКП для каждого блока. Блок 104 преобразования ДКП формирует массив значений коэффициентов для каждого блока ошибки прогнозирования, причем число значений коэффициентов зависит от характера блоков, которые образуют макроблок. Например, если размер базового блока, используемого в макроблоке, составляет 4х4, то блок 104 преобразования ДКП формирует массив из 4х4 коэффициентов ДКП для каждого блока ошибки прогнозирования. Если размер блока равен 8х8, то формируется массив 8х8 коэффициентов ДКП.
Коэффициенты преобразования для каждого блока ошибки прогнозирования поступают на квантователь 106, где они квантуются с использованием параметра квантования QP аналогично тому, как описано в связи с работой кодера в режиме INTRA-кодирования. Вновь выбор параметра квантования QP управляется блоком 160 управления посредством управляющей линии 115.
Квантованные коэффициенты ДКП, представляющие информацию ошибки прогнозирования для каждого блока макроблока, поступают с квантователя 106 на кодер 170 мультиплексирования видеоданных, как показано линией 125 на фиг. 1. Как в режиме INTRA-кодирования, кодер 170 мультиплексирования видеоданных упорядочивает коэффициенты преобразования для каждого блока ошибок прогнозирования с использованием ранее описной процедуры зигзагообразного сканирования (см. фиг. 4) и затем представляет каждый ненулевой квантованный коэффициент как значение «уровня» и «серии». Дополнительно он сжимает значения «уровня» и «серии» с использованием статистического кодирования способом, аналогичным описанному выше в связи с режимом INTRA-кодирования. Кодер 170 мультиплексирования видеоданных также получает информацию вектора движения (описанного ниже) с блока 140 кодирования поля движения по линии 126 и информацию управления с блока 160 управления. Он осуществляет статистическое кодирование информации вектора движения и информации управления и формирует единый битовый поток 135 кодированной информации изображения, содержащий статистически кодированный вектор движения, вектор прогнозирования и информацию управления.
Квантованные коэффициенты ДКП, представляющие информацию ошибки прогнозирования для каждого блока макроблока, также подаются с квантователя 106 на обратный квантователь 108. Здесь они подвергаются обратному квантованию, и полученные в результате блоки коэффициентов ДКП, подвергнутых обратному квантованию, подаются на блок 110 обратного преобразования ДКП, где они подвергаются обратному преобразованию ДКП для формирования локально декодированных блоков значений ошибки прогнозирования. Локально декодированные блоки значений ошибки прогнозирования затем вводятся в блок 112 объединения. В режиме INTER-кодирования переключатель 114 устанавливается так, что блок 112 объединения также получает прогнозированные значения пикселов для каждого блока макроблока, сформированного блоком 150 прогнозирования с компенсацией движения. Блок 112 объединения объединяет каждый из локально декодированных блоков значений ошибки прогнозирования с соответствующим блоком прогнозированных значений пикселов для формирования блоков восстановленного изображения и сохраняет их в памяти 120 кадра.
По мере того как последующие макроблоки сигнала видеоданных принимаются от источника видеоданных и подвергаются вышеописанным этапам кодирования и декодирования в блоках 104, 106, 108, 110 и 112, декодированная версия кадра формируется в памяти 120 кадра. После того как последний макроблок кадра будет обработан, в памяти 120 кадра будет содержаться полностью декодированный кадр, доступный для использования в качестве опорного кадра прогнозирования при кодировании последующего принимаемого кадра видеоданных в формате INTER-кодирования.
Ниже описано прогнозирование для макроблока текущего кадра. Любой кадр, кодированный в формате INTER-кодирования, требует опорного кадра для прогнозирования с компенсацией движения. Это означает, что при кодировании последовательности видеоданных первый кадр, подлежащий кодированию, независимо от того, является ли он первым кадром в последовательности или некоторым иным кадром, должен обязательно кодироваться в формате INTRA-кодирования. Это, в свою очередь, означает, что, когда кодер 100 видеоданных переключается в режим INTER-кодирования блоком 160 управления, полный опорный кадр, сформированный локальным декодированием предыдущего кодированного кадра, уже имеется в памяти 120 кадра кодера. В принципе, опорный кадр формируется локальным декодированием либо INTRA-кодированного кадра, либо INTER-кодированного кадра.
Первый этап при формировании прогноза для макроблока текущего кадра выполняется блоком 130 оценки движения. Блок 130 оценки движения получает блоки значений яркости и цветности, которые составляют текущий макроблок кадра, подлежащего кодированию, по линии 128. Затем он выполняет операцию согласования блока для идентификации области в опорном кадре, которая по существу соответствует текущему макроблоку. Чтобы выполнить операцию согласования блока, блок оценки движения обращается к данным опорного кадра, сохраненным в памяти 120 кадра, по линии 127. Более конкретно, блок 130 оценки движения выполняет согласование блоков путем вычисления разностных значений (например, сумм абсолютных разностей), представляющих разность значений пикселов между исследуемым макроблоком и предполагаемыми областями наилучшего согласования пикселов из опорного кадра, сохраненного в памяти 120 кадра. Разностное значение формируется для предполагаемых областей при всех возможных смещениях в пределах предварительно определенной области поиска для опорного кадра, и блок 130 оценки движения определяет наименьшее вычисленное значение разности. Смещение между макроблоком в текущем кадре и предполагаемым блоком значений пикселов в опорном кадре, которое дает наименьшее значение разности, определяет вектор движения для данного макроблока.
После того как блок 130 оценки движения сформировал вектор движения для макроблока, он выдает вектор движения на блок 140 кодирования поля движения. Блок 140 кодирования поля движения аппроксимирует вектор движения, полученный от блока 130 оценки движения, с использованием модели движения, содержащей набор базовых функций и коэффициентов движения. Более конкретно, блок 140 кодирования поля движения представляет вектор движения как набор значений коэффициентов движения, которые, будучи умноженными на базовые функции, формируют аппроксимацию вектора движения. В типовом случае используется модель преобразования движения, имеющая только два коэффициента движения и две базовые функции, однако также могут использоваться и модели движения более высокой сложности.
Коэффициенты движения подаются с блока 140 кодирования поля движения на блок 150 прогнозирования с компенсацией движения. Блок 150 прогнозирования с компенсацией движения также получает значения пикселов предполагаемой области с наилучшим согласованием, идентифицированные блоком 130 оценки движения, из памяти 120 кадра. С использованием приближенного представления вектора движения, сформированного блоком 140 кодирования поля движения, и значения пикселов предполагаемой области пикселов с наилучшим согласованием из опорного кадра, блок 150 прогнозирования с компенсацией движения формирует массив прогнозированных значений пикселов для каждого блока макроблока. Каждый блок прогнозированных значений пикселов подается на блок 116 объединения, где прогнозированные значения пикселов вычитаются из действительных (входных) значений пикселов в соответствующем блоке текущего макроблока. Таким путем получают набор блоков ошибки прогнозирования для макроблока.
Ниже описана работа декодера 200 видеоданных, представленного на фиг. 2. Декодер 200 содержит декодер 270 мультиплексированных видеоданных, который получает битовый поток 135 кодированных видеоданных с кодера 100 и демультиплексирует его на свои компоненты: обратный квантователь 210, блок 220 обратного преобразования ДКП, блок 240 прогнозирования с компенсацией движения, память 250 кадра, блок 230 объединения, блок 260 управления и выход 280.
Блок 260 управления управляет работой декодера 200 в ответ на то, какие кадры декодируются: INTRA-кодированные или INTER-кодированные. Сигнал управления запуском режима INTER/INTRA-кодирования, который вызывает переключение декодера между режимами декодирования, получают, например, из информации, предусмотренной в части заголовка каждого кадра сжатых видеоданных, принятого от кодера. Сигнал управления запуском режима INTER/INTRA-кодирования выделяется из битового потока кодированных видеоданных декодером 270 мультиплексированных видеоданных и подается на блок 260 управления по управляющей линии 215.
Декодирование INTRA-кодированного кадра выполняется на основе макроблоков, причем каждый макроблок декодируется по существу сразу, как только кодированная информация, относящаяся к нему, принимается в битовом потоке 135 видеоданных. Декодер 270 мультиплексированных видеоданных отделяет кодированную информацию для блоков макроблока от возможной информации управления, относящейся к данному макроблоку. Кодированная информация для каждого блока INTRA-кодированного макроблока содержит кодовые слова переменной длины, представляющие статистически кодированные значения «уровня» и «серии» для ненулевых квантованных коэффициентов ДКП блока. Декодер 270 мультиплексированных видеоданных декодирует кодовые слова переменной длины с использованием способа декодирования переменной длины, соответствующего способу кодирования, использованному в кодере 100, и при этом восстанавливает значения «уровня» и «серии». Затем он восстанавливает массив значений квантованных коэффициентов преобразования для каждого блока макроблока и подает их на обратный квантователь 210. Соответствующая информация управления, относящаяся к макроблоку, также декодируется в декодере мультиплексированных видеоданных с использованием подходящего способа декодирования и подается на блок 260 управления. В частности, информация, относящаяся к уровню квантования, применяемая для коэффициентов преобразования, выделяется из кодированного битового потока декодером 270 мультиплексированных видеоданных и подается на блок 260 управления по управляющей линии 217. Блок управления, в свою очередь, передает эту информацию на обратный квантователь 210 по управляющей линии 218. Обратный квантователь 210 осуществляет обратное квантование коэффициентов ДКП для каждого блока макроблока в соответствии с информацией управления и подает коэффициенты ДКП, подвергнутые обратному квантованию, на блок 220 обратного преобразования ДКП.
Блок 220 обратного преобразования ДКП выполняет обратное преобразование ДКП над коэффициентами ДКП, подвергнутыми обратному квантованию, для каждого блока макроблока для формирования декодированного блока информации изображения, содержащей восстановленные значения пикселов. Поскольку при кодировании/декодировании INTRA-кодированных макроблоков не используется прогнозирование с компенсацией движения, то блок 260 управления управляет блоком 230 объединения таким образом, чтобы воспрепятствовать использованию опорной информации при декодировании INTRA-кодированного макроблока. Восстановленные значения пикселов для каждого блока макроблока подаются на выход 280 видеоданных декодера, где, например, они могут быть поданы на ди