РОДСТВЕННЫЕ ЗАЯВКИ
Данная заявка притязает на приоритет предварительной заявки на патент США № 60/786,799, поданной 27 марта 2006 года, "Способ и устройство для эффективного кодирования синтаксических элементов при сжатии видео", которая включена в настоящее описание в качестве ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящие системы и способы относятся, в общем, к сжатию видеосигналов. Более конкретно, данные системы и способы относятся к кодированию и декодированию информации и связаны с технологией сжатия видеоизображений.
УРОВЕНЬ ТЕХНИКИ
Под видеокомпрессией подразумевается сжатие цифровых видеоданных. Видеокомпрессия используется для эффективного кодирования видеоданных в форматах видеофайлов и форматах потокового и широковещательного видео. Компрессия представляет собой преобразование данных в формат, который имеет меньшее количество битов, который может храниться или передаваться с большей эффективностью. Обратным понятием к понятию компрессии является декомпрессия, которая дает на выходе точное воспроизведение первичных данных.
Сегодня некоторые методы видеокомпрессии используют определенный тип дискретного преобразования, такой как, например, дискретное косинусоидальное преобразование (Discrete Cosine Transform, CT) для уменьшения остаточной пространственной избыточности при предсказании разностного сигнала, который генерируется с использованием либо временной, либо пространственной технологии прогнозирования. Некоторые технологии видеокомпрессии также включают в себя квантование. Квантование может быть скалярным или векторным. После квантования коэффициенты квантования могут быть закодированы с помощью энтропийного кодирования и помещены в сжатую двоичную последовательность. Сжатая двоичная последовательность затем посылается на видеодекодер, который распаковывает двоичную последовательность и восстанавливает близкое приближение к исходным видеоданным.
Технологии видеокомпрессии могут быть полезны потребителям различных медиа. Например, при проектировании широковещательных систем цифровое телевидение может быть практически реализуемо с помощью сжатия видеосигнала. Телевизионные (ТВ) станции могут передавать в формате HDTV множество виртуальных каналов на одном и том же физическом канале. Цифровое видеовещание может использовать стандарт MPEG (Moving Picture Experts Group - экспертная группа по движущимся изображениям), например, формат видеокомпрессии стандарта MPEG-2. Однако начинают появляться новые стандарты видеокомпрессии, такие как H.264/MPEG-4 и VC-1.
К сожалению, известные системы и способы кодирования информации в видеокомпрессии не лишены различных недостатков. Следовательно, улучшенные системы и способы кодирования информации при сжатии видеосигналов могут дать дополнительные преимущества.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг. 1 представляет собой графическую схему, иллюстрирующую способ кодирования информации;
Фиг. 2 представляет собой структуру строки двоичных символов, которая может быть сжата с использованием кодирования кодами с чередованием длин;
Фиг. 3 представляет собой дополнительную структуру схемы кодирования, которая может быть использована вместе с настоящими системами и способами;
Фиг. 4 представляет собой блок-схему, показывающую структуру ограничения длины серии, которая кодируется;
Фиг. 5 представляет собой блок-схему, показывающую структуру кодирования синтаксического элемента отдельно взятого типа;
Фиг. 6 представляет собой блок-схему, иллюстрирующую дополнительную разновидность кодирования синтаксического элемента отдельно взятого типа;
Фиг. 7 представляет собой графическую схему, показывающую структуру способа кодирования битов кодового слова переменной длины (CBP) сигнала яркости в улучшающем слое;
Фиг. 8 представляет собой блок-схему, иллюстрирующую структуру способа, описанного в соответствии с Фиг.7;
Фиг. 9 представляет собой блок-схему, иллюстрирующую дополнительную структуру кодирования кодом переменной длины в улучшающем слое;
Фиг. 10 представляет собой блок-схему, иллюстрирующую дополнительную разновидность кодирования CBP цветности с использованием кода с чередованием длин; и
Фиг. 11 представляет собой блок-схему, иллюстрирующую основные аппаратные компоненты, обычно используемые для обработки цифровых изображений и/или цифрового видео.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
Описаны способ и система кодирования информации, связанные с технологией сжатия видеоизображений. Видеопоследовательность обрабатывается во множество кадров. Каждый кадр из множества кадров обрабатывается во множество макроблоков. Прогнозное значение исходного видеосигнала, которое является частью макроблока в текущем кадре, формируется из видеопоследовательности. Разностный сигнал формируется путем вычитания прогнозного значения исходного видеосигнала из исходного видеосигнала в текущем кадре. Применяется преобразование разностного сигнала. Множество коэффициентов преобразования квантуется. Устанавливается символ, по меньшей мере, одного синтаксического элемента, который определяет характеристику разностного сигнала. Символы, по меньшей мере, одного синтаксического элемента одной и той же категории кодируются совместно.
Может кодироваться кодовое слово переменной длины. Кодовое слово переменной длины может быть закодировано в виде серий нулевых и серий ненулевых значений. Кодовое слово переменной длины может быть закодировано в виде только серий нулей. Символ первоначального значения может быть закодирован, чтобы указать первоначальное значение серий нулевых и серий ненулевых величин. Символ перехода может быть вставлен для указания того, как значение символа в текущей последовательности меняет значение символа в следующей серии символов, по меньшей мере, одного синтаксического элемента. Максимальная длина серии может быть определена символами, по меньшей мере, одного кодируемого синтаксического элемента.
Может быть закодирован символ пропуска макроблока. Может быть закодирован символ типа макроблока. Символ параметра дельта-квантования также может быть закодирован.
Символы, по меньшей мере, одного синтаксического элемента могут быть сканированы во множестве изображений. Может быть определен бит признака пропуска, и кодирование определенного набора символов, по меньшей мере, одного синтаксического элемента может быть пропущено. Бит признака пропуска может быть определен на улучшающем слое. Символы, по меньшей мере, одного из синтаксических элементов внутри улучшающего слоя могут быть закодированы, основываясь на соответствующих символах синтаксического элемента внутри базового слоя.
Также раскрыто устройство, которое сконфигурировано для кодирования информации, связанной с видеокомпрессией. Устройство включает в себя процессор и память, электронно-связанную с процессором. Команды хранятся в памяти. Осуществляется прием видеопоследовательности. Видеопоследовательность обрабатывается во множество кадров. Каждый кадр из множества кадров обрабатывается во множество макроблоков. Прогнозное значение исходного видеосигнала, которое является частью макроблока, формируется в текущем кадре из видеопоследовательности. Разностный сигнал формируется путем вычитания прогнозного значения исходного видеосигнала из исходного видеосигнала в текущем кадре. К разностному сигналу применяется преобразование. Множество коэффициентов преобразования квантуется. Устанавливается символ, по меньшей мере, одного синтаксического элемента, который определяет характеристику разностного сигнала. Символы, по меньшей мере, одного синтаксического элемента одной и той же категории кодируются совместно.
Также раскрывается информация о машиночитаемых носителях памяти, включающих в себя исполняемые команды для кодирования информации, связанных с видеокомпрессией. Осуществляется прием видеопоследовательности. Видеопоследовательность обрабатывается во множество кадров. Каждый кадр из множества кадров обрабатывается во множество макроблоков. Прогнозное значение исходного видеосигнала, которое является частью макроблока, формируется в текущем кадре из видеопоследовательности. Разностный сигнал формируется путем вычитания прогнозного значения исходного видеосигнала от исходного видеосигнала текущего кадра. К разностному сигналу применяется преобразование. Квантуется множество коэффициентов преобразования. Идентифицируется символ, по меньшей мере, одного синтаксического элемента, который определяет характеристику разностного сигнала. Символы, по меньшей мере, одного синтаксического элемента одной и той же категории кодируются совместно.
Также раскрыт способ декодирования информации, связанный с видеокомпрессией. Осуществляется прием закодированной видеопоследовательности. Множество символов одной категории декодируются вместе. Множество коэффициентов преобразования деквантуется. К разностному сигналу применяется обратное преобразование. Формируется декодированная видеопоследовательность.
Также раскрыто электронное устройство для декодирования информации, связанное с видеокомпрессией. Электронное устройство включает в себя процессор и память, электронно-связанную с процессором. Команды хранятся в памяти. Осуществляется прием закодированной видеопоследовательности. Множество символов одной и той же категории декодируются вместе. Множество коэффициентов преобразования деквантуются. К разностному сигналу применяется обратное преобразование. Формируется декодированная видеопоследовательность.
Также раскрыто устройство, сконфигурированное для кодирования информации, связанное с видеокомпрессией. Устройство включает в себя средство для обработки и средство для приема видеопоследовательности. Раскрыты средство для обработки видеопоследовательности во множество кадров и средство обработки каждого кадра из множества кадров во множество макроблоков. Средство для формирования прогнозного значения исходного видеосигнала, которое является частью макроблока, в текущем кадре, из видеопоследовательности, а также раскрыты средство для формирования разностного сигнала путем вычитания прогнозного значения исходного видеосигнала из исходного видеосигнала в текущем кадре. Раскрыты средство для применения преобразования разностного сигнала, и средство квантования множества коэффициентов преобразования. Также раскрыты средство для идентификации символа, по меньшей мере, одного синтаксического элемента, который определяет характеристику разностного сигнала и средство для кодирования символов, по меньшей мере, одного синтаксического элемента одной и той же категории вместе.
Различные особенности систем и способов описываются со ссылкой на рисунки, где одинаковые номера ссылок указывают на идентичность или функциональное подобие элементов. Элементы настоящих систем и способов, как описано и показано на рисунках в этом документе, могут быть скомпонованы и спроектированы в широком разнообразии конфигураций. Таким образом, детальное описание ниже не предполагает ограничить рамки заявленных систем и способов, а просто позволяет продемонстрировать их структуру.
Многие элементы конфигураций, раскрываемых здесь, могут быть применены как компьютерное ПО, электронное оборудование или комбинации обоих (см. Фиг. 11). Чтобы ясно проиллюстрировать данную взаимозаменяемость оборудования и ПО, различные компоненты будут описываться, в основном, в терминах их функциональности. Применение данной функциональности в виде ПО или в виде оборудования зависит от особенностей приложения и ограничений конструкции, налагаемых на всю систему. Опытные специалисты могут реализовать описанную функциональность различными способами для каждого отдельного приложения, но такие решения по реализации не могут расцениваться как выходящие за рамки настоящих систем и способов.
Там, где описанная функциональность применяется как компьютерное программное обеспечение (ПО), такое ПО может включать в себя любой тип компьютерных команд или компьютерный/машинный исполняемый код, помещенный внутри устройства памяти и/или передаваемый в виде электронных сигналов через системную шину или сеть. ПО, которое реализует функциональность, связанную с компонентами, описываемыми здесь, может состоять из единственной команды, или многих команд или может распространяться через несколько различных кодовых сегментов среди других программ и через несколько устройств памяти.
В видеокодировании применяется иерархическое кодирование видеокадров. Каждый кадр делится на макроблоки. Каждый макроблок обычно состоит из блока яркости (Y) размера 16×16. Макроблок также состоит из блока цветности Cb и блока цветности Cr. Размер блока цветности зависит от формата цвета. Для формата цвета YCbCr420 размер каждого блока цветности составляет 8×8. Для целей этого приложения видео кодируется в пространстве цветов YCbCr с помощью формата YCbCr420. Однако данные системы и способы равным образом применимы к видеокодированию также и в других цветовых пространствах и форматах.
В устройстве видеокодирования, после типовых процессов видеокомпрессии, таких как предсказание, преобразование и квантование, следующим шагом является энтропийное кодирование синтаксических элементов и коэффициентов квантования для формирования двоичной последовательности. В видеодекодере выполняются обратные процессы. Синтаксические элементы и коэффициенты квантования декодируются из двоичной последовательности. Затем выполняются обратное квантование и обратное преобразование. В конце восстановленный разностный сигнал добавляется к прогнозному сигналу для реконструкции видеосигнала.
Одним из примеров синтаксического элемента является кодовое слово переменной длины (Coded Block Pattern - CBP). CBP указывает на наличие ненулевых коэффициентов квантования в макроблоке и то, как они распределяются в слое блока. Согласно стандартам H.264/AVC, если макроблок не пропускается кодирующим устройством, то CBP яркости и CBP цветности пересылаются в виде двоичной последовательности. CBP яркости состоит из четырех битов, каждому из четырех 8×8 блоков соответствует один бит. Если бит CBP яркости равен нулю, это означает, что соответствующий блок 8×8 не имеет ненулевых коэффициентов. Поэтому CBP яркости может иметь значение от 0 дo 15, а CBP цветности может иметь значение от 0 до 2. Макроблок CBP образован из СВР яркости и СВР цветности и преобразован в кодовое число. Кодовое число кодируется с использованием, например, экспоненциального кода Голомба, а затем добавляется к двоичной последовательности. Однако этот способ кодирования может быть неоптимальным, поскольку не используется корреляция между кодовыми словами переменной длины (СВР) соседних макроблоков, так как каждый макроблок CBP передается независимо.
В настоящее время Объединенная Видеогруппа (Joint Video Team - JVT), которая состоит из экспертов по видеокодированию из ISO/IEC MPEG и ITU-T VCEG, работает над углублением стандарта H.264/ AVC - масштабируемым видеокодированием (Scalable Video Coding - SVC). Последнее усовершенствование, предлагаемое JVT, предусматривает двоичную последовательность, которая обладает масштабируемостью по отношению сигнал/шум (SNR - Signal Noise Ratio), масштабируемостью пространственного разрешения (fine granularity scalability - FGS), пространственной масштабируемостью и временной масштабируемостью. В слое грубой SNR масштабируемости и пространственной масштабируемости СВР яркости и СВР цветности кодируются таким же образом, каким они кодируются на базовом слое, таким образом, в этих слоях имеются те же проблемы, что и в базовом слое.
На слое FGS один из способов кодирования кодового слова переменной длины яркости заключается в разделении четырех СВР битов яркости внутри макроблока на две группы, основываясь на СВР яркости на базовом слое. Биты СВР яркости в улучшающем слое (Type-0 CBP биты), соответствующие биты СВР яркости которых на базовом слое равны нулю, кодируются отдельно от битов СВР яркости в улучшающем слое (Type-1 CBP биты), соответствующие биты СВР яркости которых на базовом слое не равны нулю. Основываясь на значении СВР яркости на базовом слое, число битов Type-0 и число битов Type-1 не может быть фиксированным от макроблока к макроблоку. Один из подходов заключается в кодировании либо битов Type-0, либо битов Type-1 с использованием кодов фиксированной длины, если число битов в группе меньше трех. Если количество битов в группе больше или равно трем, может использоваться кодирование кодами переменной длины (variable length coding - VLC). Также эта схема кодирования требует возможности поддержки битов CBP, потому что таблица кодов VLC, используемая для кодирования битов Type-0 или Type-1, выбирается на основе оценки текущей вероятности. Эта схема кодирования присутствовала в ранней версии масштабируемого видеокодирования (SVC).
Проблема такой схемы кодирования для синтаксических элементов, таких как СВР яркости в слое FGS, в ее сложности. Операции, такие как группирование битов СВР яркости, поддержание вероятностных моделей и выбор таблиц VLC могут включать в себя громоздкие вычисления. Эффективность кодирования может быть низкой из-за того, что корреляция между сходными синтаксическими элементами в соседних макроблоках не используется.
Фиг. 1 представляет собой графическую схему, иллюстрирующую способ 100 кодирования информации. В данной разновидности кодируемая информация включает в себя видеопоследовательность. Способ 100 может быть выполнен видеокодирующим устройством, и действие, обратное способу 100, может быть выполнено видеокодером. Кодирующее устройство представляет собой устройство, преобразующее сигнал или данные в кодовую последовательность. Декодер может затем воспроизвести восстановленную версию оригинального сигнала или данных из кода. При сжатии без потерь реконструированная версия исходного сигнала или данных идентична исходному сигналу или данным. При сжатии с потерями восстановленная версия исходного сигнала или данных представляет собой приближение исходного сигнала или данных. Кодирующее устройство и декодер могут быть совместно названы видеокодеком, который кодирует изображение или видеопоследовательность в сжатую форму и декодирует сжатый сигнал для получения копии или приближения исходной последовательности. В настоящем описании некоторые аспекты определенной конфигурации описаны с точки зрения кодирующего устройства. Специалисты по видеокомпрессии легко поймут, что декодер может выполнять обратные процессы, чтобы реконструировать сигнал или данные, закодированные кодирующим устройством.
Способ 100 начинается с приема кодирующим устройством 102 видеопоследовательности. Видеопоследовательность обрабатывается 104 во множество кадров. Каждый кадр внутри множества из кадров далее обрабатывается 105 во множество макроблоков. Кодирующее устройство начинает сжимать видеопоследовательность, используя подобие между соседними видеокадрами или между пикселями одного кадра, чтобы сконструировать 106 прогнозное значение исходного видеосигнала, который представляет собой часть макроблока в текущем видеокадре. Если прогнозное значение образовано из одного или более предыдущих и последующих кадров, это называют временным предсказанием. Если прогнозное значение образуется из пикселей того же кадра, это называют пространственным предсказанием. Разностный сигнал затем формируется 108 путем вычитания прогнозного сигнала от сигнала, который кодируется.
Способ 100 продолжается путем применения преобразования 110 к разностному сигналу для уменьшения пространственной избыточности. Преобразование конвертирует прогнозное значение разностных образцов в другой домен, где они представляются в виде коэффициентов преобразования. Коэффициенты квантуются 112, чтобы удалить несущественные значения, оставляя малое число значащих коэффициентов, что обеспечивает более компактное представление разностного сигнала.
После предсказания, преобразования и квантования кодирующее устройство определяет 114 символ, по меньшей мере, одного синтаксического элемента, который определяет характеристики разностного сигнала. Например, синтаксический элемент может включать в себя кодовое слово переменной длины, которое указывает на существование ненулевых коэффициентов в макроблоке после квантования разностного сигнала.
Кодирующее устройство кодирует 116 идентифицированные символы синтаксических элементов одной и той же категории вместе. В данном аспекте энтропийное кодирующее устройство выполняет энтропийное кодирование. Энтропийное кодирующее устройство преобразует серии символов, представляющие синтаксические элементы видеопоследовательности, и включает их 118 в сжатый двоичный поток, удобный для хранения и передачи. Примеры синтаксических элементов могут включать в себя mb_skip_flag (показывает, должен ли макроблок быть пропущен кодирующим устройством; если макроблок пропускается, декодер извлекает вектор(ы) движения векторов в соседних макроблоках и устанавливает все коэффициенты квантования для макроблока равными 0), mb_type (определяет, кодируется ли макроблок в интра- или интермоде; определяет размер разбиения макроблока), sub_mb_type (определяет размер разбиения субмакроблока для каждого субмакроблока), coded_блок_pattern (идентифицирует, как распределяются коэффициенты ненулевого преобразования), mb_qp_delta (изменяет параметр квантования) и residual (закодированные квантованные коэффициенты преобразования, соответствующие сэмплам разностного сигнала после предсказания).
Способ 100 кодирует 116 символы синтаксического элемента одной и той же категории совместно и включает 118 закодированную информацию в двоичную последовательность. В данной конфигурации кодирующее устройство кодирует множество синтаксических элементов одной и той же категории совместно. Например, в рамках стандарта H.264 для видеокодирования и энтропийного кодирования, когда применяется контекстное адаптивное кодирование с переменной длинной (Context-based Adaptive Variable Length Coding - CAVLC), вместо отсылки mb_skip_flag для каждого индивидуального макроблока используется синтаксический элемент mb_skip_run. Если mb_skip_run имеет значение "n," то имеется "n" пропущенных макроблоков, за которыми следует один макроблок, который не пропускается. Эта информация передается путем включения экспоненциальным кодом Голомба незначащего числа "n" в сжатую двоичную последовательность. Определение экспоненциального кода Голомба может быть найдено в секции 9.1 спецификации стандарта H.264/AVC. Еще один пример энтропийного кодирующего устройства, которое кодирует совокупность синтаксических элементов одной и той же категории, совместно показан на Фиг. 2.
Фиг. 2 представляет собой одну из конфигураций строк двоичных символов 200, которые могут быть сжаты с использованием кодирования кодом с чередованием длин в соответствии со способом, описанным на Фиг. 1. Как показано, строка 200 включает в себя серию из 6 последовательных нулей 202, семи единиц 204 и трех нулей 206, а также одной единицы 208. Серия из шести нулей 202, сгруппированных вместе, чтобы получилась длина серии R = 6. R, может быть затем закодировано энтропийным кодирующим устройством. В данном аспекте "R-1" кодируется с использованием экспоненциального кода Голомба, поскольку минимальным значением R является 1, и, как принято в стандарте H.264/AVC, экспоненциальный код Голомба используется для кодирования неотрицательных чисел, начинающихся с 0. Например, значение R "6" может быть закодировано с использованием экспоненциального кода Голомба как "00110." Серия из семи последовательных единиц 204, сгруппированных вместе, чтобы получилась длина серии R = 7. Серия этой длины затем кодируется энтропийным кодирующим устройством с использованием экспоненциального кода Голомба как "00111." Серия из трех нулей 206 и серия, включающая в себя одну единицу 208, также кодируются подобным образом. Строка двоичных символов 200 сжимается в двоичную последовательность "00110 00111 011 1." Эта двоичная последовательность затем может быть прочитана декодером для воспроизведения строки двоичных символов. В декодере символ "S", дешифрованный из двоичной последовательности, может быть преобразован в последовательность повторяющихся символов R, используя равенство R=S+1.
Как показано на Фиг. 2, серии нулей кодируются вместе, так же как и серии ненулевых значений. В одной конфигурации энтропийное кодирующее устройство кодирует последовательность повторяющихся символов с использованием экспоненциального кода Голомба. Во второй конфигурации последовательность повторяющихся символов может быть закодирована кодом переменной длины другого типа или даже с использованием другой схемы кодирования.
Для кодирования кодом с чередованием длин, как показано на Фиг. 2, начальное значение может быть закодировано, чтобы помочь извлечь значения двоичных символов, кодируемых в первой серии. В одной конфигурации первоначальное значение устанавливается равным обратному значению того двоичного символа, который кодируется в первой серии. Например, если двоичный символ, который должен быть закодирован в первой серии - 0, то первоначальное значение, которое устанавливается - это единица 1. Кодирование первоначального значения полезно, потому что в процессе декодирования синтаксических элементов значения двоичных символов меняются каждый раз, когда декодируется новая серия. В следующем примере, показанном на Фиг. 2, первоначальным значением, которое нужно закодировать, является 1. Когда декодер определяет новую серию из 6 символов 202 после первоначальной величины, значение синтаксических элементов меняется с первоначальной величины 1 на 0, и декодер декодирует шесть значений как нули. После детектирования новой последовательности из семи символов 204 значение синтаксического элемента меняется с 0 на 1, и декодер декодирует серию из семи значений как семь единиц. Этот процесс продолжается, пока декодер не опредит дополнительную последовательность символов для декодирования.
Фиг. 3 является другой разновидностью схемы кодирования, которая может быть использована в соединении со способом, описанным на Фиг. 1. Этот дополнительный аспект может называться кодированием нулевых серий. Эта схема использовалась в стандарте H.264/AVC при кодировании флагов mb_skip_flag. На Фиг. 3 показана строка двоичных значений 300, которые подлежат компрессии. При кодировании нулевых серий кодируется только последовательность нулей перед ненулевым значением. В данной конфигурации используется экспоненциальный код Голомба для кодирования нулевой серии. Как показано, имеется четыре нулевых значения 302 перед первым ненулевым значением 304. Четырем нулям 302 и первому ненулевому значению 304 присваивается значение "4," которое кодируется как "00101" с использованием экспоненциального кода Голомба. Этот код затем добавляется к двоичной последовательности. Следующим пяти нулям 306, после которых идет второе ненулевое значение 308, присваивается значение "5", которое кодируется как "00110" с использованием экспоненциального кода Голомба. Этот код подобным образом добавляется к двоичной последовательности, которая посылается на декодер. Как показано, третья ненулевая величина 310 следует сразу за второй ненулевой величиной 308. Третьей ненулевой величине 310 присваивается значение "0," которое может быть закодировано как "1" с использованием экспоненциального кода Голомба и добавлено к двоичной последовательности. Оставшимся двум нулям 312, за которыми следует четвертое ненулевое значение 314, присваивается значение "2", которое кодируется как "010" с использованием экспоненциального кода Голомба. На декодер направляется получившаяся двоичная последовательность "00101 00110 1 011." Кодирование нулевых серий, как показано на Фиг. 3, не требует включения в двоичную последовательность первоначального значения метки.
Фиг. 4 иллюстрирует одну конфигурацию 400 ограничения длины серии, которая должна быть закодирована. Для видео высокого разрешения максимальная длина серии для некоторых синтаксических элементов может быть очень высокой. Например, для видео с разрешением 1920x1080 максимальная длина серии для кодового слова переменной длины (CBP) яркости может составлять (1920×l080)/64=32,400. Если энтропийное кодирующее устройство использует экспоненциальный код Голомба для кодирования этой серии символов, то код будет состоять из 29 битов. В данном аспекте может быть определен верхний предел максимальной длины серии (MR), которая должна быть закодирована.
Если длина серии, которая кодируется декодером, больше чем заданная MR, например "MR+1," действительная длина серии равняется MR плюс дополнительная длина серии, которая декодируется из следующей кодовой последовательности двоичного потока и т.д. Например, Фиг. 4 показывает пять различных длин серий 402, 404, 406, 408, и 410, которые должны быть закодированы с использованием экспоненциального кода Голомба. Эти последовательности символов состоят из трех нулей 402, 13 единиц 404, 14 нулей 406, 15 единиц 408, и 31 нуля 410. В данной конфигурации верхний предел MR, который может быть декодирован из одного кодированного символа, установлен равным 14. Серия последовательности из трех нулей 402 может быть закодирована как "011." Серия последовательности из 13 единиц 404 может быть закодирована как "0001101." Серия из 14 нулей 406 может быть закодирована как "0001110." Оставшиеся две серии из 15 единиц 408 и 31 нуля 410 больше максимально допустимого предела MR, равного 14. В данной конфигурации длина серии из 15 единиц 408 кодируется с помощью двух экспоненциальных кодов Голомба, "0001111 1." Длина серии декодируемой из первого кода "0001111" равняется 15. Однако верхний предел MR определен как 14. Декодируемое значение 15 подразумевает, что длина текущей серии по меньшей мере равна 14 и что дополнительный экспоненциальный код Голомба должен быть декодирован, чтобы получить серию действительной длины. Дополнительная длина серии, декодируемая из следующего кода, равна 1. После декодирования действительная длина серии равняется MR, или 14, плюс длина любой дополнительно декодированной серии, например, 1. Как таковая, длина декодируемой серии равняется 15.
В качестве дальнейшего примера рассмотрим последовательность из 31 нуля 410, которую надо закодировать. Длина серии из 31 нулей 410 кодируется тремя экспоненциальными кодами Голомба, "0001111 0001111 011." Длина серии декодируемой из первого кода равняется 15. Поскольку верхний предел MR равен 14, декодируемое значение 15 подразумевает, что действительная длина составляет, по меньшей мере, 14 и что дополнительный экспоненциальный код Голомба должен быть декодирован и затем добавлен к ранее декодируемой последовательности повторяющихся символов. Длина серии, декодируемой вторым кодом, также равна 15, что подразумевает, что действительная длина серии составляет, по меньшей мере, 28 (14+14) и что дополнительный экспоненциальный код Голомба должен быть декодирован и затем добавлен к предыдущей декодированной последовательности повторяющихся символов. Длина серии декодируемого из третьего кода равна 3. Так как это ниже максимально допустимого предела MR, равного 14, декодирование этой последовательности прекращается. Длины декодируемых серий затем складываются вместе (14+14+3), чтобы воспроизвести последовательность серий из 31 нуля.
Фиг. 5 представляет собой блок-схему, иллюстрирующую одну из структур 500 кодирования специфического типа синтаксических элементов, coded_block_pattern (CBP), использующую метод кодирования кодами с чередованием длин, как описано на Фиг. 1 и 2. Несмотря на то что некоторые из следующих иллюстраций и описаний обращены на кодирование синтаксического элемента CBP, не предполагается, что данные системы и способы ограничиваются только кодированием и декодированием таких синтаксических элементов.
Как объяснялось ранее, синтаксический элемент СВР идентифицирует, какие блоки (яркости и цветности) 8×8 содержат ненулевые коэффициенты преобразования. Фиг. 5 иллюстрирует пять отдельных 16×16 блоков яркости в пяти макроблоках 504, 506, 508, 510, и 512. Каждый 16×16 блок яркости далее разделяется на 4 блока яркости 8×8. Каждый блок яркости 8×8 может содержать или не содержать ненулевые коэффициенты преобразования. Благодаря корреляции с ближайшими блоками СВР биты яркости соседних блоков 8×8 часто имеют одно то же значение. В изображенной конфигурации энтропийное кодирующее устройство используется для кодирования серий последовательностей символов, указывающих на наличие или отсутствие в блоке яркости 8×8 закодированных коэффициентов преобразования. В данной конфигурации символ "0" указывает, что данный блок яркости 8×8 не содержит коэффициентов преобразования, тогда как символ "1" указывает, что блок яркости может содержать ненулевые закодированные коэффициенты преобразования. В данном случае энтропийное кодирующее устройство кодирует серию символов с использованием Экспоненциального кода Голомба.
Как показано на Фиг. 5, энтропийное кодирующее устройство кодирует серию последовательностей из символов с помощью зигзагообразного шаблона. Первые три блока яркости 8×8 из макроблока 504 содержат символ "0", чтобы указать, что эти блоки не содержат закодированных коэффициентов преобразования. Энтропийное кодирующее устройство кодирует серию "3" с использованием экспоненциального кода Голомба, что приводит к коду "011", который добавляется к потоку битов. Четвертый блок яркости 8×8 из первого 16×16 макроблока 504 содержит символ "1", чтобы указать на то, что блок яркости 8×8 может содержать закодированные ненулевые коэффициенты преобразования. Как показано, все четыре 8×8 блока яркости макроблока 506 и первый 8×8 блок яркости макроблока 508 содержат символ "1." Энтропийное кодирующее устройство кодирует серию "6" с использованием экспоненциального кода Голомба как "00110" и этот код затем добавляется к потоку битов. Серия "6" закодирована потому, что последующая серия единиц имеет место на протяжении шести 8×8 блоков яркости с использованием зигзагообразного шаблона. Энтропийное кодирующее устройство продолжает кодировать символы в оставшихся 8×8 блоках яркости макроблока 508. Последовательности серий состоят из одного 8×8 блока яркости с символом "0", который кодируется как "1," одного 8×8 блока с символом "1", который кодируется как "1." Последний 8×8 блок яркости макроблока 508, так же как и оставшиеся восемь 8×8 блоков яркости макроблоков 510 и 512, все содержат символ "0." Таким образом, есть последовательность серий из 9 блоков яркости 8×8 с символом "0." Энтропийное кодирующее устройство кодирует серию "9" с использованием экспоненциального кода Голомба как "0001001."
После того как энтропийное кодирующее устройство закодировало СВР яркости пяти проиллюстрированных макроблоков, на декодер посылается следующий поток данных "1 011 00110 1 1 0001001." Первое значение "1" в двоичном потоке представляет первый СВР бит яркости 502, который представляет собой 1-битный флаг значения 1. В данной конфигурации первоначальное значение CBP 502 является обратным значению символов в первой декодируемой последовательности серий.
Процесс декодирования двоичной последовательности, закодированной на Фиг. 5, начинается со считывания декодером первичного CBP 502 значения двоичной последовательности. Это первичное значение поможет кодирующему устройству извлечь значение символов в первой последовательности серий. Следующий код, который декодируется - это "011", который показывает, что длина серии из трех CBP битов в порядке сканирования равна нулю. Следующий код, который декодируется - "00110", который показывает, что длина серии из шести CBP битов в порядке сканирования равны "1," и так далее.
Фиг. 6 представляет собой блок-схему, иллюстрирующую еще одну конфигурацию 600 сканирования битов CBP внутри совокупности макроблоков 604, 606, 608, 610, и 612. Энтропийное кодирующее устройство кодирует последовательности серий таким же образом, как это описано на Фиг. 5, но энтропийное кодирующее устройство может сканировать макроблоки по-разному, так что расстояние от одного 8×8 блока до другого блока минимально, для того чтобы статистически увеличить длину серии и уменьшить число серий, которые кодируются. Начальное значение 602 также закодировано и добавлено к двоичной последовательности, чтобы указать значение первой последовательности серий.
Фиг. 7 представляет собой графическую схему, показывающую структуру способа 700 кодирования СВР яркости в улучшающем слое, например, в таком, как улучшающий слой SNR. В следующем рассмотрении улучшающий слой SNR может быть либо слоем FGS SNR или слоем грубой степени детализации SNR. Если СВР яркости, который кодируется, находится в улучшающем слое SNR, то CBP в улучшающем слое имеет сильную корреляцию с CBP в базовом слое. Способ 700, показанный на Фиг. 7, указывает, должен или нет кодироваться СВР яркости в улучшающем слое.
Способ начинается 702 и производит вычисления 704, если блок 8×8 в базовом слое, соответствующий текущему блоку 8×8 в улучшающем слое, имеет ненулевые коэффициенты преобразования. Если соответствующий блок 8×8 в базовом слое имеет символ "1," указывающий на наличие ненулевых коэффициентов, то способ продолжает определять 706, закодирован ли далее текущий блок 8×8 в улучшающем слое как четыре субблока. Если текущий блок 8×8 в улучшающем слое далее кодируется в четыре субблока, бит яркости СВР текущего 8×8 блока не кодируется 708. С другой стороны, если хотя бы одно из двух условий 704, 706 не соблюдается, бит яркости СВР текущего 8×8 блока явным образом кодируется 710.
Блок 8×8 в базовом слое может содержать символ "1", указывающий, что блок 8×8 в базовом слое имеет ненулевые коэффициенты. Если бит яркости СВР в SNR улучшающего слоя не кодируется и подразумевается, что он имеет значение "1," этот бит сохраняется, так как это значение не должно быть явным образом закодировано. Однако если действительное значение СВР яркости в улучшающем слое равно "0," ошибка в предсказании значения СВР яркости в улучшающем слое может быть исправлена на нижнем синтаксическом слое. Если блок 8×8 в улучшающем слое кодируется как четыре субблока, то для каждого субблока кодируются дополнительные синтаксические элементы в двоичной последовательности для индикации наличия ненулевых коэффициентов в субблоке. Ошибка в предсказании бита яркости СВР в улучшающем слое в блоке 8×8 может быть исправлена в слое субблока со сравнительно небольшими дополнительными затратами. Дополнительное ограничение, проиллюстрированное способом 700 на Фиг. 7, состоит в том, что требуется, чтобы соответствующий блок 8×8 в базовом слое имел бит яркости СВР, указывающий на ненулевые коэффициенты, равно как и блок 8×8 в улучшающем слое, который должен кодироваться как четыре субблока перед тем, как бит СВР блока 8×8 в улучшающем слое не кодируется.
В данной конфигурации кодирование кодом с чередованием длин (Alternating Run Coding) применяется к тем СВР битам улучшающего слоя, где соответствующие им биты яркости СВР на базовом слое равны нулю, или биты яркости СВР улучшающего слоя должны быть явным образом закодированы, потому что блок 8×8 не кодируется как четыре субблока. В данной конфигурации биты яркости СВР на улучшающем слое, которые должны кодироваться, могут кодироваться за два отдельных сканирования. В данной системе кодирования СВР яркости в слое FGS бит яркости СВР, соответствующий бит СВР которого в базовом слое равен 0, называют битом яркости СВР Type-0, а бит яркости СВР, соответствующий бит которого базовом слое равен 1, называют битом яркости СВР Type-1. За каждое сканирование один тип битов яркости СВР кодируется с использованием кода с чередованием длин. Два сканирования могут быть выполнены последовательно, или они могут выполняться одновременно. В другой конфигурации информация базового слоя CBP игнорируется при кодировании СВР яркости в улучшающем слое.
Фиг. 8 представляет собой блок-схему, иллюстрирующую одну из конфигураций 800 способа 700, описанного в соответствии с Фиг. 7. Как показано, пять блоков яркости 16×16 в макроблоках 804, 806, 808, 810, и 812 на улучшающем слое SNR кодируются с помощью энтропийного кодирующего устройства. В данной конфигурации энтропийное кодирующее устройство кодирует биты яркости СВР для каждого блока 8×8 в макроблоках. Как показано, три блока 8×8 в первом макроблоке 804 имеют символ "0", указывающий на отсутствие ненулевых коэффициентов в этих блоках 8×8. Четвертый блок 8×8 804A в первом макроблоке 804 соответствует блоку 8×8 базового слоя, который имеет символ "1", указывающий на присутствие ненулевых коэффициентов. В данной конфигурации четвертый блок 8×8 804A также далее кодируется внутри субблоков (не показаны). Как показано, энтропийное кодирующее устройство пропускает этот четвертый блок 8×8 804A и явно не кодирует бит яркости СВР, связанный с этим четвертым блоком 8×8 804A. Подразумевается, что бит яркости СВР имеет символ "1", так как соответствующий блок 8×8 в базовом слое имеет бит CBP "1", и блок 8×8 804A далее разделяется на субблоки. В данной конфигурации энтропийное кодирующее устройство кодирует серию последовательности из трех нулей с использованием экспоненциального кода Голомба, как "011", и включает его в двоичную последовательность.
Энтропийное кодирующее устройство дальше сканирует второй блок яркости 16×16 в макроблоке 806. Три из четырех блоков 8×8 обладают символом "1", указывающим на присутствие ненулевых коэффициентов. Четвертый блок 8×8 806A соответствует блоку 8×8 в базовом слое, который имеет символ "1", указывающий на присутствие ненулевых коэффициентов в базовом слое. В данной конфигурации этот четвертый блок 8×8 806A дополнительно кодируется в субблоках (не показаны). Энтропийное кодирующее устройство пропускает этот четвертый блок 8×8 806A и не кодирует явным образом СВР яркости, ассоциированный с этим блоком. Энтропийное кодирующее устройство продолжает сканирование подобным образом оставшихся блоков 8×8 внутри макроблоков, пропуская блок 8×8 810A, который далее кодируется как субблок, и соответствующий блок 8×8 которого в базовом слое имеет символ "1." На декодер посылается следующая последовательность "1 01l 00101 0001001" с первоначальным битом 802, установленным в "1," противоположно значению первого закодированного бита яркости СВР.
Фиг. 9 представляет собой блок-схему, иллюстрирующую одну из конфигураций 900 использования кодирования с помощью кода с чередованием длин в улучшающем слое, где бит mb_skip_flag определен, и пропускается кодирование всего макроблока 910. Первые три блока яркости 16×16 в макроблоках 904, 906, и 908, показанные на Фиг. 9, идентичны этим же блокам, изображенным на Фиг. 8. Энтропийное кодирующее устройство сканирует каждый блок 8×8 в макроблоках и кодирует значение бита яркости СВР, если только блок 8×8 далее не кодируется в субблоках и соответствующий блок 8×8 на базовом слое не имеет значение "1." Как объяснялось ранее, на Фиг. 7 и 8, эти блоки 8×8 904 A и 906 A пропускаются и их соответствующие биты яркости СВР не кодируются. В данной конфигурации полный блок яркости 16×16 в макроблоке 910 может быть пропущен энтропийным кодирующим устройством. Если бит mb_skip_flag определен и его значение равняется 1, то кодирующее устройство пропускает данный макроблок. Если макроблок пропускается, то предполагается, что оба бита СВР яркости и СВР цветности равны нулю. В данной конфигурации энтропийное кодирующее устройство сканирует mb_skip_flag 909, что указывает на то, что текущий макроблок должен быть целиком пропущен. На следующей диаграмме, когда энтропийное кодирующее устройство заканчивает сканировать биты яркости СВР, связанные с третьим макроблоком 908, кодирующее устройство пропускает четвертый макроблок 910 и продолжает сканировать биты яркости СВР пятого макроблока 912. Результирующая двоичная последовательность, относящаяся к СВР яркости - "1 011 00101 00110" с начальным битом CBP 902, равным "1", обратно значению бита яркости СВР, закодированному в первой серии. Эта двоичная последовательность может быть перемешана с двоичным потоком, формируемым из других синтаксических элементов перед тем, как она посылается на декодер.
Как объяснялось ранее, mb_skip_flag может быть использован при кодировании в улучшающем слое, который может быть расширенным слоем с грубой детализацией или расширенным слоем SNR с мелкой детализацией. Если слайс на улучшающем слое не является слайсом с внутренним предсказанием, в немасштабируемом видеокодировании слайс с внутренним предсказанием - это слайс, предсказание которого основано на сэмплах внутри текущего слоя. В масштабируемом кодировании видео слой с внутренним предсказанием на улучшающем слое может быть так определен, что предсказание может быть сконструировано из сэмплов соответствующего кадра базового слоя. Когда кодирование кодом (Variable Length Coding - VLC) переменной длины используется как метод энтропийного кодирования, признаки mb_skip_flag кодируются как признаки mb_skip_run с использованием того же метода, что определен в стандартах H.264/AVC. В другом аспекте признак mb_skip_flag кодируется с использованием кода с чередованием длин, как это было объяснено выше.
Фиг. 10 представляет собой блок-схему, иллюстрирующую одну из конфигураций 1000 кодирования компоненты цветности кодового слова переменной длины с использованием кода с чередованием длин и признак перехода. Блок-схема с Фиг. 10 может также использоваться для кодирования дополнительных синтаксических элементов, относящихся к блокам цветности, как было объяснено выше. В отличие от СВР яркости, которое состоит из четырех двоичных символов, СВР цветности может иметь значение от 0 до 2. В стандарте H.264/AVC и его дополнениях SVC единственное СВР цветности определяется для обоих блоков Cb и Cr. В следующем рассуждении блок цветности относится к блокам Cb и Cr, если не указывается обратное. Те же приведенные схемы могут быть расширены для кодирования СВР цветности с другим разрешением. Так как есть только три возможных значения для СВР цветности, то специфическое СВР цветности может просто меняться с одного значения на любое из двух других значений. Например, если текущее значение СВР цветности равно 1 в конце последовательности серий, то значение СВР цветности в следующей серии может только быть 0 или 2. В данной конфигурации однобитный признак перехода указывает на значение нового СВР цветности.
Как показано, первые шесть блоков цветности 1004 имеют значение СВР цветности, равное 0, следующие семь блоков цветности 1006 имеют значение 2, следующие четыре блока цветности 1008 имеют значение 0 и оставшиеся пять блоков цветности 1010 имеют значение 1. В данной конфигурации энтропийное кодирующее устройство кодирует эти значения с использованием экспоненциального кода Голомба. Первая серия из шести нулей 1004 кодируется как "00110." Серия из семи блоков 1006 с значением 2 кодируется как "00111." Однобитный признак перехода (не показан) вставляется между этими двумя закодированными сериями. В данной конфигурации признаку перехода может быть присвоено значение 0 или 1, чтобы указать на значение СВР цветности в следующем закодированном СВР цветности серии. Например, признак перехода со значением 1 может быть вставлен после серии цветности СВР с нулевым значением, для указания на то, что следующая серия цветности СВР имеет значение 2. После серии из семи последовательных блоков 1006 энтропийное кодирующее устройство кодирует серию из четырех нулей 1008, так же как и серию из пяти единиц 1010. Значение признака перехода, равное 1, может быть вставлено в двоичную последовательность после серии цветности СВР со значением “два” 1006, чтобы указать, что в следующей серии цветности СВР 1008 имеет значение 0 и так далее. Значение признака перехода, равное 0, может быть вставлено в двоичную последовательность после серии СВР цветности с нулевым значением 1008, чтобы указать, что следующая серия цветности СВР 1010 будет иметь значение, равное единице. В данной конфигурации декодер извлекает новое значение СВР цветности из последнего СВР цветности и признак перехода, как указано ниже: новое значение компоненты цветности Cbp = (последнее значение компоненты цветности Cbp + значение признака перехода + 1) % 3.
Значение признака перехода может быть определено различными способами. В данной конфигурации значение признака перехода может быть найдено из таблицы преобразования, которая проиндексирована значением последней компоненты цветности Cbp и новой компоненты цветности Cbp в кодирующем устройстве. В декодере определяется соответствующая таблица преобразования, которая может быть использована для извлечения значения новой компоненты Cbp из значений последней компоненты цветности Cbp и значения признака перехода. Первоначальное значение хранится в двоичной последовательности до того, как кодируется любая другая информация, относящаяся к СВР цветности, чтобы была возможность извлечь значение СВР цветности в первой серии.
В дополнительном аспекте серия СВР цветности со значением 1 и серия СВР цветности со значением 2 не различаются. Кодируются серии нулевых СВР цветности и серии ненулевых СВР цветности. После каждой серии, предполагая, что длина серии декодируемого ненулевого СВР цветности равна "n, декодируются "n" дополнительных битов для определения значения 1 или 2 каждого из "n" СВР цветности.
Первоначальное значение находится в двоичной последовательности до того, как кодируется любая другая информация, относящаяся к СВР цветности. Значение 0 используется как первоначальное значение, если первое СВР цветности, которое нужно закодировать с использованием кода с чередованием длин, не равно нулю. В противном случае значение 1 используется как первоначальное значение.
В дополнительном аспекте серии цветности СВР могут быть закодированы согласно схеме кодирования нулевых серий, описанной на Фиг. 3. Серия нулей перед ненулевым СВР цветности может быть закодирована с использованием экспоненциального кода Голомба. Дополнительный однобитный флаг кодируется для указания на то, какое значение имеют ненулевые СВР цветности - 1 или 2. Эта конфигурация отличается от ранее описанных тем, что последующие ненулевые значения СВР цветности не группируются вместе.
Фиг. 11 изображает устройство 1100, сконфигурированное для обработки цифровых изображений и/или цифрового видео. Устройство 1100 может быть исполнено или встроено в цифровой телевизор, цифровую систему прямого вещания, беспроводное коммуникативное устройство, персональный цифровой помощник (PDA), портативный компьютер (laptop), настольный компьютер, цифровую камеру, цифровое записывающее устройство, сетевое цифровое телевизионное устройство, сотовый или спутниковый радиотелефон или любое телекоммуникационное устройство с функцией видеотелефонии (VT).
Устройство 1100 может обрабатывать, кодировать, декодировать, передавать или принимать изображения или видеоданные. Видеоданные могут быть захвачены видеокамерой, такой как модуль видеозахвата (или датчик изображений) 1112, извлечены из видеоархива или получены другим способом. Модуль видеокодирования 1110 в устройстве 1100 может использовать стандарты видеокодирования, такие как MPEG-4, ITU-T H.263, ITU-T H.264, или любой другой стандарт видеокодирования. Модуль видеокодирования 1110 может поддерживать технологию межкадрового кодирования, такую как оценка движения и компенсация сдвига, и технологию внутрикадрового кодирования, такую как пространственная оценка и внутрикадровое предсказание.
Устройство 1100 может включать в себя устройство захвата изображений/видео 1112, такое как камера или видеокамера, для получения изображений или видеопоследовательностей и хранения полученных изображений или последовательностей в памяти 1114. Модуль обработки изображений/видео 1102 может обрабатывать изображения и/или видеопоследовательности. Память 1104 может хранить изображения и/или видеопоследовательности до и после такой обработки.
Приемопередатчик 1116 может принимать или передавать кодированную видеопоследовательность на другое устройство. Приемопередатчик 1116 может использовать стандарты беспроводной коммуникации, такие как множественный доступ с кодовым разделением каналов (CDMA). Примеры стандарта CDMA включают в себя стандарт CDMA 1xEV-DO, широкополосный доступ с кодовым разделением каналов (WCDMA) и т.д.
Один или более элементов устройства 1100 могут быть соединены через шину 1118 коммуникации. В дополнение к элементам или вместо элементов, показанных на Фиг. 1, в устройство 1100 могут быть включены другие элементы. Архитектура, показанная на Фиг. 1 является примером. Технология, описанная здесь, может быть реализована с помощью различных архитектурных решений.
Память 1114 может иметь относительно большой объем. Память 1114 может включать в себя динамическое оперативное запоминающее устройство (DRAM) или флэш-память. Память 1114 может включать в себя элементы, выполненные по технологии "ИЛИ-НЕ" или "И-НЕ", или с использованием любой другой технологии хранения данных. В других примерах память 1114 может включать в себя долговременную память или любой другой тип модуля хранения данных.
Модуль 1102 обработки изображений и видео может включать в себя набор микросхем для мобильного радиотелефона или любого другого мобильного устройства, которое может включать в себя оборудование, программное обеспечение, встроенное программное обеспечение, и/или один или более микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы(FPGA) или различные их комбинации. Модуль 1102 обработки может включать в себя локальную память 1104, соединенную с модулем 1108 предварительной обработки изображений/видео и модуль 1119 кодирования видео/изображений. Модуль 1119 кодирования изображений может включать в себя кодирующее устройство/декодер (CODEC) для кодирования (или сжатия) и декодирования (или декомпрессии) цифровых видеоданных.
Локальная память 1104 может состоять из меньшей и более быстрой области памяти по сравнению с памятью 1114. Например, локальная память 1104 может состоять из синхронного динамического ОЗУ (SDRAM). Локальная память 1104 может состоять из встроенной памяти, интегрированной с другими компонентами модуля 1102 обработки, для обеспечения быстрого доступа к данным в течение процесса кодирования, требующего интенсивной работы процессора. Впрочем, модули памяти 1114 и 1104 могут быть скомбинированы в единый модуль памяти или могут быть реализованы в ряде других конфигураций. Контроллер 1106 памяти может управлять выборками памяти и отложенными записями локальной памяти 1104.
Модуль 1108 предварительной обработки изображений/видео может исполнять одну или более процедур обработки изображений по кадрам видеопоследовательности для улучшения качества изображения и, следовательно, улучшения качества видеоряда. Например, модуль 1108 предварительной обработки изображений/видео может выполнять такие операции, как демозайкинг, коррекция завала линз, масштабирование, коррекция цвета, преобразование цветов и пространственная фильтрация. Модуль 1108 предварительной обработки изображений/видео может также выполнять другие операции. В общем, процедуры, выполняемые модулем 1108, называют техниками предварительной обработки изображения, потому что эти процедуры предшествуют кодированию в модуле 1110 кодирования изображений и видео.
Модуль 1112 видеозахвата может состоять из датчиков изображения, которые включают в себя массивы цветофильтров (CFA), расположенных на поверхности сенсоров. Предварительная обработка, выполняемая модулем 1108, может улучшить качество видеоряда, захваченного модулем 1112 захвата. Например, модуль 1108 предварительной обработки и/или модуль 1110 кодирования могут включать в себя цифровой сигнальный процессор (DSP), запрограммированный для обработки изображений, захваченных модулем 1112 захвата. Одна и та же область памяти 1104 (или памяти 1114) может использоваться как для целей предварительной обработки, так и для целей хранения.
Модуль 1110 кодирования изображений и видео может выполнять кодирование изображений и/или видео, которое может включать в себя одну или более технологий видеокомпрессии, таких как межкадровое сжатие и/или внутрикадровое сжатие. Например, модуль 1110 кодирования может осуществлять технологию оценки движения и компенсации движения для применения временной или межкадровой корреляции данных, чтобы обеспечить межкадровое сжатие. Как вариант или дополнительно, модуль 1110 кодирования может выполнять процедуру пространственной оценки и внутрикадрового предсказания для применения пространственной или внутрикадровой корреляции данных, чтобы обеспечить внутрикадровое сжатие. Результат компенсации движения или (внутреннего предсказания) называют "разностным" и может состоять из блоков данных, указывающих на разность между текущим кодируемым видеоблоком и блоком, который предсказывается исходя из оценки движения и пространственной оценки.
После того как модуль 1110 кодирования выполняет компенсацию движения (или внутрикадровое предсказание) для формирования разностного сигнала, может быть выполнена серия дополнительных действий для дальнейшего кодирования разностного сигнала и дополнительного сжатия данных. Дополнительные шаги могут зависеть от стандарта кодирования, который используется, но обычно называются "кодированием разностного сигнала". Модуль 1110 кодирования может выполнять одну или более процедур видеокомпрессии, чтобы уменьшить количество данных, необходимых для передачи видеопоследовательности на другое устройство через приемопередатчик 1116.
Информация и сигналы могут быть представлены с использованием любой из множества технологий и технических средств. Например, данные, предписания, команды, информация, сигналы, биты, символы и чипы, которые могут упоминаться на всем протяжении вышеизложенного описания, могут быть реализованы в виде напряжения, токов, электромагнитных волн, магнитных полей или частиц, оптических полей или частиц или комбинаций вышеуказанного.
Проиллюстрированные логические блоки, модули, цепи или шаги алгоритмов, описанные выше, в связи с конфигурациями, раскрытыми здесь могут быть реализованы как электронное оборудование, компьютерное оборудование или комбинации обоих. Чтобы ясно проиллюстрировать взаимозаменяемость оборудования и программного обеспечения, различные наглядные компоненты, блоки, модули, цепи и шаги были описаны выше в общем в терминах их функциональности. Реализация данной функциональности в виде оборудования или в виде программного обеспечения зависит от специфического приложения и особенностей конструкций, налагаемых на всю систему. Подготовленные специалисты могут реализовать описанную функциональность различными путями для каждого специфического приложения, но решения по такой реализации не должны быть интерпретированы как причина выхода за рамки настоящих способов и систем.
Различные проиллюстрированные логические блоки, модули и цепи, описанные в связи с конфигурациями, которые раскрыты здесь, могут быть воплощены или реализованы с помощью процессора общего назначения, цифрового сигнального процессора (DSP), специализированной интегральной схемы (ASIC), программируемой вентильной решетки (FPGA) или программируемого логического устройства, логических элементов на дискретных компонентах или на транзисторной логике, дискретных аппаратных компонентах или любой их комбинации, спроектированной для выполнения операций, описанных здесь. Процессор общего назначения может быть микропроцессором, но в качестве альтернативы процессор может быть общеупотребительным процессором, контроллером, микроконтроллером или конечным автоматом. Процессор также может быть реализован как комбинация вычислительных устройств, то есть комбинация цифрового сигнального процессора (DSP) и микропроцессора, множества микропроцессоров, одного или более микропроцессоров во взаимодействии с ядром в виде цифрового сигнального процессора или любой другой такой комбинации.
Все шаги способа или алгоритма, описанные в связи с конфигурациями, которые раскрыты здесь, могут быть напрямую реализованы как оборудование или в виде модуля ПО, которое исполняется процессором или как комбинация двух указанных выше. Модуль ПО может храниться в оперативной памяти (ОЗУ), флэш-памяти, постоянном запоминающем устройстве (ПЗУ), стираемом ПЗУ, электрически стираемом ПЗУ, регистре, жестком диске, съемных дисках, компакт дисках ROM (CD-ROM) или любых других носителях информации, известных в природе. Типовой носитель информации соединен с процессором, так что может считывать информацию с и записывать информацию на носитель информации. С другой стороны носитель информации может быть интегрирован в процессор. Процессор и носитель информации могут быть расположены в специализированной интегральной схеме ASIC. Специализированная интегральная схема может располагаться в пользовательском терминале. В качестве альтернативы процессор и носитель информации могут располагаться в качестве дискретных компонентов в пользовательском терминале.
Способы, раскрытые здесь, состоят из одной или нескольких операций или действий, реализующих описанный способ. Порядок операций или действий может быть изменен, не выходя за рамки настоящих способов и систем. Другими словами, если не требуется специфического порядка шагов и действий для надежного функционирования конфигурации, то порядок и/или использование специфических шагов и/или действий может быть модифицировано без выхода за рамки настоящих систем и способов.
Несмотря на то что отдельно взятые конфигурации и приложения настоящих систем и способов были проиллюстрированы и описаны, понятно, что системы и способы не ограничиваются точными конфигурациями и компонентами, которые представлены здесь.
Различные модификации, изменения и вариации будут наглядны для специалистов, могут быть сделаны в структуре, эксплуатации и деталях способов и систем, раскрытых здесь без выхода за рамки настоящих систем и способов.
Изобретение относится к кодированию и декодированию информации и связано с технологией сжатия видеоизображений. Техническим результатом является повышение эффективности кодирования и декодирования информации. Указанный технический результат достигается тем, что видеопоследовательность обрабатывается в совокупность кадров, при этом каждый кадр из множества кадров обрабатывается во множество макроблоков. Предсказание исходного видеосигнала, которое является частью макроблока, в текущем кадре, формируется из видеопоследовательности. Разностный сигнал формируется путем вычитания предсказания исходного видеосигнала из оригинального видеосигнала в текущем кадре. Применяется преобразование исходного сигнала, при этом множество коэффициентов преобразования квантуется, устанавливается символ, по меньшей мере, одного синтаксического элемента, который определяет характеристику разностного сигнала. Символы, по меньшей мере, одного синтаксического элемента одной и той же категории кодируются совместно. 6 н. и 15 з.п. ф-лы, 11 ил.
1. Способ видеокомпрессии, содержащий этапы, на которых: кодируют макроблоки последовательности видеокадров; формируют шаблоны блоков кодирования для макроблоков, причем
шаблоны блоков кодирования включают в себя биты, которые указывают, включают ли в себя различные видеоблоки макроблоков ненулевые коэффициенты преобразования; и
кодируют по длине серий шаблоны блоков кодирования совместно так, что одна или более серий, определенных в кодировании по длине серий, охватывают символы множества шаблонов блоков кодирования, связанных с множеством макроблоков.
2. Способ по п.1, в котором кодирование по длине серий шаблонов блоков кодирования содержит этап, на котором кодируют серии нулей и серии ненулевых значений, причем, по меньшей мере, некоторые из серий нулевых и, по меньшей мере, некоторые из серий ненулевых значений охватывают символы, связанные с различными из шаблонов блоков кодирования.
3. Способ по п.1, в котором этап кодирования по длине серий дополнительно содержит этап, на котором кодируют символ первоначального значения, чтобы указать первоначальное значение закодированных серий нулей и серий ненулевых значений.
4. Способ по п.1, в котором этап кодирования по длине серий содержит этап, на котором кодируют только серии нулей, причем, по меньшей мере, некоторые из серий нулей охватывают символы, связанные с различными из шаблонов блоков кодирования.
5. Способ по п.1, в котором этап кодирования по длине серий включает в себя этап, на котором вставляют символ перехода для указания того, как значение символа в текущей серии символов меняется на значение другого символа в следующей серии символов.
6. Способ по п.1, в котором этап кодирования макроблоков включает в себя этап, на котором кодируют, по меньшей мере, один символ пропуска макроблока.
7. Способ по п.1, в котором этап кодирования макроблоков включает в себя этап, на котором кодируют, по меньшей мере, один символ типа макроблока.
8. Способ по п.1, в котором этап кодирования макроблоков включает в себя этап, на котором кодируют, по меньшей мере, один символ параметра дельта-квантования.
9. Способ по п.1, дополнительно содержащий этап, на котором определяют максимальную длину серии, связанную с совместным кодированием по длине серий шаблонов блоков кодирования.
10. Способ по п.1, в котором этап кодирования по длине серий шаблонов блоков кодирования включает в себя этап, на котором сканируют символы шаблонов блоков кодирования в порядке растрового сканирования.
11. Способ по п.1, в котором этап кодирования по длине серий включает в себя этап, на котором определяют бит флага пропуска и пропускают кодирование по длине серий определенного набора символов на основе бита флага пропуска.
12. Способ по п.11, в котором способ включает в себя этап, на котором формируют базовый слой и улучшенный слой, причем способ дополнительно содержит этап, на котором определяют бит флага пропуска в улучшенном слое.
13. Способ по п.1, в котором способ включает в себя этап, на котором формируют базовый слой и улучшенный слой, причем способ дополнительно содержит этап, на котором кодируют символы улучшенного слоя, основываясь на соответствующих символах базового слоя.
14. Способ по п.1, в котором этап кодирования по длине серий шаблонов блоков кодирования включает в себя этап, на котором сканируют символы шаблонов блоков кодирования в порядке, который не соответствует порядку растрового сканирования.
15. Устройство для выполнения видеокомпрессии, содержащее:
процессор;
память, электронно связанную с процессором;
инструкции, хранящиеся в памяти, при этом выполнение инструкций побуждает процессор:
кодировать макроблоки последовательности видеокадров;
формировать шаблоны блоков кодирования для макроблоков, причем шаблоны блоков кодирования включают в себя биты, которые указывают, включают ли в себя различные видеоблоки макроблоков ненулевые коэффициенты преобразования; и
кодировать по длине серий шаблоны блоков кодирования совместно так, что одна или более серий, определенные в кодировании по длине серий, охватывают символы множества шаблонов блоков кодирования, связанных с множеством макроблоков.
16. Устройство по п.15, в котором при кодировании по длине серий шаблона блоков кодирования, процессор кодирует серии нулей и серии ненулевых значений, причем, по меньшей мере, некоторые из серий нулей и, по меньшей мере, некоторые из серий ненулевых значений охватывают символы, связанные с различными из шаблонов блоков кодирования.
17. Машиночитаемый носитель, содержащий инструкции, исполняемые процессором для осуществления видеокомпрессии, причем при выполнении инструкции побуждают процессор:
кодировать макроблоки последовательности видеокадров;
формировать шаблоны блоков кодирования для макроблоков, причем шаблоны блоков кодирования включают в себя биты, которые указывают, включают ли в себя различные видеоблоки макроблоков ненулевые коэффициенты преобразования; и
кодировать по длине серий шаблоны блоков кодирования совместно так, что одна или более серий, определенные в кодировании по длине серий, охватывают символы множества шаблонов блоков кодирования, связанных с множеством макроблоков.
18. Машиночитаемый носитель по п.17, в котором при кодировании по длине серий шаблона блоков кодирования, при выполнении инструкций, процессор кодирует серии нулей и серии ненулевых значений, причем, по меньшей мере, некоторые из серий нулей и, по меньшей мере, некоторые из серий ненулевых значений охватывают символы, связанные с различными из шаблонов блоков кодирования.
19. Способ декодирования информации, связанной с видеокомпрессией, содержащий этапы, на которых:
получают закодированную видеопоследовательность, включающую в себя шаблоны блоков кодирования, которые закодированы по длине серий совместно так, что одна или более серий, определенные в кодировании по длине серий, охватывают символы множества шаблонов блоков кодирования, связанных с множеством макроблоков;
совместно декодируют шаблоны блоков кодирования для формирования символов;
формируют множество коэффициентов преобразования, основанных на символах;
деквантуют множество коэффициентов преобразования;
применяют обратное преобразование к коэффициентам преобразования для формирования разностного сигнала; и
восстанавливают декодированную видеопоследовательность на основании разностного сигнала.
20. Электронное устройство, которое декодирует информацию, связанную с видеокомпрессией, упомянутое электронное устройство содержит:
процессор;
память, электронно связанную с процессором;
инструкции, хранящиеся в памяти, причем при исполнении инструкции побуждают процессор:
принимать закодированную видеопоследовательность, включающую в себя шаблоны блоков кодирования, которые закодированы по длине серий совместно так, что одна или более серий, определенных в кодировании по длине серий, охватывают символы множества шаблонов блоков кодирования, связанных с множеством макроблоков;
совместно декодировать шаблоны блоков кодирования для формирования символов;
формировать множество коэффициентов преобразования, основанных на символах;
деквантовать множество коэффициентов преобразования;
применять обратное преобразование к коэффициентам преобразования для формирования разностного сигнала; и
восстанавливать декодированную видеопоследовательность на основании разностного сигнала.
21. Устройство, которое кодирует информацию, связанную с видеокомпрессией, при этом устройство содержит:
средство для кодирования макроблоков последовательности видеокадров;
средство для формирования шаблонов блоков кодирования для макроблоков, причем шаблоны блоков кодирования включают в себя биты, которые указывают, включают ли в себя различные видеоблоки макроблоков ненулевые коэффициенты преобразования; и
средство для кодирования по длине серий шаблонов блоков кодирования совместно так, что одна или более серий, определенных в кодировании по длине серий, охватывают символы множества шаблонов блоков кодирования, связанных с множеством макроблоков.
US 2006013302 A1, 19.01.2006 | |||
US 2002025000 A1, 28.02.2002 | |||
Способ лечения прогрессирующей близорукости | 1981 |
|
SU1156680A1 |
US 2006008009 A1, 12.01.2006 | |||
US 2005254583 A1, 17.11.2005 | |||
US 2004013194 A1, 22.01.2004 | |||
US 2003179940 A1, 25.09.2003 | |||
RU 2004131857 A, 20.04.2005 | |||
КОДИРОВАНИЕ И ДЕКОДИРОВАНИЕ ИЗОБРАЖЕНИЙ | 1997 |
|
RU2189120C2 |
JUNGONG HAN et al, DCT-based embedded coding scheme for stereo image, COMMUNICATIONS, |
Авторы
Даты
2010-12-10—Публикация
2007-03-27—Подача