ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Способы и устройства, совместимые с настоящим изобретением, относятся к кодированию и декодированию видеосигнала и, более конкретно, к адаптивному выбору контекстной модели для кодирования по энтропии и видеодекодера.
УРОВЕНЬ ТЕХНИКИ
С развитием технологии информационной связи, в том числе Интернета, возрастают мультимедийные услуги, содержащие различные типы информации, такие как текст, видео, аудио и т.п. Мультимедийные данные требуют большой емкости носителя хранения и широкой полосы пропускания для передачи, поскольку объем мультимедийных данных обычно большой. Следовательно, способ кодирования со сжатием является обязательным для передачи мультимедийных данных, в том числе текста, видео и аудио.
Базовый принцип сжатия данных заключается в устранении избыточности данных. Данные могут быть сжаты посредством устранения пространственной избыточности, в которой один цвет или объект повторяется в изображении, временной избыточности, в которой предусмотрено небольшое изменение между соседними кадрами в движущемся изображении, или один и тот же звук повторяется в аудио либо мысленной визуальной избыточности, которая учитывает человеческое зрение и его ограниченное восприятие высокой частоты. При общем кодировании видео временная избыточность устраняется посредством компенсирования движения на основе оценки и компенсирования движения, а временная избыточность удаляется посредством кодирования с преобразованием.
Чтобы передавать мультимедиа, сгенерированное после устранения избыточности данных, необходима среда передачи. Производительность передачи различна в зависимости от среды передачи. Используемая в настоящее время среда передачи имеет различные скорости передачи. Например, сверхвысокоскоростная сеть связи может передавать данные в несколько десятков мегабит в секунду, тогда как сеть мобильной связи имеет скорость передачи в 384 килобит в секунду. Следовательно, для того чтобы поддерживать среду передачи, имеющую различные скорости, или чтобы передавать мультимедиа на скорости передачи данных, подходящей для среды передачи, способы кодирования данных, имеющие масштабирование, такие как коротковолновое кодирование видео и полосное кодирование видео, могут быть подходящими для мультимедийного окружения.
Масштабированное кодирование видео - это методика, которая дает возможность сжатому потоку битов быть декодированным при различных разрешениях, частотах смены кадров и уровней отношения "сигнал-шум" (SNR) посредством отсечения части потока битов согласно внешним условиям, таким как скорость передачи в битах, частота ошибок по битам и системные ресурсы. Стандартизация Экспертной группы по вопросам движущегося изображения 4 (MPEG-4) часть 10 для масштабированного кодирования видео разрабатывается. В частности, предпринимаются значительные усилия для того, чтобы реализовать масштабируемость на основе многослойной структуры. Например, поток битов может состоять из нескольких слоев, т.е. базового слоя и первого и второго улучшенных слоев с различными разрешениями (QCIF, CIF и 2CIF) или частотами смены кадров.
Аналогично тому, когда видео кодируется в один слой, когда видео кодируется в несколько слоев, вектор движения (MV) получается для каждого из нескольких слоев для того, чтобы устранить временную избыточность. Поиск вектора движения MV может осуществляться отдельно для каждого слоя (в первом случае), или вектор движения, получаемый посредством поиска вектора движения для одного слоя, используется для другого слоя (без или после повышающей/понижающей дискретизации) (во втором случае). Во втором случае, тем не менее, несмотря на преимущества, получаемые от точных векторов движения, существуют потери вследствие векторов движения, сгенерированных для каждого слоя. Таким образом, эффективно устранять избыточность между векторами движения для каждого слоя является очень сложной задачей.
Фиг.1 показывает пример масштабированного видеокодека, использующего многослойную структуру. Ссылаясь на фиг.1, базовый слой имеет разрешение четверть от общего промежуточного формата (QCIF) и частоту передачи кадров в 15 Гц, первый улучшенный слой имеет разрешение общего промежуточного формата (CIF) и частоту передачи кадров в 30 Гц, а второй улучшенный слой имеет стандартное разрешение (SD) и частоту передачи кадров в 60 Гц. Например, для того чтобы получить поток CIF в 0,5 Мбит/с, поток битов первого улучшенного слоя (CIF_30Hz_0.7M) усекается для того, чтобы соответствовать целевой скорости передачи в 0,5 Мбит. Таким образом, можно предоставить пространственно-временную масштабируемость и масштабируемость отношения "сигнал-шум" (SNR).
Как показано на фиг.1, кадры (к примеру, 10, 20 и 30) в одной временной позиции в каждом слое могут рассматриваться как аналогичные изображения. Одна известная методика кодирования включает в себя предсказание текстуры текущего слоя из текстуры более низкого слоя (непосредственно или после повышающей дискретизации) и кодирование разности между предсказываемым значением и фактической текстурой текущего слоя. Это методика задана как предсказание Intra_BL в модели масштабированного видео 3.0 стандарта масштабированного кодирования видео ISO/IEC 21000-13 ("SVM 3.0").
SVM 3.0 использует методику для предсказания текущего блока с помощью корреляции между текущим блоком и соответствующим блоком в нижнем слое помимо направленного предсказания Intra и предсказания Inter, используемого в традиционном стандарте H.264 для того, чтобы предсказывать блоки или макроблоки в текущем кадре. Способ предсказания называется "предсказание Intra_BL", а режим кодирования, использующий предсказание Intra_BL, называется "режимом Intra_BL".
Фиг.2 - это схематическая схема для описания вышеприведенных трех способов предсказания: 1) предсказание Intra для макроблока 14 в текущем кадре 11; 2) предсказание Inter с помощью кадра 12 в другой временной позиции, чем текущий кадр 11; и 3) предсказание Intra_BL с помощью данных текстуры из области 16 в кадре 13 базового слоя, соответствующего макроблоку 14.
Стандарт масштабированного кодирования видео выбирает преимущественный способ из трех способов предсказания для каждого макроблока.
Чтобы предоставить информацию о выбранном способе предсказания или данные, используемые для выбранного способа предсказания, декодеру, может быть использовано множество флагов. Один бит, несколько бит и несколько десятков бит могут быть использованы как флаги в зависимости от того, выполняется кодирование по макроблокам, по сериям последовательных макроблоков или по кадрам. Размер данных увеличивается, когда задаются флаги для каждого макроблока, серии последовательных макроблоков или кадра в общем движущемся изображении.
Следовательно, существует необходимость в способе и устройстве эффективного сжатия флагов.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Настоящее изобретение предоставляет способ и устройство для уменьшения объема данных, требуемого для предсказания с помощью данных базового слоя.
Вышеуказанный аспект, а также другие аспекты, признаки и преимущества настоящего изобретения станут понятны специалистам в данной области техники после ознакомления с последующим описанием.
Согласно аспекту настоящего изобретения предусмотрен способ кодирования флага остаточного предсказания, указывающего, предсказываются ли остаточные данные для блока улучшенного слоя многослойного видеосигнала из остаточных данных блока нижнего слоя, соответствующих остаточным данным для блока улучшенного слоя, при этом способ содержит этапы, на которых вычисляют энергию остаточных данных блока нижнего слоя, определяют способ кодирования флага остаточного предсказания согласно энергии и кодируют флаг остаточного предсказания с помощью определенного способа кодирования.
Согласно другому аспекту настоящего изобретения предусмотрен способ кодирования флага остаточного предсказания, указывающего, предсказываются ли остаточные данные для блока улучшенного слоя многослойного видеосигнала из остаточных данных блока нижнего слоя, соответствующих остаточным данным для блока улучшенного слоя, при этом способ содержит этапы, на которых вычисляют шаблон кодированных блоков (CBP) блока нижнего слоя, определяют способ кодирования флага остаточного предсказания согласно вычисленному значению CBP и кодируют флаг остаточного предсказания с помощью определенного способа кодирования.
Согласно еще одному аспекту настоящего изобретения предусмотрен способ декодирования флага остаточного предсказания, указывающего, предсказываются ли остаточные данные для блока улучшенного слоя многослойного видеосигнала из остаточных данных блока нижнего слоя, соответствующих остаточным данным для блока улучшенного слоя, при этом способ содержит этапы, на которых вычисляют энергию остаточных данных блока нижнего слоя, определяют способ декодирования флага остаточного предсказания согласно энергии и декодируют флаг остаточного предсказания с помощью определенного способа декодирования.
Согласно еще одному аспекту настоящего изобретения предусмотрен способ декодирования флага остаточного предсказания, указывающего, предсказываются ли остаточные данные для блока улучшенного слоя многослойного видеосигнала из остаточных данных блока нижнего слоя, соответствующих остаточным данным для блока улучшенного слоя, при этом способ содержит этапы, на которых вычисляют значение CBP блока нижнего слоя, определяют способ декодирования флага остаточного предсказания согласно вычисленному значению CBP и декодируют флаг остаточного предсказания с помощью определенного способа декодирования.
Согласно дополнительному аспекту настоящего изобретения предусмотрен способ декодирования флага остаточного предсказания, указывающего, предсказываются ли остаточные данные для блока улучшенного слоя многослойного видеосигнала из остаточных данных блока нижнего слоя, соответствующих остаточным данным для блока улучшенного слоя, при этом способ содержит этапы, на которых проверяют значение CBP в блоке нижнего слоя, определяют, имеет или нет каждый бит CBP в блоке нижнего слоя значение 1, определяют способ декодирования флага остаточного предсказания согласно тому, имеет или нет, по меньшей мере, один бит CBP в блоке нижнего слоя значение 1, и декодируют флаг остаточного предсказания согласно определенному способу декодирования.
Согласно еще одному дополнительному аспекту настоящего изобретения предусмотрен способ декодирования улучшенного слоя многослойного видеосигнала, при этом способ содержит этапы, на которых определяют способ декодирования флага остаточного предсказания, указывающего, предсказывается ли улучшенный слой из нижнего слоя с помощью значения CBP нижнего слоя, и декодируют флаг остаточного предсказания с использованием способа декодирования по энтропии, выбранного согласно способу декодирования, и декодируют улучшенный слой с помощью флага остаточного предсказания.
Согласно еще одному другому аспекту настоящего изобретения предусмотрен декодер флага остаточного предсказания, указывающего, предсказываются ли остаточные данные для блока улучшенного слоя многослойного видеосигнала из остаточных данных блока нижнего слоя, соответствующих остаточным данным для блока улучшенного слоя, при этом декодер содержит анализатор, который анализирует значение CBP блока нижнего слоя, и блок декодирования, который определяет способ декодирования флага остаточного предсказания согласно значению CBP и декодирует флаг остаточного предсказания с помощью определенного способа декодирования.
Согласно еще одному дополнительному аспекту настоящего изобретения предусмотрен декодер для декодирования улучшенного слоя многослойного видеосигнала, при этом декодер содержит анализатор, который анализирует значение CBP для более нижнего слоя, чем улучшенный слой, блок декодирования по энтропии, который определяет способ декодирования флага остаточного предсказания, указывающего, предсказывается ли улучшенный слой из нижнего слоя с помощью значения CBP, и выполняет декодирование по энтропии флага остаточного предсказания согласно способу декодирования и затем улучшенного слоя, обратный квантователь, который обратно квантует улучшенный слой, и обратный преобразователь, который выполняет обратное преобразование обратно-квантованного улучшенного слоя и выполняет декодирование результата с помощью предсказания от нижнего слоя согласно флагу остаточного предсказания.
Согласно другому аспекту настоящего изобретения предусмотрен способ кодирования, выполняемый многослойным видеокодером, при этом способ кодирования содержит этапы, на которых получают кадр базового слоя из входного кадра, получают данные для улучшенного слоя из входного кадра посредством ссылки на кадр базового слоя и кодируют данные для улучшенного слоя согласно результату определения того, должны ли данные для улучшенного слоя быть предсказаны из данных для кадра базового слоя.
Согласно еще одному другому аспекту настоящего изобретения предусмотрен способ декодирования, выполняемого многослойным видеодекодером, при этом способ декодирования содержит этапы, на которых декодируют входной кадр базового слоя, определяют, нужны ли данные для кадра базового слоя для того, чтобы предсказывать данные улучшенного слоя, и декодируют данные для улучшенного слоя согласно результату определения.
Согласно по-прежнему другому аспекту настоящего изобретения предусмотрен видеокодер, содержащий кодер базового слоя, который получает кадр базового слоя из входного кадра, кодер улучшенного слоя, который генерирует данные для улучшенного слоя, предсказываемые из кадра базового слоя из входного кадра, при этом кодер улучшенного слоя содержит преобразователь, который кодирует данные улучшенного слоя согласно результату определения того, предсказуемы ли данные улучшенного слоя из данных кадра базового слоя.
Согласно дополнительному аспекту настоящего изобретения предусмотрен видеодекодер, содержащий декодер базового слоя, который декодирует входной кадр базового слоя, декодер улучшенного слоя, который декодирует данные улучшенного слоя посредством ссылки на кадр базового слоя, при этом декодер улучшенного слоя содержит обратный преобразователь, который декодирует данные улучшенного слоя согласно результату определения того, требуются ли данные декодированного кадра базового слоя для того, чтобы предсказывать данные улучшенного слоя, предсказываемого из кадра базового слоя.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Вышеописанные и другие признаки и преимущества настоящего изобретения станут более очевидными посредством подробного описания примерных вариантов осуществления со ссылкой на прилагаемые чертежи, из которых:
Фиг.1 иллюстрирует пример масштабированного видеокодека, использующего многослойную структуру;
Фиг.2 - это схема для описания предсказания Inter, предсказания Intra, предсказания Intra_BL;
Фиг.3 - это схема, показывающая пример остаточного предсказания в кодировании видео;
Фиг.4 - это блок-схема последовательности операций, иллюстрирующая способ повышения эффективности кодирования флага остаточного предсказания согласно примерному варианту осуществления настоящего изобретения;
Фиг.5 - это блок-схема последовательности операций, иллюстрирующая способ декодирования данных, закодированных с помощью способа, проиллюстрированного на фиг.4, согласно примерному варианту осуществления настоящего изобретения;
Фиг.6 - это схема, показывающая пример предсказания движения в кодировании видео согласно примерному варианту осуществления настоящего изобретения;
Фиг.7 - это блок-схема последовательности операций, иллюстрирующая примерный способ повышения эффективности кодирования флага предсказания движения;
Фиг.8 - это блок-схема последовательности операций, иллюстрирующая способ декодирования данных, закодированных с помощью способа фиг.7, согласно примерному варианту осуществления настоящего изобретения;
Фиг.9 - это блок-схема, иллюстрирующая процесс кодирования данных обратного остаточного предсказания согласно примерному варианту осуществления настоящего изобретения;
Фиг.10 - это блок-схема последовательности операций, иллюстрирующая примерный процесс декодирования данных, закодированных с помощью процесса, проиллюстрированного на фиг.9;
Фиг.11 - это блок-схема, иллюстрирующая процесс кодирования флага остаточного предсказания с помощью модифицированного контекста согласно примерному варианту осуществления настоящего изобретения;
Фиг.12 - это блок-схема последовательности операций, иллюстрирующая примерный процесс декодирования данных, закодированных с помощью процесса, проиллюстрированного на фиг. 11;
Фиг.13 - это блок-схема последовательности операций, иллюстрирующая пример, при котором режим кодирования варьируется в зависимости от остаточных данных базового слоя;
Фиг.14 - это блок-схема последовательности операций, иллюстрирующая процесс кодирования с помощью различных контекстных моделей, когда выполняется контекстное адаптивное двоичное арифметическое кодирование (CABAC), согласно примерному варианту осуществления настоящего изобретения;
Фиг.15 - это блок-схема последовательности операций, иллюстрирующая примерный процесс декодирования видеоданных, закодированных с помощью процесса, проиллюстрированного на фиг.14;
Фиг.16 - это блок-схема видеокодера согласно примерному варианту осуществления настоящего изобретения; и
Фиг.17 - это блок-схема видеодекодера согласно примерному варианту осуществления настоящего изобретения.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
Далее настоящее изобретение описывается более подробно со ссылкой на прилагаемые чертежи, на которых показаны примерные варианты осуществления изобретения.
Преимущества и признаки настоящего изобретения и способы его осуществления могут более четко быть понятными посредством ссылки на последующее подробное описание примерных вариантов осуществления и прилагаемых чертежей. Тем не менее, настоящее изобретение может быть осуществлено во многих различных формах и не должно рассматриваться как ограниченное примерными вариантами осуществления, изложенными в данном документе. Вместо этого данные примерные варианты осуществления предусмотрены с тем, чтобы эта сущность была исчерпывающей и полной, они полностью выражают идею изобретения специалистам данной области техники, и настоящее изобретение полностью определяется прилагаемой формулой изобретения. Аналогичные номера ссылок означают аналогичные элементы по всей спецификации.
Настоящее изобретение описывается далее со ссылкой на блок-схемы последовательностей операций способов примерных вариантов осуществления изобретения. Следует понимать, что каждый этап иллюстраций блок-схем последовательности операций и сочетания этапов иллюстраций блок-схем последовательности операций могут быть реализованными вычислительными программными инструкциями. Эти вычислительные программные инструкции могут быть предоставлены процессору вычислительной машины общего назначения, вычислительной машины специального назначения или другому программируемому устройству обработки данных для того, чтобы генерировать машину, с тем чтобы инструкции, которые исполняются посредством процессора вычислительной машины или другого программируемого устройства обработки данных, создавали средство реализации функций, указанных на этапе или этапах блок-схемы последовательности операций.
Эти вычислительные программные инструкции также могут быть сохранены в машиноиспользуемой или машиночитаемой памяти, которая может управлять вычислительной машиной или другим программируемым устройством обработки данных, для его функционирования определенным способом, с тем чтобы инструкции, сохраненные в машиноиспользуемой или машиночитаемой памяти, генерировали продукт производства, содержащий средство инструктирования, которое реализует функцию, указанную на этапе или этапах блок-схемы последовательности операций.
Вычислительные программные инструкции также могут загружаться на вычислительную машину или другое программируемое устройство обработки данных для инициации выполнения последовательности операционных этапов на вычислительной машине или другом программируемом устройстве для того, чтобы генерировать машинореализуемый процесс, с тем чтобы инструкции, которые исполняются на вычислительной машине или другом программируемом устройстве, предоставляли этапы реализации функций, указанных на этапе или этапах блок-схемы последовательности операций.
Каждый этап иллюстраций блок-схемы последовательности операций может представлять модуль, сегмент или часть кода, которые содержат одну или более исполняемых инструкций для реализации указанных логических функций. Следует также отметить, что в некоторых альтернативных реализациях функции, указанные на этапах, могут выполняться в другой последовательности. Например, два этапа, показанные друг за другом, могут фактически быть исполняемыми практически одновременно, или блоки могут иногда быть исполняемыми в обратном порядке, в зависимости от их функциональности.
Информация, касающаяся способов предсказания, показанных на фиг.2, т.е. данные, относящиеся к одному выбранному способу из способов предсказания, показанных на фиг.2, или информация, касающаяся справочных данных, задается кодером и передается для того, чтобы быть используемой декодером. Кодирование по энтропии осуществляется для того, чтобы окончательно и без потерь сжать данные. Кодирование Хаффмана, как правило, используется в качестве способа кодирования по энтропии. Кодирование Хаффмана - это форма кодирования по длине параметров, и она зависит от расположения бит данных на основе вероятностей данных. Таким образом для того, чтобы повысить общую эффективность по битам, способ представления данных может быть модифицирован.
Один способ уведомления декодера о способе предсказания, выбранном из способов предсказания, проиллюстрированных на фиг.2, - это использование флага предсказания, который указывает, что выбранный способ ссылается на информацию базового слоя, например остаточные данные или векторы движения базового слоя. В качестве флага предсказания может быть использован флаг остаточного предсказания или флаг предсказания движения для того, чтобы информировать декодер о том, были ли ссылки на информацию базового слоя. Поскольку флаги предсказания всегда задаются для каждого макроблока, каждой серии последовательных макроблоков или каждого кадра, важно уменьшить размер флагов или повысить эффективность сжатия в ходе кодирования, такого как кодирование по энтропии. Чтобы достичь этой цели, информация задается для декодера для того, чтобы предсказывать флаги предсказания и восстанавливать флаги предсказания с помощью указанной информации.
Фиг.3 иллюстрирует пример остаточного предсказания в видеокодировании. Остаточное предсказание ссылается на предсказание, выполняемое с остаточными данными, предсказываемыми с помощью одного выбранного из способов предсказания, проиллюстрированных на фиг.2. Макроблок (серия последовательных макроблоков или кадр) 14 в базовом слое может быть составлен из одного выбранного из способов предсказания, проиллюстрированных на фиг.2, к примеру временного предсказания Inter, с помощью остаточных данных. В этом случае остаточное предсказание также может быть выполнено для макроблока, серии последовательных макроблоков или кадра в улучшенном слое с помощью остаточных данных базового слоя. Хотя изобретение описывается далее относительно макроблока, оно не ограничено им и может быть применено к серии последовательных макроблоков или кадру.
Чтобы макроблок в улучшенном слое реализовал временное предсказание Inter, может упоминаться остаток базового слоя. Чтобы уведомить декодер о том, что остаток базового слоя упоминается во временном предсказании Inter, флагу остаточного предсказания (флаг остаточной предикации) присваивается значение 1. Если всем значениям макроблоков в базовом слое (т.е. макроблоков, содержащих остаточные данные) присвоено значение нуль, число ненулевых пикселей меньше заранее определенного порога или значение CBP равно нулю или меньше заранее определенного порога, необязательно задавать значение флага остаточного предсказания. Это означает, что существует мало движения как результат временного предсказания в базовом слое. Т.е. поскольку нет или недостаточно справочных данных для макроблока в улучшенном слое, на которые следует ссылаться, кодирование флага остаточного предсказания пропускается, тем самым сохраняя определенное число бит, требуемых для задания значения флага остаточного предсказания.
Остаточное предсказание имеет смысл в случае, когда векторы движения в улучшенном слое аналогичны векторам в базовом слое. Таким образом, получение разности между векторами движения для двух слоев может быть фундаментальным вопросом при предсказании значения флага остаточного предсказания. Для краткости информация определения для предсказания значения флага остаточного предсказания далее упоминается как "флаг определения предсказания". В общей модели масштабированного видео (JSVM) 1 повышенная эффективность кодирования по энтропии может быть достигнута посредством кодирования разности между флагом остаточного предсказания и флагом определения предсказания, обозначенным как PrdRpFlag, вместо задания флага остаточного предсказания. Поэтому этот флаг разности остаточного предсказания, обозначенный как residual_prediction_flag_diff, введен для того, чтобы кодировать видеоинформацию.
Далее описан способ получения флага разности остаточного предсказания.
Сначала, если число ненулевых пикселей, присутствующих в остатке базового слоя, меньше порога, кодирование флага остаточного предсказания пропускается.
Наоборот, если число ненулевых пикселей больше порога, кодируется флаг разности остаточного предсказания, а не флаг остаточного предсказания. Чтобы получить флаг разности остаточного предсказания, используется остаток между вектором движения базового слоя BaseMV и вектором движения улучшенного или текущего слоя CurrMV. Чтобы закодировать флаг разности остаточного предсказания, должен быть получен флаг определения.
Вышеуказанный процесс может быть обобщен следующим образом.
Если |BaseMV-CurrMV| меньше заранее определенного порога, флагу определения присваивается значение 1; в противном случае ему присваивается значение 0. Затем флаг разности остаточного предсказания, который является разностью между вычисленным флагом определения и флагом остаточной разности, кодируется.
Если энергия остатка базового слоя (или число ненулевых пикселей) меньше порога Thresholdresidual, кодирование флага остаточного предсказания пропускается.
Если |BaseMV-CurrMV| меньше порога ThresholdMV, кодируется значение один минус флаг остаточного предсказания, т.е. 1 - residual_prediction_flag; в противном случае кодируется значение нуль минус флаг остаточного предсказания, т.е. 0 - residual_prediction_flag, что то же самое, что флаг остаточного предсказания.
Фиг.4 - это блок-схема последовательности операций, иллюстрирующая процесс реализации вышеуказанной концепции. Ссылаясь на фиг.4, на этапе S101 остаточные данные базового слоя получаются посредством, например, временного внутреннего кодирования посредством ссылки на другой кадр или блок. Если остаточные данные базового слоя меньше заранее определенного порога, т.е. порога Thresholdresidual, на этапе S105, например, если базовые остаточные данные имеют значение 0 или вся энергия меньше заранее определенного порога, кодирование флага остаточного резервирования пропускается, поскольку его не требуется задавать. Наоборот, если остаточные данные базового слоя больше Thresholdresidual на этапе S105, флаг остаточного предсказания выборочно имеет значение 1 или 0. Основа выбора флага определения предсказания, обозначенная как PrdRpFlag, может быть задана.
Если разность между BaseMV и CurrMV меньше заранее определенного порога, т.е. ThresholdMV на этапе S110, что означает, что вероятность использования остаточных данных базового слоя высока, флагу определения предсказания присваивается значение 1 на этапе S111. Наоборот, если разность между BaseMV и CurrMV больше ThresholdMv на этапе S110, вероятность использования остаточных данных базового слоя небольшая. Таким образом, флагу определения предсказания присваивается значение 0 на этапе S112. На этапе S120 кодируется флаг определения предсказания, заданный на этапе S111 или S112, и флаг разности остаточного предсказания, соответствующий разности между флагом остаточного предсказания и флагом определения предсказания. Кодер может кодировать флаг определения предсказания и флаг разности остаточного предсказания по макроблокам, по сериям последовательных макроблоков или по кадрам.
Фиг.5 - это блок-схема последовательности операций, иллюстрирующая процесс декодирования данных, закодированных с помощью способа, проиллюстрированного на фиг.4, согласно примерному варианту осуществления настоящего изобретения.
Сначала на этапе S151 остаточные данные базового слоя получаются из закодированных данных. С одной стороны, если остаточные данные не меньше заранее определенного порога, т.е. Thresholdresidual на этапе S155 (НЕТ на этапе S155), флагу остаточного предсказания присваивается значение разности между закодированным флагом определения предсказания и флагом разности остаточного предсказания на этапе S161. Как задано в процедуре кодирования, проиллюстрированной на фиг.4, флаг определения предсказания и флаг разности остаточного предсказания обозначены как PrdRpFlag и residual_pred_flag_diff соответственно. В таком случае residual_pred_flag_diff = PrdRpFlag - residual_prediction_flag. Таким образом, residual_prediction_flag может быть получен посредством вычитания residual_pred_flag_diff из PrdRpFlag.
С другой стороны, если остаточные данные меньше Thresholdresidual на этапе S155 (ДА на этапе S155), что означает, что улучшенный слой не генерируется посредством ссылки на флаг остаточного предсказания, флагу остаточного предсказания присваивается значение 0 на этапе S162.
В вышеприведенном описании кодируется информация, отличная от флага остаточного предсказания, указывающая, содержатся ли ссылки на остаточные данные базового слоя, тем самым повышая эффективность кодирования. Аналогично, другая информация может быть закодирована вместо кодирования флага предсказания движения, который указывает, используется или нет информация о движении базового слоя для предсказания вектора движения для того, чтобы достичь той же цели.
Фиг.6 - это схема, показывающая пример предсказания движения в кодировании видео согласно примерному варианту осуществления настоящего изобретения. Предсказание движения относится к предсказанию вектора движения улучшенного слоя или текущего слоя из вектора движения базового слоя. Таким образом, если флагу предсказания движения, обозначенному как motion_prediction_flag, присваивается значение 1, вектор движения улучшенного слоя предсказывается посредством ссылки на вектор движения базового слоя. В противном случае, если флагу предсказания движения присвоено значение 0, вектор движения базового слоя не указывается ссылками. 21 или 25 на фиг.6 обозначает макроблок (или субблок), серию последовательных макроблоков или кадр. Для удобства описания предполагается, что предсказание движения выполняется по макроблокам. Вектор движения макроблока 21 базового слоя такой же, как вектор движения макроблока 25 улучшенного слоя. В этом случае кодирование флага предсказания движения не требуется. Кодирование флага предсказания движения может также быть пропущено, если остаток между двумя векторами движения меньше заранее определенного порога, т.е. ThresholdMotion.
В то же время флаг предсказания движения может быть определен посредством сравнения вектора движения базового слоя с векторами движения из пространственно соседних областей. Пространственно соседние области могут предоставлять точные векторы движения; тем не менее, в некоторых случаях предсказание движения может не выполняться точно. Это может приводить к большому остатку вектора движения. Хотя точность предсказания движения из вектора движения базового слоя меньше пространственного предсказания движения, первое обеспечивает приемлемую точность практически во всех случаях. Таким образом, остаток между двумя векторами движения может быть использован для того, чтобы предсказывать флаг предсказания движения.
Если остаток между векторами движения из макроблоков 22 и 26 больше заранее определенного порога, т.е. ThresholdMV, флагу определения предсказания prediction_determination_flag, присваивается значение 1, поскольку есть большая вероятность того, что флагу предсказания движения присвоено значение 1. С другой стороны, если остаток между векторами движения из макроблоков 22 и 26 меньше ThresholdMV, флагу определения предсказания присваивается значение 0, поскольку есть большая вероятность того, что флагу предсказания движения присвоено значение 0.
После того как задано значение флага определения предсказания, кодируется флаг разности предсказания движения, обозначенный как motion_pred_flag_diff, соответствующий разности между флагом определения предсказания и флагом предсказания движения.
Фиг.7 - это блок-схема последовательности операций, иллюстрирующая способ повышения эффективности кодирования флага предсказания движения.
Ссылаясь на фиг.7, вектор движения, предсказываемый из базового слоя, обозначенный как Predict_MV_From_BaseLayer, и вектор движения, предсказываемый из пространственно соседней области, обозначенный как Predict_MV_From_Spatia, получаются на этапе S201. На этапе S205, с одной стороны, если разность между двумя векторами движения меньше заранее определенного порога, т.е. ThresholdMotion, флаг предсказания движения не кодируется. С другой стороны, если разность между двумя векторами движения больше ThresholdMV, флаг определения предсказания задается для того, чтобы предсказывать флаг предсказания движения, вместо флага предсказания движения. Флагу определения предсказания присваивается значение 1 или 0 в зависимости от того, больше или нет разность, чем ThresholdMV, на этапе 210.
Т.е. если на этапе S210 разность больше ThresholdMV, флагу определения предсказания присваивается значение 1 на этапе S211. Если разность больше ThresholdMV, флагу определения предсказания присваивается значение 0 на этапе S212. На этапе S220 кодируется значение флага определения предсказания, заданное на этапе S211 или S212, 1 или 0, и флага разности остаточного предсказания, соответствующее разности между флагом остаточного предсказания и флагом определения предсказания.
Фиг.8 - это блок-схема последовательности операций, иллюстрирующая способ декодирования данных, закодированных с помощью способа, проиллюстрированного на фиг.7, согласно примерному варианту осуществления настоящего изобретения.
Ссылаясь на фиг.8, на этапе S251 вектор движения, предсказываемый из базового слоя, и вектор движения, предсказываемый из пространственно соседней области, получаются на основе кодированных данных.
На этапе S255, с одной стороны, если разность между двумя векторами движения меньше заранее определенного порога, т.е. ThresholdMotion, значение флага предсказания движения, обозначенного как motion_prediction_flag, задается равным разности между флагом определения предсказания и флагом разности предсказания движения на этапе S261. Как задано в проиллюстрированной выше процедуре кодирования, флаг определения предсказания и флаг разности остаточного предсказания обозначаются как PrdRpFlag и residual_pred_flag_diff соответственно. В таком случае motion_pred_flag_diff = PrdRpFlag - motion_prediction_flag. Таким образом, motion_prediction_flag может быть получен посредством вычитания motion_pred_flag_diff из PrdRpFlag.
С другой стороны, на этапе S255, если разность меньше ThresholdMotion, motion_prediction_flag присваивается значение 0 на этапе S262.
Как описано в связи с фиг.3-8, данные, которые должны быть закодированы, предсказываются из данных базового слоя для того, чтобы уменьшить размер данных, которые должны быть закодированы. Далее описан способ уменьшения размера данных, которые должны быть закодированы, согласно другому примерному варианту осуществления настоящего изобретения.
В процессе кодирования, проиллюстрированном на фиг.3-8, кодирование флага, указывающего, содержатся ли ссылки на данные базового слоя, пропускается, когда данные базового слоя не нужны для предсказания или значение для предсказания флага кодируется вместо самого флага.
В другом примерном варианте осуществления кодирование флага остаточного предсказания пропускается с помощью данных базового слоя или флаг остаточного предсказания может быть преобразован в новое значение для кодирования.
Когда остаток базового слоя не содержит ненулевые пиксели или когда CBP базового слоя равен нулю, кодирование флага остаточного предсказания может быть пропущено, поскольку флаг остаточного предсказания может быть предсказан. В противном случае кодируется значение один минус флаг остаточного предсказания, т.е. 1 - residual_prediction_flag, поскольку есть большая вероятность того, что флаг остаточного предсказания имеет значение 1. В этом случае, поскольку размер данных, которые должны быть закодированы, может возрастать, когда закодирован 1, 0 может быть закодирован вместо 1 для того, чтобы повысить эффективность кодирования.
Вышеописанный подход используется, когда используется кодер, основанный на кодировании переменной длины (VLC), поскольку этот подход генерирует больше нулей. Когда используется контекстное адаптивное двоичное арифметическое кодирование (CABAC), можно эффективно сжимать биты или шаблон бит, часто появляющихся в данных, которые должны быть закодированы. Таким образом, общий коэффициент сжатия может быть увеличен посредством регулирования шаблона данных, содержащего единицы или нули. CABAC достигает высокой производительности сжатия за счет выбора вероятностной модели для каждого символа на основе контекста символа, адаптации оценок вероятностей, соответствующих вероятностной модели, на основе локальной статистики, и выполнения арифметического кодирования символа. Процесс кодирования символа данных состоит из не более чем четырех элементарных этапов: 1. Преобразование в двоичную форму; 2. Контекстное моделирование; 3. Арифметическое кодирование; и 4. Обновление вероятностей.
1. Преобразование в двоичную форму
Среди методик CABAC двоичное арифметическое кодирование дает возможность данному символу не с двоичным значением быть уникально сопоставленным с двоичной последовательностью. В CABAC только двоичное решение вводится в процесс кодирования. Символы с недвоичными значениями, такие как коэффициенты преобразования или векторы движения, преобразуются в двоичные коды до процесса фактического арифметического кодирования. Этот процесс аналогичен преобразованию символов данных в коды длины параметра за исключением того, что двоичные коды ранее кодируются арифметическим кодером до передачи.
Следующие элементарные операции контекстного моделирования, арифметического моделирования и обновления вероятностей выполняются рекурсивно с соответствующими битами преобразованных в двоичную форму кодов, т.е. бинами.
2. Контекстное моделирование
Контекстная модель, которая является вероятностной моделью для одного или более бинов преобразованных в двоичную форму символов и выбирается на основе статистики последних закодированных символов данных, сохраняет вероятность для каждого бина для того, чтобы быть 1 или 0.
3. Арифметическое кодирование
Арифметический кодер кодирует каждый бин на основе выбранной вероятностной модели. Каждый бин имеет только два вероятностных поддиапазона, соответствующих значениям 1 и 0 соответственно.
4. Обновление вероятностей
Выбранная вероятностная модель обновляется на основе фактически закодированных значений. Т.е. если значение бина равно 1, число вхождений единиц увеличивается на один.
Поскольку контекстная модель выбирается для каждой серии последовательных макроблоков согласно вышеописанному CABAC, вероятностные значения вероятностных моделей инициализируются в таблицу постоянных значений для серии последовательных макроблоков. CABAC предоставляет большую эффективность кодирования, чем традиционное VLC, когда заранее определенный объем информации аккумулируется, поскольку контекстная модель должна быть непрерывно обновляема на основе статистики последних закодированных символов данных.
Фиг.9 - это блок-схема последовательности операций, иллюстрирующая процесс, в котором кодирование флага остаточного предсказания, обозначенного как residual_prediction_flag, пропускается с помощью энергии остатка базового слоя или значения CBP либо флаг остаточного предсказания преобразуется в новое значение для кодирования.
На этапе S301 получаются остаточные данные базового слоя. Если энергия остаточных данных базового слоя или значение CBP равно 0 на этапе S302, что означает, что остаточные данные базового слоя не содержат ненулевые пиксели, остаточные данные не указываются ссылками в улучшенном слое. Таким образом, кодирование флага остаточного предсказания не обязательно.
Наоборот, если энергия остаточных данных базового слоя или значение CBP не равно 0, что означает, что остаточные данные базового слоя имеют ненулевые пиксели, флаг остаточного предсказания имеет смысл, поэтому значение флага остаточного предсказания получается на этапе S312. Затем на этапе S316 кодируется обратный флаг остаточного предсказания, который задается как значение один минус флаг остаточного предсказания, т.е. 1 - residual_prediction_flag.
Фиг.10 - это блок-схема последовательности операций, иллюстрирующая процесс декодирования данных, закодированных с помощью процесса, проиллюстрированного на фиг.9. Ссылаясь на фиг.10, на этапе S351 получаются остаточные данные базового слоя. Если энергия остаточных данных базового слоя или значение CBP равно 0 на этапе S352, что означает, что нет данных, которые должны быть использованы для предсказания в улучшенном слое, флагу остаточного предсказания присваивается значение 0 на этапе S364. Наоборот, если остаточные данные базового слоя имеют ненулевые пиксели, флаг остаточного предсказания имеет смысл. Поскольку данные, закодированные согласно способу, проиллюстрированному на фиг.9, - это значение один минус флаг остаточного предсказания, т.е. 1 - residual_prediction_flag, т.е. обратный флаг остаточного предсказания, флагу остаточного предсказания может быть присвоено значение один минус обратный флаг остаточного предсказания, т.е. 1 - reversed_residual_prediction_flag, на этапе S370.
В проиллюстрированном варианте осуществления, показанном на фиг.9 и 10, процесс кодирования описан таким образом, что можно определить, следует ли кодировать флаг остаточного предсказания с помощью остаточных данных базового слоя, и кодирование выполняется с помощью обратного значения остаточных данных базового слоя, тем самым повышая эффективность кодирования.
Далее описывается способ кодирования флага остаточного предсказания с помощью модифицированного контекста, когда используется CABAC. Поскольку CABAC используется для того, чтобы кодировать символы на основе контекста, как описано выше, он предлагает переменные коэффициенты сжатия в зависимости от контекстной модели, смещенной к 0 или 1. Например, когда контекст смещен к 0, коэффициент сжатия высокий, когда данные, содержащие больше нулей, чем единиц, сжимаются с помощью контекста. С другой стороны, если контекст смещен к 1, коэффициент сжатия высокий, если данные, содержащие больше единиц, чем нулей, сжимаются с помощью контекста. Как описано выше со ссылкой на фиг.9, существует очень большая вероятность того, что флаг остаточного предсказания равен 1, если он кодируется. Таким образом, флаг остаточного предсказания кодируется согласно модифицированному контексту, смещенному к символу.
Фиг.11 - это блок-схема, иллюстрирующая процесс кодирования флага остаточного предсказания, обозначенного как residual_prediction_flag, с помощью модифицированного контекста согласно примерному варианту осуществления настоящего изобретения. Как описано выше, согласно процессу кодирования кодирование флага остаточного предсказания пропускается с помощью энергии остатка базового слоя или значения CBP либо флаг остаточного предсказания кодируется с помощью контекста, смещенного к символу 1.
Ссылаясь на фиг.11, остаточные данные базового слоя получаются на этапе S401. Если энергия остаточных данных базового слоя или значение CBP равно 0 на этапе S402, что означает, что остаточные данные базового слоя не содержат ненулевые пиксели, остаточные данные не указываются ссылками в улучшенном слое. Таким образом, кодирование флага остаточного предсказания не обязательно. В свою очередь, если используется многослойная структура, значение CBP может накапливаться с самого нижнего слоя. В этом случае, если значение CBP, накопленное из базового слоя, равно 0, кодирование флага остаточного предсказания также пропускается.
Если энергия остаточных данных базового слоя или накопленное значение CBP не равно 0, что означает, что остаточные данные базового слоя имеют ненулевые пиксели, флаг остаточного предсказания имеет смысл, поэтому значение флага остаточного предсказания получается на этапе S412. Поскольку существует большая вероятность того, что значение флага остаточного предсказания равно 1, флаг остаточного предсказания кодируется с помощью контекста, смещенного к символу 1, на этапе S416.
Фиг.12 - это блок-схема последовательности операций, иллюстрирующая процесс декодирования данных, закодированных с помощью процесса, проиллюстрированного на фиг.11. Ссылаясь на фиг.12, на этапе S451 получаются остаточные данные базового слоя. Если энергия остаточных данных базового слоя или накопленное значение CBP равно 0 на этапе S452, что означает, что нет данных, которые должны быть использованы для предсказания в улучшенном слое, флагу остаточного предсказания присваивается значение 0 на этапе S464. Наоборот, если остаточные данные базового слоя имеют ненулевые пиксели на этапе S452, флаг остаточного предсказания имеет смысл. Таким образом, флаг остаточного предсказания декодируется с помощью контекста, смещенного к символу 1, на этапе S462. Затем на этапе 470 улучшенный слой получается согласно значению флага остаточного предсказания.
Альтернативно, может быть определено, следует кодировать флаг остаточного предсказания с помощью энергии остаточных данных базового слоя или значения CBP. Если энергия остаточных данных базового слоя или значение CBP попадает в заранее определенный диапазон, кодирование флага остаточного предсказания может быть пропущено. Далее представлен следующий псевдокод кодирования:
Если (энергия остаточных данных базового слоя равна 0 или значение CBP равно 0)
тогда
пропустить кодирование residual_prediction_flag
иначе
закодировать residual_prediction_flag
Если энергия остаточных данных базового слоя или значение CBP равно нулю в результате декодирования, декодер выполняет процесс декодирования без остаточного предсказания над базовым слоем. В противном случае декодируется значение флага остаточного предсказания. Далее представлен следующий псевдокод декодирования:
Если (энергия остаточных данных базового слоя равна 0 или значение CBP равно 0)
тогда
пропустить декодирование residual_prediction_flag
иначе
декодировать residual_prediction_flag
Фиг.13 - это блок-схема последовательности операций, иллюстрирующая пример, при котором режим кодирования варьируется в зависимости от остаточных данных базового слоя.
Ссылаясь на фиг.13, на этапе S501 получаются остаточные данные базового слоя. На этапе 520, если энергия остаточных данных базового слоя или значение CBP равно 0, что означает, что флаг остаточного предсказания равен 0, используется способ кодирования, который предлагает высокую эффективность кодирования, когда флаг остаточного предсказания равен 0. Например, если для кодирования используется CABAC, флаг остаточного предсказания может быть закодирован с помощью вероятностной модели для контекстной модели CABAC, имеющей большую вероятность быть 0, чем быть 1.
Наоборот, если энергия остаточных данных базового слоя или значение CBP не равно 0, существует очень большая вероятность того, что флаг остаточного предсказания равен 1. Таким образом, на этапе S530 используется способ кодирования, который предлагает высокую эффективность кодирования, когда флаг остаточного предсказания равен 1. Например, если в качестве способа кодирования используется CABAC, флаг остаточного предсказания может быть закодирован с помощью вероятностной модели для контекстной модели CABAC, имеющей большую вероятность быть 1, чем быть 0.
Далее представлен следующий псевдокод процесса, проиллюстрированного на фиг.13:
Если (энергия остаточных данных базового слоя равна 0 или значение CBP равно 0)
тогда
кодировать с помощью способа, предлагающего высокую эффективность кодирования, когда флаг остаточного предсказания равен 0
иначе
кодировать с помощью способа, предлагающего высокую эффективность кодирования, когда флаг остаточного предсказания равен 1
При многослойном видеокодировании, когда видеоданные кодируются на базовом слое, слое мелкозернистой масштабируемости (FGS) и улучшенном слое, энергия остаточных данных или значение CBP могут указываться ссылкой в базовом слое или слое FGS.
Процесс декодирования выполняется способом, аналогичным процессу кодирования. Т.е. после того, как получены остаточные данные базового слоя, если энергия остаточных данных или значение CBP равно 0, что означает, что флаг остаточного предсказания равен 0, кодированные видеоданные декодируются с помощью способа, предлагающего высокую эффективность кодирования, когда используется флаг остаточного предсказания, равный 0. Например, если для кодирования используется CABAC, видеоданные могут быть декодированы с помощью контекстной модели CABAC, имеющей более высокую вероятность быть 0, чем быть 1 для того, чтобы получить флаг остаточного предсказания.
Наоборот, если энергия остаточных данных базового слоя или значение CBP не равно 0, что означает, что существует большая вероятность того, что флаг остаточного предсказания равен 1, видеосигнал, закодированный согласно способу кодирования, который предлагает высокую эффективность кодирования, когда флаг остаточного предсказания равен 1, декодируется способом, аналогичным способу кодирования. Например, если в качестве способа кодирования используется CABAC, видеоданные могут быть декодированы с помощью вероятностной модели для контекстной модели CABAC, имеющей более высокую вероятность быть 1, чем быть 0 для того, чтобы получить флаг остаточного предсказания. Далее представлен следующий псевдокод процесса декодирования:
Если (энергия остаточных данных базового слоя равна 0 или значение CBP равно 0)
тогда
декодировать согласно способу, предлагающему высокую эффективность кодирования, когда флаг остаточного предсказания равен 0
иначе
декодировать согласно способу, предлагающему высокую эффективность кодирования, когда значение флага остаточного предсказания равно 1
Ссылаясь на фиг.13, на этапах 520 и 530 способы кодирования, предлагающие высокую эффективность кодирования, когда флаг остаточного предсказания равен 0 и когда флаг остаточного предсказания равен 1, соответственно, используются. Один из способов, предлагающих высокую эффективность кодирования, - это использовать различные контекстные модели в ходе кодирования по энтропии.
Фиг.14 - это блок-схема последовательности операций, иллюстрирующая процесс кодирования с помощью различных контекстных моделей, когда используется CABAC, согласно примерному варианту осуществления настоящего изобретения. Ссылаясь на фиг.14, на этапе S601 получаются остаточные данные базового слоя. Если энергия остаточных данных базового слоя или значение CBP равно 0 на этапе S610, что означает, что флаг остаточного предсказания равен 0, флаг остаточного предсказания кодируется с помощью контекстной модели CABAC, имеющей более высокую вероятность быть 0, чем быть 1, на этапе S620. Наоборот, если энергия остаточных данных базового слоя или значение CBP не равно 0 на этапе S610, существует большая вероятность того, что флаг остаточного предсказания равен 1. Таким образом, флаг остаточного предсказания кодируется с помощью контекстной модели CABAC, имеющей более высокую вероятность быть 0, чем быть 1, на этапе S630.
Фиг.15 - это блок-схема последовательности операций, иллюстрирующая процесс декодирования данных, закодированных с помощью процесса, проиллюстрированного на фиг.14. На этапе S651 получаются остаточные данные базового слоя. На этапе S652 получаются биты шаблона кодированных блоков (CBP). На этапе S653 4 самых младших бита в CBP выделяются значению CBP для сигнала яркости, обозначенного как CodedBlockPatternLuma, а 2 более старших бита выделяются значению CBP для сигнала цветности, обозначенного как CodedBlockPatternChroma, соответственно. Значения CBP для 4 субблоков в макроблоке могут быть известны из значения CBP для CodedBlockPatternLuma. Значения CBP для постоянной и переменной составляющей тока могут быть известны из значения CBP для CodedBlockPatternChroma. Форматы coded_block_pattern, CodedBlockPatternLuma и CodedBlockPatternChroma показаны в таблице ниже. Параметр coded_block_pattern предлагает информацию о том, имеет ли субблок или макроблок, представленный каждым битом, ненулевые пиксели.
Бит[0] имеет значение 1, когда левый верхний блок яркости 8·8 из четырех блоков яркости 8·8 в макроблоке имеет ненулевые пиксели. Бит[1] и бит[2] имеют значение 1, когда левый нижний и правый нижний блоки яркости 8Ч8 имеют ненулевые пиксели.
Бит[4] и бит[5] имеют значение 1, когда постоянные и переменные составляющие тока информации о цветности в макроблоке имеют ненулевые пиксели.
Таким образом, наличие или отсутствие ненулевых пикселей может быть определено значением CBP. Когда, по меньшей мере, один из четырех бит, составляющих CodedBlockPatternLuma, имеет значение 1 или значение CodedBlockPatternChroma больше 0 на этапе S660, что означает, что остаточные данные имеют ненулевые пиксели, существует большая вероятность того, что флаг остаточного предсказания равен 1. Таким образом, значение для выбора контекстной модели кодирования по энтропии, обозначенной как ctxIdxInc, задается равным 1 на этапе S670. После того как ctxIdxInc присвоено значение 1, кодированные данные декодируются с помощью способа декодирования, который предлагает высокую эффективность кодирования, когда флаг остаточного предсказания равен 1. Например, кодированные данные могут быть декодированы с помощью контекстной модели CABAC, имеющей более высокую вероятность быть 1, чем быть 0.
С другой стороны, если ни один из четырех бит, составляющих CodedBlockPatternLuma, не имеет значение 1 и значение CodedBlockPatternChroma равно 0 на этапе S660, что означает, что остаточные данные не содержат ненулевых пикселей, существует большая вероятность того, что флаг остаточного предсказания равен 0. Таким образом, значение ctxIdxInc задается равным 0 на этапе S680 для выбора контекстной модели кодирования по энтропии. После того как ctxIdxInc присвоено значение 0, кодированные данные декодируются с помощью способа декодирования, который предлагает высокую эффективность кодирования, когда флаг остаточного предсказания равен 0. Например, кодированные данные могут быть декодированы с помощью контекстной модели CABAC, предлагающей более высокую вероятность быть 1, чем быть 0.
После того как ctxIdxInc выборочно присвоено значение 1 на этапе S670 или 0 на этапе S680, на этапе S690 выполняется кодирование по энтропии с помощью заданного значения ctxIdxInc.
На этапе S660 определяется, присутствует ли бит, имеющий значение 1, в CBP. Как описано выше, значение CBP выделяется CodedBlockPatternLuma и CodedBlockPatternChroma. Процесс поиска ненулевых пикселей с помощью CodedBlockPatternLuma приведен далее:
for (Luma8⊥×8BlkIdx = 0; i <= 3; i++){
if ((CodedBlockPatternLuma>>Luma8x8BlkIdx) & 1) and
(current macroblock is inter-macroblock))
then
residua AvailLuma8×8Blk= 1;
break;
else
residualAvailLuma8×8Blk = 0;
}
Побитовая операция AND (&) выполняется для каждого Luma8×8Blkldx для того, чтобы определить, имеет ли каждый бит CodedBlockPatternLuma значение 1, и осуществляется проверка в отношении того, является ли текущий макроблок макроблоком с внутренним кодированием. Если текущий макроблок является макроблоком с внутренним кодированием, параметру residualAvailLuma8×8Blk присваивается значение 1; в противном случае ему присваивается значение 0. Параметр residualAvailLuma8×8Blk используется для того, чтобы задавать baseResidualAvailLuma8×8Blk и определять значение ctxIdxInc, которое определяет контекстную модель кодирования по энтропии.
Процесс поиска ненулевых пикселей с помощью CodedBlockPatternChroma приведен далее:
if ((CodedBlockPatternChroma != 0) and
(current macroblock is inter-macroblock))
then
residualAvailChroma = 1;
break;
else
residualAvailChroma = 0;
Если значение CodedBlockPatternChroma не равно 0 и текущий макроблок является макроблоком с внешним кодированием, параметру residualAvailChroma присваивается значение 1; в противном случае ему присваивается значение 0. Параметр residualAvailLuma8×8Blk используется для того, чтобы задавать baseResidualAvailLuma8×8Blk и определять значение ctxIdxInc, которое определяет контекстную модель кодирования по энтропии.
Таким образом, если, по меньшей мере, один из бит в CodedBlockPatternLuma или CodedBlockPatternChroma имеет значение 1, определяется, что остаточные данные имеют, по меньшей мере, один ненулевой пиксель, так что ctxIdxInc присваивается значение 1. В противном случае ctxIdxInc присваивается значение 0 для кодирования по энтропии.
В описанных ниже примерных вариантах осуществления "блок", "часть" или "модуль" означают компонент программного обеспечения или компонент аппаратных средств, такой как программируемая пользователем матричная БИС (FPGA) или специализированная интегральная схема (ASIC). Блок выполняет конкретную функцию, но не ограничен программным обеспечением и аппаратными средствами. Блок может быть включен в адресный носитель хранения или может быть сконфигурирован для того, чтобы воспроизводить один или более процессоров. Следовательно, блоки могут включать в себя компоненты, такие как программные компоненты, объектно-ориентированные программные компоненты, компоненты классов и компоненты заданий, процессы, функции, атрибуты, процедуры, вспомогательные процедуры, сегменты программного кода, драйверы, микропрограммное обеспечение, микрокоды, схемы, данные, базы данных, структуры данных, таблицы, массивы и параметры. Компоненты и признаки, предоставляемые блоками, могут быть объединены в меньшее число компонентов и меньшее число блоков или могут быть поделены на большее число компонентов и большее число блоков. Помимо этого, компоненты и блоки могут быть реализованы таким образом, что они воспроизводят один или более центральных процессоров (ЦП) в устройстве или защищенной мультимедийной карте (MMC).
Фиг.16 - это блок-схема видеокодера 500 согласно примерному варианту осуществления настоящего изобретения, а фиг.17 - это блок-схема видеодекодера 550 согласно примерному варианту осуществления настоящего изобретения. Хотя настоящее изобретение описывается со ссылкой на фиг.16 и 17 в отношении сценария использования одного базового слоя и одного улучшенного слоя, два или более слоев могут быть использованы. Специалисты в данной области техники должны понимать, что настоящее изобретение также может быть применено между текущим слоем и нижним слоем.
Ссылаясь на фиг.16, видеокодер 500, главным образом, включает в себя кодер 400 улучшенного слоя и кодер 300 базового слоя. Конфигурация кодера 300 базового слоя описывается далее.
Понижающий дискретизатор 310 выполняет понижающую дискретизацию входного видео согласно разрешению, частоте передачи кадров или размеру видеоизображения базового слоя. Понижающий дискретизатор MPEG или коротковолновый понижающий дискретизатор может быть использован для того, чтобы выполнять понижающую дискретизацию входного кадра до разрешения базового слоя. Схема кадров или схема интерполяции кадров может быть просто использована для того, чтобы изменить частоту передачи кадров для понижающей дискретизации. Понижающая дискретизация изображения до меньшего размера может быть выполнена посредством удаления информации в граничной области из видеоинформации или уменьшения размера видеоинформации для того, чтобы соответствовать размеру экрана. Например, понижающая дискретизация может быть выполнена для того, чтобы изменить размер исходного входного видео с соотношения сторон 16:9 к соотношению сторон 4:3.
Блок 350 оценки движения выполняет оценку движения в кадре базового слоя для того, чтобы получить вектор движения mv для каждого сегмента в кадре базового слоя. Оценка движения - это процесс нахождения области в предыдущем опорном кадре Fr', сохраненном в буфере 380 кадров, который наиболее похож на каждый раздел в текущем кадре Fc и имеет минимальную ошибку сопоставления. Различные методики, такие как алгоритм иерархического сопоставления блоков по размеру параметров (HVSBM) или сопоставления блоков фиксированного размера, могут быть использованы для оценки движения. Опорный кадр Fr' может быть предоставлен буфером кадров 380. Хотя в вышеприведенном описании кодер 300 базового слоя поддерживает кодирование с замкнутым контуром с помощью восстановленного кадра в качестве опорного кадра, он может использовать схему кодирования с открытым контуром, используя исходный кадр базового слоя, предоставляемый понижающим дискретизатором 310, в качестве опорного кадра.
Компенсатор 360 движения выполняет компенсацию движения в опорном кадре с помощью вектора движения mv. Вычитатель 315 вычитает скомпенсированный по движению опорный кадр из текущего кадра базового слоя Fc для того, чтобы сгенерировать остаточный кадр.
Преобразователь 320 выполняет пространственное преобразование остаточного кадра для того, чтобы создать коэффициент преобразования. Способ пространственного преобразования может включать в себя дискретное косинусное преобразование (DCT) или коротковолновое преобразование. Конкретно, коэффициенты DCT могут быть созданы в случае, когда используется DCT, а коротковолновые коэффициенты могут быть созданы в случае, когда используется коротковолновое преобразование.
Квантователь 330 квантует коэффициент преобразования, принимаемый от преобразователя 320. Квантование означает процесс выражения коэффициентов преобразования, сформированных произвольными вещественными значениями, дискретными значениями, и сопоставление дискретных значений с индексами согласно заранее определенной таблице квантования. Квантованное результирующее значение упоминается как квантованный коэффициент.
Блок 340 кодирования по энтропии без потерь кодирует коэффициент квантования, получаемый квантователем 330, и вектор движения mv, получаемый блоком 350 оценки движения, в потоке битов базового слоя. Существует множество способов кодирования без потерь, в том числе арифметическое кодирование, кодирование по длине параметров и т.п.
Обратный квантователь 371 применяет обратное квантование к коэффициенту квантования, принятому от квантователя 330. Обратное квантование означает процесс обратного квантования для того, чтобы восстановить значения, сопоставленные с индексами, сгенерированными при квантовании согласно заранее определенной таблице квантования, используемой при квантовании.
Обратный преобразователь 372 выполняет обратное преобразование с обратно квантованным результатом. Обратным пространственным преобразованием может быть, например, обратное DCT или обратное коротковолновое преобразование, выполняемое в обратном порядке преобразованию, выполняемому преобразователем 320.
Сумматор 325 суммирует выходные значения компенсатора 360 движения и обратного преобразователя 372 для того, чтобы восстановить текущий кадр Fc', который затем отправляется в буфер 380 кадров. Буфер 380 кадров временно сохраняет восстановленный кадр Fc' и предоставляет его в качестве опорного кадра для предсказания Inter над последующим кадром базового слоя.
Восстановленный кадр Fc' подается в кодер 400 улучшенного слоя после прохождения через повышающий дискретизатор 395. Разумеется, если базовый слой имеет такое же разрешение, как улучшенный слой, повышающая дискретизация может быть пропущена.
Далее описывается конфигурация декодера 200 улучшенного слоя. Кадр, принимаемый из кодера 300 базового слоя, и входной кадр подается в вычитатель 410. Вычитатель 410 вычисляет разность между входным кадром и кадром базового слоя, содержащим виртуальную область для того, чтобы генерировать остаточный кадр. Остаточный кадр проходит через преобразователь 420, квантователь 430 и блок 440 кодирования по энтропии перед преобразованием в поток битов улучшенного слоя.
Преобразователь 420 выполняет пространственное преобразование с остаточным сигналом между макроблоком во входном кадре и макроблоком в базовом слое для того, чтобы создать коэффициент преобразования. Методика дискретного косинусного преобразования (DCT) или коротковолнового преобразования может быть использована для пространственного преобразования. Коэффициенты DCT (в случае DCT) или коротковолновые коэффициенты (в случае коротковолнового преобразования) имеют схожесть благодаря характеристикам макроблока улучшенного слоя. Таким образом, преобразователь 420 устраняет схожесть этих коэффициентов для того, чтобы увеличить коэффициент сжатия.
Поскольку квантователь 430 выполняет ту же функцию/операцию, что и его аналог в кодере 300 базового слоя, его подробное описание не приводится. Выход потока битов из квантователя 430 задается посредством блока 435 задания информации о кодировании таким образом для того, чтобы эффективно кодировать флаг остаточного предсказания перед кодированием блока 440 кодирования по энтропии.
Как описано выше, в отношении информации о том, должны или нет данные кадра базового слоя указываться ссылками в данных улучшенного слоя, блок 435 задания информации о кодировании определяет разность между данными предсказания и результатом предсказания, тем самым предотвращая потерю информации, которая должна быть закодирована и доставлена из блока 440 кодирования по энтропии. Процесс выделения битов для сжатия, выполняемый в преобразователе 420, является таким, как описано в процессах предсказания остаточных данных (см. фиг.4, 9, 11, 13 и 14) и предсказания вектора движения (см. фиг.7). Например, если энергия остаточных данных в базовом слое или слое FGS равна 0 либо значение CBP равно 0, блок 435 задания информации о кодировании не кодирует флаг остаточного предсказания, поскольку предсказание остаточных данных базового слоя не обязательно; в противном случае он кодирует флаг остаточного предсказания. Если энергия остаточных данных в базовом слое или слое FGS либо значение CBP не равно 0, существует большая вероятность того, что флаг остаточного предсказания равен 1. Как описано выше со ссылкой на фиг.4, 9, 11, 13 и 14, флаг остаточного предсказания кодируется с учетом эффективности кодирования.
Когда процесс кодирования, проиллюстрированный на фиг.14, применяется, если энергия остаточных данных базового слоя или значение CBP равно 0, что означает, что флаг остаточного предсказания равен 0, блок 435 задания информации о кодировании задает вероятностное значение для контекстной модели CABAC, с тем чтобы вероятность быть 0 была выше, чем вероятность быть 1. Наоборот, если энергия остаточных данных базового слоя или значение CBP не равно 0, что означает, что существует большая вероятность того, что флаг остаточного предсказания имеет значение 1, блок 435 задания информации о кодировании задает вероятностное значение для контекстной модели CABAC, с тем чтобы вероятность быть 1 была выше, чем быть 0. В одном примерном варианте осуществления, как описано выше, блок 435 задания информации о кодировании может присвоить ctxIdxInc значение 0 или 1.
Блок 440 кодирования по энтропии выполняет кодирование данных улучшенного слоя с помощью информации, заданной блоком 435 задания информации о кодировании. Поскольку блок 440 кодирования по энтропии выполняет те же функции/операции, что и блок 340 кодирования по энтропии в кодере 300 базового слоя, за исключением этой операции, их описание опущено.
Кодер 400 улучшенного слоя, проиллюстрированный на фиг.16, может предсказывать, должны ли данные кадра базового слоя быть указываемы ссылками в ходе процесса кодирования в данных, которые могут ссылаться на кадр базового слоя, к примеру остаточных данных или вектора движения.
Фиг.17 - это блок-схема видеодекодера согласно варианту осуществления настоящего изобретения. Видеодекодер 550, главным образом, включает в себя кодер 700 улучшенного слоя и кодер 600 базового слоя. Конфигурация кодера 600 базового слоя описывается далее.
Блок 610 декодирования по энтропии без потерь декодирует поток битов базового слоя для того, чтобы извлечь данные текстуры и данные движения (к примеру, вектор движения, информацию о сегментах, номер опорного кадра и т.д.) в кадре базового слоя.
Обратный квантователь 620 обратно квантует данные текстуры. Обратное квантование - это инверсия квантования, выполняемого в видеокодере 500, и является процессом восстановления значений из соответствующих индексов квантования, созданных в ходе процесса квантования с помощью таблицы квантования, используемой в ходе процесса квантования.
Обратный преобразователь 630 выполняет обратное пространственное преобразование обратно квантованного результата для того, чтобы восстановить остаточный кадр. Обратное пространственное преобразование - это обратный процесс пространственного преобразования, выполняемого преобразователем 320 в видеокодере 500. Обратное DCT или обратное коротковолновое преобразование может быть использовано для обратного пространственного преобразования.
Блок 610 декодирования по энтропии также предоставляет данные движения, в том числе вектор движения mv, компенсатору 660 движения.
Компенсатор 660 движения выполняет компенсацию движения в ранее восстановленном видеокадре, т.е. опорном кадре, предоставленном буфером 650 кадров для того, чтобы сгенерировать скомпенсированный по движению кадр.
Сумматор 615 суммирует остаточный кадр, восстановленный обратным преобразователем 630, и скомпенсированный по движению кадр, сгенерированный компенсатором 660 движения для того, чтобы восстановить видеокадр базового слоя. Восстановленный видеокадр может быть временно сохранен в буфере 650 кадров и может быть предоставлен компенсатору 660 движения для восстановления последующих кадров.
Восстановленный текущий кадр Fc' подается в декодер 700 улучшенного слоя после прохождения через повышающий дискретизатор 680. Таким образом, если базовый слой имеет такое же разрешение, как улучшенный слой, повышающая дискретизация может быть пропущена. Если видеоинформация базового слоя не содержит информации об области, которая представлена в видеоинформации улучшенного слоя, повышающая дискретизация также может быть пропущена.
Далее описывается конфигурация декодера 700 улучшенного слоя. Блок 710 декодирования по энтропии без потерь декодирует поток битов улучшенного слоя для того, чтобы извлечь данные текстуры для несинхронизированного кадра.
Затем извлеченные данные текстуры восстанавливаются в остаточном кадре, по мере того как они проходят через обратный квантователь 720 и обратный преобразователь 730. Обратный квантователь 720 выполняет аналогичные функции/операции, что и обратный квантователь 620 в декодере 600 базового слоя.
Сумматор 715 добавляет восстановленный остаточный кадр к кадру базового слоя, предоставленному декодером 600 базового слоя для того, чтобы восстановить кадр.
Процесс, проиллюстрированный на фиг.5, 8, 10, 12 или 15, может быть выполнен для обратного преобразователя 730 в декодере 700 улучшенного слоя для того, чтобы восстановить остаточный кадр. Чтобы определить, указываются ли ссылками декодированные данные декодированного кадра базового слоя в данных улучшенного слоя, выполняется проверка с остаточными данными или данными движения, составляющими кадр базового слоя. Если остаточные данные базового слоя меньше Thresholdresidual, как описано выше со ссылкой на фиг.5, флагу остаточного предсказания присваивается значение 0, поскольку остаточные данные базового слоя не указываются ссылками в остаточных данных улучшенного слоя. Дополнительно, как описано выше со ссылкой на фиг.8, флагу предсказания движения может быть присвоено значение 0, поскольку вектор движения базового слоя может не указываться ссылками, если разность между вектором движения базового слоя и вектором движения из пространственно соседней области меньше ThresholdMotion.
Альтернативно, как описано выше со ссылками на фиг.10, 12 или 15, может быть определено, могут ли остаточные данные базового слоя указываться ссылками при предсказании остаточных данных улучшенного слоя в зависимости от того, равна ли энергия остаточных данных базового слоя или значение CBP равно 0. Поскольку кодер выполняет кодирование с помощью различных методик для того, чтобы повысить эффективность кодирования, флаг остаточного предсказания может быть получен с помощью способа декодирования, соответствующего надлежащему способу кодирования.
Если применяется процесс декодирования, проиллюстрированный на фиг.15, анализатор 705 получает значение CBP из потока битов улучшенного слоя для того, чтобы проверить, существует ли значение 1 в рамках бита. Анализатор 705 может определить, имеют ли остаточные данные ненулевые пиксели, на основе шаблона кодированных блоков. Поскольку этот процесс такой же, как проиллюстрированный на фиг.15, его подробное описание не приводится.
Анализатор 705 может определять, имеют ли остаточные данные ненулевые пиксели, с помощью baseResidualAvailLuma8·8Blk[0...3], а также baseResidualAvailChroma. Анализатор 705 получает бит CBP для того, чтобы выделить 4 самых младших бита и 2 более старших бита параметрам CodedBlockPatternLuma и CodedBlockPatternChroma соответственно. Затем анализатор 705 проверяет, имеет ли, по меньшей мере, один из четырех бит в CodedBlockPatternLuma значение 1, и больше ли 0 значение CodedBlockPatternChroma. Если, по меньшей мере, один из четырех бит имеет значение 1 или значение CodedBlockPatternChroma больше 0, анализатор 705 определяет, что все остаточные данные имеют, по меньшей мере, один ненулевой пиксель, и задает значение ctxIdxInc равным 1; в противном случае он задает значение ctxIdxInc равным 0. Блок 710 декодирования по энтропии выполняет декодирование по энтропии с помощью значения ctxIdxInc, заданного анализатором 705.
Хотя в вышеприведенном описании декодер 700 улучшенного слоя, показанный на фиг.17, выполняет декодирование с помощью предсказания Intra_BL из кадра базового слоя, специалисты в данной области техники должны понимать, что декодирование может быть выполнено посредством методики предсказания Inter или предсказания Intra, как описано со ссылкой на фиг.2.
Настоящее изобретение обеспечивает увеличенный коэффициент сжатия посредством определения того, предсказываются ли данные улучшенного слоя из кадра базового слоя.
Специалисты в данной области техники должны понимать, что различные модификации и изменения могут быть выполнены в вариантах осуществления без отступления от области применения настоящего изобретения. Поэтому следует понимать, что вышеприведенный вариант осуществления является не ограничивающим, а иллюстративным во всех аспектах. Область применения настоящего изобретения определяется прилагаемой формулой изобретения, а не описанием изобретения. Все модификации и изменения, получаемые из области применения и духа формулы изобретения и ее эквивалентов, должны рассматриваться как включенные в область применения настоящего изобретения.
Изобретение относится к кодированию и декодированию видеосигнала и, более конкретно, к адаптивному выбору контекстной модели для кодирования по энтропии и видеодекодера. Задачей изобретения является собственно создание способа и устройства эффективного сжатия флагов. Предложен способ кодирования флага остаточного предсказания, указывающего, предсказываются ли остаточные данные для блока улучшенного слоя многослойного видеосигнала из остаточных данных блока нижнего слоя, соответствующих остаточным данным для блока улучшенного слоя, включает в себя этапы, на которых вычисляют энергию остаточных данных блока нижнего слоя, определяют способ кодирования флага остаточного предсказания согласно энергии и кодируют флаг остаточного предсказания с помощью определенного способа кодирования. 10 н. и 56 з.п. ф-лы, 17 ил.
HEIKO SCHWARZ et al | |||
Печь для непрерывного получения сернистого натрия | 1921 |
|
SU1A1 |
RU 2001123542 A, 27.06.2003 | |||
EP 1422828 A1, 26.05.2004 | |||
Легководолазный аппарат | 1959 |
|
SU126381A1 |
US 2004042549 A1, 04.03.2004 | |||
WO 2004073312 A1, 26.08.2004 | |||
ЕР 1422828 A1, 26.05.2004 | |||
Ускоритель торможения | 1926 |
|
SU5898A1 |
ISO/IEC |
Авторы
Даты
2008-10-20—Публикация
2006-04-18—Подача