ПРОГНОЗИРОВАНИЕ КОЭФФИЦИЕНТОВ ПРЕОБРАЗОВАНИЯ ДЛЯ СЖАТИЯ ИЗОБРАЖЕНИЯ
FORECASTING CONVERSION RATIOS FOR IMAGE COMPRESSION

Разрешение по авторским правам
Часть изобретения данного патентного документа содержит материал, который является субъектом защиты авторского права. Владелец авторского права не имеет возражения на факсимильное воспроизведение любого из патентных документов или элементов изобретения, как они показаны в патентном файле или записях Бюро патентов и торговых марок, но в других отношениях сохраняет за собой все авторские права.
Уровень техники
Кодирование, основанное на блочных преобразованиях
Кодирование с преобразованием - это методика сжатия, используемая во многих системах сжатия звука, изображений и видео. Несжатое цифровое изображение и видео типично представляются или получаются в виде дискретных выборок элементов или цветов картинки на позициях в кадре изображения или видео, скомпонованном в двумерной (2D) сетке. Это называется представлением изображения или видео в пространственной области. Например, типичный формат для изображений состоит из потока 24-битных дискретных выборок элементов цветной картинки, скомпонованных в виде сетки. Каждая дискретная выборка, среди прочего, является числом, представляющим цветовые компоненты на позиции пикселя в сетке в пределах цветового пространства, такого как RGB или YIQ, наряду с прочим. Различные системы изображения и видео могут использовать различные цветовые, пространственные и временные разрешения дискретизации. Также цифровое аудио типично представляется как выбираемый по времени поток звуковых сигналов. Например, типичный звуковой формат состоит из потока 16-битных амплитудных дискретных выборок звукового сигнала, взятых с постоянными временными интервалами.
Традиционно сжатие видео выполняется посредством сжатия первого кадра изображения и сжатия различий между последующими кадрами. Этот процесс периодически повторяется по всей видеопоследовательности. Поэтому сжатие видео тесно связано со сжатием "неподвижных" изображений.
Несжатые цифровые сигналы звука, изображения и видео могут требовать значительную запоминающую емкость и пропускную способность. Кодирование с преобразованием уменьшает размер цифрового звука, изображений и видео посредством преобразования представления сигнала в пространственной области в представление в частотной области (или другой аналогичной области преобразования), а затем уменьшения разрешения определенных, в целом менее воспринимаемых, частотных компонентов представления в области преобразования. Это, как правило, производит гораздо менее воспринимаемое ухудшение цифрового сигнала в сравнении с уменьшением цветового или пространственного разрешения изображений или видео в пространственной области или звука - во временной области.
1
n
1
n
Более конкретно, типичный кодек 100, основанный на блочных преобразованиях, показанный на Фиг.1, делит пиксели несжатого цифрового изображения на двумерные блоки фиксированного размера (X, …, X), каждый блок, возможно, перекрывается с другими блоками. Линейное преобразование 120-121, которое производит анализ пространственных частот, применяется к каждому блоку, который конвертирует разнесенные дискретные выборки в пределах блока в набор коэффициентов частот (или преобразования), обычно представляющих мощность цифрового сигнала в соответствующих полосах частот по блочному интервалу. Для сжатия коэффициенты преобразования могут быть избирательно квантованы 130 (т. е. уменьшены в разрешении, например, отбрасыванием наименее значимых битов значений коэффициентов или в ином случае преобразованием значений из числового множества с более высоким разрешением в более низкое разрешение), а также закодированы 130 энтропийно или c переменной длиной в сжатый поток данных. При декодировании коэффициенты преобразования обратно преобразуются 170-171, чтобы приблизительно восстановить исходный выбираемый по цвету/пространству сигнал изображения/видео (восстановленные блоки X …X).
x
N.
y
= Mx,
M
N-
M
Блочное преобразование 120-121 может быть задано как математическая операция над вектором размера Более часто операцией является линейное умножение, генерирующее выход области преобразования где  является матрицей преобразования. Когда входные данные имеют произвольную длину, они сегментируются на мерные векторы, а блочное преобразование применяется к каждому сегменту. В целях сжатия данных выбраны обратимые блочные преобразования. Другими словами, матрица  является обратимой. В многочисленных измерениях (например, для изображения и видео) блочные преобразования типично реализованы как раздельные операции. Матричное умножение раздельно применяется вдоль каждого измерения данных (т.е. как строк, так и столбцов).
y
Для сжатия коэффициенты преобразования (компоненты вектора ) могут быть выборочно квантованы (т.е. уменьшены по разрешению, например, отбрасыванием наименее значимых битов значений коэффициентов или в ином случае преобразованием значений из числового множества с более высоким разрешением в более низкое разрешение), а также закодированы энтропийно или c переменной длиной в сжатый поток данных.
M
-1
При декодировании в декодере 150 инверсия этих операций (декодирование 160 по деквантованию/энтропии и обратное блочное преобразование 170-171) применяется на стороне декодера 150, как показано на Фиг.1. При восстановлении данных обратная матрица  (обратное преобразование 170-171) применяется в качестве множителя к данным области преобразования. Когда применено к данным области преобразования, обратное преобразование приближенно восстанавливает исходное цифровое мультимедиа временной области или пространственной области.
Во многих приложениях кодирования на основе блочных преобразований преобразование желательно обратимое, чтобы поддерживать кодирование как с потерями, так и без потерь в зависимости от коэффициента квантования. При отсутствии квантования (обычно представляемого как коэффициент квантования 1), например, кодек, использующий обратимое преобразование, может точно воспроизводить входные данные при декодировании. Тем не менее, требование обратимости в этих приложениях ограничивает выбор преобразований, на основе которых может быть разработан кодек.
Многие системы сжатия изображений и видео, такие как MPEG и Windows Media, помимо прочих, используют преобразования на основе дискретного косинусного преобразования (DCT). DCT, как известно, имеет подходящие свойства энергетического сжатия, что приводит к практически оптимальному сжатию данных. В этих системах сжатия обратное DCT (IDCT) используется в циклах восстановления как в кодере, так и в декодере системы сжатия для восстановления отдельных блоков изображений.
Прогнозирование коэффициентов преобразования
Как только что было отмечено, блочные преобразования, как правило, используют дискретное косинусное преобразование (DCT) или варианты. При высоком уровне потерь блочное преобразование страдает от визуальных помех вследствие раздражающих разрывностей блоков. Методика "перекрывающегося преобразования", при которой окна преобразования перекрываются, может быть использована для того, чтобы сглаживать восстановления даже после потерь.
И в блочном, и в перекрывающемся преобразовании длинные линейные признаки, ориентированные вдоль горизонтального или вертикального направления, вызывают высокие значения преобразования по левым или верхним краям блоков области преобразования. Левые и верхние края часто упоминаются как значения DCAC. Это название обусловлено тем, что это коэффициенты, которые являются DC в одном направлении и AC в другом. Верхняя левая позиция называется значением DC (DC в обоих направлениях).
Блочные преобразования часто показывают корреляции между блоками. Легко можно принять во внимание, что DC-коэффициенты соседних блоков коррелируются и стремятся к тому, чтобы быть близкими в вероятностном смысле. Менее очевидной является корреляция между соответствующими DCAC-коэффициентами соседних блоков. В особенности если определенная область изображения демонстрирует сильные горизонтальные признаки (такие как линии или шаблоны), коэффициенты преобразования, которые являются DC в горизонтальном направлении и AC в вертикальном направлении, демонстрируют также междублочную числовую корреляцию.
Процесс использования междублочной непрерывности DC и DCAC посредством формирования прогнозирования для членов DC и DCAC из соседних блоков и разности прогнозирования кодирования в общем упоминается как "DCAC-прогнозирование". Этот термин также охватывает побочный процесс восстановления исходных (или приблизительных) DC- и DCAC-коэффициентов преобразования. Прогнозируемые члены DCAC могут быть поднабором из всех членов DCAC, определенных посредством направления прогнозирования.
Сущность изобретения
Методика кодирования и декодирования цифрового мультимедиа и реализация методики в цифровом мультимедийном кодеке, описываемом в данном документе, использует прогнозирование коэффициентов преобразования, которое учитывает доминантную направленность цифровых мультимедийных данных (к примеру, изображения с сильными горизонтальными или вертикальными признаками), и дополнительно работает совместимо с двухстадийным преобразованием.
Для DC- и DCAC-коэффициентов из преобразования на внутренней стадии макроблока кодек вычисляет и сравнивает показатели направленности на основе DC-коэффициентов преобразования на внутренней стадии соседних макроблоков, чтобы определить доминантную направленность. Определение направленной доминантности также может учитывать информацию из других каналов (к примеру, цвета или цветности). При отсутствии направленной доминантности DC-коэффициент макроблока прогнозируется из усредненных DC-коэффициентов предыдущих соседних макроблоков. Направленное прогнозирование может быть пропущено для DCAC-коэффициентов макроблока, если соседний макроблок имеет другой квантователь. Альтернативно, направленное прогнозирование DCAC-коэффициентов может быть ограничено макроблоком(ами), который(е) имеет (имеют) тот же квантователь.
Для DCAC-коэффициентов из преобразования на внешней стадии блоков в макроблоке кодек вычисляет и сравнивает показатели направленности на основе DCAC-коэффициентов преобразования на внутренней стадии макроблока, чтобы обнаружить доминантную направленность. Определение направленной доминантности также может учитывать информацию из других каналов (к примеру, цвета или цветности). Таким образом, определение направленного прогнозирования для DCAC-коэффициентов на внешней стадии может быть выполнено исключительно на основе информации в макроблоке. Если направленная доминантность обнаружена, DCAC-коэффициенты на внешней стадии блоков в макроблоке прогнозируются однонаправленно из доминантного направления.
Данный раздел «осуществление изобретения» предусмотрен для того, чтобы в упрощенной форме представить набор идей, которые дополнительно описываются ниже в подробном описании. Этот раздел не предназначен для того, чтобы идентифицировать ключевые признаки или существенные признаки заявляемого предмета изобретения, а также не предназначен для того, чтобы быть использованным для определения объема защиты заявляемого предмета изобретения.
Краткое описание чертежей
Фиг.1 - это блок-схема традиционного основанного на блочном преобразовании кодека в предшествующем уровне техники.
Фиг.2 - это блок-схема типичного кодера, включающего в себя кодирование с прогнозированием коэффициентов преобразования.
Фиг.3 - это блок-схема типичного декодера, включающего в себя кодирование с прогнозированием коэффициентов преобразования.
Фиг.4 - это структура блоков преобразования 4x4, иллюстрирующая DC- и DCAC-коэффициенты.
Фиг.5 - это схема структуры блоков нижних частот сигнала цветности 422 для коэффициентов, сформированных при преобразовании на внутренней стадии кодера по Фиг.3 для формата цвета YUV 4:2:2.
Фиг.6 - это схема структуры блоков нижних частот сигнала цветности 420 для коэффициентов, сформированных при преобразовании на внутренней стадии кодера по Фиг.3 для изображения формата цвета YUV 4:2:0.
Фиг.7 - это схема, иллюстрирующая пример прогнозирования DCAC.
Фиг.8 - это схема, показывающая направление прогнозирования в примере прогнозирования DCAC по Фиг.7.
Фиг.9 - это схема, иллюстрирующая макроблоки, используемые при определении режима прогнозирования DC макроблока.
Фиг.10 - это распечатка псевдокода определения режима прогнозирования DC при кодировании с прогнозированием коэффициентов преобразования в кодере по Фиг.3 и декодере по Фиг.4.
Фиг.11 - это распечатка псевдокода определения режима прогнозирования DCAC нижних частот при кодировании с прогнозированием коэффициентов преобразования в кодере по Фиг.3 и декодере по Фиг.4.
Фиг.12 - это распечатка псевдокода определения режима прогнозирования DCAC верхних частот при кодировании с прогнозированием коэффициентов преобразования в кодере по Фиг.3 и декодере по Фиг.4.
Фиг.13 - это схема, иллюстрирующая прогнозирование DCAC левых верхних частот для макроблока.
Фиг.14 - это схема, иллюстрирующая прогнозирование DCAC верхних частот для макроблока.
Фиг.15 - это блок-схема подходящего вычислительного окружения для реализации адаптивного кодирования коэффициентов с большим диапазоном по Фиг.4.
Осуществление изобретения
Нижеследующее описание относится к методикам кодирования и декодирования, которые предоставляют эффективное кодирование/декодирование коэффициентов преобразования основанного на блочном преобразовании кодека на основе прогнозирования коэффициентов (упоминаемого в данном документе как "Кодирование с прогнозированием коэффициентов преобразования"). Нижеприведенное описание поясняет примерную реализацию методики в контексте системы или кодека сжатия цифрового мультимедиа. Цифровая мультимедийная система кодирует цифровые мультимедийные данные в сжатую форму для передачи или хранения и декодирует данные для воспроизведения или другой обработки. В целях иллюстрации этой примерной системой сжатия, содержащей данную методику кодирования с прогнозированием коэффициентов преобразования, является система сжатия изображений или видео. Альтернативно, методика также может быть включена в системы сжатия или кодеки для других двумерных данных. Методика кодирования с прогнозированием коэффициентов преобразования не требует того, чтобы система сжатия цифрового мультимедиа кодировала сжатые цифровые мультимедийные данные в конкретном формате кодирования.
1. Кодер/декодер
Фиг.2 и 3 - это обобщенные схемы процессов, используемых в типичном двумерном (2D) кодере 200 и декодере 300 данных. Схемы представляют обобщенную или упрощенную иллюстрацию системы сжатия, включающей кодер и декодер двумерных данных, которые реализуют кодирование блочных шаблонов. В альтернативных системах сжатия, использующих кодирование блочных шаблонов, дополнительное или меньшее число процессов, чем проиллюстрировано в типичном кодере и декодере, может быть использовано для сжатия двумерных данных. Например, некоторые кодеры/декодеры также могут включать в себя цветовое преобразование, цветовые форматирования, масштабируемое кодирование, кодирование без потерь, режимы макроблока и т. д. Система сжатия (кодер и декодер) может обеспечивать кодирование без потерь и/или с потерями 2D-данных, в зависимости от квантования, которое может быть основано на параметре квантования, изменяющемся от «без потерь» до «с потерями».
Кодер 200 2D-данных вырабатывает сжатый битовый поток 220, который является более компактным представлением (для типичного ввода) 2D-данных 210, представленных в качестве входных данных кодеру. Например, входным сигналом 2D-данных может быть изображение, кадр видеопоследовательности или другие данные, имеющие два измерения. Кодировщик 2D-данных фрагментирует 230 входные данные на макроблоки, которые имеют размер 16x16 пикселей в этом иллюстративном кодировщике. Кодер 2D-данных дополнительно фрагментирует каждый макроблок на блоки 4x4. Оператор 240 "прямого перекрытия" применяется к каждому краю между блоками, после чего каждый блок 4x4 преобразуется с помощью блочного преобразования 250. Этим блочным преобразованием 250 может быть обратимое безразмерное двумерное преобразование, описанное Srinivasan в патентной заявке No. 11/015,707 (США), озаглавленной "Reversible Transform For Lossy And Lossless 2-D Data Compression", зарегистрированной 17 декабря 2004 года. Оператор перекрытия 240 может быть оператором обратимого перекрытия, который подробно описан Tu et al., патентная заявка (США) номер 11/015,148, озаглавленная "Reversible Overlap Operator for Efficient Lossless Data Compression", зарегистрированная 17 декабря 2004 года; и Tu et al., патентная заявка (США) номер 11/035,991, озаглавленная "Reversible 2-Dimensional Pre-/Post-Filtering For Lapped Biorthogonal Transform", зарегистрированная 14 января 2005 года. В качестве альтернативы, могут быть использованы дискретное косинусное преобразование или другие блочные преобразования и операторы перекрытия. Вслед за преобразованием DC-коэффициент 260 каждого блока 4x4 преобразования подвергается аналогичной цепочке обработки (фрагментированию, прямому перекрытию, сопровождаемому блочным преобразованием 4x4). Результирующие коэффициенты преобразования по постоянному току (DC) и переменному току (АС) квантуются 270, кодируются 280 по энтропии и пакетируются 290.
Декодер выполняет обратную последовательность операций. На стороне декодера биты коэффициентов преобразования извлекаются 310 из их соответствующих пакетов, из которых декодируются 320 и деквантуются 330 сами коэффициенты. DC-коэффициенты 340 регенерируются посредством применения обратного преобразования, и плоскость DC-коэффициентов «обратно перекрывается» с использованием подходящего сглаживающего оператора, применяемого по границам DC-блоков. В дальнейшем все данные регенерируются посредством применения обратного преобразования 350 4x4 к DC-коэффициентам, и AC-коэффициенты 342 декодируются из потока битов. В заключение, границы блока в плоскостях результирующего изображения фильтруются 360 с обратным перекрытием. Это вырабатывает выходной сигнал восстановленных 2D-данных.
В примерной реализации кодер 200 (Фиг.2) сжимает входное изображение в сжатый поток 220 битов (к примеру, файл), а декодер 300 (Фиг.3) восстанавливает исходный ввод или его приближение на основе того, какое кодирование (с потерями или без потерь) используется. Процесс кодирования включает в себя применение прямого перекрывающегося преобразования (LT), описанного ниже, которое реализовано с помощью обратимой двумерной предварительной/пост-фильтрации, также более подробно описанной ниже. Процесс декодирования влечет за собой применение обратного перекрывающегося преобразования (ILT) с использованием обратимой двумерной предварительной/пост-фильтрации.
Проиллюстрированные LT и ILT являются инверсиями друг друга, в точном смысле, и поэтому вместе могут быть указываемы ссылкой как обратимое перекрывающееся преобразование. В качестве обратимого преобразования пара LT/ILT может быть использована для сжатия изображений без потерь.
Входными данными 210, сжатыми проиллюстрированным кодером 200/декодером 300, могут быть изображения различных форматов цветов (к примеру, форматы цветных изображений RGB/YUV 4:4:4, YUV 4:2:2 или YUV 4:2:0). Типично входное изображение всегда имеет компонент яркости (Y). Если оно является изображением RGB/YUV 4:4:4, YUV 4:2:2 или YUV 4:2:0, изображение также имеет компоненты цветности, такие как компонент U и компонент V. Отдельные цветовые плоскости или компоненты изображения могут иметь различные пространственные разрешения. В случае входного изображения, например, в формате цвета YUV 4:2:0 компоненты U и V имеют половину ширины и высоты компонента Y.
Как описано выше, кодер 200 фрагментирует входное изображение или рисунок на макроблоки. В примерной реализации кодер 200 фрагментирует входное изображение на макроблоки 16x16 в канале Y (которыми могут быть области 16x16, 16x8 или 8x8 в каналах U и V, в зависимости от формата цвета). Цветовая плоскость каждого макроблока фрагментирована на зоны или блоки 4x4. Поэтому макроблок составляется для различных форматов цвета следующим образом для этой примерной реализации кодера.
1. Для изображения в оттенках серого каждый макроблок содержит 16 блоков яркости (Y) 4x4.
2. Для цветного изображения формата YUV 4:2:0 каждый макроблок содержит 16 блоков Y 4x4 и по 4 блока цветности (U и V) 4x4.
3. Для цветного изображения формата YUV 4:2:2 каждый макроблок содержит 16 блоков Y 4x4 и по 8 блоков цветности (U и V) 4x4.
4. Для цветного изображения RGB или YUV 4:4 каждый макроблок содержит 16 блоков каждого из каналов Y, U и V.
Фиг. 4, 5 и 6 иллюстрируют примеры различных блоков преобразования в примерном кодере/декодере. Фиг.4 иллюстрирует блок преобразования 4x4 для блоков в канале яркости различных форматов, а также каналов цветности изображения формата цвета YUV 4:4:4. Фиг.5 иллюстрирует формат блоков нижних частот сигнала цветности 4:2:2, который содержит блочные коэффициенты преобразования для преобразования на внутренней стадии канала цветности изображения формата цвета YUV 4:2:2. Фиг.6 иллюстрирует блок нижних частот сигнала цветности 4:2:0, содержащий коэффициенты из преобразования на внутренней стадии канала цветности изображения формата цвета YUV 4:2:0.
Со ссылкой на Фиг.4, нижеприведенное описание использует условные обозначения или записи блочного преобразования, которые совпадают с матричной записью с упорядоченными базисными функциями. В блоке 400 коэффициентов преобразования, показанном, например, на Фиг.4, коэффициенты, представляющие частоту DC, - это первая строка/столбец блока коэффициентов преобразования (помеченный коэффициент «0»), и коэффициенты наивысшей частоты AC - это последняя строка/столбец (помеченный коэффициент «15»). Дополнительно, DCAC-коэффициенты в верхней строке блока (коэффициенты, помеченные «1», «2» и «3» на Фиг.4) соответствуют шаблонам вертикальных линий, а DCAC-значения в левом столбце (коэффициенты, помеченные «4», «8» и «12» на Фиг.4) соответствуют шаблонам горизонтальных линий. В фактической практической реализации блок преобразования может быть транспонирован, и при этом соответствующая переиндексация коэффициентов должна быть принята во внимание.
2. Обзор кодирования с прогнозированием коэффициентов преобразования
Как вкратце описано в разделе "Уровень техники" выше, DCAC-прогнозирование - это процесс использования межблочной непрерывности DC и DCAC посредством формирования прогнозирования для членов DC и DCAC из соседних блоков и кодирования разностей прогнозирования (а также обратный процесс в декодере).
Со ссылкой на Фиг. 7 и 8 показан пример прогнозирования DCAC. В этом примере набор DC-коэффициентов («0») и DCAC-коэффициентов, соответствующих либо вертикальным шаблонам («1», «2» и «3»), либо горизонтальным шаблонам («4», «8» и «12») каждого блока преобразования, прогнозируется из коэффициентов предыдущего соседнего блока. Другими словами, соответствующие коэффициенты соседнего блока учитываются в качестве "прогнозирующих параметров" для коэффициентов текущего блока. Направление прогнозирования для каждого блока в этом примере идентифицировано на схеме Фиг.8 (при этом обозначение "N" указывает отсутствие прогнозирования, "L" указывает прогнозирование слева, а "T" указывает прогнозирование сверху), а также проиллюстрировано посредством стрелок на схеме Фиг.7. Когда направление прогнозирования идет сверху, коэффициенты «1», «2» и «3» прогнозируются из соответствующих коэффициентов в блоке сверху. Когда направление прогнозирования идет слева, коэффициенты «4», «8» и «12» прогнозируются из соответствующих коэффициентов в блоке слева. В частности, прогнозирование не используется для верхнего левого блока. Второй и третий блоки верхней строки прогнозируются из блока слева от них. Блоки во второй строке прогнозируются сверху, слева и сверху соответственно. При прогнозировании DCAC кодер кодирует коэффициент как разность из своего прогнозирующего параметра. Если прогнозирование является достаточно точным, разности от прогнозирующего параметра равняются нулю с высокой вероятностью, что может быть эффективно закодировано с помощью методик кодирования по энтропии с переменной длиной (к примеру, неравномерного кодирования) при кодировании 280 по энтропии (Фиг.2). Например, методика кодирования по энтропии переменной длины, описанная Srinivasan, патентная заявка (США) номер TBD, озаглавленная "Efficient Encoding and Decoding of Transform Blocks", зарегистрированная 12 августа 2005 года.
Вышеуказанный типичный кодер 200 (Фиг.2) и декодер 300 (Фиг.3) представляют определенные сложные задачи, чтобы использовать прогнозирование DCAC. Во-первых, типичный кодер и декодер используют двухстадийное преобразование. Они могут упоминаться как "внешняя" и "внутренняя" стадии, которые соответствуют полосам верхних и нижних частот соответственно. В частности, DC-коэффициенты 260 (Фиг.2) блоков подвергаются преобразованию второй стадии ("внутренней" стадии). Как результат, DC-коэффициенты недоступны декодеру для декодирования других коэффициентов без выполнения сначала обратного преобразования этой стадии.
Во-вторых, типичный кодер и декодер используют перекрывающееся преобразование. За счет своей схемы и конструкции перекрывающееся преобразование уже неявно извлекает непрерывность по соседним блокам. По этой причине дополнительное применение прогнозирования DCAC может приводить к ухудшению производительности кодирования (по сравнению с производительностью без прогнозирования DCAC).
В-третьих, для целей минимизации объема памяти и сложности желательно сводить прогнозирование DCAC между макроблоками к минимуму.
В завершение, типичный кодер и декодер могут применять различные квантователи в различных макроблоках, что дополнительно усложняет прогнозирование DCAC.
Методики кодирования с прогнозированием коэффициентов преобразования, описанные в данном документе, предоставляют различные усовершенствования в традиционное прогнозирование DCAC. В частности, примерная реализация методик кодирования с прогнозированием коэффициентов преобразования, описная ниже, разрешает вышеперечисленные проблемы с помощью уникального набора правил прогнозирования. Обобщая, эти правила включают в себя следующее.
1. DC-коэффициенты (внутреннего преобразования) прогнозируются на основе DC-коэффициентов из причинных соседних блоков, по меньшей мере, частично на основе информации цвета, когда это возможно.
2. DCAC-коэффициенты внутреннего преобразования используют направление прогнозирования, извлеченное из направления прогнозирования DC-коэффициентов, и также основываются на информации не из макроблоков.
3. Прогнозирование DCAC-коэффициентов внутреннего преобразования пропускается (т.е. 0 используется в качестве прогнозирующего параметра), когда текущий и предшествующий макроблок имеют различные квантователи.
4. Прогнозирование DCAC-коэффициентов внешнего преобразования выполняется исключительно в макроблоке.
5. Направление прогнозирования DCAC-коэффициентов внешнего преобразования извлекается из DCAC-коэффициентов внутреннего преобразования того же макроблока.
В нижеприведенном описании кодирование с прогнозированием коэффициентов преобразования описывается как выполняемое для коэффициентов квантованного преобразовании (к примеру, коэффициентов преобразования после квантования 270 в кодере 200 по Фиг.2 и до деквантования 330 в декодере 300 по Фиг.3). Тем не менее, следует понимать, что альтернативные реализации методики кодирования с прогнозированием коэффициентов преобразования могут быть осуществлены для неквантованных коэффициентов преобразования (или для деквантованных значений на стороне декодера).
Кодирование с прогнозированием коэффициентов преобразования в типичном кодере/декодере включает в себя три уровня прогнозирования, которые подробно описываются в нижеследующих разделах. Они включают в себя:
1. прогнозирование DC, которое является прогнозированием DC-коэффициентов внутреннего преобразования,
2. прогнозирование DCAC нижних частот, которое является прогнозированием DCAC-коэффициентов внутреннего преобразования, и
3. прогнозирование DCAC верхних частот, которое является прогнозированием DCAC-коэффициентов внешнего преобразования.
2.1. Прогнозирование DC
Как описано выше, типичный кодер 200 (Фиг.2) фрагментирует изображение на макроблоки по 16x16 пикселов и дополнительно фрагментирует макроблоки на блоки преобразования по 4x4 пикселов каждый. Преобразование на внешней стадии применяется к блокам преобразования, формируя блоки, содержащие коэффициенты преобразования 4x4, как показано на Фиг.4 (для канала яркости, а также для каналов цветности изображения формата цвета YUV 4:4:4). DC-коэффициенты в этих 16 блоках коэффициентов преобразования макроблока разделены (формируя блок 4x4), и внутренняя стадия преобразования применяется к этому блоку. Результирующий блок преобразования на внутренней стадии снова имеет коэффициенты 4x4. DC-коэффициент (помеченный «0») этого блока преобразования на внутренней стадии упоминается в данном документе как DC-коэффициент макроблока. DCAC-коэффициенты («1», «2», «3», «4», «8» и «12») блока преобразования на внутренней стадии упоминаются в данном документе как DCAC-коэффициенты нижних частот макроблока. Эта структура макроблока может варьироваться в альтернативных кодерах и декодерах, использующих кодирование с прогнозированием коэффициентов преобразования.
При кодировании коэффициента макроблока кодирование с прогнозированием коэффициентов преобразования выбирает из четырех режимов для прогнозирования DC-коэффициента макроблока. Эти режимы следующее.
predictor
DC [left_MB]
1. Прогнозирование слева (т.е. прогнозирующий параметр для DC-коэффициента макроблока - это DC-коэффициент макроблока слева, или = ).
predictor = DC [top_MB]
2. Прогнозирование сверху (т.е. прогнозирующий параметр - это DC-коэффициент макроблока выше, ).
predictor
DC [left_MB] + DC [top_MB])/
3. Прогнозирование слева и сверху (т.е. прогнозирующий параметр - это усредненные DC-коэффициенты макроблоков слева и выше, т.е. = (2).
predictor
4. Нулевое прогнозирование (т.е. без прогнозирования, = 0).
x
y
Кодер определяет то, какой режим прогнозирования использовать для макроблока, согласно процедуре, проиллюстрированной посредством распечатки 1000 псевдокода на Фиг.10. В распечатке 1000 значение [m, m] - это индекс текущего макроблока в изображении (или фрагменте изображения, если фрагментация используется) в отношении номера смещения макроблоков в горизонтальном (x) и вертикальном направлении (y) начиная с верхнего левого макроблока в [0, 0].
x
y
x
y
В проиллюстрированной процедуре кодер определяет то, какой режим прогнозирования DC используется, на основе позиции макроблока в изображении, а также с учетом DC-коэффициентов макроблоков слева, сверху и сверху слева от данного макроблока. Более конкретно, кодер выбирает режим без прогнозирования для верхнего левого макроблока изображения (т.е. текущего макроблока [m, m]=[0, 0]). Кодер выбирает прогнозирование сверху для макроблоков вдоль левого края в изображении (т.е. где индекс (m) равен 0). Кодер выбирает прогнозирование слева для макроблоков в верхней строке макроблоков в изображении (т.е. где индекс (m) равен 0).
Для всех остальных (к примеру, внутри изображения) макроблоков кодер определяет то, какой режим прогнозирования использовать, на основе показателя доминантной направленности. Например, область изображения с горизонтальными полосами имеет горизонтальную доминантную направленность. Другими словами, горизонтальный сосед текущего макроблока является лучшим прогнозирующим параметром его DC-коэффициента, чем его вертикальный сосед. Как проиллюстрировано на Фиг.9, этот показатель вычисляется на основе направленных разностей DC-коэффициентов левого (L) и верхнего (T) соседей текущего (X) макроблока от диагонального соседа (D) текущего макроблока. Если изображение имеет каналы цвета или цветности (к примеру, для изображений формата цвета YUV, но не изображений в оттенках серого), показатель дополнительно может учитывать DC-коэффициенты соответствующих макроблоков каналов цветности. Фактически процедура определяет, что есть вертикальная доминантная направленность, если DC-коэффициент диагонального соседа значительно ближе к коэффициенту левого соседа. С другой стороны, когда DC-коэффициент диагонального соседа значительно ближе к коэффициенту верхнего соседа, то показатель демонстрирует горизонтальную доминантную направленность. Показатель определяет доминантность на основе весового коэффициента (orient_weight). В проиллюстрированной процедуре весовой коэффициент равен четырем. Другими словами, направление считается доминантным, когда направленная разность более чем в четыре раза превышает разность другого направления. Тем не менее, весовой коэффициент - это параметр, который может быть задан равным другому значению в альтернативных реализациях.
В случае когда нет ни горизонтальной, ни вертикальной доминантности, то кодер выбирает комбинированный режим прогнозирования слева и сверху (номер 3 в вышеприведенном списке), где прогнозирующий параметр - это усредненные DC-коэффициенты верхнего и левого макроблоков.
2.2. Прогнозирование DCAC нижних частот
Снова со ссылкой на Фиг.2 и 4, типичный кодер 200 включает в себя второе преобразование или преобразование на внутренней стадии, которое применяется к DC-коэффициентам 260 (Фиг.2) из преобразования на внешней стадии. DCAC-коэффициенты (в позициях «1», «2», «3», «4», «8» и «12») результирующего блока 400 коэффициентов (Фиг.4) упоминаются в данном документе как DCAC-коэффициенты нижних частот.
Типичный кодер и декодер используют три режима прогнозирования для прогнозирования DCAC-коэффициентов нижних частот из преобразования на внутренней стадии макроблока. Эти режимы включают в себя:
predictor
DCAC [left_MB]
1. прогнозирование слева (т.е. прогнозирующий параметр для DC-коэффициентов нижних частот макроблока - это соответствующий DC-коэффициент макроблока слева, или = ) - в этом случае прогнозируются только коэффициенты, помеченные «4», «8» и «12»;
predictor = DCAC [top MB]
2. прогнозирование сверху (т.е. прогнозирующий параметр - это соответствующий DCAC-коэффициент макроблока сверху, ) - в этом случае прогнозируются только коэффициенты, помеченные «1», «2» и «3»; и
predictor
3. нулевое прогнозирование (т.е. без прогнозирования, или = 0).
Кодер определяет то, какой режим прогнозирования использовать для макроблока, согласно процедуре, проиллюстрированной посредством распечатки 1100 псевдокода на Фиг.11. В проиллюстрированной процедуре кодер определяет то, какой режим прогнозирования DCAC нижних частот используется, на основе режима прогнозирования DC макроблока вместе с индексами квантователя текущего макроблока и макроблока, который является прогнозирующим параметром DC. Это правило обеспечивает то, что прогнозирование DCAC-коэффициентов внутреннего преобразования не осуществляется для макроблоков с различными квантователями. Дополнительно, DCAC прогнозируется только в том случае, если одно направление является доминантным, что извлекается согласно процедуре режима прогнозирования DC, подробнее описанной выше (т.е. режим прогнозирования DC - это "прогнозирование слева" или "прогнозирование сверху", когда обнаружена горизонтальная или вертикальная доминантность).
Со ссылкой на Фиг.5, процедура прогнозирования DCAC для изображений формата цвета YUV 4:2:2 имеет специальный случай для DCAC-коэффициента нижних частот на позиции, помеченной «5» в этом блоке. При специальном случае коэффициент, помеченный «5», прогнозируется из коэффициента «1», когда режим прогнозирования DC - это "прогнозирование сверху" независимо от режима прогнозирования DCAC.
2.3. Прогнозирование DCAC верхних частот
Снова ссылаясь на Фиг.2, прогнозирование DCAC-коэффициентов верхних частот усложнено в типичном кодере/декодере вследствие двухстадийного преобразования. DCAC-коэффициенты верхних частот - это коэффициенты 262 преобразования верхних частот, сформированные из преобразования 250 на внешней стадии. Дополнительно, как упоминалось выше, прогнозирование выполняется после квантования 270 в типичном кодере, с тем чтобы прогнозирование в типичном декодере также осуществлялось в ходе декодирования 320 (Фиг.3) до деквантования 330 (Фиг.3). В этой точке процесса декодирования обратное преобразование на внутренней стадии еще не выполнено, чтобы восстановить DC-коэффициенты блоков преобразования на внешней стадии. Аналогично, при кодировании 280 по энтропии типичный кодер уже применил преобразование на внутренней стадии к этим DC-коэффициентам 260 блоков преобразования на внешней стадии, с тем чтобы DC-коэффициенты 260 теперь были недоступны без осуществления также обратного преобразования на внутренней стадии. Следовательно, нежелательно основывать прогнозирование DCAC верхних частот на DC-коэффициентах 260 внешнего преобразования. В противном случае декодеры должны быть ограничены так, чтобы иметь такую же числовую точность. Кодеры должны быть ограничены, чтобы запускать контур декодера (т.е. обратное преобразование на внутренней стадии), что не подходит для кодека, работающего на основе открытого контура. По этим причинам типичный кодер/декодер базирует кодирование с прогнозированием DCAC верхних частот только на декодированных квантованных значениях перед обратным преобразованием.
Двухстадийное преобразование типичного кодера/декодера является преимущественным в том, что определенная информация о характере текущего макроблока может уже быть известна из коэффициентов преобразования нижних частот даже до того, как коэффициенты преобразования верхних частот декодированы. Эта информация используется для того, чтобы определять направленность прогнозирования. Типичный кодер/декодер использует простой, но эффективный показатель для того, чтобы определять доминантную направленность макроблока только на основе коэффициентов внутреннего преобразования.
Типичный кодер и декодер используют три режима прогнозирования для прогнозирования DCAC-коэффициентов верхних частот из преобразования на внешней стадии макроблока. Эти режимы включают в себя:
predictor = DCAC [left_MB]
1. прогнозирование слева (т.е. прогнозирующий параметр для DCAC-коэффициента верхних частот блока - это соответствующим образом размещенный DCAC-коэффициент верхних частот блока слева, или , как проиллюстрировано для прогнозируемых слева DCAC-коэффициентов макроблока 1300 на Фиг.13);
predictor = DCAC [top_MB]
2. прогнозирование сверху (т.е. прогнозирующий параметр - это соответствующим образом размещенный DCAC-коэффициент верхних частот блока сверху, , как проиллюстрировано для прогнозируемых сверху DCAC-коэффициентов макроблока 1400 на Фиг.14); и
predictor
3. нулевое прогнозирование (без прогнозирования, или = 0).
В типичном кодере/декодере одинаковый режим применяется ко всем блокам в макроблоке, для которых возможно прогнозирование внутри макроблока (однако альтернативные реализации не должны применять одинаковый режим ко всем блокам в макроблоке). Другими словами, прогнозирование не выполняется для DCAC-коэффициентов верхних частот блоков, которые не имеют допустимой ссылки в макроблоке, даже если режим "прогнозирование слева" или "прогнозирование сверху" выбран для макроблока.
Кодер определяет то, какой режим прогнозирования использовать для макроблока, согласно процедуре, проиллюстрированной посредством распечатки 1200 псевдокода на Фиг.12. В этой процедуре весовой коэффициент снова используется для того, чтобы протестировать направленную доминантность (аналогично процедуре 1000 прогнозирования DC по Фиг.10). Типичный кодер и декодер используют значение весового коэффициента для обеих процедур, но нет необходимости использовать параметр с тем же значением в обеих процедурах в альтернативных реализациях. Направленные разности в процедуре 1200 прогнозирования DCAC верхних частот вычисляются на основе DCAC-коэффициентов нижних частот из преобразования на внутренней стадии макроблока, а также DCAC-коэффициентов нижних частот из каналов цветности (когда имеются). В распечатке 1200 псевдокода значения "lowpass[i]" - это DCAC-коэффициент нижних частот в соответствующей позиции индекса (i), помеченной в порядке слева направо сверху вниз, как в структуре макроблока, показанной на Фиг.4. Значения "lowpass_U[i]" и "lowpass_V[i]" - это DCAC-коэффициенты нижних частот из блоков преобразования на внутренней стадии каналов цветности U и V изображения формата цвета YUV. Эти каналы яркости имеют индексы коэффициентов, как в блочных структурах 400, 500 и 600, показанных на Фиг.4, 5 и 6 для YUV 4:4:4, YUV 4:2:2 и YUV 4:2:0 соответственно.
В проиллюстрированной процедуре прогнозирования DCAC верхних частот единственной информацией, которую необходимо поддерживать доступной из макроблока для использования при прогнозировании соседних макроблоков, является один DC-коэффициент и 6 DCAC-коэффициентов на канал макроблока (меньше для каналов яркости изображений формата цвета YUV 4:2:0 и YUV 4:2:2). Это самое большее 21 коэффициент (в случае YUV 4:4:4), которые должны быть кэшированы, на макроблок. Дополнительно, коэффициенты, используемые для прогнозирования слева, могут не учитываться после того, как следующий макроблок кодирован/декодирован. Для YUV 4:4:4, следовательно, необходимо кэшировать только 12 коэффициентов на макроблок для использования в следующей строке макроблоков.
Когда фрагментация используется посредством кодера/декодера, каждый фрагмент считается отдельным изображением для целей кодирования с прогнозированием коэффициентов преобразования. Это предоставляет независимое декодирование фрагментов изображения.
3. Вычислительное окружение
Вышеописанный кодер 200 (Фиг.2) и декодер 300 (Фиг.3) и методики кодирования с прогнозированием коэффициентов преобразования могут быть выполнены на любом из многообразия устройств, в которых выполняется обработка цифровых мультимедийных сигналов, в том числе, среди прочих примеров, на компьютерах; оборудовании для записи, передачи и приема изображений и видео; портативных видеопроигрывателях; средствах проведения видеоконференций, и т. д. Методики кодирования цифровых мультимедийных данных могут быть реализованы в схемах аппаратных средств, а также в программном обеспечении обработки цифровых мультимедийных данных, исполняемом с помощью компьютера или другого вычислительного окружения, такого как показанное на Фиг.15.
Фиг.15 иллюстрирует обобщенный пример подходящего вычислительного окружения (1300), в котором описанные варианты осуществления могут быть реализованы. Вычислительное окружение 1300 не предназначено для того, чтобы накладывать какое-либо ограничение на область использования или функциональность изобретения, поскольку настоящее изобретение может быть реализовано в различных вычислительных окружениях общего или специального назначения.
Ссылаясь на Фиг.15, вычислительное окружение (1500) включает в себя, по меньшей мере, один обрабатывающий блок (1510) и память (1520). На Фиг.15 эта самая базовая конфигурация (1530) показана пунктирной линией. Обрабатывающий блок (1510) приводит в исполнение машиноисполняемые команды и может быть реальным или виртуальным процессором. В многопроцессорной системе несколько обрабатывающих блоков приводят в исполнение машиноисполняемые команды, чтобы повысить вычислительную мощность. Памятью (1520) может быть энергозависимая память (например, регистры, кэш, ОЗУ (оперативное запоминающее устройство, RAM), энергонезависимая память (например, ПЗУ (постоянное запоминающее устройство, ROM), ЭСППЗУ (электрически стираемое и программируемое ПЗУ, EEPROM), флеш-память и т. д.) или некоторое сочетание этих двух. Память (1520) хранит программное обеспечение (1580), реализующее описанные методики кодирования с прогнозированием коэффициентов преобразования.
Вычислительное окружение может обладать дополнительными признаками. Например, вычислительное окружение (1500) включает в себя запоминающее устройство (1540), одно или более устройств (1550) ввода, одно или более устройств (1560) вывода и одно или более соединений (1570) связи. Механизм межкомпонентного соединения (не показан), такой как шина, контроллер или сеть, соединяет между собой компоненты вычислительного окружения (1500). В типичном варианте программное обеспечение операционной системы (не показано) предоставляет операционное окружение для другого программного обеспечения, приводимого в исполнение в вычислительном окружении (1500), и координирует действия компонентов вычислительного окружения (1500).
Запоминающее устройство (1540) может быть съемным или несъемным и включает в себя магнитные диски, магнитные ленты или кассеты, CD-ROM, CD-RW, DVD или любой другой носитель, который может быть использован, чтобы хранить информацию, и к которому можно осуществлять доступ в пределах вычислительного окружения (1500). Запоминающее устройство (1540) хранит команды для программного обеспечения (1580), реализующего описанные кодер/декодер и методики кодирования с прогнозированием коэффициентов преобразования.
Устройством(ами) (1550) ввода может быть устройство сенсорного ввода, такое как клавиатура, мышь, перо или шаровой манипулятор, устройство голосового ввода, устройство сканирования или другое устройство, которое обеспечивает ввод в вычислительное окружение (1500). Для звука устройством(ами) (1550) ввода может быть звуковая плата или аналогичное устройство, которое принимает звуковой входной сигнал в аналоговой или цифровой форме, либо считыватель CD-ROM, который поставляет звуковые дискретные выборки в вычислительное окружение. Устройством(ами) (1560) вывода может быть дисплей, принтер, динамик, устройство для записи CD или другое устройство, которое обеспечивает вывод из вычислительного окружения (1500).
Подключения (1570) связи обеспечивают обмен данными по среде обмена данными с другим вычислительным объектом. Среда передачи данных транспортирует информацию, такую как машиноисполняемые команды, сжатую аудио- и видеоинформацию или другие данные, в модулированном сигнале данных. Модулированный сигнал данных - это сигнал, который имеет одну или более характеристик, установленных или измененных таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среда обмена данными включает в себя проводные или беспроводные методики, реализованные с помощью электрического, оптического, радиочастотного, инфракрасного, акустического или другого оборудования.
Методики обработки цифрового мультимедиа в материалах настоящей заявки могут быть описаны в общем контексте машиночитаемых носителей. Машиночитаемые носители - это любые доступные носители, к которым можно осуществлять доступ в вычислительном окружении. В качестве примера, а не ограничения, в вычислительном окружении (1500) машиночитаемые носители включают в себя память (1520), запоминающее устройство (1540), среду обмена данными и комбинации любых вышеозначенных элементов.
Методики обработки цифрового мультимедиа в материалах настоящей заявки могут быть описаны в общем контексте машиноисполняемых команд, таких как включенные в программные модули, являющиеся исполняемыми в вычислительном окружении на целевом реальном или виртуальном процессоре. В общем программные модули включают в себя процедуры, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Функциональность программных модулей может быть комбинирована или разделена между программными модулями, как требуется в различных вариантах осуществления. Машиноисполняемые инструкции для программных модулей могут быть приводимы в исполнение в локальном или распределенном вычислительном окружении.
Для целей представления подробное описание использует такие термины, как "определить", "сформировать", "настроить" и "применить", чтобы описывать операции компьютера в вычислительном окружении. Эти термины являются высокоуровневыми абстракциями для операций, выполняемых компьютером, и не должны путаться с действиями, выполняемыми человеком. Фактические операции компьютера, соответствующие этим терминам, различаются в зависимости от реализации.
В свете множества возможных вариаций описываемого в данном документе предмета изобретения, мы заявляем в качестве изобретения все подобные варианты осуществления, которые могут подпадать под область применения нижеследующей формулы изобретения и ее эквивалентов.