квантование "скорость-искажение" для контекстно-зависимого адаптивного кодирования с переменной длиной кодового слова (cavlc)
Классы МПК: | H04N7/30 с использованием кодирования с преобразованием H04M3/42 системы, обеспечивающие абонентам особые услуги или удобства |
Автор(ы): | КАРЧЕВИЧ Марта (US), ЧЭНЬ Пэйсун (US), Е Янь (US) |
Патентообладатель(и): | КВЭЛКОММ ИНКОРПОРЕЙТЕД (US) |
Приоритеты: |
подача заявки:
2009-04-10 публикация патента:
27.04.2013 |
Изобретение относится к цифровому видеокодированию, а более конкретно к способам квантования для видеокодирования. Техническим результатом является создание способа квантования коэффициентов видеоблоков, посредством которого можно достичь требуемого баланса скорости и искажения. Указанный технический результат достигается тем, что посредством описанных способов можно анализировать множество уровней квантования, связанных с каждым отдельным коэффициентом, для выбора уровня квантования для отдельных коэффициентов, который в результате приводит к наименьшей величине затрат на кодирование. Так как при контекстнозависимом адаптивном кодировании с переменной длиной кодового слова (CAVLC) каждый коэффициент не кодируется независимо, то посредством упомянутых способов можно рассчитывать величины затрат на кодирование для каждого из уровней квантования-кандидата, связанных с отдельными коэффициентами, на основе уровней квантования, выбранных для ранее квантованных коэффициентов, и оцененных (или предсказанных) уровней квантования для последующих коэффициентов вектора коэффициентов. Уровни квантования для каждого из коэффициентов выбираются на основе рассчитываемых величин затрат на кодирование для получения набора квантованных коэффициентов, который минимизирует модель скорость-искажение. 4 н. и 34 з.п. ф-лы, 8 ил.
Формула изобретения
1. Способ квантования, по меньшей мере, части коэффициентов видеоблока в процессе видеокодирования, причем способ содержит:
определение, для каждой части коэффициентов видеоблока, величин затрат на кодирование для множества уровней квантования-кандидатов, связанных с соответствующим коэффициентом, причем определение величин затрат на кодирование содержит расчет величины затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с соответствующим коэффициентом, на основе соответствующего уровня квантования-кандидата, ранее выбранных уровней квантования, связанных с ранее квантованными коэффициентами, и предсказанных уровней квантования, связанных с последующими неквантованными коэффициентами, и
выбор одного из множества уровней квантования-кандидатов для каждого из коэффициентов на основе величин затрат на кодирование для получения набора квантованных коэффициентов.
2. Способ по п.1, в котором выбор одного из множества уровней квантования-кандидатов содержит выбор, для соответствующих коэффициентов, одного из множества уровней квантования-кандидатов, соответствующего наименьшей величине затрат на кодирование.
3. Способ по п.1, в котором определение величин затрат на кодирование дополнительно содержит расчет множества величин затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с соответствующим коэффициентом, на основе путей выживания, связанных с предыдущим коэффициентом, соответствующего уровня квантования-кандидата, связанного с текущим коэффициентом, и предсказанных уровней квантования, связанных с последующими неквантованными коэффициентами, причем пути выживания представляют собой последовательности решений по квантованию для коэффициентов, предшествующих текущему коэффициенту в блоке,
причем выбор одного из множества уровней квантования-кандидатов содержит выбор пути выживания для каждого из уровней квантования-кандидатов, связанных с текущим коэффициентом, соответствующего наименьшей величине затрат на кодирование.
4. Способ по п.3, дополнительно содержащий выбор, для последнего коэффициента видеоблока, одного из путей выживания с наименьшей величиной затрат на кодирование из множества путей выживания уровней квантования-кандидатов, связанных с последним коэффициентом.
5. Способ по п.1, в котором определение величин затрат на кодирование содержит расчет величин затрат на кодирование с использованием функции затрат Лагранжа, связанной с моделью скорость-искажение.
6. Способ по п.1, дополнительно содержащий вычисление, по меньшей мере, одного из множества уровней квантования-кандидатов соответствующих отдельных коэффициентов на основе абсолютного значения соответствующего отдельного коэффициента видеоблока, параметра квантования и матрицы квантования.
7. Способ по п.6, в котором множество уровней квантования-кандидатов включает в себя нулевой уровень квантования.
8. Способ по п.7, дополнительно содержащий пропуск определения величин затрат на кодирование для множества уровней квантования-кандидатов, если текущий один из квантованных коэффициентов находится ближе к нулевому уровню квантования, чем к первому уровню квантования.
9. Способ по п.1, дополнительно содержащий: выполнение контекстно-зависимого адаптивного кодирования с переменной длиной кодового слова (CAVLC) над набором квантованных коэффициентов для осуществления энтропийного кодирования набора квантованных коэффициентов в битовый поток, и вывод закодированного битового потока.
10. Устройство для квантования, по меньшей мере, части коэффициентов видеоблока в процессе видеокодирования, причем устройство содержит:
модуль квантования, который:
определяет, для каждой части коэффициентов видеоблока, величины затрат на кодирование для множества уровней квантования-кандидатов, связанных с соответствующим коэффициентом, причем при определении величин затрат на кодирование, модуль квантования рассчитывает величину затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с соответствующим коэффициентом, на основе соответствующего уровня квантования-кандидата, ранее выбранных уровней квантования, связанных с ранее квантованными коэффициентами, и предсказанных уровней квантования, связанных с последующими неквантованными коэффициентами, и
выбирает один из множества уровней квантования-кандидатов для каждого из коэффициентов на основе величин затрат на кодирование для получения набора квантованных коэффициентов.
11. Устройство по п.10, в котором модуль квантования: выбирает, для соответствующих коэффициентов, один из множества уровней квантования-кандидатов, соответствующий наименьшей величине затрат на кодирование.
12. Устройство по п.10, в котором модуль квантования: рассчитывает множество величин затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с соответствующим коэффициентом, на основе путей выживания, связанных с предыдущим коэффициентом, соответствующего уровня квантования-кандидата, связанного с текущим коэффициентом, и предсказанных уровней квантования, связанных с последующими неквантованными коэффициентами, причем пути выживания представляют собой последовательности решений по квантованию для коэффициентов, предшествующих текущему коэффициенту в блоке, выбирает путь выживания для каждого из уровней квантования-кандидатов, связанных с текущим коэффициентом, соответствующий наименьшей величине затрат на кодирование.
13. Устройство по п.12, в котором модуль квантования выбирает, для последнего коэффициента видеоблока, один из путей выживания с наименьшей величиной затрат на кодирование из множества путей выживания уровней квантования-кандидатов, связанных с последним коэффициентом.
14. Устройство по п.10, в котором модуль квантования рассчитывает величины затрат на кодирование с использованием функции затрат Лагранжа, связанной с моделью скорость-искажение.
15. Устройство по п.10, в котором модуль квантования вычисляет, по меньшей мере, один из множества уровней квантования-кандидатов соответствующих отдельных коэффициентов на основе абсолютного значения соответствующего отдельного коэффициента видеоблока, параметра квантования и матрицы квантования.
16. Устройство по п.15, в котором множество уровней квантования-кандидатов включает в себя нулевой уровень квантования.
17. Устройство по п.16, в котором модуль квантования пропускает определение величин затрат на кодирование для множества уровней квантования-кандидатов, если текущий один из квантованных коэффициентов находится ближе к нулевому уровню квантования, чем к первому уровню квантования.
18. Устройство по п.10, дополнительно содержащее: энтропийный кодер, который выполняет контекстно-зависимое адаптивное кодирование с переменной длиной кодового слова (CAVLC) над набором квантованных коэффициентов для осуществления энтропийного кодирования набора квантованных коэффициентов в битовый поток, и передатчик для передачи закодированного битового потока.
19. Устройство по п.10, причем это устройство включено в состав устройства беспроводной связи.
20. Устройство по п.10, причем это устройство выполнено в виде интегральной схемы.
21. Машиночитаемый носитель информации, содержащий команды, которые при их исполнении побуждают устройство осуществлять квантование, по меньшей мере, части коэффициентов видеоблока в процессе видеокодирования, причем команды побуждают устройство:
определять для каждой части коэффициентов видеоблока величины затрат на кодирование для множества уровней квантования-кандидатов, связанных с соответствующим коэффициентом, причем при определении величин затрат на кодирование команды побуждают устройство рассчитывать величины затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с соответствующим коэффициентом, на основе соответствующего уровня квантования-кандидата, ранее выбранных уровней квантования, связанных с ранее квантованными коэффициентами, и предсказанных уровней квантования, связанных с последующими неквантованными коэффициентами, и
выбирать один из множества уровней квантования-кандидатов для каждого из коэффициентов на основе величин затрат на кодирование для получения набора квантованных коэффициентов.
22. Машиночитаемый носитель информации по п.21, в котором команды, которые побуждают устройство выбирать один из множества уровней квантования-кандидатов, содержат команды, которые побуждают устройство выбирать, для соответствующих коэффициентов, один из множества уровней квантования-кандидатов, соответствующий наименьшей величине затрат на кодирование.
23. Машиночитаемый носитель информации по п.21, в котором команды, которые побуждают устройство определять величины затрат на кодирование, содержат команды, которые побуждают устройство рассчитывать множество величин затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с соответствующим коэффициентом, на основе путей выживания, связанных с предыдущим коэффициентом, соответствующего уровня квантования-кандидата, связанного с текущим коэффициентом, и предсказанных уровней квантования, связанных с последующими неквантованными коэффициентами, причем пути выживания представляют собой последовательности решений по квантованию для коэффициентов, предшествующих текущему коэффициенту в блоке, в котором команды, которые побуждают устройство выбирать один из множества уровней квантования-кандидатов, содержат команды, которые побуждают устройство выбирать путь выживания для каждого из уровней квантования-кандидатов, связанных с текущим коэффициентом, соответствующий наименьшей величине затрат на кодирование.
24. Машиночитаемый носитель информации по п.23, дополнительно содержащий команды, которые побуждают устройство выбирать, для последнего коэффициента видеоблока, один из путей выживания с наименьшей величиной затрат на кодирование из множества путей выживания уровней квантования-кандидатов, связанных с последним коэффициентом.
25. Машиночитаемый носитель информации по п.21, в котором команды, которые побуждают устройство определять величины затрат на кодирование, содержат команды, которые побуждают устройство рассчитывать величины затрат на кодирование с использованием функции затрат Лагранжа, связанной с моделью скорость-искажение.
26. Машиночитаемый носитель информации по п.21, дополнительно содержащий команды, которые побуждают устройство вычислять, по меньшей мере, один из множества уровней квантования-кандидатов соответствующих отдельных коэффициентов на основе абсолютного значения соответствующего отдельного коэффициента видеоблока, параметра квантования и матрицы квантования.
27. Машиночитаемый носитель информации по п.26, в котором множество уровней квантования-кандидатов включает в себя нулевой уровень квантования.
28. Машиночитаемый носитель информации по п.27, дополнительно содержащий команды, которые побуждают устройство пропускать определение величин затрат на кодирование для множества уровней квантования-кандидатов, если текущий один из квантованных коэффициентов находится ближе к нулевому уровню квантования, чем к первому уровню квантования.
29. Машиночитаемый носитель информации по п.21, дополнительно содержащий команды, побуждающие устройство: выполнять контекстно-зависимое адаптивное кодирование с переменной длиной кодового слова (CAVLC) над набором квантованных коэффициентов для осуществления энтропийного кодирования набора квантованных коэффициентов в битовый поток, и выводить закодированный битовый поток.
30. Устройство для квантования, по меньшей мере, части коэффициентов видеоблока в процессе видеокодирования, причем это устройство содержит:
средство для определения, для каждой части коэффициентов видеоблока, величин затрат на кодирование для множества уровней квантования-кандидатов, связанных с соответствующим коэффициентом, причем средство для определения содержит средство для расчета величин затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с соответствующим коэффициентом, на основе соответствующего уровня квантования-кандидата, ранее выбранных уровней квантования, связанных с ранее квантованными коэффициентами, и предсказанных уровней квантования, связанных с последующими неквантованными коэффициентами, и
средство для выбора одного из множества уровней квантования-кандидатов для каждого из коэффициентов на основе величин затрат на кодирование для получения набора квантованных коэффициентов.
31. Устройство по п.30, в котором средство для выбора выбирает, для соответствующих коэффициентов, один из множества уровней квантования-кандидатов, соответствующий наименьшей величине затрат на кодирование.
32. Устройство по п.30, в котором средство для определения рассчитывает множество величин затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с соответствующим коэффициентом, на основе путей выживания, связанных с предыдущим коэффициентом, соответствующего уровня квантования-кандидата, связанного с текущим коэффициентом, и предсказанных уровней квантования, связанных с последующими неквантованными коэффициентами, причем пути выживания представляют последовательности решений по квантованию для коэффициентов, предшествующих текущему коэффициенту в блоке, в котором средство для выбора выбирает путь выживания для каждого из уровней квантования-кандидатов, связанных с текущим коэффициентом, соответствующий наименьшей величине затрат на кодирование.
33. Устройство по п.32, в котором средство для выбора выбирает, для последнего коэффициента видеоблока, один из путей выживания с наименьшей величиной затрат на кодирование из множества путей выживания уровней квантования-кандидатов, связанных с последним коэффициентом.
34. Устройство по п.30, в котором средство для определения рассчитывает величины затрат на кодирование с использованием функции затрат Лагранжа, связанной с моделью скорость-искажение.
35. Устройство по п.30, дополнительно содержащее средство для вычисления, по меньшей мере, одного из множества уровней квантования-кандидатов соответствующих отдельных коэффициентов на основе абсолютного значения соответствующего отдельного коэффициента видеоблока, параметра квантования и матрицы квантования.
36. Устройство по п.35, в котором множество уровней квантования-кандидатов включает в себя нулевой уровень квантования.
37. Устройство по п.36, дополнительно содержащее средство для пропуска определения величин затрат на кодирование для множества уровней квантования-кандидатов, если текущий один из квантованных коэффициентов находится ближе к нулевому уровню квантования, чем к первому уровню квантования.
38. Устройство по п.30, дополнительно содержащее: средство для выполнения контекстно-зависимого адаптивного кодирования с переменной длиной кодового слова (CAVLC) над набором квантованных коэффициентов для осуществления энтропийного кодирования набора квантованных коэффициентов в битовый поток, и средство для вывода кодированного битового потока.
Описание изобретения к патенту
Родственные заявки
По настоящей заявке испрашивается приоритет по дате подачи предварительной заявки США № 61/044232, поданной 11 апреля 2008 г., содержимое которой полностью включено в настоящее описание посредством ссылки.
Область техники, к которой относится изобретение
Это раскрытие объекта изобретения относится к цифровому видеокодированию, а более конкретно к способам квантования для видеокодирования.
Уровень техники
Функциональные возможности цифрового видео могут быть включены в широкий диапазон устройств, включающих в себя цифровое телевидение, системы прямого цифрового широковещания, широковещательные беспроводные системы, персональные цифровые секретари (PDA), портативные или настольные компьютеры, цифровые фотоаппараты, цифровые записывающие устройства, видеоигровые приставки, видеоигровые консоли, сотовые или спутниковые радиотелефоны и т.п. В устройствах цифрового видео реализованы способы сжатия видео, например MPEG-2, MPEG-4 или ITU-T H.264/MPEG-4, Часть 10, Усовершенствованное видеокодирование (AVC), для передачи и приема информации цифрового видео более эффективно. В способах сжатия видео выполняется пространственное предсказание и временное предсказание для уменьшения или удаления избыточности, свойственной видеопоследовательностям.
Интра-кодирование (внутриблочное кодирование) основано на пространственном предсказании для уменьшения или удаления пространственной избыточности между видеоблоками внутри данной кодируемой единицы, которая может содержать видеокадр, слайс видеокадра, группу изображений или другую определенную единицу видеоблоков. В отличие от него, интер-кодирование (межблочное кодирование) основано на временном предсказании для уменьшения или удаления временной избыточности между видеоблоками последовательных кодируемых единиц видеопоследовательности. Для интра-кодирования видеокодер выполняет пространственное предсказание для сжатия данных на основе других данных внутри идентичной кодируемой единицы. Для интер-кодирования видеокодер выполняет оценку движения и компенсацию движения для отслеживания движения соответствующих видеоблоков двух или большего количества смежных кодируемых единиц.
Кодированный видеоблок может быть представлен информацией предсказания, которая может быть использована для создания или идентификации прогнозирующего блока и остаточного блока данных, указывающего на отличия между кодированным блоком и прогнозирующим блоком. В случае интер-кодирования используется один или несколько векторов движения для идентификации прогнозирующего блока данных, в то время как в случае интра-кодирования может использоваться режим предсказания для формирования прогнозирующего блока. Как в интра-кодировании, так и в интер-кодировании могут быть определены несколько разных видов предсказания, в которых могут быть определены разные размеры блока и/или способы предсказания, используемые в кодировании. Также могут быть включены дополнительные типы синтаксических элементов как часть кодированных видеоданных для управления способами кодирования или параметрами, используемыми в процессе кодирования, или для определения этих способов кодирования или параметров.
После блочного кодирования с предсказанием видеокодер может применять процессы преобразования, квантования и энтропийного (статистического) кодирования для дополнительного уменьшения скорости передачи битов, связанной с передачей информации остаточного блока. Способы преобразования могут содержать дискретное косинусное преобразование или концептуально аналогичные процессы. В качестве альтернативы могут использоваться вейвлет-преобразование, целочисленное преобразование или другие типы преобразований. В процессе дискретного косинусного преобразования (DCT), в качестве примера, процесс преобразования преобразует набор значений пикселя в коэффициенты преобразования, которые могут представлять энергию значений пикселя в частотной области. К коэффициентам преобразования применяется квантование, которое обычно включает в себя процесс, который ограничивает количество битов, связанных с любым данным коэффициентом преобразования. Энтропийное кодирование содержит один или несколько процессов, которые в совокупности сжимают последовательность квантованных коэффициентов преобразования.
Контекстнозависимое адаптивное кодирование с переменной длиной кодового слова (CAVLC) является одним типом способа энтропийного кодирования, которое в настоящее время поддерживается в некоторых стандартах кодирования, например усовершенствованное видеокодирование (AVC) Экспертной группы по вопросам движущегося изображения (MPEG)-4, Часть 10/H.264 сектора стандартизации Международного союза электросвязи (ITU-T) (далее в этом документе "стандарт AVC MPEG-4, Часть 10/H.264"). В соответствии с CAVLC, как определено в стандарте AVC MPEG-4, Часть 10/H.264, кодер кодирует множество синтаксических элементов, которые представляют вектор коэффициентов. Синтаксические элементы могут включать в себя общее количество коэффициентов в векторе коэффициентов, несколько замыкающих коэффициентов в векторе коэффициентов, знаки каждого из замыкающих коэффициентов, амплитуды (или уровни) ненулевых коэффициентов, за исключением замыкающих коэффициентов, сумму всех непрерывных последовательностей (т.е. общее количество непрерывных серий перед последним ненулевым коэффициентом) и длину непрерывной серии из нулей перед каждым ненулевым коэффициентом. CAVLC является адаптивным в том смысле, что кодер адаптивно выбирает кодовые таблицы VLC для использования в кодировании синтаксических элементов на основе конкретных характеристик вектора коэффициентов.
Раскрытие изобретения
В целом, раскрытие объекта изобретения описывает способы квантование коэффициентов видеоблоков способом, посредством которого можно достичь требуемого баланса скорости и искажения. Посредством описанных способов можно анализировать множество уровней квантования, связанных с каждым отдельным коэффициентом, для выбора уровня квантования для отдельных коэффициентов, который в результате приводит к наименьшей величине затрат на кодирование. Так как CAVLC не кодирует каждый коэффициент независимо, то упомянутыми способами можно рассчитывать величины затрат на кодирование для каждого из уровней квантования-кандидата, связанных с отдельными коэффициентами, на основе уровней квантования, выбранных для ранее квантованных коэффициентов, и оцененных (или предсказанных) уровней квантования для последующих коэффициентов вектора коэффициентов. Уровни квантования для каждого из коэффициентов выбираются на основе рассчитываемых величин затрат на кодирование для получения набора квантованных коэффициентов, которые минимизируют модель скорость-искажение.
В одном примере раскрытие объекта изобретения обеспечивает способ квантования, по меньшей мере, части коэффициентов видеоблока в процессе видеокодирования. Этот способ включает в себя определение, для каждой части коэффициентов видеоблока, величин затрат на кодирование для множества уровней квантования-кандидатов, связанных с соответствующим коэффициентом, и выбор одного из этого множества уровней квантования-кандидатов для каждого из коэффициентов на основе величин затрат на кодирование для получения набора квантованных коэффициентов.
В другом примере раскрытие объекта изобретения обеспечивает устройство для квантования, по меньшей мере, части коэффициентов видеоблока в процессе видеокодирования. Это устройство включает в себя модуль квантования, который определяет, для каждой части коэффициентов видеоблока, величины затрат на кодирование для множества уровней квантования-кандидатов, связанных с соответствующим коэффициентом, и выбирает один из множества уровней квантования-кандидатов для каждого из коэффициентов на основе величин затрат на кодирование для получения набора квантованных коэффициентов.
В другом примере раскрыто устройство для квантования, по меньшей мере, части коэффициентов видеоблока в процессе видеокодирования. Это устройство содержит средство для определения, для каждой части коэффициентов видеоблока, величин затрат на кодирование для множества уровней квантования-кандидатов, связанных с соответствующим коэффициентом, и средство для выбора одного из множества уровней квантования-кандидатов для каждого из коэффициентов на основе величин затрат на кодирование для получения набора квантованных коэффициентов.
Способы, описанные в этом раскрытии объекта изобретения, могут быть реализованы в аппаратных средствах, программных средствах, программно-аппаратных средствах или любой их комбинации. При реализации в программном обеспечении это программное обеспечение может исполняться в одном или нескольких процессорах, например в микропроцессоре, специализированной интегральной схеме (ASIC), программируемой пользователем вентильной матрице (FPGA) или цифровом сигнальном процессоре (DSP). Программное обеспечение, которое исполняет способы, может сначала быть сохранено на машиночитаемом носителе информации и загружаться и исполняться в процессоре.
Соответственно, раскрытие объекта изобретения также предполагает машиночитаемый носитель информации, содержащий команды, которые при их исполнении побуждают устройство осуществлять квантование, по меньшей мере, части коэффициентов видеоблока в процессе видеокодирования. Эти команды побуждают устройство определять, для каждой части коэффициентов видеоблока, величины затрат на кодирование для множества уровней квантования-кандидатов, связанных с соответствующим коэффициентом, и выбирать один из этого множества уровней квантования-кандидатов для каждого из коэффициентов на основе величин затрат на кодирование для получения набора квантованных коэффициентов.
В нижеследующем описании и прилагаемых чертежах подробно изложены один или несколько аспектов раскрытия объекта изобретения. Другие признаки, цели и преимущества способов, описанных в этом раскрытии объекта изобретения, будут очевидны из описания и чертежей и из формулы изобретения.
Краткое описание чертежей
Фиг.1 - иллюстративная блок-схема, на которой изображена система видеокодирования и декодирования, в которой может быть реализован один или несколько способов настоящего раскрытия объекта изобретения.
Фиг.2 - блок-схема, на которой изображен пример видеокодера в соответствии с раскрытием объекта изобретения.
Фиг.3 - структурная схема, на которой изображено зигзагообразное сканирование видеоблока четыре-на-четыре.
Фиг.4 - блок-схема, на которой изображена решетка (trellis) квантования в соответствии с раскрытием объекта изобретения.
Фиг.5-8 - блок-схемы последовательности операций, на которых изображены способы в соответствии с раскрытием объекта изобретения.
Осуществление изобретения
Фиг.1 является блок-схемой, на которой изображена иллюстративная система 10 видеокодирования и декодирования, в которой может быть реализован один или несколько способов этого раскрытия объекта изобретения. Как изображено на фиг.1, система 10 включает в себя устройство 12 источника, которое передает кодированное видео в приемное устройство 14 через канал 16 связи. Устройство 12 источника и приемное устройство 14 могут содержать любое из широкого диапазона проводных или беспроводных устройств. В некоторых случаях устройство 12 источника и приемное устройство 14 содержат устройства беспроводной связи, например беспроводные микротелефонные трубки, так называемые сотовые или спутниковые радиотелефоны или любые беспроводные устройства, которые могут передавать видеоинформацию по каналу 16 связи. Несмотря на то что все раскрытие объекта изобретения описано в контексте беспроводных прикладных систем или окружающих сред, способы этого раскрытия объекта изобретения не должны быть ограничены в связи с этим. Упомянутый способ может также быть использован в проводных приложениях или окружающих средах.
В примере по фиг.1 устройство 12 источника может включать в себя источник 20 видео, видеокодер 22, модулятор/демодулятор (модем) 23 и передатчик 24. Приемное устройство 14 может включать в себя приемник 26, модем 27, видеодекодер 28 и дисплей 30. В соответствии с этим раскрытием объекта изобретения видеокодер 22 устройства 12 источника может быть выполнен с возможностью применения способов квантования, описанных в этом раскрытии объекта изобретения. Следовательно, в устройстве 12 источника можно достичь требуемых уровней квантования и посредством этого улучшить процесс кодирования.
В общем, устройство 12 источника формирует кодированные видеоданные для передачи в приемное устройство 14. В некоторых случаях, однако, устройства 12, 14 могут функционировать, по существу, симметрично. Например, каждое из устройств 12, 14 может включать в себя компоненты видеокодирования и декодирования, а также компоненты передатчика и приемника. Следовательно, система 10 может поддерживать одностороннюю или двустороннюю видеопередачу между устройствами 12, 14, например, для потокового видео, воспроизведения видео, телевизионного вещания или видеотелефонии.
Источник 20 видео устройства 12 источника может включать в себя устройство видеозахвата, например видеокамеру, видеоархив, содержащий ранее захваченное видео, или внешний видеосигнал от провайдера видеосодержимого, например, поставляемый через спутник. В качестве дополнительного альтернативного варианта, источник 20 видео может формировать компьютерные графические данные как видеоисточник или комбинацию прямой видеосъемки, архивного видео и формируемого компьютером видео. В некоторых случаях, если источник 20 видео является видеокамерой, устройство 12 источника и приемное устройство 14 могут являться так называемыми камерофонами или видеотелефонами. В каждом случае захватываемое, предварительно захватываемое или формируемое компьютером видео может быть закодировано видеокодером 22. Информация кодированного видео может после этого модулироваться модемом 23 согласно такому стандарту передачи информации, например, как множественный доступ с кодовым разделением (CDMA), или другому стандарту передачи информации и передаваться в приемное устройство 14 через передатчик 24. Модем 23 может включать в себя различные смесители, фильтры, усилители или другие компоненты, предназначенные для модуляции сигнала. Передатчик 24 может включать в себя схемы, предназначенные для передачи данных, включающие в себя усилители, фильтры и одну или несколько антенн.
Приемник 26 приемного устройства 14 принимает информацию по каналу 16, и модем 27 демодулирует эту информацию. Видеодекодер 28 может декодировать данные кодированного видео для восстановления видеопоследовательности. Дисплей 30 выводит на экран декодированные видеоданные пользователю и может содержать любой из множества дисплеев, например дисплей с электронно-лучевой трубкой, жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на основе органического светодиода (OLED) или другой тип дисплея.
В примере по фиг.1 канал 16 связи может содержать любую беспроводную или проводную среду связи, например радиочастотный (RF) спектр, или одну или несколько физических линий передачи, или любую комбинацию проводных и беспроводных передающих сред. Канал 16 связи может являться частью пакетной сети, например локальной сети, широкомасштабной сети или глобальной сети, например Internet. Канал 16 связи обычно представляет любую подходящую среду связи или совокупность разных сред связи для передачи видеоданных из устройства 12 источника в приемное устройство 14.
Видеокодер 22 и видеодекодер 28 могут функционировать согласно стандарту сжатия видео, например стандарту AVC MPEG-4, Часть 10/H.264. Стандарт AVC MPEG-4, Часть 10/H.264 ITU-T, был сформулирован Экспертной группой ITU по вопросам кодирования изображения (VCEG) ITU-T вместе с Экспертной группой по вопросам движущегося изображения (MPEG) ISO/IEC как продукт коллективного партнерства, известного как Совместная экспертная группа по вопросам видео (JVT). В некоторых аспектах способы, описанные в этом раскрытии объекта изобретения, могут быть применены к устройствам, которые в целом соответствуют стандарту H.264.
Видеокодер 22 и видеодекодер 28, каждый, могут быть реализованы как один или несколько микропроцессоров, цифровых сигнальных процессоров (DSP), одна или несколько специализированных интегральных схем (ASIC), пользовательских программируемых вентильных матриц (FPGA), дискретная логика, программное обеспечение, аппаратное обеспечение, программно-аппаратные средства или любые их комбинации. Каждый из видеокодера 22 и видеодекодера 28 может быть включен в один или несколько кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодера/декодера (КОДЕК) в соответствующие мобильное устройство, абонентский аппарат, широковещательное устройство, сервер и т.п.
Видеопоследовательность, как правило, включает в себя серию видеокадров. Видеокодер 22 выполняет ряд операций над видеоблоками внутри отдельных видеокадров для кодирования видеоданных. Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться по размеру согласно заданному стандарту кодирования. Каждый видеокадр может включать в себя серию слайсов, которые могут быть независимо декодируемыми единицами видеокадра. Каждый слайс может включать в себя серию макроблоков, которые могут быть организованы в субблоки. В качестве примера, стандарт H.264 поддерживает интра-предсказание (предсказание без компенсации движения) в блоках различного размера, например 16×16, 8×8 или 4×4 для компонентов яркости и 8×8 для компонентов цветности, а также интер-предсказание (предсказание с компенсацией движения) в блоках различного размера, например 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для компонентов яркости, и соответствующих масштабированных размеров для компонентов цветности. Меньшие видеоблоки могут обеспечить лучшую разрешающую способность и могут использоваться для участков видеокадра, которые включают в себя высокие уровни детализации. В общем, макроблоки (MB) и различные субблоки могут рассматриваться как видеоблоки.
Видеоблоки могут содержать блоки данных элемента изображения (пиксела) или блоки коэффициентов преобразования, например, вследствие процесса преобразования, например дискретного косинусного преобразования (DCT) или другого процесса преобразования. Термин "коэффициенты", как используется в этом раскрытии объекта изобретения, в общем, относится к коэффициентам преобразования, но может в качестве альтернативы относиться к значениям или коэффициентам других типов, например к значениям пиксела или коэффициентам другого типа. Способы квантования этого раскрытия объекта изобретения, как правило, относятся к коэффициентам преобразования преобразованных видеоблоков, иногда называемых остаточными коэффициентами преобразования.
Для кодирования видеоблоков видеокодер 22 выполняет интра- или интер-предсказание для формирования блока прогноза. Видеокодер 22 вычитает блоки прогноза из исходных видеоблоков, которые должны быть закодированы, для формирования остаточных блоков. Соответственно, остаточные блоки указывают на разности между кодированными блоками и блоками прогноза. Видеокодер 22 может выполнять преобразование остаточных блоков для формирования блоков коэффициентов преобразования. После выполнения способов интра- или интер-кодирования с предсказанием и преобразования видеокодер 22 выполняет квантование. Более подробно квантование обсуждается ниже, но, в общем, относится к процессу, в котором коэффициенты квантуются для как можно большего уменьшения объема данных, используемых для представления этих коэффициентов. После квантования может выполняться энтропийное кодирование согласно некоторому способу энтропийного кодирования, например CAVLC. Более подробное описание каждого этапа процесса кодирования, выполняемого видеокодером 22, будет представлено ниже на фиг.2.
В этом раскрытии объекта изобретения обеспечиваются способы квантования коэффициентов видеоблоков, посредством которых можно достичь требуемого баланса скорости и искажения. Другими словами, посредством этих способов улучшается этап квантования процесса кодирования для достижения требуемого уровня качества при данном битовом ресурсе для скорости передачи данных. Согласно способам этого раскрытия объекта изобретения видеокодер 22 может, по меньшей мере, для части коэффициентов блоков анализировать множество уровней квантования для выбора уровня квантования для отдельных коэффициентов с наименьшей величиной затрат на кодирование.
В одном примере видеокодер 22 может рассчитывать величину затрат на кодирование, например, с использованием функции затрат Лагранжа, связанной с моделью скорость-искажение, для каждого из уровней квантования-кандидатов, связанных с отдельными коэффициентами. Так как CAVLC не кодирует каждый коэффициент независимо, то видеокодер 22 может рассчитывать величины затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с отдельными коэффициентами, на основе уровней квантования всех других коэффициентов вектора коэффициентов. Уровни квантования текущего и предыдущих коэффициентов известны, уровень квантования текущего коэффициента равен одному из уровней квантования-кандидатов, а уровни квантования предыдущих коэффициентов выбраны ранее. Уровни квантования коэффициентов, которые являются последующими по отношению к текущему коэффициенту, являются неизвестными и могут, следовательно, быть оценены, как подробно описано ниже. Видеокодер 22 выбирает уровень квантования-кандидат с наименьшей величиной затрат на кодирование для отдельного коэффициента, который в настоящее время анализируется. Видеокодер 22 выбирает уровни квантования так, как описано выше, для всех коэффициентов блока. Этот подход называется однопроходным подходом.
В качестве альтернативы, видеокодер 22 может рассчитывать несколько величин затрат на кодирование (или множество величин затрат на кодирование) для каждого из уровней квантования-кандидатов, связанных с отдельными коэффициентами. Это множество величин затрат на кодирование может быть рассчитано на основе путей выживания ранее выбранных уровней квантования, связанных с предыдущими коэффициентами, а также оценок будущих (последующих) уровней квантования для последующих коэффициентов. Как более подробно описано ниже согласно фиг.2 и фиг.4, "путь выживания" представляет собой последовательность решений по квантованию относительно предыдущих коэффициентов в блоке. Видеокодер 22 продолжает выбирать уровни квантования так, как описано выше, для всех коэффициентов блока до тех пор, пока не останется один путь выживания. Этот один путь выживания представляет собой последовательность решений по квантованию относительно всех коэффициентов в блоке.
Способы квантования этого раскрытия объекта изобретения могут обеспечивать возможность достижения видеокодером 22 требуемого уровня качества при данном битовом ресурсе для скорости передачи данных. В соответствии со способами этого раскрытия объекта изобретения в видеокодере 22 можно реализовать модель скорость-искажение по коэффициенту на базе коэффициента и достигать требуемого уровня квантования. В противоположность этому, в общепринятых способах квантования реализуют модель скорость-искажение по блоку на базе блока в отличие от коэффициента на базе коэффициента. Другими словами, в общепринятых способах квантования анализируют только один уровень квантования для каждого из коэффициентов в расчете величины затрат на кодирование для всего блока. Такие способы могут не являться такими эффектными, как способы этого раскрытия объекта изобретения, в выборе квантованных коэффициентов или уровней квантования, минимизирующих метрики искажения при условии ограничения на максимальную целевую скорость передачи битов кодирования или, что эквивалентно, минимизирующих скорость передачи битов кодирования при условии ограничения на максимально допустимое искажение.
Фиг.2 является блок-схемой, иллюстрирующей пример видеокодера 50, который включает в себя модуль 40 квантования скорость-искажение (RD), который выполняет квантование коэффициентов видеоблока в соответствии с этим раскрытием объекта изобретения. Видеокодер 50 может, например, соответствовать видеокодеру 22 устройства источника 12. Видеокодер 50 может выполнять интра- и интер-кодирование блоков внутри видеокадров. Интра-кодирование основано на пространственном предсказании для уменьшения или удаления пространственной избыточности в видео внутри данного видеокадра. Интер-кодирование основано на временном предсказании для уменьшения или удаления временной избыточности в видео внутри смежных кадров видеопоследовательности. Для интер-кодирования видеокодер 50 может выполнять оценку движения для отслеживания движения соответствующих видеоблоков между двумя или несколькими смежными кадрами. Интра-режим (I-режим) может относиться к пространственному режиму сжатия, а интер-режимы, например предсказание (P-режим) или двунаправленный (B-режим), могут относиться к временному режиму сжатия.
В примере по фиг.2 видеокодер 50 включает в себя модуль 32 предсказания, запоминающее устройство 34 опорного кадра, модуль 38 преобразования, модуль 40 квантования RD, модуль 42 обратного квантования, модуль 44 обратного преобразования и модуль 46 кодирования CAVLC. Для фильтрации границ блока может также содержаться деблочный фильтр (отмены блоков) для удаления артефактов блочности. Видеокодер 50 также включает в себя сумматор 48 и сумматор 51.
Как изображено на фиг.2, видеокодер 50 принимает текущий видеоблок видеокадра или слайса видеокадра, который должен быть закодирован. Модуль 32 предсказания выполняет способы кодирования с предсказанием для формирования блока прогноза. Модуль 32 предсказания может представлять модуль интра-предсказания и/или модуль интер-предсказания. Для интер-кодирования модуль 32 предсказания сравнивает текущий видеоблок, который должен быть закодирован, с различными блоками в одном или нескольких опорных видеокадрах или слайсах для определения блока прогноза. Для интра-кодирования модуль 32 предсказания формирует блок прогноза на основе соседних данных внутри идентичной кодируемой единицы, например видеокадра или слайса.
Для интер-кодирования модуль 32 предсказания может содержать оценку движения, которая идентифицирует один или несколько векторов движения, каждый из которых указывает на блок в опорном кадре, и модуль компенсации движения, который формирует блок прогноза на основе векторов движения. По существу, оценка движения может рассматриваться как процесс формирования вектора движения, посредством которого оценивают движение. Например, вектор движения может указывать смещение блока прогноза внутри опорного кадра, относительно текущего блока, в настоящее время кодируемого внутри текущего кадра. Этот опорный кадр может быть во времени расположен до или после видеокадра или слайса, которому принадлежит текущий видеоблок. Компенсация движения может рассматриваться как процесс выборки или формирования блока прогноза на основе вектора движения, определенного посредством оценки движения.
Как было отмечено, для интра-кодирования модуль 32 предсказания формирует блок прогноза на основе соседних данных внутри идентичной кодируемой единицы. Один или несколько режимов интра-предсказания могут определить то, как может быть определен блок интра-предсказания. В соответствии со стандартом AVC MPEG-4, Часть 10/H.264, например, модуль 32 предсказания может формировать блок прогноза 4×4 или 8×8 с использованием одного из девяти возможных режимов интра-предсказания: режима вертикального предсказания, режима горизонтального предсказания, режима предсказания DC, режима диагонального предсказания снизу/слева, режима диагонального предсказания снизу/справа, режима вертикального предсказания справа, режима горизонтального предсказания снизу, режима вертикального предсказания слева и режима горизонтального предсказания сверху. В качестве альтернативы, модуль предсказания 32 может формировать 16×16 блок прогноза с использованием одного из четырех возможных режимов интра-предсказания, определенных в стандарте AVC MPEG-4, Часть 10/H.264: режима вертикального предсказания, режима горизонтального предсказания, режима предсказания DC и режима предсказания плоскостью.
Видеокодер 50 формирует остаточный видеоблок (помеченный "БЛОК RESID") посредством вычитания видеоблока прогноза, создаваемого модулем 32 предсказания, из исходного видеоблока, который должен быть закодирован. Сумматор 48 выполняет эту операцию вычитания для получения остаточного блока. Модуль 38 преобразования применяет преобразование, например дискретное косинусное преобразование (DCT), к остаточному блоку для создания видеоблока остаточных коэффициентов преобразования. Модуль 38 преобразования может применять преобразование на базе блоков 8×8 (N=8) или 4×4 (N=4). Модуль 38 преобразования, однако, может выполнять другие преобразования, определенные стандартом H.264, которые концептуально являются аналогичными DCT. Также могут использоваться вейвлет-преобразования, целочисленные преобразования, поддиапазонные преобразования или другие типы преобразований. В любом случае модуль 38 преобразования применяет преобразование к остаточному блоку с созданием блока остаточных коэффициентов преобразования. Посредством преобразования можно преобразовать остаточную информацию из пиксельной области в частотную область.
Модуль 40 квантования RD (также называемый в этом описании "модуль 40 квантования") квантует остаточные коэффициенты преобразования для дальнейшего уменьшения скорости передачи битов. В частности, модуль 40 квантования выполняет один или несколько способов квантования, описанных более подробно ниже, с целью достижения требуемого уровня качества при данном битовом ресурсе для скорости передачи данных. Следовательно, модуль 40 квантования может реализовывать модель скорость-искажение и достигать требуемого уровня квантования, при котором, например, достигается требуемое количество битов для данной скорости или данного битового ресурса.
Квантованные коэффициенты преобразования вместе с синтаксической структурой предсказания (например, векторами движения, режимами предсказания или другой управляющей информацией) могут формировать полную кодируемую последовательность элементов. Модуль кодирования CAVLC 46 осуществляет энтропийное кодирование квантованных коэффициентов преобразования и синтаксической структуры предсказания для дальнейшего уменьшения количества битов, необходимых для их представления. После энтропийного кодирования модулем 46 кодирования CAVLC, кодированное видео может передаваться на другое устройство или архивироваться для последующей передачи или поиска и выборки.
Квантованные коэффициенты также обеспечиваются в модуль 42 обратного квантования. Модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование соответственно для восстановления остаточного блока (помеченного "RECON RESID") в пиксельной области для использования в качестве опорного блока. Сумматор 51 добавляет восстановленный остаточный блок, выводимый модулем 44 обратного преобразования, к блоку прогноза, создаваемому модулем 32 предсказания, для создания восстановленного видеоблока для сохранения в запоминающем устройстве 34 опорного кадра. Восстановленный видеоблок, сохраненный в запоминающем устройстве 34 опорного кадра, может использоваться модулем 32 предсказания как опорный блок для интер-кодирования блока в последующем видеокадре или интра-кодирования блока в идентичном кадре.
Ошибка предсказания или остаточный блок E(x,y), то есть разность между блоком, который должен быть закодирован, I(x,y) и блоком прогноза P(x,y), могут быть представлены как взвешенная сумма базисных функций преобразования fij (x,y):
где x и y определяют положение данного коэффициента внутри видеоблока и cij - весовые коэффициенты, иногда называемые коэффициентами ошибки предсказания или остаточными коэффициентами преобразования. Остаточные коэффициенты преобразования или веса cij могут впоследствии квантоваться следующим образом:
где lij - квантованные коэффициенты или уровни и Q(cij,QP) - функция, посредством которой квантуют cij с параметром квантования QP. Функция Q(cij,QP) может разделять cij на значение, полученное согласно QP, и положение (i,j) в матрице квантования, которая определяет размер шага квантования. Операция квантования может привносить потерю информации. Однако квантованные коэффициенты могут быть представлены с меньшим количеством битов, следовательно, с экономией полосы пропускания передачи, объема памяти и ресурсов обработки. Уровень сжатия (потери информации) традиционно управляется посредством регулировки значения QP.
На стороне декодера блок в текущем кадре получают при первом построении блока прогноза способом, идентичным способу в видеокодере 50, и с добавлением к блоку прогноза декодированной ошибки предсказания или остаточного блока. Ошибку предсказания или остаточный блок получают при энтропийном декодировании кодированного битового потока с применением операций обратного квантования и обратного преобразования. Обратное квантование (или деквантование) может выполняться для получения деквантованных коэффициентов r ip, например, в соответствии с уравнением:
где Q-1(lij,QP) представляет функцию, посредством которой деквантуют lij с параметром квантования QP. В функции Q(lij,QP) lij может умножаться (на) значение, полученное согласно QP и положению (i,j) в матрице обратного квантования, которая определяет размер шага квантования. Для получения восстановленного остаточного блока или восстановленной ошибки предсказания, которая представляет разность между восстановленным блоком R(x,y) и исходным блоком I(x,y), могут выполняться операции обратного преобразования. В одном примере восстановленный вариант остаточного блока или ошибки предсказания (x,y) может быть получен с применением следующей функции к деквантованным коэффициентам rij:
где - базисные функции обратного преобразования.
Традиционно квантование коэффициентов преобразования в видеокодеках обычно основано на квантователях с равномерным восстановлением (URQ). Классификационное правило для квантования данных определяется кодером. Одним примером квантования является так называемый подход мертвая зона плюс равномерное пороговое квантование (DZ-UTQ). Уравнение ниже определяет такой квантователь с мертвой зоной, где f0 обозначает параметр мертвой зоны при 0<f ij<0,5:
где lij соответствует уровню квантования или значению коэффициента квантования, sgn(N) - знаковая функция, которая извлекает знак действительного числа N, и - функция округления в меньшую сторону, которая возвращает наибольшее целое число, меньшее или равное М.
В принципе, значение восстановления или значение деквантованного коэффициента rij, который соответствует уровню l ij, может быть получено с умножением lij на соответствующий параметр QP:
Уравнения (5) и (6) представляют математически упрощенный вариант того, что фактически специфицировано для стандарта AVC MPEG-4, Часть 10/H.264, так как разными масштабными множителями для нормализации соответствующих базисных функций для простоты пренебрегают.
В стандарте AVC MPEG-4, Часть 10/H.264, квантование может выполняться согласно следующему уравнению:
где Q представляет матрицу квантования размеров шага квантования, % представляет деление по модулю и f равно 215+QP/6/3 для интра-кодированных кадров и 215+QP/6/6 для интер-кодированных кадров. Деквантование или обратное квантование коэффициентов могут выполняться согласно следующему уравнению:
где rij представляет деквантованные значения коэффициентов в положении (i,j) в видеоблоке, R представляет размеры шага деквантования. R может, например, быть эквивалентным Q-1 из уравнения (3). В некоторых вариантах осуществления упомянутые значения (связаны) с Q и R для QP и могут предварительно вычисляться и сохраняться.
Остаточные коэффициенты преобразования в данном блоке можно упорядочивать (сканировать) с использованием зигзагообразного сканирования или другого порядка сканирования, в результате которого получается одномерный вектор упорядоченных коэффициентов. Сканирование, например зигзагообразное сканирование, может также называться последовательным упорядочением, так как посредством него создают одномерную серию коэффициентов из двумерной схемы, определяемой блоком. Иллюстративное зигзагообразное сканирование для блока 4×4 представлено на фиг.3. Порядок сканирования для такого зигзагообразного сканирования, изображенного на фиг.3, соответствует проходу стрелки через видеоблок 56. В частности, коэффициенты C1-C16 помечены в порядке сканирования, и числовые значения, изображенные на фиг.3, указывают позиции коэффициентов в последовательном одномерном векторе и не представляют фактические значения коэффициентов. Результатом зигзагообразного сканирования, иллюстрируемого на фиг.7, является одномерный вектор коэффициентов X, где
где C1-C16 представляют позиции коэффициентов в двумерном массиве коэффициентов.
При зигзагообразном сканировании обычно предполагается, что после применения двумерного (2D) преобразования коэффициенты преобразования, имеющие наибольшую энергию (т.е. коэффициенты с большими значениями), соответствуют низкочастотным функциям преобразования и расположены ближе к верхнему левому углу блока, который в неизменном виде изображен на фиг.3. Следовательно, в векторе коэффициентов, создаваемом посредством зигзагообразного сканирования, коэффициенты с большей амплитудой наиболее вероятно появятся ближе к началу одномерного вектора упорядоченных коэффициентов. После квантования большинство коэффициентов с малой энергией могут быть равны 0.
Способы этого раскрытия объекта изобретения не ограничены каким-либо конкретным порядком сканирования или способом сканирования. Например, порядок сканирования, используемый в этом раскрытии объекта изобретения, может быть порядком зигзагообразного сканирования, изображенным на фиг.3. В качестве альтернативы, порядки сканирования, используемые в этом раскрытии объекта изобретения, могут быть другими порядками сканирования, например горизонтальным сканированием, вертикальным сканированием или любым другим способом сканирования. В некоторых случаях порядок сканирования можно адаптировать на основе содержимого ранее сканированных блоков или на основе ранее сканированных блоков, соответствующих идентичному режиму кодирования, используемому для кодирования текущего видеоблока. В одном варианте осуществления коэффициенты могут быть организованы на основе значений амплитуды их предварительного квантования (например, значений остаточного коэффициента преобразования). Например, получающийся в результате вектор коэффициентов может быть организован так, что коэффициенты, имеющие наименьшую амплитуду, находятся ближе к началу вектора коэффициентов. Коэффициенты, упорядоченные согласно этому критерию, будут обозначаться Ci, где i=1...,М (М равно 16 для блоков 4×4 и 64 для блоков 8×8).
CAVLC является одним способом энтропийного кодирования квантованных коэффициентов. В соответствии с CAVLC, как определено в стандарте AVC MPEG-4, Часть 10/H.264, модуль 46 кодирования CAVLC кодирует общее количество коэффициентов в векторе коэффициентов, несколько замыкающих коэффициентов в векторе коэффициентов, знаки каждого из замыкающих коэффициентов, амплитуды (или уровни) ненулевых коэффициентов, за исключением замыкающих коэффициентов, сумму всех непрерывных последовательностей (т.е. общее количество непрерывных серий перед последним ненулевым коэффициентом) и длину непрерывной серии из нулей перед каждым ненулевым коэффициентом.
Для каждого блока коэффициентов преобразования требуется найти квантованные коэффициенты или уровни квантования, минимизирующие метрику искажения при условии ограничения на максимальную целевую скорость передачи битов кодирования или, что эквивалентно, минимизирующие скорость передачи битов кодирования при условии ограничения на максимально допустимое искажение. Соответственно, требуется минимизировать метрику искажения D между ошибкой предсказания E(x,y) и восстановленным вариантом ошибки предсказания (x,y) при условии общего битового ресурса кодирования R budget:
Метрика искажения D может быть искажением - средней квадратической ошибкой (MSE), MSE, взвешенной коэффициентом активности, или другой метрикой искажения.
Эта так называемая задача "жесткой" пороговой обработки с ограничениями может быть решена с преобразованием ее в "простую" эквивалентную задачу без ограничений посредством "слияния" скорости и искажения через множитель Лагранжа . Задача пороговой обработки без ограничений обращается в определение (для фиксированного ) уровней коэффициентов, которые минимизируют общую величину затрат Лагранжа, J( ), определяемую как:
Соответственно, уравнение J( )=D(E(x,y)- (x,y))+ R может формировать модель скорость-искажение, которая минимизирует в совокупности скорость и искажение.
В случае кодера, который соответствует H.264, квадратичная ошибка восстановления (E(x,y)- (x,y))2 для данного блока пропорциональна квадратичной ошибке квантования:
Так как преобразование, используемое в стандарте H.264, является ортогональным, то величина затрат Лагранжа J ( ) может быть вычислена как:
где J( ,cij,lij) является величиной затрат Лагранжа коэффициента cij при квантовании до уровня lij:
Ошибка квантования err(cij ,lij) пропорциональна (rij-cij )2:
Как и в случае матриц квантования и деквантования Q и Q-1 (или R), значения матрицы нормализации N(QP,i,j) зависят только от положения в блоке (задаваемого i и j) и от значения QP. Количество битов bits(lij), требуемых для кодирования значения квантования lij , может быть вычислено при кодировании lij посредством алгоритма CAVLC, кратко описанного выше.
По меньшей мере, для части ненулевых коэффициентов модуль 40 квантования RD анализирует несколько уровней квантования-кандидатов. Ниже для иллюстрации модуль 40 квантования RD описан как анализирующий три уровня квантования-кандидата. Однако модуль 40 квантования RD может анализировать любое количество уровней квантования-кандидатов. Следовательно, способы этого раскрытия объекта изобретения не должны быть ограничены тремя уровнями квантования-кандидатами. В одном примере модуль 40 квантования RD может анализировать три уровня квантования-кандидата lij : 0, lij M и lij M-1, где 1ij M представляет максимальный уровень квантования для коэффициента. В другом примере модуль 40 квантования RD может анализировать три уровня квантования-кандидата lij : 0, 1 и lij M. Максимальный уровень квантования, lij M, может быть вычислен для блока 4×4 как:
В одном аспекте модуль 40 квантования RD может использовать однопроходный подход, кратко описанный выше, для выбора уровня квантования каждого отдельного коэффициента из множества уровней квантования-кандидатов. Модуль 40 квантования RD может рассчитывать величины затрат на кодирование для всех уровней квантования-кандидатов, связанных с отдельными коэффициентами, и выбирать уровень квантования-кандидат с самой малой величиной затрат на кодирование как уровень квантования для отдельного коэффициента, который в настоящее время анализируется. Модуль 40 квантования RD может последовательно выполнять этот процесс до тех пор, пока уровни квантования не будут выбраны для каждого из отдельных коэффициентов вектора коэффициентов.
В примерах, описанных выше, в которых каждый отдельный коэффициент связан с тремя уровнями квантования-кандидатами, например 0, lij M и lij M-1 или 0, 1 и lij M, модуль 40 квантования RD рассчитывает три величины затрат на кодирование для отдельного коэффициента. Каждая из этих трех величин затрат на кодирование соответствует одному особому из возможных уровней квантования-кандидатов. Модуль 40 квантования RD может рассчитывать величину затрат в соответствии с функцией затрат Лагранжа по уравнению (10) или (13). Модуль 40 квантования RD последовательно выполняет способ квантования, описанный выше, для каждого из отдельных коэффициентов вектора для выбора набора коэффициентов квантования (или уровней), которые уменьшают, и часто минимизируют, величину затрат на кодирование.
CAVLC может закодировать информацию, относящуюся к нескольким коэффициентам, в один синтаксический элемент. Например, синтаксический элемент "coeff token", определенный в стандарте H.264, кодирует некоторое количество из всех ненулевых коэффициентов в квантованном векторе. В связи с этим CAVLC не кодирует каждый коэффициент независимо. Следовательно, для определения количества битов, которые CAVLC использует для кодирования вектора квантованных коэффициентов, каждый из коэффициентов вектора должен быть известен для расчета величины затрат. Уровень квантования текущего коэффициента равен одному из анализируемых уровней квантования-кандидатов и, следовательно, является известным. Уровни квантования коэффициентов, предшествующих текущему коэффициенту в векторе коэффициентов, также известны, поскольку они выбраны ранее. Однако уровни квантования коэффициентов, которые являются последующими по отношению к текущему коэффициенту в векторе коэффициентов, не выбраны и, следовательно, явно не известны.
Модуль 40 квантования RD может, однако, рассчитывать оценки для уровня квантования этих последующих коэффициентов. В одном примере модуль 40 квантования RD может устанавливать уровень квантования последующих коэффициентов равным lij M, как определяется уравнением (15) выше. В другом примере модуль 40 квантования RD может рассчитывать значения предварительного квантования lij prequant как:
где f может быть равным 215+QP/6 /3 для интра- (ключевых) и 215+QP/6/6 для интер-кадров. Также могут использоваться другие значения для f, основанные на статистических характеристиках коэффициентов.
В другом аспекте модуль 40 квантования RD может использовать многопроходный подход для выбора набора коэффициентов квантования (или уровней), которые уменьшают, и часто минимизируют, величину затрат на кодирование коэффициентов. В этом подходе модуль 40 квантования RD может рассчитывать множество величин затрат на кодирование для каждого уровня квантования-кандидата, связанного с отдельным коэффициентом. Другими словами, каждый отдельный коэффициент связан с множеством уровней квантования-кандидатов, и каждый из уровней квантования-кандидатов связан с множеством величин затрат на кодирование. Уровни квантования могут быть выбраны посредством идентификации комбинации уровней квантования, которая минимизирует функцию скорость-искажение.
В качестве примера, модуль 40 квантования RD может реализовать многопроходный подход для минимизации функции скорость-искажение с использованием решетки 60 квантования, изображенной на фиг.4. Решетка 60 квантования имеет j этапов, причем каждый этап соответствует отдельному коэффициенту вектора коэффициентов. Для блока 4×4, например, j=16. Каждый из j этапов имеет три состояния, представленных тремя черными кружками, каждый из которых соответствует уровню квантования-кандидату отдельного коэффициента, связанного с этапом. В примере, изображенном на фиг.4, эти три состояния (кружка) каждого этапа представляют уровни квантования-кандидаты 0, l ij M и lij M-1. В качестве альтернативы, эти три состояния (кружка) каждого этапа могут представить другие уровни квантования-кандидаты, например 0, 1 и lij M. Кроме того, как описано выше, каждый из этапов может включать в себя большее или меньшее количество состояний, например два уровня квантования-кандидата или более трех уровней квантования-кандидатов.
Путь через решетку 60 квантования представляет последовательность решений по квантованию относительно всех коэффициентов в блоке, т.е. набора коэффициентов квантования (или уровней). Модуль 40 квантования RD может использовать алгоритм Витерби для нахождения путей выживания через решетку 60 квантования. Алгоритм Витерби является алгоритмом динамического программирования для нахождения наиболее вероятной последовательности скрытых состояний (или пути Витерби), который результате приводит к последовательности наблюдаемых событий. В алгоритме Витерби делается некоторое количество предположений. Во-первых, в последовательности должны быть как наблюдаемые события, так и скрытые события. Эта последовательность часто соответствует времени. Во-вторых, эти две последовательности должны быть выровнены, и экземпляр наблюдаемого события должен соответствовать ровно одному экземпляру скрытого события. В-третьих, расчет наиболее вероятной скрытой последовательности до определенной точки t должен зависеть только от наблюдаемого события в точке t и наиболее вероятной последовательности в точке t-1.
На каждом этапе решетки 60 квантования модуль 40 квантования RD рассчитывает величины затрат, например согласно функции затрат Лагранжа по уравнению (13), для каждого из уровней квантования-кандидатов на основе каждого пути выживания до текущего отдельного коэффициента и оцененных уровней квантования последующих коэффициентов. Для коэффициентов на текущем этапе и предыдущих этапах вдоль каждого пути выживания в модуле 40 квантования RD существует информация об уровне квантования. Уровням квантования последующих этапов (т.е. последующим коэффициентам) могут присваиваться предсказанные уровни квантования lij M или lij prequant, рассчитываемые с использованием уравнений (15) и (16) соответственно, или другой предполагаемый или предсказанный уровень квантования.
На втором этапе решетки 60 квантования, например, который соответствует коэффициенту C2, модуль 40 квантования RD рассчитывает величины затрат на кодирование для каждой комбинации уровней квантования-кандидатов, связанных с коэффициентами C1 и C2. С использованием уровней квантования-кандидатов 0, lij M и lij M-1 в качестве примера модуль 40 квантования RD рассчитывает три величины затрат на кодирование для каждого уровня квантования-кандидата, связанного с коэффициентом C 2. Для уровня квантования-кандидата 0, связанного с коэффициентом C12, модуль 40 квантования RD рассчитывает первую величину затрат на кодирование с использованием уровней квантования l1=0, l2=0 и l3-lj , равных соответственно предсказанным/оцененным уровням квантования lij M или lij requant (где l1, l2, l 3, ,lj - выбранные, кандидат и/или предсказанные уровни квантования, связанные с C1, C2, C3, , Cj соответственно), вторую величину затрат на кодирование с использованием уровней квантования l1 =lij M, l2=0 и l3-lj , равных соответственно предсказанным/оцененным уровням квантования, и третью величину затрат на кодирование с использованием уровней квантования l1=lij M, l2=0 и l3-lj , равных соответственно предсказанным/оцененным уровням квантования. Уровень (модуль) 40 квантования RD выбирает путь, имеющий самую маленькую рассчитанную величину затрат на кодирование, как путь выживания для уровня 0 квантования коэффициента, связанного с коэффициентом C2.
Аналогично, модуль 40 квантования RD рассчитывает первую, вторую и третью величины затрат на кодирование для уровня lij M квантования-кандидата, связанного с коэффициентом C2, с использованием l1=0, lij M и lij M-1 соответственно и l3-lj , равных соответственно предсказанным уровням квантования. Модуль 40 квантования RD выбирает путь, имеющий самую маленькую рассчитанную величину затрат на кодирование, как путь выживания для уровня lij M-1 квантования коэффициента, связанного с коэффициентом C2. Модуль 40 квантования RD также рассчитывает первую, вторую и третью величины затрат на кодирование для уровня l ij M-1 квантования-кандидата, связанного с коэффициентом C2, с использованием l1=0, lij M и lij M-1 соответственно и l3-lj , равных соответственно предсказанным уровням квантования. Модуль 40 квантования RD выбирает путь, имеющий самую маленькую рассчитанную величину затрат на кодирование, как путь выживания для уровня lij M-1 квантования коэффициента, связанного с коэффициентом C2. Для примера предположим, что путь выживания для уровня 0 квантования, связанный с коэффициентом C2 , является путем, который включает в себя l1=l ij M, путь выживания для уровня lij M квантования, связанный с коэффициентом C 2, является путем, который включает в себя l1 =lij M, и путь выживания для уровня lij M-1 квантования, связанный с коэффициентом C 2, является путем, который включает в себя l1 =0. Пути выживания изображены в решетке 60 квантования по фиг.4 в виде пунктирных линий.
После выбора путей выживания для коэффициента C2 модуль 40 квантования RD определяет уровень квантования, связанный со следующим (последующим) коэффициентом вектора коэффициентов, например C3 в примере по фиг.4. Модуль 40 квантования RD рассчитывает множество величин затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с коэффициентом C3, с использованием путей выживания и предсказанных/оцененных уровней квантования последующих коэффициентов. На основе рассчитанных величин затрат модуль 40 квантования RD выбирает пути выживания, связанные с каждым коэффициентом кандидата, на основе рассчитанной величины затрат на кодирование. В примере, изображенном на фиг.4, путем выживания для уровня 0 квантования, связанным с коэффициентом C3, является lij M, 0 и 0 для уровней квантования C1 , C2 и C3 соответственно, путем выживания для уровня lij M квантования, связанным с коэффициентом C 3, является 0, lij M-1 и lij M для уровней квантования C1, C 2 и C3 соответственно, и путем выживания для уровня lij M-1 квантования, связанным с коэффициентом C 3, является 0, lij M-1 и lij M-1 для уровней квантования C1, C 2 и C3 соответственно.
Модуль 40 квантования RD продолжает выбирать пути выживания уровней квантования до последнего коэффициента вектора коэффициентов, например C7. Модуль 40 квантования RD выбирает один уровень квантования, связанный с последним коэффициентом, который имеет самую маленькую величину затрат на кодирование, которая соответствует пути выживания через решетку 60 квантования, который представляет собой последовательность решений по квантованию относительно всех коэффициентов в блоке. Несмотря на то что этот способ требует большего количества вычислительных ресурсов, чем однопроходный способ, описанный выше, результат может быть более точным.
Для ускорения процесса квантования модуль 40 квантования может реализовывать один или несколько способов ускорения. Например, для отдельного одного из квантованных коэффициентов если этот один отдельный из квантованных коэффициентов ближе к уровню 0 квантования, чем к уровню 1 квантования, то модуль 40 квантования может квантовать связанный коэффициент до уровня 0 квантования без дальнейшего анализа. Другими словами, отдельный коэффициент имеет только одно состояние, соответствующее уровню 0 квантования в решетке, и модуль 40 квантования может пропускать вычисление величины затрат на кодирование, связанное с уровнями квантования-кандидатами, связанными с упомянутым отдельным коэффициентом. Для ускорения процесса квантования могут использоваться эти или другие способы с незначительным, если таковое вообще имеется, ухудшением в качестве кодированного видео.
Фиг.5 является блок-схемой последовательности операций, на которой изображено иллюстративное функционирование видеокодера, выполняющего квантование в соответствии с одним способом квантования этого раскрытия объекта изобретения. Видеокодер может, например, содержать видеокодер 50 по фиг.2. Модуль 40 квантования RD видеокодера 50 получает видеоблок коэффициентов (70). Видеоблок коэффициентов может быть сформирован с вычитанием видеоблока прогноза, сформированного модулем 32 предсказания, из исходного видеоблока, который должен быть закодирован, для получения блока значений разности пикселей и после этого с применением операции преобразования, например DCT, к блоку значений разности пикселей для получения блока коэффициентов преобразования.
Модуль 40 квантования RD или другой компонент сканирует коэффициенты видеоблока для получения одномерного вектора коэффициентов (т.е. вектора коэффициентов) (71). Модуль 40 квантования RD может сканировать коэффициенты видеоблока с использованием зигзагообразного сканирования, как описано в отношении фиг.3, или другого порядка сканирования. В качестве другого примера, модуль 40 квантования RD может сканировать коэффициенты вектора коэффициентов для организации коэффициентов как функции амплитуды. В результате этого способа сканирования могут получиться коэффициенты видеоблока, организованные в векторе коэффициентов так, что коэффициенты, имеющие наименьшую амплитуду, находятся ближе к началу вектора коэффициентов.
Модуль 40 квантования RD может выбирать один из коэффициентов вектора коэффициентов для анализа (72). Модуль 40 квантования RD может выбирать коэффициенты последовательно, начиная с первого коэффициента вектора и заканчивая последним коэффициентом вектора. Соответственно первым выбранным коэффициентом является коэффициент C1. В качестве другого примера, модуль 40 квантования RD может выбирать коэффициенты последовательно, начиная с последнего коэффициента вектора и заканчивая первым коэффициентом вектора. Модуль 40 квантования RD рассчитывает множество уровней квантования-кандидатов для выбранного коэффициента (73). В одном примере модуль квантования RD может рассчитывать три уровня квантования-кандидата для выбранного коэффициента. В одном примере модуль 40 квантования RD может анализировать три уровня квантования-кандидата lij : 0, lij M и lij M-1, где:
В другом примере модуль 40 квантования RD может рассчитывать три уровня квантования-кандидата lij : 0, 1 и lij M. Несмотря на то что способы описаны в контексте трех уровней квантования-кандидатов, способы квантования этого раскрытия объекта изобретения не должны быть ограничены конкретным количеством уровней квантования-кандидатов. Другими словами, модуль 40 квантования RD может рассчитывать любое количество уровней квантования-кандидатов, связанных с выбранным коэффициентом, включающих в себя два уровня или больше трех уровней. Обсуждение в этом описании трех уровней квантования-кандидатов является только иллюстративным.
В этом подходе модуль 40 квантования RD может рассчитывать величину затрат на кодирование для каждого из уровней квантования-кандидатов, связанного с выбранным коэффициентом. Модуль 40 квантования RD может рассчитывать величину затрат в соответствии с функцией затрат Лагранжа по уравнению (10) или (13). Поскольку CAVLC не кодирует каждый коэффициент независимо, то уровень квантования каждого из коэффициентов вектора должен быть известен для определения количества битов (R из уравнения (10) или bits(lij) из уравнения (13)), которые CAVLC использует для кодирования вектора коэффициентов. Уровни квантования текущего и предыдущих коэффициентов известны, уровень квантования текущего коэффициента равен одному из уровней квантования-кандидатов, а уровни квантования предыдущих коэффициентов выбраны ранее. Уровни квантования коэффициентов, которые являются последующими по отношению к текущему коэффициенту, не известны, так как модуль 40 квантования RD еще не анализировал эти коэффициенты, но их величина затрат может быть предсказана или оценена согласно уравнениям (15) или (16).
Модуль квантования RD 40 выбирает уровень квантования-кандидат с наименьшей величиной затрат на кодирование как уровень квантования для отдельного выбранного коэффициента, анализируемого в настоящее время (75). Модуль 40 квантования RD определяет, существуют ли еще коэффициенты в векторе коэффициентов, которые еще не квантовались (76). Если существуют оставшиеся коэффициенты в векторе коэффициентов (переход "ДА" на этапе 76), то модуль 40 квантования RD выбирает уровень квантования для коэффициента, как описано выше в отношении этапов 72-75. Модуль квантования RD 40 продолжает этот процесс до тех пор, пока больше не существует коэффициентов в векторе коэффициентов, которые необходимо квантовать. Соответственно, модуль 40 квантования RD может последовательно выполнять этот процесс до тех пор, пока уровни квантования не будут выбраны для каждого из отдельных коэффициентов вектора коэффициентов. Такой способ квантования может обеспечивать возможность видеокодеру 50 выбирать набор коэффициентов квантования (или уровней), которые уменьшают, и часто минимизируют, величину затрат на кодирование для блока.
Когда больше не существует оставшихся коэффициентов преобразования, т.е. все коэффициенты вектора коэффициентов являются квантованными (переход "НЕТ" на этапе 76), модуль 46 кодирования CAVLC осуществляет энтропийное кодирование квантованных коэффициентов преобразования вместе с синтаксической структурой предсказания (например, векторами движения, режимами предсказания или другой управляющей информацией) для формирования кодированного видеоблока (77). После энтропийного кодирования модулем 46 кодирования CAVLC, видеокодер 40 передает кодированный видеоблок в другое устройство или сохраняет/архивирует кодированный видеоблок для последующей передачи или поиска и выборки (78).
Фиг.6 является блок-схемой последовательности операций, на которой более подробно изображено иллюстративное функционирование модуля 40 квантования RD, рассчитывающего величины затрат на кодирование для уровней квантования-кандидатов. Процесс, изображенный на фиг.6, может соответствовать этапу 74 процесса, изображенного на фиг.5, или может соответствовать расчету величин затрат на кодирование в другом контексте. Как изображено на фиг.6, модуль 40 квантования RD выбирает один из уровней квантования-кандидатов, связанных с отдельным коэффициентом (80). Модуль 81 (40) квантования RD получает уровни квантования всех ранее квантованных коэффициентов в векторе коэффициентов (81). Уровни квантования всех ранее квантованных коэффициентов могут быть сохранены в памяти или другом запоминающем устройстве.
Модуль 40 квантования RD получает предсказанный (или оцененный) уровень квантования для последующих коэффициентов, например коэффициентов, которые еще не квантовались (82). Модуль 40 квантования RD может, например, рассчитывать предсказываемые или оцениваемые уровни квантования согласно одному из следующих уравнений:
Однако модуль 40 квантования RD может использовать другие оценки для уровней квантования последующих коэффициентов вектора коэффициентов.
Модуль 40 квантования RD рассчитывает величину затрат на кодирование для выбранного уровня квантования-кандидата с использованием функции затрат Лагранжа, связанной с моделью скорость-искажение (83). В одном примере модуль 40 квантования RD рассчитывает величину затрат на кодирование для выбранного уровня квантования-кандидата с использованием функции затрат Лагранжа по уравнению (10) или (13). Модуль 40 квантования RD рассчитывает величину затрат на кодирование для выбранного уровня квантования-кандидата на основе полученных уровней квантования, связанных с ранее квантованными коэффициентами, выбранным уровнем квантования-кандидатом и предсказанными (или оцененными) уровнями квантования последующих коэффициентов, которые еще не квантовались. Поскольку CAVLC не кодирует каждый коэффициент независимо, то количество битов (R из уравнения (10) или bits(lij) из уравнения (13)) может быть определено только тогда, когда уровни квантования для каждого из коэффициентов вектора известны, причем эти величины затрат рассчитываются с использованием предсказанных/оцененных уровней квантования.
Модуль 40 квантования RD определяет, существуют ли еще уровни квантования-кандидаты, для которых необходимо рассчитать величину затрат на кодирование (84). Если существуют оставшиеся уровни квантования-кандидаты (переход "ДА" на этапе 84 по фиг.6), то модуль 40 квантования RD выбирает следующий уровень квантования-кандидат и рассчитывает величину затрат на кодирование, связанную с этим следующим уровнем квантования-кандидатом, как описано выше в отношении этапов 80-83 по фиг.6. Модуль 40 квантования RD продолжает этот процесс до тех пор, пока больше не останется уровней квантования-кандидатов, связанных с отдельным коэффициентом, для которых должна быть рассчитана величина затрат на кодирование (переход "НЕТ" на этапе 84 по фиг.6). В этой точке процесс возвращается назад к этапу 75 по фиг.5.
Фиг.7 является блок-схемой последовательности операций, на которой изображено иллюстративное функционирование видеокодера, выполняющего квантование в соответствии с другим способом квантования этого раскрытия объекта изобретения. Видеокодер может, например, содержать видеокодер 50 по фиг.2. Модуль 40 квантования RD видеокодера 50 получает видеоблок коэффициентов (90). Этот видеоблок коэффициентов может быть сформирован с вычитанием видеоблока прогноза, сформированного модулем 32 предсказания, из исходного видеоблока, который должен быть закодирован, для получения блока значений разности пикселей и после этого с применением операции преобразования, например DCT, к блоку значений разности пикселей для получения блока коэффициентов преобразования.
Модуль 40 квантования RD или другой компонент сканирует коэффициенты видеоблока для получения одномерного вектора коэффициентов (т.е. вектора коэффициентов) (91). Модуль 40 квантования RD может сканировать коэффициенты видеоблока с использованием зигзагообразного сканирования, как описано в отношении фиг.3, или другого порядка сканирования. В качестве другого примера, модуль 40 квантования RD может сканировать коэффициенты вектора коэффициентов для организации их как функции амплитуды. В результате этого способа сканирования могут получиться коэффициенты видеоблока, организованные в векторе коэффициентов так, что коэффициенты, имеющие наименьшую амплитуду, находятся ближе к началу вектора коэффициентов.
Модуль 40 квантования RD может выбирать один из коэффициентов вектора коэффициентов для анализа (92). Модуль 40 квантования RD может выбирать коэффициенты последовательно, начиная с первого коэффициента вектора и заканчивая последним коэффициентом вектора. Соответственно первым выбранным коэффициентом является коэффициент C1 . В качестве другого примера, модуль 40 квантования RD может выбирать коэффициенты последовательно, начиная с последнего коэффициента вектора и заканчивая первым коэффициентом вектора. Модуль 40 квантования RD рассчитывает множество уровней квантования-кандидатов для выбранного коэффициента (93). В одном примере модуль квантования RD может рассчитывать три уровня квантования-кандидата для выбранного коэффициента. Как описано выше, модуль 40 квантования RD может рассчитывать три уровня квантования-кандидата lij : 0, lij M и lij M-1, где:
В другом примере, модуль 40 квантования RD может рассчитывать три уровня квантования-кандидата lij : 0, 1 и lij M. Несмотря на то что способы описаны в контексте трех уровней квантования-кандидатов, способы квантования этого раскрытия объекта изобретения не должны быть ограничены конкретным количеством уровней квантования-кандидатов. Другими словами, модуль 40 квантования RD может рассчитывать любое количество уровней квантования-кандидатов, связанных с выбранным коэффициентом, включающих в себя два уровня или больше трех уровней.
Модуль 40 квантования RD может рассчитывать множество величин затрат на кодирование для каждого из уровней квантования-кандидатов, связанных с выбранным коэффициентом. Другими словами, каждый отдельный коэффициент связан с множеством уровней квантования-кандидатов, и каждый из уровней квантования-кандидатов связан с множеством величин затрат на кодирование. Это множество величин затрат на кодирование может быть рассчитано на основе путей выживания, связанных с ранее выбранными уровнями квантования предыдущих коэффициентов, а также предсказанных или оцененных уровней квантования для последующих коэффициентов. Как описано выше, путь выживания представляет собой последовательность решений по квантованию, принятых для предыдущих коэффициентов в векторе.
Модуль 40 квантования RD выбирает путь выживания с наименьшей величиной затрат на кодирование для каждого из уровней квантования-кандидатов (95). В связи с этим выбранному коэффициенту соответствует три пути выживания, причем каждый путь выживания связан с одним из уровней квантования-кандидатов, связанных с отдельным коэффициентом. В качестве одного примера, модуль 40 квантования RD может рассчитывать величины затрат на кодирование для коэффициентов кандидата и выбирать путь выживания, связанный с каждым из коэффициентов в соответствии с решеткой 60 квантования, как изображено и подробно описано в отношении фиг.4.
Модуль 40 квантования RD определяет, существуют ли еще коэффициенты в векторе коэффициентов, которые еще не квантовались (96). Если существуют оставшиеся коэффициенты в векторе коэффициентов (переход "ДА" на этапе 76), то модуль 40 квантования RD выбирает путь выживания для каждого из уровней квантования для последующего коэффициента, как описано выше в отношении этапов 92-95.
Если больше не существует оставшихся коэффициентов преобразования, т.е. все коэффициенты вектора коэффициентов являются квантованными (переход "НЕТ" на этапе 96), то модуль 40 квантования RD выбирает один путь выживания, т.е. один из трех путей выживания, связанных с последним коэффициентом вектора, который имеет самую маленькую величину затрат на кодирование (97). Такой способ квантования может обеспечивать возможность видеокодеру 50 выбирать набор коэффициентов квантования (или уровней), которые уменьшают, и часто минимизируют, величину затрат на кодирование для блока.
Модуль 46 кодирования CAVLC осуществляет энтропийное кодирование квантованных коэффициентов преобразования вместе с синтаксической структурой предсказания (например, векторами движения, режимами предсказания или другой управляющей информацией) для формирования кодированного видеоблока (98). После энтропийного кодирования модулем 46 кодирования CAVLC, видеокодер 40 передает кодированный видеоблок в другое устройство или сохраняет/архивирует кодированный видеоблок для последующей передачи или поиска и выборки (99).
Фиг.8 является блок-схемой последовательности операций, на которой изображен иллюстративный способ, который может быть использован для ускорения процесса квантования без существенного ухудшения качества в квантованных коэффициентах. Способ ускорения, описанный на фиг.8, можно лучше всего применять к однопроходному процессу квантования, он также может быть полезным в многопроходном процессе квантования. Как изображено на фиг.8, модуль 40 квантования RD может определять, находится ли отдельный квантованный коэффициент ближе к уровню 0 квантования, чем к следующему наибольшему уровню квантования-кандидату (100). В примере, в котором уровнями квантования-кандидатами являются 0, 1 и lij M, например, модуль 40 квантования RD может определять, находится ли отдельный квантованный коэффициент ближе к уровню 0 квантования-кандидату, чем к уровню 1 квантования-кандидату.
Если отдельный квантованный коэффициент находится ближе к уровню 0 квантования, чем к следующему наибольшему уровню квантования-кандидату, например к уровню 0 квантования (переход "ДА" в позиции 100), то модуль 40 квантования RD может пропускать расчет отдельных величин затрат на кодирование отдельного коэффициента, связанных с каждым уровнем квантования, и вместо этого выбирать уровень 0 квантования без дальнейшего анализа (102). В этом случае модуль 40 квантования RD может предполагать, что величина затрат на кодирование отдельного коэффициента, связанная с отдельным квантованным коэффициентом, будет минимизирована на уровне 0 квантования. Соответственно, в этом случае модуль 40 квантования RD может избегать ненужных расчетов, связанных с расчетом величин затрат на кодирование, связанных с каждым из уровней квантования-кандидатов. Если отдельный квантованный коэффициент не находится ближе к уровню 0 квантования, чем к следующему наибольшему уровню квантования-кандидату, например к уровню 1 квантования (переход "НЕТ" в позиции 100), то модуль 40 квантования RD может не пропускать расчет величин затрат на кодирование, связанных с уровнями квантования-кандидатами, связанными с отдельным коэффициентом.
Способы этого раскрытия объекта изобретения могут быть осуществлены в самых разных устройствах или приборах, включающих в себя беспроводную микротелефонную трубку и интегральную схему (IC) или набор IC (т.е. набор микросхем). Все компоненты, модули или узлы были описаны с тем, чтобы придать особое значение функциональным аспектам, и не обязательно требуется их реализация в разных модулях аппаратного обеспечения, компонентах или модулях.
Соответственно, способы, описанные в этом документе, могут быть реализованы аппаратными средствами, программными средствами, программно-аппаратными средствами или любой их комбинацией. Любые признаки, описанные как модули или компоненты, могут быть реализованы вместе в устройстве логической ИС или отдельно как отдельные, но взаимодействующие логические устройства. Если способы реализованы в программных средствах, то они могут быть реализованы, по меньшей мере, частично в машиночитаемом носителе информации, содержащем команды, которые при их исполнении выполняют один или несколько способов, описанных выше. Машиночитаемый носитель информации может являться частью компьютерного программного продукта, который, например, может включать в себя упаковочные материалы. Машиночитаемый носитель информации может содержать оперативное запоминающее устройство (RAM), например синхронную динамическую память (синхронное динамическое ЗУПВ), постоянное запоминающее устройство (ROM), энергонезависимое оперативное запоминающее устройство (NVRAM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флеш-память, магнитный или оптический носитель информации и т.п. Упомянутые способы дополнительно или в качестве альтернативы могут быть реализованы, по меньшей мере, частично машиночитаемой средой связи (также называемой носителем связи), которая переносит или передает код в виде команды или структуры данных и к которой можно получать доступ, считывать из нее данные и/или которая может исполняться компьютером.
Код может исполняться одним или несколькими процессорами, например одним или несколькими цифровыми сигнальными процессорами (DSP), универсальными микропроцессорами, специализированными интегральными схемами (ASIC), программируемыми логическими матрицами (FPGA) или другой эквивалентной интегрированной или отдельной логической схемой. Соответственно, термин "процессор", используемый в этом документе, может относиться к любой вышеизложенной структуре или любой другой структуре, подходящей для реализации способов, описанных в этом документе. Кроме того, в некоторых аспектах функциональные возможности, описанные в этом документе, могут быть обеспечены в специализированных программных модулях или аппаратных модулях, выполненных с возможностью кодирования и декодирования, или включены в состав объединенного видеокодека (CODEC). Также упомянутые способы могут быть полностью реализованы в одной или нескольких схемах или в одном или нескольких логических элементах.
Описаны различные аспекты раскрытия объекта изобретения. Эти и другие аспекты находятся в рамках следующей формулы изобретения.
Класс H04N7/30 с использованием кодирования с преобразованием
Класс H04M3/42 системы, обеспечивающие абонентам особые услуги или удобства