СПОСОБ ДЕКОДИРОВАНИЯ ПОТОКА БИТОВ
METHOD FOR DECODING OF BIT STREAM

Область техники, к которой относится изобретение
Изобретение, в общем, относится к видеокодекам, а более конкретно, к направленным преобразованиям, используемым в ходе кодирования и декодирования блоков пикселов в видеокадрах и изображениях.
Уровень техники
Кодеки
Цифровой видеокодек сжимает и распаковывает видео. Кодеки могут находиться в широковещательном оборудовании, телевизионных приемниках, персональных компьютерах, видеозаписывающих устройствах и видеопроигрывателях, спутниках, а также в мобильных и онлайновых устройствах. Кодеки секционируют каждый кадр видео на блоки пикселов и обрабатывают блоки по одному за раз.
В ходе кодирования пространственные и временные избыточности исключаются, чтобы уменьшать скорость передачи данных. Изобретение, в частности, касается преобразований, которые используются в ходе кодирования и декодирования видео. Наиболее распространенным преобразованием является дискретное косинусное преобразование (DCT), как указано в стандартах MPEG и H.264/AVC. DCT преобразует интенсивности пикселов в пространственной области в коэффициенты преобразования в частотной области. Коэффициенты затем квантуются и энтропийно кодируются, чтобы формировать сжатый поток битов. Поток битов может быть сохранен на носителе (DVD) или передан непосредственно в декодер. В ходе декодирования этапы инвертируются. После энтропийного декодирования и обратного квантования обратное преобразование применяется, чтобы восстанавливать исходное видео.
В общем, число декодеров, например, в потребительских товарах во всем мире, существенно превышает число кодеров. Следовательно, чтобы предоставлять функциональную совместимость, только поток битов и процесс декодирования стандартизируются. Процесс кодирования типично вообще не указывается в стандарте.
Преобразования
DCT включает в себя горизонтальное одномерное DCT, применяемое к каждой строке пикселов в блоке, и вертикальное одномерное DCT, применяемое к каждому столбцу. Для блоков с преимущественно горизонтальными или вертикальными признаками двумерное DCT является эффективным. Тем не менее, двумерное DCT не преобразует эффективно блоки, которые содержат признаки, которые не являются горизонтальными или вертикальными, т.е. направленные признаки, при этом "направленный" означает ориентации, отличные от горизонтальной и вертикальной.
В общем, существует два способа, которые реализуют направленные преобразования. Первый способ применяет двумерные DCT вдоль предварительно заданных трактов в блоке. Второй способ применяет направленный фильтр, после чего выполняется двумерное DCT. Типично, веерный фильтр секционирует блок на набор направленных подполос частот. Преобразования затем применяются к каждой подполосе частот. Направленные преобразования, к примеру, контурлеты реализуются таким образом. Контурлеты эффективно преобразуют кадры, содержащие плавные области, разделяемые посредством искривленных границ.
Направленные преобразования использованы для того, чтобы дополнять существующее двумерное DCT или DCT-подобное преобразование для существующих способов кодирования видео, к примеру, H.264/AVC. Во время процесса кодирования кодер H.264/AVC выбирает из набора преобразований, таких как традиционное двумерное преобразование и набор направленных преобразований. Одно преобразование, которое дает в результате наилучшую производительность, в смысле скорости/искажения, затем выбирается для кодирования и декодирования.
После преобразования улучшения могут достигаться в энтропийном кодировании соответствующих данных посредством использования статистики направленных данных. В H.264/AVC, контекстно-адаптивный двоичный арифметический кодер (CABAC) или контекстно-адаптивный кодер переменной длины (CAVLC) используется для того, чтобы энтропийно кодировать различные типы данных. Входные символы преобразуются в двоичные кодовые слова и сжимаются посредством арифметического кодера. Контексты используются для того, чтобы адаптировать статистику, используемую посредством арифметического кодера. Каждый контекст сохраняет самый вероятный символ (или 0 или 1) и соответствующую вероятность.
Стандарт H.264/AVC выполнен с возможностью использовать двумерное DCT. Существующие способы могут использовать направленные преобразования с тем, чтобы повышать производительность кодеров H.264/AVC. Тем не менее, эти способы по-прежнему формируют и кодируют связанные с направлением решения и данные с использованием традиционной инфраструктуры H.264/AVC. Таким образом, существует потребность эффективно представлять направленную информацию, а также потребность в повышении эффективности кодирования.
Цель преобразования состоит в том, чтобы преобразовывать блок варьирующихся пикселных значений в блок коэффициентов, в котором большинство коэффициентов является нулем. В случае DCT набор матриц пикселов преобразуется в набор DCT-коэффициентов, представляющих низкочастотные и высокочастотные данные в блоке. Наименьшая частота является DC-коэффициентом, который относится к среднему значению всех пикселов, преобразованных посредством преобразований. Следующий коэффициент представляет абсолютную величину косинусоидальной волны наименьшей частоты, которая содержится в сигнале. Последующие коэффициенты соответствуют увеличивающимся частотам. Если данные оптимально подходят для DCT, то многие частотные коэффициенты являются нулем и не требуются декодеру для того, чтобы восстанавливать видео.
Одна проблема с существующими направленными преобразованиями, которые используют набор параллельных одномерных преобразований, состоит в том, что длина каждого одномерного преобразования может варьироваться в зависимости от позиции преобразования в блоке. Например, чтобы преобразовывать блок 8×8 с использованием направленного преобразования, ориентированного под углом 45 градусов, одномерное преобразование вдоль основной диагонали блока имеет восемь элементов, и смежное одномерное имеет семь элементов и т.д., до преобразований одного или двух элементов, которые являются неэффективными. Одноэлементное преобразование в лучшем случае является масштабированием одного пикселного значения, которое практически не повышает эффективность кодирования. Таким образом, существует потребность в способе для преобразования блоков с использованием этих преобразований таким способом, который не страдает от недостатков, демонстрируемых посредством небольших трактов преобразования, и при этом поддерживает направленные свойства исходного преобразования.
Также существует потребность в способе для того, чтобы применять второй набор преобразований к выводу первого набора преобразований таким способом, который дополнительно повышает эффективность кодирования без снижения производительности таким способом, как и двумерное DCT, когда данные декоррелируются во втором ортогональном направлении.
Кроме того, существует потребность в секционированных версиях этого преобразования, которые подходят для кодирования блоков остатка прогнозирования, которые обычно находятся в прогнозирующих кодерах, таких как H.264/AVC.
Сущность изобретения
Поток битов включает в себя последовательность кадров. Каждый кадр секционируется на кодированные блоки. Для каждого блока набор трактов определяется под углом преобразования, определенным из индекса преобразования в потоке битов. Коэффициенты преобразования получаются из потока битов. Коэффициенты преобразования включают в себя один DC-коэффициент для каждого тракта. Обратное преобразование применяется к коэффициентам преобразования, чтобы формировать декодированное видео.
Краткое описание чертежей
Фиг.1A является блок-схемой видеосистемы согласно вариантам осуществления изобретения;
Фиг.1B является блок-схемой декодера согласно вариантам осуществления изобретения;
Фиг.1C является блок-схемой кодера согласно вариантам осуществления изобретения;
Фиг.2 является блок-схемой модуля направленной обработки субблоков и сегментов согласно вариантам осуществления изобретения;
Фиг.3 является блок-схемой модуля определения типа и направления преобразования согласно вариантам осуществления изобретения;
Фиг.4 является блок-схемой модуля логического вывода направления согласно вариантам осуществления изобретения;
Фиг.5 является блок-схемой модуля направленного прогнозирования согласно вариантам осуществления изобретения;
Фиг.6 является блок-схемой модуля кодирования направленных индексов согласно вариантам осуществления изобретения;
Фиг.7 является схематическим видом первого варианта осуществления модуля кодера направленных индексов согласно вариантам осуществления изобретения;
Фиг.8 является схематическим видом второго варианта осуществления модуля кодера направленных индексов согласно вариантам осуществления изобретения;
Фиг.9-10 являются блок-схемами последовательности операций способа для модуля формирования контекста согласно вариантам осуществления изобретения;
Фиг.11A-B являются схематическими видами трактов для первичных и вторичных направленных преобразований согласно вариантам осуществления изобретения;
Фиг.12A-F являются блок-схемами для первичных направленных преобразований для блоков 8×18 пикселов согласно вариантам осуществления изобретения; и
Фиг.13 является блок-схемой набора секционированных направленных преобразований согласно вариантам осуществления изобретения.
Подробное описание вариантов осуществления
Кодек
Фиг.1A показывает видеосистему согласно вариантам осуществления нашего изобретения. Система включает в себя кодер 10 и декодер 20, в комбинации кодек 30. Кодек может быть реализован в процессорах, включающих в себя запоминающие устройства и интерфейсы ввода-вывода, как известно в данной области техники.
Кодер сжимает входное видео 1 в битовый поток 15. Кодер применяет преобразование, квантование и энтропийное кодирование к входному видео, как подробно поясняется ниже. Чтобы обеспечивать то, что выходное видео точно отражает входное видео, декодер 20 выполняет обратные этапы в обратном порядке. Помимо этого, кодер типично включает в себя эквивалент декодера, чтобы предоставлять обратную связь для процесса кодирования. Поскольку все переменные кодера являются легкодоступными в кодере, декодер в кодере является относительно простым. Изобретение, в частности, касается обратных направленных преобразований 25.
Как описано ниже и показано на фиг.11B, преобразования могут включать в себя первичные и вторичные преобразования. В ходе кодирования первичное преобразование управляет интенсивностями пикселов, чтобы определять коэффициенты преобразования, например, DC- и AC-коэффициенты. Вторичное преобразование управляет только DC-коэффициентами 1160, чтобы формировать коэффициенты 1170 вторичного преобразования, чтобы дополнительно уменьшать избыточности данных. Обратные преобразования включают в себя вторичное обратное преобразование 26, чтобы восстанавливать DC-коэффициенты, и первичные обратные преобразования 27, чтобы восстанавливать интенсивности пикселов для декодированного видео.
Чтобы обеспечивать функциональную совместимость между кодером и декодером, стандарты кодирования видео типично только задают поток битов и процесс декодирования. Тем не менее, следует понимать, что описание процесса кодирования, как подробно описано ниже, является достаточным, чтобы точно выводить обратный процесс декодирования специалистами в данной области техники.
Декодер
Фиг.1B показывает релевантные части нашего декодера 20. Декодер принимает кодированный битовый поток 15 и информацию 160. Поток битов представляется в энтропийный CABAC-декодер 191, который формирует квантованные коэффициенты 192 преобразования согласно информации. Для первого блока информация может быть начальным контекстом. Затем, информация связывается с ранее обработанными (декодированными) блоками.
Коэффициенты обратно квантуются 24 и обратно преобразуются 25, так что декодированные блоки формируют выходное или декодированное видео 2. Преобразование может быть обратным дискретным косинусным преобразованием (IDCT). Преобразования могут включать в себя двумерное обратное дискретное косинусное преобразование и набор обратных направленных преобразований. Вторичные обратные преобразования также могут применяться, как подробнее описано ниже.
Информация 160 представляется в модуль формирования контекста (CGM) декодера, который перенаправляет выбранные контексты 921-922 в CABAC-декодер. Индикаторы 501 прогнозных преобразований (PTI) ранее декодированных блоков 160 представляются в модуль 601 декодирования направленных индексов (DIDM), который формирует индикатор 602 преобразования для обратного преобразования 25. Обратное преобразование может использовать любое из обратных преобразований, например, одномерные горизонтальные и одномерные вертикальные обратные DCT (двумерное IDCT) 41, набор обратных направленных преобразований 42 и любые другие известные обратные преобразования 43.
Следует отметить, что текущие стандарты кодирования видео используют только одно заранее указываемое преобразование, так что индекс для различных преобразований не требуется. Кроме того, текущие стандарты не учитывают вспомогательную информацию, связанную с ранее декодированными блоками во время обратного преобразования.
Кодер
Фиг.1C показывает релевантные части кодера 10. Кодер использует направленные преобразования согласно вариантам осуществления изобретения. Этапы способа, как показано, могут быть выполнены в процессоре кодера. Процессор включает в себя запоминающее устройство и интерфейсы ввода-вывода, как известно в данной области техники.
Ввод в кодер является блоком 101 кадра видео, которое должно быть кодировано. Как задано в данном документе, блоки включают в себя макроблоки, субблоки и блочные сегменты, в общем, матрицу пикселов. В большинстве вариантов применения кодирования операции предпочтительно выполняются для макроблоков и субблоков. Блок может содержать исходные видеоданные, остатки от пространственного прогнозирования или прогнозирования с компенсацией движения видеоданных или другие связанные с текстурой данные, которые должны быть преобразованы. Блок может быть секционирован на субблоки посредством модуля 200 направленной обработки сегментов субблоков (SPDPM). В данном документе субблоки обрабатываются по одному за раз как "блоки".
Каждый блок преобразуется с использованием преобразований, выбранных из традиционного двумерного дискретного косинусного преобразования (двумерного DCT) 120, набора направленных преобразований 130 или других преобразований, в общем, преобразований 125. Вывод преобразования измеряется посредством модуля 300 определения типа и направления преобразования (TTDDM). TTDDM использует такой показатель, как функция затрат на искажение в зависимости от скорости передачи, чтобы определять то, какое из преобразований предоставляет наилучшую производительность. Функция затрат на искажение в зависимости от скорости передачи является суммой скорости кодирования и скаляра, умноженного на искажение. Тип и направление преобразования, имеющие минимальные затраты, выбраны для преобразования. Производительность может быть, но не только, показателем эффективности кодирования. Идея состоит в том, что преобразование, которое имеет наилучшую производительность, выбирается для кодирования, и выбранное преобразование передается в служебных сигналах в декодер в индексе 16 в потоке битов.
TTDDM также может принимать ввод из модуля 400 логического вывода направления (DIM). Ввод в DIM является набором данных 160, указывающим преобразования и направления, используемые для смежных ранее обработанных блоков. Вывод DIM является значением или набором значений, соответствующим данным 160, таким как предпочитаемые направления 431. TTDDM использует эту информацию, чтобы принимать решение в отношении того, какие преобразования и направления используются для того, чтобы кодировать блок 101. TTDDM также может перенаправлять конечный индикатор 141 секционирования (FPI) в SPDPM в качестве инструкции для секционирования. TTDDM-модуль формирует преобразованный блок 102 и индикатор 145 выбранного преобразования (STI), представляющий выбранное преобразование и направление.
Затем, преобразованный блок 102 может быть надлежащим образом кодирован 150 с использованием энтропийного кодирования, чтобы формировать кодированный выводимый блок 17.
Модуль 500 прогнозирования направления (DPM) также принимает информацию из DIM и информацию, связанную с ранее обработанными блоками 160. DPM использует эту информацию для того, чтобы формировать индикатор 501 прогнозного преобразования (PTI). PTI вводится в модуль 600 кодирования направленных индексов (DIEM), вместе с STI 145. DIEM преобразует представление в двоичное кодовое слово 603 для кодирования посредством контекстно-адаптивного двоичного арифметического кодера (CABAC) 190.
Контексты, используемые посредством CABAC, определяются посредством модуля 900 формирования контекста (CGM). Ввод в CGM является информацией о преобразованиях и направлениях, используемых посредством смежных ранее кодированных блоков, из DIM или уже кодированной информацией из текущего блока. CGM формирует контексты для CABAC, чтобы кодировать двоичный направленный индекс. CABAC выводит индекс 16 кодированного преобразования.
Модуль направленной обработки субблоков и сегментов
Фиг.2 показывает подробности SPDPM 200. Пикселы во входном блоке 101 могут представлять связанную с видео информацию, к примеру, данные видеокадров, остатки прогнозирования с компенсацией движения и остатки пространственного прогнозирования. SPDPM секционирует блок на сегменты 210, в общем, матрицы пикселов. Традиционные или направленные преобразования 125 применяются к сегментам. Конечный индикатор 141 секционирования, сформированный посредством TTDDM, указывает то, какие сегменты использовать для наилучшей производительности.
Модуль определения типа и направления преобразования
Фиг.3 показывает TTDDM 300 для выбора наилучшего преобразования и направления, чтобы использовать для того, чтобы преобразовывать блок 210. Модуль 310 выбора преобразования выбирает, какие из доступных типов преобразования должны отправляться в модуль 320 измерения, который определяет такой показатель 321, как функция затрат на искажение в зависимости от скорости передачи (R/D), которая используется для того, чтобы выбирать преобразование.
Модуль выбора преобразования может быть под управлением DIM 400. DIM, например, может анализировать смежные блоки, чтобы определять то, какие направления с большей вероятностью хорошо подходят для текущего блока. Измерение затем может быть ограничено поднабором доступных направлений, тем самым уменьшая время обработки. После того, как эти измерения используются для того, чтобы определять наилучшее направление или преобразование, индикатор 145 выбранного преобразования и соответствующий преобразованный блок 102 выводятся. Если TTDDM управляет выбором сегментов, то конечный индикатор 141 секционирования, который дает в результате наилучшую производительность, также выводится в SPDPM.
Модуль логического вывода направления
Фиг.4 показывает DIM 400. Модуль выбора блоков использует ранее обработанные блоки и вспомогательную информацию 160, чтобы определять возможные направления 411 преобразования для текущего блока. Возможные направления преобразования используются для того, чтобы определять набор предпочтительных направлений 431. Он затем используется посредством DPM для того, чтобы уменьшать число битов, требуемых для того, чтобы представлять эту информацию, что приводит к повышенной эффективности в кодере и декодере.
Модуль 410 выбора блоков (BSM) выбирает из блоков 160 на основе таких критериев, как расстояние выбранных блоков до текущего блока. Модуль 420 определения надежности (RDM) оценивает надежность выбранных блоков. RDM-модуль может использовать информацию текстуры, позицию и другие данные 412 блока. Коэффициент 421 надежности каждого из выбранных блоков и соответствующее направление 411 преобразования предоставляются в модуль определения предпочтительного направления (PDDM), в котором предпочтительные направления 431 идентифицируются.
Модуль направленного прогнозирования
Фиг.5 показывает DPM 500, чтобы определять индикатор 501 прогнозного преобразования для DIEM 600 и CGM. Модуль 510 прогнозирования первого каскада выбирает варианты 515 из предпочтительных направлений 431. Модуль 420 прогнозирования второго каскада использует эти варианты и кодированную вспомогательную информацию 160 для того, чтобы выбирать индикатор 501 предпочтительного преобразования.
Для кодирования преобразованных остатков текстуры индикатор 145 направления выбранного преобразования может быть коррелирован с модулем прогнозирования текстуры, к примеру, режимом внутреннего прогнозирования, используемым в H.264/AVC. Следовательно, вспомогательная информация, предоставляемая в DPM, может включать в себя, например, режим внутреннего прогнозирования, чтобы выбирать индикатор 501.
Модуль кодирования направленных индексов
Фиг.6 показывает DIEM 600. Ввод включает в себя индикатор 145 выбранного преобразования и индикатор 501 прогнозного преобразования, которые преобразуются 605-606 в значимое представление направлений. Различные преобразования 605-606 могут использоваться для индикаторов выбранных и прогнозных преобразований. Разность между этими двумя направлениями определяется 610 в качестве разности 612 индикаторов преобразований. Поскольку прогнозирование является обоснованной аппроксимацией направления выбранного преобразования, небольшие угловые разности должны приводить к аналогичным кодовым словам, которые могут быть эффективно кодированы. Разность преобразуется 620 в двоичную форму в кодовое слово 603, которое энтропийно кодируется посредством CABAC 190 в качестве индекса 16 кодированного преобразования. Следует понимать, что любой контекстно-адаптивный энтропийный кодер может быть использован, как и кодирование переменной длины (VLC). Вычисление разности может быть пропущено 611, как описано ниже.
Фиг.7 схематично показывает первый вариант осуществления DIEM 600. Например, существует восемь возможных направлений 701 преобразования и соответствующих прогнозирований 702. Направление преобразования выбирается посредством индикатора 145 выбранного преобразования, и прогнозирование выбирается посредством PTI 501. Индикаторы преобразований преобразуются в код Грея, в котором смежные направления отличаются только на один бит. Кодовые слова для выбранных и прогнозных направлений сравниваются побитово с операцией "исключающее OR" (XOR) 610, чтобы получать разность 611. Для модуля точного прогнозирования это дает в результате поток битов в основном с нулями для низкой энтропии. Поскольку преобразования индикатора 605-606 используют двоичные представления, преобразование 620 в двоичную форму не используется.
Фиг.8 показывает второй вариант осуществления DIEM. В этом варианте осуществления направления представляются посредством равномерно непрерывной последовательности чисел. Разность 610 следующая:
S
P
где I и I являются преобразованными индексами индикаторов выбранных и прогнозированных направлений соответственно и N является номером возможного направления, например, восемь. Поскольку небольшие разности более вероятны, преобразование 620 в двоичную форму кодирует разности близко к нулю (0, 1, N-1, 2, N-2...) с меньшим числом битов. Вычисление разности может быть пропущено 611, и преобразованный индикатор преобразования перенаправляется непосредственно в модуль 620 преобразования в двоичную форму. В этом случае, модуль 900 формирования контекста использует индикатор прогнозного преобразования, чтобы выбирать надлежащий контекст.
Модуль формирования контекста
Фиг.9-10 показывают варианты осуществления CGM 900. CGM выбирает контексты 921-922 для CABAC 190. Более двух контекстов также могут быть выбраны. Чтобы определять контексты, CGM может использовать информацию 160 предпочтительных обработанных блоков, PTI 501 и предпочтительные направления 431. Контексты A и B отличают точные прогнозные направления и неточные прогнозирования. Фиг.9 показывает, как предпочтительные направления 431 используются для того, чтобы определять контексты. Максимальная разность φ определяется 910 и сравнивается 920 с предварительно определенным пороговым значением T. Если разность меньше порогового значения, то прогнозирование является точным в контексте A 921, в противном случае контекст B 922 является неточным. Например, если DIEM используется, то биты, предоставляемые в CABAC, являются главным образом нулями, и контекст A выбирается так, что он соответствует этой вероятности. Выбор контекста CGM 900 также может рассматривать другие факторы, такие как позиция бита, чтобы определять из более двух контекстов.
Вариант осуществления, показанный на фиг. 10, допускает то, что DIEM пропускает 611 вычисление 610 разности. Индикатор 501 прогнозного преобразования и позиционный индекс i 1001, представляющие то, какой бит из индекса 603 должен быть кодирован, являются вводами. PTI 501 преобразуется 1010 в двоичное кодовое слово с идентичным преобразованием 605 индикаторов, используемым в DIEM. Поскольку оба кодовых слова должны быть идентичными, самый вероятный бит CABAC должен быть идентичным текущему биту CW[i] 1030. Таким образом, если сравнение 1030 указывает, что текущий бит равняется 1, контекст A 921, который предпочитает 1, выбирается, в противном случае контекст B 922, в котором 0 является предпочтительным битом, выбирается.
Первичные и вторичные направленные преобразования
Фиг.11A показывает направленное преобразование согласно вариантам осуществления нашего изобретения. Следует понимать, что в ходе декодирования, преобразование является обратным преобразованием. Преобразование (или его инверсия) управляет блоком 1100 MxN пикселов. В целях преобразования значения 1101, ассоциированные с пикселами, могут быть интенсивностью или коэффициентами преобразования, в зависимости от каскада кодирования или декодирования.
0
1
N-1
i
i
0
1
N-1
0
1
N-1
Преобразование включает в себя набор одномерных преобразований {T, T,..., T} 1102, где N является общим числом одномерных преобразований, применяемых к блоку. Длина l преобразования T указывает число пикселов, которыми управляет одномерное преобразование. Таким образом, преобразования {T, T,..., T} в наборе имеют соответствующие длины {l, l,..., l}.
Каждое преобразование применяется к пикселам вдоль тракта 1102 в блоке. Тракт типично включает в себя набор граничащих или смежных пикселов. Тем не менее, несмежные пикселы также могут быть включены в тракт.
Как показано на фиг.11B, если значения пикселов на тракте являются коэффициентами, то первый коэффициент для каждого тракта является DC-коэффициентом, после чего идут AC-коэффициенты. Все первые коэффициенты 1150 собираются в наборе коэффициентов 1170 вторичного преобразования (STC). Первый вторичный коэффициент в наборе является вторичным DC-(SDC) коэффициентом.
В ходе декодирования вторичное направленное преобразование 26 может применяться к набору коэффициентов вторичного преобразования, чтобы восстанавливать DC-коэффициент каждого тракта. В ходе кодирования, первый или DC-коэффициент каждого тракта отбрасывается после того, как набор коэффициентов 1170 вторичного преобразования формируется.
Каждый тракт ориентируется, относительно вертикального направления 1103, под углом θ 1105 преобразования, который определяется посредством индекса направленного преобразования. Как описано выше, индекс преобразования, который определяется в ходе кодирования, является частью потока битов, который должен быть декодирован.
Тракты для конкретного блока и преобразования, в общем, ориентируются в идентичном направлении. Тракты формируются следующим образом.
min
Минимальный тракт длины L 1110 преобразования указывается для блока. Тракт преобразования типично начинается в начальном пикселе 1120, расположенном на краю (или в углу) блока 1100. Как указано выше, если значения для пикселов являются коэффициентами, значение для начального пиксела является DC-коэффициентом.
Тракт продолжается вдоль угла θ до конечного пиксела 1121 на других краях. Длина тракта, в пикселах, составляет m. Если начальный пиксел располагается на краю или в углу, то длина m=1.
min
Если m≥L, то тракт считается полным. Если блок по-прежнему содержит какие-либо пикселы не на тракте, то новый тракт начинается. Новый тракт может начинаться в любом непреобразованном пикселе в блоке. Типично, следующий тракт начинается в пикселе, смежном или около начала предыдущего тракта, или тракт может начинаться в противоположном углу блока, так что распределение длин тракта в блоке является практически симметричным. Процесс продолжает выполнение этапа 2 до тех пор, пока все пикселы не преобразуются.
min
Если m<L, то тракт является слишком коротким, и процесс продолжается посредством включения пиксела, смежного с ранее обработанным пикселом. Если имеется несколько смежных пикселов, то другие тракты в блоке используются для того, чтобы определять текущий тракт. Если необработанный пиксел доступен, пиксел становится частью тракта, и длина m тракта увеличивается, и процесс продолжает выполнение этапа 2 в направлении (180-θ) до тех пор, пока край блока не достигается. Таким образом, направление θ задается равным (180-θ), фактически поворот на 180 градусов, перед продолжением выполнения этапа 2.
min
min
Фиг.12A-C показывают направленные преобразования для L=3 и углов 45, 30 и 90 градусов, соответственно. Фиг.12D-F показывают направленные преобразования для L=5. Альтернативные варианты осуществления являются возможными, когда тракты завершаются внутри блока, а не на краю.
Обратное преобразование 26 работает вдоль идентичных трактов, как описано выше, если только коэффициенты обратного преобразования не используются. Например, если одномерное DCT используется для каждого тракта, то обратное преобразование должно использовать одномерное обратное DCT (IDCT).
Вторичные направленные преобразования
Фиг.11B показывает вторичное направленное преобразование 26. После того, как первичное направленное преобразование применено, вторичное преобразование может адаптивно применяться к каждому блоку вдоль тракта, содержащего начальные коэффициенты, из каждого тракта начального преобразования. Эти коэффициенты типично соответствуют DC-коэффициентам одномерного преобразования, к примеру, DCT.
Обратное вторичное преобразование работает вдоль идентичного тракта, как описано выше, если только коэффициенты обратного вторичного преобразования не используются. Обратное вторичное направленное преобразование выполняется перед обратным направленным преобразованием в ходе декодирования.
Вторичное преобразование дополнительно уменьшает избыточность в DC-компонентах коэффициентов направленного преобразования. Альтернативно, DC-компонент одного направленного преобразования может быть использован, чтобы прогнозировать DC-компонент другого направленного преобразования.
Секционированные направленные преобразования
Фиг.13 показывает секционированное направленное преобразование. Блок 1300 M×N (8×8) пикселов секционируется на два блочных сегмента A и B приблизительно вдоль линии 1310 с углом φ сегмента относительно вертикали. Угол сегмента является перпендикулярным углу θ 1105 преобразования.
A
B
A
A
B
Затем, направленные преобразования формируются с использованием этапов, описанных выше с ограничением, что блочный сегмент A имеет набор трактов, ориентированных под углом θ, и сегмент B имеет набор, если тракты ориентированы под углом θ. Первичный угол направленного преобразования θ рассматривается как идентичный θ. Поскольку тракт формируется в сегменте, линия 1310 аппроксимирует край сегмента. Таким образом, каждый пиксел в направленном преобразовании находится в сегменте A или B. Углы θ и θ могут отличаться.
В одном варианте осуществления изобретения вторичное направленное преобразование применяется к обоим сегментам B. Чтобы инвертировать процесс, вторичное обратное преобразование применяется, и затем обратные направленные преобразования применяются независимо к сегментам A и B. В другом варианте осуществления изобретения вторичное преобразование применяется независимо к каждому сегменту.
Т.е. либо оба обратных вторичных преобразования могут применяться до обратных первичных преобразований, либо обратное вторичное преобразование и обратное первичное преобразование могут применяться к сегментам независимо. Это решение принимается адаптивно в расчете на блок.
Масштабирование и порядок квантования
После того, как первичные и вторичные преобразования завершаются, результирующие коэффициенты масштабируются, упорядочиваются и квантуются.
m
m
m
Масштабирование коэффициентов преобразования зависит от длины m тракта каждого одномерного направленного преобразования или местоположения коэффициента в блоке. Одномерное преобразование длины m имеет коэффициент S масштабирования. Таким образом, все коэффициенты в тракте длины m масштабируются посредством S. Типично, коэффициент масштабирования выбирается так, что абсолютные величины DC-коэффициентов являются идентичными при преобразовании идентичных пикселных значений. Если преобразование с длиной m=4 преобразует четыре пиксела, каждый из которых имеет значение v, а преобразование с длиной m=5 преобразует пять пикселов, каждый из которых имеет значение v, то коэффициент S масштабирования выбирается так, что оба преобразования выводят первые (DC) коэффициенты с идентичным значением.
Альтернативные способы масштабирования также являются возможными. Меньшим преобразованиям можно назначать меньшие или большие коэффициенты масштабирования на основе длины m или направления θ. Масштабирование также может быть сделано частью самого преобразования, чтобы упрощать реализацию этого процесса.
0
1
N-1
Масштабированные коэффициенты размещаются в порядке сканирования. В одном варианте осуществления набор преобразований {T, T,..., T} сканируется независимо и по порядку. При каждом преобразовании первый DC-коэффициент сканируется сначала, а затем следующие AC-коэффициенты в порядке, идентичном порядку тракта для этого преобразования.
0
1
N-1
0
1
N-1
В другом варианте осуществления все первые DC-коэффициенты из каждого преобразования сканируются, а затем все вторые коэффициенты из каждого преобразования и т.д., до последнего преобразования. Во втором варианте осуществления порядок, в котором сканируются преобразования, может варьироваться. Например, преобразования могут быть сканированы в порядке их индекса, т.е. первое сканирование использует DC-коэффициенты из набора преобразований {T, T,..., T} в порядке {0, 1,..., N-1}. Альтернативно, преобразования могут быть сканированы в порядке их длины {l, l,..., l}. Коэффициенты могут быть сканированы на основе их относительной позиции в блоке. Например, все коэффициенты вдоль края блока могут сканироваться сначала, а затем коэффициенты, которые смещены от края.
Хотя изобретение описано посредством примеров предпочтительных вариантов осуществления, следует понимать, что различные другие адаптации и модификации могут выполняться в пределах сущности и объема изобретения. Следовательно, цель прилагаемой формулы изобретения состоит в том, чтобы охватывать все такие изменения и модификации как попадающие в пределы истинной сущности и объема изобретения.