Способ кодирования и декодирования изображений, устройство кодирования и декодирования и соответствующие компьютерные программы

Иллюстрации

Показать все

Группа изобретений относится к технологиям кодирования/декодирования видеоданных. Техническим результатом является повышение эффективности кодирования/декодирования изображения. Предложен способ кодирования по меньшей мере одного изображения. Способ содержит этапы, на которых осуществляют сегментирование изображения на множество блоков, группировку блоков в предопределенное число подмножеств блоков. Далее способ содержит этап, на котором осуществляют кодирование, с использованием модуля энтропийного кодирования, текущего блока из упомянутых подмножеств блоков. При этом кодирование содержит, когда текущий блок является первым блоком в порядке кодирования подмножества, которое не является первым подмножеством изображения в порядке кодирования: определение вероятности возникновения символа для текущего блока, причем вероятности являются теми, которые были определены посредством кодирования некоторого предопределенного блока из по меньшей мере одного другого подмножества. 6 н. и 6 з.п. ф-лы, 14 ил.

Реферат

Область техники, к которой относится изобретение

Настоящее изобретение относится в общем случае к области обработки изображений и более конкретно к кодированию и декодированию цифровых изображений и последовательностей цифровых изображений.

Настоящее изобретение, таким образом, может быть применено к способам видеокодирования, реализованным как в современных видеокодирующих устройствах (стандарты MPEG, Н.264 и т.п.), так и в будущих видеокодирующих устройствах (стандарты ITU-T/VCEG (Н.265) или ISO/MPEG (HVC)).

Уровень техники

Современные видеокодирующие устройства (стандарты MPEG, Н.264 и т.п.) используют поблочное представление видеопоследовательности. Изображения разбивают на макроблоки, каждый макроблок в свою очередь разбивают на блоки и каждый блок или макроблок кодируют с применением внутрикадрового или межкадрового прогнозирования. Таким образом, некоторые изображения кодируют посредством пространственного прогнозирования (внутрикадровое прогнозирование), а другие изображения кодируют посредством временного прогнозирования (межкадровое прогнозирование) относительно одного или нескольких кодированных и/или декодированных опорных изображений с применением компенсации движения, известной специалистам в этой области. Более того, для каждого блока может быть кодирован остаточный блок, соответствующий исходному блоку, из которого вычтен результат прогнозирования. Коэффициенты этого блока квантуют, возможно, после преобразования, и затем кодируют посредством энтропийного кодирующего устройства.

Для применения внутрикадрового прогнозирования и межкадрового прогнозирования требуется, чтобы были доступны некоторые блоки, которые были ранее кодированы и декодированы, чтобы их можно было использовать в декодере или в кодирующем устройстве для прогнозирования текущего блока. Схематичный пример кодирования с прогнозированием, подобного рассматриваемому, представлен на фиг. 1, на которой изображение IN разбито на блоки, текущий блок MBi этого изображения подвергается кодированию с прогнозированием относительно заданного числа трех предварительно кодированных и декодированных блоков MBr1, MBr2 и MBr3, обозначенных заштрихованными стрелками. Упомянутые выше три блока, в частности, представляют собой блок MBr1, расположенный непосредственно слева от текущего блока MBi, и два блока MBr2 и MBr3, расположенные непосредственно сверху и сверху справа от текущего блока MBi.

Более конкретный интерес здесь представляет энтропийное кодирующее устройство. Это энтропийное кодирующее устройство кодирует информацию в порядке ее поступления. Обычно блоки просматривают строка за строкой по схеме "растрового сканирования", как показано на фиг. 1 линией PRS, начиная от блока в верхнем левом углу изображения. Для каждого блока в энтропийное кодирующее устройство последовательно передают различные сегменты информации для представления этого блока (тип блока, режим прогнозирования, остаточные коэффициенты и т.п.).

На сегодня уже известно обладающее приемлемой сложностью эффективное устройство арифметического кодирования, именуемое устройством контекстно-ориентированного адаптивного двоичного арифметического кодирования ("САВАС" ("Context Adaptive Binary Arithmetic Coder")) и введенное в стандарт сжатия AVC (известный также под названиями (ISO-MPEG4 часть 10 и ITU-T Н.264)).

Такое энтропийное кодирующее устройство реализует различные принципы:

- арифметическое кодирование: кодирующее устройство, такое как устройство, первоначально описанное в документе Й. Риссанен и Г.Г. Лэнгдон, мл. "Универсальное моделирование и кодирование" (J. Rissanen and G. G. Langdon Jr, "Universal modeling and coding") IEEE Trans. Inform. Theory, vol. IT-27, pp. 12-23, Jan. 1981, используется для кодирования символа и вероятности появления этого символа;

- адаптация к контексту: здесь это охватывает адаптацию вероятности появления символа, подлежащего кодированию. С одной стороны "обучение" происходит прямо в процессе работы ("на лету"). С другой стороны, в зависимости от состояния ранее кодированной информации для кодирования используется конкретный контекст. Каждому контексту здесь соответствует некая присущая ему собственная вероятность появления символа. Например, контекст соответствует типу кодируемого символа (представление коэффициента остатка, сигнализация о режиме кодирования и т.п.) согласно данной конфигурации или состоянию ближайшего окружения (соседства) (например, число ближайших соседствующих блоков, для которых выбран режим внутрикадрового прогнозирования, и т.п.);

- бинаризация: осуществляется формирование последовательности битов символов, подлежащих кодированию. После этого полученные различные биты последовательно передают в двоичное энтропийное кодирующее устройство.

Таким образом, это энтропийное кодирующее устройство реализует, для каждого используемого контекста, систему для обучения вероятностям в процессе работы применительно к ранее кодированным символам для рассматриваемого контекста. Это обучение основано на порядке кодирования этих символов. Обычно изображение просматривают согласно описанному выше порядку типа "растрового сканирования".

В процессе кодирования данного символа b, который может быть равен 0 или 1, результат обучения вероятности pi появления этого символа обновляют для текущего блока MBi следующим образом:

где α представляет собой заданную величину, например 0,95, и pi-1 представляет собой вероятность появления символа, вычисленную после последнего появления этого символа.

На фиг. 1 представлен схематичный пример такого энтропийного кодирования, в котором такому энтропийному кодированию подвергается текущий блок MBi изображения IN. Когда начинается энтропийное кодирование блока MBi, используют вероятности появления символов, полученные после кодирования ранее кодированного и декодированного блока, в качестве которого выбирают блок, непосредственно предшествующий текущему блоку MBi в соответствии с описанной выше схемой просмотра блоков строка за строкой по принципу "растрового сканирования". Такое обучение на основе взаимозависимости от блока к блоку показано на фиг. 1 для некоторых блоков (только для ясности картинки) посредством тонких стрелок.

Недостаток такого типа энтропийного кодирования состоит в том, что вероятности, используемые при кодировании символа, расположенного в начале строки, соответствуют главным образом вероятностям, наблюдаемым для символов, находящихся в конце предшествующей строки, если применять просмотр блоков в порядке "растрового кодирования". Теперь, применительно к возможным пространственным вариациям вероятностей символов (например, для символов, связанных с сегментом информации движения, движение в правой части изображения может отличаться от движения, наблюдаемого в левой части, и это, по всей видимости, отразится на вытекающих отсюда локальных вероятностях), можно наблюдать недостаток локальной конформности вероятностей, что возможно способно привести к потере эффективности во время кодирования.

Для ограничения этого явления были внесены предложения о модификации порядка просмотра блоков с целью обеспечить улучшенную локальную согласованность, но кодирование и декодирование остаются последовательными.

В этой области лежит другой недостаток энтропийного кодирующего устройства этого типа. Действительно, кодирование и декодирование символа зависят от состояния "выученной" для него вероятности, поэтому декодирование может быть произведено только в том же порядке, который был использован во время кодирования. Обычно декодирование в этом случае может быть только последовательным, что препятствует параллельному декодированию нескольких символов (например, чтобы получить выигрыш от многоядерных архитектур).

Документ: Томас Виганд, Гэри Дж. Салливан, Гисле Бьонтегаард и Аджай Лутра "Обзор стандарта видеокодирования Н.264/AVC" (Thomas Wiegand, Gary J. Sullivan, Gisle Bjontegaard, and Ajay Luthra, "Overview of the H.264/AVC Video Coding Standard", IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, pp. 560-576, July 2003), указывает, что энтропийное кодирующее устройство стандарта САВАС имеет характерную особенность назначения нецелочисленного количества битов каждому символу текущего алфавита, подлежащему кодированию, это является предпочтительным для вероятностей появления символов свыше 0,5. Конкретнее, кодирующее устройство стандарта САВАС ожидает момента, когда оно прочитает несколько символов, и затем назначает этой группе прочитанных символов заданное число битов, которые это кодирующее устройство записывает в сжатом потоке данных для передачи декодеру. Таким образом, такое предложение делает возможным "обобществить" биты нескольких символов и кодировать символ посредством дробного числа битов, это число отражает информацию, более близкую к информации, реально передаваемой символом. Другие биты, ассоциированные с прочитанными символами, не передают в составе сжатого потока, а сохраняют в режиме готовности, ожидая назначения одному или нескольким новым символам, прочитанным кодирующим устройством стандарта САВАС, что делает возможным снова обобществить эти другие символы. Указанное энтропийное кодирующее устройство предпринимает известным способом в данный момент времени "опустошение" этих непереданных битов. Иными словами, в этот данный момент времени кодирующее устройство извлекает биты, еще не переданные, и записывает в состав сжатого потока, адресованного декодеру. Такое опустошение имеет место, например, в момент, в который прочитан последний символ, подлежащий кодированию, чтобы обеспечить, что сжатый поток действительно содержит все биты, что позволит декодеру осуществить декодирование всех символов алфавита. В более общем смысле, момент, в который происходит указанное опустошение, определяется в функции характеристик и функциональных возможностей, специфичных для рассматриваемого кодирующего устройства/декодера.

Документ, доступный в Интернете по адресу http://research.microsoft.com/en-us/um/people/jinl/paper_2002/msri_ipeg.htm на 15 апреля 2011 г., описывает способ кодирования неподвижных изображения в соответствии со стандартом сжатия JPEG2000. Согласно этому способу данные неподвижного изображения подвергают дискретному вейвлетному преобразованию, за которым следует квантование, что делает возможным получение квантованных вейвлетных коэффициентов, с которыми соответственно ассоциированы индексы квантования. Полученные индексы квантования кодируют посредством энтропийного кодирующего устройства. Квантованные коэффициенты предварительно группируют в прямоугольные блоки, именуемые кодовыми блоками, обычно размером 64×64 или 32×32. Затем осуществляют независимое кодирование каждого кодового блока посредством энтропийного кодирования. Таким образом, энтропийное кодирующее устройство во время кодирования текущего кодового блока не использует вероятности появления символов, вычисленные в ходе кодирования предшествующих кодовых блоков. Поэтому указанное энтропийное кодирующее устройство находится в инициализированном состоянии в начале кодирования каждого кодового блока. Преимуществом такого способа является декодирование данных кодового блока без необходимости декодировать соседние кодовые блоки. Таким образом, например, сегмент клиентского программного обеспечения может потребовать от сегмента серверного программного обеспечения предоставить только те сжатые кодовые блоки, которые нужны клиенту для декодирования выделенной части изображения. Преимуществом такого способа является также возможность параллельного кодирования и/или декодирования кодовых блоков. Таким образом, чем меньше размер кодового блока, тем выше уровень параллелизма. Например, при фиксированном уровне параллелизма, равном двум, два кодовых блока могут быть кодированы и/или декодированы параллельно. Теоретически величина уровня параллелизма равна числу кодовых блоков, подлежащих кодированию в изображении. Однако характеристики сжатия, получаемые таким способом, не являются оптимальными вследствие того факта, что такое кодирование не использует вероятности, соответствующие ближайшему окружению текущего кодового блока.

Цель и краткое изложение существа изобретения

Одной из целей настоящего изобретения является устранение недостатков, свойственных упомянутым выше известным способам.

Поэтому предмет настоящего изобретения относится к способу кодирования по меньшей мере одного изображения, содержащему этапы:

- разбиение изображения на несколько блоков, которые могут содержать символы, принадлежащие заданному множеству символов;

- группирование блоков в заданное число подмножеств блоков;

- кодирование, посредством модуля энтропийного кодирования, каждого из подмножества блоков путем ассоциирования цифровой информации с символами каждого блока из рассматриваемого подмножества, этап кодирования содержит, для первого блока изображения, подэтап инициализации переменных состояния для модуля энтропийного кодирования;

- генерация по меньшей мере одного подпотока данных, представляющего по меньшей мере одно из кодированных подмножеств блоков.

Способ согласно настоящему изобретению примечателен тем, что:

- в случае когда текущий блок является первым блоком, подлежащим кодированию, из состава рассматриваемого подмножества, в качестве вероятностей появления символов для первого текущего блока принимают вероятности, которые были определены для кодированного и декодированного заданного блока из состава по меньшей мере одного другого подмножества;

- если текущий блок представляет собой последний кодированный блок из состава рассматриваемого подмножества, тогда:

• записывают в подпоток, представляющий рассматриваемое подмножество, всю полноту цифровой информации, ассоциированной с символами, во время кодирования блоков рассматриваемого подмножества;

• выполняют подэтап инициализации.

Указанный выше этап записи содержит, как только будет закодирован последний блок какого-либо подмножества блоков, опустошение цифровой информации (битов), еще не переданной, как было объяснено в приведенном выше описании.

Связь между упомянутым выше этапом записи и этапом реинициализации модуля энтропийного кодирования делает возможным генерировать поток кодированных данных, содержащий различные подпотоки данных, соответствующие по меньшей мере одному кодированному подмножеству блоков, этот поток адаптирован для параллельного декодирования согласно различным уровням параллелизма, и это не зависит от типа кодирования - последовательного или параллельного, примененного к рассматриваемому подмножеству блоков. Таким образом, может быть получена большая степень свободы при кодировании с точки зрения уровня параллелизма в функции от ожидаемых характеристик кодирования/декодирования. Уровень параллелизма при декодировании является величиной переменной и может даже отличаться от уровня параллелизма при кодировании, поскольку в момент начала декодирования подмножества блоков декодер всегда находится в инициализированном состоянии.

Согласно первому примеру переменные состояния модуля энтропийного кодирования образуют границы внутреннего представления вероятности появления одного из символов из совокупности, составляющей заданное множество символов.

Согласно второму примеру переменные состояния модуля энтропийного кодирования представляют собой строки символов, содержащиеся в кодовой преобразовательной таблице энтропийного кодирующего устройства для кода LZW (Лемпеля-Зива-Уэлша), хорошо известного специалистам в рассматриваемой области и описанного по следующему интернет-адресу, 21 июня 2011 г.: http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch.

Основное преимущество от использования вероятностей появления символов, найденных для первого блока из указанного другого подмножества, в процессе энтропийного кодирования первого текущего блока из состава рассматриваемого подмножества блоков состоит в экономии буферной памяти кодирующего устройства путем сохранения в этой памяти исключительно обновлений вероятностей появления символов, не принимая в расчет вероятности появления символов, найденные другими последовательными блоками указанного другого подмножества.

Основное преимущество от использования вероятностей появления символов, найденных для какого-либо другого блока из указанного другого подмножества, отличного от первого блока, например второго блока, в процессе энтропийного кодирования первого текущего блока из состава рассматриваемого подмножества блоков состоит в получении более точных и потому лучше "изученных" вероятностей появления символов, что дает лучшие характеристики сжатия видеосигнала.

В конкретном варианте указанные подмножества блоков кодируют последовательно или еще и параллельно.

Тот факт, что кодирование подмножеств блоков осуществляется последовательно, имеет то преимущество, что способ кодирования согласно настоящему изобретению совместим со стандартом H.264/MPEG-4 AVC.

Тот факт, что кодирование подмножеств блоков осуществляется параллельно, имеет преимущество сокращения затрат времени на кодирование и использования выгод архитектуры, имеющей несколько платформ, для кодирования изображения.

В другом конкретном варианте, когда по меньшей мере два подмножества блоков кодируют параллельно по меньшей мере с одним другим подмножеством блоков, указанные по меньшей мере два кодированных множества блоков заключены в одном и том же подпотоке данных.

Такое предложение делает возможным, в частности, уменьшение объема сигнализации в подпотоках данных. Действительно, чтобы модуль декодирования мог произвести декодирование подпотока как можно раньше, необходимо указать в сжатом файле точку, в которой начинается интересующий подпоток. Когда в одном и том же подпотоке данных присутствуют несколько подмножеств блоков, необходим единый индикатор, что позволит уменьшить размер сжатого файла.

Еще в одном другом конкретном варианте, когда кодированные подмножества блоков предназначены для параллельного декодирования в заданном порядке, подпотоки данных, полученные после кодирования соответственно каждого подмножества блоков, сначала упорядочивают заданным образом, перед тем как передать, с учетом перспективы декодирования этих данных.

Такое предложение делает возможным адаптировать поток кодированных данных к конкретному виду декодирования без того, чтобы требовать декодировать и затем снова кодировать изображение.

Соответственно, настоящее изобретение относится далее к устройству для кодирования по меньшей мере одного изображения, содержащему:

- модуль для разбиения изображения на несколько блоков, которые могут содержать символы, принадлежащие заданному множеству символов;

- модуль для группирования блоков в заданное число подмножеств блоков;

- модуль для кодирования каждого из подмножеств блоков, так что этот модуль для кодирования содержит модуль энтропийного кодирования, способный ассоциировать цифровую информацию с символами каждого блока из рассматриваемого подмножества, этот модуль для кодирования содержит, для первого блока изображения, субмодуль для инициализации переменных состояния для модуля энтропийного кодирования;

- модуль для генерации по меньшей мере одного подпотока данных, представляющего по меньшей мере одно из кодированных подмножеств блоков.

Такое устройство для кодирования примечательно тем, что оно содержит:

- модуль для определения вероятностей появления символов для текущего блока, так что этот модуль в случае, когда текущий блок является первым блоком, подлежащим кодированию, из состава рассматриваемого подмножества, принимает в качестве вероятностей появления символов для первого текущего блока вероятности, которые были определены для кодированного и декодированного заданного блока из состава по меньшей мере одного другого подмножества;

- записывающий модуль, который в случае, когда текущий блок является последним кодированным блоком из состава рассматриваемого подмножества, активизируют для записи в подпоток, представляющий рассматриваемое подмножество, всей полноты цифровой информации, ассоциированной с символами, во время кодирования блоков рассматриваемого подмножества,

указанный субмодуль инициализации дополнительно активизируют, чтобы реинициализировать переменные состояния модуля энтропийного кодирования.

Соответствующим образом, настоящее изобретение относится к способу декодирования потока, представляющего по меньшей мере одно кодированное изображение, содержащему этапы:

- идентификация потока, содержащего заданное число подпотоков данных, соответствующих по меньшей мере одному подмножеству блоков, подлежащих декодированию, так что эти блоки могут содержать символы, принадлежащие заданному множеству символов;

- декодирование идентифицированных подмножеств блоков, посредством модуля энтропийного декодирования, путем считывания, по меньшей мере в одном из идентифицированных подпотоков, цифровой информации, ассоциированной с символами каждого блока из подмножества, соответствующего указанному по меньшей мере одному идентифицированному подпотоку, этап декодирования содержит, для первого блока, подлежащего декодированию в изображении, подэтап инициализации переменных состояния для модуля энтропийного декодирования.

Такой способ декодирования примечателен тем, что:

- в случае когда текущий блок является первым блоком, подлежащим декодированию, из состава рассматриваемого подмножества, в качестве вероятностей появления символов для первого блока из состава рассматриваемого подмножества принимают вероятности, которые были определены для декодированного заданного блока из состава по меньшей мере одного другого подмножества;

- если текущий блок представляет собой последний декодированный блок из состава рассматриваемого подмножества, тогда выполняют подэтап инициализации.

В конкретном варианте указанные подмножества блоков декодируют последовательно или еще и параллельно.

В другом конкретном варианте, когда по меньшей мере два подмножества блоков декодируют параллельно по меньшей мере с одним другим подмножеством блоков, один из идентифицированных подпотоков данных представляет по меньшей мере два подмножества блоков.

Еще в одном другом конкретном варианте, когда кодированные подмножества блоков предназначены для параллельного декодирования в заданном порядке, подпотоки данных, соответствующие кодированным подмножествам блоков, сначала упорядочивают в указанном заданном порядке в составе потока, подлежащего декодированию.

Соответственно, настоящее изобретение относится также к устройству для декодирования потока, представляющего по меньшей мере одно кодированное изображение, содержащему:

- модуль для идентификации в потоке заданного числа подпотоков данных, соответствующих по меньшей мере одному подмножеству блоков, подлежащих декодированию, так что эти блоки могут содержать символы, принадлежащие заданному множеству символов;

- модуль декодирования идентифицированных подмножеств блоков, этот модуль декодирования содержит модуль энтропийного декодирования, способный считывать, по меньшей мере в одном из идентифицированных подпотоков, цифровую информацию, ассоциированную с символами каждого блока из подмножества, соответствующего указанному по меньшей мере одному идентифицированному подпотоку, этот модуль декодирования содержит, для первого блока, подлежащего декодированию в изображении, подмодуль для инициализации переменных состояния для модуля энтропийного декодирования.

Такое устройство для декодирования примечательно тем, что оно содержит модуль для определения вероятностей появления символов для текущего блока, так что этот модуль в случае, когда текущий блок является первым блоком, подлежащим кодированию, из состава рассматриваемого подмножества, принимает в качестве вероятностей появления символов для первого текущего блока вероятности, которые были определены для декодированного заданного блока из состава по меньшей мере одного другого подмножества,

и тем, что если текущий блок представляет собой последний декодированный блок из состава рассматриваемого подмножества, тогда активизируется субмодуль инициализации для повторной инициализации переменных состояния для модуля энтропийного декодирования.

Настоящее изобретение направлено также на создание компьютерной программы, содержащей команды для реализации этапов описанного выше способа кодирования или декодирования, при выполнении этой программы компьютером.

Такая программа может использовать любой язык программирования и может быть в форме исходного кода, объектного кода или кода, занимающего промежуточное положение между исходным кодом и объектным кодом, например, в частично компилированной форме или в какой-либо другой нужной форме.

Еще один предмет настоящего изобретения также направлен на создание читаемого компьютером носителя записи, содержащего команды компьютерной программы, такой как упомянутая выше.

Такой носитель записи может представлять собой какой-либо объект или устройство, способное сохранять указанную программу. Например, подобный носитель может представлять собой запоминающее устройство, такое постоянное запоминающее устройство (ПЗУ (ROM)), например ПЗУ на основе компакт-диска (CD-ROM), или микроэлектронное ПЗУ (ROM) или также магнитный носитель записи, например дискета (гибкий диск) или накопитель на жестком магнитном диске.

Более того, такой носитель записи может быть передаваемым носителем, таким как электрический или оптический сигнал, который может быть передан по электрическому или по оптическому кабелю, по радио или каким-либо другим способом. Программу согласно настоящему изобретению можно, в частности, скачать из сети связи типа Интернет.

В качестве альтернативы такой носитель записи может представлять собой интегральную схему, в которую встроена указанная программа, эта схема может быть адаптирована для реализации рассматриваемого способа или может быть использована при его реализации.

Перечисленные выше устройство для кодирования, способ декодирования, устройство для декодирования и компьютерные программы обладают по меньшей мере такими же преимуществами, какие свойственны способу кодирования согласно настоящему изобретению.

Краткое описание чертежей

Другие характеристики и преимущества станут очевидными после прочтения описания двух предпочтительных вариантов, данного со ссылками на прилагаемые чертежи, на которых:

- фиг. 1 представляет схему кодирования изображения согласно известным способам;

- фиг. 2А представляет основные этапы способа кодирования согласно настоящему изобретению;

- фиг. 2В представляет подробно процесс кодирования, реализованный способом кодирования, показанным на фиг. 2А;

- фиг. 3А представляет первый вариант кодирующего устройства согласно настоящему изобретению;

- фиг. 3В представляет модуль кодирования в составе кодирующего устройства, показанного на фиг. 3А;

- фиг. 3С представляет второй вариант кодирующего устройства согласно настоящему изобретению;

- фиг. 4А представляет схему кодирования/декодирования изображения согласно первому предпочтительному варианту;

- фиг. 4В представляет схему кодирования/декодирования изображения согласно второму предпочтительному варианту;

- фиг. 5А представляет основные этапы способа декодирования согласно настоящему изобретению;

- фиг. 5В представляет подробно процесс декодирования, реализованный способом декодирования, показанным на фиг. 5А;

- фиг. 6А представляет вариант декодирующего устройства согласно настоящему изобретению;

- фиг. 6В представляет модуль декодирования в составе декодирующего устройства, показанного на фиг. 6А;

- фиг. 7А представляет схему кодирования/декодирования изображения, реализующую кодирование последовательного типа и декодирование параллельного типа;

- фиг. 7В представляет схему кодирования/декодирования изображения, реализующую кодирование/декодирование параллельного типа при различных уровнях параллелизма.

Подробное описание первого варианта кодирующей части

Теперь будет описан один из вариантов настоящего изобретения, в котором способ кодирования согласно настоящему изобретению используется для кодирования последовательности изображений в соответствии с двоичным потоком, таким же, как поток, получаемый в результате кодирования по стандарту H.264/MPEG-4 AVC. В рассматриваемом варианте способ кодирования согласно настоящему изобретению реализован, например, посредством программного обеспечения или аппаратным способом путем модификации кодирующего устройства, первоначально совместимого со стандартом H.264/MPEG-4 AVC. Способ кодирования согласно настоящему изобретению представлен в форме алгоритма, содержащего этапы с C1 по С5 и показанного на фиг. 2А.

Способ кодирования согласно одному из вариантов настоящего изобретения реализован в кодирующем устройстве СО, два варианта которого представлены соответственно на фиг. 3А и 3С.

Как показано на фиг. 2А, первый этап С1 кодирования представляет собой разбиение изображения IE в последовательности, изображений, подлежащих кодированию, на несколько блоков или макроблоков MB, как это изображено на фиг. 4А и 4В. Указанные макроблоки могут содержать один или несколько символов, составляющих часть заданного множества символов. В представленных примерах эти макроблоки MB обладают квадратной формой и все имеют одинаковый размер. В зависимости от размера изображения, который необязательно кратен размеру блоков, последние блоки слева и последние блоки внизу изображения могут не быть квадратными. В альтернативном варианте блоки, например, могут быть прямоугольной формы и/или могут быть не совмещены один с другим.

Каждый блок или макроблок может, далее, сам быть разбит на субблоки, которые в свою очередь могут быть разбиты на части.

Такое разбиение осуществляется посредством модуля РСО разбиения, показанного на фиг. 3А и использующего, например, хорошо известный алгоритм разбиения.

Как показано на фиг. 2А, второй этап С2 кодирования представляет собой группирование указанных выше блоков в заданное число Р подмножеств SE1, SE2, …, SEk, …, SEP последовательных блоков, которые должны быть кодированы последовательно или параллельно. В примерах, показанных на фиг. 4А и 4В, число подмножеств Р=6, но для большей ясности чертежа изображены только четыре подмножества SE1, SE2, SE3 и SE4. Каждое из этих четырех подмножеств блоков показано в заштрихованном виде, а все четыре подмножества образованы первыми четырьмя строками (каждое - своей) блоков изображения IE.

Такое группирование осуществляется посредством вычислительного модуля GRCO разбиения, показанного на фиг. 3А, с использованием хорошо известного алгоритма.

Как показано на фиг. 2А, третий этап С3 кодирования состоит в кодировании каждого из подмножеств блоков с SE1 по SE6, так что блоки из состава любого рассматриваемого подмножества кодируют в соответствии с заданным порядком PS прохождения через эти блоки, например для последовательного кодирования. В примерах, представленных на фиг. 4А и 4В, блоки текущего подмножества SEk (1≤k≤Р) кодируют один за другим слева направо, как показано стрелкой PS.

Согласно первому варианту такое кодирование относится к последовательному типу кодирования и реализуется в одном кодирующем модуле UC, как представлено на фиг. 3А. Согласно известным технологиям кодирующее устройство СО содержит буферную память МТ, адаптированную для хранения вероятностей появления символов, постоянно обновляемых в процессе кодирования текущего блока.

Как показано более подробно на фиг. 3В, кодирующий модуль UC содержит:

• модуль для кодирования с прогнозированием применительно к текущему блоку с учетом по меньшей мере одного из ранее кодированных и декодированных блоков, обозначенный МСР;

• модуль для энтропийного кодирования текущего блока с использованием по меньшей мере одной вероятности появления символа, вычисленной для указанного ранее кодированного и декодированного блока, обозначенный МСЕ.

Модуль МСР кодирования с прогнозированием представляет собой программный модуль, способный осуществлять кодирование с прогнозированием применительно к текущему блоку в соответствии с обычными способами прогнозирования, такими как, например, режим внутрикадрового и/или межкадрового прогнозирования.

Указанный модуль МСЕ энтропийного кодирования представляет собой модуль стандарта САВАС, но модифицированный согласно настоящему изобретению, как это будет рассмотрено далее в этом описании.

В качестве варианта указанное энтропийное кодирующее устройство МСЕ может представлять собой известное кодирующее устройство в коде Хаффмена.

В примерах, представленных на фиг. 4А и 4В, модуль UC кодирует блоки первой строки SE1 слева направо. После достижения последнего блока в первой строке SE1 модуль переходит к первому блоку второй строки SE2. После достижения последнего блока во второй строке SE2 модуль переходит к первому блоку третьей строки SE3. После достижения последнего блока в третьей строке SE3 модуль переходит к первому блоку четвертой строки SE4 и т.д. до тех пор, пока не будет закодирован последний блок изображения IE.

Безусловно, возможны и другие варианты просмотра изображения, отличные от того варианта, который был только что описан выше. Таким образом, можно разбить изображение IE на несколько подызображений и затем применить разбиение такого типа к каждому подызображению независимо. Кроме того, кодирующий модуль может обрабатывать не последовательность строк, как было рассмотрено выше, а последовательность столбцов. Можно также просматривать строки или столбцы в любом направлении.

Согласно второму варианту такое кодирование представляет собой кодирование параллельного типа и отличается от первого варианта последовательного кодирования исключительно тем фактом, что оно реализовано заданным числом R кодирующих модулей UCk (1≤k≤R), при R=2, как в примере, представленном на фиг. 3С. Такое параллельное кодирование, как известно, вызывает значительное ускорение способа кодирования.

Каждый из кодирующих модулей UCk идентичен кодирующему модулю UC, представленному на фиг. 3В. Соответствующим образом кодирующий модуль UCk содержит модуль МСРk кодирования с прогнозированием и модуль энтропийного кодирования MCEk.

Снова со ссылками на фиг. 4А и 4В первый модуль UC 1 кодирует, например, блоки строк с нечетными номерами, тогда как второй модуль UC2 кодирует, например, блоки строк с четными номерами. Более точно, первый модуль UC кодирует блоки первой строки SE1 слева направо. После достижения последнего блока в первой проке SE1 этот модуль переходит к первому блоку (2n+1)-й строки, иными словами, к третьей строке SE3 и т.д. Параллельно с обработкой, выполняемой первым модулем UC1, второй модуль UC2 кодирует блоки второй строки SE2 слева направо. После достижения последнего блока во второй строке SE2 этот модуль переходит к первому блоку (2n)-й строки, здесь это четвертая строка SE4, и т.д. Указанные выше два просматривающих прохода повторяют до тех пор, пока не будет закодирован последний блок изображения IE.

Как показано на фиг. 2А, на четвертом этапе С4 кодирования генерируют L подпотоков F1, F2, …, Fm, …, FL (1≤m≤L≤P) битов, представляющих обработанные блоки, сжатые посредством указанного выше кодирующего модуля UC или каждого из указанных выше кодирующих модулей UCk, равно как и декодированную версию обработанных блоков из состава каждого подмножества SEk. Декодированные обработанные блоки из состава рассматриваемого подмножества, обозначенные SED1, SED2, …, SEDk, …, SEDP, могут быть повторно использованы кодирующим модулем UC, представленным на фиг. 3А, или каж