RU2779843C1 - Device for encoding and decoding images - Google Patents

Device for encoding and decoding images Download PDF

Info

Publication number
RU2779843C1
RU2779843C1 RU2021129083A RU2021129083A RU2779843C1 RU 2779843 C1 RU2779843 C1 RU 2779843C1 RU 2021129083 A RU2021129083 A RU 2021129083A RU 2021129083 A RU2021129083 A RU 2021129083A RU 2779843 C1 RU2779843 C1 RU 2779843C1
Authority
RU
Russia
Prior art keywords
block
decoding
encoding
blocks
decoded
Prior art date
Application number
RU2021129083A
Other languages
Russian (ru)
Inventor
Феликс ГЕНРИ
Стефан ПАТЕ
Гордон КЛЭР
Original Assignee
Долби Интернэшнл Аб
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Долби Интернэшнл Аб filed Critical Долби Интернэшнл Аб
Application granted granted Critical
Publication of RU2779843C1 publication Critical patent/RU2779843C1/en

Links

Images

Abstract

FIELD: imaging technology.
SUBSTANCE: invention relates to means for encoding and decoding images. A set of strings of consecutive blocks of quantized coefficients of the transformed residual values of the encoded image are entropically encoded for entropy decoding in the decoder. The current block in a set of strings of consecutive blocks is entropically decoded based on one or more state variables. When the current block is the first block in the current string in the decoding order to decode the encoded image, and the current string is not the first string of many strings in the decoding order, one or more state variables for decoding the current block are initialized based on one or more state variables of a given entropically decoded block. In this case, the specified entropically decoded block is the second block in the decoding order in a string of consecutive blocks other than the current row.
EFFECT: increase in the efficiency of image encoding.
1 cl, 14 dwg

Description

Область техники, к которой относится изобретениеThe field of technology to which the invention belongs

Настоящее изобретение относится в общем случае к области обработки изображений и более конкретно к кодированию и декодированию цифровых изображений и последовательностей цифровых изображений.The present invention relates generally to the field of image processing and more specifically to the encoding and decoding of digital images and digital image sequences.

Настоящее изобретение, таким образом, может быть применено к способам видеокодирования, реализованным как в современных видеокодирующих устройствах (стандарты MPEG, Н.264 и т.п.), так и в будущих видеокодирующих устройствах (стандарты ITU-T/VCEG (Н.265) или ISO/MPEG (HVC)).The present invention can thus be applied to video coding methods implemented in both current video encoders (MPEG, H.264, etc.) and future video encoders (ITU-T/VCEG (H.265) ) or ISO/MPEG (HVC)).

Уровень техникиState of the art

Современные видеокодирующие устройства (стандарты MPEG, Н.264 и т.п.) используют поблочное представление видеопоследовательности. Изображения разбивают на макроблоки, каждый макроблок в свою очередь разбивают на блоки и каждый блок или макроблок кодируют с применением внутрикадрового или межкадрового прогнозирования. Таким образом, некоторые изображения кодируют посредством пространственного прогнозирования (внутрикадровое прогнозирование), а другие изображения кодируют посредством временного прогнозирования (межкадровое прогнозирование) относительно одного или нескольких кодированных и/или декодированных опорных изображений с применением компенсации движения, известной специалистам в этой области. Более того, для каждого блока может быть кодирован остаточный блок, соответствующий исходному блоку, из которого вычтен результат прогнозирования. Коэффициенты этого блока квантуют, возможно, после преобразования, и затем кодируют посредством энтропийного кодирующего устройства.Modern video encoders (MPEG, H.264, etc.) use a block representation of a video sequence. Images are partitioned into macroblocks, each macroblock is in turn partitioned into blocks, and each block or macroblock is encoded using intra-frame or inter-frame prediction. Thus, some pictures are encoded by spatial prediction (intra-picture prediction) and other pictures are encoded by temporal prediction (inter-picture prediction) with respect to one or more encoded and/or decoded reference pictures using motion compensation known to those skilled in the art. Moreover, for each block, a residual block corresponding to the original block from which the prediction result is subtracted can be encoded. The coefficients of this block are quantized, possibly after transformation, and then encoded by an entropy encoder.

Для применения внутрикадрового прогнозирования и межкадрового прогнозирования требуется, чтобы были доступны некоторые блоки, которые были ранее кодированы и декодированы, чтобы их можно было использовать в декодере или в кодирующем устройстве для прогнозирования текущего блока. Схематичный пример кодирования с прогнозированием, подобного рассматриваемому, представлен на фиг. 1, на котором изображение IN разбито на блоки, текущий блок MBi этого изображения, подвергается кодированию с прогнозированием относительно заданного числа трех предварительно кодированных и декодированных блоков MBr1, MBr2 и MBr3, обозначенных заштрихованными стрелками. Упомянутые выше три блока, в частности, представляют собой блок MBr1, расположенный непосредственно слева от текущего блока MBi, и два блока MBr2 и MBr3, расположенные непосредственно сверху и сверху справа от текущего блока MBi.The use of intra-prediction and inter-prediction requires that some blocks that have been previously encoded and decoded be available so that they can be used in a decoder or encoder to predict the current block. A schematic example of predictive coding like this is shown in FIG. 1, in which the picture I N is divided into blocks, the current block MB i of this picture is subjected to prediction encoding with respect to a given number of three pre-encoded and decoded blocks MBr 1 , MBr 2 and MBr 3 indicated by hatched arrows. The above three blocks, in particular, are the block MBr 1 immediately to the left of the current block MB i , and the two blocks MBr 2 and MBr 3 immediately above and above the right of the current block MB i .

Более конкретный интерес здесь представляет энтропийное кодирующее устройство. Это энтропийное кодирующее устройство кодирует информацию в порядке ее поступления. Обычно блоки просматривают строка за строкой по схеме "растрового сканирования", как показано на фиг. 1 линией PRS, начиная от блока в верхнем левом углу изображения. Для каждого блока в энтропийное кодирующее устройство последовательно передают различные сегменты информации для представления этого блока (тип блока, режим прогнозирования, остаточные коэффициенты и т.п.).Of more particular interest here is the entropy encoder. This entropy encoder encodes information in the order in which it is received. Typically, blocks are scanned line by line in a "raster scan" pattern, as shown in FIG. 1 PRS line starting from the block in the upper left corner of the image. For each block, various segments of information are sequentially transmitted to the entropy encoder to represent that block (block type, prediction mode, residual coefficients, etc.).

На сегодня уже известно обладающее приемлемой сложностью эффективное устройство арифметического кодирования, именуемое устройством контекстно-ориентированного адаптивного двоичного арифметического кодирования ("САВАС" ("Context Adaptive Binary Arithmetic Coder")) и введенное в стандарт сжатия AVC (известный также под названиями (ISO-MPEG4 часть 10 и ITU-T Н.264)).Today, an efficient arithmetic encoding device of acceptable complexity, called the Context Adaptive Binary Arithmetic Coder (“CABAC” (“Context Adaptive Binary Arithmetic Coder”)) and introduced into the AVC compression standard (also known as (ISO-MPEG4 part 10 and ITU-T H.264)).

Такое энтропийное кодирующее устройство реализует различные принципы:Such an entropy encoder implements various principles:

- арифметическое кодирование: кодирующее устройство, такое, как устройство, первоначально описанное в документе Й. Риссанен и Г.Г. Лэнгдон, мл. "Универсальное моделирование и кодирование" (J. Rissanen and G.G. Langdon Jr, "Universal modeling and coding,") IEEE Trans. Inform. Theory, vol. IT-27, pp. 12-23, Jan. 1981, используется для кодирования символа и вероятности появления этого символа;- arithmetic coding: an encoder such as the one originally described in the paper by J. Rissanen and G.G. Langdon, Jr. "Universal modeling and coding" (J. Rissanen and G.G. Langdon Jr, "Universal modeling and coding,") IEEE Trans. inform. Theory, vol. IT-27, pp. 12-23 Jan. 1981, used to encode a character and the probability of that character occurring;

- адаптация к контексту: здесь это охватывает адаптацию вероятности появления символа, подлежащего кодированию. С одной стороны "обучение" происходит прямо в процессе работы ("на лету"). С другой стороны, в зависимости от состояния ранее кодированной информации для кодирования используется конкретный контекст. Каждому контексту здесь соответствует некая присущая ему собственная вероятность появления символа. Например, контекст соответствует типу кодируемого символа (представление коэффициента остатка, сигнализация о режиме кодирования и т.п.) согласно данной конфигурации или состоянию ближайшего окружения (соседства) (например, число ближайших соседствующих блоков, для которых выбран режим внутрикадрового прогнозирования, и т.п.);- adaptation to the context: here it covers the adaptation of the probability of occurrence of the character to be encoded. On the one hand, "training" occurs directly in the process of work ("on the fly"). On the other hand, depending on the state of the previously encoded information, a specific context is used for encoding. Each context here corresponds to its own probability of occurrence of a symbol. For example, the context corresponds to the type of the encoded symbol (residual coefficient representation, coding mode signaling, etc.) according to the given configuration or the nearest neighbor (neighborhood) state (e.g., the number of nearest neighbor blocks for which the intra prediction mode is selected, etc.). P.);

- бинаризация: осуществляется формирование последовательности битов символов, подлежащих кодированию. После этого, полученные различные биты последовательно передают в двоичное энтропийное кодирующее устройство.- binarization: the formation of a sequence of bits of symbols to be encoded is carried out. Thereafter, the obtained various bits are sequentially transmitted to a binary entropy encoder.

Таким образом, это энтропийное кодирующее устройство реализует, для каждого используемого контекста, систему для обучения вероятностям в процессе работы применительно к ранее кодированным символам для рассматриваемого контекста. Это обучение основано на порядке кодирования этих символов. Обычно изображение просматривают согласно описанному выше порядку типа "растрового сканирования".Thus, this entropy encoder implements, for each context used, a system for learning on-the-fly probabilities on previously encoded symbols for the context in question. This learning is based on the order in which these characters are encoded. Typically, the image is viewed according to the "raster scan" type of order described above.

В процессе кодирования данного символа b, который может быть равен 0 или 1, результат обучения вероятности pi появления этого символа обновляют для текущего блока MBi следующим образом:While encoding a given symbol b, which may be 0 or 1, the learning result of the probability p i of occurrence of this symbol is updated for the current block MB i as follows:

Figure 00000001
Figure 00000001

где α представляет собой заданную величину, например, 0,95, и pi-1 представляет собой вероятность появления символа, вычисленную после последнего появления этого символа.where α is a predetermined value, for example, 0.95, and p i-1 is the probability of occurrence of a symbol, calculated after the last occurrence of this character.

На фиг. 1 представлен схематичный пример такого энтропийного кодирования, в котором такому энтропийному кодированию подвергается текущий блок MBi изображения IN. Когда начинается энтропийное кодирование блока MBi, используют вероятности появления символов, полученные после кодирования ранее кодированного и декодированного блока, в качестве которого выбирают блок, непосредственно предшествующий текущему блоку MBi в соответствии с описанной выше схемой просмотра блоков строка за строкой по принципу "растрового сканирования". Такое обучение на основе взаимозависимости от блока к блоку показано на фиг. 1 для некоторых блоков (только для ясности картинки) посредством тонких стрелок.In FIG. 1 shows a schematic example of such entropy coding, in which the current block MB i of the image I N is subjected to such entropy coding. When the entropy encoding of the block MB i is started, the probabilities of occurrence of symbols obtained after encoding the previously encoded and decoded block are used, which is chosen as the block immediately preceding the current block MB i in accordance with the block-by-line scanning scheme described above, according to the "raster scan" principle. ". Such block-to-block dependency learning is shown in FIG. 1 for some blocks (only for clarity of picture) using thin arrows.

Недостаток такого типа энтропийного кодирования состоит в том, что вероятности, используемые при кодировании символа, расположенного в начале строки, соответствуют главным образом вероятностям, наблюдаемым для символов, находящихся в конце предшествующей строки, если применять просмотр блоков в порядке "растрового кодирования". Теперь, применительно к возможным пространственным вариациям вероятностей символов (например, для символов, связанных с сегментом информации движения, движение в правой части изображения может отличаться от движения, наблюдаемого в левой части, и это, по всей видимости, отразится на вытекающих отсюда локальных вероятностях), можно наблюдать недостаток локальной конформности вероятностей, что возможно способно привести к потере эффективности во время кодирования.The disadvantage of this type of entropy coding is that the probabilities used to encode a character located at the beginning of a string mostly correspond to the probabilities observed for characters at the end of the preceding string when looking at blocks in "raster-encoded" order. Now, with respect to the possible spatial variations in symbol probabilities (for example, for symbols associated with a segment of motion information, the movement on the right side of the image may differ from the movement observed on the left side, and this will most likely be reflected in the resulting local probabilities) , one can observe a lack of local conformity of probabilities, which can possibly lead to a loss of efficiency during encoding.

Для ограничения этого явления были внесены предложения о модификации порядка просмотра блоков с целью обеспечить улучшенную локальную согласованность, но кодирование и декодирование остаются последовательными.To limit this phenomenon, proposals have been made to modify the block viewing order to provide improved local consistency, but encoding and decoding remain consistent.

В этой области лежит другой недостаток энтропийного кодирующего устройства этого типа. Действительно, кодирование и декодирование символа зависят от состояния "выученной" для него вероятности, поэтому декодирование может быть произведено только в том же порядке, который был использован во время кодирования. Обычно декодирование в этом случае может быть только последовательным, что препятствует параллельному декодированию нескольких символов (например, чтобы получить выигрыш от многоядерных архитектур).In this area lies another disadvantage of this type of entropy encoder. Indeed, the encoding and decoding of a symbol depends on the state of the "learned" probability for it, so decoding can only be done in the same order that was used during encoding. Typically, decoding in this case can only be sequential, which prevents multiple symbols from being decoded in parallel (eg, to benefit from multi-core architectures).

Документ: Томас Виганд, Гэри Дж. Салливан, Гисле Бьонтегаард и Аджай Лутра "Обзор стандарта видеокодирования H.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. Конкретнее, кодирующее устройство стандарта САВАС ожидает момента, когда оно прочитает несколько символов, и затем назначает этой группе прочитанных символов заданное число битов, которые это кодирующее устройство записывает в сжатом потоке данных для передачи декодеру. Таким образом, такое предложение делает возможным "обобществить" биты нескольких символов и кодировать символ посредством дробного числа битов, это число отражает информацию, более близкую к информации, реально передаваемой символом. Другие биты, ассоциированные с прочитанными символами, не передают в составе сжатого потока, а сохраняют в режиме готовности, ожидая назначения одному или нескольким новым символам, прочитанным кодирующим устройством стандарта САВАС, что делает возможным снова обобществить эти другие символы. Указанное энтропийное кодирующее устройство предпринимает известным способом в данный момент времени "опустошение" этих непереданных битов. Иными словами, в этот данный момент времени кодирующее устройство извлекает биты, еще не переданные, и записывает в состав сжатого потока, адресованного декодеру. Такое опустошение имеет место, например, в момент, в который прочитан последний символ, подлежащий кодированию, чтобы обеспечить, что сжатый поток действительно содержит все биты, что позволит декодеру осуществить декодирование всех символов алфавита. В более общем смысле, момент, в который происходит указанное опустошение, определяется в функции характеристик и функциональных возможностей, специфичных для рассматриваемого кодирующего устройства/декодера.Paper: Thomas Wiegand, Gary J. Sullivan, Gisle Bjontegaard, and Ajay Luthra, "Overview of the H.264/AVC Video Coding Standard" Video Coding Standard", IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, pp. 560-576, July 2003), indicates that the CABAC entropy encoder has the characteristic of assigning a non-integer number of bits to each symbol of the current alphabet to be encoded, this is preferred for character occurrence probabilities greater than 0.5. More specifically, the CABAC encoder waits until it has read a few symbols and then assigns to this group of read symbols a predetermined number of bits that the encoder writes in the compressed data stream for transmission to the decoder. Thus, such a proposal makes it possible to "commonize" the bits of several symbols and encode a symbol in a fractional number of bits, this number reflects information closer to the information actually conveyed by the symbol. The other bits associated with the read symbols are not transmitted as part of the compressed stream, but stored in ready mode, waiting to be assigned to one or more new symbols read by the CABAC encoder, making it possible to regenerate these other symbols. Said entropy encoder undertakes in a known manner at a given time to "empty" these untransmitted bits. In other words, at this given point in time, the encoder extracts the bits not yet transmitted and writes them to the compressed stream addressed to the decoder. Such an underflow occurs, for example, at the point at which the last character to be encoded is read to ensure that the compressed stream actually contains all the bits, allowing the decoder to decode all characters of the alphabet. More generally, the point at which said emptying occurs is determined as a function of characteristics and functionality specific to the encoder/decoder in question.

Документ, доступный в Интернете по адресу http://research.microsoft.com/en-us/um/people/jinl/paper_2002/msri_jpeg.htm на 15 апреля 2011 г., описывает способ кодирования неподвижных изображения в соответствии со стандартом сжатия JPEG2000. Согласно этому способу данные неподвижного изображения подвергают дискретному вейвлетному преобразованию, за которым следует квантование, что делает возможным получение квантованных вейвлетных коэффициентов, с которыми соответственно ассоциированы индексы квантования. Полученные индексы квантования кодируют посредством энтропийного кодирующего устройства. Квантованные коэффициенты предварительно группируют в прямоугольные блоки, именуемые кодовыми блоками, обычно размером 64×64 или 32×32. Затем осуществляют независимое кодирование каждого кодового блока посредством энтропийного кодирования. Таким образом, энтропийное кодирующее устройство во время кодирования текущего кодового блока не использует вероятности появления символов, вычисленные в ходе кодирования предшествующих кодовых блоков. Поэтому указанное энтропийное кодирующее устройство находится в инициализированном состоянии в начале кодирования каждого кодового блока. Преимуществом такого способа является декодирование данных кодового блока без необходимости декодировать соседние кодовые блоки. Таким образом, например, сегмент клиентского программного обеспечения может потребовать от сегмента серверного программного обеспечения предоставить только те сжатые кодовые блоки, которые нужны клиенту для декодирования выделенной части изображения. Преимуществом такого способа является также возможность параллельного кодирования и/или декодирования кодовых блоков. Таким образом, чем меньше размер кодового блока, тем выше уровень параллелизма. Например, при фиксированном уровне параллелизма, равном двум, два кодовых блока могут быть кодированы и/или декодированы параллельно. Теоретически, величина уровня параллелизма равна числу кодовых блоков, подлежащих кодированию в изображении. Однако характеристики сжатия, получаемые таким способом, не являются оптимальными вследствие того факта, что такое кодирование не использует вероятности, соответствующие ближайшему окружению текущего кодового блока.A document available online at http://research.microsoft.com/en-us/um/people/jinl/paper_2002/msri_jpeg.htm as of April 15, 2011 describes a method for encoding still images according to the JPEG2000 compression standard. . According to this method, still image data is subjected to a discrete wavelet transform followed by quantization, which makes it possible to obtain quantized wavelet coefficients with which quantization indices are respectively associated. The resulting quantization indices are encoded by an entropy encoder. The quantized coefficients are pre-grouped into rectangular blocks, called code blocks, typically 64x64 or 32x32. Then, each code block is independently coded by entropy coding. Thus, the entropy encoder, while encoding the current code block, does not use the symbol occurrence probabilities calculated during the encoding of previous code blocks. Therefore, said entropy encoder is in an initialized state at the start of encoding each code block. This method has the advantage of decoding code block data without having to decode adjacent code blocks. Thus, for example, the client software segment may require the server software segment to provide only those compressed code blocks that the client needs to decode the selected portion of the image. This method also has the advantage of allowing code blocks to be encoded and/or decoded in parallel. Thus, the smaller the code block size, the higher the level of parallelism. For example, with a fixed parallelism level of two, two code blocks may be encoded and/or decoded in parallel. Theoretically, the magnitude of the level of parallelism is equal to the number of code blocks to be encoded in the image. However, the compression performance obtained in this way is not optimal due to the fact that such encoding does not use probabilities corresponding to the nearest neighborhood of the current code block.

Цель и краткое изложение существа изобретенияPurpose and Summary of the Invention

Одной из целей настоящего изобретения является устранение недостатков, свойственных упомянутым выше известным способам.One of the objectives of the present invention is to eliminate the disadvantages inherent in the above-mentioned known methods.

Поэтому предмет настоящего изобретения относится к способу кодирования по меньшей мере одного изображения, содержащему этапы:Therefore, the subject of the present invention relates to a method for encoding at least one image, comprising the steps:

- разбиение изображения на несколько блоков, которые могут содержать символы, принадлежащие заданному множеству символов;- splitting the image into several blocks, which may contain characters belonging to a given set of characters;

- группирование блоков в заданное число подмножеств блоков;- grouping blocks into a given number of subsets of blocks;

- кодирование, посредством модуля энтропийного кодирования, каждого из подмножества блоков путем ассоциирования цифровой информации с символами каждого блока из рассматриваемого подмножества, этап кодирования содержит, для первого блока изображения, подэтап инициализации переменных состояния для модуля энтропийного кодирования;- encoding, by means of the entropy encoding module, each of the subset of blocks by associating digital information with the symbols of each block from the subset under consideration, the encoding step comprises, for the first image block, a state variable initialization sub-step for the entropy encoding module;

- генерация по меньшей мере одного подпотока данных, представляющего по меньшей мере одно из кодированных подмножеств блоков.- generating at least one data substream representing at least one of the encoded block subsets.

Способ согласно настоящему изобретению примечателен тем, что:The method according to the present invention is remarkable in that:

- в случае, когда текущий блок является первым блоком, подлежащим кодированию, из состава рассматриваемого подмножества, в качестве вероятностей появления символов для первого текущего блока, принимают вероятности, которые были определены для кодированного и декодированного заданного блока из состава по меньшей мере одного другого подмножества;- in the case when the current block is the first block to be encoded from the subset under consideration, as the probabilities of the occurrence of symbols for the first current block, the probabilities that were determined for the encoded and decoded given block from the composition of at least one other subset are taken;

- если текущий блок представляет собой последний кодированный блок из состава рассматриваемого подмножества, тогда:- if the current block is the last coded block in the subset under consideration, then:

• записывают в подпоток, представляющий рассматриваемое подмножество, всю полноту цифровой информации, ассоциированной с символами, во время кодирования блоков рассматриваемого подмножества;• write to the substream representing the considered subset, the entirety of the digital information associated with the symbols, during the coding of blocks of the considered subset;

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

Указанный выше этап записи содержит, как только будет закодирован последний блок какого-либо подмножества блоков, опустошение цифровой информации (битов), еще не переданной, как было объяснено в приведенном выше описании.The above recording step comprises, once the last block of any subset of blocks has been encoded, emptying the digital information (bits) not yet transmitted, as explained in the above description.

Связь между упомянутым выше этапом записи и этапом реинициализации модуля энтропийного кодирования делает возможным генерировать поток кодированных данных, содержащий различные подпотоки данных, соответствующие по меньшей мере одному кодированному подмножеству блоков, этот поток адаптирован для параллельного декодирования согласно различным уровням параллелизма, и это не зависит от типа кодирования - последовательного или параллельного, примененного к рассматриваемому подмножеству блоков. Таким образом, может быть получена большая степень свободы при кодировании с точки зрения уровня параллелизма в функции от ожидаемых характеристик кодирования/декодирования. Уровень параллелизма при декодировании является величиной переменной и может даже отличаться от уровня параллелизма при кодировании, поскольку в момент начала декодирования подмножества блоков декодер всегда находится в инициализированном состоянии.The connection between the above recording step and the reinitialization step of the entropy encoding module makes it possible to generate a coded data stream containing various data substreams corresponding to at least one encoded subset of blocks, this stream is adapted for parallel decoding according to different levels of parallelism, and this is independent of the type coding - serial or parallel, applied to the considered subset of blocks. Thus, a large degree of freedom in encoding can be obtained in terms of the level of parallelism as a function of the expected encoding/decoding performance. The level of parallelism in decoding is a variable value and may even be different from the level of parallelism in encoding, since the decoder is always in an initialized state at the start of decoding a subset of blocks.

Согласно первому примеру переменные состояния модуля энтропийного кодирования образуют границы внутреннего представления вероятности появления одного из символов из совокупности, составляющей заданное множество символов.According to the first example, the state variables of the entropy coding module form the boundaries of the internal representation of the probability of occurrence of one of the symbols from the set constituting the given set of symbols.

Согласно второму примеру переменные состояния модуля энтропийного кодирования представляют собой строки символов, содержащиеся в кодовой преобразовательной таблице энтропийного кодирующего устройства для кода LZW (Лемпеля-Зива-Уэлша), хорошо известного специалистам в рассматриваемой области и описанного по следующему интернет-адресу, 21 июня 2011 г.: http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch.According to the second example, the state variables of the entropy encoding module are character strings contained in the encoding conversion table of the entropy encoder for the LZW (Lempel-Ziv-Welsh) code, well known to those skilled in the art and described at the following Internet address, June 21, 2011 .: http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch.

Основное преимущество от использования вероятностей появления символов, найденных для первого блока из указанного другого подмножества, в процессе энтропийного кодирования первого текущего блока из состава рассматриваемого подмножества блоков состоит в экономии буферной памяти кодирующего устройства путем сохранения в этой памяти исключительно обновлений вероятностей появления символов, не принимая в расчет вероятности появления символов, найденные другими последовательными блоками указанного другого подмножества.The main advantage of using the probabilities of occurrence of symbols found for the first block from the specified other subset in the process of entropy encoding the first current block from the considered subset of blocks is to save the buffer memory of the encoder by storing in this memory only updates of the probabilities of occurrence of symbols, without taking into account calculation of the probability of occurrence of characters found by other consecutive blocks of the specified other subset.

Основное преимущество от использования вероятностей появления символов, найденных для какого-либо другого блока из указанного другого подмножества, отличного от первого блока, например, второго блока, в процессе энтропийного кодирования первого текущего блока из состава рассматриваемого подмножества блоков состоит в получении более точных и потому лучше "изученных" вероятностей появления символов, что дает лучшие характеристики сжатия видеосигнала.The main advantage of using the probabilities of occurrence of characters found for some other block from the specified other subset other than the first block, for example, the second block, in the process of entropy coding the first current block from the considered subset of blocks is to obtain more accurate and therefore better "learned" probabilities of occurrence of symbols, which gives the best characteristics of video signal compression.

В конкретном варианте указанные подмножества блоков кодируют последовательно или еще и параллельно.In a particular embodiment, said subsets of blocks are encoded sequentially or also in parallel.

Тот факт, что кодирование подмножеств блоков осуществляется последовательно, имеет то преимущество, что способ кодирования согласно настоящему изобретению совместим со стандартом H.264/MPEG-4 AVC.The fact that block subset coding is performed sequentially has the advantage that the coding method of the present invention is compatible with the H.264/MPEG-4 AVC standard.

Тот факт, что кодирование подмножеств блоков осуществляется параллельно, имеет преимущество сокращения затрат времени на кодирование и использования выгод архитектуры, имеющей несколько платформ, для кодирования изображения.The fact that encoding of subsets of blocks is performed in parallel has the advantage of reducing encoding time and taking advantage of a multi-platform architecture for image encoding.

В другом конкретном варианте, когда по меньшей мере два подмножества блоков кодируют параллельно по меньшей мере с одним другим подмножеством блоков, указанные по меньшей мере два кодированных множества блоков заключены в одном и том же подпотоке данных.In another particular embodiment, when at least two block subsets are encoded in parallel with at least one other block subset, the at least two encoded block sets are contained in the same data substream.

Такое предложение делает возможным, в частности, уменьшение объема сигнализации в подпотоках данных. Действительно, чтобы модуль декодирования мог произвести декодирование подпотока как можно раньше, необходимо указать в сжатом файле точку, в которой начинается интересующий подпоток. Когда в одном и том же подпотоке данных присутствуют несколько подмножеств блоков, необходим единый индикатор, что позволит уменьшить размер сжатого файла.Such a proposal makes it possible, in particular, to reduce the amount of signaling in the data substreams. Indeed, in order for the decoding module to decode the substream as early as possible, it is necessary to indicate in the compressed file the point at which the substream of interest begins. When multiple subsets of blocks are present in the same data substream, a single indicator is needed to reduce the size of the compressed file.

Еще в одном другом конкретном варианте, когда кодированные подмножества блоков предназначены для параллельного декодирования в заданном порядке, подпотоки данных, полученные после кодирования соответственно каждого подмножества блоков, сначала упорядочивают заданным образом перед тем как передать, с учетом перспективы декодирования этих данных.In yet another specific embodiment, when the encoded subsets of blocks are intended to be decoded in parallel in a given order, the data substreams obtained after encoding respectively each subset of blocks are first ordered in a given manner before being transmitted, taking into account the decoding perspective of this data.

Такое предложение делает возможным адаптировать поток кодированных данных к конкретному виду декодирования без того, чтобы требовать декодировать и затем снова кодировать изображение.Such a proposal makes it possible to tailor the encoded data stream to a particular kind of decoding without requiring the image to be decoded and then re-encoded.

Соответственно, настоящее изобретение относится далее к устройству для кодирования по меньшей мере одного изображения, содержащему:Accordingly, the present invention further relates to an apparatus for encoding at least one image, comprising:

- модуль для разбиения изображения на несколько блоков, которые могут содержать символы, принадлежащие заданному множеству символов;- a module for dividing an image into several blocks, which may contain characters belonging to a given set of characters;

- модуль для группирования блоков в заданное число подмножеств блоков;- a module for grouping blocks into a given number of subsets of blocks;

- модуль для кодирования каждого из подмножеств блоков, так что этот модуль для кодирования содержит модуль энтропийного кодирования, способный ассоциировать цифровую информацию с символами каждого блока из рассматриваемого подмножества, этот модуль для кодирования содержит, для первого блока изображения, субмодуль для инициализации переменных состояния для модуля энтропийного кодирования;- a module for encoding each of the subsets of blocks, so that this module for encoding contains an entropy encoding module capable of associating digital information with the symbols of each block from the considered subset, this module for encoding contains, for the first image block, a submodule for initializing state variables for the module entropy coding;

- модуль для генерации по меньшей мере одного подпотока данных, представляющего по меньшей мере одно из кодированных подмножеств блоков.- a module for generating at least one data substream representing at least one of the encoded block subsets.

Такое устройство для кодирования примечательно тем, что оно содержит:Such an encoding device is remarkable in that it contains:

- модуль для определения вероятностей появления символов для текущего блока, так что этот модуль в случае, когда текущий блок является первым блоком, подлежащим кодированию, из состава рассматриваемого подмножества, принимает в качестве вероятностей появления символов для первого текущего блока вероятности, которые были определены для кодированного и декодированного заданного блока из состава по меньшей мере одного другого подмножества;- a module for determining the probabilities of occurrence of characters for the current block, so that this module, in the case where the current block is the first block to be encoded from the subset under consideration, takes as probabilities of occurrence of symbols for the first current block the probabilities that were determined for the encoded and a decoded given block from at least one other subset;

- записывающий модуль, который в случае, когда текущий блок является последним кодированным блоком из состава рассматриваемого подмножества, активизируют для записи в подпоток, представляющий рассматриваемое подмножество, всей полноты цифровой информации, ассоциированной с символами, во время кодирования блоков рассматриваемого подмножества,- a writing module, which, in the case where the current block is the last encoded block from the subset under consideration, is activated to write to the substream representing the subset under consideration, the entirety of the digital information associated with the symbols, during encoding of the blocks of the subset under consideration,

указанный субмодуль инициализации дополнительно активизируют, чтобы реинициализировать переменные состояния модуля энтропийного кодирования.said initialization submodule is further invoked to reinitialize state variables of the entropy encoding module.

Соответствующим образом, настоящее изобретение относится к способу декодирования потока, представляющего по меньшей мере одно кодированное изображение, содержащему этапы:Accordingly, the present invention relates to a method for decoding a stream representing at least one encoded picture, comprising the steps:

- идентификация потока, содержащего заданное число подпотоков данных, соответствующих по меньшей мере одному подмножеству блоков, подлежащих декодированию, так что эти блоки могут содержать символы, принадлежащие заданному множеству символов;- identifying a stream containing a given number of data substreams corresponding to at least one subset of blocks to be decoded, so that these blocks may contain characters belonging to a given set of characters;

- декодирование идентифицированных подмножеств блоков, посредством модуля энтропийного декодирования, путем считывания, по меньшей мере в одном из идентифицированных подпотоков, цифровой информации, ассоциированной с символами каждого блока из подмножества, соответствующего указанному по меньшей мере одному идентифицированному подпотоку, этап декодирования содержит, для первого блока, подлежащего декодированию в изображении, подэтап инициализации переменных состояния для модуля энтропийного декодирования.- decoding the identified subsets of blocks, by means of an entropy decoding module, by reading, in at least one of the identified substreams, digital information associated with the symbols of each block from the subset corresponding to said at least one identified substream, the decoding step comprises, for the first block to be decoded in the image, a sub-step of initializing the state variables for the entropy decoding module.

Такой способ декодирования примечателен тем, что:This decoding method is notable for the fact that:

- в случае, когда текущий блок является первым блоком, подлежащим декодированию, из состава рассматриваемого подмножества, в качестве вероятностей появления символов для первого блока из состава рассматриваемого подмножества, принимают вероятности, которые были определены для декодированного заданного блока из состава по меньшей мере одного другого подмножества;- in the case when the current block is the first block to be decoded from the subset under consideration, as the probabilities of the occurrence of symbols for the first block from the subset under consideration, the probabilities that were determined for the decoded given block from the composition of at least one other subset are taken ;

- если текущий блок представляет собой последний декодированный блок из состава рассматриваемого подмножества, тогда выполняют подэтап инициализации.- if the current block is the last decoded block of the considered subset, then the initialization sub-step is performed.

В конкретном варианте указанные подмножества блоков декодируют последовательно или еще и параллельно.In a particular embodiment, said subsets of blocks are decoded sequentially or also in parallel.

В другом конкретном варианте, когда по меньшей мере два подмножества блоков декодируют параллельно по меньшей мере с одним другим подмножеством блоков, один из идентифицированных подпотоков данных представляет по меньшей мере два подмножества блоков.In another particular embodiment, when at least two block subsets are decoded in parallel with at least one other block subset, one of the identified data substreams represents at least two block subsets.

Еще в одном другом конкретном варианте, когда кодированные подмножества блоков предназначены для параллельного декодирования в заданном порядке, подпотоки данных, соответствующие кодированным подмножествам блоков, сначала упорядочивают в указанном заданном порядке в составе потока, подлежащего декодированию.In yet another specific embodiment, when coded block subsets are to be decoded in parallel in a given order, the data substreams corresponding to the coded block subsets are first ordered in said given order within the stream to be decoded.

Соответственно, настоящее изобретение относится также к устройству для декодирования потока, представляющего по меньшей мере одно кодированное изображение, содержащему:Accordingly, the present invention also relates to an apparatus for decoding a stream representing at least one encoded picture, comprising:

- модуль для идентификации в потоке заданного числа подпотоков данных, соответствующих по меньшей мере одному подмножеству блоков, подлежащих декодированию, так что эти блоки могут содержать символы, принадлежащие заданному множеству символов;- a module for identifying in the stream a given number of data substreams corresponding to at least one subset of blocks to be decoded, so that these blocks may contain characters belonging to a given set of characters;

- модуль декодирования идентифицированных подмножеств блоков, этот модуль декодирования содержит модуль энтропийного декодирования, способный считывать, по меньшей мере в одном из идентифицированных подпотоков, цифровую информацию, ассоциированную с символами каждого блока из подмножества, соответствующего указанному по меньшей мере одному идентифицированному подпотоку, этот модуль декодирования содержит, для первого блока, подлежащего декодированию в изображении, подмодуль для инициализации переменных состояния для модуля энтропийного декодирования.- a module for decoding the identified subsets of blocks, this decoding module contains an entropy decoding module capable of reading, in at least one of the identified substreams, digital information associated with the symbols of each block from the subset corresponding to said at least one identified substream, this decoding module contains, for the first block to be decoded in the image, a submodule for initializing state variables for the entropy decoding module.

Такое устройство для декодирования примечательно тем, что оно содержит модуль для определения вероятностей появления символов для текущего блока, так что этот модуль в случае, когда текущий блок является первым блоком, подлежащим кодированию, из состава рассматриваемого подмножества, принимает в качестве вероятностей появления символов для первого текущего блока вероятности, которые были определены для декодированного заданного блока из состава по меньшей мере одного другого подмножества,Such a device for decoding is remarkable in that it contains a module for determining the symbol occurrence probabilities for the current block, so that this module, in the case where the current block is the first block to be encoded from the subset under consideration, takes as the symbol occurrence probabilities for the first the current block of probabilities that were determined for the decoded given block from at least one other subset,

и тем, что если текущий блок представляет собой последний декодированный блок из состава рассматриваемого подмножества, тогда активизируется субмодуль инициализации для повторной инициализации переменных состояния для модуля энтропийного декодирования.and in that if the current block is the last decoded block of the subset under consideration, then the initialization submodule is invoked to reinitialize the state variables for the entropy decoding module.

Настоящее изобретение направлено также на создание компьютерной программы, содержащей команды для реализации этапов описанного выше способа кодирования или декодирования, при выполнении этой программы компьютером.The present invention is also directed to the creation of a computer program containing instructions for implementing the steps of the encoding or decoding method described above, when the program is executed by a computer.

Такая программа может использовать любой язык программирования и может быть в форме исходного кода, объектного кода или кода, занимающего промежуточное положение между исходным кодом и объектным кодом, например, в частично компилированной форме или в какой-либо другой нужной форме.Such a program may use any programming language and may be in the form of source code, object code, or code intermediate between source code and object code, such as partially compiled form or any other form desired.

Еще один предмет настоящего изобретения также направлен на создание читаемого компьютером носителя записи, содержащего команды компьютерной программы, такой как упомянутая выше.Another object of the present invention is also directed to the creation of a computer-readable recording medium containing the instructions of a computer program, such as mentioned above.

Такой носитель записи может представлять собой какой-либо объект или устройство, способное сохранять указанную программу. Например, подобный носитель может представлять собой запоминающее устройство, такое постоянное запоминающее устройство (ПЗУ (ROM)), например, ПЗУ на основе компакт-диска (CD-ROM) или микроэлектронное ПЗУ (ROM) или также магнитный носитель записи, например, дискета (гибкий диск) или накопитель на жестком магнитном диске.Such a recording medium may be any object or device capable of storing said program. For example, such a medium may be a storage device such as read only memory (ROM) such as a compact disc based ROM (CD-ROM) or a microelectronic ROM (ROM) or also a magnetic recording medium such as a floppy disk ( floppy disk) or hard disk drive.

Более того, такой носитель записи может быть передаваемым носителем, таким как электрический или оптический сигнал, который может быть передан по электрическому или по оптическому кабелю, по радио или каким-либо другим способом. Программу согласно настоящему изобретению можно, в частности, скачать из сети связи типа Интернет.Moreover, such a recording medium may be a transferable medium, such as an electrical or optical signal, which may be transmitted over an electrical or optical cable, by radio, or in some other way. The program according to the present invention can in particular be downloaded from a communication network such as the Internet.

В качестве альтернативы такой носитель записи может представлять собой интегральную схему, в которую встроена указанная программа, эта схема может быть адаптирована для реализации рассматриваемого способа или может быть использована при его реализации.Alternatively, such a recording medium may be an integrated circuit in which the specified program is embedded, this circuit may be adapted to implement the method in question or can be used in its implementation.

Перечисленные выше устройство для кодирования, способ декодирования, устройство для декодирования и компьютерные программы обладают по меньшей мере такими же преимуществами, какие свойственны способу кодирования согласно настоящему изобретению.The coding apparatus, decoding method, decoding apparatus and computer programs listed above have at least the same advantages as those of the coding method of the present invention.

Краткое описание чертежейBrief description of the drawings

Другие характеристики и преимущества станут очевидными после прочтения описание двух предпочтительных вариантов, данного со ссылками на прилагаемые чертежи, на которых:Other characteristics and advantages will become apparent after reading the description of the two preferred options, given with reference to the accompanying drawings, in which:

- фиг. 1 представляет схему кодирования изображения согласно известным способам;- fig. 1 represents an image encoding scheme according to known methods;

- фиг. 2А представляет основные этапы способа кодирования согласно настоящему изобретению;- fig. 2A represents the main steps of the encoding method according to the present invention;

- фиг. 2В представляет подробно процесс кодирования, реализованный способом кодирования, показанным на фиг. 2А;- fig. 2B shows in detail the encoding process implemented by the encoding method shown in FIG. 2A;

- фиг. 3А представляет первый вариант кодирующего устройства согласно настоящему изобретению;- fig. 3A represents a first embodiment of an encoder according to the present invention;

- фиг. 3В представляет модуль кодирования в составе кодирующего устройства, показанного на фиг. 3А;- fig. 3B shows an encoding module within the encoder shown in FIG. 3A;

- фиг. 3С представляет второй вариант кодирующего устройства согласно настоящему изобретению;- fig. 3C represents a second embodiment of an encoder according to the present invention;

- фиг. 4А представляет схему кодирования/декодирования изображения согласно первому предпочтительному варианту;- fig. 4A shows an image encoding/decoding scheme according to the first preferred embodiment;

- фиг. 4В представляет схему кодирования/декодирования изображения согласно второму предпочтительному варианту;- fig. 4B shows an image encoding/decoding scheme according to the second preferred embodiment;

- фиг. 5А представляет основные этапы способа декодирования согласно настоящему изобретению;- fig. 5A represents the main steps of the decoding method according to the present invention;

- фиг. 5В представляет подробно процесс декодирования, реализованный способом декодирования, показанным на фиг. 5А;- fig. 5B shows in detail the decoding process implemented by the decoding method shown in FIG. 5A;

- фиг. 6А представляет вариант декодирующего устройства согласно настоящему изобретению;- fig. 6A represents an embodiment of a decoding device according to the present invention;

- фиг. 6В представляет модуль декодирования в составе декодирующего устройства, показанного на фиг. 6А;- fig. 6B shows a decoding module within the decoding device shown in FIG. 6A;

- фиг. 7А представляет схему кодирования/декодирования изображения, реализующую кодирование последовательного типа и декодирование параллельного типа;- fig. 7A shows an image encoding/decoding scheme realizing serial type encoding and parallel type decoding;

- фиг. 7В представляет схему кодирования/декодирования изображения, реализующую кодирование/декодирование параллельного типа при различных уровнях параллелизма.- fig. 7B shows an image encoding/decoding scheme realizing parallel-type encoding/decoding at various levels of parallelism.

Подробное описание первого варианта кодирующей частиDetailed description of the first version of the coding part

Теперь будет описан один из вариантов настоящего изобретения, в котором способ кодирования согласно настоящему изобретению используется для кодирования последовательности изображений в соответствии с двоичным потоком, таким же, как поток, получаемый в результате кодирования по стандарту H.264/MPEG-4 AVC. В рассматриваемом варианте способ кодирования согласно настоящему изобретению реализован, например, посредством программного обеспечения или аппаратным способом путем модификации кодирующего устройства, первоначально совместимого со стандартом H.264/MPEG-4 AVC. Способ кодирования согласно настоящего изобретению представлен в форме алгоритма, содержащего этапы с C1 по С5 и показанного на фиг. 2А.An embodiment of the present invention will now be described in which the coding method of the present invention is used to encode a sequence of images according to a bit stream, the same as that resulting from H.264/MPEG-4 AVC encoding. In the considered embodiment, the encoding method according to the present invention is implemented, for example, by software or by hardware by modifying an encoder originally compatible with the H.264/MPEG-4 AVC standard. The encoding method according to the present invention is presented in the form of an algorithm comprising steps C1 to C5 and shown in FIG. 2A.

Способ кодирования согласно одному из вариантов настоящего изобретения реализован в кодирующем устройстве СО, два варианта которого представлены соответственно на фиг. 3А и 3С.The coding method according to one embodiment of the present invention is implemented in the CO encoder, two variants of which are shown respectively in FIG. 3A and 3C.

Как показано на фиг. 2А, первый этап С1 кодирования представляет собой разбиение изображения IE в последовательности, изображений, подлежащих кодированию, на несколько блоков или макроблоков MB, как это изображено на фиг. 4А и 4В. Указанные макроблоки могут содержать один или несколько символов, составляющих часть заданного множества символов. В представленных примерах эти макроблоки MB обладают квадратной формой и все имеют одинаковый размер. В зависимости от размера изображения, который необязательно кратен размеру блоков, последние блоки слева и последние блоки внизу изображения могут не быть квадратными. В альтернативном варианте блоки, например, могут быть прямоугольной формы и/или могут быть не совмещены один с другим.As shown in FIG. 2A, the first encoding step C1 is to divide the picture IE in sequence of pictures to be coded into several blocks or macroblocks MB as shown in FIG. 4A and 4B. These macroblocks may contain one or more symbols that are part of a given set of symbols. In the examples shown, these MBs are square in shape and all have the same size. Depending on the size of the image, which is not necessarily a multiple of the size of the blocks, the last blocks on the left and the last blocks on the bottom of the image may not be square. Alternatively, the blocks, for example, may be rectangular in shape and/or may not be aligned with one another.

Каждый блок или макроблок может, далее, сам быть разбит на субблоки, которые в свою очередь могут быть разбиты на части.Each block or macroblock may then itself be divided into sub-blocks, which in turn may be divided into parts.

Такое разбиение осуществляется посредством модуля РСО разбиения, показанного на фиг. 3А и использующего, например, хорошо известный алгоритм разбиения.This partitioning is performed by the partitioning module PCO shown in FIG. 3A and using, for example, a well-known partitioning algorithm.

Как показано на фиг. 2А, второй этап С2 кодирования представляет собой группирование указанных выше блоков в заданное число P подмножеств SE1, SE2, …, SEk, …, SEP последовательных блоков, которые должны быть кодированы последовательно или параллельно. В примерах, показанных на фиг. 4А и 4В, число подмножеств Р=6, но для большей ясности чертежа изображены только четыре подмножества SE1, SE2, SE3 и SE4. Каждое из этих четырех подмножеств блоков показано в заштрихованном виде, а все четыре подмножества образованы первыми четырьмя строками (каждое - своей) блоков изображения IE.As shown in FIG. 2A, the second encoding step C2 is the grouping of the above blocks into a predetermined number P of subsets SE1, SE2, ..., SEk, ..., SEP of consecutive blocks to be encoded in series or in parallel. In the examples shown in FIG. 4A and 4B, the number of subsets P=6, but for the sake of clarity of the drawing, only four subsets SE1, SE2, SE3 and SE4 are shown. Each of these four subsets of blocks is shown in hatched form, and all four subsets are formed by the first four lines (each - its own) of the IE image blocks.

Такое группирование осуществляется посредством вычислительного модуля GRCO разбиения, показанного на фиг. 3А, с использованием хорошо известного алгоритма.This grouping is carried out by the split computing module GRCO shown in FIG. 3A using a well known algorithm.

Как показано на фиг. 2А, третий этап С3 кодирования состоит в кодировании каждого из подмножеств блоков с SE1 по SE6, так что блоки из состава любого рассматриваемого подмножества кодируют в соответствии с заданным порядком PS прохождения через эти блоки, например, для последовательного кодирования. В примерах, представленных на фиг. 4А и 4В, блоки текущего подмножества SEk (1≤k≤Р) кодируют один за другим слева направо, как показано стрелкой PS.As shown in FIG. 2A, the third encoding step C3 is to encode each of the subsets of blocks SE1 to SE6 such that blocks from any subset under consideration are encoded in accordance with a predetermined pass order PS through these blocks, eg for sequential coding. In the examples shown in FIG. 4A and 4B, blocks of the current subset SEk (1≤k≤P) are encoded one after the other from left to right, as indicated by the arrow PS.

Согласно первому варианту такое кодирование относится к последовательному типу кодирования и реализуется в одном кодирующем модуле UC, как представлено на фиг. 3А. Согласно известным технологиям кодирующее устройство СО содержит буферную память МТ, адаптированную для хранения вероятностей появления символов, постоянно обновляемых в процессе кодирования текущего блока.According to the first variant, such coding belongs to the serial coding type and is implemented in one UC coding unit, as shown in FIG. 3A. According to known technologies, the encoder CO includes a buffer memory MT adapted to store the probabilities of occurrence of symbols that are constantly updated during the encoding of the current block.

Как показано более подробно на фиг. 3В, кодирующий модуль UC содержит:As shown in more detail in FIG. 3B, the UC encoding module contains:

• модуль для кодирования с прогнозированием применительно к текущему блоку с учетом по меньшей мере одного из ранее кодированных и декодированных блоков, обозначенный МСР;• a module for predictive coding on the current block given at least one of the previously coded and decoded blocks, denoted MCP;

• модуль для энтропийного кодирования текущего блока с использованием по меньшей мере одной вероятности появления символа, вычисленной для указанного ранее кодированного и декодированного блока, обозначенный МСЕ.• a unit for entropy encoding the current block using at least one symbol occurrence probability computed for a specified previously encoded and decoded block, designated MCE.

Модуль МСР кодирования с прогнозированием представляет собой программный модуль, способный осуществлять кодирование с прогнозированием применительно к текущему блоку в соответствии с обычными способами прогнозирования, такого как, например, режим внутрикадрового и/или межкадрового прогнозирования.The MCP predictive coding module is a software module capable of performing predictive coding on a current block in accordance with conventional prediction methods such as, for example, intra-prediction mode and/or inter-prediction mode.

Указанный модуль МСЕ энтропийного кодирования представляет собой модуль стандарта САВАС, но модифицированный согласно настоящему изобретению, как это будет рассмотрено далее в этом описании.Said entropy coding MCE module is a CABAC standard module, but modified according to the present invention, as will be discussed later in this description.

В качестве варианта, указанное энтропийное кодирующее устройство МСЕ может представлять собой известное кодирующее устройство в коде Хаффмена.Alternatively, said MCE entropy encoder may be a known Huffman encoder.

В примерах, представленных на фиг. 4А и 4В, модуль UC кодирует блоки первой строки SE1 слева направо. После достижения последнего блока в первой строке SE1 модуль переходит к первому блоку второй строки SE2. После достижения последнего блока во второй строке SE2 модуль переходит к первому блоку третьей строки SE3. После достижения последнего блока в третьей строке SE3 модуль переходит к первому блоку четвертой строки SE4 и т.д. до тех пор, пока не будет закодирован последний блок изображения IE.In the examples shown in FIG. 4A and 4B, the UC module encodes the blocks of the first row SE1 from left to right. After reaching the last block in the first line of SE1, the module proceeds to the first block of the second line of SE2. After reaching the last block in the second row of SE2, the module proceeds to the first block of the third row of SE3. After reaching the last block in the third row of SE3, the module proceeds to the first block of the fourth row of SE4, and so on. until the last IE image block is encoded.

Безусловно, возможны и другие варианты просмотра изображения, отличные от того варианта, который был только что описан выше. Таким образом, можно разбить изображение IE на несколько подызображений и затем применить разбиение такого типа к каждому подызображению независимо. Кроме того, кодирующий модуль может обрабатывать не последовательность строк, как было рассмотрено выше, а последовательность столбцов. Можно также просматривать строки или столбцы в любом направлении.Of course, other options for viewing an image are possible, other than the option that was just described above. Thus, it is possible to split an IE image into multiple sub-images and then apply this type of split to each sub-image independently. In addition, the encoding module may not process a sequence of rows, as discussed above, but a sequence of columns. You can also view rows or columns in either direction.

Согласно второму варианту такое кодирование представляет собой кодирование параллельного типа и отличается от первого варианта последовательного кодирования исключительно тем фактом, что он реализован заданным числом R кодирующих модулей UCk (1≤k≤R), при R=2, как в примере, представленном на фиг. 3С. Такое параллельное кодирование, как известно, вызывает значительное ускорение способа кодирования.According to the second variant, such coding is a parallel-type coding and differs from the first variant of sequential coding solely in the fact that it is implemented by a given number R of coding units UCk (1≤k≤R), with R=2, as in the example shown in FIG. . 3C. Such parallel coding is known to cause a significant speedup of the coding method.

Каждый из кодирующих модулей UCk идентичен кодирующему модулю UC, представленному на фиг. 3В. Соответствующим образом кодирующий модуль UCk содержит модуль MCPk кодирования с прогнозированием и модуль энтропийного кодирования MCEk.Each of the UCk coding modules is identical to the UC coding module shown in FIG. 3B. Correspondingly, the coding module UCk comprises a predictive coding module MCPk and an entropy coding module MCEk.

Снова со ссылками на фиг. 4А и 4В первый модуль UC1 кодирует, например, блоки строк с нечетными номерами, тогда как второй модуль UC2 кодирует, например, блоки строк с четными номерами. Более точно, первый модуль UC кодирует блоки первой строки SE1 слева направо. После достижения последнего блока в первой строке SE1 этот модуль переходит к первому блоку (2n+1)-й строки, иными словами к третьей строке SE3 и т.д. Параллельно с обработкой, выполняемой первым модулем UC1, второй модуль UC2 кодирует блоки второй строки SE2 слева направо. После достижения последнего блока во второй строке SE2 этот модуль переходит к первому блоку (2n)-й строки, здесь это четвертая строка SE4 и т.д. Указанные выше два просматривающих прохода повторяют до тех пор, пока не будет закодирован последний блок изображения IE.Again with reference to FIG. 4A and 4B, the first module UC1 encodes, for example, blocks of lines with odd numbers, while the second module UC2 encodes, for example, blocks of lines with even numbers. More specifically, the first module UC encodes the blocks of the first row of SE1 from left to right. After reaching the last block in the first row of SE1, this module goes to the first block of the (2n+1)th row, in other words, to the third row of SE3, and so on. In parallel with the processing performed by the first module UC1, the second module UC2 encodes the blocks of the second row SE2 from left to right. After reaching the last block in the second row of SE2, this module goes to the first block of the (2n)th row, here it is the fourth row of SE4, and so on. The above two browsing passes are repeated until the last IE image block is encoded.

Как показано на фиг. 2А, на четвертом этапе С4 кодирования генерируют L подпотоков F1, F2, …, Fm, …, FL (1≤m≤L≤P) битов, представляющих обработанные блоки, сжатые посредством указанного выше кодирующего модуля UC или каждого из указанных выше кодирующих модулей UCk, равно как и декодированную версию обработанных блоков из состава каждого подмножества SEk. Декодированные обработанные блоки из состава рассматриваемого подмножества, обозначенные SED1, SED2, …, SEDk, …, SEDP, могут быть повторно использованы кодирующим модулем UC, представленным на фиг. 3А, или каждым из кодирующих модулей UCk, представленных на фиг. 3С, в соответствии с механизмом синхронизации, который будет подробно рассмотрен в настоящем описании дальше.As shown in FIG. 2A, the fourth encoding step C4 generates L substreams F1, F2, ..., Fm, ..., FL (1≤m≤L≤P) of bits representing processed blocks compressed by the above coder UC or each of the above coders. UCk, as well as the decoded version of the processed blocks from each SEk subset. The decoded processed blocks from the considered subset, denoted SED1, SED2, ..., SEDk, ..., SEDP, can be reused by the UC coder shown in FIG. 3A or each of the UCk coding modules shown in FIG. 3C, in accordance with the synchronization mechanism, which will be discussed in detail later in the present description.

Как показано на фиг. 3В, этап генерации L подпотоков реализуется программным модулем MGSF или MGSFk генерации потоков, адаптированным для генерации потоков данных, таких как потоки битов, например.As shown in FIG. 3B, the step of generating L substreams is implemented by the stream generation software module MGSF or MGSFk adapted to generate data streams such as bit streams, for example.

Как показано на фиг. 2А, пятый этап С5 кодирования состоит в построении глобального потока F на основе упомянутых выше L подпотоков F1, F2, …, Fm, …, FL. Согласно одному из вариантов подпотоки F1, F2, …, Fm, …, FL просто накладывают один на другой, так что необходим дополнительный сегмент информации, предназначенный для индикации местонахождения каждого подпотока Fm в глобальном потоке F для декодера. Этот глобальный поток затем передают по сети связи (не показана) удаленному терминалу. Этот терминал содержит декодер DO, представленный на фиг. 5А. Согласно другому варианту, который особенно предпочтителен, поскольку он не требует декодирования и потом повторного кодирования изображения, кодирующее устройство СО, перед передачей потока F декодеру DO, предварительно располагает L подпотоки F1, F2, …, Fm, …, FL в заданном порядке, соответствующем порядку, в котором указанный декодер DO способен декодировать эти подпотоки.As shown in FIG. 2A, the fifth encoding step C5 is to construct a global stream F based on the above L substreams F1, F2, ..., Fm, ..., FL. In one embodiment, the substreams F1, F2, ..., Fm, ..., FL simply overlap, so that an additional segment of information is needed to indicate the location of each substream Fm in the global stream F for the decoder. This global stream is then transmitted over a communications network (not shown) to the remote terminal. This terminal contains the DO decoder shown in FIG. 5A. According to another option, which is particularly preferred because it does not require decoding and then re-encoding the image, the encoder CO, before transmitting the stream F to the decoder DO, pre-arranges L substreams F1, F2, ..., Fm, ..., FL in a predetermined order corresponding to order in which the specified DO decoder is able to decode these substreams.

Таким образом, как это будет подробно рассмотрено далее в настоящем описании, декодер согласно настоящему изобретению способен выделить подпотоки F1, F2, …, Fm, …, FL из состава глобального потока F и назначить эти подпотоки одному или нескольким декодирующим модулям, из которых состоит декодер. Следует отметить, что такое разложение глобального потока на подпотоки не зависит от выбора использования одного кодирующего модуля или нескольких кодирующих модулей, работающих параллельно, и что при таком подходе можно иметь только кодирующее устройство или только декодер, содержащий модули, работающие параллельно.Thus, as will be discussed in detail later in the present description, the decoder according to the present invention is able to extract the substreams F1, F2, ..., Fm, ..., FL from the global stream F and assign these substreams to one or more decoding modules that make up the decoder . It should be noted that such a decomposition of the global stream into substreams does not depend on the choice of using one encoder module or several encoder modules operating in parallel, and that with this approach it is possible to have only an encoder or only a decoder containing modules operating in parallel.

Такая структура глобального потока F реализована в модуле CF построения потоков, таком, как представлен на фиг. 3А и на фиг. 3С.Such a structure of the global stream F is implemented in the stream building module CF, such as shown in FIG. 3A and in FIG. 3C.

Различные специфичные подэтапы настоящего изобретения, такие как реализуемые в ходе указанного выше этапа С3 кодирования в кодирующем модуле UC или UCk, будут теперь описаны со ссылками на фиг. 2J3.Various specific sub-steps of the present invention, such as those implemented in the above step C3 encoding in the UC or UCk coding module, will now be described with reference to FIG. 2J3.

В процессе выполнения этапа С31 кодирующий модуль UC или UCk выбирает в качестве текущего блока первый блок, подлежащий кодированию, в текущей строке SEk, представленной на фиг. 4А или 4В, такой как, например, первая строка SE1.In the process of executing step C31, the encoding unit UC or UCk selects as the current block the first block to be encoded in the current row SEk shown in FIG. 4A or 4B, such as, for example, the first row of SE1.

В процессе выполнения этапа С32 модуль UC или UCk проверяет, является ли текущий блок первым блоком (расположенным сверху и слева) изображения IE, которое было разбито на блоки в ходе указанного выше этапа С1.During the execution of step C32, the UC or UCk module checks whether the current block is the first block (top and left) of the image IE that was divided into blocks during the above step C1.

Если текущий блок - первый, тогда на этапе С33 модуль МСЕ или MCEk энтропийного кодирования осуществляет инициализацию своих переменных состояния. Согласно представленному примеру, использующему арифметическое кодирование, описанное ранее, этот этап содержит инициализацию интервала, представляющего вероятность появления одного из символов из совокупности, составляющей заданное множество символов. Известным способом этот интервал инициализируют с двумя границами L и Н, соответственно нижней и верхней. Значение нижней границы L фиксируют на 0, а значение верхней границы фиксируют на 1, что соответствует вероятности появления первого символа из совокупности всех символов, составляющих заданное множество символов. Размер R этого интервала определен, поэтому, здесь формулой R=H-L=1. Инициализированный интервал обычно разбивают дополнительно на несколько заданных подинтервалов, представляющих соответственно вероятности появления символов из совокупности символов, составляющей заданное множество символов.If the current block is the first, then in step C33, the entropy encoding module MCE or MCEk initializes its state variables. According to the present example, using the arithmetic coding described earlier, this step comprises initializing an interval representing the probability of occurrence of one of the symbols from a population constituting a given set of symbols. In a known way, this interval is initialized with two boundaries L and H, respectively lower and upper. The value of the lower bound L is fixed at 0, and the value of the upper bound is fixed at 1, which corresponds to the probability of the occurrence of the first character from the set of all characters that make up the given set of characters. The size R of this interval is defined, therefore, here by the formula R=H-L=1. The initialized interval is usually further divided into several predetermined subintervals, representing, respectively, the probabilities of the occurrence of symbols from a set of symbols constituting a given set of symbols.

В качестве варианта, если используемый способ энтропийного кодирования представляет собой способ кодирования LZW, инициализируется кодовая таблица строк символов, так что эта таблица содержит все возможные символы по одному и только по одному разу.Alternatively, if the entropy encoding method used is an LZW encoding method, the character string encoding table is initialized such that the table contains all possible characters one and only one time.

Если после указанного выше этапа С32 оказалось, что текущий блок не является первым блоком изображения IE, определяют на этапе С40, который будет рассмотрен в настоящем описании позднее, наличие необходимых ранее кодированных и декодированных блоков.If, after step C32 above, it is found that the current block is not the first block of the IE image, it is determined in step C40, which will be discussed later in the present description, the presence of the necessary previously encoded and decoded blocks.

В процессе выполнения этапа С34 кодируют первый текущий блок МВ1 первой строки SE1, представленной на фиг. 4А или 4В. Такой этап С34 содержит несколько подэтапов с С341 по С348, которые будут описаны ниже.During step C34, the first current block MB1 of the first row SE1 shown in FIG. 4A or 4B. Such step C34 contains several sub-steps C341 to C348, which will be described below.

В ходе выполнения первого подэтапа С341, представленного на фиг. 2В, осуществляют кодирование с прогнозированием применительно к текущему блоку МВ1 посредством известного способа внутрикадрового и/или межкадрового прогнозирования, согласно которому блок МВ1 прогнозируют относительно по меньшей мере одного ранее кодированного и декодированного блока.During the execution of the first sub-step C341 shown in FIG. 2B, predictive encoding is performed on the current block MB1 by a known intra-frame and/or inter-frame prediction method, in which the MB1 block is predicted with respect to at least one previously encoded and decoded block.

Само собой разумеется, что возможны также другие режимы внутрикадрового прогнозирования, такие как режимы, предлагаемые в стандарте Н.264.It goes without saying that other intra prediction modes are also possible, such as those offered in the H.264 standard.

Текущий блок МВ1 может быть также подвергнут кодированию с прогнозированием в режиме, в ходе которого блок МВ1 прогнозируют относительно блока, полученного на основе ранее кодированного и декодированного изображения. Безусловно, можно представить и другие типы прогнозирования. Из совокупности возможных способов прогнозирования для текущего блока оптимальный способ прогнозирования выбирают согласно критерию искажения скорости передачи данных, хорошо известному специалистам в рассматриваемой области.The current block MB1 may also be predictively encoded in a mode in which the block MB1 is predicted with respect to a block derived from a previously encoded and decoded image. Of course, other types of forecasting can also be imagined. From the set of possible prediction methods for the current block, the optimal prediction method is selected according to a data rate distortion criterion well known to those skilled in the art.

Упомянутый выше этап кодирования с прогнозированием делает возможным построение прогнозированного блока MBp1, представляющего собой аппроксимацию текущего блока МВ1. Информация, относящаяся к кодированию с прогнозированием, будет в последующем записана в потоке F, передаваемом декодеру DO. Такая информация содержит в частности указание типа прогнозирования (межкадровое или внутрикадровое) и, если это подходит, режима внутрикадрового прогнозирования, типа разбиения блока или макроблока, если последний был разбит, индекса опорного изображения и вектора смещения, используемого в режиме межкадрового прогнозирования. Кодирующее устройство СО сжимает эту информацию.The predictive encoding step mentioned above makes it possible to construct a predicted block MBp 1 that is an approximation of the current block MB1. Information related to predictive coding will subsequently be recorded in the F stream transmitted to the DO decoder. Such information contains, in particular, an indication of the type of prediction (inter-frame or intra-frame) and, if appropriate, the mode of intra-frame prediction, the type of block split or macroblock, if the latter was split, the index of the reference picture, and the offset vector used in the inter-picture prediction mode. The CO encoder compresses this information.

В процессе выполнения следующего подэтапа С342 вычитают прогнозируемый блок MBp1 из текущего блока MB1 для получения остаточного блока MBr1.During the next sub-step C342, the predicted block MBp 1 is subtracted from the current block MB 1 to obtain a residual block MBr 1 .

В процессе выполнения следующего подэтапа С343 осуществляют преобразование прогнозируемого блока MBp1 согласно обычной процедуре прямого преобразования, такой как, например, дискретное косинусное преобразование типа DCT, для получения преобразованного блока MBt1.In the next sub-step C343, the predicted block MBp 1 is transformed according to a conventional direct transformation procedure, such as DCT type DCT, for example, to obtain the transformed block MBt 1 .

В процессе выполнения следующего подэтапа С344 выполняют квантование преобразованного блока MBt1 согласно обычной процедуре квантования, такой как, например, скалярное квантование. В результате получен блок MBq1 квантованных коэффициентов.In the process of executing the next sub-step C344, the transformed block MBt 1 is quantized according to a conventional quantization procedure such as, for example, scalar quantization. The result is a block of MBq 1 quantized coefficients.

В процессе выполнения следующего подэтапа С345 осуществляют энтропийное кодирование блока квантованных коэффициентов MBq1. В предпочтительно варианте здесь выполняется энтропийное кодирование по стандарту САВАС. Такой этап содержит:During the next sub-step C345, entropy encoding of the block of quantized coefficients MBq 1 is performed. In a preferred embodiment, entropy coding according to the CABAC standard is performed here. This stage contains:

a) считывание символа или символов из состава заданного множества символов, ассоциированных с текущим блоком;a) reading a character or characters from a given set of characters associated with the current block;

b) ассоциирование цифровой информации, такой как биты, с прочитанным(и) символом(ами).b) associating digital information, such as bits, with the read character(s).

В указанном выше варианте, в котором в качестве алгоритма кодирования использован алгоритм кодирования LZW, с символом, подлежащим кодированию, ассоциируют цифровой сегмент информации, соответствующий коду рассматриваемого символа в текущей кодовой таблице и затем обновляют эту кодовую таблицу согласно известной процедуре.In the above embodiment, in which the LZW coding algorithm is used as the encoding algorithm, a digital segment of information corresponding to the code of the considered character in the current code table is associated with the character to be encoded, and then this code table is updated according to a known procedure.

В процессе выполнения следующего подэтапа С346 выполняют деквантование блока MBq1 согласно обычной процедуре деквантования, представляет собой операцию обратную, процедуре квантования, выполненной на этапе С344. В результате получен блок MBDq1 деквантованных коэффициентов.In the process of executing the next sub-step C346, the MBq block 1 is dequantized according to the normal dequantization procedure, which is the reverse operation of the quantization procedure performed in step C344. The result is a block MBDq 1 of dequantized coefficients.

В процессе выполнения следующего подэтапа С347 выполняют обратное преобразование блока MBDq1 деквантованных коэффициентов, представляющее собой операцию обратную процедуре прямого преобразования, выполненной на этапе С343 выше. В результате получен декодированный остаточный блок MBDr1.During the next sub-step C347, the dequantized coefficient block MBDq 1 is inverted, which is the reverse of the forward transform procedure performed in step C343 above. As a result, a decoded residual block MBDr 1 is obtained.

В процессе выполнения следующего подэтапа С348 формируют декодированный блок MBD1 путем суммирования прогнозируемого блока MBp1 с декодированным остаточным блоком MBDr1. Следует отметить, что последний блок является таким же, как декодированный блок, полученный после завершения выполнения способа декодирования изображения IE, который был рассмотрен выше в настоящем описании. Декодированный блок MBD1 делают, таким образом, доступным для использования кодирующим модулем UCk или каким либо другим кодирующим модулем, составляющим часть заданного числа R кодирующих модулей.During the next sub-step C348, a decoded block MBD 1 is generated by summing the predicted block MBp 1 with the decoded residual block MBDr 1 . It should be noted that the last block is the same as the decoded block obtained after completion of the IE image decoding method discussed above in the present description. The decoded block MBD 1 is thus made available for use by the coding unit UCk or some other coding unit that is part of a given number R of coding units.

По завершении упомянутого выше этапа С34 кодирования модуль МСЕ или MCEk энтропийного кодирования, такой как показан на фиг. 3В, содержит все вероятности, такие, как вероятности, постоянно обновляемые совместно в процессе кодирования первого блока. Эти вероятности соответствуют разнообразным элементам возможных синтаксисов и различным ассоциированным контекстам кодирования.Upon completion of the above-mentioned encoding step C34, an entropy encoding unit MCE or MCEk, such as shown in FIG. 3B contains all probabilities, such as probabilities, continually updated together during the encoding of the first block. These probabilities correspond to various elements of possible syntaxes and various associated coding contexts.

После выполнения указанного выше этапа С34 кодирования проверяют в ходе этапа С35, является ли текущий блок j-м блоком той же самой строки, где j - представляет собой заданную величину, известную кодирующему устройству СО и равную по меньшей мере 1.After executing the above encoding step C34, it is checked in step C35 whether the current block is the jth block of the same row, where j - is a predetermined value known to the CO encoder and equal to at least 1.

Если это так, то в ходе выполнения этапа С36, представленного на фиг. 2В, множество вероятностей, вычисленных для j-блока, сохраняют в буферной памяти МТ в составе кодирующего устройства СО, такого как показано на фиг. 3А или 3В и на фиг. 4А или 4В, и размер указанной памяти адаптирован для сохранения вычисленного числа вероятностей.If so, then during the execution of step C36 shown in FIG. 2B, the set of probabilities computed for the j-block is stored in the buffer memory MT of an encoder CO such as shown in FIG. 3A or 3B and in FIG. 4A or 4B, and the size of said memory is adapted to store the computed number of probabilities.

В процессе выполнения этапа С37, представленного на фиг. 2В, кодирующий модуль UC или UCk проверяет, является ли текущий блок строки SEk, который был только что закодирован, последним блоком изображения IE. Такой этап выполняется также, если в процессе осуществления этапа С35 оказалось, что текущий блок не является j-м блоком строки SE1.During the execution of step C37 shown in FIG. 2B, the encoding unit UC or UCk checks whether the current block of the string SEk that has just been encoded is the last block of the image IE. Such a step is also performed if, during the execution of step C35, it turned out that the current block is not the jth block of row SE1.

Если оказалось, что текущий блок представляет собой последний блок изображения IE, на этапе С38 выполнение способа кодирования завершается.If it turns out that the current block is the last block of the IE image, in step C38, the execution of the encoding method is terminated.

Если текущий блок - не последний, на этапе С39 выбирают следующий блок MBi, подлежащий кодированию, в соответствии с порядком просмотра изображения, обозначенным стрелкой PS на фиг. 4А или 4В.If the current block is not the last one, in step C39, the next block MB i to be encoded is selected according to the picture viewing order indicated by the arrow PS in FIG. 4A or 4B.

В процессе выполнения этапа С40, представленного на фиг. 2В, определяют доступность предварительно кодированных и декодированных блоков, необходимых для кодирования текущего блока MBi.During the execution of step C40 shown in FIG. 2B determine the availability of pre-encoded and decoded blocks needed to encode the current block MB i .

Если происходит обработка первой строки SE1, этот этап состоит в проверке доступности по меньшей мере одного блока, расположенного слева от текущего блока MBi, подлежащего кодированию. Однако с учетом порядка PS просмотра изображения, выбранного в варианте, представленном на фиг. 4А и 4В, блоки в рассматриваемой строке SEk кодируют один за другим. Следовательно, всегда (за исключением обработки первого блока строки) имеется и доступен расположенный слева кодированный и декодированный блок. В примере, представленном на фиг. 4А или 4В, это блок, расположенный непосредственно слева рядом с текущим блоком, подлежащим кодированию.If the first row SE1 is being processed, this step consists in checking the availability of at least one block located to the left of the current block MB i to be encoded. However, considering the image viewing order PS selected in the embodiment shown in FIG. 4A and 4B, the blocks in the considered row SEk are encoded one after the other. Therefore, always (with the exception of the processing of the first block of the line) there is and is available the encoded and decoded block located on the left. In the example shown in FIG. 4A or 4B is the block immediately to the left of the current block to be encoded.

Если рассматривается строка SEk, отличная от первой строки, указанный этап проверки дополнительно содержит проверку, имеется ли заданное число N' блоков, расположенных в предыдущей строке SEk-1, например, два блока, находящихся соответственно сверху и сверху справа от текущего блока, и доступных для кодирования текущего блока, иными словами, если они уже были кодированы и затем декодированы посредством кодирующего модуля UC или UCk-1.If a row SEk other than the first row is considered, said step of checking further comprises checking if there are a given number N' of blocks located in the previous row SEk-1, for example, two blocks located respectively above and above to the right of the current block, and available to encode the current block, in other words, if they have already been encoded and then decoded by the UC or UCk-1 coding module.

Поскольку этот этап проверки замедляет работу способа кодирования, в альтернативном варианте настоящего изобретения, в котором кодирование строк осуществляется по параллельному типу, тактовый сигнал CLK, показанный на фиг. 3С, приспособлен для опережающей синхронизации кодирования блоков таким образом, чтобы гарантировать доступность двух блоков, расположенных соответственно сверху и сверху справа от текущего блока, не требуя обязательной проверки доступности этих двух блоков. Таким образом, кодирующий модуль UCk всегда начинает кодировать первый блок со сдвигом на заданное число N' (при, например, N'=2) кодированных и декодированных блоков предыдущей строки SEk-1, используемых для кодирования текущего блока. С программной точки зрения реализация такого тактового сигнала делает возможным значительно ускорить и сократить затраты времени на обработку блоков изображения IE в кодирующем устройстве СО.Since this verification step slows down the operation of the encoding method, in an alternative embodiment of the present invention in which string encoding is performed in a parallel manner, the clock signal CLK shown in FIG. 3C is adapted to advance block coding in such a way as to guarantee the availability of two blocks located respectively above and above to the right of the current block, without necessarily checking the availability of these two blocks. Thus, the coding module UCk always starts encoding the first block offset by a given number N' (for example, N'=2) of coded and decoded blocks of the previous line SEk-1 used to encode the current block. From a software point of view, the implementation of such a clock signal makes it possible to significantly speed up and reduce the processing time of image blocks IE in the CO encoder.

В процессе выполнения этапа С41, представленного на фиг. 2В, проверяют, является ли текущий блок первым блоком рассматриваемой строки SEk.During the execution of step C41 shown in FIG. 2B, it is checked whether the current block is the first block of the considered row SEk.

Если текущий блок - первый, в процессе выполнения этапа С42 считывают из буферной памяти МТ исключительно вероятности появления символов, вычисленные во время кодирования j-го блока предыдущей строки SEk-1.If the current block is the first block, in the process of executing step C42, only the symbol occurrence probabilities calculated at the time of encoding the j-th block of the previous row SEk-1 are read from the buffer memory MT.

Согласно первому варианту, представленному на фиг. 4А, j-й блок является первым блоком предыдущей строки SEk-1 (j=1). Такое считывание состоит в замене вероятностей в кодирующем устройстве по стандарту САВАС вероятностями, записанными в буферной памяти МТ. Процесс чтения, захватывающий соответствующие первые блоки второй, третьей и четвертой строк SE2, SE3 и SE4, показан на фиг. 4А тонкими стрелками.According to the first variant shown in FIG. 4A, the jth block is the first block of the previous row SEk-1 (j=1). Such reading consists in replacing the probabilities in the CABAC encoder with the probabilities stored in the buffer memory of the MT. The reading process capturing the respective first blocks of the second, third, and fourth rows SE2, SE3, and SE4 is shown in FIG. 4A with thin arrows.

Согласно второму варианту, упомянутого выше этапа С43, представленного на фиг. 4В, j-й блок является вторым блоком предыдущей строки SEk-1 (j=2). Такое считывание состоит в замене вероятностей в кодирующем устройстве по стандарту САВАС вероятностями, записанными в буферной памяти МТ. Процесс чтения, захватывающий соответствующие первые блоки второй, третьей и четвертой строк SE2, SE3 и SE4, показан на фиг. 4B тонкими штриховыми стрелками.According to the second variant of the above-mentioned step C43 shown in FIG. 4B, the jth block is the second block of the previous row SEk-1 (j=2). Such reading consists in replacing the probabilities in the CABAC encoder with the probabilities stored in the buffer memory of the MT. The reading process capturing the respective first blocks of the second, third, and fourth rows SE2, SE3, and SE4 is shown in FIG. 4B thin dashed arrows.

После этапа С42 текущий блок кодируют и затем декодируют путем повторения этапов с С34 по С38, описанных выше.After step C42, the current block is encoded and then decoded by repeating steps C34 to C38 described above.

Если после указанного выше этапа С41 оказалось, что текущий блок не является первым блоком рассматриваемой строки SEk, предпочтительно не считывать вероятности для ранее кодированного и декодированного блока, расположенного в той же самой строке SEk, иными словами кодированного и декодированного блока, расположенного (в представленном примере) непосредственно рядом слева от текущего блока. Действительно, при последовательном порядке PS просмотра блоков изображения для считывания блоков, расположенных в той же самой строке, как показано на фиг. 4А или 4В, вероятности появления символов, присутствующие в кодирующем устройстве, использующем алгоритм САВАС, в момент начала кодирования текущего блока являются точно теми, какие присутствуют после декодирования/декодирования предыдущего блока в той же самой строке.If, after step C41 above, it turns out that the current block is not the first block of the row SEk under consideration, it is preferable not to read the probabilities for the previously encoded and decoded block located in the same row SEk, in other words, the encoded and decoded block located (in the presented example ) immediately adjacent to the left of the current block. Indeed, in sequential viewing order PS of image blocks to read blocks located on the same line, as shown in FIG. 4A or 4B, the symbol occurrence probabilities present in an encoder using the CABAC algorithm at the start of encoding of the current block are exactly those present after the decoding/decoding of the previous block in the same line.

Затем, в процессе выполнения этапа С43, представленного на фиг. 2В, производят обучение вероятностям появления символов для энтропийного кодирования текущего блока, так что эти вероятности соответствуют исключительно тем, которые были вычислены для указанного предыдущего блока в той же самой строке, как показано двойными сплошными стрелками на фиг. 4А или 4В.Then, during the execution of step C43 shown in FIG. 2B, character occurrence probabilities for the entropy coding of the current block are trained so that these probabilities correspond exclusively to those calculated for the specified previous block in the same row, as indicated by the double solid arrows in FIG. 4A or 4B.

После этапа С43 текущий блок кодируют и затем декодируют путем повторения этапов с С34 по С38, описанных выше.After step C43, the current block is encoded and then decoded by repeating steps C34 to C38 described above.

После этого, в процессе выполнения этапа С44 проверяют, является ли текущий блок последним блоком рассматриваемой строки SEk.Thereafter, in the process of executing step C44, it is checked whether the current block is the last block of the considered row SEk.

Если текущий блок - не последний в этой строке, после этапа С44 снова выполняют этап С39 выбора следующего блока MBi, подлежащего кодированию.If the current block is not the last one in this line, after step C44, step C39 of selecting the next block MB i to be encoded is performed again.

Если текущий блок является последним блоком в рассматриваемой строке SEk, в процессе выполнения этапа С45 кодирующее устройство СО, представленное на фиг. 3А или 3С, осуществляет опустошение, как рассмотрено выше в настоящем описании. С этой целью кодирующий модуль UCk передает соответствующему модулю MGSFk генерации подпотока полностью все биты, которые были ассоциированы с символом(ами), считываемым(и) в процессе кодирования каждого блока рассматриваемой строки SEk, таким образом, что этот модуль MGSFk записывает в подпоток Fm данных, содержащий двоичную последовательность, представляющую кодированные блоки рассматриваемой строки SEk, все эти биты полностью. Такое опустошение символически обозначено на фиг. 4А и 4В треугольником в конце каждой строки SEk.If the current block is the last block in the considered row SEk, during step C45, the CO encoder shown in FIG. 3A or 3C performs an emptying as discussed above in the present description. To this end, the encoding module UCk transmits to the corresponding substream generation module MGSFk all the bits that were associated with the character(s) read(s) during the encoding of each block of the row SEk in question, such that this module MGSFk writes to the data substream Fm , containing a binary sequence representing the encoded blocks of the considered string SEk, all these bits in full. Such an emptying is symbolically indicated in FIG. 4A and 4B with a triangle at the end of each row SEk.

В процессе выполнения этапа С46 представленного на фиг. 2В, кодирующий модуль UC или UCk выполняет процедуру, идентичную указанному выше этапу С33, иными словами снова инициализирует интервальное представление вероятности появления символа, входящего в состав заданного множества символов. Такая повторная инициализация обозначена на фиг. 4А и 4В черной точкой в начале каждой строки SEk.During the execution of step C46 shown in FIG. 2B, the UC or UCk coding unit performs the same procedure as the above step C33, in other words, it initializes again the interval representation of the occurrence probability of a symbol included in the given symbol set. Such a re-initialization is indicated in FIG. 4A and 4B with a black dot at the beginning of each line SEk.

Преимущество выполнения этапов С45 и С46 на этом уровне кодирования состоит в том, что в процессе кодирования следующего блока, обрабатываемого кодирующим модулем UC или кодирующим модулем UCk, кодирующее устройство СО находится в инициализированном состоянии. Таким образом, как это будет рассмотрено далее в настоящем описании, для декодирующего модуля становится возможным работать параллельно, чтобы непосредственно декодировать сжатый поток F от этой точки, поскольку модулю достаточно для этого быть в инициализированном состоянии.The advantage of performing steps C45 and C46 at this coding level is that during the coding of the next block processed by the UC coding unit or the UC coding unit, the CO encoder is in an initialized state. Thus, as will be discussed later in the present description, it becomes possible for the decoding module to work in parallel to directly decode the compressed stream F from this point, since it is sufficient for the module to be in an initialized state to do so.

Подробное описание одного из вариантов декодирующей частиDetailed description of one of the variants of the decoding part

Теперь будет описан один из вариантов способа декодирования согласно настоящему изобретению, в котором этот способ декодирования реализован посредством программного обеспечения или аппаратным способом путем модификации декодера, первоначально совместимого со стандартом H.264/MPEG-4 AVC.One embodiment of the decoding method according to the present invention will now be described in which the decoding method is implemented by software or by hardware by modifying a decoder originally compatible with the H.264/MPEG-4 AVC standard.

Способ декодирования согласно настоящего изобретению представлен в форме алгоритма, содержащего этапы с D1 по D4 и показанного на фиг. 5А.The decoding method according to the present invention is presented in the form of an algorithm comprising steps D1 to D4 and shown in FIG. 5A.

Способ декодирования согласно рассматриваемому варианту настоящего изобретению реализован в декодирующем устройстве DO, представленном на фиг. 6А.The decoding method according to this embodiment of the present invention is implemented in the DO decoder shown in FIG. 6A.

Как показано на фиг. 5А, первый этап D1 декодирования представляет собой идентификацию в потоке F совокупности из L подпотоков F1, F2, …, Fm, …, FL, содержащих соответственно P подмножеств SE1, SE2, …, SEk, …, SEP предварительно кодированных блоков или макроблоков MB, как это изображено на фиг. 4А и 4В. С этой целью каждый подпоток Fm в составе потока F ассоциируют с индикатором, позволяющим декодеру DO определить местонахождение каждого подпотока Fm в потоке F. В качестве варианта, по завершении указанного выше этапа С3 кодирования, кодирующее устройство СО упорядочивает подпотоки F1, F2, …, Fm, …, FL в потоке F в соответствии с порядком, ожидаемым декодером DO, что позволяет избежать вставки индикаторов подпотоков в поток F. Такое предложение делает возможным уменьшение затрат с точки зрения скорости передачи данных в потоке F данных.As shown in FIG. 5A, the first decoding step D1 is the identification in stream F of a set of L substreams F1, F2, ..., Fm, ..., FL, respectively containing P subsets SE1, SE2, ..., SEk, ..., SEPs of precoded blocks or macroblocks MB, as shown in FIG. 4A and 4B. To this end, each substream Fm in stream F is associated with an indicator that allows the DO decoder to locate each substream Fm in stream F. Alternatively, upon completion of the above encoding step C3, the encoder CO arranges the substreams F1, F2, ..., Fm , ..., FL in stream F according to the order expected by the DO decoder, thus avoiding the insertion of substream indicators in stream F. Such a proposal makes it possible to reduce costs in terms of data rate in data stream F.

В примере, представленном на фиг. 4А или 4В, указанные блоки MB обладают квадратной формой и все имеют одинаковый размер. В зависимости от размера изображения, который необязательно кратен размеру блоков, последние блоки слева и последние блоки внизу изображения могут не быть квадратными. В альтернативном варианте блоки, например, могут быть прямоугольной формы и/или могут быть не совмещены один с другим.In the example shown in FIG. 4A or 4B, said MBs are square in shape and all have the same size. Depending on the size of the image, which is not necessarily a multiple of the size of the blocks, the last blocks on the left and the last blocks on the bottom of the image may not be square. Alternatively, the blocks, for example, may be rectangular in shape and/or may not be aligned with one another.

Каждый блок или макроблок может далее сам быть разбит на субблоки, которые сами могут быть разбиты на части.Each block or macroblock may itself be further sub-blocked, which may themselves be sub-blocked.

Такая идентификация осуществляется посредством модуля EXDO выделения потоков, такого, как представлен на фиг. 6А.This identification is done by a stream allocation module EXDO, such as shown in FIG. 6A.

В примере, показанном на фиг. 4А или 4В, заданное число P равно 6, но для большей ясности чертежа изображены только четыре подмножества SE1, SE2, SE3 и SE4.In the example shown in FIG. 4A or 4B, the predetermined number P is 6, but for the sake of clarity of the drawing, only four subsets SE1, SE2, SE3 and SE4 are shown.

Как показано на фиг. 5А, второй этап D2 декодирования состоит в декодировании каждого из подмножеств блоков SE1, SE2, SE3 и SE4, так что блоки из состава любого рассматриваемого подмножества декодируют в соответствии с заданным последовательным порядком PS прохождения через эти блоки. В примере, представленном на фиг. 4А или 4В, блоки текущего подмножества SEk (1≤k≤Р) декодируют один за другим слева направо, как показано стрелкой PS. По завершении этапа D2 получают декодированные подмножества блоков SED1, SED2, SED3, …, SEDk, …, SEDP.As shown in FIG. 5A, the second decoding step D2 consists of decoding each of the subsets of blocks SE1, SE2, SE3, and SE4 such that blocks from any subset under consideration are decoded in accordance with a predetermined sequential order PS of passing through these blocks. In the example shown in FIG. 4A or 4B, the blocks of the current subset SEk (1≤k≤P) are decoded one after the other from left to right, as indicated by the arrow PS. Upon completion of step D2, decoded subsets of blocks SED1, SED2, SED3, ..., SEDk, ..., SEDP are obtained.

Такое декодирование может быть последовательного типа и, следовательно, может быть произведено посредством единственного декодирующего модуля.Such decoding may be of the serial type and therefore may be performed by a single decoding module.

Однако для создания возможности использовать преимущества архитектуры декодирования, содержащей несколько платформ, декодирование подмножеств блоков представляет собой декодирование параллельного типа и реализуется посредством нескольких R декодирующих модулей UDk (1≤k≤R), например, при R=4, как это представлено на фиг. 6А. Это предложение, таким образом, позволяет значительно ускорить выполнение способа декодирования. Согласно известным технологиям декодирующее устройство DO содержит буферную память МТ, адаптированную для хранения вероятностей появления символов, постоянно обновляемых совместно в процессе декодирования текущего блока.However, in order to be able to take advantage of the multi-platform decoding architecture, block subset decoding is parallel type decoding and is implemented by multiple R decoding units UDk (1≤k≤R), for example, with R=4 as shown in FIG. 6A. This proposal thus makes it possible to significantly speed up the execution of the decoding method. According to prior art, the DO decoder includes a buffer memory MT adapted to store the occurrence probabilities of symbols continuously updated together during the decoding of the current block.

Как показано более подробно на фиг. 6В, каждый из декодирующих модулей UDk содержит:As shown in more detail in FIG. 6B, each of the UDk decoding modules contains:

• модуль для энтропийного декодирования текущего блока посредством обучения по меньшей мере одной вероятности появления символа, вычисленной по меньшей мере для одного ранее декодированного блока, обозначенный MDEk;• a module for entropy decoding the current block by learning at least one symbol occurrence probability calculated for at least one previously decoded block, denoted MDEk;

• модуль для декодирования с прогнозированием применительно к текущему блоку с учетом указанного ранее декодированного блока, обозначенный MDPk.• a module for predictive decoding on the current block given the previously decoded block indicated, denoted MDPk.

Модуль SUDPk кодирования с прогнозированием способен осуществлять декодирование с прогнозированием применительно к текущему блоку в соответствии с обычными способами прогнозирования, такого как, например, режим внутрикадрового и/или межкадрового прогнозирования.The predictive coding unit SUDPk is capable of performing predictive decoding on the current block in accordance with conventional prediction methods such as, for example, intra-prediction mode and/or inter-prediction mode.

Указанный модуль MDEk энтропийного декодирования представляет собой модуль стандарта САВАС, но модифицированный согласно настоящему изобретению, как это будет рассмотрено далее в этом описании.This entropy decoding module MDEk is a CABAC module, but modified according to the present invention, as will be discussed later in this description.

В качестве варианта, указанный модуль MDEk энтропийного декодирования может представлять собой известное декодирующее устройство для кода Хаффмена.Alternatively, said entropy decoding module MDEk may be a known decoder for the Huffman code.

В примере, представленном на фиг. 4А или 4В, первый модуль UD1 декодирует блоки первой строки SE1 слева направо. После достижения последнего блока в первой строке SE1 этот модуль переходит к первому блоку (n+1)-й строки, здесь это 5-я строка, и т.д. Второй модуль UD2 декодирует блоки второй строки SE2 слева направо. После достижения последнего блока во второй строке SE2 этот модуль переходит к первому блоку (n+2)-й строки, здесь это 6-я строка, и т.д. Такой просмотр повторяется вплоть до модуля UD4, который декодирует блоки четвертой строки SE2 слева направо. После достижения последнего блока в первой строке модуль переходит к первому блоку (n+4)-й строки, здесь это 8-я строка, и т.д. и т.п.пока не будет декодирован последний блок последнего идентифицированного потока.In the example shown in FIG. 4A or 4B, the first module UD1 decodes the blocks of the first row SE1 from left to right. After reaching the last block in the first row of SE1, this module jumps to the first block of the (n+1)th row, here it is the 5th row, and so on. The second module UD2 decodes the blocks of the second row SE2 from left to right. After reaching the last block in the second row of SE2, this module jumps to the first block of the (n+2)th row, here it is the 6th row, and so on. This scan is repeated up to the UD4 module, which decodes the blocks of the fourth row of SE2 from left to right. After reaching the last block in the first row, the module jumps to the first block of the (n+4)th row, here it is the 8th row, and so on. and so on until the last block of the last identified stream is decoded.

Безусловно, возможны и другие варианты просмотра изображения, отличные от того варианта, который был только что описан выше. Например, каждый декодирующий модуль может обрабатывать не вложенные строки, как было рассмотрено выше, а вложенные столбцы. Можно также просматривать строки или столбцы в любом направлении.Of course, other options for viewing an image are possible, other than the option that was just described above. For example, each decoding module may not process nested rows, as discussed above, but nested columns. You can also view rows or columns in either direction.

Как показано на фиг. 5А, третий этап D3 кодирования состоит в реконструкции декодированного изображения ID на основе каждого декодированного подмножества SED1, SED2, …, SEDk, …, SEDP, полученного на этапе D2 декодирования. Более точно, декодированные блоки каждого декодированного подмножества SED1, SED2, …, SEDk, …, SEDP передают в модуль URT реконструкции изображения, как представлено на фиг. 6А. В процессе выполнения этапа D3 модуль UR1 записывает декодированные блоки в состав декодированного изображения по мере того, как эти блоки становятся доступными.As shown in FIG. 5A, the third encoding step D3 is to reconstruct a decoded ID picture based on each decoded subset SED1, SED2, ..., SEDk, ..., SEDP obtained in decoding step D2. More specifically, the decoded blocks of each decoded subset SED1, SED2, ..., SEDk, ..., SEDP are transmitted to the image reconstruction module URT, as shown in FIG. 6A. During step D3, the UR1 writes the decoded blocks into the decoded picture as these blocks become available.

В процессе выполнения четвертого этапа D4 декодирования, представленного на фиг. 5А, модуль URI показанный на фиг. 6А, передает на выход полностью декодированное изображение ID.During the fourth decoding step D4 shown in FIG. 5A, the URI module shown in FIG. 6A outputs the fully decoded ID picture.

Различные специфичные подэтапы настоящего изобретения, такие как реализуемые в ходе указанного выше этапа D2 параллельного декодирования в декодирующем модуле UDk, будут теперь описаны со ссылками на фиг. 5В.Various specific sub-steps of the present invention, such as those implemented in the above-mentioned parallel decoding step D2 in the UDk decoding module, will now be described with reference to FIG. 5V.

В процессе выполнения этапа D21 декодирующий модуль UDk выбирает в качестве текущего блока первый блок, подлежащий декодированию, в текущей строке SEk, представленной на фиг. 4А или 4В.In the process of executing step D21, the decoding unit UDk selects the first block to be decoded in the current row SEk shown in FIG. 4A or 4B.

В процессе выполнения этапа D22 декодирующий модуль UDk проверяет, является ли текущий блок первым блоком декодированного изображения, в этом примере первым блоком подпотока F1.During step D22, the decoding module UDk checks if the current block is the first block of the decoded picture, in this example the first block of substream F1.

Если это так, в процессе выполнения этапа D23 модуль MDE или MDEk энтропийного декодирования осуществляет инициализацию своих переменных состояния. Согласно представленному примеру, этот этап содержит инициализацию интервала, представляющего вероятность появления одного из символов из совокупности, составляющей заданное множество символов.If so, during step D23, the entropy decoding module MDE or MDEk initializes its state variables. According to the presented example, this step comprises initializing an interval representing the probability of occurrence of one of the symbols from the population constituting the given set of symbols.

В качестве варианта, если используемый способ энтропийного декодирования представляет собой способ декодирования LZW, инициализируется кодовая таблица строк символов, так что эта таблица содержит все возможные символы по одному и только по одному разу. Этап D23 идентичен указанному выше этапу С33 кодирования и потому далее описан не будет.Alternatively, if the entropy decoding method used is an LZW decoding method, the character string encoding table is initialized such that the table contains all possible characters one and only one time. Step D23 is identical to the above encoding step C33 and therefore will not be described further.

Если после указанного выше этапа D22 оказалось, что текущий блок не является первым блоком декодированного изображения ID, определяют на этапе D30, который будет рассмотрен в настоящем описании позднее, наличие и доступность необходимых ранее декодированных блоков.If, after step D22 above, it appears that the current block is not the first block of the decoded ID picture, the presence and availability of the required previously decoded blocks is determined in step D30, which will be discussed later in this description.

В процессе выполнения этапа D24 декодируют первый текущий блок МВ1 первой строки SE1, представленной на фиг. 4А или 4В. Такой этап D24 содержит несколько подэтапов с D241 по D246, которые будут описаны ниже.In step D24, the first current block MB1 of the first row SE1 shown in FIG. 4A or 4B. Such step D24 contains several sub-steps D241 to D246, which will be described below.

В процессе выполнения первого подэтапа D241 осуществляют энтропийное декодирование синтаксических элементов, относящихся к текущему блоку. Такой этап содержит главным образом:During the execution of the first sub-step D241, the syntax elements related to the current block are entropy decoded. This stage contains mainly:

a) считывание битов из подпотока, ассоциированного с первой строкой SE1;a) reading bits from the substream associated with the first row of SE1;

b) реконструкцию символов на основе прочитанных битов.b) symbol reconstruction based on the read bits.

В указанном выше варианте, в котором в качестве алгоритма декодирования использован алгоритм декодирования LZW, считывают цифровой сегмент информации, соответствующий коду символа, подлежащего кодированию, из текущей кодовой таблицы, реконструируют символ на основе прочитанного кода и затем обновляют эту кодовую таблицу согласно известной процедуре.In the above embodiment, in which the LZW decoding algorithm is used as the decoding algorithm, the digital information segment corresponding to the code of the character to be encoded is read from the current code table, the character is reconstructed based on the read code, and then this code table is updated according to a known procedure.

Более точно, синтаксические элементы, связанные с текущим блоком, декодируют посредством использующего алгоритм САВАС модуля MDE1 энтропийного декодирования, такого, как представлено на фиг. 6В. Последний декодирует подпоток F1 битов из состава сжатого файла для получения синтаксических элементов и в то же самое время заново обновляет вероятности таким способом, чтобы в момент, когда модуль декодирует какой-либо символ, вероятности появления этого символа были идентичны вероятностям, получаемым в процессе кодирования этого же самого символа на указанном выше этапе С345 энтропийного кодирования.More specifically, the syntax elements associated with the current block are decoded by an entropy decoding module using the CABAC algorithm MDE1, such as shown in FIG. 6B. The latter decodes the substream F1 of bits from the compressed file to obtain syntax elements and at the same time re-updates the probabilities in such a way that at the moment the module decodes a character, the probabilities of occurrence of this character are identical to the probabilities obtained in the process of encoding this the same character in the entropy encoding step C345 above.

В ходе выполнения подэтапа D242 осуществляют декодирование с прогнозированием применительно к текущему блоку МВ1 посредством известного способа внутрикадрового и/или межкадрового прогнозирования, согласно которому блок MB1 прогнозируют относительно по меньшей мере одного ранее декодированного блока.During sub-step D242, predictive decoding is performed on the current block MB1 by a known intra-frame and/or inter-frame prediction method, in which MB1 is predicted with respect to at least one previously decoded block.

Само собой разумеется, что возможны также другие режимы внутрикадрового прогнозирования, такие как режимы, предлагаемые в стандарте Н.264.It goes without saying that other intra prediction modes are also possible, such as those offered in the H.264 standard.

В процессе выполнения этого этапа декодирование с прогнозированием осуществляется с помощью синтаксических элементов, декодированных на предыдущем этапе и содержащих, в частности, указание типа прогнозирования (межкадровое или внутрикадровое) и, если это подходит, режима внутрикадрового прогнозирования, типа разбиения блока или макроблока, если последний был разбит, индекса опорного изображения и вектора смещения, используемого в режиме межкадрового прогнозирования.During this step, predictive decoding is performed using the syntax elements decoded in the previous step and containing, in particular, an indication of the type of prediction (inter-frame or intra-frame) and, if appropriate, the intra-frame prediction mode, the type of block split or macroblock, if the latter was split, the reference picture index, and the offset vector used in the inter prediction mode.

Упомянутый выше этап декодирования с прогнозированием делает возможным построение прогнозированного блока МВр1.The predictive decoding step mentioned above makes it possible to construct a predictive block TBP 1 .

В процессе выполнения следующего подэтапа D243 формируют квантованный остаточный блок MBq1 с помощью ранее декодированных синтаксических элементов.During the next sub-step D243, a quantized residual block MBq 1 is generated using the previously decoded syntax elements.

В процессе выполнения следующего подэтапа D244 осуществляют деквантование квантованного остаточного блока MBq1 согласно обычной процедуре деквантования, представляющей собой операцию обратную, процедуре квантования, выполненной на этапе С344, для получения декодированного деквантованного блока MBDt1.In the next sub-step D244, the quantized residual block MBq 1 is dequantized according to the conventional dequantization procedure, which is the reverse of the quantization procedure performed in step C344, to obtain a decoded dequantized block MBDt 1 .

В процессе выполнения следующего подэтапа D245 осуществляют обратное преобразование деквантованного блока MBDt1, представляющее собой операцию обратную процедуре прямого преобразования, выполненной на этапе С343 выше. В результате получают декодированный остаточный блок MBDr1.During the next sub-step D245, the dequantized block MBDt 1 is de-mapped, which is the reverse of the forward transform procedure performed in step C343 above. As a result, a decoded residual block MBDr 1 is obtained.

В процессе выполнения следующего подэтапа D246 формируют декодированный блок MBD1 путем суммирования прогнозируемого блока MBp1 с декодированным остаточным блоком MBDr1. Декодированный блок MBD1 делают, таким образом, доступным для использования декодирующим модулем UD1 или каким-либо другим декодирующим модулем, составляющим часть заданного числа N декодирующих модулей.During the next sub-step D246, a decoded block MBD 1 is generated by summing the predicted block MBp 1 with the decoded residual block MBDr 1 . The decoded block MBD 1 is thus made available for use by the decoding module UD1 or some other decoding module that is part of a given number N of decoding modules.

По завершении упомянутого выше этапа D246 декодирования модуль MDE1 энтропийного декодирования, такой как показан на фиг. 6В, содержит все вероятности, такие как постоянно обновляемые совместно в процессе декодирования первого блока. Эти вероятности соответствуют разнообразным элементам возможных синтаксисов и различным ассоциированным контекстам декодирования.Upon completion of the above decoding step D246, an entropy decoding unit MDE1 such as shown in FIG. 6B contains all the probabilities, such as those continuously updated together during the decoding process of the first block. These probabilities correspond to various elements of possible syntaxes and various associated decoding contexts.

После выполнения указанного выше этапа D24 декодирования проверяют в ходе этапа D25, является ли текущий блок j-м блоком той же самой строки, где j представляет собой заданную величину, известную декодеру DO и равную по меньшей мере 1.After performing the above decoding step D24, it is checked in step D25 whether the current block is the jth block of the same row, where j is a predetermined value known to the DO decoder and equal to at least 1.

Если это так, то в ходе выполнения этапа D26, множество вероятностей, вычисленных для j-блока, сохраняют в буферной памяти МТ в составе декодера DO, такого как показано на фиг. 6А и на фиг. 4А или 4В, при этом размер указанной памяти адаптирован для сохранения вычисленного числа вероятностей.If so, during step D26, the set of probabilities computed for the j-block is stored in the buffer memory MT of a DO decoder such as shown in FIG. 6A and in FIG. 4A or 4B, the size of said memory being adapted to store the computed number of probabilities.

В процессе выполнения этапа D27 декодирующий модуль UDk проверяет, является ли текущий блок, только что декодированный, последним блоком последнего подпотока.During step D27, the decoding module UDk checks whether the current block just decoded is the last block of the last substream.

Если это так, то в ходе этапа D28 выполнение способа декодирования завершается.If so, then in step D28, the execution of the decoding method is terminated.

Если текущий блок - не последний, на этапе D29 выбирают следующий блок MBi, подлежащий декодированию, в соответствии с порядком просмотра изображения, обозначенным стрелкой PS на фиг. 4А или 4В.If the current block is not the last one, in step D29, the next block MB i to be decoded is selected according to the picture viewing order indicated by the arrow PS in FIG. 4A or 4B.

Если в ходе указанного выше этапа D25 оказалось, что текущий блок не является j-м блоком рассматриваемой строки SEDk, выполняют рассмотренный выше этап D27.If, during the above step D25, it turned out that the current block is not the jth block of the SEDk line in question, the above step D27 is performed.

В процессе выполнения этапа D30, следующего за рассмотренным выше этапом D29, определяют доступность предварительно декодированных блоков, необходимых для декодирования текущего блока MBi. Если учесть тот факт, что эта процедура использует параллельное декодирование блоков разными декодирующими модулями UDk, может случиться, что эти блоки еще не были декодированы посредством декодирующего модуля, назначенного для декодирования этих блоков, и поэтому эти блоки пока еще недоступны. Указанный этап проверки состоит в проверке, имеется ли заданное число N' блоков, расположенных в предыдущей строке SEk-1, например, два блока, находящихся соответственно сверху и сверху справа от текущего блока, и доступных для декодирования текущего блока, иными словами, если они уже были декодированы посредством декодирующего модуля UDk-1, назначенного для их декодирования. Этот этап проверки состоит также в проверке доступности по меньшей мере одного блока, расположенного слева от текущего блока MBi, подлежащего декодированию. Однако с учетом порядка PS просмотра изображения, выбранного в варианте, представленном на фиг. 4А или 4В, блоки в рассматриваемой строке SEk декодируют один за другим. Следовательно, всегда (за исключением обработки первого блока строки) имеется и доступен расположенный слева декодированный блок. В примере, представленном на фиг. 4А или 4В, это блок, расположенный слева непосредственно рядом с текущим блоком, подлежащим декодированию. С этой целью проверяют доступность только этих двух блоков, расположенных соответственно сверху и сверху справа от текущего блока.During step D30 following step D29 discussed above, the availability of pre-decoded blocks needed to decode the current block MB i is determined. Given the fact that this procedure uses parallel decoding of blocks by different UDk decoding modules, it may happen that these blocks have not yet been decoded by the decoding module assigned to decode these blocks, and therefore these blocks are not yet available. Said verification step is to check whether there are a given number N' of blocks located in the previous row SEk-1, for example, two blocks located respectively above and above to the right of the current block, and available for decoding of the current block, in other words, if they have already been decoded by the UDk-1 decoding module assigned to decode them. This verification step also consists in checking the availability of at least one block located to the left of the current block MB i to be decoded. However, considering the image viewing order PS selected in the embodiment shown in FIG. 4A or 4B, the blocks in the considered row SEk are decoded one by one. Therefore, always (with the exception of the processing of the first block of the line) there is and is available the decoded block located on the left. In the example shown in FIG. 4A or 4B is the block located on the left immediately adjacent to the current block to be decoded. For this purpose, the availability of only these two blocks located respectively above and above to the right of the current block is checked.

Поскольку этот этап проверки замедляет работу способа декодирования, в альтернативном варианте настоящего изобретения тактовый сигнал CLK, показанный на фиг. 6А, приспособлен для опережающей синхронизации декодирования блоков таким образом, чтобы гарантировать доступность двух блоков, расположенных соответственно сверху и сверху справа от текущего блока, не требуя обязательной проверки доступности этих двух блоков. Таким образом, как показано на фиг. 4А или 4В, декодирующий модуль UDk всегда начинает декодировать первый блок со сдвигом на заданное число N' (здесь, N'=2) декодированных блоков предыдущей строки SEk-1, используемых для декодирования текущего блока. С программной точки зрения реализация такого тактового сигнала делает возможным значительно ускорить и сократить затраты времени на обработку блоков каждого подмножества SEk в декодере DO.Since this verification step slows down the operation of the decoding method, in an alternative embodiment of the present invention, the clock signal CLK shown in FIG. 6A is adapted to advance the decoding of the blocks in such a way as to guarantee the availability of two blocks located respectively above and above to the right of the current block, without necessarily checking the availability of these two blocks. Thus, as shown in FIG. 4A or 4B, the decoding module UDk always starts decoding the first block offset by a given number N' (here, N'=2) of decoded blocks of the previous line SEk-1 used to decode the current block. From a software point of view, the implementation of such a clock signal makes it possible to significantly speed up and reduce the time spent on processing the blocks of each SEk subset in the DO decoder.

В процессе выполнения этапа D31 проверяют, является ли текущий блок первым блоком рассматриваемой строки SEk.In the process of step D31, it is checked whether the current block is the first block of the considered row SEk.

Если текущий блок - первый, в процессе выполнения этапа D32 считывают из буферной памяти МТ исключительно вероятности появления символов, вычисленные во время декодирования j-го блока предыдущей строки SEk-1.If the current block is the first block, in the process of executing step D32, only the symbol occurrence probabilities calculated at the time of decoding the j-th block of the previous row SEk-1 are read from the buffer memory MT.

Согласно первому варианту, представленному на фиг. 4А, j-й блок является первым блоком предыдущей строки SEk-1 (j=1). Такое считывание состоит в замене вероятностей в декодере по стандарту САВАС вероятностями, записанными в буферной памяти МТ. Процесс чтения, захватывающий соответствующие первые блоки второй, третьей и четвертой строк SE2, SE3 и SE4, показан на фиг. 4А тонкими стрелками.According to the first variant shown in FIG. 4A, the jth block is the first block of the previous row SEk-1 (j=1). Such reading consists in replacing the probabilities in the CABAC decoder with the probabilities stored in the buffer memory of the MT. The reading process capturing the respective first blocks of the second, third, and fourth rows SE2, SE3, and SE4 is shown in FIG. 4A with thin arrows.

Согласно второму варианту упомянутого выше этапа D32, представленного на фиг. 4В, j-й блок является вторым блоком предыдущей строки SEk-1 (j=2). Такое считывание состоит в замене вероятностей в декодере по стандарту САВАС вероятностями, записанными в буферной памяти MT. Процесс чтения захватывающий соответствующие первые блоки второй, третьей и четвертой строк SE2, SE3 и SE4, показан на фиг. 4В тонкими штриховыми стрелками.According to the second variant of the above step D32 shown in FIG. 4B, the jth block is the second block of the previous row SEk-1 (j=2). This read consists of replacing the probabilities in the CABAC decoder with the probabilities stored in the buffer memory MT. The reading process capturing the respective first blocks of the second, third and fourth rows SE2, SE3 and SE4 is shown in FIG. 4B thin dashed arrows.

После выполнения этапа D32 текущий блок декодируют путем повторения этапов с D24 по D28, описанных выше.After step D32 is executed, the current block is decoded by repeating steps D24 to D28 described above.

Если после указанного выше этапа D31 оказалось, что текущий блок не является первым блоком рассматриваемой строки SEk, предпочтительно не считывать вероятности для ранее декодированного блока, расположенного в той же самой строке SEk, иными словами декодированного блока, расположенного (в представленном примере) слева непосредственно рядом от текущего блока. Действительно, при последовательном порядке PS просмотра для считывания блоков, расположенных в той же самой строке, как показано на фиг. 4А или 4В, вероятности появления символов, присутствующие в декодере, использующем алгоритм САВАС, в момент начала декодирования текущего блока являются точно теми же, какие присутствуют после декодирования предыдущего блока в той же самой строке.If, after step D31 above, it appears that the current block is not the first block of the row SEk under consideration, it is preferable not to read the probabilities for the previously decoded block located on the same row SEk, in other words the decoded block located (in the example shown) on the left immediately adjacent from the current block. Indeed, in sequential PS lookup order for reading blocks located on the same line, as shown in FIG. 4A or 4B, the symbol occurrence probabilities present in a decoder using the CABAC algorithm at the start of decoding the current block are exactly the same as those present after decoding the previous block in the same row.

Затем, в процессе выполнения этапа D33 производят обучение вероятностям появления символов для энтропийного декодирования текущего блока, так что эти вероятности соответствуют исключительно тем, которые были вычислены для указанного предыдущего блока в той же самой строке, как показано двойными сплошными стрелками на фиг. 4А или 4В.Then, during step D33, the probabilities of occurrence of symbols for entropy decoding of the current block are trained so that these probabilities correspond exclusively to those calculated for the specified previous block in the same row, as shown by the double solid arrows in FIG. 4A or 4B.

После этапа D33 текущий блок декодируют путем повторения этапов с D24 по D28, описанных выше.After step D33, the current block is decoded by repeating steps D24 to D28 described above.

В процессе выполнения этапа D34 проверяют, является ли текущий блок последним блоком рассматриваемой строки SEk.During step D34, it is checked whether the current block is the last block of the row SEk under consideration.

Если текущий блок - не последний в этой строке, после этапа D34 снова выполняют этап D29 выбора следующего блока MBi, подлежащего декодированию.If the current block is not the last one in this line, after step D34, step D29 of selecting the next block MB i to be decoded is performed again.

Если текущий блок является последним блоком рассматриваемой строки SEk, в процессе выполнения этапа D35 декодирующий модуль UDk выполняет процедуру, идентичную указанному выше этапу D23, иными словами снова инициализирует интервальное представление вероятности появления символа, входящего в состав заданного множества символов. Такая повторная инициализация обозначена на фиг. 4А и 4В черной точкой в начале каждой строки SEk.If the current block is the last block of the considered string SEk, in step D35, the decoding module UDk performs the procedure identical to the above step D23, in other words, initializes the interval representation of the occurrence probability of a character within the given character set again. Such a re-initialization is indicated in FIG. 4A and 4B with a black dot at the beginning of each line SEk.

Таким образом, в начале каждой строки декодер DO находится в инициализированном состоянии, что обеспечивает более высокую степень гибкости с точки зрения выбора уровня параллелизма при декодировании и оптимизации затрат времени на обработку данных при декодировании.Thus, at the beginning of each line, the DO decoder is in an initialized state, which provides a higher degree of flexibility in terms of choosing the level of parallelism during decoding and optimizing the time spent on data processing during decoding.

В примере схемы кодирования/декодирования, представленном на фиг. 7А, кодирующее устройство СО содержит единственный кодирующий модуль UC, как показано на фиг. 3А, тогда как декодер DO содержит шесть декодирующих модулей.In the example encoding/decoding scheme shown in FIG. 7A, the CO encoder includes a single UC encoder as shown in FIG. 3A, while the DO decoder contains six decoding modules.

Кодирующий модуль UC последовательно кодирует строки SE1, SE2, SE3, SE4, SE5 и SE6. В представленном примере строки с SE1 по SE4 закодированы полностью, строка SE5 находится в стадии кодирования, а строка SE6 еще не была кодирована. С учетом последовательного характера кодирования кодирующий модуль UC приспособлен для передачи потока F, содержащего подпотоки F1, F2, F3, F4, упорядоченные один за другим в том же порядке, в котором происходило кодирование строк SE1, SE2, SE3 и SE4. С этой целью подпотоки F1, F2, F3 и F4 символически обозначены с такой же штриховкой, как и соответствующие кодированные строки SE1, SE2, SE3 и SE4. Благодаря выполнению этапов опустошения в конце кодирования каждой кодированной строки и повторной инициализации интервала вероятностей в начале кодирования или декодирования следующей строки, подлежащей кодированию/декодированию, декодер DO каждый раз, когда он считывает подпоток, чтобы декодировать его, находится в инициализированном состоянии и может, поэтому, оптимальным образом декодировать параллельно четыре подпотока F1, F2, F3, F4 с использованием декодирующих модулей UD1, UD2, UD3 и UD4, которые могут быть, например, установлены на четырех разных платформах.The encoding unit UC encodes the lines SE1, SE2, SE3, SE4, SE5 and SE6 in sequence. In the example shown, strings SE1 to SE4 are fully encoded, string SE5 is being coded, and string SE6 has not yet been encoded. Given the sequential nature of the encoding, the encoding module UC is adapted to transmit a stream F containing substreams F1, F2, F3, F4, ordered one after the other in the same order in which the encoding of the lines SE1, SE2, SE3 and SE4 occurred. To this end, the substreams F1, F2, F3 and F4 are symbolically indicated with the same hatching as the corresponding code lines SE1, SE2, SE3 and SE4. By performing the emptying steps at the end of the encoding of each encoded line and reinitializing the probability interval at the beginning of encoding or decoding the next line to be encoded/decoded, the DO decoder each time it reads a substream to decode it is in an initialized state and can therefore , optimally decode four substreams F1, F2, F3, F4 in parallel using decoding modules UD1, UD2, UD3 and UD4, which can be installed on four different platforms, for example.

В примере схемы кодирования/декодирования, представленном на фиг. 7В, кодирующее устройство СО содержит два кодирующих модуля UC1 и UC2, как показано на фиг. 3С, тогда как декодер DO содержит шесть декодирующих модулей.In the example encoding/decoding scheme shown in FIG. 7B, the CO encoder includes two encoders UC1 and UC2 as shown in FIG. 3C, while the DO decoder contains six decoding modules.

Кодирующий модуль UC1 последовательно кодирует строки с нечетными номерами SE1, SE3 и SE5, тогда как кодирующий модуль UC2 последовательно кодирует строки с четными номерами SE2, SE4 и SE6. Для этого строки SE1, SE3 и SE5 имеют белый фон, а строки SE2, SE4 и SE6 имеют фон, заполненный точками. В представленном примере строки с SE1 по SE4 закодированы полностью, строка SE5 находится в стадии кодирования, а строка SE6 еще не была кодирована. Учитывая тот факт, что выполняемое кодирование является кодированием параллельного типа уровня 2, кодирующий модуль UC1 адаптирован для передачи подпотока F2n+1, разложенного на две части F1 и F3, полученные после кодирования соответственно строк SE1 и SE3, тогда как кодирующий модуль UC2 адаптирован для передачи подпотока F2n, разложенного на две части F2 и F4, полученные после кодирования соответственно строк SE2 и SE4. Кодирующее устройство СО поэтому предназначено для передачи декодеру DO потока F, содержащего результат наложения двух подпотоков F2n+1 и F2n, вследствие чего порядок следования подпотоков F1, F3, F2, F4 отличается от того, что показано на фиг. 7А. С этой целью подпотоки F1, F2, F3 и F4 символически обозначены с такой же штриховкой, как и соответствующие кодированные строки SE1, SE2, SE3 и SE4, подпотоки F1 и F3 имеют белый фон (кодирование строк с нечетными номерами), а подпотоки F2 и F4 имеют точечный фон (кодирование строк с четными номерами).Encoding module UC1 sequentially encodes odd-numbered lines SE1, SE3 and SE5, while encoder UC2 sequentially encodes even-numbered lines SE2, SE4 and SE6. To do this, lines SE1, SE3 and SE5 have a white background, and lines SE2, SE4 and SE6 have a background filled with dots. In the example shown, strings SE1 to SE4 are fully encoded, string SE5 is being coded, and string SE6 has not yet been encoded. Considering the fact that the encoding to be performed is layer 2 parallel type encoding, the UC1 encoding unit is adapted to transmit the substream F 2n+1 decomposed into two parts F1 and F3 obtained after encoding the rows SE1 and SE3, respectively, while the UC2 encoding unit is adapted to transmission of the substream F 2n , decomposed into two parts F2 and F4, obtained after encoding the lines SE2 and SE4, respectively. The encoder CO is therefore intended to send to the decoder DO a stream F containing the superposition result of the two substreams F 2n+1 and F 2n , whereby the order of the substreams F1, F3, F2, F4 is different from that shown in FIG. 7A. To this end, the substreams F1, F2, F3 and F4 are symbolically denoted with the same hatching as the corresponding encoded lines SE1, SE2, SE3 and SE4, the substreams F1 and F3 have a white background (coding of odd-numbered lines), and the substreams F2 and F4 have a dotted background (encoding even-numbered lines).

Что касается преимуществ, отмеченных в связи с фиг. 7А, такая схема кодирования/декодирования дополнительно предоставляет преимущества способности использовать декодер, уровень параллелизма при декодировании в котором полностью независим от уровня параллелизма при кодировании, что делает возможным в еще большей степени оптимизировать работу кодирующего устройства/декодера.With regard to the advantages noted in connection with FIG. 7A, such an encoding/decoding scheme further provides the advantage of being able to use a decoder in which the decoding parallelism level is completely independent of the encoding parallelism level, making it possible to further optimize the operation of the encoder/decoder.

Claims (7)

Устройство декодирования, содержащее:A decoding device, comprising: долговременный читаемый компьютером носитель, причем читаемый компьютером носитель хранит поток битов, причем поток битов включает в себя данные, представляющие:a durable computer-readable medium, the computer-readable medium storing a bit stream, the bit stream including data representing: множество строк последовательных блоков квантованных коэффициентов преобразованных остаточных значений кодированного изображения;a plurality of rows of consecutive blocks of quantized coefficients of the transformed residual values of the encoded image; при этом упомянутое множество строк квантованных коэффициентов энтропийно кодированы для энтропийного декодирования в декодере;wherein said plurality of rows of quantized coefficients are entropy encoded for entropy decoding in the decoder; при этом текущий блок во множестве строк последовательных блоков энтропийно декодируется на основе одной или нескольких переменных состояния;wherein the current block in the plurality of rows of consecutive blocks is entropy decoded based on one or more state variables; при этом, когда текущий блок является первым блоком в текущей строке в порядке декодирования для декодирования кодированного изображения, а текущая строка не является первой строкой из множества строк в порядке декодирования, одна или несколько переменных состояния для декодирования текущего блока инициализируются на основе одной или нескольких переменных состояний заданного энтропийно декодированного блока; иwherein, when the current block is the first block in the current line in the decoding order for decoding the encoded image, and the current line is not the first line of the plurality of lines in the decoding order, one or more state variables for decoding the current block are initialized based on one or more variables states of a given entropy decoded block; and при этом заданный энтропийно декодированный блок является вторым блоком в порядке декодирования в строке последовательных блоков, отличной от текущей строки.wherein the given entropy decoded block is the second block in the decoding order in a row of consecutive blocks other than the current row.
RU2021129083A 2011-06-24 2021-10-06 Device for encoding and decoding images RU2779843C1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1155606 2011-06-24

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2020141931A Division RU2757543C1 (en) 2011-06-24 2020-12-18 Method for encoding and decoding images, apparatus for encoding and decoding, and corresponding computer programs

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2022122734A Division RU2022122734A (en) 2011-06-24 2022-08-24 METHOD FOR ENCODING AND DECODING IMAGES, DEVICE FOR ENCODING AND DECODING AND RELEVANT COMPUTER PROGRAMS

Publications (1)

Publication Number Publication Date
RU2779843C1 true RU2779843C1 (en) 2022-09-14

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480537B1 (en) * 1999-02-25 2002-11-12 Telcordia Technologies, Inc. Active techniques for video transmission and playback
US6900748B2 (en) * 2003-07-17 2005-05-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and apparatus for binarization and arithmetic coding of a data value
RU2330325C2 (en) * 2002-10-03 2008-07-27 Нокиа Корпорейшн Adaptive uneven coding based on context for adaptive conversions of units
US20080246637A1 (en) * 2007-04-03 2008-10-09 National Tsing Hua University Cabac Decoding Method
US20100135416A1 (en) * 2008-12-03 2010-06-03 Yu-Wen Huang Method for performing parallel coding with ordered entropy slices, and associated apparatus
WO2011042645A1 (en) * 2009-10-05 2011-04-14 France Telecom Methods for encoding and decoding images, corresponding encoding and decoding devices and computer programs

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480537B1 (en) * 1999-02-25 2002-11-12 Telcordia Technologies, Inc. Active techniques for video transmission and playback
RU2330325C2 (en) * 2002-10-03 2008-07-27 Нокиа Корпорейшн Adaptive uneven coding based on context for adaptive conversions of units
US6900748B2 (en) * 2003-07-17 2005-05-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and apparatus for binarization and arithmetic coding of a data value
US20080246637A1 (en) * 2007-04-03 2008-10-09 National Tsing Hua University Cabac Decoding Method
US20100135416A1 (en) * 2008-12-03 2010-06-03 Yu-Wen Huang Method for performing parallel coding with ordered entropy slices, and associated apparatus
WO2011042645A1 (en) * 2009-10-05 2011-04-14 France Telecom Methods for encoding and decoding images, corresponding encoding and decoding devices and computer programs

Similar Documents

Publication Publication Date Title
RU2739497C1 (en) Image encoding and decoding device
KR102465264B1 (en) Method of coding and decoding images, coding and decoding device and computer programs corresponding thereto
RU2779843C1 (en) Device for encoding and decoding images
KR20240110081A (en) Method for encoding and decoding images, encoding and decoding device, and corresponding computer programs