СПОСОБЫ И СИСТЕМЫ ДЛЯ КОДИРОВАНИЯ УТОЧНЯЮЩИХ КОЭФФИЦИЕНТОВ ПРИ СЖАТИИ ВИДЕОДАННЫХ
METHODS AND SYSTEMS FOR CODING OF CLARIFICATION COEFFICIENTS IN VIDEO DATA COMPRESSION

Родственные заявки
Эта заявка испрашивает приоритет принадлежащей тому же правопреемнику предварительной патентной заявки США с порядковым номером 60/786800, зарегистрированной 27 марта 2006 г., под названием "Кодирование уточняющих коэффициентов для мелкозернистой масштабируемости", и предварительной патентной заявки США с порядковым номером 60/830199, зарегистрированной 11 июля 2006 г., под названием "Способы и системы для кодирования уточняющих коэффициентов при сжатии видеоданных", которые включены здесь путем ссылки.
Область техники
Настоящее раскрытие относится, в общем, к обработке видеоданных. Более конкретно, настоящее раскрытие относится к способам и системам, предназначенным для кодирования и декодирования информации, относящимся к методам сжатия видеоданных.
Уровень техники
Компьютерные технологии продолжают развиваться в методах сжатия видеоданных. Сжатие видеоданных относится к сжатию цифровых видеоданных. Сжатие видеоданных является желательным для эффективного кодирования видеоданных в форматах файлов видеоданных и потоковой передачи и широковещательной рассылки форматов видеоданных. Сжатие представляет собой преобразование данных в формат, который требует меньшего количества битов, и обычно выполняется таким образом, чтобы данные можно было сохранять или передавать более эффективно. Разуплотнение, которое является противоположностью сжатию, производит точную копию исходных данных.
В настоящее время для множества способов сжатия видеоданных применяется определенный тип дискретного преобразования, такой как дискретное косинусное преобразование (DCT), чтобы снижать остающуюся пространственную избыточность в остаточной части прогнозирования, которое производится с использованием либо временных, либо пространственных методик прогнозирования. Множество методов сжатия видеоданных также включает в себя квантование, которое может быть либо скалярным квантованием, либо векторным квантованием. После квантования квантованные коэффициенты могут быть статистически закодированы и помещены в сжатый поток битов видеоданных. Затем сжатый поток битов посылается в декодер, который разуплотняет поток битов и восстанавливает хорошую аппроксимацию исходных видеоданных.
Методы сжатия видеоданных могут приносить выгоду пользователям различных форм мультимедиа. Например, в технике широковещательной передачи цифровое телевидение на практике осуществляется посредством сжатия видеоданных. Телевизионные станции могут выполнять широковещательную рассылку не только для HDTV (телевидение высокой четкости), но также и по множеству виртуальных каналов на одном и том же физическом канале. Широковещательная рассылка цифровых видеоданных может использовать формат сжатия видеоданных стандарта MPEG-2. H.264/MPEG-4 и VC-1 начинают проявляться как новые стандарты в области сжатия видеоданных.
К сожалению, известные системы и способы, предназначенные для кодирования информации при сжатии видеоданных, страдают от различных недостатков. Соответственно, посредством улучшения систем и способов кодирования информации в отношении сжатия видеоданных могут быть получены выгоды. В данном описании описаны некоторые системы и способы, предназначенные для кодирования информации при сжатии видеоданных.
Краткое описание чертежей
Фиг.1 иллюстрирует один вариант осуществления масштабируемой структуры потока битов кодирования видеоданных;
фиг.2 иллюстрирует один вариант осуществления основного слоя и множества слоев повышения качества, посылаемых из кодера в декодер через сеть;
фиг.3 иллюстрирует способ кодирования информации;
фиг.4 иллюстрирует один вариант осуществления способа декодирования закодированной последовательности видеокадров;
фиг.5 иллюстрирует один вариант осуществления кадра изображения, разделенного на множество макроблоков;
фиг.6 иллюстрирует один вариант осуществления классификации значимых и уточняющих коэффициентов;
фиг.7 иллюстрирует недостаток одной схемы уточняющего кодирования в кодировании с переменной длиной (VLC);
фиг.8 иллюстрирует один вариант осуществления порядка кодирования, основанного на поддиапазонах;
фиг.9 иллюстрирует один вариант осуществления уточняющих символов, которые могут быть связаны с синтаксисами, используемыми в уточняющем кодировании;
фиг.10 иллюстрирует один вариант осуществления таблицы кодирования кодом переменной длины (VLC);
фиг.11 иллюстрирует один вариант осуществления множества слоев мелкозернистой масштабируемости (FGS);
фиг.12 иллюстрирует один вариант осуществления решения проблемы, обусловленной группированием уточняющих коэффициентов, когда значимое и уточняющее кодирование перемежаются;
фиг.13 иллюстрирует другой вариант осуществления, где значимое кодирование и уточняющее кодирование могут перемежаться и используется порядок кодирования FGS поддиапазонов;
фиг.14 иллюстрирует один вариант осуществления способа решения на основе декодера;
фиг.15 иллюстрирует один вариант осуществления способа решения на основе кодера;
фиг.16 иллюстрирует блок-схему, иллюстрирующую основные компоненты аппаратных средств, обычно используемые для обработки цифровых изображений и/или цифровых видеоданных.
Подробное описание
Раскрыт способ кодирования уточняющих коэффициентов в слое масштабируемого повышения качества отношения сигнал-шум ("ОСШ") сжатой последовательности видеокадров. Принимают последовательность видеокадров. Из последовательности видеокадров составляют прогнозирование исходного видеосигнала в текущем кадре. Формируют разностный сигнал посредством вычитания прогнозирования исходного видеосигнала из исходного видеосигнала в текущем кадре. К разностному сигналу применяют преобразование. Квантуют множество коэффициентов преобразования. Уточняющий коэффициент отображают в троичный уточняющий символ. Уточняющие символы группируют в определенном порядке кодирования. Группы уточняющих символов кодируют с использованием кодов переменной длины.
Для различных слоев повышения качества адаптивно выбирают таблицу кодирования кодом переменной длины. В варианте осуществления таблицу кодирования кодом переменной длины адаптивно выбирают на основании вероятностной оценки уточняющих символов. Выбор определенной таблицы кодирования кодом переменной длины может быть основан на уровне слоя повышения качества. В варианте осуществления выбор определенной таблицы кодирования кодом переменной длины основан на том, уточняют ли коэффициент впервые или этот коэффициент уточнялся в предыдущем слое.
В варианте осуществления способ перемежает значимые коэффициенты и уточняющие коэффициенты. Идентифицируют вырезку, которая включает в себя множество блоков. Множество блоков может просматриваться перед группированием уточняющих коэффициентов. Определяют порядок, с которым уточняющие коэффициенты будут кодироваться. Уточняющие коэффициенты могут сохраняться в очереди в соответствии с порядком, который был определен.
В варианте осуществления каждое фиксированное количество последовательных уточняющих коэффициентов кодируют вместе с использованием таблицы кодирования кодом переменной длины. В варианте осуществления, уточняющие коэффициенты вырезки группируют вместе. Может выполняться операция смещения. Таблица кодирования кодом переменной длины включает в себя таблицу кодирования кодом переменной длины с 27 элементами, где длина группы равна трем. В слое повышения качества используется порядок кодирования, основанный на поддиапазонах.
Также раскрыто электронное устройство, реализующее способ кодирования уточняющих коэффициентов в слое масштабируемого повышения качества ОСШ сжатой последовательности видеокадров. Электронное устройство включает в себя процессор и запоминающее устройство, находящееся в электронной связи с процессором. Содержатся команды, хранящиеся в запоминающем устройстве. Принимают последовательность видеокадров. Прогнозирование исходного видеосигнала в текущем кадре составляют из последовательности видеокадров. Формируют разностный сигнал посредством вычитания прогнозирования исходного видеосигнала из исходного видеосигнала в текущем кадре. К разностному сигналу применяют преобразование. Квантуют множество коэффициентов преобразования. Уточняющий коэффициент отображают в троичный уточняющий символ. Уточняющие символы группируют в определенном порядке кодирования. Группы уточняющих символов кодируют с использованием кодов переменной длины.
Также раскрыт компьютерочитаемый носитель, включающий в себя команды для реализации способа кодирования уточняющих коэффициентов в слое масштабируемого повышения качества ОСШ сжатой последовательности видеокадров. Принимают последовательность видеокадров. Из последовательности видеокадров составляют прогнозирование исходного видеосигнала в текущем кадре. Формируют разностный сигнал посредством вычитания прогнозирования исходного видеосигнала из исходного видеосигнала в текущем кадре. К разностному сигналу применяют преобразование. Квантуют множество коэффициентов преобразования. Уточняющий коэффициент отображают в троичный уточняющий символ. Уточняющие символы группируют в определенном порядке кодирования. Группы уточняющих символов кодируют с использованием кодов переменной длины.
Также раскрыт способ декодирования уточняющих коэффициентов в закодированной последовательности видеокадров. Принимают закодированную последовательность видеокадров. Уточняющие символы декодируют с использованием таблицы кодирования кодом переменной длины. Уточняющие коэффициенты декодируют с использованием уточняющих символов, при этом уточняющие коэффициенты группируют в определенном порядке кодирования. Множество коэффициентов преобразования подвергают обратному квантованию. К уточняющему сигналу применяют обратное преобразование. Составляют последовательность видеокадров.
В варианте осуществления закодированный поток видеокадров включает в себя перемежающиеся значимые символы и уточняющие символы. Местоположение запрашиваемых уточняющих коэффициентов сохраняют. Знак соответствующего коэффициента основного слоя сохраняют. Счетчик, который относится к числу сделанных запросов, увеличивается. В варианте осуществления определяют, когда счетчик достигает предварительно определенной величины счета. Запускают операцию считывания, вызывая нормальное декодирование с таблицей кодирования кодом переменной длины. Составляют группу уточняющих символов.
Теперь будут описаны различные варианты осуществления раскрытия со ссылкой на чертежи, на которых подобные ссылочные позиции обозначают идентичные или функционально подобные элементы. Варианты осуществления настоящего раскрытия, как в общем описывается в данном описании и иллюстрируется на чертежах, могут быть выполнены и сконструированы в виде большого разнообразия различных конфигураций. Таким образом, последующее более детальное описание нескольких вариантов осуществления настоящего раскрытия, как представлено на чертежах, не предназначено для ограничения объема раскрытия, как оно заявлено, а просто отражает репрезентативные варианты осуществления раскрытия.
Многие признаки вариантов осуществления, раскрытых в данном описании, могут быть реализованы как программное обеспечение для компьютеров, электронное оборудование или комбинации и того и другого. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратного обеспечения и программного обеспечения, различные компоненты будут описаны в общем в терминах их функциональных возможностей. Реализованы ли такие функциональные возможности в виде аппаратного обеспечения или программного обеспечения, может зависеть от конкретного применения и конструктивных ограничений, накладываемых на всю систему. Специалисты в данной области техники могут реализовывать описанные функциональные возможности различными способами для каждого конкретного применения, но такие решения реализации не должны интерпретироваться как приводящие к выходу за рамки объема настоящего раскрытия.
Там, где описываемые функциональные возможности реализованы как программное обеспечение, такое программное обеспечение может включать в себя любой тип машинной команды или выполняемого компьютером кода, хранящегося в запоминающем устройстве и/или передаваемого в виде электронных сигналов через системную шину или сеть. Программное обеспечение, которое реализует функциональные возможности, связанные с описываемыми в данном описании компонентами, может содержать единственную команду или множество команд и может распределяться через несколько различных сегментов кода, среди различных программ, и через несколько запоминающих устройств.
После выполнения общих методов сжатия видеоданных, таких как прогнозирование, преобразование и квантование, следующий этап выполняет статистическое кодирование на элементах синтаксиса и квантованных коэффициентах, чтобы сформировать поток битов. В декодере видеоданных выполняется обратный процесс. Элементы синтаксиса и квантованные коэффициенты декодируются из потока битов. Затем выполняются этапы обратного квантования и обратного преобразования. Наконец, к прогнозированию добавляется реконструированный остаток, чтобы реконструировать видеоданные.
Объединенная группа по вопросам видеоизображений (JVT), которая состоит из экспертов по кодированию видеоданных из ISO/IEC MPEG и ITU-T VCEG, работает над расширением масштабируемого кодирования видеоданных (SVC) для Н.264/AVC. Участниками используется стандартное программное обеспечение, называемое JSVM (объединенная масштабируемая модель видеоданных). JSVM поддерживает различные особенности масштабируемости. Поток битов SVC может иметь мелкозернистую масштабируемость, пространственную масштабируемость, временную масштабируемость или любые комбинации из этих трех видов масштабируемости.
Мелкозернистая масштабируемость, далее упоминаемая как FGS, является важной и весьма желательной особенностью для кодирования видеоданных. Эта особенность позволяет почти произвольно укорачивать сжатый поток битов видеокадров, в то же самое время обеспечивая конечного пользователя постепенным ухудшением качества декодированного видеосигнала. Поскольку декодер видеоданных принимает и декодирует большее количество битов в этом слое, это будет производить лучшее качество видеоданных. Кроме того, FGS в JSVM была разработана таким образом, что улучшение качества видеоданных равномерно распространяется по всему видеокадру, в противоположность концентрированию в пределах только определенной пространственной области кадра, поскольку последний случай является визуально нежелательным для конечного зрителя.
FGS достигает постепенного улучшения качества видеоданных при использовании кодирования битовой плоскости. Если видеокадр основного или предыдущего слоя квантуют с использованием параметра квантования ПК, то видеоданные текущего слоя повышения качества квантуют с использованием параметра квантования, обычно примерно ПК-6, который эффективно сокращает вдвое величину этапа квантования. В результате меньшего размера этапа квантования в слое повышения качества большее количество коэффициентов преобразования становится ненулевым. Все ненулевые коэффициенты в слое повышения качества могут быть классифицированы на три типа: незначимые коэффициенты, значимые коэффициенты и уточняющие коэффициенты. Термин "незначимые" коэффициенты относится к тем коэффициентам, которые равны нулю в слое повышения качества, а соответствующие коэффициенты в основном или предыдущем слое являются нулевыми. Термин "значимые" коэффициенты относится к тем коэффициентам, которые стали ненулевыми в слое повышения качества, а соответствующие коэффициенты в основном или предыдущем слое являются нулевыми. Термин "уточняющие" коэффициенты относится к тем коэффициентам, которые уже отличаются от нуля (то есть являются значимыми) в основном или предыдущем слое. Их значения будут уточняться в текущем слое повышения качества.
Поскольку уточняющие коэффициенты имеют отличающиеся статистические данные от других коэффициентов, они отдельно кодируются в слое FGS. Подобно Н.264/AVC, рекомендация проекта SVC также поддерживает два режима статистического кодирования: режим основанного на контексте адаптивного двоичного арифметического кодирования (CABAC) и режим основанного на контексте адаптивного кодирования с переменной длиной (CAVLC). Обеспечены подробности для схемы улучшенного кодирования уточняющих коэффициентов в режиме CAVLC, которые, как показано, не только улучшают эффективность кодирования, но также и значительно уменьшают сложность реализации и кодера и декодера.
В слое FGS уточняющие коэффициенты посылаются с использованием двух элементов синтаксиса: coeff_refinement_flag и coeff_refinement_direction_flag. Первый элемент синтаксиса, coeff_refinement_flag, определяет, действительно ли уровень уточняющего коэффициента равен 0. Не нарушая общности, предполагается, что, если coeff_refinement_flag равен 0, значение уровня уточняющего коэффициента равно 0, в то время как coeff_refinement_flag, равный 1, определяет, что значение уровня уточняющего коэффициента является либо равным -1, либо равным 1. Второй элемент, coeff_refinement_direction_flag, определяет, является ли знак уточняющего уровня коэффициента преобразования таким же или отличающимся от знака его представления основного или предыдущего слоя. Не нарушая общности, предполагается, что, если coeff_refinement_direction_flag равен 0, знак уточняющего уровня коэффициента преобразования равен знаку соответствующего коэффициента в основном слое; иначе, уточняющий уровень имеет противоположный знак.
В режиме CAVLC один способ кодирования уточняющих коэффициентов в слое FGS состоит в том, чтобы обрабатывать уточняющие коэффициенты блок за блоком. Как только кодер видеоданных начинает кодировать уточняющие коэффициенты в блоке, все уточняющие коэффициенты в текущем блоке кодируются прежде, чем кодер видеоданных начинает кодировать другие коэффициенты. Такая схема когда-то была принята в одной версии JSVM.
Таблица обеспечивает такой процесс уточняющего кодирования на основе блоков, суммируемый в следующем псевдокоде.
//кодирование уточняющего уровня//vlcTab1 представляет собой таблицу VLC, подлежащую использованию для кодирования уточняющего уровня до тех пор,пока (уточняющий коэффициент все еще остается в текущем блоке) {получить следующий уточняющий коэффициент в зигзагообразном порядкепусть m = уровень коэффициентакодировать уровень m, используя текущую vlcTab1обновить статистические данные уточняющего уровняобновить значение vlcTab1}сдвинуть биты уточняющего уровня, оставшиеся в буфере битов//кодирование признака уточняющего направления//VlcTab2 представляет собой таблицу VLC, подлежащую использованию для кодирования уточняющего направления до тех пор,пока (уточняющий коэффициент все еще остается в текущем блоке) {получить следующий уточняющий коэффициент в зигзагообразном порядкеесли (текущий уточняющий уровень является ненулевым){если (уровень имеет такой же знак, как основной коэффициент)пусть уточняющее направление s = 0иначепусть уточняющее направление s = 1кодировать направление s, используя текущую vlcTab2обновить статистические данные уточняющего направленияобновить значение vlcTab2}}сдвинуть биты уточняющего направления, оставшиеся в буфере битов
Процесс уточняющего декодирования выполняется в обратном порядке для того, чтобы восстановить coeff_refinement_flag и coeff_refinement_direction_flag синтаксиса. С этими двумя признаками, вместе с коэффициентами основного или предыдущего слоя, декодер может реконструировать уточняющие коэффициенты. Декодер также поддерживает и обновляет статистическую информацию в буферах таким образом, чтобы оставаться в синхронизации с кодером.
В таблице, vlcTab (vlcTab1 или vlcTab2) может принимать одно из трех значений, указывающих разные способы выполнения кодирования VLC на синтаксисах уточняющих признаков. Если vlcTab = 0, уточняющие синтаксисы посылаются бит за битом (кодирование признаков). Если vlcTab = 1, уточняющие синтаксисы посылаются в группах из трех битов. Если vlcTab = 2, уточняющие синтаксисы посылаются в группах из четырех битов. Значение vlcTab адаптивно определяется в соответствии с накопленными статистическими данными уточняющих коэффициентов в вырезке текущих видеоданных. Также и кодер и декодер следят за значением наиболее вероятного символа (БВС) и переводят в другое состояние фактический символ, подлежащий кодированию, если БВС изменяется с 0 на 1 или наоборот.
Способ уточняющего кодирования текущего CAVLC может иметь относительно высокую вычислительную сложность. Например, для широко распространенного способа может быть необходимо поддерживать и обновлять накопленные статистические данные обоих уточняющих синтаксисов (синтаксиса уровня и синтаксиса направления). Для широко распространенного способа может быть необходимо обновлять значения vlcTab и БВС. Для широко распространенного способа может требоваться гарантировать, что величины счета вероятности для 0 и 1 не будут выходить за пределы при их обратном масштабировании, когда это необходимо. Адаптивное изменение длины группы также может усложнять реализацию.
Даже при его относительно высокой сложности широко распространенное уточняющее кодирование может быть неэффективным. Моделирования показывают, что для некоторых последовательностей уточняющее кодирование CAVLC может принимать до удвоенного количества битов (ухудшение 100%) по сравнению с уточняющим кодированием CABAC, тогда как полное ухудшение скорости передачи данных использования режима CAVLC вместо CABAC обычно составляет только примерно 15% или меньше. Эта неэффективность в значительной степени происходит вследствие того, что уточняющее кодирование CAVLC выполняет два цикла операций смещения битов в конце каждого блока (один для синтаксиса уровня, а другой для синтаксиса направления). Если блок содержит очень мало уточняющих коэффициентов (например, только 1 или 2 коэффициента), то частые операции смещения могут делать невозможным группирование 3 или 4 битов вместе, следовательно, неся большие потери битов, потому что в соответствии с этой схемой кодирование с переменной длиной использоваться не может.
Как используется в данном описании, термины "один вариант осуществления", "вариант осуществления", "варианты осуществления", "этот вариант осуществления", "эти варианты осуществления", "один или больше вариантов осуществления", "некоторые варианты осуществления", "определенные варианты осуществления", "один вариант осуществления, "другой вариант осуществления" и т.п. означают "один или больше (но не обязательно все) варианты осуществления описанного раскрытия (раскрытий)", если явно не определено иначе.
Термин "определяющий" (и его грамматические варианты) используется в самом широком смысле. Термин "определяющий" охватывает большое разнообразие действий, и поэтому термин "определяющий" может включать в себя вычисление, работу с применением компьютера, обработку, выведение, исследование, поиск (например, поиск в таблице, базе данных или другой структуре данных), установление и т.п. Также термин "определяющий" может включать в себя прием (например, прием информации), обращение (например, обращение к данным в запоминающем устройстве) и т.п. Кроме того, термин "определяющий" может включать в себя разрешение, выбор, отбор, установление и т.п.
Фраза "основанный на" не означает "основанный только на", если явно не определено иначе. Другими словами, фраза "основанный на" описывает и "основанный только на" и "основанный по меньшей мере на".
Фиг.1 иллюстрирует один вариант 100 осуществления масштабируемой структуры потока битов кодирования видеоданных, далее упоминаемой как мелкозернистая масштабируемость (FGS). В FGS последовательность видеокадров сжимается в единственный поток видеокадров по меньшей мере с двумя слоями: основным слоем 106 и слоем 104 повышения качества. Как иллюстрируется, FGS может дополнительно включать в себя N слоев 102 повышения качества.
В одном варианте осуществления основной слой 106 представляет собой немасштабируемое кодирование последовательности видеокадров и обычно имеет самое низкое качество последовательности видеокадров. Слой 104 повышения качества и N слоев 102 повышения качества имеют изменяющиеся уровни качества, которые выше уровня качества основного слоя 106. Декодирование каждого дополнительного слоя повышения качества, кодируемого после основного слоя 106, приводит к повышающемуся качеству последовательности видеокадров. Кроме того, поток битов FGS имеет одно существенное преимущество, заключающееся в том, что во время или после кодирования биты, относящиеся к слою 104 повышения качества и N слоям 102 повышения качества, могут быть укорочены (снижая скорость передачи битов и таким образом качество декодированного изображения) в реальном времени. Это обеспечивает гибкий контроль над скоростью передачи передаваемых битов и позволяет регулировать слой 104 повышения качества и N слоев 102 повышения качества так, чтобы они соответствовали располагаемой скорости передачи битов.
Фиг.2 представляет блок-схему 200 сети, иллюстрирующую основной слой 202 и N слоев 204 повышения качества, посылаемые из кодера 208 через сеть 210 в декодер 212. Декодер 212 может декодировать и использовать основной слой 202 и все или части одного или больше слоев 204 повышения качества. Декодер 212 создает оптимальную аппроксимацию 214 исходной последовательности 206 видеокадров. В одном варианте осуществления оптимальная аппроксимация 214 отображается на дисплее 216, таком как компьютерный монитор, телевизионный приемник, PDA (персональный цифровой ассистент), кинопроектор и т.д. Последовательность 206 видеокадров кодируется как основной слой 202 и один или больше слоев 204 повышения качества. Основной слой 202 с более низким качеством представляет минимальный стандарт качества, а каждый из слоев 204 повышения качества является уточнением относительно качества изображения основного слоя 202. В одном варианте осуществления последовательность 206 видеокадров кодируется с использованием формата кодирования видеоданных FGS, как объясняется на фиг.1. Формат кодирования FGS может быть особенно полезен для приложений потоковой передачи и широковещательной рассылки видеоданных, где располагаемая ширина полосы передачи заранее может быть неизвестна. Во время или после кодирования слои 204 повышения качества могут быть произвольно укорочены так, чтобы соответствовать располагаемой скорости передачи битов. Когда доступная скорость передачи битов изменяется, слои 204 повышения качества могут быть укорочены соответствующим образом в реальном времени, чтобы обеспечивать декодированную последовательность видеокадров оптимального качества относительно текущей ширины полосы. Например, сеть 200 может укорачивать слои 204 повышения качества и затем посылать потоки битов разным адресатам с различными скоростями передачи битов.
Фиг.3 иллюстрирует способ 300 кодирования информации. В одном варианте осуществления подлежащая кодированию информация содержит последовательность видеокадров. Способ 300 может выполняться в кодере видеоданных, а инверсия способа 300 может выполняться с помощью декодера видеоданных. Кодер представляет собой устройство, используемое для изменения сигнала или данных в код. Затем декодер может производить исходный сигнал или аппроксимацию исходного сигнала из этого кода. Кодер и декодер могут вместе упоминаться как кодек видеоданных, который кодирует исходное изображение или последовательность видеокадров в сжатую форму и декодирует ее, чтобы производить копию или аппроксимацию исходной последовательности.
Способ 300 начинается 302 с приема 304 кодером последовательности видеокадров. В одном варианте осуществления последовательность видеокадров представляет собой разуплотненный видеосигнал. Кодер начинает сжимать последовательность видеокадров, используя подобия между соседними кадрами видеоданных и составляя 306 прогнозирование текущего видеосигнала. Прогнозирование образуется из одного или больше предыдущих или будущих кадров и улучшается посредством компенсирования различий между кадрами. Затем формируется 308 разностный сигнал посредством вычитания прогнозируемого кадра из фактического текущего кадра. Кодер использует подобия между соседними выборками остаточной части прогнозирования для снижения пространственной избыточности.
Способ 300 продолжается посредством применения 310 преобразования к разностному сигналу, чтобы снизить остающуюся пространственную избыточность. Преобразование обращает сигналы остаточной части прогнозирования в другую область, в которой они представлены коэффициентами преобразования. Коэффициенты квантуются 312, чтобы удалить незначимые значения, оставляя небольшое количество значимых коэффициентов, которые обеспечивают более компактное представление остаточных выборок. В одном варианте осуществления коэффициенты квантуются с использованием ПК-6, который эффективно уменьшает размер этапа квантования вдвое. В результате уменьшенного размера этапа квантования в текущем кадре отличными от нуля становятся больше коэффициентов преобразования. Например, остаток прогнозирования, кодируемый с использованием способа 300, может быть в слое повышения качества. Если предыдущий слой кадра видеоданных или основного слоя кадра видеоданных квантовался 312 с использованием параметра квантования ПК, то текущий слой повышения качества квантуется 312 с использованием ПК-6.
В одном варианте осуществления ненулевые квантованные коэффициенты в слое повышения качества могут быть классифицированы как незначимые, значимые или уточняющие коэффициенты. Термин "незначимые" коэффициенты относится к тем коэффициентам, которые являются нулевыми в основном или предыдущем слое и остаются нулевыми в текущем слое повышения качества. Термин "значимые" коэффициенты относится к тем коэффициентам, которые являются нулевыми в основном или предыдущем слое, но становятся ненулевыми коэффициентами в текущем слое повышения качества. Термин "уточняющие" коэффициенты относится к тем коэффициентам, которые уже являются ненулевыми в основном или предыдущем слое. В одном варианте осуществления каждый уточняющий коэффициент отображается 313 в троичный уточняющий символ. Троичный уточняющий символ может иметь одно из трех значений. Кодер просматривает текущий слой повышения качества и группирует 314 уточняющие символы в определенном порядке кодирования. В одном варианте осуществления кодер группирует 314 последовательные уточняющие символы в порядке кодирования, основанном на поддиапазонах. Каждая группа уточняющих символов упоминается как "группа уточняющих символов". Затем кодер кодирует 316 группы уточняющих символов и добавляет эти коды к потоку битов. В одном варианте осуществления кодер кодирует 316 группу уточняющих символов с использованием кода переменной длины (VLC) из таблицы VLC. В другом варианте осуществления таблица VLC, используемая для кодирования одной группы уточняющих символов, может динамически выбираться из набора таблиц VLC на основании текущей оценки статистического распределения уточняющих коэффициентов.
В дополнительном варианте осуществления кодер может кодировать уточняющие символы из множества слоев повышения качества. Например, кодер может кодировать множество слоев повышения качества в формате кодирования FGS. В одном варианте осуществления группы уточняющих символов из множества слоев повышения качества FGS кодируются с использованием адаптивного выбора таблицы VLC. В другом варианте осуществления таблица VLC фиксируется для одного слоя FGS, но может отличаться от таблицы VLC, используемой в другом слое FGS.
Фиг.4 иллюстрирует один вариант осуществления способа 400 декодирования закодированной последовательности видеокадров. Способ 400 декодирования может быть инверсией способа 300 кодирования, показанного на фиг.3. Способ 400 декодирования начинается 402, когда декодер принимает 404 закодированную последовательность видеокадров. Закодированная последовательность видеокадров также может упоминаться как поток битов. Декодер декодирует 406 группы уточняющих символов с использованием таблицы VLC. Если группы уточняющих символов закодированы с использованием адаптивных таблиц VLC на основании статистического распределения уточняющих коэффициентов, та же самая статистическая информация используется в декодере для выбора правильной таблицы VLC. Если декодером принимаются закодированные уточняющие символы из множества слоев повышения качества, декодер может адаптировать таблицу VLC, используемую для декодирования уточняющих символов, в соответствии с их соответственными слоями повышения качества.
Способ 400 продолжается, и декодер декодирует 408 уточняющие коэффициенты, используя недавно декодированные уточняющие символы. Затем декодер переходит к обратному квантованию 410 декодированных уточняющих коэффициентов прежде, чем их добавлять обратно к подвергнутым обратному квантованию коэффициентам основного или предыдущего слоя. Способ 400 продолжается посредством применения 412 обратного преобразования к подвергнутым обратному квантованию коэффициентам. В одном варианте осуществления обратное преобразование может включать в себя обратное дискретное косинусное преобразование. После того как декодер применяет 412 обратное преобразование к уточняющим коэффициентам, декодер создает 414 аппроксимацию исходной последовательности видеокадров, как она существовала перед способом 300 кодирования на фиг.3.
Фиг.5 иллюстрирует один вариант осуществления кадра 500 видеоданных, разделенного на множество макроблоков. Макроблоки представляют собой базовые элементы данных в процессе декодирования. Как иллюстрируется, кадр 500 видеоданных может быть разделен на множество макроблоков установленного размера, каждый из которых включает в себя выборку из кадра 500 видеоданных. В одном варианте осуществления каждый макроблок включает в себя выборку из 16×16 пикселей (минимальных элементов изображения). В дополнительном варианте осуществления каждый макроблок включает в себя компонент яркости (яркость) и два компонента хроматических данных (цветность). Компонент яркости относится к яркости конкретной выборки, в то время как компоненты цветности относятся к характеристикам цвета выборки. В одном варианте осуществления кадр 500 видеоданных дополнительно разбит на множество вырезок, вырезку А 502, вырезку В 504 и вырезку C 506. Вырезка представляет собой последовательность макроблоков, которые обрабатываются последовательно в определенном порядке кодирования. Например, вырезка А 502 и макроблоки, содержащиеся в вырезке А 502, могут кодироваться и посылаться в декодер перед вырезкой В 504 и вырезкой C 506. В дополнительном варианте осуществления порядок кодирования различных вырезок 502, 504 и 506 и отправки их в декодер могут быть произвольными. Например, вырезка В 504 может кодироваться и посылаться в декодер перед другими вырезками. Точно так же вырезка C 506 может кодироваться и посылаться в декодер перед другими двумя вырезками. Каждый макроблок в N слоях повышения качества соответствует макроблоку в каждом из N-1 слоев повышения качества и основного слоя.
Фиг.6 иллюстрирует пример того, как классифицировать коэффициенты. Обеспечены блок 602 коэффициентов основного слоя и блок 604 коэффициентов слоя повышения качества. Пустые пространства в основном слое 602 и слое 604 повышения качества представляют коэффициенты, равные нулю. Эти коэффициенты упоминаются как незначимые коэффициенты. Каждое из остающихся пространств, 606, 608, 608a и 608b, представляет коэффициент, который может иметь ненулевое значение. В одном варианте осуществления элемент 602 коэффициента основного слоя находится в предыдущем слое повышения качества при использовании формата кодирования видеоданных FGS. Как предварительно объяснялось, во время кодирования по способу 300, показанному на фиг.3, коэффициенты преобразования квантуются. После квантования ненулевые коэффициенты в блоке 604 коэффициентов слоя повышения качества, у которых соответствующие коэффициенты в блоке 602 коэффициентов основного слоя являются нулевыми, далее упоминаются как значимые коэффициенты 606. Те коэффициенты, у которых соответствующие коэффициенты в основном слое являются ненулевыми, далее упоминаются как уточняющие коэффициенты 608. Поскольку значимые коэффициенты 606 и уточняющие коэффициенты 608 имеют отличающиеся статистические данные, они кодируются отдельно в слое повышения качества 604, следуя формату кодирования FGS.
В одном варианте осуществления значимые коэффициенты 606 являются теми коэффициентами, у которых соответствующие коэффициенты 606a и 606b (коэффициент, представляющий тот же самый поддиапазон) в основном или предыдущем слое являются нулевыми. Уточняющие коэффициенты 608 являются теми коэффициентами, у которых соответствующие коэффициенты 608a и 608b в основном или предыдущем слое являются ненулевыми.
Фиг.7 иллюстрирует недостаток 700 широко распространенной схемы уточняющего кодирования CAVLC, в которой используется поблочный порядок кодирования. Поблочный порядок, по существу, генерирует в пространственном отношении неравномерное улучшение качества в пределах кадра 710 видеоданных. Как показано на фиг.7, когда поток 708 битов укорочен, все блоки видеоданных, представленные в потоке 708 битов до укорачивания 704 (блоки 0, 1,... n-1), будут иметь лучшее качество 712 видеоданных по сравнению с блоками 706 видеоданных (блоки n и on), у которых уточняющие коэффициенты теряются во время укорачивания 714. Лучший порядок для кодирования этих уточняющих коэффициентов заключается в использовании порядка кодирования, основанного на поддиапазонах, который подробно показан на следующем чертеже.
Фиг.8 иллюстрирует один вариант осуществления основанного на поддиапазонах порядка 800 кодирования. В одном варианте осуществления первый блок 802, второй блок 804 и третий блок 806 представляют собой три блока коэффициентов в одном и том же слое повышения качества. В одном варианте осуществления блоки 802, 804 и 806 являются блоками в первом слое повышения качества FGS, так что основанный на поддиапазонах порядок 800 кодирования FGS может быть распространен на первый слой FGS и может использоваться в нем. По сравнению с порядком, основанным на блоках, основанный на поддиапазонах порядок 800 кодирования посылает уточняющие коэффициенты в соответствии с поддиапазоном области преобразования, которому они принадлежат. В одном варианте осуществления система обозначений Вx, y, иллюстрируемая в блоках 802, 804 и 806, может представлять коэффициент в поддиапазоне y и в блоке x. Например, B0,0 представляет коэффициент в первом поддиапазоне (поддиапазон 0) и в первом блоке 802.
В одном варианте осуществления кодер сначала кодирует любые уточняющие коэффициенты, присутствующие в позициях B0,0, B1,0 и B2,0. Затем кодер кодирует любые уточняющие коэффициенты, присутствующие в позициях B0,1, B1,1 и B2,1 и т.д. Порядок 800 кодирования поддиапазонов облегчает кодирование и отправку уточняющих коэффициентов в соответствии с поддиапазоном области преобразования, которому они принадлежат. Использование порядка 800 кодирования поддиапазонов приводит к более равномерному улучшению качества в пространственном отношении, поскольку принимается большее количество уточняющих битов.
Фиг.9 иллюстрирует один вариант 900 осуществления уточняющих символов (ref_symbol) 906, которые могут быть связаны с двумя синтаксисами, используемыми в уточняющем кодировании, coeff_refinement_flag 902 и coeff_refinement_dir_flag 904. Как предварительно объяснялось, если уточняющий коэффициент имеет значение 0, элементу синтаксиса coeff_refinement_flag 902 задается значение 0. Соответственно, ref_symbol 906 также задается значение 0. Если уточняющий коэффициент имеет ненулевое значение, coeff_ref_flag 902 задается значение 1. Если уточняющий коэффициент имеет тот же самый знак, что и соответствующий уточняющий коэффициент в основном слое или предыдущем слое повышения качества, coeff_ref_dir_flag 904 задается значение 0. Если знак уточняющего коэффициента в основном слое или предыдущем слое повышения качества противоположен знаку уточняющего коэффициента в текущем слое, подлежащем кодированию, coeff_ref_dir_flag 904 задается значение 1. В другом варианте осуществления параметры, определяющие значение coeff_ref_dir_flag 904, являются противоположными.
Если coeff_ref_dir_flag 904 задается значение 0, ref_symbol 906 задается значение 1, а если coeff_ref_dir_flag 904 задается значение 1, ref_symbol 906 задается значение 2. Затем значения ref_symbol 906 кодируются и включаются в поток битов. Ниже обеспечен один вариант осуществления кодирования значений ref_symbol 906.
Фиг.10 иллюстрирует один вариант осуществления таблицы 1000 кодирования с переменной длиной (VLC), используемой для кодирования значений опорных символов, как пояснялось на фиг.9. При порядке кодирования поддиапазонов последовательные уточняющие символы могут группироваться вместе и группа 1002 уточняющих символов кодируется с использованием таблицы 1000 VLC. Таблица 1000 включает в себя множество элементов. Каждый элемент имеет значение группы 1002 уточняющих символов, как пояснялось на фиг.9, длину 1004 кода для кода переменной длины, предназначенного для кодирования группы 1002 уточняющих символов конкретного значения, и кодовое слово 1006 кода переменной длины для кодирования группы 1002 уточняющих символов конкретного значения. Затем кодовое слово 1006 включается в поток битов и посылается в декодер.
В одном варианте осуществления в уточняющем кодировании используется единственная таблица VLC, подобная таблице 1000; для кодера и декодера не является необходимым постоянно накапливать и обновлять статистические данные уточняющего символа, таким образом вычислительная сложность может быть значительно снижена. В другом варианте осуществления таблица VLC выбирается из множества таблиц на основании оценки статистического распределения уточняющих коэффициентов, эффективность может быть улучшена с дополнительной сложностью вероятностной оценки и выбора таблицы.
Обращаясь теперь к фиг.11, отметим, что современные стандарты SVC обеспечивают возможность для множества слоев на вершине дискретного основного слоя 1102. Когда имеется больше, чем один слой 1104 и 1106 FGS, начиная со второго слоя 1106 FGS и выше, все уточняющие коэффициенты принадлежат одному из двух классов: "старые" уточняющие коэффициенты представляют собой коэффициенты, которые уже имеют уточняющие коэффициенты в предыдущем слое 1104 FGS, а "новые" уточняющие коэффициенты представляют собой коэффициенты, которые стали значимыми только в предыдущем слое 1104 FGS и только входят в уточняющую стадию в текущем слое 1106. Фиг.11 обеспечивает пример наличия двух слоев 1104 и 1106 FGS. Первый слой 1104 FGS содержит значимые коэффициенты 1108 так же, как уточняющие коэффициенты 1110. Второй слой 1106 FGS включает в себя "старые" уточняющие коэффициенты 1112, а также "новые" уточняющие коэффициенты 1114. Коэффициент 1116 представляет собой новый значимый коэффициент во втором слое 1106 FGS. Остающиеся незаполненные позиции представляют собой незначимые коэффициенты, которые не имеют ненулевых значений.
Два типа уточняющих коэффициентов 1112 и 1114 имеют различные вероятностные распределения символов. Поэтому в одном варианте осуществления для их кодирования лучше использовать различные таблицы VLC. Кроме того, в зависимости от уровня текущего слоя FGS могут использоваться различные таблицы кодирования VLC. Например, для кодирования уточняющих коэффициентов, включенных во второй слой 1106 FGS, может использоваться другая таблица VLC, чем таблица, используемая для применения уточняющих коэффициентов, включенных в первый слой 1104 FGS. Следовательно, чтобы улучшить эффективность, должна использоваться таблица кодирования, лучше приспособленная для такого вероятностного распределения. Такая адаптация таблицы VLC имеет очень низкую сложность, поскольку она основана исключительно на классе уточняющих коэффициентов и уровне слоя FGS, а не на том, чтобы полагаться на сбор и обновление статистических данных символов. В другом варианте осуществления таблица VLC может выбираться динамически на основании оценки статистического распределения уточняющих коэффициентов для текущего слоя FGS.
Фиг.12 иллюстрирует один вариант 1200 осуществления решения проблемы, обусловленной группированием уточняющих символов, когда перемежаются значимое и уточняющее кодирование. В кодировании FGS проход значимого кодирования и проход уточняющего кодирования для различных блоков обычно перемежаются вместе. Одна причина для этого заключается в том, что один блок может содержать меньшее количество значимых коэффициентов, чем другой блок. Когда проход значимого кодирования определенного блока закончен, вслед за этим начинается уточняющий проход для этого блока, в то время как блок рядом с ним до сих пор проходит свой проход значимого кодирования. В одном варианте осуществления значимое кодирование (S0,0, а затем КБЛ (конец блока)) для блока A 1202 заканчивается после двух циклов. Затем начнется уточняющее кодирование R0,0 (и позже R0,1). Но в это время значимое кодирование блока В 1204 (коэффициенты S1,2 и КБЛ) все еще продолжается.
Другая причина для перемежаемого значимого и уточняющего кодирования заключается в использовании порядка кодирования поддиапазонов. Фиг.13 иллюстрирует другой вариант 1300 осуществления, где значимое кодирование и уточняющее кодирование могут перемежаться. В одном варианте осуществления коэффициенты просматриваются в поддиапазонах. Например, при просматривании 0-го поддиапазона 1306 блок A 1302 содержит значимый коэффициент S0,0. Следовательно, выполняется значимое кодирование S0,0. Точно так же, когда просматривается 0-й поддиапазон 1306 блока В 1304, выполняется уточняющее кодирование уточняющего коэффициента R1,0.
Это поведение перемежаемого значимого и уточняющего кодирования производит проблему, когда уточняющее кодирование выполняется посредством группирования множества (например, трех) уточняющих коэффициентов. На стороне кодера три уточняющих символа буферизируются прежде, чем посылается кодовое слово VLC. Но на стороне декодера всякий раз, когда сталкиваются с декодированием уточняющего коэффициента, декодер будет пытаться считывать из потока битов кодовое слово VLC, представляющее группу из трех уточняющих символов. Но это кодовое слово все еще буферизировано в буфере кодирования кодера и еще не было отправлено. Потеря синхронизации между кодером и декодером означает, что такая схема кодирования (группирование уточняющих символов, когда значимый и уточняющий проходы перемежаются) будет приводить к сбою. Чтобы решить эту проблему, обеспечены и представлены ниже два решения.
Фиг.14 иллюстрирует способ решения 1400 на основе декодера, которое не требует никакого изменения на стороне кодера. Кодер всегда может пытаться группировать вместе каждые три уточняющих символа перед отправкой ключевого слова. На стороне декодирования, когда требуется уточняющий коэффициент, выполняются следующие операции. Способ 1400 начинается установлением 1402 счетчика в исходное состояние на нуль. Сохраняется 1404 местоположение запрашиваемого уточняющего коэффициента, сохраняется 1406 знак соответствующего коэффициента основного слоя, счетчик (инициализированный на нуль в начале декодирования вырезки) увеличивается, чтобы отслеживать, сколько таких запросов было сделано 1408, если этот счетчик достигает трех 1410, активизируется 1412 операция "считывания" и выполняется нормальное декодирование VLC. Возвращается группа из трех уточняющих символов, которые затем распределяются обратно в соответствующие местоположения коэффициентов, как они предварительно сохранялись, 1414, и счетчик возвращается в исходное положение на нуль 1416. Если счетчик еще не достиг трех 1410, способ 1400 возвращается к этапу 1402 и продолжается его выполнение.
В то время как решение на стороне декодера накладывает большую нагрузку на декодер, решение на стороне кодера имеет минимальное воздействие сложности на декодер. Основная концепция заключается в том, что кодер всегда отправляет множество (например, три) уточняющих коэффициентов, декодер гарантированно имеет достаточно уточняющих символов, находящихся в буфере, когда требуются уточняющие коэффициенты. Фиг.15 иллюстрирует способ 1500 одного типа решения на основе кодера. Кодер предварительно просматривает 1502 определенное количество блоков в вырезке и определяет порядок 1504, с которым все уточняющие коэффициенты будут посылаться во время фактической стадии кодирования. По этому способу уточняющие коэффициенты сохраняются 1506 в очереди в соответствии с этим порядком кодирования. На стадии кодирования, когда нужно посылать уточняющий коэффициент, определяется 1508, был ли он сгруппирован вместе с предыдущим коэффициентом (коэффициентами) и уже отправлен. Если так, то никакое действие не предпринимается 1510; иначе, этот уточняющий коэффициент посылается 1512 вместе с двумя коэффициентами, находящимися непосредственно рядом с ним в очереди. Способ 1500 продолжается до тех пор, пока проход кодирования не будет закончен.
Отметим, что решения и на основе кодера, и на основе декодера применяются к любому типу перемежения значимого прохода и уточняющего прохода из различных блоков, включая, но не ограничиваясь этим, два порядка кодирования, поддерживаемые в настоящее время в рекомендации проекта SVC. Эти два решения также применяются к группированию любого количества уточняющих символов, а не ограничены только группированием трех символов.
Также должно быть отмечено, что и решения на основе кодера, и решения на основе декодера можно применять к уточняющему кодированию на основе блоков, как определено в 5-м Объединенном проекте (JD5) SVC, таким образом делая ненужным смещение уточняющих остающихся битов, хранящихся в буфере, в конце каждого блока. Для решения на основе декодера дополнительное изменение на стороне кодера может гарантировать синхронизацию кодера и декодера. Поскольку схема уточняющего кодирования на основе блоков в JD5 адаптирует таблицу VLC, количество сгруппированных уточняющих символов может изменяться между 1, 3 и 4. В конце блока кодер должен приостанавливать адаптацию таблицы VLC до тех пор, пока он не столкнется с достаточным количеством уточняющих коэффициентов (это случится несколько позже, поскольку кодер выполняет уточняющее кодирование последовательных блоков). Когда он столкнется с достаточным количеством уточняющих коэффициентов, чтобы вызвать операцию записи кодового слова VLC, кодер может возобновить нормальную адаптацию таблицы VLC. В соответствии с этой схемой частая операция смещения (выполняемая один раз для каждого блока), как используется в широко распространенном уточняющем кодировании, может быть сведена к минимуму, и эффективность кодирования может быть значительно улучшена.
В конце кодирования определенного количества уточняющих коэффициентов может использоваться операция смещения, если количество остающихся уточняющих коэффициентов является ненулевым и составляет меньше, чем размер группы, используемой в обычном процессе кодирования. Один способ выполнения операции смещения состоит в добавлении наиболее вероятных символов, чтобы сделать полную группу и кодировать последнюю группу так же, как другие группы. Например, предположим, что обычный размер группы принимается равным 3, и что в операции смещения имеется один остающийся коэффициент, подлежащий кодированию, и что символом является 2. Будет кодироваться группа (2, 0, 0), предполагая, что символ "0" является наиболее вероятным символом в троичном наборе символов. На стороне декодера эти заполняющие символы отбрасываются. Операции смещения также можно выполнять более часто, чтобы снизить сложность реализации. Группа уточняющих коэффициентов, которые кодируются вместе, формируется из различных местоположений. Ограничение расстояния между коэффициентами в одной и той же группе приведет к нескольким разгруппированным символам, которые должны быть обработаны с помощью операций сдвигания. В другом варианте осуществления вместо формирования полной группы посредством прибавления наиболее вероятных символов, которые будут отбрасываться декодером, используются таблицы VLC, разработанные для кодирования меньших групп. Это может использоваться, когда количество уточняющих коэффициентов, подлежащих сдвиганию, будет точно известно декодеру. Предположим, что размер группы составляет 3 и имеется только один коэффициент "R", подлежащий сдвиганию. Вместо кодирования группы (R, 0, 0) с использованием таблиц VLC для кодирования группы из 3 символов более эффективно использовать специальную таблицу VLC. Например, уточняющий символ со значением "0" кодируется как "1", уточняющий символ со значением "1" кодируется как "01", а уточняющий символ со значением "2" кодируется как "00". Точно так же, если размер группы составляет 3, и имеются два коэффициента, "R1" и "R2", подлежащие сдвиганию. Вместо кодирования группы (R1, R2, 0) могут использоваться другие таблицы VLC, чтобы кодировать меньшую группу (R1, R2). В одном варианте осуществления используется код Exponential-Golomb, чтобы кодировать индекс группы, который вычисляется как R1*3 + R2. Следует отметить, что эквивалентным образом индекс кодируемой группы также может быть сформирован как R1 + R2*3.
Фиг.16 иллюстрирует устройство 1600, сконфигурированное для обрабатывания цифровых изображений и/или цифровых видеоданных. Устройство 1600 может представлять собой или может быть реализовано в цифровом телевизионном приемнике, цифровой системе непосредственного вещания, устройстве беспроводной связи, персональном цифровом ассистенте (ПЦА), компактном портативном компьютере, настольном компьютере, цифровой фотокамере, устройстве цифровой записи, цифровом телевизионном приемнике с поддержкой работы в сети, радиотелефоне сотовой или спутниковой связи или в любом телекоммуникационном устройстве с возможностями видеотелефонной связи (ВТС).
Устройство 1600 может обрабатывать, кодировать, декодировать, передавать и/или принимать данные изображений и/или видеоданные. Видеоданные могут быть захвачены видеокамерой, такой как модуль захвата видеоизображений (или датчик изображения) 1612, извлечены из архива видеоданных или быть получены другим способом. Модуль 1610 кодирования видеоданных в устройстве 1600 может использовать стандарт кодирования видеоданных, такой как MPEG-4, ITU-T H.263, ITU-T H.264, или любой другой стандарт кодирования видеоданных. Модуль 1610 кодирования видеоданных может поддерживать методы межкадрового кодирования, такие как оценка движения и компенсация движения, и методы внутрикадрового кодирования, такие как методы кодирования с пространственной оценкой и внутрикадровым прогнозированием.
Устройство 1600 может включать в себя устройство 1612 захвата изображений/видеоданных, такое как фотокамера или видеокамера, чтобы захватывать изображения или последовательности видеокадров и сохранять захваченные изображения или последовательности в запоминающем устройстве 1614. Модуль 1602 обработки изображений/видеоданных может обрабатывать изображения и/или последовательности видеокадров. Запоминающее устройство 1604 может сохранять изображения и/или последовательности видеокадров перед и после такой обработки.
Приемопередатчик 1616 может принимать и/или передавать кодированные последовательности видеокадров в другое устройство. Приемопередатчик 1616 может использовать стандарт беспроводной связи, такой как множественный доступ с кодовым разделением каналов (CDMA). Примеры стандартов CDMA включают в себя CDMA 1xEV-DO, WCDMA (широкополосный множественный доступ с кодовым разделением каналов) и т.д.
Один или больше элементов устройства 1600 могут быть коммуникационным образом соединены через шину 1618 связи. В дополнение к элементам, показанным на фиг.16, или вместо них, в устройство 1600 могут быть включены другие элементы. Архитектура, иллюстрируемая на фиг.16, представляет собой просто пример. Методы, описанные в данном описании, могут быть реализованы с помощью ряда других архитектур.
Запоминающее устройство 1614 может иметь относительно большое пространство памяти. Запоминающее устройство 1614 может содержать динамическое оперативное запоминающее устройство (ДОЗУ) или флэш-память. Запоминающее устройство 1614 может содержать технологию памяти логического элемента "НЕ - ИЛИ" или "НЕ - И", или любую другую технологию хранения данных. В других примерах запоминающее устройство 1614 может содержать энергонезависимое запоминающее устройство или любой другой тип устройства хранения данных.
Модуль 1602 обработки изображений/видеоданных может содержать набор микросхем для мобильного радиотелефона, который может включать в себя аппаратное обеспечение, программное обеспечение, встроенное программное обеспечение и/или один или больше микропроцессоров, цифровые процессоры сигналов (ЦПС), интегральные схемы прикладной ориентации (ИСПО), программируемые пользователем вентильные матрицы (ППВМ) или их различные комбинации. Модуль 1602 обработки может включать в себя локальное запоминающее устройство 1604, подсоединенное к модулю 1608 предварительной обработки изображений/видеоданных и к модулю 1610 кодирования изображений/видеоданных. Модуль 1610 кодирования может содержать кодер/декодер (кодек) для кодирования (или сжатия) и декодирования (или разуплотнения) цифровых видеоданных.
Локальное запоминающее устройство 1604 может содержать пространство менее и более быстродействующего запоминающего устройства относительно запоминающего устройства 1614. Например, локальное запоминающее устройство 1604 может содержать синхронное динамическое ОЗУ (СДОЗУ). Локальное запоминающее устройство 1604 может содержать внутрикристальную память, объединенную с другими компонентами модуля 1602 обработки, чтобы обеспечивать быстрый доступ к данным во время процесса кодирования, требующего интенсивной работы процессора. Однако запоминающие устройства 1614 и 1604 могут быть объединены в одно запоминающее устройство или могут быть реализованы в ряде других конфигураций. Контроллер 1606 запоминающего устройства может управлять выбором и обратной записью запоминающего устройства в локальном запоминающем устройстве 1604.
Модуль 1608 предварительной обработки изображений/видеоданных может выполнять один или больше методов обработки изображений на кадрах последовательности видеокадров, чтобы улучшать качество изображения и таким образом улучшать качество последовательности видеокадров. Например, модуль 1608 предварительной обработки изображений/видеоданных может выполнять такие методы, как коррекция спада характеристики линзы, масштабирование, коррекция цвета, преобразование цвета и пространственная фильтрация. Модуль 1608 предварительной обработки изображений/видеоданных также может выполнять другие методы. В общем, методы, выполняемые модулем 1608, дальше упоминаются как методы "предварительной обработки" изображений, поскольку эти методы предшествуют кодированию, выполняемому модулем 1610 кодирования изображений/видеоданных.
Модуль 1612 захвата изображений/видеоданных может содержать датчики изображения, которые включают в себя группы цветных светофильтров (ГЦСФ), выполненные на поверхности датчиков. Предварительная обработка изображений, выполняемая модулем 1608, может улучшать качество последовательности видеокадров, захваченных модулем 1612 захвата. Например, модуль 1608 предварительной обработки и/или модуль 1610 кодирования может содержать ЦПС, запрограммированный для обработки изображений, захваченных модулем 1612 захвата. Та же самая область запоминающего устройства 1604 (или запоминающего устройства 1614) может использоваться и для целей предварительной обработки изображений, и для других целей сохранения.
Модуль 1610 кодирования изображений/видеоданных может выполнять кодирование изображений и/или видеоданных, которое может включать в себя один или больше методов сжатия видеоданных, таких как межкадровое сжатие и/или внутрикадровое сжатие. Например, модуль 1610 кодирования может реализовывать оценку движения и способы компенсации движения, чтобы использовать временную или межкадровую корреляцию данных для обеспечения межкадрового сжатия. В качестве альтернативы или дополнения, модуль 1610 кодирования может выполнять методы пространственной оценки и внутрикадрового прогнозирования, чтобы использовать пространственную или внутрикадровую корреляцию данных для обеспечения внутрикадрового сжатия. Результаты компенсации движения (или внутрикадрового прогнозирования) упоминаются как "остаток" и могут содержать блок данных, показательный для различий между текущим блоком видеоданных, подлежащим кодированию, и прогнозируемым блоком, идентифицированным по оценке движения или пространственной оценке.
После того как модуль 1610 кодирования выполнит компенсацию движения (или внутрикадровое прогнозирование) для образования остатка, может быть выполнена серия дополнительных этапов, чтобы дополнительно закодировать остаток и дополнительно сжать данные. Дополнительные этапы могут зависеть от используемого стандарта кодирования, но в общем упоминаются как "остаточное кодирование". Модуль 1610 кодирования может выполнять один или больше из этих методов сжатия видеоданных, чтобы снижать количество данных, необходимых для сообщения последовательности видеокадров через приемопередатчик 1616 другому устройству.
Информация и сигналы могут быть представлены с использованием любых из множества различных технологий и методов. Например, данные, инструкции, команды, информация, сигналы, биты, символы и кодовые элементы, которые могут упоминаться по всему приведенному выше описанию, могут быть представлены напряжениями, токами, электромагнитными волнами, магнитными полями или частицами, оптическими полями или частицами, или любой их комбинацией.
Различные иллюстративные логические блоки, модули, схемы и этапы алгоритмов, описанные в связи с вариантами осуществления, раскрытыми в данном описании, могут быть реализованы как электронное оборудование, программное обеспечение или их комбинации. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратного обеспечения и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы были описаны выше в общем на основе их функциональных возможностей. Реализованы ли такие функциональные возможности, как аппаратное обеспечение или программное обеспечение, зависит от конкретного применения и конструктивных ограничений, накладываемых на всю систему. Специалисты в данной области техники могут реализовывать описанные функциональные возможности различными способами для каждого конкретного применения, но такие решения выполнения не должны интерпретироваться как вызывающие отклонения от объема настоящего раскрытия.
Различные иллюстративные логические блоки, модули и схемы, описанные в связи с раскрытыми в данном описании вариантами осуществления, могут быть реализованы или выполнены с помощью процессора общего назначения, цифрового процессора сигналов (ЦПС), интегральной схемы прикладной ориентации (ИСПО), программируемой пользователем вентильной матрицы (ППВМ) или другого программируемого логического устройства, дискретного логического элемента или транзисторных логических схем, дискретных компонентов аппаратного обеспечения или любой их комбинации, предназначенной для выполнения функций, описанных в данном описании. Процессором общего назначения может быть микропроцессор, но в качестве альтернативы, процессором может быть любой общепринятый процессор, контроллер, микроконтроллер или конечный автомат. Процессор также может быть реализован в виде вычислительных устройств, например в виде комбинации ЦПС и микропроцессора, множества микропроцессоров, одного или больше микропроцессоров вместе с ядром ЦПС, или любой другой такой конфигурации.
Этапы способа или алгоритма, описанные в связи с раскрытыми в данном описании вариантами осуществления, могут быть воплощены непосредственно в аппаратном обеспечении, в программном модуле, выполняемом процессором, или в комбинации и того и другого. Программный модуль может постоянно находиться в памяти ОЗУ, флэш-памяти, памяти ПЗУ, памяти ППЗУ, памяти ЭСППЗУ (электрически стираемого ППЗУ), регистрах, жестком диске, съемном диске, CD-ROM или любой другой форме носителя записи, известной в технике. Носитель записи подсоединен к процессору так, что процессор может считывать с носителя записи и записывать на него информацию. В качестве альтернативы, носитель записи может быть объединен с процессором. Процессор и носитель записи могут постоянно находиться в ИСПО. ИСПО может постоянно находиться в терминале пользователя. В качестве альтернативы, процессор и носитель записи могут постоянно находиться как дискретные компоненты в терминале пользователя.
Раскрытые в данном описании способы содержат один или больше этапов или действий, предназначенных для достижения описанного способа. Этапы и/или действия способа могут быть взаимозаменяемыми друг с другом не выходя при этом за рамки объема настоящего раскрытия. Другими словами, если определенный порядок этапов или действий не требуется для надлежащего функционирования варианта осуществления, порядок и/или использование определенных этапов и/или действий можно изменять, не отступая при этом от объема настоящего раскрытия.
Хотя были проиллюстрированы и описаны определенные варианты осуществления и применения настоящего раскрытия, должно быть понятно, что раскрытие не ограничено точной конфигурацией и компонентами, раскрытыми в данном описании. Различные модификации, видоизменения и вариации, которые специалистам в данной области техники будут очевидны, могут быть сделаны в размещении, функционировании и деталях способов и систем настоящего раскрытия, раскрытых в данном описании не выходя при этом за рамки сущности и объема раскрытия.