МАСШТАБИРУЕМОЕ КОДИРОВАНИЕ И ДЕКОДИРОВАНИЕ ИЗОБРАЖЕНИЙ
SCALABLE IMAGE CODING AND DECODING

Область техники, к которой относится изобретение
Изобретение относится к способу и устройству для кодирования изображений в масштабируемый битовый поток. Изобретение также относится к соответствующему способу и устройству для декодирования такого масштабируемого битового потока, сигнала изображения, закодированного в виде такого (возможно усеченного) масштабируемого битового потока, и к носителю информации, содержащему записанный на нем такой закодированный сигнал изображения. Изобретение, в частности, полезно для кодирования видеоизображений сигнала телевидения высокой четкости (HDTV).
Описание предшествующего уровня техники
Масштабируемое видеокодирование предусматривается для беспроводной передачи сигналов телевидения высокой четкости (WirelessHD), в частности, в целях невидимого подсоединения вмонтированного в стену HDTV монитора с плоским экраном к внешнему источнику HDTV сигнала. Термин «масштабируемый» означает то, что битовый поток, производимый кодером, может быть усеченным.
Способ предшествующего уровня техники для получения масштабируемого битового потока раскрывается в патенте США номер US 6462681. Предшествующий уровень техники содержит разделение каждого изображения на блоки изображения, кодирование их, с преобразованием каждого из блоков изображения, в соответствующие блочные битовые потоки, и, посредством многократного сканирования блочных потоков, формирование масштабируемого битового потока, вложение, при каждом сканировании, части данных в блочные битовые потоки.
В экспериментальных оценках, в контексте WirelessHD, изобретатели обнаружили, что требовалось улучшение характеристик сжатия для определенного компьютерного графического контента. Для WirelessHD должны поддерживаться как контент естественных изображений, так и графический контент. Способ предшествующего уровня техники разработан для контента естественных изображений и не оптимизирован специальным образом для графического контента.
Задача и сущность изобретения
Задачей изобретения является дополнительное улучшение способа предшествующего уровня техники.
С этой целью, способ кодирования, в соответствии с изобретением, содержит этап кодирования каждого из блоков изображения в соответствии с одним из множества различных режимов кодирования, для того, чтобы получать соответствующие блочные битовые потоки, содержащие один или больше типов данных, представляющих упомянутый режим кодирования. В процессе формирования масштабируемого битового потока, посредством многократного сканирования блочных потоков, каждое сканирование содержит этап выбора, по меньшей мере, одного из упомянутых типов данных, и этап вложения в масштабируемый битовый поток флагов для того, чтобы указывать выбранные типы данных.
Изобретение предоставляет масштабируемый формат битового потока, который позволяет очень гибко комбинировать различные блочные битовые потоки, что создает возможность для оптимизированного битового распределения. Множественные режимы кодирования обладают различной значимостью/приоритетами по отношению к качеству отображения декодированных данных изображения. Изобретение позволяет сделать то, что масштабируемый битовый видеопоток может организовываться таким образом, что в первую очередь достигаются самые большие улучшения качества, за которыми затем следуют последовательно все более тонкие усовершенствования качества, по мере дальнейшего приема битового потока. Действуя таким образом, достигается оптимальный компромисс между скоростью передачи и искажением. Поскольку режимы обладают различной значимостью по отношению к объективному/субъективному качеству, формат битового потока создает возможность для кодера очень гибко выбирать, какие биты отправлять в первую очередь.
По аналогии с известными способами видеокодирования, видеоизображения предпочтительно разделяются на фрагменты, и каждый фрагмент разделяется на блоки 8×8 пикселей. Блоки 8×8 пикселей кодируются внутрикадровым образом, что означает, что не используется никакая информация из других кадров.
Каждый из блоков кодируется в соответствии с одним из трех режимов кодирования:
- При естественном режиме блок рассматривается, как представляющий часть естественного изображения. В этом случае, он преобразуется посредством DCT и конвертируется в масштабируемый блочный битовый поток. Предпочтительно, используется масштабируемое кодирование битовых плоскостей, как это раскрывается, например, в заявке на патент WO 2005/112467.
- При синтетическом режиме, или масштабируемом графическом режиме, обнаруживается, что блок содержит графический контент, который может более эффективно кодироваться в виде специализированного графического масштабируемого блочного битового потока.
- При режиме пропуска, блок представляется посредством флага в 1 бит, указывающего, что он, как это было обнаружено, является идентичным предыдущему блоку.
Формат битового потока, в соответствии с настоящим изобретением, состоит из большого количества сканирований/итераций через масштабируемый битовый поток индивидуальных блоков. При каждом сканировании кодер принимает решение, вкладывает ли он в битовый поток биты для естественных/DCT блоков, или для синтетических/графических блоков, или как для того, так и для другого. Для блоков с DCT, кодер может дополнительно сделать выбор между битами DC коэффициентов и битами AC коэффициентов. Например, кодер может сделать выбор отправить в первую очередь несколько сканирований DC битов с DCT, затем отправить несколько сканирований графических битов, и затем отправить некоторые AC биты с DCT. Сканирования могут представлять собой смесь битов различных режимов или последовательные сканирования битов при одном и том же режиме. Решения, которые принимает кодер, сигнализируются в приемник в виде флагов, которые предшествуют каждой блочной части (например, закодированной битовой плоскости) и/или множеству блоков (например, фрагменту).
В варианте осуществления изобретения формат битового потока позволяет для каждого сканирования изменять порядок сканирования блоков. Например, для блоков с DCT или графических блоков может использоваться различный порядок сканирования. Как правило, для естественных изображений предпочтительно в первую очередь сканировать/распределять биты для блоков в центре изображения.
В дополнительном варианте осуществления формат позволяет указывать, для каждого из блоков, передаются ли биты или нет. Это позволяет очень подробно распределять биты (обеспечивая, например, возможность для придания особого качества интересующей области).
Дополнительно кодер имеет возможность выбора, для каждого сканирования, использовать ли или нет арифметическое кодирование, с целью более эффективного сжатия определенных данных DCT-AC коэффициентов.
Способ может дополнительно содержать этап разделения каждого изображения на фрагменты изображения и вкладывать в каждый фрагмент флаги, указывающие режимы кодирования, применяющиеся к упомянутому фрагменту. Указание, в начале битового потока, на режимы, которые осуществляются во время сжатия фрагмента изображения (8 строк изображения), оптимизирует кодирование с блочными типами режимов (то есть минимизирует число битов, требуемых для кодирования).
Краткое описание чертежей
На Фиг. 1 показывается структурная схема, иллюстрирующая способ кодирования видеосигнала в соответствии с изобретением.
На Фиг. 2 схематически показываются масштабируемые блочные битовые потоки, получаемые при режиме графического кодирования и при режиме кодирования с DCT.
На Фиг. 3 показывается пример, иллюстрирующий процесс сканирования в соответствии с изобретением.
На Фиг. 4 показывается структурная схема, иллюстрирующая способ декодирования видеосигнала битового потока в соответствии с изобретением.
На Фиг. 5 показывается блок-схема развлекательной системы, содержащей устройство кодера и устройство декодера, в соответствии с изобретением.
Описание предпочтительных вариантов осуществления
На Фиг. 1 показывается структурная схема, иллюстрирующая способ кодирования видеосигнала в соответствии с изобретением. На этапе 11, видеоизображение разделяется на фрагменты с высотой в 8 строк, и каждый фрагмент разделяется на блоки 8×8 пикселей.
На этапе 12, каждый из блоков текущего фрагмента кодируется посредством либо дискретного косинусного преобразования (DCT), либо посредством способа графического сжатия, в зависимости от того, обнаруживается ли, что блок содержит естественный контент или графический контент. Может также определяться режим пропуска, указывающий на то, что блок является идентичным предыдущему блоку. Выбираются алгоритмы кодирования для блоков, таким образом, чтобы они вырабатывали масштабируемые блочные битовые потоки. Такой масштабируемый битовый поток может быть усечен в любой позиции. Чем меньшим является усечение, тем меньшей является остаточная погрешность, когда блок восстанавливается.
На Фиг.2, под буквой А, схематически показывается масштабируемый блочный битовый поток, получаемый при режиме графического кодирования. При этом режиме графический кодер применяет алгоритм сжатия, по возможности без потерь, к каждой индивидуальной 8×8 битовой плоскости блока изображения. Блочный битовый поток, получаемый таким образом, содержит последовательность из восьми (битовая глубина пикселей) частей 21 графических данных с изменяющейся длиной, каждая из которых представляет битовую плоскость пиксельных значений, в порядке убывания значимости.
На Фиг.2, под буквой B, схематически показывается масштабируемый блочный битовый поток, получаемый при режиме естественного кодирования. При этом режиме блок 8×8 пикселей подвергается дискретному косинусному преобразованию (DCT), и затем конвертируется в масштабируемый блочный битовый поток, посредством индивидуального сжатия каждой битовой плоскости коэффициентов, как это раскрывается в международной заявке на патент WO 2005/112467, принадлежащей настоящему заявителю. Блочный битовый поток теперь содержит одиннадцать (битовая глубина коэффициентов) битовых плоскостей значений коэффициентов, в порядке убывания значимости. Как показывается на Фиг.2, каждая битовая плоскость содержит dc-бит 22 и часть 23 ac данных с изменяющейся длиной.
Возвращаясь теперь к Фиг.1, осуществляется программа, в которой формируется битовый видеопоток, представляющий текущий фрагмент. В первую очередь, на этапе 13, генерируется массив режимы_блоков() для того, чтобы идентифицировать, для каждого из блоков во фрагменте, какой режим кодирования блоков должен использоваться для кодирования каждого из блоков. Программа затем продолжается посредством многократного сканирования (этап 14) блочных битовых потоков, которые были сгенерированы на этапе 12. При каждом сканировании 14, процесс кодирования выбирает некоторую часть графических блочных битовых потоков и/или естественных блочных битовых потоков. По отношению к естественному блочному битовому потоку, процесс выбирает dc-бит и/или часть ас данных соответствующей битовой плоскости коэффициентов. Каждая выбираемая часть блочного битового потока представляет заданное усовершенствование качества изображения. Упомянутый выбор частей является таким, что, в процессе продолжения процесса сканирования, последовательно все более тонкие усовершенствования добавляются к битовому видеопотоку.
При каждом сканировании 14, перед текущими частями данных усовершенствования (этап 142) к битовому потоку добавляются флаги (этап 141), указывающие то, какие типы закодированных данных (графика, dc-бит, ac-данные) выбирались, и, таким образом, идентифицирующие соответствующие режимы кодирования. Таким образом, в приемник сигнализируется выбор, сделанный кодером. Процесс сканирования продолжается до тех пор, пока все блочные битовые потоки фрагмента не будут полностью обработаны (этапы 15, 16). Вышеупомянутый процесс затем осуществляется для следующего фрагмента (этап 17).
На Фиг.3 показывается пример, иллюстрирующий процесс сканирования, в соответствии с изобретением. На фигуре показываются четыре блочных битовых потока BS0,..., BS3 первых четырех блоков изображений (B0, …, B3) фрагмента. Было обнаружено, что первый и четвертый блоки представляют собой графические блоки. Соответствующие блочные битовые потоки BS0 и BS3 имеют восемь графических закодированных битовых плоскостей 21 в порядке убывания значимости, некоторые из которых показываются на Фиг. 3. Второй и третий блоки представляют собой естественные блоки. Соответствующие блочные битовые потоки BS1 и BS2 имеют одиннадцать dc-битов 22 и одиннадцать закодированных ac битовых плоскостей 23, некоторые из которых показываются на Фиг. 3.
Как определяется посредством жирных точек вдоль стрелки 31, первое сканирование через блочные потоки переносит самую важную битовую плоскость коэффициентов DCT естественных блоков (B1, B2), то есть, соответствующие биты DC коэффициента, а также AC коэффициенты. Второе сканирование 32 определяет следующий (то есть второй) бит DC коэффициента естественных блоков. Третье сканирование 33 предоставляет графические данные, а также данные AC коэффициентов естественных блоков, то есть, первые графические битовые плоскости графических блоков (B0, B3) и следующие (то есть вторые) битовые плоскости AC коэффициентов естественных блоков (B1, B2). При четвертом сканировании 34, переносятся вторые графические битовые плоскости, и т.д.
В следующей Таблице 1 показывается получающийся битовый видеопоток для упомянутого фрагмента. Флаги, указывающие, при каждом сканировании, типы данных, которые последуют далее, обозначаются как dc_данные_dct, ac_данные_dct и графические_данные. Правый столбец показывает на текущие данные битового потока, где "1" и "0" обозначают значения флагов, "b" представляет один бит данных, и "d" обозначает (возможно, изменяющееся) количество битов данных.
Таблица 1.
режимы_блоков()
d
dc_данные_dctac_данные_dctграфические_данные1-й dc бит для BS11-я ac битовая плоскость для BS11-й dc бит для BS21-я ac битовая плоскость для BS2конец_потока
110bdbd0
dc_данные_dctac_данные_dctграфические_данные2-й dc бит для BS12-й dc бит для BS2конец_потока
100bb0
dc_данные_dctac_данные_dctграфические_данные1-я битовая плоскость для BS02-я ac битовая плоскость для BS12-я ac битовая плоскость для BS21-я битовая плоскость для BS3конец_потока
011dddd0
dc_данные_dctac_данные_dctграфические_данные2-я битовая плоскость для BS02-я битовая плоскость для BS3конец_потока
001dd0
…конец_потока
1
На Фиг. 4 показывается структурная схема, иллюстрирующая способ декодирования (возможно, усеченного) видеосигнала битового потока и восстановление фрагмента изображения. Этап 41 представляет собой этап инициализации, на котором:
- Считываются и сохраняются режимы кодирования блоков. Например, по отношению к потоку битов, показанному в Таблице 1, приемник теперь знает, что блоки B0, B3 представляют собой графические блоки, а блоки B1, B2 представляют собой естественные блоки.
- Создаются соответствующие массивы памяти блоков.
- Для каждого из блоков инициализируется счетчик битовых плоскостей (или переменная “блок завершен”). Естественные блоки имеют отдельные счетчики битовых плоскостей для dc данных и ac данных.
На этапе 42, приемник идентифицирует, на основе флагов для типов данных и на основе знания режимов кодирования, к каким блокам применять части данных усовершенствования, при текущем сканировании. Например, к первому сканированию в битовом потоке Таблицы 1 приписан флаг, показывающий, что оно имеет dc данные и ac данные. Поскольку эти типы данных применяются к естественным блокам, приемник знает, что первое сканирование будет содержать dc и ac данные для блоков B1 и B2.
На этапе 43, берется часть данных из битового потока. Упомянутые данные хранятся в текущей битовой плоскости подходящего блока, и ассоциированный счетчик битовой плоскости последовательно приращивается. Эта процедура повторяется (этапы 44, 45) для всех блоков, к которым обращались при текущем сканировании. В настоящем примере первая (наиболее важная) битовая плоскость коэффициентов блоков B1 и B2 с DCT, таким образом, восстанавливается при первом сканировании.
На этапе 46 проверяется флаг конец_потока, который завершает каждое сканирование (см. Таблицу 1). При условии, что его значение составляет “0”, далее последует и будет обрабатываться другое сканирование (этап 47). Значение флага конец_потока, равное "1", является признаком конца битового видеопотока для текущего фрагмента. Затем все блоки фрагмента могут декодироваться и отображаться (этап 48).
Изобретение также иллюстрируется в виде следующего описания синтаксиса. Элементы синтаксиса указываются полужирным шрифтом и количеством битов в правом столбце. Соответствующие флаги составляют один бит. Объекты, имеющие длину X, обозначают кодируемые данные, представляющие контент (битовая плоскость (битовые плоскости)), идентифицируемый посредством флагов, которые ему предшествуют. Это формальным образом описывает синтаксис сжатого потока видеоданных для фрагмента и, в то же время, также описывает процесс декодирования.
Таблица 2
фрагмент (число блоков, битовая глубина, формат_цвета) {
<b>версия_кодека</b>/* фиксировано для 0001 */
4
<b>использован_естественный_режим</b>
1
<b>использован_графический_режим</b>
1
<b>использован_режим_пропуска</b>
1
<b>порядок_блоков_для_каждого_сканирования_битов</b>
1
если (порядок_блоков_для_каждого_сканирования_битов==0) {
<b>порядок_пространственного_сканирования</b>
1
<b>порядок_сканирования_для_сжатия</b>
1
}
порядок_сканирования()
режимы_блоков()
x
если (использован_естественный_режим ==1) {
инициирование_естественного_режима()
}
если (использован_графический_режим ==1) {
инициирование_графического_режима()
}
для (i=0; i<числа блоков; i++) {
блок_завершен_dct_dc[i]=0
блок_завершен_dct_ac[i]=0
блок_завершен_графич[i]=0
}
выполнять {
сканирование_битов_блока()
x
конец_потока
1
} до тех пор, пока (конец_потока != 1)
если (использован_естественный_режим ==1) {
размещение записи_естественного_режима()
}
если (использован_графический_режим ==1) {
размещение записи_графического_режима()
}
если (использован_режим_пропуска ==1) {
размещение записи_режима_пропуска()
}
}
Таблица 3
сканирование_битов_блока() {
если (использован_естественный_режим) {
<b>dc_данные_dct</b>
1
<b>ac_данные_dct</b>
1
} иначе {
dc_данные_dct=0
ac_данные_dct=0
}
если (dc_данные_dct==1) {
<b>арифмкод</b>
1
} иначе {
арифмкод=0
}
если (использован_графический_режим) {
<b>графические_данные</b>
1
} иначе {
графические_данные=0
}
<b>данные_каждого_блока</b>
1
если (порядок_блоков_для_каждого_сканирования_битов==1) {
<b>порядок_пространственного_сканирования</b>
1
<b>порядок_сканирования_для_сжатия</b>
1
порядок_сканирования()
}
если (арифмкод==1) {
число байтов_арифмкода
9
для (i=0; i<числа байтов_арифмкода; i++) {
буфер_арифмкода[i]
8
}
}
для (i=0; i<числа блоков; i++) {
если (режим_блока[сканирование_блока[i]]==0) {/*DCT блок*/
если (((dc_данные_dct==1) &&(блок_завершен_dct_dc[сканирование_блока[i]]==0)) | |((ac_данные_dct==1) &&(блок_завершен_dct_ac[сканирование_блока[i]]==0))) {
если (данные_каждого_блока==0) {
<b>данные_этого_блока</b>
1
} иначе {
данные_этого_блока=1
}
если (данные_этого_блока==1) {
если ((dc_данные_dct==1) &&(блок_завершен_dct_dc[сканирование_блока[i]]==0)) {
сканирование_dc_данных_dct()
x
}
если ((ac_данные_dct==1) &&(блок_завершен_dct_ac[сканирование_блока[i]]==0)) {
сканирование_ac_данных_dct()
x
}
}
}
}
если (режим_блока[сканирование_блока[i]]==1) { /* графический блок */
если ((графические_данные==1) &&(блок_завершен_графич[сканирование_блока[i]]==0)) {
если (данные_каждого_блока==0) {
<b>данные_этого_блока</b>
1
} иначе {
данные_этого_блока=1
}
если (данные_этого_блока==1) {
сканирование_графических_данных()
x
}
}
}
}
}
Таблица 2 определяет синтаксис на уровне фрагментов. Таблица упоминает, среди прочего, присутствие в битовом потоке массива режимы_блоков(), описанного выше в связи с этапом 13 на Фиг. 1. Многократные сканирования, описанные выше, в связи с этапом 14 на Фиг. 1, обозначаются как сканирование_битов_блока().
Таблица 3 более детально определяет синтаксис сканирования_битов_блока(). Флаги dc_данные_dct, ac_данные_dct, и графические_данные в этой таблице соответствуют флагам, описанным ранее, в связи с этапом 14 на Фиг. 1. Текущие данные изображения в таблице обозначаются как сканирование_dc_данных_dct(),сканирование_ac_данных_dct() и сканирование_графических_данных().
Вышеупомянутый синтаксис также определяет множество дополнительных функциональных возможностей дополнительных вариантов осуществления изобретения, например:
- Флаги использован_естественный_режим, использован_графический_режим и использован_режим_пропуска в Таблице 2 обозначают, какие режимы кодирования применяются к части данных, которая последует далее. Использование такого флага на уровне фрагментов улучшает эффективность отправки флагов на уровне сканирования. Например, передача флага графические_данные при каждом сканировании может быть опущена, если во фрагменте вообще не использовался режим графического кодирования.
- Подпрограмма порядок_сканирования() в Таблице 2 определяет порядок, в котором сканируются блоки фрагмента, посредством присвоения к пространственному порядковому индексу i некоторого порядкового индекса сканирования сканирование_блока[i]. Это позволяет кодеру в первую очередь сканировать блоки в центре изображения.
- Флаг порядок_блоков_для_каждого_сканирования_битов (Таблица 2) обозначает, является ли порядок блоков при сканировании одним и тем же для всех сканирований.
- Флаг данные_каждого_блока (Таблица 3) обозначает, содержит ли соответствующее сканирование данные для каждого блока.
- Флаг арифмкод в Таблице 3 указывает, для каждого сканирования, используется ли более эффективное арифметическое кодирование для того, чтобы сжимать битовую плоскость AC коэффициентов.
На Фиг. 5 показывается блок-схема развлекательной системы, содержащей устройство кодера и устройство декодера, в соответствии с изобретением. Развлекательная система содержит проигрыватель 52 дисков Blu-ray и плоский ТВ монитор 54. Проигрыватель 52 проигрывает диск 51 Blu-ray и отправляет к монитору HD сигнал с помощью беспроводного HD канала 53. Проигрыватель 52 содержит модуль 521 воспроизведения, видеокодер 522, и блок 523 беспроводной передачи. Монитор содержит блок 541 беспроводного приема, видеодекодер 542, и дисплей 543. Видеокодер 522 кодирует каждое видеоизображение в масштабируемый битовый поток в соответствии со способом кодирования, описанным выше в настоящем документе со ссылкой на Фиг. 1. Видеодекодер 542 декодирует принимаемый битовый поток в соответствии со способом декодирования, описанным выше в настоящем документе со ссылкой на Фиг. 4.
Суммируя сказанное, представляется гибкий и эффективный формат битового потока для многорежимного масштабируемого кодека для изображений/видео. Термин «масштабируемый» означает то, что битовый поток содержит последовательно все более тонкие усовершенствования качества, и что битовый поток может быть усечен. Видеоизображения разделяются на фрагменты, и каждый фрагмент разделяется на блоки 8x8 пикселей. Для каждого из блоков выбирается оптимальный способ кодирования. В зависимости от того, обнаружилось ли, что блок содержит либо контент с естественными изображениями, либо контент с синтетическими изображениями, применяется кодирование с преобразованием (DCT) или графическое кодирование. Поскольку различные режимы кодирования обладают различными свойствами по отношению к качеству отображения, формат битового потока должен создавать возможность для кодера очень гибко выбирать, какие биты отправлять в первую очередь.
Формат битового потока, в соответствии с изобретением, состоит из множества сканирований (31-34) через кодируемые данные последовательности индивидуальных блоков, например, фрагмента. При каждом сканировании кодер принимает решение, будет ли он вкладывать данные для естественных блоков (BS1, BS2), для синтетических блоков (BS0, BS3), или как одно, так и другое. Для блоков с DCT кодер может дополнительно делать выбор между битами (22) DC коэффициентов и битами (23) AC коэффициентов. Например, кодер может сделать выбор в первую очередь отправить несколько сканирований DC битов DCT, затем отправить несколько сканирований графических битов, и затем отправить некоторые AC биты DCT. Решения, которые принимает кодер, сигнализируются в декодер в виде флагов, которые предшествуют каждой части блока (например, закодированной битовой плоскости) и/или множеству блоков (например, фрагменту).
Изобретение может применяться, в основном, в областях сжатия изображений и видео, в особенности для следующего поколения беспроводного HD.