УЛУЧШЕННЫЙ ПАЛИТРОВЫЙ РЕЖИМ В HEVC
IMPROVED PALETTE MODE IN HEVC

Область техники, к которой относится изобретение
Изобретение относится к кодированию и декодированию видео. Более точно, настоящее изобретение посвящено способу кодирования в палитровом режиме. Палитровый режим представляет собой новый способ кодирования, который представлен в рамках расширения диапазона международного стандарта высокоэффективного кодирования видео (HEVC: ISO/IEC 23008-2 MPEG-H Part 21 ITU-T H.265). Этот способ является эффективным для кодирования видео, фокусирующегося на видеопоследовательности "экранного контента".
Настоящее изобретение повышает эффективность кодирования палитрового режима посредством использования эффективного способа кодирования.
Уровень техники
Палитра в этом документе задается как таблица поиска, имеющая записи, ассоциирующие индекс со значением пиксела. Типично, но необязательно, значение пиксела состоит из значения каждого цветового компонента, ассоциированного с пикселом, что приводит к цветовой палитре. С другой стороны, значение пиксела может формироваться из одного пиксельного компонента, что приводит к монохромной палитре.
Этот режим кодирования блока пиксела, в общем, упоминается в качестве режима палитрового кодирования. Предполагается приспосабливать этот режим, например, в расширении диапазона международного стандарта высокоэффективного кодирования видео (HEVC: ISO/IEC 23008-2 MPEG-H Part 21 ITU-T H.265).
При кодировании изображения в видеопоследовательности, изображение сначала разделяется на объекты кодирования пикселов равного размера, называемые "блоком дерева кодирования (CTB)". Размер блока дерева кодирования типично составляет 64х64 пикселов. Каждый блок дерева кодирования затем может разбиваться на иерархическое дерево меньших блоков, размер которых может варьироваться, и которые представляют собой фактические блоки пикселов для кодирования. Эти меньшие блоки для кодирования упоминаются в качестве единицы кодирования (CU).
Кодирование конкретной единицы кодирования типично является прогнозирующим. Это означает то, что сначала определяется блок предиктора. Затем, вычисляется разность между блоком предиктора и единицей кодирования. Эта разность называется "остатком". Затем, этот остаток сжимается. Фактическая кодированная информация единицы кодирования формируется из некоторой информации для того, чтобы указывать способ определения блока предиктора и сжатого остатка. Наилучшие блоки предикторов представляют собой блоки, максимально возможно аналогичные единице кодирования, с тем чтобы получать небольшой остаток, который может эффективно сжиматься.
Режим кодирования задается на основе способа, используемого для того, чтобы определять блок предиктора для способа прогнозирующего кодирования единицы кодирования.
Первый режим кодирования упоминается в качестве внутреннего режима. Согласно внутреннему режиму, блок предиктора компонуется на основе значения пикселов, непосредственно окружающих единицу кодирования в текущем изображении. Необходимо отметить, что блок предиктора представляет собой блок не текущего изображения, а конструкции. Направление используется для того, чтобы определять то, какие пикселы границы фактически используются для того, чтобы компоновать блок предиктора, и то, как они используются. Идея в основе внутреннего режима состоит в том, что вследствие общей когерентности натуральных изображений, пикселы, непосредственно окружающие единицу кодирования, с большой вероятностью являются аналогичными пикселам текущей единицы кодирования. Следовательно, можно получать хорошее прогнозирование значения пикселов единицы кодирования с использованием блока предиктора на основе этих окружающих пикселов.
Второй режим кодирования упоминается в качестве взаимного режима. Согласно взаимному режиму, блок предиктора представляет собой блок другого изображения. Идея в основе взаимного режима состоит в том, что последовательные изображения в последовательности являются, в общем, почти идентичными. Основное различие типично обусловлено движением между этими изображениями вследствие прокрутки камеры или вследствие движущихся объектов в сцене. Блок предиктора определяется посредством вектора, представляющего его местоположение в опорном изображении относительно местоположения единицы кодирования в текущем изображении. Этот вектор упоминается в качестве вектора движения. Согласно этому режиму, кодирование такой единицы кодирования с использованием этого режима содержит информацию движения, содержащую вектор движения и сжатый остаток.
В этом документе, внимание сосредоточено на третьем режиме кодирования, называемом "палитровым режимом". Согласно первой разновидности палитрового режима, можно задавать блок предиктора для данной единицы кодирования в качестве блока индексов из палитры: для каждого пиксельного местоположения в блоке предиктора, блок предиктора содержит индекс, ассоциированный с пиксельным значением в палитре, которое является ближайшим к значению пиксела, имеющего идентичное местоположение (т.е. совместно размещенного) в единице кодирования. Остаток, представляющий разность между блоком предиктора и единицей кодирования, затем вычисляется и кодируется. Индексы записей в палитре также известны как "уровни".
При использовании палитрового режима согласно этой первой разновидности, блок предиктора индексов должен передаваться в потоке битов. Для этой передачи, блок предиктора индексов двоично кодируется с использованием трех элементов синтаксиса. Первый элемент синтаксиса, называемый "режимом прогнозирования", обеспечивает возможность различения между двумя режимами кодирования. В первом режиме, соответствующем режиму прогнозирования, имеющему значение 0 (также известному как "режим с копированием влево", "режим с прогнозированием влево" или "индексный режим"), значение уровня, который должен кодироваться, должно передаваться в потоке битов. Во втором режиме, соответствующем режиму прогнозирования, имеющему значение 1, значение уровня, который должен кодироваться, получается из значения вышеуказанного пиксела в блоке предиктора. Уровень не должен обязательно передаваться.
Согласно второй разновидности палитрового режима, также можно задавать индексный блок для прогнозирования данной единицы кодирования из палитры: для каждого пиксельного местоположения в CU, индексный блок содержит индекс, ассоциированный с пиксельным значением в палитре, которое представляет значение пиксела, имеющего идентичное местоположение (т.е. совместно размещенного) в единице кодирования. Дополнительные значения индекса, называемые "значениями управляющего кода", также формируются, если пиксельное значение не может быть ассоциировано со значением индекса из палитры. Это "значение управляющего кода" указывает то, что соответствующее пиксельное значение непосредственно кодируется.
Согласно этой второй разновидности, индексный блок и значения управляющего кода передаются в потоке битов с палитрой. Идентичные элементы синтаксиса, как упомянуто для первой разновидности, используются. Необходимо отметить, что хотя как блок индексов, строго говоря, не является частью изображения, слово "пиксел" используется для того, чтобы означать элемент этого блока уровней по аналогии.
Второй элемент синтаксиса, называемый "уровнем", задается для передачи значения уровня в первом режиме. Третий элемент синтаксиса, называемый "серией", используется для того, чтобы кодировать повторяющееся значение. С учетом того, что блок предиктора сканируется из верхнего левого угла в правый нижний угол, построчно слева направо и сверху вниз (т.е. порядок растрового сканирования), элемент синтаксиса серии задает число последовательных пикселов в блоке предиктора, имеющих идентичное кодирование. Если режим прогнозирования равен 0, это представляет собой число последовательных пикселов блока предиктора, имеющих идентичное значение уровня. Если режим прогнозирования равен 1, это представляет собой число последовательных пикселов блока предиктора, имеющих значение уровня, соответствующее значению уровня вышеуказанного пиксела.
Сущность изобретения
Настоящее изобретение разработано с возможностью повышать эффективность кодирования палитрового режима.
Согласно первому аспекту настоящего изобретения, предусмотрен способ для логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования, причем упомянутые индексы принадлежат палитре, содержащей набор индексов, ассоциированных с пиксельными значениями, причем индексы блоков индексов кодируются согласно данному порядку кодирования, при этом параметр кодирования, представляющий режим прогнозирования, ассоциированный с текущим индексом блока индексов, логически выводится, если текущий индекс расположен в первой строке блока индексов, в качестве режима прогнозирования, отличного от верхнего.
Согласно второму аспекту настоящего изобретения, предусмотрен способ для логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования, причем упомянутые индексы принадлежат палитре, содержащей набор индексов, ассоциированных с пиксельными значениями, причем индексы блоков индексов кодируются согласно данному порядку кодирования, при этом если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный параметр кодирования, представляющий режим прогнозирования, равный верхнему, параметр кодирования, представляющий режим прогнозирования, ассоциированный с текущим индексом блока индексов, логически выводится в качестве режима прогнозирования, отличного от режима прогнозирования, равного верхнему.
В варианте осуществления, режим прогнозирования, отличный от режима прогнозирования, равного верхнему, представляет собой режим прогнозирования, равным левому.
Согласно третьему аспекту настоящего изобретения, предусмотрен способ для логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования, причем упомянутые индексы принадлежат палитре, содержащей набор индексов, ассоциированных с пиксельными значениями, причем индексы блоков индексов кодируются согласно данному порядку кодирования, при этом когда текущий индекс следует после предыдущего индекса согласно данному порядку кодирования, значение текущего индекса логически выводится в зависимости от режима прогнозирования, ассоциированного с упомянутым предыдущим индексом.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный режим прогнозирования, значение текущего индекса логически выводится из списка значений индекса, не включающих в себя значения индекса согласно режиму прогнозирования, ассоциированному с предыдущим индексом, когда применяется текущий индекс.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный режим прогнозирования, равный левому, значение текущего индекса логически выводится из списка значений, не содержащих значение индекса слева от текущего индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный режим прогнозирования, представляющий направление прогнозирования, равное верхнему, значение текущего индекса логически выводится из списка значений, не содержащих значение индекса выше текущего индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный режим прогнозирования, представляющий направление прогнозирования, равное верхнему, режим прогнозирования, равный левому, является параметром кодирования текущего индекса.
N
Согласно четвертому аспекту настоящего изобретения, предусмотрен способ для кодирования или декодирования единицы кодирования, содержащий логический вывод значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования, причем упомянутые индексы принадлежат палитре, содержащей набор индексов, ассоциированных с пиксельными значениями, причем индексы блоков индексов кодируются согласно данному порядку кодирования, при этом если текущий индекс следует после предыдущего индекса согласно данному порядку кодирования, значение текущего индекса логически выводится из списка значений индекса, не содержащих значение индекса согласно режиму прогнозирования, ассоциированному с предыдущим индексом, и длина слова, представляющего значение текущего индекса, модифицируется согласно значению целого числа R, к примеру, M=2-R, где M является числом значений в упомянутом списке значений, и N является числом битов, представляющим длину слова, представляющего значение текущего индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный режим прогнозирования, равный левому, значение текущего индекса логически выводится из списка значений, не содержащих значение индекса слева от текущего индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный режим прогнозирования, представляющий направление прогнозирования, равное верхнему, значение текущего индекса логически выводится из списка значений, не содержащих значение индекса выше текущего индекса.
Согласно пятому аспекту настоящего изобретения, предусмотрен способ для кодирования единицы кодирования, содержащий способ логического вывода значений параметров кодирования согласно первому-третьему аспектам.
Согласно шестому аспекту настоящего изобретения, предусмотрен способ для декодирования единицы кодирования, содержащий способ логического вывода значений параметров кодирования согласно любому из первого-третьего аспектов.
Согласно седьмому аспекту настоящего изобретения, предусмотрено устройство для определения параметров кодирования, содержащее средство для осуществления способа по любому из первого-третьего аспектов.
Согласно восьмому аспекту настоящего изобретения, предусмотрено устройство для кодирования единицы кодирования в потоке битов, содержащее средство для осуществления соответствующего способа кодирования по любому из четвертого или пятого аспектов.
Согласно девятому аспекту настоящего изобретения, предусмотрено устройство для декодирования единицы кодирования из потока битов, содержащее средство для осуществления соответствующего способа декодирования по любому из четвертого или шестого аспектов.
Согласно десятому аспекту предусмотрена компьютерная программа, содержащая выполняемые инструкции, которые при выполнении посредством программируемого устройства инструктируют устройству осуществлять способ по любому из первого-шестого аспектов.
Согласно одиннадцатому аспекту настоящего изобретения, предусмотрен энергонезависимый машиночитаемый носитель, который, при работе на компьютере или процессоре, инструктирует компьютеру или процессору осуществлять способ по любому из первого-шестого аспектов.
Согласно двенадцатому аспекту, изобретение предоставляет способ для логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования, причем упомянутые индексы принадлежат палитре, содержащей набор индексов, ассоциированных с пиксельными значениями, причем режим палитрового кодирования содержит компоновку блока предиктора из блока индексов, чтобы прогнозировать текущую единицу кодирования, причем индексы блоков индексов кодируются согласно данному порядку кодирования, при этом параметр, ассоциированный с текущим пикселом блока пикселов, логически выводится в функции контекстной информации в зависимости от порядка кодирования пикселов.
В варианте осуществления, первый параметр представляет режим прогнозирования текущего индекса блока индексов.
В варианте осуществления, упомянутый первый параметр логически выводится, если текущий индекс находится в первой позиции в столбце индексов блока индексов.
В варианте осуществления, упомянутый первый параметр логически выводится, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный верхнему.
В варианте осуществления, второй параметр представляет значение текущего индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный левому, второй параметр текущего индекса логически выводится из списка значений, не содержащих значение индекса слева от текущего индекса.
В другом варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный левому, и имеющего ассоциированный второй параметр, удовлетворяющий предварительно определенному критерию, второй параметр текущего индекса логически выводится из списка значений, не содержащих значение индекса слева от текущего индекса.
В варианте осуществления, упомянутый ассоциированный второй параметр удовлетворяет предварительно определенному критерию, когда он ниже предварительно определенного значения.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий направление прогнозирования, равное верхнему, второй параметр текущего индекса логически выводится из списка значений, не содержащих значение индекса выше текущего индекса.
В варианте осуществления, если упомянутый список значений для логического вывода второго параметра текущего индекса не содержит значение индекса слева или выше текущего индекса или/и предварительно определенное значение, то длина слова, представляющего второй параметр, регулируется согласно предварительно определенному критерию. Длина слова выше или равна нулю.
В варианте осуществления, если упомянутый список значений для логического вывода второго параметра текущего индекса не содержит, по меньшей мере, одно предварительно определенное значение, то длина слова, представляющего второй параметр, регулируется согласно предварительно определенному критерию.
В варианте осуществления, длина слова, представляющего второй параметр, регулируется согласно числу значений в упомянутом списке значений.
N
В варианте осуществления, длина слова, представляющего второй параметр, регулируется согласно значению целого числа R, к примеру, M=2-R, где M является числом значений в упомянутом списке значений, и N является числом битов, представляющим длину слова, представляющего второй параметр.
N
N
=
Другими словами, в этих последних вариантах осуществления, если текущий индекс следует после предыдущего индекса (в порядке кодирования), имеющего ассоциированный первый параметр, представляющего режим прогнозирования, равный, соответственно, левому или верхнему (или в каких-либо других предварительно определенных случаях как задано ниже), второй параметр текущего индекса логически выводится из списка значений, не содержащих значение индекса, соответственно, слева или выше текущего индекса, называемого "разреженным списком" с этого момента. В таком варианте осуществления, это может быть использовано для того, чтобы уменьшать фактический диапазон индекса для кодирования: максимальное число возможных значений может постепенно уменьшаться, и если индекс выше пропущенного индекса, то его значение также может постепенно уменьшаться. Это может комбинироваться с эффективным способом кодирования для индекса: для числа M элементов таким образом, что M=2-R, с целыми числами N>0 и 0<R<2, вместо кодирования индекса в N битов, что является самым простым, происходит следующее:
- Если индекс значения val ниже R, то он кодируется в N-1 битов как есть;
- В противном случае, val+R кодируется в N битов.
Согласно тринадцатому аспекту, изобретение предоставляет способ для кодирования или декодирования единицы кодирования, содержащий способ логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования согласно двенадцатому аспекту.
В четырнадцатом аспекте, изобретение предоставляет устройство для кодирования или декодирования единицы кодирования, содержащее модуль, адаптированный с возможностью реализовывать способ логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования согласно двенадцатому аспекту.
В пятнадцатом аспекте, предусмотрен способ кодирования или декодирования единицы кодирования, содержащий способ для логического вывода значений параметров кодирования согласно двенадцатому аспекту. Декодирование потока видеобитов, содержащего кодированную последовательность цифровых изображений, может содержать упомянутое декодирование единицы кодирования, и кодирование последовательности цифровых изображений в поток битов может содержать упомянутое кодирование единицы кодирования.
В шестнадцатом аспекте, предусмотрено устройство для логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования, содержащее средство для осуществления способа согласно двенадцатому аспекту.
В семнадцатом аспекте, предусмотрено устройство для кодирования или декодирования единицы кодирования, содержащее средство для осуществления соответствующего способа кодирования или декодирования пятнадцатого аспекта.
В восемнадцатом аспекте, изобретение предоставляет энергонезависимый машиночитаемый носитель, сохраняющий программу, которая при выполнении посредством одного или более микропроцессоров или компьютеров инструктирует процессору или компьютеру осуществлять способ по любому из двенадцатого, тринадцатого и пятнадцатого аспектов.
В девятнадцатом аспекте, изобретение предоставляет средство хранения информации, считываемое посредством компьютера или микропроцессора, сохраняющее инструкции компьютерной программы, причем она позволяет реализовывать способ по любому из двенадцатого, тринадцатого и пятнадцатого аспектов.
В двадцатом аспекте, изобретение предоставляет компьютерную программу, содержащую выполняемые инструкции, которые при выполнении посредством программируемого устройства инструктируют устройству осуществлять способ по любому из двенадцатого, тринадцатого и пятнадцатого аспектов.
Согласно двадцать первому аспекту изобретения, предусмотрен способ для определения значений параметров кодирования, используемых для кодирования индексов из блока индексов для обработки единицы кодирования согласно палитровому режиму с использованием палитры, причем каждый индекс связан с одним из пикселов, формирующих единицу кодирования, причем палитра содержит набор индексов, ассоциированных с пиксельными значениями, причем обработка содержит получение предиктора единицы кодирования из блока индексов и палитры, чтобы прогнозировать соответствующую единицу кодирования. Способ содержит:
- определение одного или более параметров кодирования для индекса, ассоциированного с одним из пиксела единицы кодирования согласно пространственному окружению упомянутого пиксела и с учетом порядка кодирования пикселов, формирующих единицу кодирования.
Например, пространственное окружение содержит пиксел, расположенный выше рассматриваемого пиксела.
В варианте осуществления, определенный первый параметр кодирования представляет режим прогнозирования индекса блока индексов.
В варианте осуществления, первый параметр кодирования выводится, если местоположение текущего индекса представляет собой первую линию индексов блока индексов.
В варианте осуществления, упомянутый первый параметр выводится, если текущий индекс следует после предыдущего индекса в порядке обработки, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный верхнему.
В варианте осуществления, определенный второй параметр кодирования представляет значение текущего индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке обработки, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный левому, второй параметр текущего индекса определяется из списка значений индекса, не содержащих значение индекса слева от текущего индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный левому, и имеющего ассоциированный удовлетворяющий предварительно определенному условию второй параметр, второй параметр значения текущего индекса определяется из списка значений, не содержащих значение индекса слева от текущего индекса.
В варианте осуществления, предварительно определенное условие заключается в том, что ассоциированный второй параметр меньше предварительно определенного значения индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке обработки, имеющего ассоциированный первый параметр, представляющий направление прогнозирования, равное верхнему, второй параметр текущего индекса определяется из списка значений индекса, не содержащих значение индекса выше текущего индекса.
В варианте осуществления, если индекс следует после индекса, имеющего ассоциированный первый параметр кодирования, представляющий первый режим прогнозирования, представляющий направление прогнозирования, равное левому, второй параметр кодирования индекса определяется из списка значений индекса, имеющих число значений индекса, меньшее или равное размеру палитры минус единица.
В варианте осуществления, первый режим прогнозирования представляет собой один из множества доступных режимов прогнозирования, и значения индекса упомянутого списка зависят от множества режимов прогнозирования.
В варианте осуществления, значения индекса, ссылающиеся на значения индексов, которые могут прогнозироваться с режимами прогнозирования, отличными от первого режима прогнозирования, не включены в упомянутый список.
В варианте осуществления, список значений индекса имеет число значений индекса, меньшее или равное размеру палитры минус два.
В варианте осуществления, если число индексов, прогнозированных с режимами прогнозирования, отличными от первого режима прогнозирования, превышает единицу, без включения наименьшего значения индекса из числа значений индексов, которые могут прогнозироваться с другими режимами прогнозирования, так что список значений индекса имеет размер, равный размеру палитры минус единица.
В варианте осуществления, один из множества доступных режимов прогнозирования представляет собой переходный режим, в котором параметр кодирования определяется из таблицы, сохраняющей шаблоны, причем шаблоны состоят из индексов, по меньшей мере, одного соседнего индекса блока индексов, причем упомянутый шаблон ассоциирован, по меньшей мере, с одним индексом прогнозирования, соответствующим индексу, ожидаемому в местоположении в окружении шаблона.
Согласно двадцать второму аспекту изобретения, предлагается способ кодирования единицы кодирования, содержащий определение значений параметров кодирования согласно способу, упомянутому выше. Значения параметров кодирования используются для получения индексов из блока индексов для кодирования единицы кодирования, причем упомянутый предиктор единицы кодирования формируется из блока индексов и палитры.
Согласно двадцать третьему аспекту изобретения, предлагается способ декодирования единицы кодирования из потока битов, содержащий получение значений параметров кодирования, причем упомянутые значения параметров кодирования определены с помощью вышеприведенного способа. Значения параметров кодирования используются для получения индексов из блока индексов для декодирования единицы кодирования, причем упомянутый предиктор единицы кодирования получается из блока индексов и палитры, извлеченной из потока битов.
N
В варианте осуществления, этап для модификации длины слова, представляющего второй параметр кодирования согласно числу значений в упомянутом списке значений, содержит модификацию длины слова согласно значению целого числа R, к примеру, M=2-R, где M является числом значений в упомянутом списке значений, и N является числом битов, представляющим длину слова, представляющего второй параметр.
Согласно двадцать четвертому аспекту изобретения, предлагается устройство для определения значений параметров кодирования, содержащее средство для осуществления способа по любому из пунктов формулы изобретения, упомянутого выше.
Согласно двадцать пятому аспекту изобретения, предлагается устройство для кодирования или декодирования единицы кодирования, содержащее средство для осуществления соответствующих способов кодирования или декодирования, упомянутых выше.
Согласно двадцать шестому аспекту изобретения, предлагается компьютерная программа, содержащая выполняемые инструкции, которые при выполнении посредством программируемого устройства инструктируют устройству осуществлять способ, упомянутый выше.
Согласно двадцать седьмому аспекту изобретения, предлагается энергонезависимый машиночитаемый носитель, который, при работе на компьютере или процессоре, инструктирует компьютеру или процессору осуществлять способ, упомянутый выше.
Согласно двадцать восьмому аспекту изобретения, предлагается способ для определения параметров кодирования для кодирования индексов блока индексов, используемых для кодирования единицы кодирования изображения согласно палитре, причем каждый индекс связан с одним из пикселов, формирующих единицу кодирования, причем палитра содержит набор индексов, ассоциированных с пиксельными значениями. Способ содержит:
- формирование каждого индекса блока индексов, связанных с единицей кодирования из палитры на основе соответствующих параметров кодирования, и
- если индексы блока индексов не могут формироваться из палитры, по меньшей мере, для одного пиксела единицы кодирования, формирование значений индекса, соответствующих значениям управляющего кода для замены упомянутых индексов блока индексов, которые не могут формироваться; и
- определение одного или более параметров кодирования, соответствующих индексу, согласно пространственному окружению упомянутого пиксела с учетом порядка кодирования пикселов единицы кодирования.
Например, пространственное окружение содержит пиксел, расположенный выше рассматриваемого пиксела.
В варианте осуществления, первый параметр кодирования представляет режим прогнозирования индекса блока индексов.
В варианте осуществления, упомянутый первый параметр кодирования выводится, если местоположение текущего индекса представляет собой линию индексов блока индексов.
В варианте осуществления, упомянутый первый параметр кодирования выводится, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный верхнему.
В варианте осуществления, определенный второй параметр кодирования представляет значение сформированного индекса блока индексов.
В варианте осуществления, если сформированный индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный левому, второй параметр текущего индекса определяется из списка значений индекса, не содержащих значение индекса слева от текущего индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный левому, и имеющего ассоциированный удовлетворяющий предварительно определенному условию второй параметр, второй параметр значения текущего индекса определяется из списка значений, не содержащих значение индекса слева от текущего индекса.
В варианте осуществления, предварительно определенное условие заключается в том, что ассоциированный второй параметр меньше предварительно определенного значения индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий направление прогнозирования, равное верхнему, второй параметр текущего индекса определяется из списка значений индекса, не содержащих значение индекса выше текущего индекса.
В варианте осуществления, если индекс следует после индекса, имеющего ассоциированный первый параметр кодирования, представляющий первый режим прогнозирования, представляющий направление прогнозирования, равное левому, второй параметр кодирования индекса определяется из списка значений индекса, имеющих число значений индекса, меньшее или равное размеру палитры минус единица.
В варианте осуществления, первый режим прогнозирования представляет собой один из множества доступных режимов прогнозирования, и значения индекса упомянутого списка зависят от множества режимов прогнозирования.
В варианте осуществления, значения индекса, ссылающиеся на значения индексов, которые могут прогнозироваться с режимами прогнозирования, отличными от первого режима прогнозирования, не включены в упомянутый список.
В варианте осуществления, список значений индекса имеет число значений индекса, меньшее или равное размеру палитры минус два.
В варианте осуществления, если число индексов, прогнозированных с режимами прогнозирования, отличными от первого режима прогнозирования, превышает единицу, без включения наименьшего значения индекса из числа значений индексов, которые могут прогнозироваться с другими режимами прогнозирования, так что список значений индекса имеет размер, равный размеру палитры минус единица.
В варианте осуществления, один из множества доступных режимов прогнозирования представляет собой переходный режим, в котором параметр кодирования определяется из таблицы, сохраняющей шаблоны, причем шаблоны состоят из индексов, по меньшей мере, одного соседнего индекса блока индексов, причем упомянутый шаблон ассоциирован, по меньшей мере, с одним индексом прогнозирования, соответствующим индексу, ожидаемому в местоположении в окружении шаблона.
Согласно двадцать девятому аспекту изобретения, предлагается способ кодирования единицы кодирования, содержащий определение значений параметров кодирования согласно способу, упомянутому выше.
Согласно тридцатому аспекту изобретения, предлагается способ для индексов декодирования блока индексов, используемых для декодирования единицы кодирования изображения согласно палитре, полученной из потока битов, причем каждый индекс связан с одним из пикселов, формирующих единицу кодирования, причем палитра содержит набор индексов, ассоциированных с пиксельными значениями. Способ содержит:
- получение палитры из потока битов и формирование блока индексов из потока битов и полученной палитры согласно параметрам кодирования,
- получение из потока битов, при наличии, значений индекса, соответствующих значениям управляющего кода для замены упомянутых индексов блока индексов, которые не могут формироваться из палитры; и определение параметров кодирования, соответствующих индексу, согласно пространственному окружению упомянутого пиксела, с учетом порядка кодирования пикселов, формирующих единицу кодирования.
В варианте осуществления, параметры кодирования определяются с учетом порядка кодирования при кодировании единицы кодирования с помощью вышеприведенного способа.
N
В варианте осуществления, этап для модификации длины слова, представляющего второй параметр кодирования согласно числу значений в упомянутом списке значений, содержит модификацию длины слова согласно значению целого числа R, к примеру, M=2-R, где M является числом значений в упомянутом списке значений, и N является числом битов, представляющим длину слова, представляющего второй параметр.
Согласно тридцать первому аспекту изобретения, предлагается устройство для определения параметров кодирования, содержащее средство для осуществления способа, упомянутого выше.
Согласно тридцать второму аспекту изобретения, предлагается устройство для кодирования единицы кодирования, содержащее средство для осуществления соответствующего способа кодирования, упомянутого выше.
Согласно тридцать третьему аспекту изобретения, предлагается устройство для декодирования единицы кодирования, содержащее средство для осуществления соответствующего способа декодирования, упомянутого выше.
Согласно тридцать четвертому аспекту изобретения, предлагается компьютерная программа, содержащая выполняемые инструкции, которые при выполнении посредством программируемого устройства инструктируют устройству осуществлять способ, упомянутый выше.
Согласно тридцать пятому аспекту изобретения, предлагается энергонезависимый машиночитаемый носитель, который, при работе на компьютере или процессоре, инструктирует компьютеру или процессору осуществлять способ, упомянутый выше.
Согласно тридцать шестому аспекту, изобретение предоставляет способ для логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования, причем упомянутые индексы принадлежат палитре, содержащей набор индексов, ассоциированных с пиксельными значениями, причем режим палитрового кодирования содержит компоновку блока предиктора из блока индексов, чтобы прогнозировать текущую единицу кодирования, причем индексы блоков индексов кодируются согласно данному порядку кодирования, при этом параметр, ассоциированный с текущим пикселом блока пикселов, логически выводится в функции контекстной информации в зависимости от порядка кодирования пикселов.
В варианте осуществления, первый параметр представляет режим прогнозирования текущего индекса блока индексов.
В варианте осуществления, упомянутый первый параметр логически выводится, если текущий индекс находится в первой позиции в столбце индексов блока индексов.
В варианте осуществления, упомянутый первый параметр логически выводится, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный верхнему.
В варианте осуществления, второй параметр представляет значение текущего индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий режим прогнозирования, равный левому, второй параметр текущего индекса логически выводится из списка значений, не содержащих значение индекса слева от текущего индекса.
В варианте осуществления, если текущий индекс следует после предыдущего индекса в порядке кодирования, имеющего ассоциированный первый параметр, представляющий направление прогнозирования, равное верхнему, второй параметр текущего индекса логически выводится из списка значений, не содержащих значение индекса выше текущего индекса.
В тридцать седьмом аспекте, настоящее изобретение предоставляет способ для кодирования или декодирования единицы кодирования, содержащий способ логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования согласно тридцать шестому аспекту.
В тридцать восьмом аспекте, настоящее изобретение предоставляет устройство для кодирования или декодирования единицы кодирования, содержащее модуль, адаптированный с возможностью реализовывать способ логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования согласно тридцать шестому аспекту.
В тридцать девятом аспекте, настоящее изобретение предоставляет энергонезависимый машиночитаемый носитель, сохраняющий программу, которая при выполнении посредством микропроцессора или компьютера в устройстве кодирования или декодирования инструктирует устройству осуществлять способ по тридцать шестому и тридцать седьмому аспекту.
В сороковом аспекте, настоящее изобретение предоставляет средство хранения информации, считываемое посредством компьютера или микропроцессора, сохраняющее инструкции компьютерной программы, причем она позволяет реализовывать способ по тридцать шестому и тридцать седьмому аспекту.
Согласно сорок первому аспекту, настоящее изобретение предоставляет способ для кодирования или декодирования текущего блока пикселов изображения согласно палитровому режиму, причем палитровый режим использует цветовую палитру, содержащую набор значений, чтобы представлять, по меньшей мере, один компонент пикселов текущего блока, при этом способ содержит получение предиктора цветовой палитры и прогнозирование цветовой палитры текущего блока с использованием предиктора цветовой палитры. Следует принимать во внимание, что палитровый режим по сорок первому аспекта может применяться при выполнении любого из аспектов, уже описанных выше.
В варианте осуществления, блоки упомянутого изображения упорядочиваются согласно предварительно заданному порядку сканирования, и предиктор цветовой палитры определяется из цветовой палитры последнего блока, кодированного согласно палитровому режиму в данной причинно-следственной области изображения.
В варианте осуществления, значения текущей палитры цветов прогнозируются из значений, содержащихся в предикторе цветовой палитры.
В варианте осуществления, значения цветовых палитр упорядочиваются, при этом значение текущей палитры цветов ассоциировано с флагом, указывающим то, прогнозируется или нет упомянутое значение из значения, имеющего идентичный порядок в предикторе цветовой палитры.
В варианте осуществления, данная причинно-следственная область представляет собой часть, уже восстановленную из объекта кодирования, содержащего текущий блок пикселов.
В варианте осуществления, значения цветовых палитр упорядочиваются, при этом значение текущей палитры ассоциировано с флагом, указывающим то, прогнозируется или нет упомянутое значение из значения, имеющего данный порядок в предикторе цветовой палитры.
В варианте осуществления, предиктор цветовой палитры ассоциирован с каждым объектом кодирования изображения.
В варианте осуществления, предиктор цветовой палитры получается из пикселов, граничащих с текущим блоком.
Согласно сорок второму аспекту настоящего изобретения, предусмотрен способ для логического вывода значений параметров кодирования, используемых при кодировании индексов блока индексов, используемых для кодирования единицы кодирования согласно режиму палитрового кодирования, причем упомянутые индексы принадлежат палитре, содержащей набор индексов, ассоциированных с пиксельными значениями, причем индексы блоков индексов кодируются согласно данному порядку кодирования, при этом когда текущий индекс следует после предыдущего индекса согласно данному порядку кодирования, имеющего ассоциированный режим прогнозирования, представляющий направление прогнозирования, равное верхнему, значение текущего индекса логически выводится из списка значений, не содержащих значение индекса выше текущего индекса.
В варианте осуществления, режим прогнозирования, равный левому, используется для того, чтобы кодировать текущий индекс.
По меньшей мере, часть способов согласно изобретению может быть машинореализованной. Соответственно, настоящее изобретение может принимать форму полностью аппаратного варианта осуществления, полностью программного варианта осуществления (включающего в себя микропрограммное обеспечение, резидентное программное обеспечение, микрокод и т.д.) или варианта осуществления, комбинирующего программные и аппаратные аспекты, которые могут совместно, в общем, упоминаться в данном документе как "схема", "модуль" или "система". Кроме того, настоящее изобретение может принимать форму компьютерного программного продукта, осуществленного в любом материальном носителе, в представлении, имеющем машиноприменимый программный код, осуществленный на носителе.
Поскольку настоящее изобретение может быть реализовано в программном обеспечении, настоящее изобретение может быть осуществлено в качестве машиночитаемого кода для предоставления в программируемое устройство на любом подходящем носителе. Материальный носитель может содержать носитель хранения данных, такой как гибкий диск, CD-ROM, жесткий диск, флэш-карту, карту памяти, устройство на магнитных лентах или полупроводниковое запоминающее устройство и т.п. Переходная несущая среда может включать в себя такой сигнал, как электрический сигнал, электронный сигнал, оптический сигнал, акустический сигнал, магнитный сигнал либо электромагнитный сигнал, например, микроволновый или RF-сигнал.
Краткое описание чертежей
Далее описываются варианты осуществления изобретения, только в качестве примера и со ссылкой на прилагаемые чертежи, на которых:
Фиг. 1 иллюстрирует архитектуру видеокодера;
Фиг. 2 иллюстрирует архитектуру видеодекодера;
Фиг. 3 иллюстрирует принцип причинно-следственной области;
Фиг. 4 иллюстрирует формат сигнала цветности, поддерживаемый в расширении HEVC-диапазона;
Фиг. 5 иллюстрирует CTB-разбиение на CU и декодирование в порядке сканирования этих CU;
Фиг. 6 иллюстрирует процесс декодирования для coeff_abs_level_remaining HEVC;
Фиг. 7a иллюстрирует первый процесс декодирования для декодирования пиксельных значений согласно палитровому режиму;
Фиг. 7b иллюстрирует второй процесс декодирования для декодирования пиксельных значений согласно палитровому режиму;
Фиг. 8a иллюстрирует пример палитры и блока/CU извлечения уровней относительно фиг. 7a;
Фиг. 8b иллюстрирует другой пример палитры и блока/CU извлечения уровней относительно фиг. 7b;
Фиг. 9 иллюстрирует пример сформированного элемента синтаксиса палитры;
Фиг. 10 иллюстрирует процесс декодирования синтаксиса палитрового режима;
Фиг. 11 иллюстрирует конструкцию блока/CU уровней на стороне декодера;
Фиг. 12 иллюстрирует алгоритм определения палитры на стороне кодера;
Фиг. 13 иллюстрирует процесс выбора текущей реализации блока/CU уровней, режимов прогнозирования и серий;
Фиг. 14 иллюстрирует первый вариант осуществления изобретения;
Фиг. 15 иллюстрирует второй вариант осуществления изобретения.
Фиг. 16 иллюстрирует другой вариант осуществления изобретения, связанный с комбинацией кодирования по сериям;
Фиг. 17 иллюстрирует кодирование индекса с учетом разреженных списков индексов, определенных из предыдущего режима прогнозирования;
Фиг. 18 иллюстрирует декодирование индекса, кодированного согласно процессу кодирования на фиг. 17;
Фиг. 19 иллюстрирует кодирование индекса с учетом разреженного списка индексов в более общем контексте, когда список содержит более одного пропущенного уровня;
Фиг. 20 иллюстрирует декодирование индекса, кодированного согласно процессу кодирования на фиг. 19;
Фиг. 21 представляет переходный режим; и
Фиг. 22 иллюстрирует принципиальную блок-схему вычислительного устройства.
Подробное описание вариантов осуществления
Один общий принцип стандартов сжатия видео заключается в том, чтобы извлекать выгоду из пространственных и временных избыточностей, так чтобы уменьшать скорость передачи видеобитов. На фиг. 1 и 2, соответственно, представлены различные этапы, выполняемые в видеокодере и в видеодекодере.
Фиг. 1 представляет архитектуру HEVC-кодера. В кодере видеопоследовательностей, исходная последовательность (101) разделена на блоки пикселов (102). На режим кодирования затем оказывается влияние в каждом блоке. Предусмотрено два семейства режимов кодирования: режимы на основе пространственного прогнозирования (внутреннего) (103) и режимы на основе временного прогнозирования (взаимного, Bidir, с пропуском) (104, 105). Внутренний блок, в общем, прогнозируется из кодированных пикселов на причинно-следственной границе посредством процесса, называемого "внутренним прогнозированием".
Временное прогнозирование состоит в нахождении сначала в предыдущем или будущем кадре (т.е. в опорном кадре (116)) опорной области, которая является ближайшей к блоку для кодирования (оценка (104) движения) и, во-вторых, в прогнозировании этого блока с использованием выбранной области (компенсация (105) движения).
В обоих случаях (пространственное и временное прогнозирование), остаток вычисляется посредством вычитания прогнозирования из исходного прогнозированного блока.
При внутреннем прогнозировании, кодируется направление прогнозирования. При временном прогнозировании, кодируется, по меньшей мере, один вектор движения. Тем не менее, чтобы дополнительно уменьшать затраты с точки зрения скорости передачи битов, связанные с кодированием на основе векторов движения, вектор движения непосредственно не кодируется. Фактически, при условии, что движение является гомогенным, особенно интересно кодировать вектор движения в качестве разности между этим вектором движения и вектором движения в его окружении (например, вектором движения соседнего или окружающего блока). В H.264, например, векторы движения кодируются относительно среднего вектора, вычисленного между 3 блоками, расположенными выше и слева от текущего блока. Только разность (также называемая "остаточным вектором движения"), вычисленная между средним вектором и вектором движения текущего блока, кодируется в потоке битов. Этот процесс выполняется посредством модуля (117) Mv-прогнозирования и кодирования. Значение каждого кодированного вектора сохраняется в поле (118) векторов движения. Соседние векторы движения, используемые для прогнозирования, извлекаются из поля (118) векторов движения. Для HEVC, процесс кодирования на основе векторов движения немного отличается и подробно поясняется в следующих разделах.
После этого выбирается режим, оптимизирующий производительность искажения в зависимости от скорости передачи (106). Чтобы дополнительно уменьшать избыточность, преобразование (DCT) применяется к остаточному блоку (107), и квантование применяется к коэффициентам (108). Квантованный блок коэффициентов затем энтропийно кодируется (109), и результат вставляется в поток (110) битов. Кодер затем выполняет декодирование кодированного кадра для будущей оценки (111-116) движения. Эти этапы обеспечивают возможность кодеру и декодеру иметь идентичные опорные кадры.
Чтобы восстанавливать кодированный кадр, остаток обратно квантуется (111) и обратно преобразуется (112), чтобы предоставлять "декодированный" остаток в пиксельной области. Согласно режиму кодирования (взаимному или внутреннему), этот остаток суммируется со взаимным предиктором (114) или с внутренним предиктором.
Затем это первое восстановление кадра фильтруется (115) посредством одного или нескольких видов постфильтрации. Эти постфильтры интегрированы в контуре кодера и декодера. Это означает то, что они должны применяться к восстановленному кадру на стороне кодера и декодера, чтобы использовать идентичный опорный кадр на стороне кодера и декодера. Цель этой постфильтрации состоит в том, чтобы удалять артефакты сжатия. Например, H.264/AVC использует фильтр удаления блочности. Этот фильтр может удалять артефакты блочности вследствие DCT-квантования остатка и блочной компенсации движения. В текущем HEVC-стандарте, используются 3 типа контурных фильтров: фильтр удаления блочности, фильтр на основе дискретизированного адаптивного смещения (SAO) и адаптивный контурный фильтр (ALF). Эти контурные фильтры описываются в нижеприведенном разделе.
Фиг. 2 представляет архитектуру HEVC-декодера. На фиг. 2, представлен принцип декодера. Видеопоток (201) сначала энтропийно декодируется (202). Остаточные данные затем обратно квантуются (203) и обратно преобразуется (204), чтобы получать пиксельные значения. Данные режима также энтропийно декодируются, и в функции режима выполняется внутреннее декодирование или взаимное декодирование. В случае внутреннего режима, внутренний предиктор определяется в функции режима внутреннего прогнозирования, указываемого в потоке битов (205). Если режим является взаимным, информация движения извлекается из потока битов (202). Это состоит из индекса опорного кадра и остатка вектора движения. Предиктор вектора движения суммируется с остатком вектора движения, чтобы получать вектор движения (210). Вектор движения затем используется для того, чтобы находить опорную область в опорном кадре (206). Следует отметить, что данные вектора движения или поле (211) векторов движения обновляются с декодированным вектором движения, с тем чтобы использоваться для прогнозирования следующих декодированных векторов движения. Это первое восстановление декодированного кадра далее подвергается постфильтрации (207) с помощью постфильтра, полностью идентичного постфильтру, используемому на стороне кодера. Вывод декодера представляет собой несжатое видео (209).
Фиг. 3 иллюстрирует причинно-следственный принцип в видеокодере или видеодекодере. При кодировании индекса A, вся часть B может использоваться для того, чтобы повышать эффективность кодирования для A. К C не может осуществляться доступ.
Фиг. 4 иллюстрирует новый видеоформат, который должен поддерживать будущее расширение HEVC-диапазона. Расширение HEVC-диапазона, также обычно называемое "HEVC RExt", представляет собой расширение в соответствии с определением нового стандарта кодирования видео (HEVC). Цель этого расширения состоит в том, чтобы предоставлять дополнительные инструментальные средства, чтобы кодировать видеопоследовательности с дополнительными цветовыми форматами и битовой глубиной. Более конкретно, это расширение должно поддерживать цветовой видеоформат 4:2:2, а также цветовой видеоформат 4:4:4. Если текущий HEVC-стандарт позволяет решать проблемы, связанные с цветовым форматом 4:2:0 с 8 и 10 битами в расчете на выборку цветов, расширение HEVC-диапазона должно дополнительно поддерживать видеоформат 4:2:2 и 4:4:4 с расширенной битовой глубиной в диапазоне от 8 битов до 14 битов.
Цветное изображение, в общем, формируется из 3 цветовых компонентов R, G и B. Эти компоненты, в общем, коррелируются, и в сжатии изображений и видео очень распространена декорреляция цветовых компонентов до обработки изображений. Наиболее распространенный формат представляет собой цветовой YUV-формат. YUV-сигналы типично создаются из RGB-изображений, посредством использования линейного преобразования в 3 ввода в форме входных R-, G- и B-изображений. Y обычно называется "компонентом сигнала яркости", U и V, в общем, называются "компонентами сигнала цветности". Термин "YCbCr" также обычно используется вместо термина "YUV".
Очень распространено применение различных выборочных отношений к этим трем цветовым компонентам. Схема субдискретизации обычно выражается как трехчастное отношение J:a:b (например, 4:2:2), которое описывает число выборок яркости и цветности в концептуальной области, которая имеет ширину в J пикселов и высоту в 2 пиксела. Части (в их соответствующем порядке) следующие:
J: горизонтальный опорный уровень дискретизации (ширина концептуальной области). Обычно, составляет 4.
a: число выборок (Cr, Cb) цветности в первой строке J пикселов.
b: число (дополнительных) выборок (Cr, Cb) цветности во второй строке J пикселов.
Фиг. 4 иллюстрирует различные рассматриваемые форматы сигнала цветности в HEVC RExt. Эти форматы отличаются вследствие различного размера изображения трех цветовых компонентов и различного типа цветовых компонентов.
В YUV-формате сигнала цветности 4:2:0, проиллюстрированном в (401), изображения формируются из 3 цветовых компонентов: Y (401,1), U (401,2) также обозначаются как Cr, и V (401,3) также обозначается как Cb. Если изображение на основе Y-компонента имеет ширину в W пикселов и высоту в H пикселов, изображения на основе U- и V-компонентов имеют ширину в W/2 пикселов и высоту в H/2 пикселов.
В YUV-формате сигнала цветности 4:2:2, проиллюстрированном в (402), изображения формируются из 3 цветовых компонентов: Y (402.1), U (402.2) также обозначаются как Cr, и V (402.3) также обозначается как Cb. Если изображение на основе Y-компонента имеет ширину в W пикселов и высоту в H пикселов, изображения на основе U- и V-компонентов имеют ширину в W/2 пикселов и высоту в H пикселов.
В YUV-формате сигнала цветности 4:4:4, проиллюстрированном в (403), изображения формируются из 3 цветовых компонентов: Y (403.1), U (403.2) также обозначаются как Cr, и V (403.3) также обозначается как Cb. Эти три компонента имеют идентичную ширину W и высоту H.
В RGB-формате сигнала цветности 4:4:4, проиллюстрированном в (403), изображения формируются из 3 цветовых компонентов: R (403.1), G (403.2) и B (403.3). Эти три компонента имеют идентичную ширину W и высоту H.
Когда изображение является монохромным, его формат называется "4:0:0".
Битовая глубина входных выборок является числом битов, связанным с каждым пикселом для каждого цветового компонента. HEVC-версия 1 задается для входной выборки в 8 битов для формата 4:2:0. Когда входные выборки представлены с 8 битами, каждая выборка может принимать 2^8=256 значений. В некоторых вариантах применения, полезно расширять битовую глубину входной выборки таким образом, чтобы иметь большую динамику выборок. Обычно, цель состоит в том, чтобы повышать визуальное качество видео. Известные битовые глубины составляют 8, 10, 12, 14 или 16 битов. Расширение диапазона (RExt) HEVC выделяется этой большей динамике в дополнение к расширенному цветовому формату.
Кроме того, расширение диапазона (RExt) HEVC позволяет кодировать без потерь входные последовательности. Цель кодека без потерь (в противоположность с потерями) состоит в том, чтобы иметь декодированный вывод, строго идентичный вводу. Чтобы достигать этого, ряд аспектов должны модифицироваться или добавляться, по сравнению с кодеком с потерями. Ниже приводится неполный список конкретных аспектов, требуемых для работы HEVC без потерь:
- Удаление квантования (основного источника ошибок);
- Принудительная активация обходного преобразования, поскольку нормальные косинусные/синусные преобразования могут вводить ошибки (помимо того, что более не подходят для кодирования без потерь);
- Удаление инструментальных средств, в частности, индивидуально адаптированных для компенсации шума квантования, таких как DBF и SAO.
Кроме того, дополнительные инструментальные средства, конкретные для расширения диапазона (RExt) HEVC, добавлены или рассматриваются для того, чтобы эффективно кодировать видеопоследовательности "экранного контента" в дополнение к естественным последовательностям. Последовательности "экранного контента" означают конкретные последовательности, которые имеют очень конкретный контент. Видеопоследовательности "экранного контента" связаны с видеопоследовательностями, соответствующими последовательностям, захваченным из персонального компьютера любого другого устройства, содержащим, например, текст, представление в форме слайдов, графический пользовательский интерфейс, таблицу. Эти конкретные последовательности имеют очень отличающуюся статистику по сравнению с естественными видеопоследовательностями. При кодировании видео, производительность традиционных инструментальных средств кодирования видео иногда является неэффективной для этого конкретного видеоконтента.
Рассматриваемые в данный момент инструментальные средства представляют собой режим "внутреннего блочного копирования" и "цветовой палитровый режим". Они демонстрируют хорошую эффективность по сравнению с традиционным способом, фокусирующимся на естественных видеопоследовательностях. Цветовой палитровый режим представляет собой инструментальное средство, которое рассматривается в рамках этого изобретения для того, чтобы дополнительно повышать эффективность кодирования расширения HEVC-диапазона при фокусировании на видеопоследовательностях экранного контента.
Фиг. 5 иллюстрирует разбиение блока дерева кодирования на единицы кодирования и декодирование в порядке сканирования этих единиц кодирования. В HEVC-стандарте, блочная структура организована посредством блока дерева кодирования (CTB). Кадр содержит несколько неперекрывающихся и квадратных блоков дерева кодирования. Размер блока дерева кодирования может варьироваться от 64x64 до 16x16. Этот размер определяется на уровне последовательности. Самый эффективный размер, с точки зрения эффективности кодирования, является наибольшим: 64x64. Следует обратить внимание на то, что все блоки дерева кодирования имеют идентичный размер за исключением цвета границы изображения. В этом случае, размер адаптирован согласно числу пикселов.
Каждый блок дерева кодирования содержит одну или более квадратных единиц кодирования (CU). Блок дерева кодирования разбивается на основе структуры в виде дерева квадрантов на несколько единиц кодирования. Порядок кодирования или декодирования каждой единицы кодирования в блоке дерева кодирования соответствует структуре в виде дерева квадрантов на основе порядка растрового сканирования. Фиг. 5 показывает пример порядка декодирования единиц кодирования. На этом чертеже, число в каждой единице кодирования задает порядок декодирования каждой единицы кодирования этого блока дерева кодирования.
Фиг. 6 показывает синтаксическое HEVC-кодирование. В HEVC-стандарте или в HEVC RExt, несколько способов используются для того, чтобы кодировать различные элементы синтаксиса. HEVC использует несколько типов энтропийного кодирования, таких как контекстно-адаптивное двоичное арифметическое кодирование (CABAC), код Голомба-Райса или простое двоичное представление, называемое "кодированием фиксированной длины". Большую часть времени процесс преобразования в двоичную форму выполняется до кодирования, чтобы представлять различные элементы синтаксиса. Этот процесс преобразования в двоичную форму также является очень специфичным и зависит от различного элемента синтаксиса.
Например, элемент синтаксиса, называемый "coeff_abs_level_remaining", содержит абсолютное значение или часть абсолютного значения остатка коэффициентов. Идея этого конкретного кодирования состоит в том, чтобы использовать код Голомба-Райса для первых значений и экспоненциальный код Голомба для более высоких значений. Более конкретно, в зависимости от данного параметра, называемого "параметром Голомба", это означает то, что для представления первых значений (например, из 0-3), используется код Голомба-Райса, а затем для более высоких значений (от 4 и выше), используется экспоненциальный код Голомба.
Фиг. 6 иллюстрирует данный принцип этого конкретного процесса декодирования. Входные данные этого процесса представляют собой поток (601) битов и rParam, который известен как команда или параметр Райса-Голомба. Вывод этого процесса представляет собой декодированный символ (612).
Значение префикса задается равным 1 (602), далее 1 бит извлекается из потока (601) битов, и переменный флаг задается равным декодированному значению (603). Если этот флаг равен 0 (604), значение префикса постепенно увеличивается (605), и другой бит извлекается из потока (603) битов. Когда значение флага равно 1, решающий модуль (606) проверяет то, меньше или нет префикс значения 3. Если это является истинным, N=rParam битов извлекаются (608) из потока (601) битов и задаются как переменная codeword. Это кодовое слово соответствует представлению Голомба-Райса. Значение (612) символа задается равным ((prefix<<rParam)+codeword), как проиллюстрировано на этапе (609). При этом << является оператором сдвига влево.
Если Prefix выше или равен 3 на этапе (606), следующий этап представляет собой (610), на котором N=(prefix-3+rParam) битов извлекаются из потока битов и задаются как переменная codeword (610). Значение (611) символа задается равным ((1<<(prefix-3))+2)<< rParam)+codeword. Это соответствует экспоненциальному представлению Голомба.
В нижеприведенном техническом примечании, этот процесс декодирования (или, симметрично, процесс кодирования), описанный на этом чертеже, называется "Golomb_H" с входным параметром parameterParam. Его можно записывать просто как Golomb_H(Param).
В HEVC-стандарте и расширении HEVC-диапазона, параметр rParam Голомба обновляется согласно формуле, чтобы адаптировать энтропийное кодирование в сигнал, который должен быть кодирован. Эта формула пытается уменьшать размер кода Голомба посредством увеличения порядка Голомба, когда коэффициенты имеют большие значения. В HEVC-стандарте, обновление задается посредством следующей формулы:
rParam=Min(cLastRiceParam+(cLastAbsLevel>(3*(1<<cLastRiceParam))? 1:0), 4)
Если cLastRiceParam является последним используемым rParam, cLastAbsLevel является последним декодированным coeff_abs_level_remaining. Следует обратить внимание на то, что для первого параметра, который должен кодироваться или декодироваться, cLastRiceParam и cLastAbsLevel задаются равными 0. Кроме того, следует обратить внимание на то, что параметр rParam не может превышать значение 4.
Для расширения HEVC-диапазона, эта формула обновлена таким образом, что она приспособлена с возможностью решать проблемы, связанные с большей битовой глубиной, и принимать во внимание очень высокое качество, требуемое посредством приложения, решающего проблемы, связанные со сжатием видео расширенного формата (4:2:2 и 4:4:4), включающие в себя кодирование без потерь. Для расширения диапазона, формула обновления изменена следующим образом:
rParam=Min(cLastRiceParam+(cLastAbsLevel>>(2+cLastRiceParam)), 7)
В этой формуле, максимальное значение Param равно 7. Кроме того, для первого кодирования coeff_abs_level_remaining для субблока блока преобразования, параметр Голомба задается равным:
rParam=Max(0, cRiceParam-(transform_skip_flag||cu_transquant_bypass_flag?1:2)), причем:
- переменная transform_skip_flag задается равной 1, если преобразование пропускается для текущей CU, и 0, если используется преобразование.
- переменная cu_transquant_bypass_flag задается равной 1, если CU кодируется без потерь, и 0 в противном случае.
- переменная cRiceParam задается равной последнему используемому rParam из другого субблока целого блока, в противном случае задается равной 0.
Далее описывается принцип палитрового режима, который является фокусом изобретения. Палитровый режим представляет собой новый способ кодирования, который представлен в рамках расширения диапазона. Этот способ является эффективным для кодирования видео, фокусирующегося на видеопоследовательностях "экранного контента". Палитровый способ, предложенный в расширении HEVC-диапазона, представляет собой тип режима прогнозирования. Это означает то, что палитровый способ используется для того, чтобы компоновать предиктор для кодирования данной CU, аналогично прогнозированию, выполняемому посредством прогнозирования движения (взаимный случай) или посредством внутреннего прогнозирования. После формирования прогнозирования остаточная CU преобразуется, квантуется и кодируется.
Палитра, в общем, представляется посредством таблицы, содержащей набор цветов кортежей из N элементов, причем каждый цвет задается посредством своих компонентов в данном цветовом пространстве. Например, в типичном RGB-формате, палитра состоит из списка из P элементов кортежа из N элементов (где N=3 для RGB). Более точно, каждый элемент соответствует фиксированному триплету цвета в RGB-формате. Конечно, он не ограничен цветовым RGB- или YUV-форматом. Любой другой цветовой формат может быть представлен посредством палитры и может использовать меньшее или большее число цветов (что означает то, что N отличается от 3).
На стороне кодера, палитровый режим, рассматриваемый в RExt, состоит в преобразовании пиксельных значений данной входной CU в конечное число индексов (или уровней). Эти индексы означают индексы ассоциированной палитры, которые задают ограниченное число цветов. После применения способа на основе палитрового режима результирующая CU составляется из индексов и затем передается в декодер с ассоциированной палитрой (таблицей ограниченных триплетов, используемых для того, чтобы представлять CU).
Для того, чтобы применять палитровый режим на стороне кодера, можно продолжать работу рядом способов, но простейший способ представлять блок пикселов заключается в следующем:
- нахождение P триплетов, описывающих в лучшем случае CU пикселов для кодирования (например, посредством минимизации полного искажения);
- затем ассоциирование с каждым пикселом ближайшего цвета из P триплетов: значение для кодирования в таком случае является соответствующим индексом.
На стороне декодера, палитровый режим состоит в проведении преобразования обратным способом. Это означает то, что для каждого декодированного индекса, ассоциированного с каждым пикселом CU, процесс состоит в восстановлении CU посредством использования палитры, кодированной в потоке битов для каждой CU. Это означает то, что каждый индекс, ассоциированный с каждым пикселом, заменен посредством цвета, чтобы восстанавливать соответствующий цвет для каждого пиксела CU. Как уже упомянуто, палитровый режим представляет собой режим прогнозирования, это означает то, что может ассоциироваться остаточное кодирование. Оно затем добавляется в прогнозирование, чтобы компоновать конечную восстановленную CU.
Фиг. 7a дополнительно иллюстрирует принцип прогнозирования в палитровом режиме на стороне декодера, исследуемый в расширении диапазона HEVC. Режим прогнозирования для текущей CU извлекается на этапе (702) из потока (701) битов. В настоящее время, палитровый режим идентифицируется посредством флага, расположенного перед флагом пропуска в потоке битов. Этот флаг CABAC-кодируется с использованием одного контекста. Если этот режим представляет собой палитровый режим (703), затем связанный синтаксис палитрового режима (705) извлекается (704) из потока (701) битов.
Затем в ходе этапа (706) компонуются два элемента: палитра (707) и блок/CU уровней (708). Согласно этому блоку/CU уровней и ассоциированной палитры, предиктор (710) блока/CU (в пиксельной области) компонуется (709). Это означает то, что для каждого уровня блока/CU, (RGB- или YUV-) цвет ассоциирован с каждым пикселом.
Затем остаток CU декодируется (711) из потока (701) битов. В текущей реализации палитрового режима, исследуемой в расширении диапазона остаток, ассоциированный с палитровым режимом, кодируется с использованием общего способа взаимного остаточного HEVC-кодирования. Чтобы получать остаток CU, выполняется традиционное обратное квантование и обратное преобразование. Предиктор блока (710) суммируется (713) с этим остатком (712) блока, чтобы формировать восстановленную CU (714).
Фиг. 7b описывает другую реализацию палитрового режима на стороне декодера, исследуемую в расширении для экранного кодирования HEVC. В этом случае, отсутствуют остатки и, по сути, прогнозирование. Вместо этого, пикселы, которые не могут быть надлежащим образом представлены посредством палитры, кодируются в качестве значений управляющего кода, т.е. индекс используется для того, чтобы указывать то, что передаются явные, квантованные пиксельные значения. Когда пиксел кодирован в качестве значения управляющего кода, флаг управляющего кода, как описано ниже, задан равным предварительно определенному значению. Как следствие, по сравнению с фиг. 7a, несколько этапов модифицируются. Поскольку синтаксис немного изменен с учетом того, что остаток не кодирован, этап 704b извлекает конкретный синтаксис 705b по сравнению с 705. Фактически в этом новом режиме пиксельные значения кодированы с использованием палитрового режима, если это возможно. В противном случае, если пиксельное значение не может кодироваться с использованием элементов палитры (например, поскольку палитра достигает своего максимального размера, и новые значения не могут добавляться), пиксельное значение кодировано в качестве значения управляющего кода.
Декодер затем, аналогично этапу 706 на фиг. 7a, также восстанавливает палитру 707, CU уровней 108 и помимо этого блок 715 значений управляющих пикселов в ходе этапа 706b. Этот новый блок 715 комбинируется в уже известный блок 708, с тем чтобы формировать выходной блок 714.
Фиг. 8a иллюстрирует принцип палитрового способа на стороне кодера. Текущая CU 801 преобразуется в блок 802 идентичного размера, который содержит уровни вместо пикселов с 3 значениями (Y, U, V) или (R, G, B). Палитра, ассоциированная с этим блоком или CU 803, компонуется и содержит для каждой записи уровня связанные значения пиксельного цвета. Следует обратить внимание на то, что для монохромного варианта применения, пиксельное значение может содержать только один компонент.
Фиг. 8b расширяет этот принцип с использованием значений управляющих пикселов в отношении с фиг. 7a. Когда пиксельное значение 811 пиксельного блока 801b не может быть представлено посредством элемента палитры, оно, следовательно, передается в служебных сигналах в качестве значения управляющего кода. Оно может передаваться в служебных сигналах посредством использования конкретного индексного уровня в 802b (аналогично 708), например, 812 (принимает значение 3), запись 813 которого в палитре 803b (аналогично 707) фактически не определена: элементы палитры фактически не передаются. Вместо этого, значения управляющих пикселов передаются в качестве части 804b (аналогично 715). Очевидно, что средство, отличное от 812/813, может использоваться для того, чтобы передавать в служебных сигналах и передавать значения управляющих пикселов, такие как флаг управляющего кода.
Как упомянуто на фиг. 7a, палитра кодируется и вставляется в поток битов для каждой CU. Аналогичным образом, блок/CU уровней кодируется и вставляется в поток битов, и пример приводится на фиг. 9. В этом примере, CU обрабатывается построчно в горизонтальном порядке (например, слева направо).
На фиг. 9, блок/CU (91) уровней является полностью идентичным блоку/CU уровней на фиг. (802). Таблицы (92) и (93) описывают последовательные этапы, чтобы обрабатывать блок/CU (91). Таблица (93) должна рассматриваться в качестве следующих этапов таблицы (92). Цвета, используемые в этих таблицах, соответствуют восьми этапам для обработки блока/CU (91) пикселов, имеющего один цвет.
Эти две таблицы иллюстрируют текущий синтаксис, ассоциированный с палитровым режимом. Эти элементы синтаксиса соответствуют кодированной информации, ассоциированной в потоке битов для CU (91). В этих таблицах, 3 основных элемента синтаксиса используются для того, чтобы полностью представлять операции палитрового режима, и используются следующим образом:
Флаг "режима прогнозирования"
Когда этот флаг равен 0: это означает то, что новый уровень используется для текущего пиксела. Уровень передается в служебных сигналах непосредственно после этого флага;
Когда этот флаг равен 1: это означает то, что используется режим "с копированием вверх". Более конкретно, это означает то, что текущий пиксельный уровень соответствует пиксельному уровню, расположенному в линии непосредственно выше (начинающейся в идентичной позиции для порядка растрового сканирования). В этом случае, флаг "режима прогнозирования" равен 1, нет необходимости передавать в служебных сигналах уровень непосредственно после.
Пиксельный уровень, расположенный в линии непосредственно выше, имеет пространственно по соседству текущий пиксел.
Level
Этот элемент синтаксиса указывает значение уровня палитры для текущего пиксела.
Run
Этот элемент синтаксиса имеет различный смысл, который зависит от флага "режима прогнозирования".
Когда флаг "режима прогнозирования" равен 0: этот элемент синтаксиса указывает число последовательных пикселов, в которых идентичный уровень применяется непосредственно после текущего уровня. Например, если Run=8, это означает то, что текущий уровень применяется к текущей выборке (пиксельному местоположению) и к следующим 8 выборкам, что соответствует 9 выборкам всего.
Когда флаг "режима прогнозирования" равен 1: этот элемент синтаксиса указывает число последовательных пикселов, в которых режим "с копированием вверх" применяется непосредственно после текущего уровня. Например, если Run=31, это означает то, что уровень текущей выборки копируется из выборки линии выше, а также из следующих 31 выборок, что соответствует 32 выборкам всего.
Относительно таблиц (92) и (93), представляется восемь этапов, чтобы представлять блок/CU (91) посредством использования палитрового режима. Каждый этап начинается с кодирования флага "режима прогнозирования", после чего кодируется элемент синтаксиса уровня, если флаг "режима прогнозирования" равен 0, или элемент Run синтаксиса, если флаг "режима прогнозирования" равен 1. После элемента Level синтаксиса всегда следует элемент Run синтаксиса.
Фиг. 10 представляет декодирование элементов синтаксиса палитрового режима.
Когда режим прогнозирования, декодированный для текущего блока, представляет собой палитровый режим, декодер сначала декодирует синтаксис, связанный с этим блоком, и затем применяет процесс восстановления для CU, описанной на фиг. 11.
Фиг. 10 подробно иллюстрирует процесс декодирования элементов синтаксиса, связанных с палитровым режимом. Во-первых, размер палитры извлекается и декодируется (1002) из потока (1001) битов. Точный размер палитры (Palette_size) получается посредством суммирования 1 с этим значением размера, декодированным на этапе (1002). Фактически, размер кодируется посредством использования унарного кода, для которого значение 0 имеет наименьшее число битов (1 бит), и размер палитры не может быть равен 0, в противном случае пиксельное значение не может использоваться для того, чтобы компоновать предиктор блока.
После этого начинается процесс, соответствующий декодированию значений палитры. Переменная i, соответствующая индексу палитры, задается равной 0 (1004), после этого на этапе 1005 выполняется тест, чтобы проверять то, равен или нет i размеру (Palette_size) палитры. Если это не имеет место, один элемент палитры извлекается из потока (1001) битов и декодируется (1006) и затем добавляется в палитру со связанным уровнем/индексом, равным i. Затем переменная i постепенно увеличивается посредством этапа (1007). Если i равен размеру (1005) палитры, палитра полностью декодирована.
Затем выполняется процесс, соответствующий декодированию блока уровней. Во-первых, переменная j, соответствующая счетчику пикселов, задается равной 0, как и переменная syntaxj (1008). Затем выполняется проверка, чтобы выяснять то, соответствует или нет счетчик пикселов числу пикселов, содержащемуся в блоке/CU. Если ответ представляет собой "Да" на этапе (1009), процесс завершается этапом (1017), в противном случае значение флага "режима прогнозирования", соответствующего одному режиму прогнозирования, извлекается из потока (1001) битов и декодируется (1010).
Значение "режима прогнозирования" добавляется в таблицу в индексе syntaxj, содержащем все декодированные значения "режима прогнозирования". Если значение этого "режима прогнозирования" равно 0 (1011), элемент синтаксиса, соответствующий Level, извлекается из потока (1001) битов и декодируется (1012). Эта переменная Level добавляется в таблицу в индексе syntaxj, содержащем все декодированные уровни. Переменная j, соответствующая счетчику пикселов, постепенно увеличивается на единицу (1013).
Затем элемент Run синтаксиса декодируется на этапе (1014). Если элемент Pred Mode синтаксиса равен 1 (1011), значение Run также декодируется на этапе (1014). Этот элемент Run синтаксиса добавляется в таблицу в индексе syntaxj, содержащем все декодированные серии.
Затем на этапе (1015), значение j постепенно увеличивается посредством значения серии, декодированной на этапе (1014). Переменная syntaxj постепенно увеличивается. Если счетчик j равен числу пикселов в блоке, то, синтаксис для того, чтобы компоновать предиктор палитры, завершается (1017). В конце этого процесса, связанного с палитрой, декодер знает палитру и таблицы, содержащие список всех элементов Pred mode, Level и Run синтаксиса, ассоциированных с режимом палитрового прогнозирования этой CU. Декодер затем может переходить к процессу восстановления CU.
Следующая таблица предоставляет варианты использования энтропийных кодов для каждого элемента синтаксиса.
Элемент синтаксиса
Энтропийные коды
Элемент палитры (Y, U, V) или (R, G, B)(этап 1006)
3 двоичных кода, соответствующие 3 цветам (Y, U, V) или (R, G, B).Длина двоичного кода соответствует битовой глубине каждого цветового компонента. Пример: 8 битов, чтобы представлять 256 значений.
Palette_size (этап 1002)
Унарный код
Pred mode
1 бит
Level
Двоичный кодb битов, b является целым числом, так что 2<sup>b</sup> является наименьшим целым числом, равным или выше Palette_size, т.е. для P=14, b=4, а для P=4, b=2
Run
Golomb_H (Param=3), как описано на фиг. 6.
Фиг. 11 иллюстрирует процесс восстановления, чтобы компоновать CU, которая используется в качестве предиктора. Входные данные этого процесса являются таблицами, содержащими список Pred mode, Level и Run и размер блока/CU.
На первом этапе (1101), переменная i, представляющая счетчик пикселов, задается равной 0, и переменная j также задается равной 0. Затем элемент, извлеченный из таблицы "режима прогнозирования" в индексе j, проверяется на предмет того, равен он 0 или нет (1104). Если он равен 0, это означает то, что новый уровень кодируется для этого текущего пиксела i.
Таким образом, значение пиксела в позиции i задается равным уровню в индексе j из таблицы уровней (1105) (Block[i]=Level[j]).
Переменная i постепенно увеличивается на единицу (1106). Переменная k задается равной 0 (1107). На (1108) выполняется проверка для того, чтобы выяснять, равен или нет k элементу Run таблицы серий в индексе j. Если это не имеет место, значение (значение уровня) пиксела в позиции i задается равным значению (значению уровня) пиксела в позиции i-1 (1109), что соответствует следующему выражению Block[i]=Block[i-1]. Переменная i (1110) и переменная k (1111) затем постепенно увеличены на единицу. Если проверка на этапе 1108 возвращает "Да", распространение значения левого уровня завершается, и выполняется этап 1120.
Когда проверка на этапе 1104 возвращает значение "Нет", начинается режим "с копированием вверх". Переменная k задается равной 0 (1112). Этап 1113 проверяет то, равен или нет (k-1) элементу Run таблицы серий в индексе j. Если это не имеет место, значение (значение уровня) пиксела в позиции i задается равным значению (значению уровня) пиксела в позиции i верхней линии (1014). Это соответствует следующему выражению Block[i]= Block[i-width]. Значение width является шириной блока/CU. Переменная i и переменная k затем постепенно увеличиваются на единицу на этапах 1115 и 1116. Если проверка на этапе 1113 возвращает значение "Да", режим прогнозирования "с копированием вверх" завершается, и выполняется следующий этап 1120.
На этапе 1120, выполняется проверка, чтобы выяснять то, равна или нет переменная i числу пикселов в блоке/CU. Если это не имеет место, переменная j постепенно увеличивается на единицу (1121), и процесс продолжается на этапе (1104), уже описанном выше.
Если проверка является положительной на этапе (1120), на все уровни оказывается влияние для каждого пиксела блока на этапе (1122).
Затем заключительный этап (1123) состоит в преобразовании каждого уровня в значение цвета согласно контенту палитры. Этот процесс влияет на пиксельное значение (Y, U, V) или (R, G, B) в каждой позиции блока согласно уровню этой позиции в блоке и записям палитры.
Фиг. 12 иллюстрирует алгоритм определения палитры на стороне кодера. Входные данные этого процесса представляют собой исходный блок/CU и размер блока/CU.
В этом примере, создается YUV-палитра, но RGB-палитра может компоноваться аналогичным образом.
На первом этапе (1201), переменная, представляющая счетчик i пикселов и переменную Palette_size, задается равной 0. Переменная TH, представляющая пороговое значение, задается равной 9. Затем на этапе (1203) пиксел pi считывается (1203) из исходного блока (1204). Затем переменная j задается равной 0 (1205), и на этапе (1206), выполняется проверка, чтобы выяснять то, равен или нет размер палитры переменной j.
Если это имеет место, палитра в индексе j задается равной пиксельному значению pi (1209). Это означает то, что текущий пиксел Pi становится записью палитры. Более точно, выполняется следующее назначение:
PALY[j]=(Yi)
PALU[j]=(Ui)
PALV[j]=(Vi)
Размер (Palette_size) палитры постепенно увеличивается на единицу (1210), и таблица вхождений задается равной 1 для индекса (1211) "размера палитры". Затем переменная i постепенно увеличивается (1213), чтобы рассматривать следующий пиксел i блока/CU.
На этапе (1214) выполняется проверка, чтобы выяснять то, обработаны или нет все пикселы блока/CU. Если "Да", процесс завершается посредством процесса (1215) упорядочения, поясненного ниже, в противном случае следующий пиксел рассматривается на этапе (1203), который уже описан.
Возвращаясь к этапу (1206), когда проверка возвращает значение "Нет", следующий этап представляет собой этап (1207), на котором вычисляется абсолютное значение для каждого цветового компонента между pi и элементом палитры в индексе j. Если все абсолютные разности строго ниже порогового значения, равного TH (заданного равным 9 в этом варианте осуществления), счетчик вхождений относительно записи j в палитре постепенно увеличивается на единицу. После этапа (1212), следующий этап представляет собой этап (1213), который уже описан.
На этапе (1207), когда проверка возвращает отрицательный ответ, переменная j постепенно увеличивается (1208), чтобы сравнивать другие элементы палитры с текущим пикселом (1207). Если ни один элемент в палитре не соответствует критерию (1207), новый элемент добавляется в палитру (1209, 1210, 1211).
Следует обратить внимание на то, что решающий модуль (1207) может сравнивать каждый цветовой элемент для 444 (YUV- или RGB-) последовательностей и может сравнивать цветовой компонент сигнала яркости только для 420 последовательностей.
В конце этого процесса, таблица "Счетчик" содержит вхождения элементов палитры. Затем элементы палитры упорядочиваются на этапе (1215) согласно их вхождениям таким образом, что самый частый элемент находится в первой позиции в палитре.
Кроме того, размер палитры может превышать максимальный размер палитры, который является фиксированно равным 24 в текущей реализации. Если размер палитры превышает 24, размер палитры задается равным 24, и оставшиеся элементы удаляются из палитры. В конце этих процессов палитра компонуется. Это является только примером реализации, и можно компоновать палитру непосредственно с помощью этого алгоритма.
Фиг. 13 иллюстрирует процесс выбора текущей реализации блока уровней, режимов прогнозирования и серий. Входные данные этого процесса представляют собой исходный блок/CU, палитру и размер блока/CU.
На первом этапе, переменная i относительно счетчика пикселов задается равной 0 (1301).
2 режима прогнозирования ("режим прогнозирования"=0 и "режим прогнозирования"=1) оцениваются независимо.
Для прогнозирования "с копированием вверх" (соответствующего "режиму прогнозирования"=1), переменная icopy задается равной 0 (1303). Затем этап (1304) проверяет то, равен или нет текущий уровень в пиксельном местоположении Block[i+icopy] уровню пиксела в верхней линии, соответствующей местоположению Block[i+icopy-width], причем width соответствует ширине рассматриваемой CU текущего блока. Если ответ является положительным, переменная icopy постепенно увеличивается на единицу на этапе (1305).
Следует обратить внимание на то, что уровень каждого индекса блока/CU определяется параллельно на этапе (1308). Это состоит в оказании влияния на пиксел в позиции i в ближайшем элементе палитры (1308). Этот процесс использует позицию i, палитру (1306) и исходный блок (1307). На этапе (1308), уровень ассоциирован с выборкой, расположенной в позиции i в блоке/CU.
Если на этапе (1304) ответ возвращает "Нет", переменная icopy передается в решающий модуль 1314. Эта переменная icopy соответствует числу значения, копируемому из верхней линии.
Параллельно (или последовательно) обрабатывается контур для того, чтобы определять значение серии для режима с прогнозированием влево. Сначала переменные iStart и j задаются равными i, и ileft задается равной 0 (1009). На этапе (1310) выполняется проверка, чтобы выяснять то, истинно или нет j!=0 и "Pred mode[j-1]"=0, и Block[j]=Block[j-1]. Если это является истинным, переменная ileft постепенно увеличивается на единицу (1311), и переменная j постепенно увеличивается (1312).
Когда на этапе 1310 ответ представляет собой "Нет", следующий этап представляет собой (1313), на котором выполняется новая проверка. Если j больше iStart (1313). Таким образом, проверяется то, является оно или нет первым значением режима прогнозирования, который не прогнозируется, а непосредственно кодируется с помощью уровня (j!=0 или Pred mode[j-1]=0). Если оно не является первым значением, переменная ileft передается в решающий модуль 1314. Кроме того, если оно является первым проверенным уровнем (1313), только переменная j постепенно увеличивается. Идентично контуру для прогнозирования "с копированием вверх", уровень в индексе i Block[i] определяется в идентичном контуре (1308).
После вычисления максимальной серии для режима "с прогнозированием влево" и "с копированием вверх" переменные ileft и icopy сравниваются (1314) согласно выяснению того, истинно или нет icopy!=0, и icopy+2 больше ileft. Это означает то, что, если icopy равен 0, режим с прогнозированием влево выбирается (icopy!=0) (1315). Если он отличается от 0, и icopy+2 больше ileft, выбирается режим "с копированием вверх" (1316). Для режима с прогнозированием влево, переменная PredMode задается равной 0, а серия равной ileft (1315). Для режима "с копированием вверх", переменная PredMode задается равной 1, а серия равной icopy-1 (1316).
Затем таблицы, содержащие Pred mode и Run, обновляются с текущим значением Pred mode и Run (1317). Обратите внимание на то, что следующая позиция, которую следует рассматривать на этапе (1318), соответствует текущей позиции, постепенно увеличенной посредством значения Run. Затем на этапе (1319) выполняется проверка, чтобы выяснять то, что последние пикселы обработаны. Если "Да", процесс завершается (1320), в противном случае, оценка двух режимов прогнозирования "с прогнозированием влево" и "с копированием вверх" выполняется для следующей пиксельной позиции.
В конце этого процесса, кодер знает уровни для каждой выборки блока/CU и имеет возможность кодировать соответствующий синтаксис блока/CU на основе контента двух таблиц Pred mode и Run.
Чтобы определять блочное прогнозирование, кодер затем преобразует заданный блок уровней согласно палитре.
В первом варианте осуществления настоящего изобретения, кодирование/декодирование "режима прогнозирования" не допускается для первой линии блока уровней. В этом варианте осуществления, только режим "режим прогнозирования"=0, соответствующий передаче служебных сигналов уровня, используется для первой линии. Фактически, "режим прогнозирования"=1, режим прогнозирования "с копированием вверх" может считаться неприменимым для первой линии, поскольку верхней линии не существует, либо эта верхняя линия не находится в блоке кодируемых уровней, либо если она принадлежит палитровому режиму, эта линия не должна использовать идентичную палитру. Преимущество этого варианта осуществления заключается в том, что он сокращает число битов для передачи в служебных сигналах "режима прогнозирования", причем доступен режим прогнозирования "с копированием вверх".
Фиг. 14 иллюстрирует этот вариант осуществления. Фиг. 14 основан на фиг. 10. Модули 1401-1417 являются идентичными модулям 1001-1017. Модуль 1418 добавлен для того, чтобы не допускать декодирования "режима прогнозирования", когда переменная j меньше числа пикселов в линии.
Альтернатива этому варианту осуществления заключается в том, чтобы применять процесс выбора уровня к верхней линии. Он состоит в оказании влияния уровня для каждого пиксела верхней линии. В этом случае, режим "с копированием вверх" функционирует идентично внутреннему блоку и может копировать некоторые уровни этой верхней линии. Если эта верхняя линия принадлежит другой CU палитрового режима, уровни, соответствующие этой верхней линии, могут использоваться для режима "с копированием вверх" текущей палитры, даже если палитра вышеуказанной CU и текущей CU могут отличаться.
В одном варианте осуществления, декодирование "режима прогнозирования" зависит от последнего декодированного "режима прогнозирования". "Режим прогнозирования" не декодируется, когда последний декодированный "режим прогнозирования" равен 1 ("копирование вверх"). Фактически, если последний режим представляет собой "копирование вверх", простой способ выбирать то, что текущий уровень равен верхнему уровню, заключается в том, чтобы суммировать +1 с серией последнего "копирования вверх". Преимущество этого варианта осуществления заключается в том, чтобы сокращать объем передачи в служебных сигналах "режима прогнозирования" после режима прогнозирования "с копированием вверх". Фиг. 15 иллюстрирует этот вариант осуществления. Фиг. 15 основан на фиг. 10. Модули 1501-1517 являются идентичными модулям 1001-1017, за исключением модуля 1508, причем переменная Last_Pred задается равной 0. Модуль 1518 проверяет то, задается или нет эта Last_Pred равной 1 ("копирование вверх"). Если это имеет место, переменная "режим прогнозирования" не извлечена из потока битов, и она задается равной 0 (1519). Кроме того, после декодирования значения уровня и/или серии, переменная Last_Pred задается равной "режиму прогнозирования".
В альтернативном варианте осуществления, "режим прогнозирования" всегда декодируется, но когда это происходит, процесс декодирования изменяется. Таким образом, когда "копирование вверх" следует после "копирования вверх", "режим прогнозирования"=0 применяется без передачи уровня. Копируемый уровень задается равным последнему декодированному уровню (левому уровню). Преимущество этого варианта осуществления заключается в том, что он не допускает зависимости от синтаксического анализа между "режимом прогнозирования" и последним декодированным "режимом прогнозирования".
В одном варианте осуществления, "режим прогнозирования" зависит от последнего декодированного "режима прогнозирования" и от левого уровня, и от верхнего уровня. "Режим прогнозирования" не декодируется, если последний декодированный "режим прогнозирования" равен 0, и если верхний уровень равен левому уровню. Фактически, в этом случае, простой способ выбирать то, что текущий уровень равен верхнему уровню, состоит в том, чтобы суммировать 1 с серией последнего "режима прогнозирования". Аналогично предыдущему варианту осуществления, преимущество заключается в том, чтобы сокращать число битов, связанных с "режимом прогнозирования", когда это условие является истинным.
В одном варианте осуществления изобретения, значение декодированного уровня зависит от значения последнего "режима прогнозирования", и согласно этому "режиму прогнозирования", декодированный уровень зависит от значения левого уровня или верхнего уровня. Фактически, когда Last_pred равна 0, уровень не должен быть равен левому уровню, в противном случае, проще задавать +1 для значения серии. Аналогичным образом, когда Last_pred равна 1 ("копирование вверх"), уровень не должен быть равен верхнему уровню, в противном случае проще задавать +1 для значения серии. Преимущество этого варианта осуществления заключается в том, что он несколько сокращает число битов при кодировании уровня. Таким образом, когда Last_pred равна 0, если текущий уровень превышает левый уровень, он задается равным уровню минус 1. Аналогичным образом, когда Last_pred равна 1, если текущий уровень находится выше верхнего уровня, он задается равным уровню минус 1. Кроме того, максимальное возможное значение уровня постепенно уменьшается. Следует обратить внимание на то, что как упомянуто в разделе предшествующего уровня техники, максимальное значение используется для того, чтобы фиксировать число битов в расчете на уровень в текущей реализации. Следует отметить, что максимальный размер составляет Palette_size. Этот вариант осуществления является особенно эффективным, когда только Palette_size равен 2. Фактически в этом случае, за исключением первого уровня, другие уровни не должны кодироваться. Чтобы упрощать реализацию, этот вариант осуществления применяется только тогда, когда Palette_size равен 2.
В другом варианте осуществления на фиг. 16, значение Level содержит информацию относительно серии. В частности, если "уровень" кодируется с использованием кодирования фиксированной длины, то некоторые возможные кодовые слова должны оставаться неиспользуемыми и принудительно могут содержать больше информации. В том случае, если декодированный "уровень" выше или равен Palette_Size, то это значение соответствует конкретной длине серии и "уровню". На фиг. 16, проиллюстрирован конкретный случай на 1617, причем:
- значение серии может выводиться как level-Palette_Size
- level является некоторым другим "уровнем" значения X (типично 0), фактически частью палитры (т.е. level<Palette_Size)
B
B
B
B
Конечно, можно предполагать, что каждый "уровень" выше или равный Palette_Size может представлять конкретные значения Level и Run. Это может оказывать влияние на то, как серия фактически кодируется в этом случае: вышеуказанное подразумевает, что некоторые комбинации значений Level и Run не имеют значение Run, переданное явно. В конкретном примере, известно, что значения Level от Palette_Size до 21 кодируют значения Run, так что значения Run от 0 до T=2-1-Palette_Size не кодируются. Здесь P является числом элементов палитры и B является целым числом, так что 2 является наименьшим целым числом таким образом, что 2>P. В этом случае, декодированное значение Run может постепенно увеличиваться посредством T. С учетом этого, дополнительно можно представить конкретный энтропийный код для этого конкретного случая (этап 16.14), например, экспоненциальный код Голомба порядка 3.
Фиг. 17 иллюстрирует упрощенный вариант осуществления кодирования по уровням (или характерным индексам), причем его цель заключается только в том, чтобы иллюстрировать это кодирование. Как следствие, этапы 17.3-17.15 представляют собой этапы, имеющие значение для варианта осуществления, тогда как другие намеренно остаются упрощенными. Пусть idx является позицией текущего уровня для кодирования согласно порядку растрового сканирования в блоке уровней, Ivl является матрицей, соответствующей упомянутому блоку, W является шириной блока (с точки зрения числа уровней в расчете на строку), и M является числом элементов в текущей палитре. Таким образом, этап 17.1 инициализирует цикл, в котором выполняется индексное кодирование, прежде всего посредством задания текущей позиции idx в блоке в 0. Этап 17.2 проверяет то, должен или нет уровень кодироваться: в предпочтительном варианте осуществления это является аналогичным проверке того, представляет собой или нет режим прогнозирования в позиции idx "с копированием влево".
Если ни один уровень не должен кодироваться, то обработка переходит сразу к этапу 17.16, в противном случае она переходит к этапу 17.3. Этот этап подготавливает кодирование уровня посредством задания значения переменной val для кодирования равным Ivl[idx], а числа M возможных уровней в разреженном списке равным M (т.е. нет отсутствующих элементов). Затем этап 17.4 проверяет то, представляет собой или нет последний режим, т.е. ранее используемый режим прогнозирования в порядке растрового сканирования, "с копированием влево". Если нельзя определять (например, поскольку idx равен 0), либо поскольку последний режим представляет собой режим, известный как "режим кодирования управляющим кодом", либо поскольку последний режим не представляет собой "с копированием влево", то обработка продолжается на этапе 17.5, в противном случае возникает этап 17.6, и временная переменная TH задается равной предыдущему уровню в порядке растрового сканирования, после этого выполняется переход к этапу 17.8.
В другом варианте осуществления, этап 17.4 может содержать проверку того, представляет собой или нет режим прогнозирования в позиции idx-1 (последний режим) "с копированием влево", и проверку того, удовлетворяет или нет уровень в позиции idx-1 определенному условию, в частности, того, меньше или нет этот уровень в позиции idx-1 предварительно определенного значения LIMIT, к примеру, "Ivl[idx-1]<LIMIT". Этот новый вариант осуществления является особенно полезным для случая, в котором функция Run использована для кодирования предыдущих блоков, эта функция подразумевает кодирование идентичного значения для всех последовательных блоков, имеющих идентичный уровень. Тем не менее, в этом варианте осуществления, функция серии может деактивироваться для блоков выше порогового значения LIMIT. Возвращаясь к этапу 17.5, этот этап проверяет то, представляет собой или нет предыдущий режим "копирование вверх". Что касается этапа 17.4, если он не может определяться, либо он не представляет собой, то обработка сразу переходит к этапу 17.11, в противном случае значение переменной TH задается равным уровню выше текущего в порядке растрового сканирования посредством вычитания из позиции значения, равного числу уровней в расчете на строку W. Затем процесс переходит к этапу 17.8, идентично обработке с 17.6. В обоих случаях задана переменная TH, которая является переменной, которая отсутствует в разреженном списке.
Фактически, переменная TH представляет значение уровня, которое не может приниматься в позиции idx в зависимости от последнего используемого режима. Например, если последний режим представляет собой режим "с копированием влево", уровень в idx не может быть идентичным уровню idx-1, в противном случае он должен кодироваться с последним режимом.
Следовательно, M' задается равным M-1 на этапе 17.8. Затем этап 17.9 сравнивает значение val для кодирования со значением переменной TH: если оно превышает TH, то значение для кодирования постепенно уменьшается на этапе 17.10. Фактически, если значение val меньше TH, то на него не оказывается влияние посредством этапа 17.8. Во всех случаях, после него выполняется этап 17.11.
Здесь, M' сравнивается 1. Если имеется только один возможный уровень, то его значение может логически выводиться, и кодирование по уровням может быть полностью пропущено, и в силу этого обработка сразу переходит к этапу 17.16.
N
N
N
N
N
В противном случае, на этапе 17.12, с учетом числа M' возможных уровней, числа N битов, N>0 и целочисленного значения R, 0<R<2 определяется таким образом, что M'=2-R с частным случаем M'=2, если вместо этого рассматриваются N=N+1 и R=2. Значения N или R могут либо сохраняться в таблице, либо вычисляться. Например, можно представить себе систему, в которой N или 2 или некоторое варьирование означенного может быть легко вычислено из M', и в силу этого R может легко выводиться. Для M'=5, следовательно, должно получаться R=3 и N=3, а для M'-8 должно получаться R=8 и N=4. Затем может возникать этап 17.13. Эти значения создаются таким образом, чтобы получать простое кодирование и декодирование индексного кодового слова, но специалисты в данной области техники должны принимать во внимание, что различные решения и кодовые слова могут использоваться для того, чтобы достигать идентичной цели приписывания более коротких кодовых слов конкретным уровням.
N
Можно отметить что, если M'=2, то возникает частный случай, и далее всегда выполняется этап 17.14 с N+1-1 битов вместо N-1. Это может реализовываться как дополнительная проверка и этапы на фиг. 18, но проще позволять этапу 17.12 находить значения, удовлетворяющие этому поведению, в частности, если он реализуется с использованием таблицы.
Этап 17.13 сравнивает значение val для кодирования с R. Если оно ниже, то значение может фактически кодироваться в N-1 битов, аналогично этапу 17.14. В противном случае, требуется N битов, и вместо этого, val+R кодируется в N битов на этапе 17.15. Это выполняется таким образом, что декодер может проверять только N-1 битов до принятия решения в отношении того, следует или нет декодировать дополнительный бит, как уточняется на фиг. 18.
Возвращаясь к фиг. 17, будь то на этапе 17.14 или 17.15, обработка продолжается с 17.16. Это представляет собой простую контурную обработку, при которой, по меньшей мере, позиция обновляется на следующий элемент для кодирования. После того, как позиция обновлена, можно определять на этапе 17.17 то, достигнут или нет конец блока: если не достигнут, обработка циклически возвращается к этапу 17.2, в противном случае она завершается на этапе 17.18.
Выше упомянут фиг. 18, иллюстрирующий соответствующий процесс декодирования по фиг. 17, на котором сохраняются идентичные смысловые значения для idx, val, M, M', N и R. Этап 18.1 инициализирует декодирование уровней, например, посредством задания idx равным 0. Затем этап 18.2 проверяет то, представляет собой или нет текущий режим "с копированием влево": если нет, то ни один уровень (или индекс) не должен декодироваться, и обработка сразу переходит к этапу 18.20. В противном случае, M' задается равным M. Этапы 18.4 и 18.5, соответственно, проверяют то, представляет собой ранее используемый режим, соответственно, "с копированием влево" и "с копированием вверх", переходя, соответственно, к этапам 18.6 и 18.7, если это имеет место, или переходя, соответственно, к этапам 18.5 и 18.9, если это не имеет место, либо этот предыдущий режим не может определяться. Этапы 18.6 и 18.7 задают TH как пропущенный уровень, соответственно, предыдущий уровень и верхний уровень, перед переходом к этапу 18.8, где M' задается равным M-1, поскольку пропущен уровень. Этап 18.9, с другой стороны, задает TH равным максимальному значению MAX, указывающему то, что нет отсутствующих значений. После этапов 18.8 и 18.9, затем выполняется этап 18.10.
Этап 18.10 проверяет то, имеется или нет только один возможный уровень, в данном случае это выполняется неявно: на этапе 18.11 декодированное значение val задается равным 0. В противном случае, N и R определяются в ходе этапа 18.12, аналогично этапу 17.12. Как упомянуто при описании фиг. 17, во-первых, val считывается из N-1 битов на этапе 18.13. Это обеспечивает возможность верификации на этапе 18.14 того, ниже val или нет R: если это имеет место, в таком случае кодированное значение реально кодировано в N-1 битов, и оно уже полностью декодировано, так что обработка переходит к этапу 18.17. В противном случае, еще один бит считывается на этапе 18.15. Этап 18.16 затем может определять фактическое кодированное значение, которое составляет 2*val+bit-R, причем считано "битовое" значение бита (так что 0 или 1). Теперь, когда определено кодированное значение, может возникать этап 18.17.
Они представляют собой обратный порядок этапов 17.9 и 17.10: если декодированное значение ниже TH, то декодированное значение является фактическим уровнем, и в силу этого этап 18.18 задает его равным val. В противном случае, этап 17.10 возникает, следовательно, этап 18.19 выполняет в обратном порядке процесс посредством задания текущего уровня равным val+1. Следует отметить, что этап 18.9 задает TH равным максимальному значению MAX, так что этап 18.19 вообще не выполняется. В любом случае, следующий этап 18.20 обновляет idx на следующую позицию, затем переходит к этапу 18.21. Этот этап верифицирует то, достигнут или нет конец блока, и в этом случае декодирование уровня прекращается на этапе 18.22, в противном случае обработка циклически возвращается к этапу 18.2.
Если обобщать, вышеуказанный разреженный список может представлять собой список значений минус любое значение предварительно определенного уровня, означая значение левого уровня или значение верхнего уровня, как упомянуто выше, но также и любое другое значение предварительно определенного уровня, в комбинации либо нет со значением уровня или верхнего уровня.
Другой вариант осуществления для обновления разреженного списка проиллюстрирован на фиг. 19. Этот вариант осуществления предлагает способ для обработки разреженного списка, когда существуют три или более значений предварительно определенного уровня или индекса, что означает то, что рассматриваются три или более режимов прогнозирования. В предпочтительном варианте осуществления, если P является числом доступных режимов прогнозирования, вплоть до P-1 значений уровня может удаляться, чтобы получать разреженный список. Фактически, если значение уровня должно кодироваться с использованием одного из режима прогнозирования (например, "с копированием влево"), это подразумевает, что не выбирается ни один из других режимов (например, "копирование вверх" или режим, называемый "переходным режимом", проиллюстрированный на фиг. 21), и, в частности, ассоциированные значения уровня являются невозможными. Идентичное обоснование применяется, если используемый режим представляет собой режим "с копированием вверх" или "переходный режим". Другими словами, если режим предыдущего индекса представляет собой режим "с копированием влево" или "переходный" режим, то уровень слева не может повторяться, поскольку серия слева вместо этого должна постепенно увеличиваться на единицу, чтобы покрывать текущий пиксел/уровень.
Обработка является почти идентичной фиг. 17: этапы являются идентичными между двумя чертежами за исключением этапов 19.4-19.10 для учета того, что более одного значения уровня запрещено в разреженном списке.
Этап 19.4 обеспечивает возможность определения значений уровня, ассоциированных с P других режимов, причем список этих других режимов возможно зависит от ранее используемого режима. Например, могут рассматриваться три режима: режим "с копированием влево", режим "с копированием вверх" и переходный режим, который обеспечивает возможность кодирования значения уровня данного пиксела посредством неявной ссылки на предварительно определенное значение таблицы шаблонов. Таблица шаблонов содержит значение последнего обработанного пиксела и ассоциированного значения текущего пиксела(ов) для кодирования. Переходный режим подробнее описывается ниже в отношении фиг. 21.
Таким образом, формируется первый список L запрещенных уровней. Этап 19.5 затем фильтрует список L в уменьшенный список L'. Первый вариант осуществления заключается в том, чтобы сортировать L в порядке убывания уровней, а затем удалять дублированные значения уровня и сохранять результаты в L'. Следовательно, если L равно {6, 0,4, 1,6}, то L' равно {6, 4, 1,0}.
В другом варианте осуществления, поскольку сортировка и удаление копий может быть сложной, только обрабатываются поднаборы L. Например, упомянутые поднаборы являются такими, что получается число Q наименьших значений уровня в списке L, и число R, к примеру, R<Q, значений уровня в L' получаются для наиболее очевидного варианта осуществления R=Q=1.
Процесс фильтрации подразумевает новую сортировку текущей палитры, чтобы принимать во внимание запрещенные значения уровня. Например, если текущая палитра равна {0, 1, 2, 3, 4, 5, 6, 7}, она становится равной {2, 3, 5, 7} после удаления запрещенных значений уровня L'. Соответствующие индексы 2, 3, 5 и 7 в таком случае должны быть, соответственно, кодированы как 0, 1, 2 и 3 после обработки, описанной ниже.
Как следствие, определяются p значений уровня (где p равно размеру L'), так что 0<p<P (P является числом режимов), и разреженный список содержит теперь M'=M-p элементов. На этапе 19.6, вычисляется размер M' разреженного списка. Кроме того, первый элемент в L' выбирается посредством задания счетчика циклов i равным 0.
Этап 19.7 затем проверяет то, остаются или нет еще элементы в L': если не остаются, L' полностью использован, и обработка возобновляется на этапе 19.11, который является аналогичным вышеописанному этапу 17.11. В противном случае, этап 19.8 работает идентично этапу 17.9. Временная переменная TH задается равной первому значению (i=0) уменьшенного списка L'.
Если значение val выше переменной TH, то val постепенно уменьшается на этапе 19.9, чтобы принимать во внимание сортировку вышеприведенного разреженного списка. В любом случае, процесс переходит к этапу 19.10, который выбирает следующий уровень в L', например, посредством постепенного увеличения счетчика циклов i. Следовательно, переменная TH принимает новое значение. Обработка затем может циклически возвращаться к этапу 19.7.
Фиг. 20 иллюстрирует соответствующий процесс декодирования. Этапы 20.1-20.3, 20.10-20.16 и 20.20-20.22 являются идентичными их версии на фиг. 18. Этап 20.4 является идентичным этапу 19.4. Этап 20.5 может быть идентичным этапу 19.5. Как следствие, определяется список L', содержащий p элементов, что приводит к новому размеру M'=M-p для разреженного списка на этапе 20.6.
Затем процесс, описанный на этапе 19.7-19.10, выполняется в обратном порядке. Таким образом, этап 20.7 выбирает самый верхний уровень в списке L', например, посредством задания счетчика циклов равным p-1. Поскольку p может быть равно 0, или самый нижний уровень в L' уже обработан, этап 20.8 проверяет счетчик циклов. В этом варианте осуществления, L' сортирован в порядке возрастания. Если все элементы в L' обработаны посредством этапов 20.9, 20.17 и 20.18 (что означает то, что рассмотрены все возможные значения), значение val уровня полностью декодировано, и на него оказывается влияние на этапе 20.19. В противном случае, val сравнивается с текущим уровнем TH списка L' на этапе 20.9. Если оно является более низким, обработка не требуется, в противном случае оно постепенно увеличивается на этапе 20.17. Наконец, посредством этапа 20.18, следующий уровень списка L' выбирается посредством постепенного уменьшения i перед возвращением к тесту этапа 20.8.
В зависимости от процесса от этапа 19.7 до 19.10, может быть упрощен вышеуказанный процесс декодирования. Например, список L' может содержать вплоть до одного элемента, что обеспечивает возможность многократного использования в качестве этапов 18.17-18.19, при условии, что TH надлежащим образом задан, например, как проиллюстрировано посредством 18.6 или 18.7. Одно решение получать только один элемент в списке L' состоит в том, чтобы выбирать значение минимального уровня из списка L, чтобы получать список L'.
Согласно другому варианту осуществления, на этапе 20.5 можно сортировать L в порядке постепенного уменьшения и модифицировать соответствующим образом этапы 20.7, 20.8 и 20.18.
Фиг. 21, разделенный на два фиг. 21a и 21b, иллюстрирует режим прогнозирования, называемый "переходным режимом". Согласно предпочтительному варианту осуществления, этот режим представляет собой один из режимов прогнозирования для варианта осуществления на фиг. 19 и 20.
Фиг. 21a представляет шаблоны, т.е. ассоциирование нескольких соседних уровней палитры и позиций и уровней. Сущность кодирования по шаблонам заключается в том, чтобы использовать преимущество избыточности в блоке для кодирования. Типично, идентичные переходы возникают в блоке. Это означает то, что поднабор пикселов может находиться в различном местоположении блока. Следовательно, переходный режим сохраняет некоторые шаблоны, в общем, в таблице шаблонов. Шаблон задает поднабор пикселов в данном расположении, окружающем целевой пиксел. Значение уровня целевого пиксела предположительно является идентичным для различных вхождений шаблона. В этом случае, объем кодирования значения уровня может быть сокращен посредством использования режима прогнозирования по шаблонам. Фактическое значение целевого пиксела получается посредством поиска в сохраненном шаблоне на предмет шаблона, соответствующего фактическому окружению целевого пиксела. Значение уровня, ассоциированное с идентифицированным шаблоном в таблице шаблонов, задает фактическое значение уровня целевого пиксела. А именно, новый режим прогнозирования, называемый "переходным режимом", обеспечивает возможность кодирования значения уровня данного пиксела посредством неявной ссылки на предварительно определенное значение таблицы шаблонов.
Например, шаблон 21.1 ассоциирует значение x с левым соседним уровнем, тогда как 21.2 использует верхний соседний узел и 21.3. Как проиллюстрировано посредством 21.4-21.6, следует понимать, что характер этого так называемого шаблона является диверсифицированным, и ключевое свойство здесь заключается в том, что можно ассоциировать конкретное значение уровня с окружением значений уровня. Фиг. 21b иллюстрирует этот процесс посредством ассоциирования значения левого уровня шаблона 21.1 со значением x правого уровня 21.1. Для специалистов в данной области техники является очевидным, как эта таблица может быть адаптирована к любой форме шаблона. Конечно, эта таблица может быть инициализирована или обновлена в любой точке кодирования или декодирования.
Следующие параграфы описывают дополнительные предпочтительные варианты осуществления.
Фиг. 22 является принципиальной блок-схемой вычислительного устройства 2400 для реализации одного или более вариантов осуществления изобретения. Вычислительное устройство 2400 может представлять собой такое устройство, как микрокомпьютер, рабочая станция или легкое портативное устройство. Вычислительное устройство 2400 содержит шину связи, соединенную со следующим:
- центральный процессор 2401, такой как микропроцессор, обозначаемый CPU;
- оперативное запоминающее устройство 2402, обозначаемое как RAM, для сохранения исполняемого кода способа вариантов осуществления изобретения, а также регистров, адаптированных с возможностью записывать переменные и параметры, необходимые для реализации способа для кодирования или декодирования, по меньшей мере, части изображения согласно вариантам осуществления изобретения, причем емкость запоминающего устройства может расширяться, например, посредством необязательного RAM, подключаемого к порту расширения;
- постоянное запоминающее устройство 2403, обозначаемое как ROM, для сохранения компьютерных программ для реализации изобретения;
- сетевой интерфейс 2404 типично соединяется с сетью связи, по которой передаются или принимаются цифровые данные, которые должны обрабатываться.
Сетевой интерфейс 2404 может представлять собой единственный сетевой интерфейс либо состоять из набора различных сетевых интерфейсов (например, проводных и беспроводных интерфейсов либо различных видов проводных или беспроводных интерфейсов). Пакеты данных записываются в сетевой интерфейс для передачи или считываются из сетевого интерфейса для приема под управлением приложения, выполняющегося в CPU 2401;
- пользовательский интерфейс 2405 может использоваться для приема вводов от пользователя или отображения информации пользователю;
- жесткий диск 2406, обозначаемый как HD, может предоставляться в качестве устройства хранения данных большой емкости;
- модуль 2407 ввода-вывода может использоваться для приема/отправки данных из внешних устройств, таких как видеоисточник или дисплей.
Исполняемый код может сохраняться в постоянном запоминающем устройстве 2403, на жестком диске 2406 или на съемном цифровом носителе, таком как, например, диск. Согласно разновидности, исполняемый код программ может приниматься посредством сети связи, через сетевой интерфейс 2404, чтобы сохраняться на одном из средств хранения устройства 2400 связи, таком как жесткий диск 2406, перед выполнением.
Центральный процессор 2401 выполнен с возможностью управлять и направлять выполнение инструкций или частей программного кода программы или программ согласно варианта осуществления изобретению, причем эти инструкции сохраняются на одном из вышеуказанных средств хранения. После включения питания, CPU 2401 допускает выполнение инструкций из основного оперативного запоминающего устройства 2402, связанных с приложением, после того, как эти инструкции загружены, например, из ROM 2403 для программ или с жесткого диска 2406 (HD). Такое приложение, при выполнении посредством CPU 2401, инструктирует выполнение этапов блок-схем последовательности операций способа, показанных на фиг. 6-7b и 10-20.
В этом варианте осуществления, устройство представляет собой программируемое устройство, которое использует программное обеспечение для того, чтобы реализовывать изобретение. Тем не менее, альтернативно настоящее изобретение может быть реализовано в аппаратных средствах (например, в форме специализированной интегральной схемы, или ASIC).
Например, известный режим, называемый "режимом кодирования управляющим кодом" (см. фиг. 7b и 8b), состоит в передаче в служебных сигналах, например, посредством использования конкретного значения уровня, того, что пиксел не может быть представлен посредством значения уровня, и того, что его пиксельные значения явно передаются. Предпочтительный вариант осуществления заключается в том, чтобы вставлять флаг управляющего кода только в том случае, если палитра достигает максимального числа значений, которые она может содержать. В этом случае, палитра содержит только MAX-1 индексов (где MAX является максимальным числом значений, которые она может содержать), причем значение в позиции MAX в палитре является уровнем управляющего кода. В этом случае, значение предварительно определенного уровня, вычитаемое из списка значений, является последним индексом палитры.
Этот последний вариант осуществления может активироваться, если режим представляет собой "с копированием влево". Например, в отношении фиг. 17 (или фиг. 19), новый этап между этапами 17.2 и 17.3 должен добавляться для того, чтобы уменьшать M на единицу. Специалисты в данной области техники должны принимать во внимание то, что конкретный режим прогнозирования по уровням (отличный от копирования вверх или копирования влево) может приводить или не может приводить к конкретному разреженному списку, а также то, как расширять принцип, представленный здесь, на этот конкретный режим.
Как упомянуто в предшествующем уровне техники, использование палитры без элемента запрещается, и Palette_size задается равным стороне декодирования плюс 1 (кодируется Palette_size-1). В одном варианте осуществления, значение Palette_size, равное 1, также запрещается. Фактически, оно состоит в использовании только одного цвета в палитре для того, чтобы кодировать постоянный блок, и в видеокодеке, если один блок содержит идентичное значение или примерно идентичное значение для всех пикселов, существуют другие эффективные режимы. Кроме того, в этом случае, палитровый режим реально является неоптимальным. Например, внутренний DC режим является более эффективным. Таким образом, этот вариант осуществления состоит в изменении работы модуля 1003 по фиг. 10 следующим образом:
Palette_Size=Size+2
(вместо Palette_Size=Size +1)
Все эти варианты осуществления могут комбинироваться.
Хотя настоящее изобретение описано выше в отношении конкретных вариантов осуществления, настоящее изобретение не ограничено конкретными вариантами осуществления, и для специалистов в данной области техники должны быть очевидными модификации, которые находятся в пределах объема настоящего изобретения.
Множество дополнительных модификаций и изменений предполагаются специалистами в данной области техники после прочтения вышеприведенных иллюстративных вариантов осуществления, которые приводятся только в качестве примера и которые не имеют намерение ограничивать объем изобретения, который определяется исключительно посредством прилагаемой формулы изобретения. В частности, при необходимости различные признаки из различных вариантов осуществления могут меняться местами.
В формуле изобретения, слово "содержащий" не исключает другие элементы или этапы, и неопределенный артикль "a" или "an" не исключает множество. Простой факт того, что различные признаки упомянуты во взаимно различных зависимых пунктах формулы изобретения, не означает того, что комбинация этих признаков не может быть преимущественно использована.