АДАПТИВНОЕ СКАНИРОВАНИЕ КОЭФФИЦИЕНТОВ ПРИ КОДИРОВАНИИ ВИДЕО
ADAPTIVE COEFFICIENT SCANNING IN VIDEO CODING

Данная заявка притязает на приоритет следующих предварительных заявок на патент (США): предварительная заявка на патент (США) номер 61/030443, поданная 21 февраля 2008 года, предварительная заявка на патент (США) номер 60/944470, поданная 15 июня 2007 года, и предварительная заявка на патент (США) номер 60/979762, поданная 12 октября 2007 года.
Содержимое каждой из этих заявок полностью содержится в данном документе по ссылке.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Данное раскрытие сущности относится к кодированию цифрового видео, а более конкретно, к энтропийному кодированию коэффициентов видеоблоков, таких как коэффициенты преобразования преобразованных видеоблоков.
Уровень техники
Возможности цифрового видео могут быть встроены в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового прямого вещания, устройства беспроводной связи, такие как переносные радиотелефоны, беспроводные широковещательные системы, персональные цифровые устройства (PDA), портативные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, устройства видеоигр, консоли видеоигр и т.п. Цифровые видеоустройства реализуют такие технологии сжатия видеоизображения, как MPEG-2, MPEG-4 или H.264/MPEG-4, часть 10, усовершенствованное кодирование видео (AVC), чтобы более эффективно передавать и принимать цифровое видео. Технологии сжатия видеоизображений выполняют пространственное и временное прогнозирование для того, чтобы уменьшать или удалять избыточность, присутствующую в видеопоследовательностях.
Сжатие видео, в общем, включает в себя пространственное прогнозирование и/или временное прогнозирование. В частности, внутреннее (внутрикадровое) кодирование базируется на пространственном прогнозировании, чтобы уменьшать или удалять пространственную избыточность между видеоблоками в данной кодированной единице, которая может содержать видеокадр, серию последовательных макроблоков видеокадра и т.п. В отличие от этого взаимное (межкадровое) кодирование базируется на временном прогнозировании, чтобы уменьшать или удалять временную избыточность между видеоблоками последовательных кодированных единиц видеопоследовательности. Для внутреннего кодирования видеокодер выполняет пространственное прогнозирование, чтобы сжимать данные на основе других данных в той же кодированной единице. Для взаимного кодирования видеокодер выполняет оценку движения для того, чтобы отслеживать перемещение совпадающих видеоблоков между двумя или более смежными кадрами.
Кодированный видеоблок может представляться посредством информации прогнозирования, которая содержит режим прогнозирования и размер прогнозного блока, а также остаточный блок данных, указывающий различия между кодируемым блоком и прогнозным блоком. В случае взаимного кодирования один или более векторов движения используются для того, чтобы идентифицировать прогнозный блок данных, тогда как в случае внутреннего кодирования режим прогнозирования может использоваться для того, чтобы формировать прогнозный блок. Как внутреннее кодирование, так и взаимное кодирование могут задавать несколько различных режимов прогнозирования, которые могут задавать различные размеры блоков и/или технологии прогнозирования, используемые при кодировании.
Видеокодер может применять процессы преобразования, квантования и кодирования по энтропии для того, чтобы дополнительно уменьшать скорость передачи битов, ассоциированную с передачей остаточного блока. Технологии преобразования могут содержать дискретные косинусные преобразования или концептуально аналогичные процессы, такие как вейвлет-преобразования, целочисленные преобразования или другие типы преобразований. В процессе дискретного косинусного преобразования (DCT) в качестве примера процесс преобразования преобразует набор пиксельных значений в коэффициенты преобразования, которые представляют энергию пиксельных значений в частотной области. Квантование применяется к коэффициентам преобразования и, в общем, заключает в себе процесс, который ограничивает число битов, ассоциированных с любым данным коэффициентом преобразования. Энтропийное кодирование содержит один или более процессов, которые совместно сжимают последовательность квантованных коэффициентов преобразования.
Перед процессом энтропийного кодирования преобразованный видеоблок коэффициентов преобразования может быть преобразован в последовательную форму посредством сканирования коэффициентов преобразования из двумерного блока в одномерный вектор. Как правило, сканирование выполняется зигзагообразным способом так, что коэффициенты преобразования в верхней левой части видеоблока появляются раньше в одномерном векторе, а коэффициенты преобразования в правой нижней части видеоблока появляются позже. Коэффициенты преобразования с высоким уровнем энергии типично постоянно размещаются около верхнего левого угла после преобразования, и, таким образом, зигзагообразное сканирование является эффективным для того, чтобы группировать ненулевые коэффициенты преобразования около начала одномерного вектора. Порядок сканирования может значительно влиять на уровень сжатия, который может достигаться при энтропийном кодировании.
Примеры процессов энтропийного кодирования включают в себя контекстно-адаптивное кодирование переменной длины (CAVLC) и контекстно-адаптивное двоичное арифметическое кодирование (CABAC). CAVLC - это один тип технологии энтропийного кодирования, поддерживаемой посредством стандарта ITU H.264/MPEG4, часть 10, AVC. CAVLC использует таблицы кодирования переменной длины (VLC) способом, который эффективно сжимает преобразованные в последовательную форму "серии" квантованных коэффициентов преобразования. CABAC - это другой тип технологии энтропийного кодирования, поддерживаемой посредством стандарта ITU H.264/MPEG4, часть 10, AVC. CABAC может заключать в себе несколько стадий, в том числе преобразование в двоичную форму, выбор контекстной модели и двоичное арифметическое кодирование. Множество других типов технологий энтропийного кодирования также существуют, и новые технологии энтропийного кодирования, вероятно, появятся в будущем.
Видеодекодер может выполнять операции обратного энтропийного кодирования, которые соответствуют типу энтропийного кодирования, используемого в процессе кодирования, для того чтобы восстанавливать одномерные векторы коэффициентов преобразования. Обратное сканирование также может выполняться в декодере, чтобы формировать двумерные блоки из принимаемых одномерных векторов коэффициентов преобразования. Видеодекодер затем обратно квантует и обратно преобразует коэффициенты преобразования в блоке, чтобы восстанавливать остаточные пиксельные данные. Видеодекодер может использовать декодированную информацию прогнозирования, содержащую режим прогнозирования, размер прогнозирования и, в случае взаимного кодирования, информацию движения, для того чтобы получать прогнозный видеоблок. Видеодекодер затем может комбинировать прогнозный блок с соответствующим восстановленным остаточным блоком, чтобы формировать декодированную последовательность видео.
Сущность изобретения
В общем, это раскрытие сущности описывает технологии для сканирования коэффициентов видеоблоков, к примеру, квантованных коэффициентов преобразования. На стороне кодирования сканирование создает одномерные векторы коэффициентов из двумерного блока коэффициентов, а на стороне декодирования обратное сканирование создает двумерные блоки коэффициентов из одномерных векторов. Вместо использования традиционного зигзагообразного сканирования технологии сканирования, описываемые в этом раскрытии сущности, адаптируют порядок сканирования коэффициентов в блоке на основе статистики, ассоциированной с ранее кодированными блоками коэффициентов, которые кодированы в этом же режиме прогнозирования. Для каждого режима прогнозирования статистика коэффициентов сохраняется, к примеру, указывая вероятности того, что данные коэффициенты имеют нулевые или ненулевые значения. Периодически могут выполняться регулирования порядка сканирования, чтобы в большей степени обеспечивать то, что ненулевые коэффициенты группируются к началу одномерного вектора, а коэффициенты с нулевым значением группируются к концу одномерного вектора, что позволяет повышать эффективность энтропийного кодирования.
Регулирование порядка сканирования может требовать большого объема вычислений. Следовательно, технологии этого раскрытия сущности могут накладывать пороговые значения и регулирования пороговых значений, которые могут уменьшать частоту, при которой осуществляется регулирование порядка сканирования, и при этом достигают требуемых усовершенствований сжатия вследствие регулирований порядка сканирования. Технологии могут выполняться взаимно-обратным способом посредством кодера и декодера. Таким образом, кодер может использовать технологии адаптивного сканирования до энтропийного кодирования, чтобы сканировать коэффициенты видеоблоков из двумерного формата в формат одномерного вектора. Декодер может сканировать принимаемые одномерные векторы коэффициентов видеоблоков, чтобы формировать двумерные блоки коэффициентов. Таким образом, коэффициенты видеоблоков могут представляться в формате двумерного блока или в формате одномерного вектора. Технологии сканирования этого раскрытия сущности, в общем, задают то, как коэффициенты видеоблоков преобразуются из формата двумерного блока в формат одномерного вектора и наоборот. Хотя это раскрытие сущности главным образом фокусируется на сканировании квантованных коэффициентов преобразования, аналогичные технологии могут использоваться для того, чтобы сканировать другие типы коэффициентов, такие как неквантованные коэффициенты или пиксельные значения непреобразованных видеоблоков, к примеру, если реализовано сканирование пикселных значений.
В одном примере это раскрытие сущности предоставляет способ кодирования коэффициентов видеоблоков, при этом способ содержит сохранение статистики, ассоциированной со значениями коэффициентов видеоблоков, для каждого из множества режимов прогнозирования, подсчет видеоблоков, ассоциированных с каждым из режимов прогнозирования, сканирование значений коэффициентов видеоблоков на основе порядков сканирования, заданных для каждого из режимов прогнозирования, оценку данного порядка сканирования, ассоциированного с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования, и энтропийное кодирование значений коэффициентов.
В другом примере это раскрытие сущности предоставляет устройство, которое кодирует коэффициенты видеоблоков, при этом устройство содержит модуль сканирования и модуль энтропийного кодирования. Модуль сканирования сохраняет статистику, ассоциированную со значениями коэффициентов видеоблоков, для каждого из множества режимов прогнозирования, подсчитывает видеоблоки, ассоциированные с каждым из режимов прогнозирования, сканирует значения коэффициентов видеоблоков на основе порядков сканирования, заданных для каждого из режимов прогнозирования, и оценивает данный порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования. Модуль энтропийного кодирования энтропийно кодирует значения коэффициентов.
В другом примере, это раскрытие сущности предоставляет устройство, которое кодирует коэффициенты видеоблоков, при этом устройство содержит средство для сохранения статистики, ассоциированной со значениями коэффициентов видеоблоков, для каждого из множества режимов прогнозирования, средство для подсчета видеоблоков, ассоциированных с каждым из режимов прогнозирования, средство для сканирования значений коэффициентов видеоблоков на основе порядков сканирования, заданных для каждого из режимов прогнозирования, средство для оценки данного порядка сканирования, ассоциированного с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования, и средство для энтропийного кодирования значений коэффициентов.
В другом примере, это раскрытие сущности предоставляет устройство, содержащее модуль сканирования, который сохраняет статистику, ассоциированную со значениями коэффициентов видеоблоков, для каждого из множества режимов прогнозирования, подсчитывает видеоблоки, ассоциированные с каждым из режимов прогнозирования, сканирует значения коэффициентов видеоблоков из двумерных блоков в одномерные векторы на основе порядков сканирования, заданных для каждого из режимов прогнозирования, и оценивает данный порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования. Устройство также включает в себя модуль энтропийного кодирования, который энтропийно кодирует значения коэффициентов одномерных векторов, и беспроводное передающее устройство, которое отправляет поток битов, содержащий энтропийно кодированные значения коэффициентов.
В другом примере это раскрытие сущности предоставляет устройство, содержащее беспроводное приемное устройство, которое принимает поток битов, содержащий энтропийно кодированные значения коэффициентов видеоблоков в одномерных векторах, модуль энтропийного кодирования, который энтропийно декодирует значения коэффициентов видеоблоков, и модуль сканирования. В этом случае модуль сканирования сохраняет статистику, ассоциированную со значениями коэффициентов видеоблоков, для каждого из множества режимов прогнозирования, подсчитывает видеоблоки, ассоциированные с каждым из режимов прогнозирования, сканирует значения коэффициентов видеоблоков из одномерных векторов в двумерные блоки на основе порядков сканирования, заданных для каждого из режимов прогнозирования, и оценивает данный порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования.
Технологии, описанные в данном раскрытии сущности, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. Если реализовано в аппаратных средствах, устройство может быть осуществлено как интегральная схема, процессор, дискретная логика или любая комбинация вышеозначенного. Если реализовано в программном обеспечении, программное обеспечение может приводиться в исполнение в одном или более процессоров, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA) или процессор цифровых сигналов (DSP). Программное обеспечение, которое выполняет технологии, может быть первоначально сохранено на машиночитаемом носителе и загружено и приведено в исполнение в процессоре.
Соответственно, это раскрытие сущности также предполагает машиночитаемый носитель, содержащий инструкции, которые при выполнении в устройстве кодирования видео инструктируют устройству кодировать коэффициенты видеоблоков, при этом инструкции инструктируют устройству сохранять статистику, ассоциированную со значениями коэффициентов видеоблоков, для каждого из множества режимов прогнозирования, рассчитывать видеоблоки, ассоциированные с каждым из режимов прогнозирования, чтобы сканировать значения коэффициентов видеоблоков на основе порядков сканирования, заданных для каждого из режимов прогнозирования, оценивать данный порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования, и энтропийно кодировать значения коэффициентов.
Подробности одного или более вариантов осуществления данного раскрытия сущности изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества технологий, описанных в данном раскрытии сущности, должны стать очевидными из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
Фиг.1 является примерной блок-схемой, иллюстрирующей систему кодирования и декодирования видео.
Фиг.2 является блок-схемой, иллюстрирующей пример видеокодера в соответствии с этим раскрытием сущности.
Фиг.3 является блок-схемой, иллюстрирующей пример видеодекодера в соответствии с этим раскрытием сущности.
Фиг.4 является концептуальной схемой, иллюстрирующей зигзагообразное сканирование видеоблока 4x4.
Фиг.5 является концептуальной схемой, иллюстрирующей зигзагообразное сканирование видеоблока 8x8.
Фиг.6 является концептуальной схемой, иллюстрирующей статистику, ассоциированную с блоками конкретного режима и алгоритма согласно технологиям этого раскрытия сущности.
Фиг.7 является концептуальной схемой, иллюстрирующей гипотетический пример в соответствии с этим раскрытием сущности.
Фиг.8 и 9 являются блок-схемами последовательности операций способа, иллюстрирующими технологии в соответствии с этим раскрытием сущности.
Подробное описание изобретения
Это раскрытие сущности описывает технологии для сканирования коэффициентов видеоблоков, к примеру квантованных коэффициентов преобразования. В этом раскрытии сущности термин "блок коэффициентов", в общем, упоминается как набор коэффициентов преобразования, ассоциированных с видеоблоком. Блоки коэффициентов могут представляться в формате двумерного блока или в формате одномерного вектора. Технологии сканирования этого раскрытия сущности задают то, как блоки коэффициентов преобразуются из формата двумерного блока в формат одномерного вектора посредством кодера и как блоки коэффициентов преобразуются из формата одномерного вектора в формат двумерного блока посредством декодера. Хотя это раскрытие сущности главным образом описывает технологии сканирования как применяемые к преобразованным и квантованным видеоблокам, технологии сканирования, описанные в данном документе, также могут применяться для того, чтобы преобразовывать другие типы видеоданных (к примеру, видеоблок в пиксельной области) из формата двумерного блока в формат одномерного вектора.
Традиционно сканирование блоков коэффициентов из формата двумерного блока в формат одномерного вектора следует зигзагообразному порядку сканирования. В этом случае коэффициенты в левом верхнем углу блока коэффициентов появляются раньше в одномерном векторе, а коэффициенты в правом нижнем углу блока коэффициентов появляются позже. Коэффициенты преобразования с высоким уровнем энергии типично постоянно размещаются около левого верхнего угла после преобразования. Следовательно, зигзагообразное сканирование - это эффективный способ группировать ненулевые коэффициенты около начала одномерного вектора. Модуль энтропийного кодирования затем типично энтропийно кодирует одномерный вектор в форме серий и уровней, где серии - это число коэффициентов преобразования с нулевым значением между двумя ненулевыми коэффициентами преобразования, а уровни представляют значения ненулевых коэффициентов преобразования. Кроме того, после того как последний ненулевой коэффициент преобразования отправлен для данного блока коэффициентов (к примеру, в формате одномерного вектора), энтропийный кодер типично отправляет символ конца блока (EOB) или флаг последнего коэффициента, чтобы указывать, что это последний ненулевой коэффициент преобразования в блоке. Посредством группировки ненулевых коэффициентов преобразования к началу одномерных векторов более высокая степень сжатия может достигаться, поскольку могут кодироваться меньшие значения серий, а также поскольку EOB-символ или флаг последнего коэффициента могут отправляться быстрее. К сожалению, зигзагообразное сканирование не всегда достигает наиболее эффективной группировки коэффициентов.
Вместо использования традиционного зигзагообразного сканирования технологии этого раскрытия сущности адаптируют порядок сканирования на основе статистики, ассоциированной с ранее кодированными блоками, которые кодированы в этом же режиме прогнозирования. Для каждого режима прогнозирования статистика коэффициентов преобразования сохраняется, к примеру, посредством указания вероятностей того, что коэффициенты преобразования в данных позициях являются нулевыми или ненулевыми. Периодически могут выполняться регулирования порядка сканирования, чтобы в большей степени обеспечивать то, что ненулевые коэффициенты преобразования группируются к началу одномерного вектора, а коэффициенты с нулевым значением группируются к концу одномерного вектора, что позволяет повышать эффективность энтропийного кодирования. Технологии адаптивного сканирования могут осуществляться для каждой отдельной кодированной единицы, к примеру, каждого кадра, серии последовательных макроблоков или другого типа кодированной единицы. Блоки коэффициентов кодированной единицы могут первоначально сканироваться фиксированным способом (к примеру, с зигзагообразным порядком сканирования или другим фиксированным порядком сканирования), но могут быстро адаптироваться к другому порядку сканирования, если статистика блоков коэффициентов для данного режима прогнозирования указывает, что другой порядок сканирования является более эффективным для того, чтобы группировать коэффициенты с ненулевым и нулевым значением.
Тем не менее, регулирование порядка сканирования может требовать большого объема вычислений. Следовательно, технологии этого раскрытия сущности накладывают пороговые значения и регулирования пороговых значений, которые могут уменьшать частоту, при которой осуществляется регулирование порядка сканирования, при этом достигают требуемых усовершенствований сжатия вследствие таких регулирований порядка сканирования. Технологии могут выполняться взаимно обратным способом посредством кодера и декодера. Таким образом, кодер может использовать технологии адаптивного сканирования до энтропийного кодирования, чтобы сканировать коэффициенты видеоблоков из двумерного формата в одномерные векторы. Декодер может обратно сканировать принимаемые одномерные векторы коэффициентов видеоблоков после процесса энтропийного декодирования, чтобы воссоздавать блоки коэффициентов в двумерном формате. С другой стороны, фраза "блок коэффициентов", в общем, упоминается как набор преобразованных коэффициентов, представляемых либо в формате двумерного блока, либо в формате одномерного вектора.
Фиг.1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может реализовывать технологии этого раскрытия сущности. Как показано на фиг.1, система 10 включает в себя исходное устройство 12, которое передает кодированное видео в целевое устройство 16 через канал 15 связи. Исходное устройство 12 и целевое устройство 16 могут содержать любое из широкого диапазона устройств. В некоторых случаях исходное устройство 12 и целевое устройство 16 содержит переносные телефонные аппараты для беспроводной связи, такие как так называемые сотовые или спутниковые радиотелефоны. Тем не менее, технологии этого раскрытия сущности, которые применяют, в общем, адаптивное сканирование коэффициентов, не обязательно ограничены беспроводными приложениями или настройками.
В примере по фиг.1 исходное устройство 12 может включать в себя видеоисточник 20, видеокодер 22, модулятор/демодулятор (модем) 23 и передающее устройство 24. Целевое устройство 16 может включать в себя приемное устройство 26, модем 27, видеодекодер 28 и устройство 30 отображения. В соответствии с этим раскрытием сущности видеокодер 22 исходного устройства 12 может быть выполнен с возможностью осуществлять адаптивное сканирование коэффициентов до энтропийного кодирования, чтобы формировать одномерный набор данных. Аналогично видеодекодер 28 целевого устройства 16 может быть выполнен с возможностью осуществлять адаптивное сканирование коэффициентов после энтропийного декодирования, чтобы формировать двумерный набор данных. Видеодекодер 28 не принимает какой-либо индикатор относительно порядка сканирования, применяемого посредством видеокодера 22; наоборот, порядок сканирования может извлекаться по существу идентичным способом и в видеокодере 22, и в видеодекодере 28.
Проиллюстрированная система 10 по фиг.1 является просто примерной. Технологии сканирования этого раскрытия сущности могут выполняться посредством любого устройства кодирования или декодирования, которое поддерживает любую из широкого спектра технологий энтропийного кодирования, таких как контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) или другие технологии энтропийного кодирования. Исходное устройство 12 и целевое устройство 16 являются просто примерами таких устройств кодирования.
В соответствии с этим раскрытием сущности видеокодер 22 и видеодекодер 28 могут сохранять статистику, ассоциированную со значениями коэффициентов видеоблоков, для каждого из множества режимов прогнозирования и могут подсчитывать видеоблоки, ассоциированные с каждым из режимов прогнозирования. Видеокодер 22 и видеодекодер 28 сканируют значения коэффициентов видеоблоков на основе порядков сканирования, заданных для каждого из режимов прогнозирования, оценивают данный порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования, и энтропийно кодируют значения коэффициентов. Повторимся, на стороне кодирования сканирование предшествует энтропийному кодированию, тогда как на стороне декодирования сканирование следует после энтропийного декодирования.
В общем, исходное устройство 12 формирует видео для передачи в целевое устройство 16. В некоторых случаях, тем не менее, устройства 12, 16 могут работать практически симметричным способом. Например, каждое из устройств 12, 16 может включать в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу видео между видеоустройствами 12, 16, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.
Видеоисточник 20 исходного устройства 12 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, или видеопередачу от поставщика видеосодержимого. В качестве дополнительной альтернативы видеоисточник 20 может формировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию живого видео, архивного видео и сформированного компьютером видео. В некоторых случаях, если видеоисточником 20 является видеокамера, исходное устройство 12 и целевое устройство 16 могут формировать так называемые камерофоны или видеофоны. В каждом случае захваченное, предварительно захваченное или сформированное компьютером видео может быть кодировано посредством видеокодера 22. Кодированная видеоинформация затем может модулироваться посредством модема 23 согласно стандарту связи, к примеру, такому как множественный доступ с кодовым разделением каналов (CDMA) или другой стандарт или технология связи, и передаваться в целевое устройство 16 через передающее устройство 24.
Приемное устройство 26 целевого устройства 16 принимает информацию по каналу 15, и модем 27 демодулирует информацию. Процесс декодирования видео, выполняемый посредством видеодекодера 28, может выполнять энтропийное декодирование и адаптивное сканирование как часть восстановления видеопоследовательности. Процесс декодирования, аналогично процессу кодирования, использует технологии этого раскрытия сущности для того, чтобы поддерживать улучшенные уровни сжатия данных. Устройство 28 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
В примере по фиг.1 канал 15 связи может содержать любую беспроводную и проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 15 связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Канал 15 связи, в общем, представляет любую надлежащую среду связи или набор различных сред связи для передачи видеоданных из исходного устройства 12 в целевое устройство 16.
Видеокодер 22 и видеодекодер 28 может работать согласно стандарту сжатия видео, который поддерживает CAVLC, CABAC или другую технологию энтропийного кодирования, такому как стандарт ITU-T H.264, альтернативно называемый MPEG-4, часть 10, усовершенствованное кодирование видео (AVC). Тем не менее, технологии описываются со ссылкой на этот стандарт просто в целях иллюстрации. Эти технологии могут быть легко применены к любому из множества других стандартов кодирования видео, например, заданные Экспертной группой по киноизображению (MPEG) в стандарте MPEG-1, MPEG-2 и MPEG-4, ITU-T H.263, стандарт видеокодека Общества инженеров кино и телевидения (SMPTE) 421M (обычно называемый "VC-1"), стандарт, заданный посредством Рабочей группы по стандартам кодирования аудио-видео (Китай) (обычно называемый "AVS"), а также любой другой стандарт кодирования видео, заданный посредством органа стандартизации или разработанный посредством организации как собственный стандарт.
Хотя не показано на фиг.1, в некоторых аспектах видеокодер 22 и видеодекодер 28 могут быть интегрированы с аудиокодером и декодером соответственно и могут включать в себя соответствующие модули MUX-DEMUX либо другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или в отдельных потоках данных. Если применимо, модули MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
Стандарт ITU H.264/MPEG-4, часть 10, AVC сформулирован Экспертной группой в области кодирования видео (VCEG) ITU-T совместно с Экспертной группой по киноизображению (MPEG) ISO/IEC как продукт совместного партнерского проекта, известного как Объединенная группа по видеостандартам (JVT). В некоторых аспектах технологии, описанные в этом раскрытии сущности, могут быть применены к устройствам, которые, в общем, соответствуют стандарту H.264. Стандарт H.264 описан в ITU-T Recommendation H.264 "Advanced Video Coding for Generic Audiovisual Services" от Исследовательской группы ITU-T и датирован мартом 2005 года, который может упоминаться в данном документе как стандарт H.264 или спецификация H.264 либо стандарт или спецификация H.264/AVC. Объединенная группа по видеостандартам (JVT) продолжает работать над дополнениями к H.264/AVC.
Видеокодер 22 и видеодекодер 28 могут быть реализованы как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение или любые комбинации вышеозначенного. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем мобильном устройстве, абонентском устройстве, широковещательном устройстве, сервере и т.п.
Видеопоследовательность включает в себя серии видеокадров. В некоторых случаях, видеопоследовательность может компоноваться как группа изображений (GOP). Видеокодер 22 оперирует с видеоблоками в рамках отдельных видеокадров, чтобы кодировать видеоданные. Видеоблоки могут иметь фиксированный или изменяющийся размер и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр может включать в себя серии последовательных макроблоков. Каждая серия последовательных макроблоков может включать в себя серии макроблоков, которые могут быть скомпонованы в еще меньшие блоки. Макроблоки типично упоминаются как блоки данных 16×16. Стандарт ITU-T H.264 поддерживает внутреннее прогнозирование для различных размеров блоков, таких как 16×16, 8×8, 4×4 для компонентов сигнала яркости и 8x8 для компонентов сигнала цветности, а также взаимное прогнозирование для различных размеров блоков, таких как 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4x4 для компонентов сигнала яркости и соответствующие масштабированные размеры для компонентов сигнала цветности. В этом раскрытии сущности термин "видеоблоки" может упоминаться как блоки коэффициентов, к примеру, коэффициенты преобразования, после процесса преобразования, такого как дискретное косинусное преобразование или концептуально аналогичный процесс преобразования, в котором набор пиксельных значений преобразуется в частотную область. Коэффициенты преобразования могут квантоваться. Технологии сканирования этого раскрытия сущности типично применяются относительно квантованных коэффициентов преобразования, но могут быть применимыми к неквантованным коэффициентам преобразования в некоторых реализациях. Кроме того, технологии сканирования этого раскрытия сущности также могут быть применимы к блокам пиксельных значений (т.е. без процесса преобразования), которые могут быть или не быть квантованными блоками пикселных значений. Термин "коэффициент" широко используется в данном документе для того, чтобы представлять значения видеоблоков, включающие в себя не только коэффициенты преобразования блоков коэффициентов, но также и пикселные значения непреобразованных видеоблоков.
Большие видеоблоки, такие как макроблоки, могут быть разделены на видеоблоки меньшего размера. Меньшие видеоблоки могут предоставлять лучшее разрешение и могут быть использованы для местоположений видеокадра, которые включают в себя высокие уровни детальности. В общем, макроблоки (MB) и различные меньшие блоки могут считаться видеоблоками. Видеокадры могут содержать декодируемые единицы или могут быть разделены на меньшие декодируемые единицы, такие как "серии последовательных макроблоков". Таким образом, серия последовательных макроблоков может рассматриваться как последовательность видеоблоков, таких как MB и/или блоки меньшего размера, и каждая серия последовательных макроблоков может быть независимо декодируемой единицей видеокадра.
После прогнозирования преобразование может быть выполнено для остаточного блока пикселов 8x8 или остаточного блока пикселов 4x4, и дополнительное преобразование может быть применено к DC-коэффициентам блоков пикселов 4x4 для компонентов сигнала цветности или, если режим прогнозирования intra_16x16 используется, для компонентов сигнала яркости. После преобразования данные могут упоминаться как блоки коэффициентов или преобразованные видеоблоки. После преобразования блоки коэффициентов содержат коэффициенты преобразования, а не пикселные значения. С другой стороны, термин "коэффициенты", в общем, упоминается как коэффициенты преобразования, но может альтернативно упоминаться как другие типы коэффициентов или значений (к примеру, пиксельные значения без процесса преобразования).
После технологий внутреннего или взаимного прогнозирующего кодирования и преобразования (таких как целочисленное преобразование 4x4 или 8x8, используемое в H.264/AVC, или дискретное косинусное преобразование DCT), квантование может выполняться. Могут использоваться другие технологии преобразования, такие как вейвлет-сжатие. Квантование, в общем, упоминается как процесс, в котором коэффициенты квантуются так, что возможно уменьшать объем данных, используемый для того, чтобы представлять коэффициенты. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, 8-битовое значение может быть округлено в меньшую сторону до 7-битового значения во время квантования.
После квантования может выполняться сканирование и энтропийное кодирование согласно технологиям, описанным в данном документе. В частности, видеоблоки коэффициентов преобразования, такие как видеоблоки 4×4, видеоблоки 8×8 или возможно блоки других размеров, такие как видеоблоки 16×16, могут сканироваться из двумерного формата в одномерный формат. Порядок сканирования может быть инициализирован для каждой кодированной единицы и может начинаться традиционным способом (к примеру, через зигзагообразный порядок сканирования). Согласно этому раскрытию сущности порядок сканирования может быть адаптивным. В частности, порядок сканирования может адаптироваться к видеоблокам одного или более режимов прогнозирования на основе статистики, ассоциированной с этими видеоблоками. Статистика может содержать счетчик числа видеоблоков, кодированных в каждом соответствующем режиме прогнозирования, и набор вероятностей, ассоциированных с коэффициентами видеоблоков, кодированных в каждом режиме прогнозирования. Вероятности могут содержать индикатор вероятности, что данное значение коэффициента в каждом местоположении видеоблока имеет нулевое значение или имеет ненулевое значение. Альтернативно, вероятности могут содержать более детальные вероятности, указывающие фактические значения в каждом местоположении, или другой тип статистической вероятностной меры, ассоциированной со значениями коэффициентов.
Одно или более пороговых значений могут быть заданы относительно значений счетчика. С периодическими интервалами (например, когда границы макроблока встречаются) может оцениваться порядок сканирования, ассоциированный с различными режимами видеоблоков. Когда оценивается порядок сканирования, если значение счетчика, ассоциированное с данным режимом прогнозирования, удовлетворяет пороговому значению данного режима прогнозирования, то порядок сканирования для того режима может анализироваться и возможно изменяться так, чтобы отражать статистику видеоблоков, кодированных в данном режиме прогнозирования. В частности, порядок сканирования может быть задан так, чтобы коэффициенты сканировались в порядке их вероятности наличия ненулевых значений. Таким образом, местоположения коэффициентов, которые имеют более высокую вероятность ненулевых значений, сканируются до местоположений коэффициентов, которые имеют меньшую вероятность ненулевых значений. Таким образом, традиционный порядок сканирования (такой как зигзагообразный порядок сканирования) может адаптироваться к порядку сканирования, который группирует ненулевые коэффициенты больше к началу представлений одномерного вектора блоков коэффициентов. Декодер может вычислять такую же статистику и тем самым определять порядок сканирования, который использовался в процессе кодирования. Соответственно, взаимно-обратные порядки адаптивного сканирования могут применяться посредством декодера для того, чтобы преобразовывать представление одномерного вектора блоков коэффициентов обратно в формат двумерного блока.
Как отмечается, порядок сканирования (и адаптивные изменения в него) может отличаться для каждого различного прогнозирующего режима. Таким образом, статистика сохраняется для каждого различного режима прогнозирования. Это раскрытие сущности не ограничено каким-либо конкретным числом режимов или типами режимов. Различные режимы могут задавать размер видеоблока и тип прогнозирования, используемого в процессе кодирования. Множество режимов прогнозирования может содержать множество режимов внутреннего прогнозирования и множество режимов взаимного прогнозирования.
В качестве примера взаимное кодирование может поддерживать два или более режимов, такие как режим взаимного прогнозирования, который соответствует размеру блока преобразования 4×4, и режим взаимного прогнозирования, который соответствует размеру блока преобразования 8×8. В некоторых случаях могут поддерживаться несколько режимов 4×4, к примеру, прогнозирующий (P) и двунаправленный прогнозирующий режим (B). Взаимное кодирование также может поддерживать режим 8×8 P и режим 8×8 B. Кроме того, различные режимы также могут быть заданы для взаимно кодированных блоков информации о сигнале цветности и сигнале яркости. Может быть задано множество различных режимов прогнозирования взаимного кодирования, и это раскрытие сущности не ограничено каким-либо определенным набором режимов.
Внутреннее кодирование также может поддерживать широкий диапазон прогнозирующих режимов. Например, режимы внутреннего прогнозирования могут содержать множество режимов внутреннего прогнозирования сигнала яркости 4×4, множество режимов внутреннего прогнозирования сигнала яркости 8×8, множество режимов внутреннего прогнозирования сигнала яркости 16×16 и множество режимов внутреннего прогнозирования сигнала цветности 8x8. В качестве примера режимы внутреннего прогнозирования могут содержать двадцать шесть различных режимов, в которых прогнозные блоки формируются на основе различных типов распространения, адаптации и/или интерполяции соседних данных в пределах одной кодированной единицы.
Режимы внутреннего кодирования могут содержать режимы, такие как вертикальный, горизонтальный, DC, вниз и влево по диагонали, вниз и вправо по диагонали, вправо по вертикали, вниз по горизонтали, влево по вертикали и вверх по горизонтали. Каждый из этих различных режимов задает способ, которым прогнозные блоки формируются, на основе соседних данных в пределах одной кодированной единицы. Режимы внутреннего кодирования также могут задавать комбинации режимов, упомянутых выше, к примеру, вертикальный плюс горизонтальный, DC плюс вертикальный, DC плюс горизонтальный, вниз и влево по диагонали плюс горизонтальный, вниз и вправо по диагонали плюс вертикальный, вправо по вертикали плюс горизонтальный, вниз по горизонтали плюс вертикальный, влево по вертикали плюс горизонтальный и вверх по горизонтали плюс вертикальный. Подробности этих конкретных режимов излагаются в следующем документе, который содержится в данном документе по ссылке: Y. Ye и M. Karczewicz, "Improved Intra Coding", ITU-T Q.6/SG16 VCEG, C257, Женева, Швейцария, июнь 2007 года. В любом случае это раскрытие сущности не ограничено каким-либо конкретным числом режимов или типами режимов. В основном, прогнозирующий режим может задавать размер кодированного блока, размер прогнозного блока, размер используемого преобразования и способ, которым данные прогнозного блока обнаруживаются или формируются.
Фиг.2 является блок-схемой, иллюстрирующей пример видеокодера 50, который включает в себя модуль 45 адаптивного сканирования, который выполняет технологии этого раскрытия сущности для того, чтобы сканировать видеоблоки из формата двумерного блока в формат одномерного вектора. Как показано на фиг.2, видеокодер 50 принимает текущий видеоблок в видеокадре, который должен быть кодирован. В примере по фиг.2 видеокодер 50 включает в себя модуль 32 прогнозирования, модуль 34 хранения опорных кадров, модуль 38 блочного преобразования, модуль 40 квантования, модуль 42 обратного квантования, модуль 44 обратного преобразования, модуль 45 адаптивного сканирования и модуль 46 энтропийного кодирования. Фильтр удаления блочности (не показан) также может быть включен для того, чтобы фильтровать границы блоков, чтобы удалять артефакты блочности. Видеокодер 50 также включает в себя сумматор 48 и сумматор 51.
Для взаимного кодирования модуль 32 прогнозирования сравнивает видеоблок, который должен быть кодирован, с различными блоками в одном или более опорных видеокадров. Для взаимного кодирования модуль 32 прогнозирования прогнозирует видеоблок, который должен быть кодирован, из уже кодированных соседних видеоблоков этой же кодированной единицы. Прогнозные данные могут извлекаться из модуля 34 хранения опорных кадров, который может содержать любой тип запоминающего устройства или устройства хранения данных, чтобы сохранять видеоблоки, восстановленные из ранее кодированных блоков. Модуль 32 прогнозирования может формировать режимы прогнозирования и векторы прогнозирования, которые содержат элементы синтаксиса, которые могут использоваться для того, чтобы идентифицировать прогнозные блоки, используемые для того, чтобы кодировать текущий видеоблок. Для внутреннего кодирования модуль 32 прогнозирования может содержать модуль пространственного прогнозирования, тогда как для взаимного кодирования модуль 32 прогнозирования может включать в себя модули оценки движения и компенсации движения.
Видеокодер 50 формирует остаточный видеоблок посредством вычитания прогнозного блока, сформированного посредством модуля 32 прогнозирования, из кодируемого исходного видеоблока. Сумматор 48 представляет модуль или узел, который выполняет эту операцию вычитания. Модуль 38 блочного преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблок, содержащий остаточные блочные коэффициенты преобразования. Модуль 38 блочного преобразования, например, может выполнять другие преобразования, заданные посредством стандарта H.264, которые концептуально аналогичны DCT.
Модуль 40 квантования квантует остаточные коэффициенты преобразования, чтобы дополнительно уменьшать скорость передачи битов. Модуль 40 квантования, например, может ограничивать число битов, используемых для того, чтобы кодировать каждый из коэффициентов. После квантования модуль 45 адаптивного сканирования сканирует блок квантованных коэффициентов из двумерного представления в одномерный вектор. Затем, после этого процесса сканирования, модуль 46 энтропийного кодирования кодирует квантованные коэффициенты преобразования согласно технологии энтропийного кодирования, такой как CAVLC или CABAC, чтобы дополнительно сжимать данные. Адаптивное сканирование, выполняемое посредством модуля 45 адаптивного сканирования в соответствии с этим раскрытием сущности, подробнее поясняется ниже.
Кратко модуль 45 адаптивного сканирования сохраняет статистику, ассоциированную со значениями коэффициентов видеоблоков, для каждого из множества режимов прогнозирования, подсчитывает видеоблоки, ассоциированные с каждым из режимов прогнозирования, сканирует значения коэффициентов видеоблоков на основе порядков сканирования, заданных для каждого из режимов прогнозирования, и оценивает данный порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования. Затем, после этого процесса сканирования, модуль 46 энтропийного кодирования кодирует квантованные коэффициенты преобразования согласно технологии энтропийного кодирования.
Модуль 45 адаптивного сканирования может определять новый порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования. Помимо этого, модуль 45 адаптивного сканирования может регулировать пороговое значение после регулирования данного порядка сканирования. Статистика, сохраняемая посредством модуля 45 адаптивного сканирования, может содержать статистику, указывающую вероятность нулевых или ненулевых значений коэффициентов. В одном примере модуль 45 адаптивного сканирования определяет новый порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, и повышает или понижает пороговое значение на основе того, является или нет новый порядок сканирования идентичным предыдущему порядку сканирования. Например, если новый порядок сканирования является идентичным предыдущему порядку сканирования, модуль 45 адаптивного сканирования может повышать пороговое значение данного одного из режимов прогнозирования, к примеру, на коэффициент два с учетом верхнего предела. Аналогично, если новый порядок сканирования является отличным от предыдущего порядка сканирования, модуль 45 адаптивного сканирования может понижать пороговое значение данного одного из режимов прогнозирования, к примеру, на коэффициент два с учетом нижнего предела. После определения порядка сканирования данного одного из режимов прогнозирования модуль 45 адаптивного сканирования может сбрасывать значение счетчика, ассоциированное с данным одним из режимов прогнозирования. Как только блоки коэффициентов просканированы в одномерный формат, модуль 46 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования.
После энтропийного кодирования посредством модуля 46 энтропийного кодирования кодированное видео может быть передано в другое устройство или заархивировано для последующей передачи или извлечения. Модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование соответственно, для того чтобы восстанавливать остаточный блок в пиксельной области. Сумматор 51 прибавляет восстановленный остаточный блок к прогнозному блоку, сформированному посредством модуля 32 прогнозирования, чтобы формировать восстановленный видеоблок для хранения в модуле 34 хранения опорных кадров. Если требуется, восстановленный видеоблок также может проходить через модуль фильтра удаления блочности (не показан) до сохранения в модуле 34 хранения опорных кадров. Восстановленный видеоблок может использоваться посредством модуля 32 прогнозирования как опорный блок, чтобы взаимно кодировать блок в последующем видеокадре или внутренне кодировать будущий соседний блок в пределах одной кодированной единицы.
Фиг.3 является блок-схемой, иллюстрирующей пример видеодекодера 60, который декодирует видеопоследовательность, которая кодирована описанным в данном документе способом. Видеодекодер 60 включает в себя модуль 52 энтропийного декодирования, который выполняет функцию взаимно-обратного декодирования для кодирования, выполняемого посредством модуля 46 энтропийного кодирования по фиг.2. Видеодекодер 60 также включает в себя модуль 55 адаптивного сканирования, который выполняет обратное сканирование, которое взаимно обратно сканированию, выполняемому посредством модуля 45 адаптивного сканирования по фиг.2.
Видеодекодер 60 может выполнять внутреннее и взаимное декодирование блоков в видеокадрах. В примере по фиг.3 видеодекодер 60 также включает в себя модуль 54 прогнозирования, модуль 56 обратного квантования, модуль 58 обратного преобразования и модуль 62 хранения опорных кадров. Видеодекодер 60 также включает в себя сумматор 64. Необязательно, видеодекодер 60 также может включать в себя фильтр удаления блочности (не показан), который фильтрует вывод сумматора 64.
Для внутреннего кодирования модуль 54 прогнозирования может содержать модуль пространственного прогнозирования, тогда как для взаимного кодирования модуль 54 прогнозирования может содержать модуль компенсации движения. Модуль 56 обратного квантования выполняет обратное квантование, а модуль 58 обратного преобразования выполняет обратные преобразования с тем, чтобы изменять коэффициенты видеоблоков обратно в пиксельную область. Сумматор комбинирует прогнозный блок из модуля 54 с восстановленным остаточным блоком из модуля 58 обратного преобразования, чтобы формировать восстановленный блок, который сохраняется в модуле 62 хранения опорных кадров. Если требуется, восстановленный видеоблок также может проходить через модуль фильтра удаления блочности (не показан) перед сохранением в модуле 62 хранения опорных кадров. Декодированное видео выводится из модуля 62 хранения опорных кадров и также может быть возвращено в модуль 54 прогнозирования для использования в последующих прогнозированиях.
Как отмечается, модуль 52 энтропийного декодирования выполняет функцию взаимно-обратного декодирования для кодирования, выполняемого посредством модуля 46 энтропийного кодирования по фиг.2, и модуль 55 адаптивного сканирования затем выполняет взаимно-обратное сканирование для сканирования, выполняемого посредством модуля 45 адаптивного сканирования по фиг.2. Аналогично модулю 45 адаптивного сканирования по фиг.2, модуль 55 адаптивного сканирования по фиг.3 сохраняет статистику, ассоциированную со значениями коэффициентов видеоблоков, для каждого из множества режимов прогнозирования, подсчитывает видеоблоки, ассоциированные с каждым из режимов прогнозирования, сканирует значения коэффициентов видеоблоков на основе порядков сканирования, заданных для каждого из режимов прогнозирования, и оценивает данный порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования. В основном модуль 55 адаптивного сканирования выполняет аналогичные модулю 45 адаптивного сканирования функции, но в обратном порядке. Таким образом, в то время как модуль 45 адаптивного сканирования сканирует блоки коэффициентов из двумерного формата в одномерный формат до энтропийного кодирования, модуль 55 адаптивного сканирования сканирует блоки коэффициентов из одномерного формата в двумерный формат после энтропийного декодирования.
Фиг.4 является концептуальной схемой, иллюстрирующей зигзагообразное сканирование блока коэффициентов 4×4. Фиг.5 является концептуальной схемой, иллюстрирующей зигзагообразное сканирование блока коэффициентов 8×8. Зигзагообразное сканирование, показанное на фиг.4 и 5, может выполняться посредством модуля 45 адаптивного сканирования в начале процесса кодирования для кодированной единицы. Как подробнее поясняется ниже, тем не менее, порядок сканирования может адаптироваться на основе фактической статистики, ассоциированной с уже кодированными блоками коэффициентов.
Порядок сканирования для такого зигзагообразного сканирования, показанного на фиг.4 и 5, следует стрелке через видеоблоки 80 и 90, и коэффициенты помечаются в порядке сканирования. В частности, числовые значения, показанные на фиг.4 и 5, указывают позиции коэффициентов в последовательном одномерном векторе и не представляют значения коэффициентов. При инициализации технологии этого раскрытия сущности не ограничены каким-либо конкретным порядком или технологией сканирования. Например, начальные порядки сканирования, используемые в этом раскрытии сущности, могут быть зигзагообразными порядками сканирования, показанными на фиг.4 и 5. Альтернативно, начальные порядки сканирования, используемые в этом раскрытии сущности, могут быть набором фиксированных порядков сканирования, которые могут быть специально подготовлены для каждого из множества режимов прогнозирования. Поскольку зигзагообразное сканирование является достаточно типичным, оно предоставляет хорошую начальную точку для пояснения адаптивного сканирования этого раскрытия сущности. С другой стороны, согласно этому раскрытию сущности порядок сканирования адаптируется во времени на основе фактической статистики, ассоциированной с уже кодированными блоками коэффициентов. Для каждой кодированной единицы порядок сканирования может начинаться с традиционного порядка сканирования, к примеру, зигзагообразного сканирования, но адаптируется по мере того, как статистика накапливается для блоков коэффициентов, кодированных в других режимах прогнозирования в этой же кодированной единице. Как отмечено выше, тем не менее, зигзагообразное сканирование не является единственной возможной начальной точкой для адаптивного сканирования. Горизонтальное сканирование, вертикальное сканирование или любая технология начального сканирования может использоваться в качестве начальной точки для технологий адаптивного сканирования, описанных в данном документе.
Фиг.6 является концептуальной схемой, иллюстрирующей примерный набор статистики (S1-S16), ассоциированной с блоками конкретного режима прогнозирования и алгоритма согласно технологиям этого раскрытия сущности. Как показано, начальный порядок сканирования видеоблока в режиме X может быть задан посредством процесса зигзагообразного сканирования следующим образом: (S1, S2, S5, S9, S6, S3, S4, S7, S10, S13, S14, S11, S8, S12, S15, S16). В этом случае пронумерованные коэффициенты соответствуют статистике, которая пронумерована в блоке 69 статистики по фиг.6. Count(mode X) задает счетчик числа блоков, кодированных в режиме X для данной кодированной единицы. При каждом приращении Count(mode X) статистика (S1-S16) может изменяться так, чтобы отражать статистику коэффициентов, на которую влияет новый блок в режиме X.
Алгоритм 60 по фиг.6 может активироваться с заранее заданным интервалом обновления при кодировании кодированной единицы (к примеру, кадра или серии последовательных макроблоков), например, когда встречаются границы макроблока. Согласно этому раскрытию сущности, как только алгоритм 60 активирован, если Count(mode X) больше или равен заранее заданному пороговому значению, модуль 45 или 55 сканирования (фиг.2 или 3) выбирает порядок сканирования на основе статистики S1-S16 и затем сбрасывает Count(mode X). Если порядок сканирования изменяется, модуль 45 или 55 сканирования может регулировать пороговое значение вниз, а если порядок сканирования не изменяется, модуль 45 или 55 сканирования может регулировать пороговое значение вверх.
Порог, в сущности, является механизмом, который может ограничивать случаи изменений порядка сканирования, которые обычно требуют процесса сортировки с большим объемом вычислений, и может обеспечивать то, что достаточная статистика накапливается для данного режима видеоблока до оценки порядка сканирования. В частности, новый порядок сканирования может выбираться для данного режима видеоблока только тогда, когда счетчик данного режима удовлетворяет пороговому значению данного режима. Кроме того, пороговое значение может регулироваться во времени, чтобы повышать случаи оценок порядка сканирования, когда новые порядки сканирования отличаются от предыдущих порядков сканирования, или уменьшать случаи оценок порядка сканирования, когда новые порядки сканирования остаются идентичными предыдущим порядкам сканирования. Таким образом, для каждого из множества режимов прогнозирования технологии, описанные в данном документе, могут выполнять оценки порядка сканирования чаще в начале кодируемой единицы до тех пор, пока порядок сканирования не достигает устойчивого и желательного состояния, а затем могут выполнять выбор порядка сканирования менее часто по мере того, как изменения порядков сканирования становятся менее вероятными.
Фиг.7 является концептуальной схемой, иллюстрирующей гипотетический пример в соответствии с этим раскрытием сущности. В этом примере, коэффициенты помечаются в элементах 71A и 71B как c1-c16. Фактические значения коэффициентов показаны в блоке 1 (72), блоке 2 (73), блоке 3 (74) и блоке 4 (75). Блоки 1-4 могут содержать блоки, ассоциированные с идентичным режимом прогнозирования. Блоки 1-4 могут кодироваться последовательно.
Первоначально может использоваться зигзагообразное сканирование. В этом случае блоки сканируются в следующем порядке, который соответствует иллюстрации по фиг.4:
(c1, c2, c5, c9, c6, c3, c4, c7, c10, c13, c14, c11, c8, c12, c15, c16).
При условии, что статистика всех блоков коэффициентов инициализируется как нуль, статистика 1 (76) представляет статистику блока 1, к примеру, со значениями в единицу для любого коэффициента, который является ненулевым, и значениями в нуль для любого коэффициента, который имеет нулевое значение. Статистика 2 (77) представляет комбинированную статистику блоков 1 и 2, к примеру, с нормированными значениями вероятности, указывающими то, равно местоположение этого коэффициента единице или нулю в блоках 1 и 2. В этом случае нормированная вероятность местоположения c6 составляет 0,5, поскольку блок 1 имеет ненулевой коэффициент в этом местоположении, а блок 2 имеет коэффициент с нулевым значением в этом местоположении. Статистика 3 (78) представляет комбинированную статистику блоков 1, 2 и 3 как нормированные вероятности, а статистика 4 (79) представляет комбинированную статистику блоков 1, 2, 3 и 4 как нормированные вероятности. Нормированные вероятности могут содержать среднее значение в единицу или нуль для каждого данного местоположения, при этом значение в единицу задается для конкретного местоположения блока, если это местоположение блока задает ненулевой коэффициент. В вышеприведенном описании зигзагообразное сканирование используется в качестве начального порядка сканирования, и статистика всех блоков коэффициентов инициализируется как нуль. Эта инициализация приводится только в качестве примера и может использоваться альтернативная инициализация порядка сканирования и статистика по коэффициентам.
В примере по фиг.7 можно предположить, что пороговое значение задано со значением 4. В этом случае после кодирования четвертого блока 75, как только предварительно установленный интервал обновления встречается (к примеру, как только граница макроблока встречается), счетчик 4 блоков определяется как удовлетворяющий пороговому значению 4. В этом случае алгоритм сортировки активируется, и модуль 45 сканирования (фиг.2) может задавать новый порядок сканирования на основе статистики 4 (79). Соответственно, новый порядок сканирования следующий:
(c1, c5, c9, c2, c13, c6, c3, c4, c7, c10, c14, c11, c8, c12, c15, c16).
В частности, порядок сканирования изменяется от начального порядка сканирования (к примеру, зигзагообразного сканирования) к новому порядку сканирования, который способствует размещению ненулевых коэффициентов в начале одномерного вектора и нулевых коэффициентов в конце. Например, поскольку вероятность в местоположениях c5 и c9 выше вероятности в c2 в статистике 4 (79), c5 и c9 сканируются до c2 в новом порядке сканирования. В отличие от зигзагообразного сканирования, которое чередуется в равной степени между измерением по горизонтали и измерением по вертикали, новый порядок сканирования демонстрирует более сильную направленность в измерении по вертикали. Таким образом, новый порядок сканирования проходит коэффициенты в измерении по вертикали быстрее, чем коэффициенты в измерении по горизонтали, что соответствует статистическому распределению коэффициентов видеоблоков 1-4 (72, 73, 74, 75), кодированных в данном режиме прогнозирования. Таким образом, посредством использования предшествующей статистики для того, чтобы задавать порядок сканирования, технологии этого раскрытия сущности могут способствовать группировке ненулевых коэффициентов около начала сканируемого одномерного вектора и коэффициентов с нулевыми значениями около конца сканируемого одномерного вектора. Это, в свою очередь, может улучшать уровень сжатия, которое может достигаться во время энтропийного кодирования.
Кроме того, пороговые значения задаются так, чтобы ограничивать случаи изменений порядка сканирования, поскольку эти изменения требуют процесса сортировки с большим объемом вычислений, и помогать обеспечивать то, что достаточная статистика накапливается для данного режима видеоблока до оценки порядка сканирования. В этом случае новый порядок сканирования может выбираться для данного режима видеоблока только тогда, когда счетчик данного режима удовлетворяет пороговому значению данного режима. Пороговое значение может регулироваться вверх или вниз во времени (с учетом верхней и нижней границ). Например, если оценка порядка сканирования приводит к изменениям порядка сканирования, пороговое значение может уменьшаться так, чтобы последующая оценка порядка сканирования осуществлялась быстрее. В этом случае, поскольку порядки сканирования изменяются, может быть желательным ускорять осуществление будущих изменений, чтобы переводить порядок сканирования в установившийся режим. С другой стороны, если оценка порядка сканирования не приводит к изменению порядка сканирования, пороговое значение может увеличиваться так, чтобы на последующую оценку порядка сканирования уходило больше времени. В этом случае, поскольку порядок сканирования не изменялся, может быть желательным уменьшать частоту оценки возможных изменений порядка сканирования, поскольку эти оценки требуют использования ресурсов обработки. Эти типы регулировок порогового значения позволяют чаще оценивать изменения порядка сканирования до тех пор, пока порядок сканирования не достигает устойчивого и желательного состояния, и затем позволяют ограничивать частоту оценок порядка сканирования по мере того, как изменения становятся менее вероятными.
Фиг.8 является блок-схемой последовательности операций способа, иллюстрирующей технологию кодирования (т.е. кодирования или декодирования) в соответствии с этим раскрытием сущности. Фиг.8 иллюстрируется с точки зрения видеокодера 50, поскольку этап энтропийного кодирования (этап 85) выполняется после этапа сканирования (этапа 83). С точки зрения видеодекодера 60 этап энтропийного кодирования (этап 85) должен предшествовать этапу сканирования (этап 83). Например, с точки зрения видеодекодера 60, этапы, показанные на фиг.8, могут выполняться в следующем порядке (этап 85, этап 83, этап 81, этап 82, этап 84). Для простоты фиг.8 описывается ниже с точки зрения видеокодера 50.
Как показано на фиг.8, модуль 45 адаптивного сканирования обновляет статистику, ассоциированную со значениями коэффициентов видеоблоков, для каждого из множества режимов прогнозирования (этап 81), и подсчитывает видеоблоки, ассоциированные с каждым из режимов прогнозирования (этап 82). Модуль 45 адаптивного сканирования затем сканирует значения коэффициентов видеоблоков в одномерные векторы коэффициентов согласно порядкам сканирования, заданным для каждого из режимов прогнозирования (этап 83), и оценивает данный порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования (этап 84). Затем, после этого процесса сканирования, модуль 46 энтропийного кодирования кодирует одномерные векторы коэффициентов согласно технологии энтропийного кодирования (этап 85).
Модуль 45 адаптивного сканирования может определять новый порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, когда значение счетчика, ассоциированное с данным одним из режимов прогнозирования, удовлетворяет пороговому значению данного одного из режимов прогнозирования. Помимо этого, модуль 45 адаптивного сканирования может регулировать пороговое значение после определения данного порядка сканирования. Как пояснено в этом раскрытии сущности, статистика, сохраняемая посредством модуля 45 адаптивного сканирования, может содержать статистику, указывающую вероятности нулевых и ненулевых значений коэффициентов, или возможно другие типы статистики, указывающей вероятности значений коэффициентов. В одном примере модуль 45 адаптивного сканирования определяет новый порядок сканирования, ассоциированный с данным одним из режимов прогнозирования, на основе статистики данного одного из режимов прогнозирования, и повышает или понижает пороговое значение на основе того, является или нет новый порядок сканирования идентичным предыдущему порядку сканирования.
Например, если новый порядок сканирования является идентичным предыдущему порядку сканирования, модуль 45 адаптивного сканирования может повышать порог, к примеру, на коэффициент два с учетом верхнего предела. Аналогично, если новый порядок сканирования является отличным от предыдущего порядка сканирования модуль 45 адаптивного сканирования может понижать порог, к примеру, на коэффициент два с учетом нижнего предела. После определения нового порядка сканирования, модуль 45 адаптивного сканирования может сбрасывать значение счетчика, ассоциированное с данным одним из режимов прогнозирования. После сканирования в одномерный формат модуль 46 энтропийного кодирования энтропийно кодирует векторы коэффициентов.
Фиг.9 является примерной блок-схемой последовательности операций способа, иллюстрирующей процесс адаптивного сканирования, который может выполняться посредством модуля 45 сканирования видеокодера 50 (фиг.2) и модулем сканирования 55 видеодекодера 60 (фиг.3). Процесс по фиг.9 может повторяться для каждой кодированной единицы. С другой стороны, кодированные единицы могут содержать отдельные кадры видеопоследовательности, части кадров (такие как серии последовательных макроблоков) или другую независимо декодируемую единицу видеопоследовательности.
Как показано на фиг.9, модуль 45 сканирования инициализирует свой порядок сканирования для новой кодированной единицы (91). Другими словами, в начале кадра или серии последовательных макроблоков порядок сканирования инициализируется. Значения счетчика для каждого режима задаются равными нулю, а пороговые значения задаются равными начальному значению, такому как значение 4 для режимов, которые соответствуют блокам 4x4, и значение 2 для режимов, которые соответствуют блокам 8x8. В начале новой кодированной единицы статистика всех блоков коэффициентов для каждого режима также инициализируется либо как нуль, либо как другая статистика на основе эмпирического обучения. Модуль 45 сканирования применяет свой начальный порядок сканирования (к примеру, зигзагообразное сканирование). При этом модуль 45 сканирования собирает статистику по блочным коэффициентам и увеличивает count(mode) для каждого режима, идентифицированного для сканируемых блоков (92). Этот процесс продолжается до тех пор, пока предварительно установленный интервал обновления не достигнут (93). Например, предварительно установленный интервал обновления может соответствовать границе макроблока или другому заранее определенному интервалу.
Когда предварительно установленный интервал обновления идентифицирован ("Да" 93), модуль 45 сканирования оценивает порядок сканирования. В частности, модуль 45 сканирования определяет, удовлетворяет ли count(mode) пороговому значению thres(mode) (94). Если нет ("Нет" 94), модуль 45 сканирования рассматривает другие режимы, к примеру, до тех пор, пока все режимы не проанализированы (100). Для любого данного режима, если count(mode) удовлетворяет пороговому значению ("Да" 94), модуль 45 сканирования активирует функцию сортировки, которая обновляет порядок сканирования (95) на основе накопленной статистики для того режима. Если порядок сканирования изменяется в результате данного обновления порядка сканирования ("Да" 96), модуль 45 сканирования уменьшает thres(mode) для этого режима (97). Если порядок сканирования не изменяется в результате данного обновления порядка сканирования ("Нет" 96), модуль 45 сканирования увеличивает thres(mode) для этого режима (98). В качестве примера эти увеличения (98) или уменьшения (97) порогов могут изменяться на коэффициент два (т.е. умножаться на 2 или делиться на 2) с учетом нижней и верхней границ. Нижние и верхние границы могут быть заданы равными 4 для режимов, которые соответствуют блокам 4x4, и значению 2 для режимов, которые соответствуют блокам 8x8. В этом примере начальные пороговые значения могут быть установлены в нижних границах, чтобы активировать сортировку максимально быстро после инициализации.
Как только порядок сканирования для данного режима обновлен (95), count(mode) для того режима сбрасывается к нулю (99). Процесс затем определяет, должны или нет анализироваться дополнительные режимы (100). Процесс выполняется, когда данная кодированная единица (к примеру, кадр или серия последовательных макроблоков), кодируется. Таким образом, новая инициализация (91) может осуществляться, когда следующая кодированная единица встречается.
Технологии этого раскрытия сущности могут быть реализованы в широком спектре устройств или приборов, включающих в себя беспроводной переносной телефон и интегральную схему (IC) или набор IC (т.е. набор микросхем). Все описанные компоненты, модули или модули предоставляются для того, чтобы подчеркивать функциональные аспекты и не обязательно требуют реализации посредством различных аппаратных модулей.
Соответственно, технологии, описанные в данном документе, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой их комбинации. Любые признаки, описанные как модули или компоненты, могут быть реализованы совместно в интегральном логическом устройстве или отдельно как дискретные, но имеющие возможность взаимодействовать логические устройства. Если реализованы в программном обеспечении, технологии могут быть осуществлены, по меньшей мере, частично посредством машиночитаемого носителя, содержащего инструкции, которые, когда приводятся в исполнение, выполняют один или более способов, описанных выше, Машиночитаемый носитель может формировать часть компьютерного программного продукта, который может включать в себя упаковку. Машиночитаемые носители могут содержать оперативное запоминающее устройство (RAM), такое как синхронное динамическое оперативное запоминающее устройство (SDRAM), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память, магнитные или оптические носители хранения данных и т.п. Дополнительно или альтернативно, технологии могут быть реализованы, по меньшей мере, частично посредством машиночитаемой среды связи, которая переносит или передает код в форме инструкций или структур данных и которая может быть доступной, считываемой и/или приводимой в исполнение посредством компьютера.
Код может приводиться в исполнение посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может быть предоставлена в рамках специализированных программных модулей или аппаратных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный видеокодер-декодер (кодек). Кроме того, технологии могут быть полностью реализованы в одной или более схем или логических элементов.
Описаны разные аспекты раскрытия сущности. Технологии описаны в контексте сканирования преобразованных коэффициентов преобразованных видеоблоков, но также могут применяться к сканированию других типов коэффициентов видеоблоков. Например, если сканирование пиксельных значений или других типов непреобразованных коэффициентов или значений, ассоциированных с видеоблоками, реализовано, технологии этого раскрытия сущности могут применяться к такому сканированию. Эти и другие аспекты находятся в рамках объема прилагаемой формулы изобретения.