ИНИЦИАЛИЗАТОР ПРЕДСКАЗАТЕЛЯ ПАЛИТРЫ ПРИ КОДИРОВАНИИ ИЛИ ДЕКОДИРОВАНИИ САМОСТОЯТЕЛЬНЫХ КОДИРУЕМЫХ СТРУКТУР
PERFORMING INDICATOR FOR PALETRAISING DURING ENCODING OR DECODING OF INDEPENDENT CODORATED STRUCTURES

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение относится к способу и устройству для обработки по меньшей мере одного изображения, например, для кодирования или декодирования изображений в или из битового потока, с использованием режима предсказания палитры. Оно, в частности, относится к кодированию в режиме палитры, как это представлено в Расширении Кодировки Содержимого Экрана HEVC (HEVC Screen Content Coding (SCC) Extension).
Уровень техники изобретения
Настоящее изобретение, в частности, применимо к режиму кодировки, при котором каждый из блоков пикселей кодируется на основе соответственного блока указателей, закодированного с помощью или построенного из так называемой палитры.
Палитра в данном документе определена в качестве таблицы поиска, имеющей записи, или «элементы», связывающие указатель со значением пикселя. В целом каждая запись содержит один или три элемента, как будет упомянуто позже. Каждый элемент относится к значению пикселя для цветовой компоненты. Например, если изображение является монохромным, то каждая запись палитры содержит один элемент для уникальной цветовой компоненты.
Другими словами, обычно, но не обязательно, значение пикселя составлено посредством значения каждой цветовой компоненты, связанной с пикселем, что в результате приводит к цветовой палитре. Однако значение пикселя может быть составлено из одной компоненты пикселя (называемой «элементом»), что в результате приводит к монохромной палитре.
Данный режим кодирования блока пикселя в целом упоминается в качестве режима кодировки посредством Палитры. Предусмотрено внедрение данного режима, например, в Расширении Кодировки Содержимого Экрана (Screen Content Coding (SCC) Extension) международного стандарта Высокоэффективной Видеокодировки (High Efficiency Video Coding) (см. документ JCTVC-S1005).
При кодировании изображения в видеопоследовательности изображение сначала разделяется на кодируемые объекты (также известные в качестве «кодируемых структур») пикселей равного размера, называемые Кодируемыми Древовидными Блоками (Coding Tree Blocks, CTB). CTB могут быть сгруппированы в другие кодируемые структуры, имеющие более высокий иерархический уровень, такие как слои и/или плитки. Другими словами, изображение рекурсивно разделяется на иерархические кодируемые структуры или кодируемые объекты.
Размер Кодируемого Древовидного Блока обычно составляет 64 на 64 пикселя. Каждый Кодируемый Древовидный Блок может затем быть разбит на иерархическое дерево более малых блоков, размер которых может изменяться, и которые являются фактическими блоками пикселей для кодирования. Эти более малые блоки для кодирования упоминаются в качестве Кодируемых Единичных Участков (Coding Unit, CU).
Кодирование отдельно взятого Кодируемого Единичного Участка вовлекает конкуренцию между режимами кодировки с предсказанием, включающими в себя хорошо известный режим ВНУТРЕННЕЙ кодировки, хорошо известный режим ВЗАИМНОЙ кодировки и режим кодировки посредством Палитры.
С помощью режима кодировки посредством Палитры можно задавать представительный блок для данного Кодируемого Единичного Участка в качестве блока указателей из палитры: для местоположения каждого пикселя в Кодируемом Единичном Участке, причем упомянутый представительный блок содержит указатель, связанный со значением пикселя в Палитре, которое является самым близким к значению пикселя, имеющего то же самое местоположение (то есть также расположенного) в кодируемом единичном участке. Однако данный основанный на палитре алгоритм выбора самой близкой записи палитры предназначен только для кодера в SCC HEVC: нет никакой необходимости в знании упомянутого алгоритма для синтаксического анализа или декодирования битового потока. Как правило, самый близкий означает с наименьшим расстоянием с использованием конкретного метрического расстояния, такого как сумма абсолютных значений, либо квадрат, остаток компонентных значений. В частности, в случае кодировки без потерь это означает, что запись палитры должна быть выбрана кодером равной пикселю. В дальнейшем термины «соответствует» или «согласуется» используются в значении либо «равен», при кодировке без потерь, либо «самый близкий» в противном случае.
В последней версии SCC HEVC не предусмотрено какого-либо остатка между исходным блоком пикселей и соответствующим основанным на палитре представительным блоком пикселей. Чтобы избежать снижения высокого качества в закодированном изображении, был введен признак «с кодировкой выбросов» для кодирования пикселей, значения которых не согласуются со значениями пикселя записи Палитры. Это означает, при кодировке без потерь, что никакая запись палитры не равна значению пикселя. В таком случае в Палитре используется особый указатель для сигнализации пикселя «с кодировкой выбросов»; и квантованное значение пикселя с кодировкой выбросов как таковое непосредственно кодируется в битовом потоке, при этом квантование зависит от шага квантователя, переданного на уровне CU. В случае кодировки без потерь шаг квантователя составляет 0, что означает отсутствие квантования. Квантование состоит в том, что в стандарте HEVC определено в качестве квантования в обход преобразования, и квантованные значения кодируются с использованием усеченных двоичных кодов.
В режиме кодировки посредством Палитры таким образом используется текущая палитра для построения блока указателей, представляющего текущий Кодируемый Единичный Участок или блок пикселей. Указатели записей в Палитре также известны в качестве «уровней».
При использовании режима Палитры палитра и блок указателей или «уровней» часто передаются в битовом потоке, кодирующем изображение. Это представляет собой высокие издержки на сигнализацию, потому что палитра, которая может содержать десятки записей, должна быть передана для каждого Кодируемого Единичного Участка.
AhG10: наполнение предсказателя палитры
AhG10: palette predictor stuffing
Во вкладе Заявителя в JCT-VC (№ JCTVC-Q0063 под названием «», 17-ая Встреча: Валенсия, Испания, 27 марта - 4 апреля 2014 («»)) было предложено предсказывать текущую Палитру для текущего Кодируемого Единичного Участка с использованием предсказателя палитры, например, последней используемой Палитры (для последнего обработанного Кодируемого Единичного Участка). Данный подход нацелен на уменьшение издержки кодировки, так как палитра явно полностью больше не передается для каждого Кодируемого Единичного Участка.
Кроме этого, другой предложенный механизм предсказания полагается на повторное использование полной предыдущей палитры как таковой, причем такое повторное использование указывается флагом palette_share_flag (флаг_совместное_использование_палитры) и требует, чтобы декодер хранил размер упомянутой палитры. Однако хранение этой палитры является ненужным, поскольку она находится в начале предсказателя.
Однако некоторые особенности кодировки могут нарушить схему предсказания палитры по всем Кодируемым Единичным Участкам изображения. Это происходит в случае кодируемых структур, подобных Слоям и Плиткам.
Слоистые и Плиточные кодируемые структуры были представлены в HEVC для предоставления повторной синхронизации в случае потери данных в последовательности изображений (видеоролике). Следует заметить, что независимая плитка, как это определено в стандарте HEVC, содержит по меньшей мере один слой и пространственно независима от других плиток.
Для получения свойства повторной синхронизации слои и плитки кодируются/декодируются независимо друг от друга. Другими словами, они «самостоятельны», означая, например, что никакого ВНУТРЕННЕГО (INTRA) предсказания не выполняется в границах слоя или плитки, и никакое предсказание с состоянием энтропийной кодировки или предсказателем палитры или областью для IBC (Внутренняя Копия Блока) не используется совместно с (или унаследовано от) предварительно обработанным слоем или плиткой.
Свойство повторной синхронизации таким образом делает данные, полезные для предсказания, отныне недоступными, тем самым уменьшая эффективность кодировки. Во вкладе Заявителя JCTVC-Q0063 предсказатель палитры обнуляется при начале кодировки нового независимого слоя или плитки, или начале кодировки новой строки из блоков CTB (известной в качестве кодировки Фронта волны) или нового изображения, или кадра. Другой подход во вкладе Заявителя JCTVC-Q0063 состоит в сбросе набора палитр, из которых выбирается предсказатель палитры, к палитре по умолчанию, которая определяется локально (в декодере). Например, палитру по умолчанию составляют значения пикселей, одинаково распределенных по цветовому пространству.
Данный подход явно неудовлетворителен, в частности, с SCC, где имеется высокий уровень избыточности информации внутри одного и того же изображения.
HEVC Screen Content Coding Draft Text 3
Дополнительно, некоторые особенности кодировки могут нарушить схему предсказания палитры по всем Кодируемым Единичным Участкам изображения. Это является случаем кодируемых структур, подобных Слоям и Плиткам. Как следствие, во вкладе JCTVC-T1005 под названием «3-ий проект текста по кодировке содержимого экрана HEVC» («»), 21-ая встреча: Женева, Швейцария, 19-26 февраля 2015, было предложено передавать инициализатор предсказателя палитры в расширении Набора Параметров Снимка для Расширения SCC HEVC. Согласно частному варианту осуществления, когда записи этого инициализатора являются монохромными, то сигнализируется монохромный контекст и/или битовые глубины компонент записей.
Однако сигнализация цветового формата вводит либо избыточность, либо потенциально некоторые несовместимости в значениях параметров.
Сущность изобретения
Настоящее изобретение было создано для преодоления всех или части предшествующих недостатков. В частности, оно направлено на повышения эффективности кодирования с использованием режима Палитры, например, для существенного уменьшения издержек на сигнализацию при использовании кодируемых структур, таких как слои или плитки.
В первом варианте выполнения настоящего изобретения предложен способ декодирования по меньшей мере одного изображения из битового потока, причем изображение разделено на иерархические кодируемые структуры, включающие в себя множество слоев, причем каждый из упомянутых слоев имеет один и тот же иерархический уровень в изображении, при этом способ содержит следующие этапы, на которых:
декодируют закодированные данные двух слоев, с использованием режима кодировки посредством Палитры, причем в режиме кодировки посредством Палитры использована, для каждого из обрабатываемых блоков пикселей упомянутых двух слоев, связанная палитра, которая содержит набор записей, связывающих соответственные указатели записей с соответствующими значениями пикселей, при этом палитру, связанную с каждым обрабатываемым блоком пикселей, предсказывают из предсказателя палитры с использованием информации предсказания из битового потока;
получают, из битового потока, инициализатор предсказателя палитры, связанный с кодируемой структурой, иерархически выше слоев; и
инициализируют предсказателя палитры для каждого из упомянутых двух слоев с использованием полученного инициализатора предсказателя палитры,
при этом каждый предсказатель палитры, последующий по отношению к инициализированному предсказателю палитры, включает в себя все записи текущей палитры, связанной с декодируемым в настоящее время блоком, и одну или более записей предсказателя палитры, используемого для предсказания текущей палитры, которые не использованы для предсказания текущей палитры.
Во втором варианте выполнения настоящего изобретения предложен способ кодирования по меньшей мере одного изображения в битовый поток, содержащий следующие этапы, на которых:
получают иерархические кодируемые структуры посредством разделения изображения;
кодируют данные двух кодируемых структур изображения независимо друг от друга для получения двух закодированных слоев, имеющих один и тот же иерархический уровень в изображении, причем в упомянутом кодировании используют режим кодировки посредством Палитры, причем в режиме кодировки посредством Палитры использована, для каждого блока пикселей упомянутых двух слоев, связанная палитра, которая содержит набор записей, связывающих соответственные указатели записей с соответствующими значениями пикселей, при этом этап кодирования включает в себя этап, на котором определяют информацию предсказания, предсказывающую палитру, связанную с каждым обрабатываемым блоком пикселей, из предсказателя палитры;
определяют инициализатора предсказателя палитры для инициализации предсказателя палитры для упомянутых двух слоев; и
в битовом потоке, предоставляют закодированные данные, включающие в себя информацию предсказания, и предоставляют инициализатор предсказателя палитры, причем инициализатор предсказателя палитры связан с кодируемой структурой, иерархически выше упомянутых двух слоев, в битовом потоке, и
при этом, в режиме кодировки посредством Палитры, каждый предсказатель палитры, последующий по отношению к инициализированному предсказателю палитры, включает в себя все записи текущей палитры, связанной с кодируемым в настоящее время блоком, и записи предсказателя палитры для предсказания текущей палитры, которые не использованы для предсказания текущей палитры.
В одном варианте осуществления инициализатор предсказателя палитры задан на уровне изображения в Наборе Параметров Снимка (Picture Parameter Set, PPS); и упомянутые два слоя ссылаются на Набор Параметров Снимка.
В одном варианте осуществления инициализатор предсказателя палитры задан на уровне последовательности в Наборе Параметров Последовательности (Sequence Parameter Set, SPS); и две самостоятельных кодируемые структуры ссылаются на Набор Параметров Последовательности.
В одном варианте осуществления инициализатор предсказателя палитры задан после первого поля, указывающего, задействован ли режим кодировки посредством Палитры или нет, и после второго поля, содержащего максимальный размер для предсказателя палитры, в Наборе Параметров Последовательности.
В одном варианте осуществления инициализатор предсказателя палитры задан на уровне плитки в плитке, содержащей упомянутые два слоя; и каждый из упомянутых двух слоев идентифицирует плитку, которой он принадлежит.
В одном варианте осуществления этап инициализации для обоих упомянутых двух слоев выполняют перед декодированием самого первого блока пикселей в соответственном слое.
В одном варианте осуществления информация предсказания для предсказания палитры из предсказателя палитры включает в себя битовую карту флагов, каждый флаг которой задает то, выбрана ли или нет соответствующая запись в предсказателе палитры в качестве записи для создания записи в палитре.
В одном варианте осуществления второго варианта выполнения этап определения инициализатора предсказателя содержит этап, на котором кодируют, с использованием режима кодировки посредством Палитры, поднабор блоков пикселей, распространенных по области изображения, заданной упомянутой кодируемой структурой, иерархически выше упомянутых двух слоев, и содержит этап, на котором используют предсказателя палитры, полученного в конце этапа кодирования, в качестве инициализатора предсказателя палитры.
Блоки пикселей поднабора могут быть распределены вдоль наклона или диагонали области.
Блоки пикселей поднабора могут быть горизонтально выровнены в верхней части изображения.
Блоки пикселей поднабора могут быть не смежными.
В одном варианте осуществления этап определения инициализатора предсказателя палитры содержит этап, на котором рекурсивно кодируют один и тот же поднабор блока пикселей, при этом первый предсказатель палитры, используемый для следующего цикла рекурсивного кодирования, является предсказателем палитры, полученным в конце предыдущего цикла рекурсивного кодирования.
В одном варианте осуществления, слои включены в два отдельных изображения.
В одном варианте осуществления слои включены в одно и то же изображение.
В одном варианте осуществления размер палитры установлен с использованием размера инициализатора предсказателя палитры, используемого для инициализации предсказателя палитры.
В одном варианте осуществления способ дополнительно содержит этап, на котором получают информацию о количестве цветовых компонент, причем структура инициализатора предсказателя палитры основана на упомянутой информации о количестве цветовых компонент. Например, информация может быть флагом для сигнализации того, является ли упомянутое изображение монохромным изображением или нет.
В третьем варианте выполнения настоящего изобретения предложено декодирующее устройство для декодирования по меньшей мере одного изображения из битового потока, причем изображение разделено на иерархические кодируемые структуры, включающие в себя множество слоев, при этом каждый из упомянутых слоев имеет один и тот же иерархический уровень в изображении;
декодирующее средство для декодирования закодированных данных двух слоев, с использованием режима кодировки посредством Палитры, причем в режиме кодировки посредством Палитры использована, для каждого из обрабатываемых блоков пикселей упомянутых двух слоев, связанная палитра, которая содержит набор записей, связывающих соответственные указатели записей с соответствующими значениями пикселей, причем палитра, связанная с каждым обрабатываемым блоком пикселей, предсказана из предсказателя палитры с использованием информации предсказания из битового потока;
получающее средство для получения, из битового потока, инициализатора предсказателя палитры, связанного с кодируемой структурой, иерархически выше упомянутых двух слоев; и
инициализирующее средство для инициализации предсказателя палитры для каждого из упомянутых двух слоев с использованием полученного инициализатора предсказателя палитры,
при этом, в режиме кодировки посредством Палитры, каждый предсказатель палитры, последующий по отношению к инициализированному предсказателю палитры, включает в себя все записи текущей палитры, связанной с декодируемым в настоящее время блоком, и одну или более записей предсказателя палитры для предсказания текущей палитры, которые не использованы для предсказания текущей палитры.
В четвертом варианте выполнения настоящего изобретения предложено устройство для кодирования по меньшей мере одного изображения в битовый поток, причем кодирующее устройство содержит:
получающее средство для получения иерархических кодируемых структур посредством разделения изображения;
кодирование данные двух кодируемых структур изображения независимо друг от друга для получения двух слоев, имеющих один и тот же иерархический уровень в изображении, причем в упомянутом кодировании использован режим кодировки посредством Палитры, причем в режиме кодировки посредством Палитры использована, для каждого блока пикселей упомянутых двух слоев, связанная палитра, которая содержит набор записей, связывающих соответственные указатели записей с соответствующими значениями пикселей, в котором этап кодирования включает в себя определение информации предсказания, предсказывающей палитру, связанную с каждым обрабатываемым блоком пикселей, из предсказателя палитры;
определение инициализатора предсказателя палитры для инициализации предсказателя палитры для упомянутых двух слоев; и
в битовом потоке, предоставление закодированных данных, включающих в себя информацию предсказания, и предоставление инициализатора предсказателя палитры, причем инициализатор предсказателя палитры связан с кодируемой структурой, иерархически выше упомянутых двух слоев, в битовом потоке, и
при этом, в режиме кодировки посредством Палитры, каждый предсказатель палитры, последующий по отношению к инициализированному предсказателю палитры, включает в себя все записи текущей палитры, связанной с кодируемым в настоящее время блоком, и записи предсказателя палитры для предсказания текущей палитры, которые не использованы для предсказания текущей палитры.
В пятом варианте выполнения настоящего изобретения предложена компьютерная программа, которая, при исполнении, предписывает выполнение способа по любому из предшествующих положений.
В дополнительном варианте выполнения настоящего изобретения предложен способ декодирования по меньшей мере одного изображения из битового потока, причем изображение разделено на иерархические кодируемые структуры, при этом способ содержит следующие этапы, на которых:
декодируют закодированные данные двух самостоятельных кодируемых структур (то есть кодируемых структур, закодированных независимо от других кодируемых структур одного и тот же иерархического уровня), имеющих один и тот же иерархический уровень в изображении, с использованием режима кодировки посредством Палитры, причем в режиме кодировки посредством Палитры использована, для каждого из обрабатываемых блоков пикселей упомянутых двух кодируемых структур, связанная палитра, которая содержит набор записей, связывающих соответственные указатели записей с соответствующими значениями пикселей, причем палитра, связанная с каждым обрабатываемым блоком пикселей, предсказана из предсказателя палитры с использованием информации предсказания из битового потока;
получают, из битового потока, инициализатор предсказателя палитры, связанный с кодируемой структурой, иерархически выше двух самостоятельных кодируемых структур; и
инициализируют предсказателя палитры для каждой из упомянутых двух самостоятельных кодируемых структур с использованием одного и того же полученного инициализатора предсказателя палитры.
Симметричным образом в настоящем изобретении также предложен способ кодирования по меньшей мере одного изображения в битовый поток, содержащий следующие этапы, на которых:
получают иерархические кодируемые структуры, разделяющие изображение;
кодируют данные двух кодируемых структур изображения независимо друг от друга, причем кодируемая структура имеет один и тот же иерархический уровень в изображении, для получения двух самостоятельных закодированных кодируемых структур, причем на упомянутом этапе кодирования используют режим кодировки посредством Палитры, при этом в режиме кодировки посредством Палитры использована, для каждого из обрабатываемых блоков пикселей упомянутых двух кодируемых структур, связанная палитра, которая содержит набор записей, связывающих соответственные указатели записей с соответствующими значениями пикселей, при этом этап кодирования включает в себя этап, на котором определяют информацию предсказания, предсказывающую палитру, связанную с каждым обрабатываемым блоком пикселей, из предсказателя палитры;
определяют один инициализатор предсказателя палитры для инициализации предсказателя палитры для двух самостоятельных кодируемых структур; и
в битовом потоке, предоставляют закодированные данные, включающие в себя информацию предсказания, и предоставляют инициализатор предсказателя палитры, при этом инициализатор предсказателя палитры связан с кодируемой структурой, иерархически выше двух самостоятельных кодируемых структур, в битовом потоке.
Соотносительно, в изобретении предложено декодирующее устройство для декодирования по меньшей мере одного изображения из битового потока, причем изображение разделено на иерархические кодируемые структуры, при этом декодирующее устройство содержит по меньшей мере один микропроцессор, выполненный с возможностью выполнения этапов вышеупомянутого способа декодирования. В изобретении также предложено кодирующее устройство для кодирования по меньшей мере одного изображения в битовый поток, при этом кодирующее устройство содержит по меньшей мере один микропроцессор, выполненный с возможностью выполнение этапов вышеупомянутого способа кодирования.
Благодаря настоящему изобретению повышается эффективность кодировки. Это, главным образом, достигается посредством использования инициализатора предсказателя палитры, заданного на иерархическом уровне, строго выше в отличие от одной из кодируемых структур, которым нужна инициализация своего предсказателя палитры. Это происходит потому, что один и тот же инициализатор предсказателя палитры может использоваться несколькими независимыми кодируемыми структурами (например, слоями), при низких издержках (то есть без отправки несколько раз в битовом потоке).
Различные возможные признаки вариантов осуществления настоящего изобретения определены в прилагаемой формуле изобретения. Некоторые из этих признаков объясняются в данном документе ниже со ссылкой на способ, в то время как они могут быть перенесены на признаки системы, предназначенные для устройства согласно вариантам осуществления настоящего изобретения.
В вариантах осуществления инициализатор предсказателя палитры задан на уровне изображения в Наборе Параметров Снимка (Picture Parameter Set, PPS); и две самостоятельные кодируемые структуры обращаются к Набору Параметров Снимка. Данное предоставление является полностью совместимым с некоторой оптимизацией на стороне кодера, в частности, обновление инициализатора предсказателя палитры после некоторого количества кадров или времени, или использование инициализатора предсказателя палитры в расчете на одну подобласть изображения (например, плитку или произвольную подобласть).
В одном варианте реализации инициализатор предсказателя палитры задан на уровне последовательности в Наборе Параметров Последовательности (Sequence Parameter Set, SPS); и две самостоятельные кодируемые структуры обращаются к Набору Параметров Последовательности. Что касается подхода PPS выше, в данном варианте реализации не требуется дополнительных данных на уровне самостоятельной кодируемой структуры (например, слоя). Это происходит потому, что ссылка на SPS (или PPS) уже существует в сигнализации самостоятельных кодируемых структур (например, слоев). Таким образом, эффективность кодировки высоко повышается.
Согласно особому признаку инициализатор предсказателя палитры задан после первого поля, указывающего, задействован ли режим кодировки посредством Палитры или нет, и после второго поля, содержащего максимальный размер для предсказателя палитры, в Наборе Параметров Последовательности. Данное предоставление оптимизирует издержки обработки, так как, например, не нужно выполнять какого-либо определения инициализатора предсказателя палитры, если первое поле указывает, что режим кодировки посредством Палитры не задействован.
В другом варианте реализации две самостоятельные кодируемые структуры являются слоями; и инициализатор предсказателя палитры задан на уровне плитки в плитке, содержащей две самостоятельные кодируемые структуры; и каждая из упомянутых двух самостоятельных кодируемых структур идентифицирует плитку, к которой она принадлежит. По сравнению с заданием инициализатора в PPS данное предоставление позволяет ограничивать увеличение ID PPS. Это происходит потому, что больше нет необходимости в обеспечении нового ID PPS для каждого нового объявленного инициализатора предсказателя палитры. Следует заметить, что список инициализаторов может быть задан внутри PPS, в котором каждый инициализатор связан с конкретной плиткой.
Относительно декодирования варианты осуществления могут предоставить возможность выполнения этапа инициализации для любой из двух упомянутых самостоятельных кодируемых структур перед декодированием самого первого блока пикселей в рассматриваемой самостоятельной кодируемой структуре. Это происходит потому, что вследствие свойства «самостоятельности» кодировка/декодирование самого первого блока не могут унаследовать данные (в том числе и предсказатель палитры) от предыдущего блока пикселей или кодируемой структуры.
В некоторых вариантах осуществления следующий предсказатель палитры для следующего блока пикселей в одной из двух упомянутых самостоятельных кодируемых структурах построен из текущей палитры, используемой для кодирования текущего блока пикселей в одной и той же самостоятельной кодируемой структуре. В этом случае преимущественно инициализировать упомянутый предсказатель палитры, а не расширять его, поскольку, в последнем случае, расширенный предсказатель палитры может впоследствии закончиться с дублирующимися значениями.
Следует заметить, что блоки пикселей обычно последовательно рассматриваются согласно порядку сканирования, например, растровому сканированию, внутри рассматриваемой кодируемой структуры. Следующий предсказатель палитры, например, используется для оценивания режима кодировки посредством Палитры в течение конкурирования с другими режимами кодировки (ВНУТРЕННИМ, ВЗАИМНЫМ и т.д.). В случае, при котором режим кодировки посредством Палитры не выбран для следующего блока пикселей, то «следующий предсказатель палитры» может быть использован для дальнейшего следующего блока пикселей.
Вышеупомянутое предоставление демонстрирует, что предсказатель палитры обязательно динамически разовьется с кодировкой блоков пикселей внутри кодируемой структуры (например, слоя).
В частном варианте осуществления следующий предсказатель палитры построен только из текущей палитры и текущего предсказателя палитры, используемого для предсказывания текущей палитры.
В частности следующий предсказатель палитры может быть построен посредством выбора всех записей текущей палитры и выбора записей текущего предсказателя палитры, которые не использованы для предсказания текущей палитры. Данный подход постепенно наращивает предсказатели палитры, используемые в самостоятельной кодируемой структуре, новыми цветами, которые могут быть добавлены к текущим палитрам при кодировании блоков пикселей. В результате режим кодировки посредством Палитры становится все более эффективным с проходом блоков пикселей.
В некоторых вариантах осуществления информация предсказания для предсказания палитры из предсказателя палитры включает в себя битовую карту флагов (обычно декодированных из битового потока на стороне декодера и добавленных в битовый поток на стороне кодера), при этом каждый флаг которой задает, выбрана ли или нет соответствующая запись в предсказателе палитры в качестве записи для создания записи в палитре.
В особых вариантах осуществления битовая карта флагов (обычно закодированная с использованием кодирования (RLE) длин серий) содержит одно и то же количество битов что и количество записей в предсказателе палитры, и каждый бит в некотором положении в битовой карте задает то, выбрана ли запись, имеющая соответствующее положение в предсказателе палитры, в качестве записи палитры. Данная конфигурация повышает эффективность кодировки. Вариант реализации, который может дополнительно уменьшить размер битовой карты, может учитывать остановку битовой карты при последней записи, которая выбрана в качестве записи палитры. Это происходит, в частности, преимущественно потому, что, как предложено выше, записи в предсказателе палитры упорядочены согласно их появлениям. В некоторых вариантах осуществления это в результате приводит к тому, что последние записи предсказателя палитры статистически не используются часто для палитры.
В других особых вариантах осуществления способ может дополнительно содержать этап, на котором добавляют дополнительные записи в конце палитры, имеющей выбранные записи из предсказателя палитры. Эти дополнительные записи могут быть записями для дополнительных декодированных пикселей (как в декодере, так и в кодере с использованием цикла декодирования) и/или записями из предварительно определенной палитры, которая, например, построена кодером и передана (в битовом потоке) в декодер (как и в традиционном режиме кодировки посредством Палитры). Данное предоставление должно повысить эффективность кодировки посредством Палитры.
В одном варианте реализации для передачи битовой карты флагов, может быть использован неявный подход, таким образом уменьшая дополнительные данные или биты (битовую карту), подлежащих отправке в битовом потоке: возможно указать через флаг (palette_share_flag (флаг_совместное_использование_палитры)), что следующий блок пикселей или CU, подлежащий кодировке посредством палитры, повторно будет использовать все записи последней палитры, используемой для последнего закодированного посредством палитры блока пикселей или CU. В этом случае, особый вариант осуществления может заключаться в инициализации, с использованием размера инициализатора предсказателя палитры, размера палитр, которые подлежат использованию для кодирования блоков пикселей.
В некоторых вариантах осуществления значения пикселей записей текущей палитры имеют цветовые компоненты, и только подраздел цветовых компонент предсказывается с использованием предсказателя палитры. Практически, одна или две цветовые компоненты из трех могут быть предсказаны. Данное предоставление уменьшает обработку и сигнализацию в битовом потоке.
Относительно кодирования варианты осуществления могут предоставлять то, что определение одного предсказателя палитры содержит кодирование, с использованием режима кодировки посредством Палитры, поднабора блоков пикселей, распространенных по области изображения, составленной из упомянутой кодируемой структуры, иерархически выше двух самостоятельных кодируемых структур, и содержит использование предсказателя палитры, полученного в конце этапа кодирования, в качестве инициализатора предсказателя палитры.
Ограничение этапа определения до поднабора пикселей позволяет иметь процесс с низкой сложностью при определении инициализатора. Это, в частности, пригодно для кодирования с малой задержкой.
Следует заметить, что режим кодировки посредством Палитры предпочтительно конкурирует с другими режимами кодировки (например, ВНУТРЕННЕЙ и ВЗАИМНОЙ) так, чтобы блоки, которые не адаптированы для кодировки посредством Палитры, были исключены (потому что кодируются с использованием другого режима кодировки) из рассмотрения. Кроме этого, кодирование на этапе определения не приводит в результате к созданию данных для битового потока, а только составляет анализ поднабора пикселей на основе кодирования палитры.
В некоторых вариантах осуществления блоки пикселей поднабора распределены вдоль наклона или диагонали области. Тем самым имеется поднабор блоков пикселей, который является представителем в максимально возможной степени всей области изображения, для которой будет использован инициализатор предсказателя палитры.
В одном варианте реализации блоки пикселей поднабора горизонтально выровнены в верхней части области изображения, предпочтительно в верхней части изображения. Инициализатор предсказателя палитры, полученный таким образом, хорошо подходит для кодирования начала изображения и может использоваться для нескольких последующих изображений.
В особом варианте осуществления блоки пикселей поднабора не являются смежными. Например, могут быть выбраны каждые два (или более) блоков пикселей, один блок пикселей. Тем самым исключается бесполезная обработка, которая может произойти из обработки очень подобных смежных блоков пикселей.
В других вариантах осуществления, определение одиночного предсказателя палитры содержит рекурсивное кодирование одного и того же поднабора блока пикселей, в котором первый предсказатель палитры, используемый для следующего цикла рекурсивного кодирования, является предсказателем палитры, полученным в конце предыдущего цикла рекурсивного кодирования. Другими словами, предсказатель палитры, полученный в конце предыдущего цикла рекурсивного кодирования, используется в качестве инициализатора предсказателя палитры для следующего цикла кодирования. С увеличением количества рекурсивных циклов, инициализатор предсказателя палитры становится все более подходящим для кодирования блоков пикселей самостоятельного кодируемого единичного участка. Как следствие, больше блоков пикселей закодированы посредством палитры, и меньше блоков пикселей ВЗАИМНО или ВНУТРЕННЕЕ закодированы, таким образом повышая скорость кодирования.
В некоторых вариантах осуществления две самостоятельные кодируемые структуры включены в два отдельных изображения. В одном варианте реализации две самостоятельных кодируемые структуры включены в одно и то же изображение.
В некоторых вариантах осуществления, которые могут относиться к повторному использованию или совместному использованию палитры между последующими закодированными посредством палитры блоками пикселей, способ может дополнительно содержать этап, на котором определяют размер текущей палитры. Например, размер палитры может быть установлен с использованием размера инициализатора предсказателя палитры, используемого для инициализации предсказателя палитры. Это, главным образом, возникает для первого закодированного посредством палитры в самостоятельной кодируемой структуре, так как никакая палитра не унаследована от предыдущих блоков пикселей. В некоторых вариантах осуществления, которые могут относиться к совместному использованию палитры между последующими закодированными посредством палитры блоками пикселей, способ может дополнительно содержать этап, на котором инициализируют размер упомянутой совместно используемой палитры, когда никакой предыдущей палитры фактически не существует. Согласно одному варианту осуществления настоящего изобретения данный размер может быть инициализирован с использованием размера инициализатора предсказателя палитры, если он ниже максимального размера, допустимого для палитр.
В одном варианте осуществления осуществляется получение информации о количестве цветовых компонент, причем структура инициализатора предсказателя палитры основана на упомянутой информации.
Другими словами, инициализатор предсказателя палитры может содержать столько компонент сколько цветовых компонент, при этом количество компонент инициализатора предсказателя палитры получено из упомянутой информации.
Предпочтительно упомянутая информация является флагом для сигнализации того, является ли упомянутое изображение монохромным изображением или нет.
Другой вариант выполнения изобретения относится к постоянному считываемому компьютером носителю, хранящему программу, которая, при исполнении микропроцессором или компьютерной системой в устройстве для декодирования или кодирования по меньшей мере одного изображения, предписывает устройству выполнять способ декодирования или кодирования, заданный выше.
Постоянный считываемый компьютером носитель может иметь признаки и преимущества, которые аналогичны изложенным выше и ниже относительно способов и устройств.
Другой вариант выполнения настоящего изобретения относится к способу декодирования по меньшей мере одного изображения из битового потока, причем изображение разделено на иерархические кодируемые структуры по существу так, как описано в данном документе со ссылкой на и изображено на Фигуре 12a или Фигуре 12b, или Фигуре 12 и (14a или 14b, или 14c,, или 14d) сопроводительных чертежей.
Еще один вариант выполнения изобретения относится к способу кодирования по меньшей мере одного изображения в битовый поток по существу так, как описано в данном документе со ссылкой на и изображено на Фигуре 13b или Фигурах 13a и 13b, или Фигуре 13a и (14a или 14b, или 14c, или 14d) сопроводительных чертежей.
Другой вариант выполнения настоящего изобретения относится к способу декодирования набора параметров снимка, используемого для декодирования изображений из битового потока, причем изображение содержит пиксели, имеющие по меньшей мере одну цветовую компоненту, при этом способ разделен на несколько этапов. Способ содержит этапы, на которых:
декодируют один параметр цветовой компоненты, заданный в наборе параметров снимка и вовлеченный по меньшей мере в двух этапах способа декодирования, указывая, является ли упомянутое изображение монохромным, и;
пропускают или исправляют по меньшей мере один этап способа декодирования, если декодированный параметр цветовой компоненты указывает, что изображение является монохромным.
Данный вариант выполнения изобретения нацелен на предложение синтаксиса без какой-либо избыточности, которая обычно была источником дефектов. Данный вариант выполнения изобретения более эффективен и предотвращает противоречащие конфигурации.
В одном варианте осуществления по меньшей мере два различных этапа либо пропускаются, либо исправляются, причем по меньшей мере один из упомянутых этапов содержит этап, на котором декодируют значение пикселей, закодированные с использованием режима палитры.
В одном варианте осуществления один этап содержит этап, на котором определяют количество элементов по меньшей мере для одной записи или каждой записи инициализатора предсказателя палитры. Как задано выше каждый элемент относится к значению пикселя для цветовой компоненты. Например, если изображение является монохромным, то каждая запись палитры содержит один элемент для уникальной цветовой компоненты
В одном варианте осуществления каждая запись инициализатора предсказателя палитры является одиночным элементом, если декодированные параметры цветовой компоненты установлены в предварительно определенное значение, в противном случае является триплетом.
В одном варианте осуществления один из этапов относится к остаточному приспосабливаемому цветовому преобразованию, которое пропускается, если параметр цветовой компоненты указывает, что изображение является монохромным.
В одном варианте осуществления параметр является флагом, принимающим значение «1», когда изображение является монохромным.
Другой вариант выполнения изобретения относится к способу декодирования набора параметров снимка, используемого для декодирования изображений из битового потока, причем изображение содержит пиксели, имеющие по меньшей мере одну цветовую компоненту, при этом упомянутое изображение закодировано посредством использования одного режима среди множества режимов, включающих в себя режим палитры. Способ содержит:
- Этап, относящийся к остаточному приспосабливаемому цветовому преобразованию; и
- Этап задания инициализатора предсказателя палитры, причем этап задания обрабатывают на основе значения параметра цветовой компоненты, указывающего, является ли изображение монохромным или нет.
Значение параметра цветовой компоненты расценивают из исполнения остаточного приспосабливаемого цветового преобразования.
Данный другой вариант выполнения изобретения направлен на предложение синтаксиса без какой-либо избыточности, которая обычно была источником дефектов. Данный вариант выполнения изобретения более эффективен и предотвращает противоречащие конфигурации.
В одном варианте осуществления при исполнении остаточного приспосабливаемого цветового преобразования значение параметра цветовой компоненты расценивается в качестве указания того, что изображение не является монохромным.
В одном варианте осуществления параметр цветовой компоненты является флагом, значение которого расценивается в качестве «0 при исполнении остаточного приспосабливаемого цветового преобразования.
Другой вариант выполнения изобретения относится к способу декодирования набора параметров снимка, используемого для декодирования изображений из битового потока, причем изображение содержит пиксели, имеющие по меньшей мере одну цветовую компоненту, при этом по меньшей мере одно изображение закодировано посредством использования режима палитры, и при этом способ содержит этап инициализации предсказателя палитры с помощью инициализатора предсказателя палитры, имеющего одно и то же количество записей, причем инициализатор предсказателя палитры и предсказатель палитры имеют один или более элементов на запись.
Управление инициализацией предсказателя палитры через инициализатора предсказателя палитры осуществляется посредством предварительно определенных правил при переключении с изображения, имеющего пиксели с заданным количеством цветовых компонентов, на изображение, имеющее другое количество цветовых компонент.
В одном варианте осуществления предварительно определенное правило содержит по меньшей мере для одной записи предсказателя палитры установку по меньшей мере двух из элементов в одно и то же значение элемента инициализатора предсказателя палитры.
В одном варианте осуществления предварительно определенное правило содержит по меньшей мере для одной записи предсказателя палитры установку по меньшей мере одного из упомянутых элементов в предварительно определенное значение по умолчанию.
В одном варианте осуществления предварительно определенное правило применяется при переключении с изображения, имеющего одну цветовую компоненту, на изображение, имеющее три цветовые компоненты.
Согласно другому варианту выполнения настоящего изобретения предложено декодирующее устройство для декодирования набора параметров снимка, относящегося к изображению, из битового потока, при этом упомянутое устройство выполнено с возможностью реализации способа декодирования согласно одному из вариантов осуществления, описанных выше.
Согласно другому варианту выполнения настоящего изобретения предложен постоянный считываемый компьютером носитель, хранящий программу, которая, при исполнении микропроцессором или компьютерной системой в устройстве для декодирования по меньшей мере одного изображения, предписывает устройству выполнять способ согласно одному из вариантов осуществления, описанных выше. По меньшей мере части способов согласно настоящему изобретению могут быть реализуемыми компьютером. Соответственно, настоящее изобретение может принимать форму варианта осуществления полностью в аппаратном обеспечении, варианта осуществления полностью в программном обеспечении (включающем в себя встроенное микропрограммное обеспечение, резидентное программное обеспечение, микрокод и т.д.) или варианта осуществления, сочетающего варианты выполнения программного и аппаратного обеспечения, которые все в целом могут упоминаться в данном документе в качестве «схемы», «модуля» или «системы». Кроме этого, настоящее изобретение может принимать форму компьютерного программного продукта, воплощенного в любом материальном носителе представления, имеющего используемый компьютером программный код в носителе.
Так как настоящее изобретение может быть реализовано в программном обеспечении, то настоящее изобретение может быть воплощено в качестве считываемого компьютером кода для предоставления в программируемое устройство на любом подходящем промежуточном носителе. Материальный промежуточный носитель может содержать носитель хранения информации, такой как гибкий диск, CD-ROM, жесткий диск, устройство с магнитной лентой или твердотельное запоминающее устройство и т.п. Временный промежуточный носитель может включать в себя сигнал, такой как электрический сигнал, электронный сигнал, оптический сигнал, акустический сигнал, магнитный сигнал или электромагнитный сигнал, например, микроволновый или RF-сигнал. Другими словами, промежуточный носитель может быть временным или постоянным.
Краткое описание чертежей
Теперь будут описаны варианты осуществления настоящего изобретения, только в качестве примера, и со ссылкой на следующие чертежи, на которых:
На Фигуре 1 показана конструкция кодера HEVC;
На Фигуре 2 показана конструкция декодера HEVC;
На Фигуре 3 показана концепция причинной области;
На Фигуре 4 показано разделение Кодируемого Древовидного Блока на Кодируемые Единичные Участки и декодирование в порядке сканирования этих Кодируемых Единичных Участков;
На Фигуре 5 показан исследуемый принцип действия режима Палитры на стороне декодера в Расширении SECC HEVC совместно с предсказанием упомянутой палитры;
На Фигуре 6 показан пример Кодируемого Единичного Участка с его соответствующим блоком уровней и связанной палитрой;
На Фигуре 7 показан один и тот же блок уровней и набор синтаксических элементов, используемых для кодирования данного блока уровней;
На Фигуре 8 показан процесс декодирования синтаксических элементов, относящихся к режиму кодировки посредством Палитры;
На Фигуре 9 показан процесс восстановления для построения блока уровней на стороне декодирования;
На Фигуре 10 показана схема предсказания, включающая в себя примерное итеративное построение предсказателя палитры;
На Фигуре 11 показаны различные блочные структуры, используемые в видеокодировке;
На Фигуре 12a показано осуществление синтаксического анализа инициализатора предсказателя палитры из битового потока;
На Фигуре 12b показано использование инициализатора предсказателя палитры декодером для декодирования битового потока;
На Фигуре 13a показаны различные поднаборы блоков для использования в определении кодером инициализатора предсказателя палитры;
На Фигуре 13b показан анализ, выполняемый кодером над поднабором блоков для определения инициализатора предсказателя палитры;
На Фигуре 14a, b, c и d показаны примеры сигнализации инициализатора предсказания палитры в существующих расширениях SCC для SPS или PPS, как это записано кодером и синтаксически проанализировано декодером;
На Фигуре 15 показан пример сигнализации инициализатора предсказания палитры, как это предложено в документе JCTVC-T1005, в расширении SCC для PPS, как это записано кодером и синтаксически проанализировано декодером;
На Фигуре 16 показан вариант осуществления дополнительного варианта выполнения настоящего изобретения;
На Фигуре 17 показан другой вариант осуществления дополнительного варианта выполнения настоящего изобретения; и
На Фигуре 18 показана принципиальная блок-схема вычислительного устройства для реализации одного или более вариантов осуществления настоящего изобретения.
Подробное описание вариантов осуществления изобретения
На Фигуре 1 показана конструкция кодера HEVC. В видеокодере исходная последовательность 101 разделяется на блоки пикселей 102. Режим кодировки затем назначается каждому блоку. Есть два семейства режимов кодировки, обычно используемых в HEVC: режимы на основе пространственного предсказания или ВНУТРЕННИЕ (INTRA) режимы 103 и режимы на основе временного предсказания или ВЗАИМНЫЕ (INTER) режимы на основе оценки 104 движения и компенсации 105 движения. Разрабатываемое в настоящее время расширение HEVC, известное в качестве SCC HEVC, добавляет дополнительные режимы кодировки, в частности, режим кодировки посредством Палитры, который конкурирует с режимами ВНУТРЕННЕЙ и ВЗАИМНОЙ кодировки для кодирования блоков пикселей. Данный режим кодировки посредством Палитры описан более подробно ниже, в частности, со ссылкой на Фигуры 5-9. Специалист в данной области техники может также получить подробности о режиме кодировки посредством Палитры в документе JCTVC-S1005 (2-ой Текст Проекта Кодировки Содержимого Экрана HEVC (HEVC Screen Content Coding Draft Text 2)), самый последний из написанных. Следует заметить, что изобретение не ограничено вариантом реализации режима кодировки посредством Палитры, как описано в расширении SCC HEVC, но может применяться к любой схеме с предсказанием палитры.
ВНУТРЕННИЙ (INTRA) Кодируемый Единичный Участок в целом предсказывается из закодированных пикселей на своей причинной границе посредством процесса под названием ВНУТРЕННЕЕ предсказание.
Временное предсказание режима ВЗАИМНОЙ кодировки сначала состоит в нахождении в предыдущем или будущем кадре, названным опорным кадром 116, опорная область которого является самой близкой к Кодируемому Единичному Участку, на этапе 104 оценки движения. Данная опорная область составляет блок предсказателя. Затем данный Кодируемый Единичный Участок предсказывается с использованием блока предсказателя для вычисления остатка на этапе 105 компенсации движения.
В обоих случаях, пространственного и временного предсказания, остаток вычисляется посредством вычитания Кодируемого Единичного Участка из исходного блока предсказателя.
При ВНУТРЕННЕМ предсказании кодируется направление предсказания. При временном предсказании кодируется по меньшей мере один вектор движения. Однако, для дополнительного уменьшения издержек битовой скорости, относящихся к кодированию вектора движения, вектор движения не кодируется непосредственно. Действительно, исходя из предположения, что движение однородно, то, в частности, преимущественно кодировать вектор движения в качестве разности между данным вектором движения, и вектором движения в его окружении. В стандарте кодировки H.264/AVC, например, векторы движения кодируются по отношению к срединному вектору, вычисленному между 3 блоками, расположенными выше и слева от текущего блока. Только разность, также называемая остаточным вектором движения, вычисленная между срединным вектором и вектором движения текущего блока, кодируется в битовом потоке. Обработка этого осуществляется в модуле «Кодировка и Предсказание Mv» 117. Значение каждого закодированного вектора хранится в поле 118 вектора движения. Соседние векторы движения, используемые для предсказания, извлекаются из поля 118 вектора движения.
Затем, режим, оптимизирующий функционирование расхождения скорости выбирается в модуле 106. Для дополнительного уменьшения избыточности, в модуле 107 к остаточному блоку применяется преобразование, обычно DCT, и в модуле 108 к коэффициентам применяется квантование. Квантованный блок коэффициентов затем подвергается энтропийной кодировке в модуле 109, и результат вставляется в битовый поток 110.
Кодер затем выполняет декодирование закодированного кадра для будущей оценки движения в модулях 111-116. Данный цикл декодирования осуществляется в кодере. Эти этапы предоставляют кодеру и декодеру возможность иметь одни и те же опорные кадры. Для восстановления кадра с такой кодировкой, остаток подвергается обратному квантованию в модуле 111 и обратному преобразованию в модуле 112 для предоставления «восстановленного» остатка в пиксельной области. Согласно режиму кодирования (ВЗАИМНОМУ или ВНУТРЕННЕМУ) данный остаток добавляется к ВЗАИМНОМУ предсказателю 114 или ВНУТРЕННЕМУ предсказателю 113.
Затем, данное первое восстановление фильтруется в модуле 115 посредством одного или нескольких типов постфильтрации. Эти постфильтры встроены в цикл декодирования. Это означает, что они должны быть применены к восстановленному кадру в кодере и декодере для использования одних и тех же опорных кадров в кодере и декодере. Цель данной постфильтрации состоит в том, чтобы удалить дефекты сжатия.
Принцип действия декодера HEVC представлен на Фигуре 2. Видеопоток 201 сначала энтропийно декодируются в модуле 202. Остаточные данные затем подвергаются обратному квантованию в модуле 203 и обратному преобразованию в модуле 204 для получения значений пикселей. Данные режима также энтропийно декодируются, и в зависимости от режима выполняется декодирование ВНУТРЕННЕГО типа или декодирование ВЗАИМНОГО типа. В случае ВНУТРЕННЕГО режима направление ВНУТРЕННЕГО предсказания декодируется из битового потока. Направление предсказания затем используется для определения местоположения опорной области 205. Если режим является ВЗАИМНЫМ, то информация о движении декодируется из битового потока 202. Она состоит из указателя опорного кадра и остатка вектора движения. Предсказатель вектора движения добавляется к остатку вектора движения для получения вектора 210 движения. Вектор движения затем используется для определения местоположения опорной области в опорном кадре 206. Следует заметить, что данные 211 поля вектора движения обновляются с помощью декодированного вектора движения для использования при предсказании следующих декодируемых векторов движения. Данное первое восстановление декодированного кадра затем подвергается постфильтрации 207 с тем же самым постфильтром, используемым на стороне кодера. Выходной результат декодера является распакованным видео 209.
На Фигуре 3 показан причинный принцип действия, происходящий вследствие поблочной кодировки как и в HEVC.
На высоком уровне изображение разделяется на Кодируемые Единичные Участки, которые кодируются в порядке растрового сканирования. Таким образом при кодировке блока 3.1 все блоки области 3.3 уже закодированы и могут считаться доступными кодеру. Схожим образом, при декодировании блока 3.1 в декодере все блоки области 3.3 уже декодированы и таким образом восстановлены и могут считаться доступными в декодере. Область 3.3 называется причинной областью Кодируемого Единичного Участка 3.1. Как только Кодируемый Единичный Участок 3.1 закодирован, он будет принадлежать причинной области для следующего Кодируемого Единичного Участка. Данный следующий Кодируемый Единичный Участок, так же как и все следующие, принадлежит области 3.4, изображенной в качестве точечной области, и не может быть использован для кодировки текущего Кодируемого Единичного Участка 3.1. Следует заметить, что причинная область составлена восстановленными блоками. Информация, используемая для кодирования заданного Кодируемого Единичного Участка, не является исходными блоками изображения по причине того, что данная информация не доступна при декодировании. Единственной информацией, доступной при декодировании, является восстановленная версия блоков пикселей в причинной области, а именно, декодированная версия этих блоков. Поэтому при кодировании, предварительно закодированные блоки причинной области декодируются для предоставления данной восстановленной версии этих блоков.
Возможно использовать информацию из блока 3.2 в причинной области при кодировании блока 3.1. В проектных спецификациях Расширения HEVC вектор 3.5 смещения, который может быть передан в битовом потоке, может указывать данный блок 3.2.
На Фигуре 4 показано разделение Кодируемого Древовидного Блока на Кодируемые Единичные Участки и примерный порядок сканирования для последовательной обработки этих Кодируемых Единичных Участков. В стандарте HEVC блочная структура организована посредством Кодируемых Древовидных Блоков (Coding Tree Block, CTB). Кадр содержит несколько неперекрывающихся и квадратных Кодируемых Древовидных Блоков. Размер Кодируемого Древовидного Блока может варьироваться в размере от 64×64 до 16×16. Данный размер определен на уровне последовательности. Самый эффективный размер, в терминах эффективности кодировки, является самым большим: 64×64. Следует заметить, что все Кодируемые Древовидные Блоки имеют один и тот же размер за исключением границы изображения, что означает, что они размещены в строках. Размер границы блоков CTB адаптируются согласно количеству оставшихся пикселей.
Каждый Кодируемый Древовидный Блок содержит один или более квадратных Кодируемых Единичных Участков (Coding Unit, CU). Кодируемый Древовидный Блок разделяется на основе квадро-древовидной структуры на несколько Кодируемых Единичных Участков. Порядок обработки (кодировки или декодирования) каждого Кодируемого Единичного Участка в Кодируемом Древовидном Блоке следует за квадро-древовидной структурой на основе порядка растрового сканирования. На Фигуре 5 показан пример порядка обработки Кодируемых Единичных Участков. На данной фигуре номер в каждом Кодируемом Единичном Участке задает порядок обработки каждого соответствующего Кодируемого Единичного Участка данного Кодируемого Древовидного Блока.
В HEVC используется несколько способов для кодировки различных синтаксических элементов, например остатков блоков, информации о блоках предсказателей (векторов движения, направлений ВНУТРЕННЕГО предсказания и т.д.). В HEVC используется несколько типов энтропийной кодировки, таких как Основанная на Контексте Адаптивная Двоичная Арифметическая Кодировка (Context based Adaptive Binary Arithmetic Coding, CABAC), Код Голомба-Райса (Golomb-rice Code), или простое двоичное представление под названием Кодировка Фиксированной Длины (Fixed Length Coding). Большую часть времени процесс двоичного кодирования выполняется для представления различных синтаксических элементов. Данный процесс двоичного кодирования является также очень специфичным и зависит от различных синтаксических элементов.
Расширение Кодировки Содержимого Экрана HEVC, также обычно называемое SCC HEVC, является расширением, которое в настоящее время проектируется для нового стандарта HEVC видеокодировки. Производная от Расширения диапазона HEVC имеет общее называние RExt HEVC.
Цель данного расширения состоит в предоставлении дополнительных инструментов для кодирования видеопоследовательности, в частности, для цветового формата 4:4:4 с 8 битами битовой глубины и, возможно без потерь, содержащих содержимое, такое как съемка графических пользовательских интерфейсов, создаваемое посредством компьютерной графики содержимое и т.д. (известные в качестве Содержимого Экрана).
Цветное изображение в общем случае состоит из трех цветовых компонент R, G и B. Эти компоненты в целом являются коррелированными, и при сжатии изображений и видео очень распространена практика декорреляции цветовых компонент перед обработкой изображений. Наиболее распространенный формат, который декоррелирует цветовые компоненты, является цветовым форматом YUV. Сигналы YUV обычно создаются из RGB-представления изображений посредством применения линейного преобразования к трем входным элементам: входным кадрам R, G и B. Y обычно называется компонентой Яркости, U и V в целом называются компонентами Цветности. Термин «YCbCr» также широко используется вместо термина «YUV».
Кроме этого, некоторые инструменты SCC могут быть совместимыми с другими цветовыми форматами. В частности, режим палитры был сделан совместимым с 4:2:0 посредством регулировки случая 4:4:4, который был установлен для обработки монохромных данных посредством действия на одиночную компоненту вместо трех компонент. Также могут обрабатываться различные битовые глубины.
SCC HEVC, помимо сжатия с потерями, также способно предоставлять кодирование без потерь входных последовательностей; для этого необходимо иметь декодированный выходной результат 209 строго идентичный входному 101. Для достижения этого было изменено или добавлено некоторое количество инструментов, по сравнению с традиционным кодеком с потерями RExt HEVC.
Дополнительные инструменты для SCC HEVC в настоящее время разрабатываются для эффективного кодирования видеопоследовательности «содержимого экрана» в дополнение к естественным последовательностям. Как было кратко представлено выше, видеопоследовательности «содержимого экрана» ссылаются на конкретные видеопоследовательности, которые имеют очень специфичное содержимое, соответствующее захваченным с персонального компьютера или любого другого устройства, содержащего, например, текст, презентацию PowerPoint, Графический Пользовательский Интерфейс, таблицы (например, снимки экрана). Эти конкретные видеопоследовательности имеют очень отличающуюся статистику по сравнению с естественными видеопоследовательностями. При видеокодировке производительность традиционных инструментов видеокодировки, включающих в себя HEVC, иногда не дает ожидаемого эффекта при обработке такого «содержимое экрана».
Инструменты, в настоящее время обсуждаемые в SCC HEVC для обработки видеопоследовательности «содержимого экрана», включают в себя Адаптивное Цветовое Преобразование (Adaptive Color Transform), режим Внутренней Копии Блока и режим Палитры. Прототипы для этих режимов продемонстрировали хорошую эффективность кодировки по сравнению с традиционным способом, предназначенным для естественных видеопоследовательностей. Настоящая заявка сосредотачивается на режиме кодировки посредством Палитры.
Режим кодировки посредством Палитры SCC HEVC является режимом кодировки, который означает, что информация непосредственно кодирует пиксельные данные. Как разрабатывается в настоящее время, в режиме кодировки посредством Палитры не используются остаточные данные, а используется «кодировка выбросов», когда пиксель не согласуется ни с какой записью в настоящее время используемой палитры. В частности, в случае кодировки без потерь, это означает, что запись палитры должна кодером быть выбрана равной пикселю, или что пиксель с кодировкой выбросов не подвергается квантованию, при этом значение квантователя передается на уровне CU.
Палитра в целом представлена таблицей, содержащей конечный набор N-элементного кортежа цветов, причем каждый цвет задан своими компонентами в заданном цветовом пространстве (см. например 603 на Фигуре 6 на основе цветового пространства YUV). Например, в характерном для RGB формате палитра составлена из списка P элементов N-элементного кортежа (где N=3 для RGB). Более точно, каждый элемент соответствует фиксированному триплету цветовых компонент в формате RGB. Конечно, здесь не стоит ограничиваться цветовым форматом RGB или YUV. Любой другой цветовой формат может быть представлен палитрой и может использовать меньшее или большее количество цветовых компонент, что означает, что N может отличаться от 3.
На стороне кодера, режим Палитры, рассматриваемый в SCC HEVC, заключается в преобразовании значений пикселя заданного входного кодируемого единичного участка в указатели, называемые уровнями. Уровни идентифицируют записи в связанной палитре, значения пикселей которой согласуются со значениями пикселей входного кодируемого единичного участка. Однако, когда значение пикселя входного кодируемого единичного участка не может быть представлено уровнем (то есть не согласуется), например, потому что расхождение слишком большое (больше 0 в случае кодировки без потерь), затем упомянутый пиксель представляется особым уровнем, указывающим «кодировку выбросов». Для каждого пикселя, представленного данным особым уровнем «кодировки выбросов», квантованные значения пикселей передаются дополнительно.
После преобразования результирующий кодируемый единичный участок состоит из блока уровней и блока квантованных значений (для пикселей с кодировкой выбросов). Он затем передается в декодер со связанной палитрой, в общем случае с таблицей, имеющей конечное количество триплетов цветов, используемых для представления кодируемого единичного участка. Так как палитра задает конечное количество цветов, то преобразование в блок указателей обычно приближено к исходному входному кодируемому единичному участку при кодировке с потерями, но строго соответствует исходному входному кодируемому единичному участку при кодировке без потерь.
Для применения режима Палитры на стороне кодера, примерный вариант преобразования кодируемого единичного участка пикселей выполняется следующим образом:
- находятся P триплетов, лучше всего описывающих кодируемый единичный участок пикселей для кодирования, например, посредством минимизации полного расхождения;
- затем связывается с каждым пикселем кодируемого единичного участка согласующийся цвет среди P триплетов: значение для кодирования (или уровень) (который таким образом образует часть блока указателей) затем является указателем, соответствующим записи связанного согласующегося цвета. Блок указателей таким образом получается из палитры посредством сравнения записей палитры с каждым пикселем кодируемого единичного участка для идентификации, для каждого пикселя, запись, которая задает согласующийся цвет. Если никакая запись не согласуется, то уровень, указывающий кодировку выбросов, а также квантованные значения пикселя, связывается с пикселем (в блоке квантованных значений).
Для каждого кодируемого единичного участка палитра (то есть найденные P триплетов), блок указателей или уровней и блок квантованных значений пикселя кодируются в битовом потоке 110 и отправляются в декодер.
Кроме этого, могут быть предоставлены особые флаги в некоторых наборах параметров в битовом потоке для указания, задействован ли режим кодировки посредством Палитры (например, в Наборе Параметров Последовательности или «SPS»). Эти наборы параметров также упоминаются в качестве синтаксических структур.
Кроме этого, на уровне кодируемого единичного участка флаг может указывать, имеет ли кодируемый единичный участок значения с кодировкой выбросов для принуждения палитры включать в себя вышеупомянутый особый уровень «кодировки выбросов».
В декодере режим кодировки посредством Палитры заключается в выполнении преобразования обратным образом. Это означает, что каждый декодируемый указатель, связанный с каждым пикселем кодируемого единичного участка, заменяется соответствующим цветом в палитре, декодированной из битового потока, для восстановления соответствующего цвета для каждого пикселя кодируемого единичного участка. Следует заметить, что, если пиксель связан с уровнем «кодировки выбросов», то соответствующее квантованное значение пикселя декодируется и подвергается обратному преобразованию из блока квантованных значений пикселей (то есть пикселей с кодировкой выбросов). Это является восстановлением блока указателей в цветовом пространстве (то есть предсказателя кодируемого единичного участка).
На Фигуре 5 дополнительно показан принцип действия режима кодировки посредством Палитры в декодере. При декодировании слоя, кадра или плитки процесс декодирования циклически осуществляется над блоками CU из битового потока, начинаясь с первого кодируемого единичного участка. Затем на этапе 502 режим предсказания для текущего кодируемого единичного участка извлекается из битового потока 501. В этот момент режим Палитры идентифицирован флагом, расположенным после флага пропуска, и флагом внутренней копии блока в битовом потоке (другие режимы кодировки были описаны выше со ссылкой на Фигуры 1 и 2). Данный флаг закодирован посредством CABAC с использованием одиночного контекста. Если данный режим не является режимом 503 Палитры, то на этапе 520 происходит традиционное декодирование. Иначе, связанный синтаксис режима 505 Палитры, то есть информация о палитре, блоке уровней и блоке пикселей с кодировкой выбросов, извлекается и декодируется 504 из битового потока 501.
Затем в течение этапа 506 из декодированных данных осуществляется построение следующих элементов: палитры 509, блока пикселей 507 с кодировкой выбросов и блока 508 уровней. В частности SCC HEVC предоставляет возможность предсказания палитры из предсказателя 510 палитры. Из блока уровней, связанной палитры и блока пикселей с кодировкой выбросов осуществляется построение восстанавливаемого кодируемого единичного участка в пиксельной области 514. Это означает, что для каждого уровня из блока уровней цвет (RGB или YUV) связывается с каждым пикселем.
Затем используется палитра 509 для обновления предсказателя 510 палитры для использования при декодировании других закодированных посредством палитры CU.
Следует заметить, что предсказание палитры 509 с использованием предсказателей 510 палитры может не использовать все записи предсказателя 510 палитры. Информация об использованных записях предсказателя 510 палитры или неиспользованных записях, а так же информация о размере последней используемой палитры могут быть сохранены. Такая информация повторно используется, как описано ниже.
На Фигуре 6 показан принцип действия режима кодировки посредством Палитры в кодере. Текущий кодируемый единичный участок 601 преобразовывается в блок 602 одного и тот же размера, который содержит уровень для каждого пикселя вместо трех цветовых значений (Y, U, V) или (R, G, B). В целях иллюстрации, пиксель 611 из 601 фактически закодирован посредством кодировки выбросов, и поэтому его связанный уровень 612 указывает уровень 613 кодировки выбросов (значение «3») палитры. Как следствие, блок 604 пикселей с кодировкой выбросов, содержит квантованное значение пикселя одиночного пикселя 620. Палитра 603, связанная с блоком уровней 602, строится на основе полной минимизации расхождения кодируемого единичного участка и связывает в каждой записи указатель или уровень записи с соответствующими цветовыми значениями пикселей. Следует заметить, что для монохромного применение значение пикселя может содержать только одну компоненту.
Как упомянуто выше относительно Фигуры 5, палитра (а также блок пикселей с кодировкой выбросов) кодируется и вставляется в битовый поток для каждого кодируемого единичного участка. Таким же образом, блок уровней (соответствующих кодируемому единичному участку) кодируется и вставляется в битовый поток, и пример кодировки приводится ниже со ссылкой на Фигуру 7. В данном примере блок уровней сканируется в горизонтальном порядке.
Блок 71 уровней является точно таким же, что и изображенный на Фигуре 6 под ссылочным обозначением 602. В таблицах 72 и 73 описаны последующие синтаксические элементы, используемые для кодировки блока 71 уровней. Таблица 73 должна считываться в качестве продолжения таблицы 72. Синтаксические элементы в таблице соответствуют кодированию групп уровней, окруженных жирными линиями в блоке 71.
Блок уровней кодируется посредством группы последующих пикселей в порядке сканирования. Каждая группа кодируется с использованием первого синтаксического элемента, предоставляющего направление предсказания, второго элемента, предоставляющего повторение, и необязательного третьего элемента, предоставляющего значение пикселя, а именно, уровень. Повторение соответствует количеству пикселей в группе.
Эти две таблицы представляют собой текущий синтаксис, связанный с режимом кодировки посредством Палитры. Эти синтаксические элементы соответствуют закодированной информации, вставленной в битовый поток, для блока 71 уровней. В этих таблицах три главных синтаксических элемента используются для полного представления действий режима кодировки посредством Палитры и используются следующим образом при последовательном рассмотрении уровней блока уровней 71.
Первый синтаксический элемент, называемый «Пред режимом» («Pred mode»), позволяет различать два режима кодирования. В первом режиме, соответствующем флагу «Пред режима», равному «0», новый уровень используется для текущего пикселя. Уровень сразу сигнализируется после данного флага в битовом потоке. Во втором режиме, соответствующем флагу «Пред режима», равному «1», используется режим «копирования». Более конкретно, это означает, что текущий уровень пикселя соответствует уровню пикселя, расположенному в линии сразу выше начала в одном и том же положении для порядка растрового сканирования. В случае флага «Пред режима», равного «1», нет никакой потребности в сигнализации уровня сразу после флага, потому что значение уровня известно посредством ссылки на значение уровня пикселя непосредственно выше в блоке уровней 71.
Второй синтаксический элемент под названием «Уровень» указывает значение уровня палитры для текущего пикселя только в первом режиме «Пред режима» или значение уровня для кодировки выбросов пикселя.
Третий синтаксический элемент, называемый «Пробегом», используется для кодирования значения повторений в обоих режимах «Пред режима». При рассмотрении случая, при котором блок уровней 71 сканируется с верхнего левого угла в нижний правый угол, строка за строкой слева направо и сверху вниз, синтаксический элемент Пробег предоставляет количество последующих пикселей в блоке 71, имеющих одно и то же кодирование.
Данный синтаксический элемент «Пробег» имеет различные значения, которые зависят от флага «Пред режим». Когда Пред режим равен 0, то элемент «Пробег» является количеством последующих пикселей блока указателей, имеющих одно и то же значение уровня. Например, если Пробег=8, то это означает, что текущий «Уровень» применяется к текущему пикселю и к следующим 8 пикселям, что соответствует 9 идентичным последующим дискретным отсчетам в порядке растрового сканирования.
Когда Пред режим равен 1, элемент «Пробег» является количеством последующих пикселей блока указателей, имеющих значение уровня, соответствующее значению уровня находящегося выше них пикселя в блоке 71, то есть там, где применим режим «копирования». Например, если Пробег=26, то это означает, что уровень текущего пикселя копируется из пикселя линии выше, так же как и следующие 26 пикселей, что суммарно соответствует 27 пикселям.
Таблицы 72 и 73 представляют собой девять стадий для представления блока 71 посредством использования режима кодировки посредством Палитры. Каждая стадия начинается с кодировки флага «Пред режима», за которым следует синтаксический элемент «Уровень», когда флаг «Пред режим» равен «0», или синтаксический элемент «Пробег», когда флаг «Пред режим» равен «1». За синтаксическим элементом «Уровень» всегда следует синтаксический элемент «Пробег».
Когда режим предсказания, декодированный для текущего блока, является режимом палитры, то декодер сначала декодирует синтаксис, относящийся к данному блоку, а затем применяет процесс восстановления для кодируемого единичного участка.
На Фигуре 8 показан процесс декодирования синтаксических элементов, относящихся к режиму кодировки посредством Палитры. Сначала, извлекается и декодируется 802 размер палитры из битового потока 801. Точный размер палитры (Palette_size (Размер_палитры)) получается посредством прибавления 1 к данному значению размера, декодированному на этапе 802. Действительно, размер кодируется посредством использования унарного кода, для которого значение 0 имеет самое малое количество битов (1 бит), но размер палитры не может быть равным 0, иначе никакое значение пикселя не может быть использовано для построения предсказателя блока.
Затем начинается процесс, соответствующий декодированию значений палитры. Переменная величина i, соответствующая указателю палитры, устанавливаюсь равной 0 на этапе 804, затем выполняется тест на этапе 805 для проверки, равна ли i размеру палитры (Palette_size) или нет. Если она отличается от размера палитры на этапе 805, то один элемент палитры извлекается из битового потока 801 (в случае, если палитра непосредственно закодирована в битовом потоке) и декодируется на этапе 806, и затем добавляется к палитре со связанным уровнем/указателем, равным i. Затем переменная величина i приращается на этапе 807. Если i равна размеру палитры на этапе 805, то палитра полностью декодирована.
Затем выполняется процесс, соответствующий декодированию блока уровней 71. Сначала, переменная величина j, соответствующая счетчику пикселей, устанавливается в 0 так же как и переменная величина syntax_i (синтаксис_i) 808. Затем выполняется проверка для узнавания, соответствует ли счетчик пикселей количеству пикселей, содержащихся в блоке. Если ответ - да на этапе 809, то процесс заканчивается на этапе 817, иначе значение флага «Пред режим», соответствующее одному режиму предсказания, извлекается из битового потока 801 и декодируется 810.
Значение «Пред режима» добавляется к таблице по указателю syntax_i, содержащей все декодированное значение «Пред режима». Если значение данного «Пред режима» равно 0, этап 811, то синтаксический элемент, соответствующий «Уровню», извлекается из битового потока 801 и декодируется 812. Данная переменная «Уровень» добавляется к таблице по указателю syntax_i, содержащей все декодированные уровни. Переменная величина j, соответствующая счетчику пикселей приращается на единицу 813.
Затем синтаксический элемент «Пробег» декодируется на этапе 814. Если синтаксический элемент «Пред Режим» равен 1, этап 811, то значение «Пробега» также декодируется на этапе 814. Данный синтаксический элемент «Пробег» добавляется к таблице по указателю syntax_i, содержащей все декодированные пробеги.
Затем, на этапе 818, для каждого пикселя, который закодирован посредством кодировки выбросов, как указано его уровнем (то есть если извлеченный Уровень равен уровню «кодировки выбросов», например «3» в примере на Фигурах 6 и 7), то связанное квантованное значение пикселя синтаксически анализируется и деквантуется из блока пикселей с кодировкой выбросов. Деквантованное значение пикселя, например, сохраняется в соответствующей таблице по указателю syntax_i.
Следует заметить, что этап 818 может быть выполнен сразу после этапа 812. В одном варианте реализации весь блок пикселей с кодировкой выбросов может быть извлечен из битового потока и деквантован на некотором этапе между этапом 809 и этапом 817.
Затем на этапе 815, значение j приращается на значение пробега, декодированного на этапе 814. Переменная величина syntax_i приращается на единицу для учета следующего набора синтаксических элементов. Если счетчик j равен количеству пикселей в блоке, то синтаксис для построения блока уровней 71 заканчивается (817). В конце данного процесса декодеру известны палитру и таблицы, содержащие список всех синтаксических элементов «Пред режим», «Уровень» и «Пробег», связанных с режимом кодировки посредством Палитры данного кодируемого единичного участка, а также известна таблица деквантованных значений пикселей для пикселей с кодировкой выбросов. Декодер может затем перейти к процессу восстановления кодируемого единичного участка, как описано на Фигуре 5.
В незначительной разновидности данного варианта осуществления Фигуры 8 элемент «Пред режим» не предоставлен для первой линии пикселей в верхней части блока уровней 71. Это происходит потому, что, так как эти пиксели лишены уровней в линии выше, то режим «копирования» не может быть исполнен. Поэтому, пока j меньше ширины блока на этапе 809, никакого элемента «Пред режим» не предоставляется и этапы 810-811 исключаются, тем самым происходит непосредственное выполнение этапа 812. Следует заметить, что данная незначительная разновидность уменьшает размер закодированного блока уровней.
В одном варианте осуществления, который может быть объединен либо с вышеупомянутым вариантом осуществления Фигуры 8, либо с ее незначительной разновидностью, вместо только одного может быть создано несколько блоков уровней. Это означает, что несколько уровней используется для всех или части пикселей. Например, первый блок уровней может быть построен для первой цветовой компоненты (Y, например), в то время как другой блок уровней может быть построен для упомянутой по меньшей мере одной оставшейся компоненты (U и V, например). Конечно, могут быть предусмотрены три блока уровней для этих трех цветовых компонент. Выбор наличия нескольких блоков уровня и их соответствия цветовым компонентам может быть сигнализирован в битовом потоке с использованием особых флагов. В одном варианте реализации, это может подразумеваться цветовым форматом изображения.
b
Тем временем в палитре каждый элемент палитры, составленный тремя значениями в вышеупомянутых примерах, в общем случае кодируется с использованием трех двоичных кодов. Длина двоичных кодов соответствует битовой глубине каждой цветовой компоненты. Элемент «Пред режим» кодируется с использованием одного бита. Элемент «Уровень» кодируется с использованием двоичного кода с длиной двоичного кода, равной b, где 2 самое малое целое число, равное или большее размера палитры.
На Фигуре 9 показан процесс восстановления для построения блока уровней 91. Входные данные данного процесса являются таблицами, полученным с использованием процесса с Фигуры 8 выше и содержащими список «Пред режим», «Уровень» и «Пробег».
Дополнительный объект входных данных для элементов «Пред режим», «Уровень» и «Пробег» является размером кодируемого единичного участка 801 (который является точно таким же, что и размер блока уровней 602/71), известным из дерева квадрантов (Фигура 4), сигнализируемым в битовом потоке.
На первом этапе 901 переменная величина i, представляющая собой счетчик пикселей, устанавливается равной 0, а переменная величина j, для последовательного учета каждого набора синтаксических элементов, также устанавливается равной 0. На этапе 904, элемент Pred_mode[j] (Пред_режим[j]), извлеченный из таблицы «Пред режим» по указателю j, проверяется относительно 0.
При равенстве 0 для текущего пикселя i кодируется новый уровень. Как следствие, значение пикселя в положении i устанавливается равным уровню по указателю j из таблицы уровней; Блок[i]=Уровень[j]. Это осуществляется на этапе 905. Переменная величина i приращается на единицу на этапе 906 для рассмотрения следующего пикселя, и переменная k, выделенная для подсчета пикселей, уже обработанных в текущем Пробеге, устанавливается равной 0 на этапе 907.
Проверка выполняется на этапе 908 для определения, равна ли k или нет элементу «Пробег» таблицы пробегов по указателю j: k=Пробег[j]?. При неравенстве уровень пикселя в положении i устанавливается равным значению уровня пикселя в положении i-1: Блок[i]=Блок[i-1]. Это осуществляется на этапе 909. Переменная величина i и переменная величина k затем приращается на единицу соответственно этапах 910 и 911. Если k=Пробег[j] на этапе 908, то распространение левого значения уровня заканчивается, и выполняется этап 920 (описанный ниже).
Если Pred_mode[j] отличается от 0 на этапе 904, то режим «копирования» начинается с переменной величины k, установленной равной 0 на этапе 912. Затем, на этапе 913 осуществляется проверка, равно ли или нет (k-1) элементу «Пробег» таблицы пробегов по указателю j: k=Пробег[j]+1? Если не равно, то значение уровня пикселя в положении i устанавливается равным значению уровня пикселя в положении i из вышеупомянутой линии: Блок[i]=Блок[i-ширина], где «ширина» является шириной блока уровней (точно так же, как и кодируемый единичный участок), как выведено из входного размера кодируемого единичного участка. Это осуществляется на этапе 914. Затем, переменная величина i и переменная величина k приращаются на единицу соответственно на этапах 915 и 916. Если k=Пробег[j]+1 на этапе 913, то режим предсказания «копирование» завершается, и процесс переходит на этап 920.
На этапе 920 выполняется проверка для определения, равна ли или нет переменная величина i количеству пикселей в блоке 71/CU 601. Если не равна, то переменная величина j приращается на единицу на этапе 921 для рассмотрения следующего набора синтаксических элементов и циклов процесса обратно на этап 904, описанный выше.
Если все пиксели обработаны на этапе 920, то окончательный блок 71 уровней получается на этапе 922: он соответствует Блоку[] таблицы.
Затем, окончательный этап 923 заключается в преобразовании каждого уровня в цветовых значениях с использованием декодированной палитры 603 с использованием процесса с Фигуры 8 и использования блока 604 деквантованных значений пикселей для пикселей с кодировкой выбросов. Данный окончательный этап влияет на значения пикселей (Y, U, V) или (R, G, B) в положении каждого блока согласно уровню данного положения в блоке и либо соответствующей записи в палитре 603, если таковая вообще имеется, либо соответствующему деквантованному значению пикселя в блоке 604.
Как описано выше, режим кодировки посредством Палитры, в настоящее время разрабатываемый в SCC HEVC, требует, чтобы палитра была передана для каждого кодируемого единичного участка. Это представляет собой большой объем данных в битовом потоке и таким образом издержки кодировки. Для уменьшения этой издержки некоторые предложенные механизмы предоставляют текущую палитру для текущего подлежащего предсказанию кодируемого единичного участка с использованием предсказателя палитры.
Как предложено во вкладе Заявителя JCTVC-Q0063, опорный предсказатель палитры может быть передан в битовом потоке, который подлежит использованию каждым кодируемым единичным участком слоя, например; либо предсказатель палитры может быть построен с использованием пикселей по соседству с обрабатываемым кодируемым единичным участком; либо предсказатель может быть построен из двух или более уже существующих палитр.
Процесс предсказания таким образом видоизменяет этап 806 формирования палитры из битового потока.
На Фигуре 10 показана схема предсказания, включающая в себя примерное итеративное построение предсказателя палитры. На данной схеме строящийся предсказатель палитры включает в себя записи из первой палитры, которая была предсказана на основе второй палитры (используемой в качестве предсказателя) с использованием битовой карты флагов, причем каждый флаг которой задает то, выбрана ли или нет соответствующая запись во второй палитре в качестве записи для предсказания записи в первой палитре. Битовая карта флагов может быть передана в битовом потоке.
Частным случаем к данному варианту осуществления является то, что предсказатель палитры строится, также посредством включения в себя записи второй палитры, соответствующей флагу битовой карты, который задает отсутствие выбора записи для предсказания первой палитры.
На Фигуре 10 показано, что три Кодируемых Единичных Участка, с CU1 по CU3, могут быть последовательными кодируемыми единичными участками, обрабатываемыми в текущем изображении.
Ссылочная позиция 1000 представляет палитру, используемую для обработки (кодирования или декодирования) CU1. Данная палитра может быть закодирована в битовом потоке (и таким образом извлечена декодером) или предсказана с использованием любого механизма, описанного в настоящей заявке.
Палитра 1000 используется в качестве предсказателя палитры для построения палитры 1001 для обработки CU2. Предсказание палитры 1001 основано на битовой карте 1006 флагов. Необходимо напомнить, что флаги принимают значение 1 или 0 в зависимости от использования или нет, соответственно, соответствующего элемента для предсказания палитры следующего CU. В одном варианте реализации флаг=1 может означать не выбор соответствующего элемента, в то время как флаг=0 может означать выбор элемента для предсказания палитры следующего CU.
В результате в настоящем примере первый, третий, четвертый и пятый элементы предсказателя 1000 палитры копируются в палитру 1001, как это задано в битовой карте 1006. Второй элемент 1002 повторно не используется (флаг=0 в битовой карте 1006). Следует заметить, что дополнительный элемент палитры 1003 мог быть добавлен в конец строящейся палитры 1001 на основе механизмов, описанных выше (например, явно переданным в битовом потоке).
Кроме этого, предсказатель 1005 палитры строится из палитр 1000 и 1001. Все элементы палитры 1001 копируются (этап 1004) в предсказатель 1005 палитры для CU3. В данном примере, записи предсказателя 1000 палитры в соответствии с флагом битовой карты, которая задает не выбор записи для предсказания палитры 1001 (то есть обычно при флаг=0, например, элемент 1002), добавляются (этап 1008) в предсказатель 1005 палитры. Это происходит потому, что другие записи предсказателя 1000 палитры уже находятся в предсказателе 1005 палитры благодаря этапу 1004 копирования. Данный выбор элемента 1002 может быть выполнен очень быстро благодаря флагам в битовой карте 1006.
Данный подход делает так, что следующий предсказатель палитры для следующего блока пикселей строится только из текущей палитры, используемой для кодирования текущего блока пикселей, и текущего предсказателя палитры, используемого для предсказания текущей палитры.
Битовая карта может быть предоставлена для предсказания, на основе предсказателя 1005 палитры, палитры для обработки CU3.
Конечно, предсказатель 1005 палитры может также быть непосредственно палитрой для обработки CU3. Однако предсказатель 1005 палитры постоянно растет, так как он включает в себя все элементы, заданные в предыдущих палитрах, до предела, задающего максимальный размер палитр.
Добавление элемента 1002 предпочтительно выполняется в конце предсказателя 1005 палитры. Можно непосредственно заметить, что результирующий предсказатель палитры обогащен по сравнению с ситуациями, описанными выше.
Одно частное преимущество добавления неиспользованных элементов в конце предсказателя палитры состоит в том, что эти элементы приблизительно упорядочены по их возрасту и их уровню использования. Это в результате приводит к наличию последних элементов в предсказателе палитры, которые являются наименее полезными и наиболее вероятными на удаление. Таким образом, может быть принято решение удалить некоторые элементы из строящегося предсказателя палитры, например, на основе количества использований данного элемента при обработке последних M (целое число M, подлежащее заданию) блоков пикселей с использованием соответственных палитр, которые включают в себя данный элемент.
Конечно, данный процесс может быть адаптирован так, чтобы помещать неиспользованные элементы сначала в предсказатель палитры, или даже с чередованием с некоторыми из элементов из палитры 1001.
Следует заметить, что выбор неиспользованных элементов из предыдущей палитры гарантирует то, что элементы уникальны, и поэтому флаги в битовой карте не избыточны. Таким образом, максимизируется эффективность предсказателя палитры.
Однако, существуют ситуации, которые в настоящее время нарушают текущую схему предсказания палитры.
Некоторые из этих ситуаций относятся к использованию инструментов/структур кодировки HEVC, нацеленных на устойчивую к ошибкам и/или параллельную обработку. Эти инструменты/структуры обычно не допускают какой-либо зависимости между кодируемыми структурами в изображении.
Здесь следует напомнить, что изображение обычно рекурсивно разделяется на иерархические кодируемые структуры, например, плитки, составленные из слоев, причем слои составлены из блоков CTB, каждый из которых разделен на CU, как показано на Фигуре 4. Параметры, задающие иерархические кодируемые структуры в общем случае содержатся в Наборе Параметров Последовательности (то есть актуальны для последовательности) и/или Наборе Параметров Снимка (то есть они могут быть обновлены). Таким образом, кодируемые структуры должны ссылаться на информацию, хранящуюся в их SPS и PPS посредством указания ID упомянутого SPS/PPS, который является целым числом, закодированным с использованием схемы переменной длины.
Отсутствие зависимости между некоторыми кодируемыми структурами означает, например, что никакое ВНУТРЕННЕЕ предсказание не может быть выполнено в границах кодируемых структур, и никакое состояние энтропийной кодировки, предсказатель палитры или область для предсказания IBC не могут быть совместно использованы между кодируемыми структурами.
Как вкратце упомянуто выше, одна из таких кодируемых структур является плиточной структурой, которая разделяет изображение на различные прямоугольники, содержащие полные CTB. То, использует ли последовательность плитки, и форма плиток, обычно содержится в SPS.
Строки или колонки плитки не могут быть однородно распределены. Это случай изображения 1100 на Фигуре 11, которое разделено на четыре плитки 1102, 1103, 1104 и 1105.
Другая уже упомянутая кодируемая структура является слоистой структурой. Слой является основной кодируемой структурой над CTB, означая, что слой состоит из одного или более CTB, а плитка состоит из одного или более слоев, и изображение может состоять из одной или более плиток (и таким образом слоев).
В качестве примера, изображение 1110 на Фигуре 11 содержит слои 1111, 1113, 1114 и т.д. В частности, как можно видеть слой 1114 содержит только один CTB.
Каждый слой включает в себя заголовок слоя, который содержит (без конкретного порядка): порцию информации относительно начального адреса CTB (при растровом сканировании), который зависит от размера CTB и конфигурации плитки, идентификаторов (ID) SPS и PPS, от которых зависит слой.
HEVC обеспечивает то, что плитки и слои являются «самостоятельными», то есть каждый из них кодируется/декодируется независимо от других плиток и слоев, соответственно. Настоящее изобретение сосредоточено на таких самостоятельных кодируемых структурах.
Следует заметить, что некоторые особые случаи обеспечивают то, что группа слоев может быть отмечена в качестве фактически полностью зависимой, означая, что некоторая кодируемая информация наследуется от одного слоя к следующему слою. В этих случаях настоящее изобретение сосредоточено только на первом слое набора зависимых слоев.
Для дополнительного изображения «самостоятельного» свойства слоистой структуры, можно обратиться к изображению 1120, которое содержит четыре однородные плитки (разграниченные жирными линиями), при этом каждая плитка содержит слои (имеющие различные шаблоны заполнения) с переменным количеством CTB.
Поскольку независимый текущий слой или плитка не могут ссылаться (обращаться) к другому слою или плитке соответственно, ошибки в других слоях или плитках не влияют на декодирование текущего слоя или плитки. Кроме этого, результаты кодировки для текущего слоя или плитки не зависят от этих других слоев или плиток. Поэтому, они могут быть кодированы или декодированы параллельно.
Один недостаток «самостоятельного» свойства состоит в том, что данные, полезные для предсказания, отныне недоступны при переключении на новый слой или плитку, что приводит к уменьшению эффективности кодировки. Это еще более характерно для SCC, в котором присутствует высокий уровень информационной избыточности внутри одиночного изображения. Поэтому в таких случаях желательно смягчить некоторые из таких потерь эффективности кодировки.
В данном контексте настоящее изобретение предоставляет следующие этапы:
получение, из битового потока, инициализатора предсказателя палитры, связанного с кодируемой структурой, иерархически выше двух самостоятельных кодируемых структур, подлежащих декодированию; и
инициализация предсказателя палитры для каждой из двух упомянутых самостоятельных кодируемых структур с использованием одного и того же полученного инициализатора предсказателя палитры.
Симметрично на стороне кодера, настоящее изобретение предоставляет следующие этапы:
определение одиночного инициализатора предсказателя палитры для инициализации предсказателя палитры для двух самостоятельных кодируемых структур; и
в битовом потоке, предоставление закодированных данных, включающих в себя информацию предсказания для предсказания палитры, связанной с каждым обрабатываемым блоком пикселей из предсказателя палитры, и предоставление инициализатора предсказателя палитры, причем инициализатор предсказателя палитры связан с кодируемой структурой, иерархически выше двух самостоятельных кодируемых структур, в битовом потоке.
Как предложено в настоящем изобретении, инициализатор предсказателя палитры используется для простой инициализации предсказателя палитры, который вполне обеспечивает хорошие результаты как с точки зрения эффективности кодировки, так и с точки зрения сложности. Можно заметить, что инициализатор предсказателя палитры никогда не используется в качестве палитры непосредственно для выполнения режима кодировки посредством Палитры.
Кроме этого, настоящее изобретение предоставляет то, что инициализатор предсказателя палитры является «глобальным», означая, что он сигнализируется один раз в битовом потоке, в то время как он используется несколькими независимыми кодируемыми структурами, плитками или слоями. Это достигается посредством сигнализации его совместно с кодируемой структурой, иерархически выше кодируемых структур, требующих инициализации своего предсказателя палитры вследствие «самостоятельного» свойства.
Хранение его на уровне слоя, то есть на одном и том же уровне в качестве кодируемых структур (слоев), требующих этого, показалось неэффективным авторам настоящего изобретения. Это происходит потому, что разделение изображения на слои является непосредственной причиной потерь эффективности кодировки.
Описание ниже стремится предложить эффективный механизм хранения и передачи упомянутого инициализатора.
В одном варианте осуществления инициализатор предсказателя палитры задан (и таким образом передается в соответствующей части битового потока) на уровне изображения в Наборе Параметров Снимка (Picture Parameter Set, PPS), в случае которого две самостоятельные кодируемые структуры ссылаются на Набор Параметров Снимка. Например, два самостоятельных слоя включают в себя ID PPS внутри своих соответственных заголовков.
В одном варианте реализации инициализатор предсказателя палитры задан на уровне последовательности в Наборе Параметров Последовательности (Sequence Parameter Set, SPS), в случае которого две самостоятельные кодируемые структуры ссылаются на Набор Параметров Последовательности.
Предпочтение отдается заданию его в PPS. Это происходит потому, что хранение его на уровне SPS не допускает некоторых оптимизаций кодера, таких как обновление инициализатора после некоторого количества кадров или времени и/или использование инициализатора на область изображения (например, плитку или произвольную область).
Однако, как упомянуто выше, слой ссылается на PPS через его ID PPS. Чем больше PPS отправлено, тем большее становится ID, и таким образом больше битов требуется для их кодирования. Это не запрещено, но строго предлагается организациями по стандартизации, не иметь несколько PPS, совместно использующих один и тот же ID: действительно, это может привести к декодированию их в неправильном порядке и связыванию неправильной информации со слоями. Возможное решение данной проблемы является механизмом циклического возврата: при достижении МАКСИМАЛЬНОГО значения, ID PPS сбрасывается в 0. В то время как это не полностью предотвращает неправильное декодирование, оно значительно уменьшает риски, поскольку PPS с одним и тем же ID могут теперь быть разнесены на произвольную продолжительность.
Теперь будут рассмотрены Фигуры 12-14, на которых изображены варианты осуществления настоящего изобретения.
Фигура 12 изображает примерную обработку на стороне декодера и включает в себя Фигуру 12a, изображающую извлечение инициализатора предсказателя палитры из битового потока 1200 последовательности.
Синтаксическая структура, связанная с кодируемой структурой более высокого иерархического уровня, извлекается и декодируется из битового потока на этапе 1201. Данной синтаксической структурой может быть SPS, связанный с последовательностью, или PPS, связанный с изображением.
Затем, ID для этой синтаксической структуры выводится на этапе 1202: она является ID PPS для PPS и ID SPS для SPS.
Затем количество записей в инициализаторе предсказателя палитры считываются из извлеченной синтаксической структуры на этапе 1203. Следует заметить, что максимальный размер предсказателя палитры, подлежащий использованию в режиме кодировки посредством Палитры, определяется в SPS, и таким образом размер, указанный извлеченной синтаксической структурой, подчинен этому пределу, означая, что он меньше или равен данному максимальному размеру.
В случае, при котором извлеченная синтаксическая структура является SPS, инициализатор предсказателя палитры предпочтительно располагается после информации, задающей то, задействован ли или нет режим кодировки посредством Палитры для последовательности, а также после максимального размера предсказателя палитры. Данное частное местоположение позволяет избежать синтаксического анализа и считывания данных инициализатора предсказателя палитры (количества записей инициализатора), если режим палитры не задействован (например, если извлеченная синтаксическая структура конкретизирована для кодировки естественного содержимого, а не для содержимого экрана).
На этапе 1204, процесс определяет, на основе количества записей, считанных на этапе 1203, имеет ли записи или нет инициализатор предсказателя палитры.
Если он содержит по меньшей мере одну запись, то запись или записи получаются из битового потока на этапе 1205. Механизм для считывания инициализатора предсказателя палитры из битового потока (извлеченной синтаксической структуры) может быть подобным тому, который задан в SCC HEVC, для считывания любой палитры, переданной в битовом потоке.
Как только инициализатор предсказателя палитры был полностью определен, он сохраняется в запоминающем устройстве и связывается с ID извлеченной синтаксической структуры (то есть ID, полученным на этапе 1202) на этапе 1206. Данное хранение предоставляет возможность легкого извлечения инициализатора предсказателя палитры, когда ID используется еще раз впоследствии.
На Фигуре 12b показан тот же самый процесс декодирования, что и на Фигуре 5 более упрощенным образом, но приспособленный под настоящее изобретение.
Этапы 1211-1217 подобны традиционным этапам декодера. Этапы 1220 и 1221 являются характерными для вариантов осуществления настоящего изобретения.
В данном процессе декодирования битовый поток 1200 синтаксически анализируется на этапе 1211 для получения информации о текущей кодируемой структуре. Данная информация может, например, задавать характер текущей кодируемой структуры, например, является ли она кадром, слоем, плиткой и т.д.; и информация может также задавать то, какой блок пикселей (CU или CTB) является первым блоком текущей кодируемой структуры. Это происходит потому, что настоящее изобретение специализируется на инициализации, то есть на процессе, который обычно выполняется для самой первой части рассматриваемой кодируемой структуры.
В относящемся к HEVC варианте осуществления рассматриваемый блок пикселей является CTB. Это делает возможной инициализацию цикла декодирования для текущей кодируемой структуры посредством выбора первого CU на этапе 1212. Затем, текущий CU декодируется на этапе 1213 возможно с использованием предсказателя 1215 палитры (для получения текущей палитры), если CU закодирован с использованием режима кодировки посредством Палитры.
В частном варианте осуществления при взятии за основу совместное использование палитры (то есть использование последней использованной палитры в качестве палитры, которая будет использоваться для следующего закодированного посредством палитры блока пикселей), последняя использованная палитра оказывается скопированной в начальную часть предсказателя палитры для следующего блока пикселей (предсказатель палитры которого может также принял другие записи). Для сигнализации количества первых записей (то есть которые прибывают из последней использованной палитры) предсказателя палитры для копирования, чтобы сформировать следующую палитру и таким образом содействовать их извлечению из предсказателя, предсказатель 1215 палитры также содержит информацию последнего используемого размера палитры, обозначенного N. Действительно, посредством простого копирования N первых записей предсказателя палитры в следующую палитру следующая палитра полностью строится в режиме совместного использования палитры.
На этапе 1214 предсказатель палитры обновляется при необходимости, например, как объяснено выше со ссылкой на Фигуру 10 или посредством копирования каждой записи текущей палитры в случае совместного использования палитры. Цикл декодирования над всеми CU формируется через этапы 1216 и 1217.
Согласно настоящему изобретению предсказатель 1215 палитры инициализируется с использованием инициализатора предсказателя палитры при начале кодирования или декодирования новой самостоятельной кодируемой структуры. Чтобы достигнуть этого, при синтаксическом анализе (или записи при кодировании) битового потока 1200, идентификатор ID синтаксической структуры, связанной с кодируемой структурой высокого иерархического уровня, получается на этапе 1220. Это может произойти посредством извлечения информации из битового потока 1220 до или после синтаксического анализа информации 1211, но перед декодированием первого CU 1212.
Данный идентификатор ID делает возможным извлечение инициализатора предсказателя палитры на этапе 1221, который был предварительно сохранен с использованием идентификатора на этапе 1206 Фигуры 12a. Этот идентификатор может быть новым синтаксическим элементом. В одном варианте осуществления, в котором синтаксически проанализированная кодируемая структура является слоем и инициализатор предсказателя палитры хранится в PPS, то уже существующий синтаксический элемент, идентифицирующий PPS для упомянутого слоя, играет данную роль.
В другом варианте осуществления, в котором этап 1221 происходит в начале каждого слоя и инициализатор предсказателя палитр, связан с плитками (то есть задан на уровне плитки), каждый слой может идентифицировать (с использованием ID) плитку, к которой он принадлежит. В данном варианте осуществления этап 1220 таким образом идентифицирует то, к какой плитке принадлежит текущий слой, и затем извлекает инициализатора предсказателя палитры для ID связанной плитки.
В конце этапа 1221 был извлечен инициализатор предсказателя палитры. Он может использоваться однажды для инициализации предсказателя 1215 палитры непосредственно перед тем, как первый CU текущей кодируемой структуры (например, слоя) декодирован. Это может быть выполнено посредством установки количества записей в предсказателе из количества записей инициализатора. Эти два размера могут не быть равными, поскольку максимальный размер может быть вмененным (либо из максимального размера предсказателя SPS, либо произвольно). Затем, записи копируются из инициализатора предсказателя палитры в предсказатель палитры согласно количеству записей в предсказателе, который только что был установлен.
В дополнительном варианте осуществления размер предыдущей палитры равен 0, поскольку никакой CU не был декодирован. Однако с предоставлением палитры инициализатором предсказателя палитры, упомянутый размер предыдущей палитры может быть выведен из размера инициализатора предсказателя палитры, например, минимальное значение между максимальным размером палитры (ср. palette_max_size (максимальный_размер_палитры) на Фигуре 14a) и размером инициализатора палитры. Данный дополнительный вариант осуществления действует, когда, например, реализуется совместное использование палитры, то есть когда посредством обработки кодируемой структуры следующая палитра, используемая для кодирования следующего блока пикселей или CU, повторно использует все записи последней палитры, используемой для последнего закодированного посредством палитры блока пикселей или CU.
Вышеупомянутое пояснение демонстрирует, что инициализатор предсказателя палитры задан на уровне кодируемой структуры, которая имеет иерархический уровень строго выше в отличие от одного из слоев (например, SPS, PPS, плитки и т.д.), и он затем связывается на уровне слоя.
Теперь описание будет обращено к алгоритмам на стороне кодера для определения такого инициализатора предсказателя палитры. На Фигуре 13 показан примерный алгоритм для определения инициализатора, алгоритм которого обладает преимуществами эффективности кодировки, управления нагрузкой вычислений и свойствами низкой задержки (то есть результаты получаются для текущего кадра без слишком сильного влияния на задержку в кодере при выводе данных).
Данный алгоритм функционирует посредством выполнения более или менее быстрого кодирования поднабора блоков CTB, предпочтительно распределенных по области изображения, соответствующей рассматриваемой самостоятельной кодируемой структуре (например, слою). Для достижения этого быстрого кодирования различные сокращения могут быть задейтсвованы, например, раннее окончание (например, при ВЗАИМНОМ кодировании или когда присутствует слишком много пикселей с кодировкой выбросов при проверке режима Палитры), или изменение пороговых величин, предписывающих дополнительный анализ (например, для исследования дополнительного разделения для IBC). Один из предсказателей палитры, полученных в конце быстрого кодирования над поднабором блоков CTB, может использоваться в качестве инициализатора предсказателя палитры, который передается в битовом потоке.
На Фигуре 13a показаны примеры таких поднаборов блоков пикселей для определения инициализатора.
Идеально, CTB равномерно разнесены так, чтобы представлять собой область (например, слой) в максимально возможной степени. Предпочтительно CTB, рассматриваемые для поднабора, не находятся на границе (слева/сверху/снизу/справа) области или изображения, поскольку их содержимое может быть более легко закодировано с использованием других режимов кодировки в отличие от режима кодировки посредством палитры (например, резкие границы пользовательских интерфейсов лучше кодируются с ВНУТРЕННИМ угловым предсказанием).
Кроме этого, CTB, рассматриваемые для поднабора, предпочтительно горизонтально или вертикально не выровнены. Иначе, они могут принадлежать одной и тот же структуре всего кадра.
В первом варианте осуществления 1301, изображенном в левой части Фигуры, блоки пикселей поднабора распределены вдоль наклона или диагонали области. В данном примере поднабор составлен из темных CTB. Данный пример следует всем упомянутым выше свойствам.
Считается, что данный первый примерный поднабор 1301 хорошо подходит для областей, в которых только один инициализатор предсказателя палитры должен быть определен для более одного слоя.
В первом варианте осуществления 1302, изображенном в правой части Фигуры, блоки пикселей поднабора горизонтально выровнены в верхней части области изображения, предпочтительно в верхней части изображения. Данный вариант осуществления лучше специализирован для случаев, при которых структура более высокого уровня (изображение или плитка) содержит одиночную самостоятельную кодируемую структуру, например, одиночный слой, и инициализатор предсказателя палитры, полученный таким образом, лучше подходит для кодирования начала упомянутой структуры более высокого уровня.
В частности, специализация его для другой части изображения будет указывать возможность принудительного сброса предсказателя палитры в течение кодирования слоя. Преимущества инициализатора предсказателя палитры поэтому происходят из того факта, что он будет использоваться для нескольких кадров (и таким образом нескольких слоев).
Поэтому, CTB, образующие поднабор 1302, скорее сконцентрированы в начале изображения, где предсказатель палитры обычно пуст.
В этом случае, анализ CTB, которые далеки от начала изображения, может в результате привести к элементам предсказателя палитры, которые будут очищены механизмом 1214 обновления с Фигуры 12b.
Кроме этого, выбор CTB, слишком близких друг к другу, может вызвать захватывание только немного отличающихся и редко возникающих цветов. Предпочтение таким образом отдается выбору блоков пикселей, которые не являются смежными, например, посредством задания некоторого шага между рассматриваемыми CTB, который равен или больше 1, как показано на 1302.
На основе поднабора блоков CTB, на Фигуре 13b показаны, в блок-схеме последовательности операций, общие этапы для определения инициализатора предсказателя палитры на стороне кодера.
Процесс начинается на этапе 1311 посредством определения поднабора блоков с учетом использования плиток, слоев и области, в которых он применяется, и так далее.
В частности, как описано со ссылкой на Фигуру 11, изображение может быть искусственно разделено на области или разделено на традиционные плитки или слои. В этом случае, алгоритм может быть применен к каждой области, и затем, при кодировании кодируемых структур, например, слоев, осуществляется определение, к какой области более высокого уровня принадлежит кодируемая структура (она может не полностью принадлежать к упомянутой области).
Данный подход позволяет получить начальную и конечную точки области на основе того, какие блоки поднабора, такого как примеры 1301 и 1302, заданы.
Другой параметр, который может быть учтен при определении поднабора, является допустимым количеством блоков или блоков CTB. Например, количество блоков в поднаборе может быть не более предварительно определенного количества (например, 10) или части рассматриваемой области (например, 10%).
Вслед за этапом 1311 этап 1312 предоставляет то, что параметры кодера инициализируются. Это может вовлечь все классические определения (матрицы квантования, шаги квантователя, допустимые режимы кодировки и т.д.). В частности, это также может вовлекать установку параметров быстрого анализа, например, уменьшенный поиск Внутренней Копии Блока, удаление или ускорение некоторых режимов кодировки (включающих в себя режим кодировки посредством Палитры) и т.д.
Затем, на этапе 1313 выбирается первый блок из поднабора.
На этапе 1314 кодируется текущий блок. Как упомянуто ранее, процесс кодирования может быть немного изменен посредством этапа 1312 для предложения уменьшенной рабочей нагрузки. Это может также вовлекать установку особых параметров кодирования для данного блока: например, на границах блока отсутствуют какие-либо закодированные пиксели, и способы внутреннего предсказания не могут функционировать для таких граничных пикселей, и таким образом не задействуются в течение анализа этих пикселей.
Кроме этого, использование поднабора блоков CTB может вызывать проблемы в анализе Внутренней Копии Блока. Решение всего этого может быть предпринято в течение этапа 1314.
На этапе 1315 предсказатель палитры, созданный для текущего блока, извлекается и сохраняется для более позднего к нему обращения.
Затем, на этапе 1316 выполняется тест для определения того, завершен ли анализ.
Данное определение может быть основано на запасе времени. Если запас времени полностью использован, то анализ останавливается.
Кроме этого, при возможной очистке элементов из предсказателя палитры на этапе 1214 Фигуры 12b, может быть интересным обнаружение такой очистки в течение анализа для принятия решения о том, когда остановить анализ.
Например, при рассмотрении примерного поднабора 1302 очень интересно остановить анализ достаточно быстро, поскольку новые записи фактически могут использоваться редко. Например, упомянутый анализ может быть сразу остановлен при обнаружении очистки, либо счетчик очистки может быть декрементирован при каждой новой очистке элемента, пока счетчик не достигает 0 и не укажет конец анализа.
В случае примерного поднабора 1301 данный подход менее интересен, потому что цвета в инициализаторе предсказателя палитры должны быть заданы для максимально возможного количества блоков CTB. Поэтому интересно хранить наиболее часто используемые (потому что считается, что они будут полезны для нескольких слоев).
В любом случае, если на этапе 1316 определено, что анализ должен быть остановлен, алгоритм заканчивается на этапе 1319, что будет описано позже. Иначе, на этапе 1317 проверяется, был ли или нет обработан последний блок поднабора. Если был, на этапе 1319 алгоритм заканчивается. Иначе, следующий блок в поднаборе выбирается на этапе 1318, и циклы процесса анализа возвращаются на этап 1314.
В частном варианте осуществления данное кодирование поднабора может быть повторено несколько раз для получения каждый раз лучших предсказателей палитры для блоков и таким образом использования режима кодировки посредством Палитры чаще: данное повторение содержит рекурсивное кодирование одного и того же поднабора блока пикселей, в котором первый предсказатель палитры, используемый для следующего цикла рекурсивного кодирования, является предсказателем палитры, полученным в конце предыдущего цикла рекурсивного кодирования.
В конце 1319 анализа выполняется несколько действий.
Главное действие заключается в установке инициализатора предсказателя палитры, кодировании его и передаче его в битовом потоке.
Это требует выбора одного из предсказателей палитры для использования в качестве инициализатора предсказателя палитры. Например, это может быть последний предсказатель палитры анализа.
Затем, может быть осуществлено управления выбранным инициализатором предсказателя палитры для определения того, является ли он или нет фактически хорошим для кодирования.
Например, если в нем присутствует две некоторые записи (например, менее четырех), то это может указывать, что в анализируемой области присутствует главным образом естественное содержимое, в случае чего не стоит использовать режим кодировки посредством Палитры. Данная информация может таким образом служить прекращению действия режима кодировки посредством Палитры в обычном кодировании, пока другой анализ не получит лучший результат.
Другой случай - это, когда выбранный предсказатель палитры не достаточно отличается (например, содержится) от инициализатора предсказателя палитры, который используется в настоящее время для области, в случае которой используемый в настоящее время инициализатор предсказателя палитры сохраняется вместо только что определенного.
Другое действие заключается в отфильтровывании записей выбранного предсказателя палитры в случае, если они бесполезны, например, на основе критерия частоты (например, некоторые цвета, которые возникали для только одного блока) или критерия подобия (цвет очень подобен другому в инициализаторе предсказателя палитры).
Другой вариант осуществления состоит в извлечении записей выбранного предсказателя палитры еще раз, чтобы в максимально возможной степени представлять собой проанализированные CTB. Например, более классический алгоритм классификации может воспользоваться записями палитры, найденными в качестве начальной точки, и определить фактическую центроиду для каждого из классов, связанных с упомянутыми записями с использованием, например, алгоритма K-средних.
На Фигуре 14 показаны два варианта осуществления для объявления или определения инициализатора предсказателя палитры, в частности, внутри SPS на Фигуре 14a и внутри PPS на Фигуре 14b. Эти два варианта осуществления довольно подобны; поэтому ниже приведено одно объединенное описание.
Оба варианта осуществления полагаются на существующий расширенный раздел синтаксических структур PPS и SPS в стандарте HEVC и его Расширении SCC (см. документ JCTVC-S1005). Наличие соответствующих расширенных разделов (а именно, «sps_scc_extensions» («расширения_scc_sps») и «pps_scc_extensions» («расширения_scc_pps»)) указаны в SPS и PPS флагами sps_scc_extensions_flag (флаг_расширения_scc_sps) и pps_scc_extensions_flag (флаг_расширения_scc_pps) соответственно.
В упомянутых двух вариантах осуществления относящаяся к инициализатору предсказателя палитры информация добавляется соответственно в расширение SCC SPS и расширение SCC PPS.
Синтаксические элементы, добавленные к существующим расширенным разделам, изображены жирным шрифтом на Фигурах 14a и 14b. Название, местоположение или тип информации этих дополнительных синтаксических элементов предназначен для иллюстративных целей. Конечно, могут использоваться и другие названия.
Как упомянуто выше со ссылкой на этап 1204, действие режима кодировки посредством Палитры может быть прекращено. Как следствие, согласно настоящему изобретению осуществляется синтаксический анализ информации, относящейся к режиму палитры, только если palette_mode_enabled_flag (флаг_задействование_режима_палитры) является правильным, или если эквивалентная информация в SPS или уровне PPS указывает, что режим кодировки посредством Палитры задействован.
На основе примера этих Фигур, может использоваться первый флаг palette_predictor_initializer_present_flag (флаг_присутствие_инициализатора_предсказателя_палитры). Он указывает, присутствует ли инициализатор предсказателя палитры (то есть фактически задан в расширении SCC SPS или PPS).
Если он присутствует, то его размер известен и является по меньшей мере 1. Его максимальный размер является переменным, но может быть ограничен, чтобы быть ниже максимального размера, указанного в расширениях SCC SPS или PPS (см. palette_max_predictor_size (максимальный_размер_предсказателя_палитры)).
Размер VLC минус 1 (VLC означает кодировка переменной длины (variable length coding), например, с использованием стандартно определенных Экспоненциальных кодов Голомба) указана с использованием соответствующего поля: size_palette_predictor_initializer_minus1 (размер_инициализатора_предсказателя_палитры_минус1). Это является размером инициализатора предсказателя палитры.
Затем, задаются значения записей инициализатора предсказателя палитры. Несмотря на то, что не изображены в данном документе, предпочтение отдается использованию выровненной по байтам кодировке для кодирования этих значений: это предоставляет возможность более легкого осуществление синтаксического анализа расширения SCC. В одном варианте осуществления, они кодируются в качестве элементов фиксированной длины, с N[comp] (см. ниже) для компоненты comp каждой записи.
Следует заметить, что количество компонент num_comp записей известны: информация, такая как chroma_format_idc (idc_формата_цветности) или separate_colour_plane_flag (флаг_отдельной_цветовой_плоскости), включенный в SPS, делает возможным определение количества компонент. Кроме этого, количество битов N[comp] для каждой компоненты также известно, поскольку они могут быть извлечены из синтаксических элементов bit_depth_luma_minus8 (битовая_глубина_яркости_минус8) и bit_depth_chroma_minus8 (битовая_глубина_цыетности_минус8), включенные в SPS.
Наконец, на Фигуре 14c показан вариант предоставления списка инициализаторов предсказателя палитры для использования тогда, когда компоненты закодированы по отдельности, или когда используются плитки. Случай, при котором компоненты не кодируются совместно, состоит в цветовом формате 4:2:0, в котором одна палитра может быть задана для яркости (одна одиночная компонента) и другая для цветности (две компоненты).
Другой случай, при котором такой список необходим, наступает тогда, когда присутствует количество N плиток, и связь 1221 между слоем и инициализатором предсказания палитры осуществлена через плитку, к которой принадлежит слой.
В каждом случае список может быть определен посредством информации, принадлежащей либо к SPS, либо к PPS. Таким образом синтаксическая структура циклически проходит по каждому набору списка инициализаторов, размера num_sets. Для каждого набора, отправляется различная информация, уже представленная, такая как:
palette_predictor_initializer_present_flag[set] (флаг_присутствие_инициализатора_предсказателя_палитры[набор]), и
size_palette_predictor_initializer_minus1[set] (размер_инициализатора_предсказателя_палитры_минус1).
Затем, количество компонент num_comps[set] для упомянутого инициализатора и список comp_list[set] компонент делают возможным определение подлежащих использованию компонент и то как считывать значения инициализатора предсказателя палитры для каждого набора.
В случае плитки, список является всего лишь обычным списком компонент. В случае особого цветового формата, список делает возможным определение инициализатора предсказателя палитры на набор независимых компонент.
В другом варианте осуществления синтаксис, используемый в настоящем изобретении, преимущественно отделен от другой информации, поступающей, например, от SPS. Это делает возможным отдельную обработку декодером и более легкие схемы установки в передающем потоком видео сценарии, например. В таком случае может быть важно предоставить информацию, которая дублируется, например, если, как изображено, инициализатор предсказателя палитры передается в PPS, то данный PPS может дублировать информацию из SPS при необходимости в обладании упомянутой информацией одного и того же значения. Данный вариант осуществления показан на Фигуре 14d. Некоторые части Фигуры 14d являются общими для некоторых частей Фигуры 14c. Вспомогательная информация содержит первый флаг monochrome_entries_flag (флаг_монохромные_записи) или эквивалентный параметр, делая возможным вывод количества компонент. Другой вариант осуществления заключается в повторении chroma_format_idc (idc_формат_цветности) и/или separate_colour_plane_flag (флаг_отдельная_цветовая_плоскость), или производной информации от этого. Данная информация должна согласовываться с тем, что передается на любом другом уровне, в частности, SPS, так, чтобы количество компонент, которое выводится из данной информации, соответствовало количеству компонент изображения, которое ссылается на pps_scc_extensions (расширения_scc_pps) и его PPS. Можно дополнительно применить это требование к битовому потоку и его соответствию спецификациям стандарта с использованием одного варианта осуществления настоящего изобретения.
Y
Y
C
C
Когда количество компонент известно, то может быть получена дополнительная информация. В частности, могут быть переданы битовые глубины компонент. Обычно принято передавать по отдельности битовые глубины яркости и цветности, что реализуется с помощью luma_bit_depth_entries_minus8 (записи_битовой_глубины_яркости_минус8) и chroma_bit_depth_entries_minus8 (записи_битовой_глубины_цветоности_минус8). Действительно, сигнал имеет 8 или более битов глубины, таким образом обычно сигнализируется только передача количества дополнительных битов, свыше 8. Одно важное замечание состоит в том, что эти значения идеально согласуются с фактическими битовыми глубинами изображения, которое ссылается на PPS, например, BitDepth (БитоваяГлубина) и BitDepth (БитоваяГлубина), как это присутствует в спецификациях HEVC, и можно учитывать дополнительное требование по соответствию битового потока. Передача информации, делающей возможным уменьшение количества компонент, осуществление синтаксического анализа chroma_bit_depth_entries_minus8 (записи_битовой_глубины_цветоности_минус8)), может быть осуществлена по условию.
Когда вся информация, требуемая для считывания записей инициализатора предсказателя палитры, известна, то может быть осуществлено считывание записей, как уже объяснено на предыдущих Фигурах 14a-14c. Этот процесс обусловлен значением monochrome_entries_flag (флаг_монохромные_записи) или эквивалентной синтаксической информацией. В характерном варианте осуществления необходимо считывать либо одну, либо три компоненты на запись инициализатора предсказателя палитры, как изображено на Фигуре 14d.
Наоборот, извлеченный инициализатор предсказателя палитры на этапе 1221 также содержит количество компонент и необходимое хранение на запись, тем самым ясно определяя то, как копировать упомянутый инициализатор в предсказатель текущей палитры на этапе 1215.
Могут использоваться традиционные механизмы для извлечения записей инициализатора из расширений SCC SPS или PPS.
Было описано несколько вариантов инициализации предсказателя палитры (Фигура 12) на стороне декодера, а также то, как находить инициализатор предсказателя палитры на стороне кодера (Фигура 13) и как встраивать его в битовый поток (Фигура 14). В предпочтительном варианте осуществления инициализатор предсказателя палитры хранится в PPS, и блочная структура является слоем.
Первые экспериментальные использования изобретения авторами настоящего изобретения продемонстрировали повышение эффективности кодировки на 1,8%. Однако, считается, что лучшие результаты могут быть получены в зависимости от параметров кодирования и от подлежащего кодированию содержимого изображения.
На Фигуре 15 показан существующий процесс для объявления или определения инициализатора предсказателя палитры внутри стандартной спецификации, описанной в JCTVC-T1005. Данный вариант осуществления полагается на существующий расширенный раздел синтаксической структуры PPS в стандарте HEVC и его Расширении SCC (см. документ JCTVC-T1005). Наличие соответствующего расширенного раздела (а именно, «pps_scc_extensions» («расширения scc pps») указано в PPS посредством флага pps_scc_extensions_flag (флаг_расширения_scc_pps).
Сначала он содержит информацию, относящуюся к инструменту «остаточного адаптируемого цветового преобразования» (называемого «ACT» с этого момента), который применяет возвратимое предварительно определенное цветовое преобразование к декодируемому выходному блоку. Данный инструмент может быть отключен на уровне PPS посредством установки флага residual_adaptive_colour_transform_enabled_flag (флаг_задействование_остаточного_адаптивного_цветового_преобразования) в 0.
Если инструмент не отключен, то далее следует информация о добавлении. Флаг pps_slice_act_qp_offsets_present_flag (флаг_присутствие_смещений_qp_при_act_слоя_pps) указывает, присутствуют ли смещения шага квантователя (по сравнению с теми, что установлены для слоя, который использует текущий PPS), в случае чего эти смещения, pps_act_y_qp_offset_plus5 (смещение_qp_y_при_act_pps_плюс5), pps_act_cb_qp_offset_plus5 (смещение_qp_cb_при_act_pps_плюс5) и pps_act_cr_qp_offset_plus3 (смещение_qp_y_при_act_pps_плюс3) передаются в качестве элементов переменной длины.
Затем используется первый флаг, относящийся к режиму палитры palette_predictor_initializer_present_flag (флаг_присуствие_инициализатора_предсказателя_палитры). Он указывает, присутствует ли инициализатор предсказателя палитры (то есть фактически задан в расширении SCC PPS, как упомянуто выше).
Если он присутствует, то передается информация относительно записей данного инициализатора. Сначала, информация о формате цвета. Обычно это три компоненты или монохромный формат. Флаг monochrome_palette_flag (флаг_монохромная_палитра) указывает, содержит ли формат только одну цветовую компоненту при установке в предварительно определенное значение, например, 1. Если не установлен в данное значение, то формат не является монохромным.
Затем, битовая глубина первой (и возможно единственной) компоненты передается по переменному количеству битов посредством синтаксического элемента luma_bit_depth_entry_minus8 (запись_битовой_глубины_яркости). Поскольку битовая глубина любой компоненты не может быть ниже 8, то необходимо передать только разность упомянутой битовой глубины с 8 (тем самым сохраняя несколько битов). Затем, если записи не являются монохромным, то битовая глубина для цветности передается через синтаксический элемент chroma_bit_depth_entry_minus8 (запись_битовой_глубины_цветности_минус8).
Затем, как известно, передаются записи палитры, их количество известно, и является по меньшей мере 1. Его значение передается через синтаксический элемент переменной длины: num_palette_predictor_initializer_minus1 (количество_инициализаторов_предсказателя_палитры_минус1). Это является размером инициализатора предсказателя палитры.
Затем, задаются значения записей инициализатора предсказателя палитры. Следует заметить, что количество компонент numComps записей известно и составляет 1, когда monochrome_palette_flag (флаг_монохромная_палитра) равен 1, и 3 в других случаях. Кроме того, количество битов для каждой компоненты также известно, поскольку они могут быть извлечены из синтаксических элементов luma_bit_depth_entry_minus8 (запись_битовой_глубины_яркости_минус8) и chroma_bit_depth_entry_minus8 (запись_битовой_глубины_цветности_минус8), включенных в SPS.
Предложенный синтаксис избыточен и даже может быть источником искажений. Посредством авторизации противоречащих конфигураций текущий синтаксис не достаточно эффективен.
Как предложено ниже, информация в расширении PPS может быть улучшена касательно использования режима палитры. На Фигуре 16 показан пример такого улучшения.
Согласно одному варианту осуществления, такой параметр, как флаг, названный здесь «monochrome_flag» («флаг_монохромность»), отправляется либо перед тем, как будет передана либо палитра, либо информация об инструменте ACT. Другими словами, предложенный «monochrome_flag» задан на уровне PPS. В качестве одного варианта реализации, флаг монохромность может быть задан на уровне последовательности. Если monochrome_flag установлен в предварительно определенное значение, например, «1», то при рассмотрении инициализатора предсказателя палитры, записи палитры напрямую отрегулированы для монохромного формата (другими словами, этап для задания инициализатора предсказателя палитры корректируется, если инициализатор предсказателя палитры содержит только один элемент на запись). Нет больше потребности в параметре, специальном для инициализатора предсказателя палитры, для сигнализации цветового формата для адаптации количества записей. В настоящем изобретении согласно одному из его вариантов выполнения предложено использования параметра, заданного на уровне снимка (или изображения) более высокого уровня.
В предпочтительном варианте осуществления, когда «monochrome_flag» установлен в «1», то инструмент ACT отключается (другими словами, этап считывания значения «residual_adaptive_coulour_transform_enabled_flag» («флаг_задействование_остаточного_адаптивного_цветового_преобразования») пропускается, отключая инструмент ACT), если инструмент становится бесполезным. В этом случае флаг residual_adaptive_colour_transform_enabled_flag как следствие оказывается 0. Напротив, если значение monochrome_flag является 0, то инструмент ACT может быть или может не быть задействован, поэтому передается его соответствующий флаг. Схожим образом количество компонент записей палитры numComps равно 3.
Согласно другому варианту осуществления, более простой синтаксис предлагается таким образом, чтобы monochrome_flag влиял только на один режим за один раз, предпочтительно режим палитры. Известно, что такой пример в случае режима палитры прекращает действие через другое средство.
Пример такого варианта осуществления показан на Фигуре 17. В этом случае, условие (например, одиночное условие) вводится перед считыванием флага monochrome_palette_flag, представленным на Фигуре 10. Если инструмент ACT задействован (как указано значением его соответствующего флага residual_adaptive_colour_transform_enabled_flag), то формат цвета пикселя выводится в качестве не монохромного: существует три цветовые компоненты. Значение флага monochrome_palette_flag может как следствие напрямую оказаться «0». Напротив, если инструмент ACT отключен, то формат может быть или может не быть монохромным.
В другом варианте осуществления предлагается ограничение только для кодера, чтобы не изменять логику декодера. Должны быть удовлетворены следующие два условия: если residual_adaptive_colour_transform_enabled_flag равен 1, то monochrome_palette_flag должен быть 0. А если monochrome_palette_flag равен 1, то residual_adaptive_colour_transform_enabled_flag должен быть 0.
В другом варианте осуществления предлагается декоррелировать фактический формат пикселя из количества компонент записей. В предыдущем варианте осуществления инициализатор предсказателя палитры установлен с наличием записей, имеющих различное количество компонент согласно формату пикселей. В данном варианте осуществления один и тот же инициализатор предсказателя палитры может быть использован с монохромными данными и данными RGB или YUV. Как следствие, как предсказатель палитры, так и инициализатор предсказателя палитры могут иметь записи с от одного до трех элементов в зависимости от формата цвета. Количество элементов на запись может отличаться для предсказателя палитры и инициализатора предсказателя палитры. В таком случае, при инициализации предсказателя палитры с помощью инициализатора предсказателя могут быть применены различные правила. Например, при переходе от одной компоненты к трем, записи предсказателя палитры predictor[i] (предсказатель[i]) инициализируются с полутоновыми значениями по умолчанию или существующими записями инициализатора предсказателя палитры. Например,
- Для RGB, predictor[i][2], predictor[i][1] и predictor[i][0] устанавливаются равными palette_predictor_initializers[i][0] (инициализаторы_предсказателя_палитры[i][0]);
- Для YUV, predictor[i][0] устанавливается равным palette_predictor_initializers[i][0], а predictor[i][2] и predictor[i][1] устанавливаются равными особому значению компоненты (то есть 0, 128 или 255 для компоненты, значения которой находится между 0 и 255).
Другие изменения возможны от случая, то есть при переходе от трех к одной компоненте, при кодировании заданной цветовой плоскости для компоненты указателя comp (например, U, если рассматривается формат YUV), predictor[i] устанавливается в palette_predictor_initializers[i][comp]. Могут использоваться традиционные механизмы для извлечения записей инициализатора из расширения SCC PPS. Были описаны несколько вариантов задания упрощенного синтаксиса, удаляющего избыточность между режимом палитры и другими существующими инструментами на стороне декодера.
На Фигуре 18 показана принципиальная блок-схема вычислительного устройства 1800 для реализации одного или более вариантов осуществления настоящего изобретения. Вычислительное устройство 1800 может быть таким устройством, как микрокомпьютер, рабочая станция или легкое портативное устройство. Вычислительное устройство 1800 содержит шину связи, соединенную с:
- центральным блоком 1801 обработки, таким как микропроцессор, обозначенный CPU;
- запоминающим устройством 1802 с произвольным доступом, обозначенным RAM, для хранения исполняемого кода способа вариантов осуществления настоящего изобретения, а также регистрами, выполненными с возможностью записи переменных величин и параметров, необходимых для реализации способа кодирования или декодирования изображения согласно вариантам осуществления настоящего изобретения, причем его емкость хранения может быть увеличена посредством необязательного RAM, соединенного с портом расширения, например;
- постоянное запоминающее устройство 1803, обозначенное в качестве ROM, для хранения компьютерных программ для реализации вариантов осуществления настоящего изобретения;
- сетевой интерфейс 1804 обычно подключен к сети связи, по которой подлежащие обработке цифровые данные передаются или принимаются. Сетевой интерфейс 1804 может быть одиночным сетевым интерфейсом или может быть составлен из набора различных сетевых интерфейсов (например, проводного и беспроводного интерфейсов, или различных видов проводных или беспроводных интерфейсов). Пакеты данных записываются в сетевой интерфейс для передачи или считываются из сетевого интерфейса для приема под управлением приложения программного обеспечения, функционирующего в CPU 1801;
- пользовательский интерфейс 1805 может использоваться для приема ввода от пользователя или отображения информации пользователю;
- жесткий диск 1806, обозначенный в качестве HD может, быть предоставлен в качестве запоминающего устройства большой емкости;
- модуль 1807 ввода-вывода может использоваться для приема/отправка данных из/во внешние устройства, такие как источник видео или устройство отображения.
Исполняемый код может быть сохранен либо в постоянном запоминающем устройстве 1803, на жестком диске 1806 или на сменном цифровом носителе, таком как, например, диск. Согласно одному варианту реализации исполняемый код программ может быть принят посредством сети связи, через сетевой интерфейс 1804, для сохранения в одном из средства хранения осуществляющего связь устройства 1800, в частности, жесткий диск 1806, перед исполнением.
Центральный блок обработки 1801 выполнен с возможностью управления и направления исполнения команд или частями кода программного обеспечения программы или программ согласно вариантам осуществления настоящего изобретения, чьи команды хранятся в одном из вышеупомянутого средства хранения. После подачи питания CPU 1801 оказывается выполненным с возможностью исполнения команд из главного запоминающего устройства 1802 RAM, относящихся к приложениям программного обеспечения после того, как эти команды были загружены из ROM 1803 с программами или жесткого диска (HD) 1806, например. Такое приложение программного обеспечения, при исполнении в CPU 1801, предписывает выполнение этапов блок-схем последовательностей операций, изображенных на Фигурах 13, 14, 16 и 17.
Любой этап алгоритмов, изображенных на Фигурах 13, 14, 16 и 17, может быть реализован в программном обеспечении посредством исполнения набора команд или программы посредством программируемой вычислительной машины, такой как, PC («Персональный компьютер»), DSP («Цифровой сигнальный процессор») или микроконтроллер; или иначе реализован в аппаратном обеспечении посредством машины или специализированным компонентом, таким как FPGA («Программируемая вентильная матрица») или ASIC («Специализированная интегральная схема»).
Несмотря на то, что настоящее изобретение было описано выше со ссылкой на частные варианты осуществления, настоящее изобретение не ограничено этими частными вариантами осуществления, и специалиста в данной области техники может догадаться о видоизменениях, которые будут охвачены объемом настоящего изобретения.
Многие дополнительные видоизменения и разновидности станут понятны специалисту в уровне техники после обращения к предшествующим иллюстративным вариантам осуществления, которые приведены только в качестве примера и которые не предназначены ограничивать объем настоящего изобретения, которое определено исключительно прилагаемой формулой изобретения. В частности различные признаки из различных вариантов осуществления могут взаимозаменяться по необходимости.
В формуле изобретения слово «содержащий» не исключает других элементов или этапов, и использование признаков в единственном числе не исключает их множественность. Простой факт того, что различные признаки изложены во взаимно различных зависимых требованиях, не указывает на то, что объединение этих признаков не может иметь преимущественное использование.