отделимые направленные преобразования

Классы МПК:H04N7/30 с использованием кодирования с преобразованием
Автор(ы):,
Патентообладатель(и):КВЭЛКОММ ИНКОРПОРЕЙТЕД (US)
Приоритеты:
подача заявки:
2008-06-13
публикация патента:

Изобретение относится к цифровому видеокодированию и, в частности, касается энтропийного кодирования коэффициентов видеоблоков. Техническим результатом является обеспечение эффективной группировки ненулевых коэффициентов вблизи передней части одномерного вектора коэффициентов для повышения эффективности энтропийного кодирования. Указанный технический результат достигается тем, что избирательно применяют множество различных преобразований к остаточным блокам на основе режима предсказания видеоблоков. По меньшей мере часть из множества преобразований является отделимыми направленными преобразованиями, подготовленными для соответствующего режима предсказания, для обеспечения более эффективного уплотнения энергии для остаточных блоков данного режима предсказания. Использование отделимых направленных преобразований дает преимущества, состоящие в снижении сложности вычислений и требований к памяти по сравнению с использованием неотделимых направленных преобразований. Вдобавок, при применении отделимых направленных преобразований можно перестраивать порядок сканирования, используемый для сканирования коэффициентов остаточного блока. В частности, порядок сканирования можно перестроить на основе статистических данных, связанных с одним или несколькими ранее закодированными блоками. 4 н. и 45 з.п. ф-лы, 8 ил., 1 табл.отделимые направленные преобразования, патент № 2463729

отделимые направленные преобразования, патент № 2463729 отделимые направленные преобразования, патент № 2463729 отделимые направленные преобразования, патент № 2463729 отделимые направленные преобразования, патент № 2463729 отделимые направленные преобразования, патент № 2463729 отделимые направленные преобразования, патент № 2463729 отделимые направленные преобразования, патент № 2463729

Формула изобретения

1. Способ кодирования видеоданных, причем способ содержит:

сохранение множества преобразований для использования при преобразовании остаточных пиксельных значений видеоблока, связанных с режимами предсказания или остаточных коэффициентов преобразования видеоблока, связанных с режимами предсказания к остаточным коэффициентам преобразования видеоблока или остаточным пиксельным значениям видеоблока соответственно, где каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, и по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями;

выбор одного из множества преобразований для видеоблока на основе, по меньшей мере частично на направленности режима предсказания, связанного с видеоблоком;

применение выбранного преобразования к видеоблоку для преобразования остаточных пиксельных значений видеоблока к остаточным коэффициентам преобразования видеоблока; и

энтропийное кодирование остаточных коэффициентов преобразования видеоблока.

2. Способ по п.1, в котором каждое отделимое направленное преобразование включает в себя матрицу преобразования столбцов размером N×N и матрицу преобразования строк размером N×N, где N×N размерность видеоблока.

3. Способ по п.1, в котором множество преобразований дополнительно включает в себя дискретное косинусное преобразование (DCT) или целочисленное преобразование, а выбор одного из множества преобразований для видеоблока содержит:

выбор дискретного косинусного преобразования (DCT) или целочисленного преобразования для применения к видеоблоку, когда выбранный режим предсказания проявляет ограниченную направленность; и

выбор одного из множества отделимых направленных преобразований для применения к видеоблоку, когда выбранный режим предсказания проявляет направленность.

4. Способ по п.3, дополнительно содержащий:

выбор режима предсказания видеоблока из набора режимов предсказания, который включает в себя однонаправленные режимы предсказания и многонаправленные режимы предсказания, которые объединяют по меньшей мере два однонаправленных режима предсказания,

причем выбор DCT или целочисленного преобразования содержит выбор DCT или целочисленного преобразования для применения к видеоблоку, когда выбранным режимом предсказания является либо DC однонаправленный режим предсказания, либо многонаправленный режим предсказания, который объединяет по меньшей мере два режима предсказания, указывающие по существу ортогональные направления.

5. Способ по п.4, в котором набор режимов предсказания включает в себя однонаправленные режимы предсказания и поднабор возможных двунаправленных режимов предсказания, причем поднабор двунаправленных режимов предсказания включает в себя по меньшей мере одну комбинацию, включающую в себя каждый из однонаправленных режимов предсказания.

6. Способ по п.1, в котором выбранное преобразование является отделимым преобразованием, и видеоблок содержит первый видеоблок, причем способ дополнительно содержит:

сканирование остаточных коэффициентов преобразования первого видеоблока с использованием порядка сканирования коэффициентов;

сбор статистических данных, связанных по меньшей мере с частью коэффициентов;

настройку порядка сканирования коэффициентов в соответствии с собранными статистическими данными; и

сканирование коэффициентов по меньшей мере одного последующего видеоблока с использованием перестроенного порядка сканирования коэффициентов, когда в блоке кодирования первого видеоблока существует по меньшей мере один последующий видеоблок.

7. Способ по п.6, в котором:

сбор статистических данных по меньшей мере для части коэффициентов содержит поддержку отсчитанного значения, соответствующего каждой позиции в упомянутой части двумерного представления коэффициентов, которое отслеживает количество попаданий ненулевых коэффициентов на каждую из позиций в упомянутой части двумерного представления коэффициентов; и

настройка порядка сканирования коэффициентов содержит настройку порядка сканирования коэффициентов для создания настроенного порядка сканирования коэффициентов, при котором позиции коэффициентов сканируют в убывающем порядке на основе отсчитанных значений позиций коэффициентов.

8. Способ по п.7, дополнительно содержащий нормализацию собранных статистических данных, когда одно из отсчитанных значений достигает порогового отсчитанного значения, где нормализация собранных статистических данных содержит одно из сокращения каждого из отсчитанных значений на некоторый множитель и восстановления отсчитанных значений согласно набору начальных отсчитанных значений.

9. Способ по п.6, дополнительно содержащий выбор режима предсказания видеоблока из множества режимов предсказаний, где сбор статистических данных и настройка порядка сканирования коэффициентов содержит сбор статистических данных и настройку порядка сканирования коэффициентов отдельно для каждого из множества режимов предсказания.

10. Способ по п.6, в котором первый видеоблок и по меньшей мере один последующий видеоблок принадлежат первому блоку кодирования, причем способ дополнительно содержит повторную инициализацию порядка сканирования для второго блока кодирования.

11. Способ по п.1, в котором преобразования представляют собой преобразования для использования их при преобразовании остаточных пиксельных значений видеоблока в остаточные коэффициенты преобразования, и дополнительно в котором:

применение выбранного преобразования содержит применение выбранного преобразования к видеоблоку для преобразования остаточных пиксельных значений видеоблока в остаточные коэффициенты преобразования; и

энтропийное кодирование содержит энтропийное кодирование остаточных коэффициентов преобразования видеоблока после применения выбранного преобразования.

12. Способ по п.1, в котором преобразования являются обратными преобразованиями для их использования при преобразовании остаточных коэффициентов преобразования в остаточные пиксельные значения видеоблока, и дополнительно в котором:

применение выбранного преобразования содержит применение выбранного обратного преобразования к видеоблоку для преобразования остаточных коэффициентов преобразования в остаточные пиксельные значения видеоблока; и

энтропийное кодирование содержит энтропийное декодирование остаточных коэффициентов преобразования видеоблока до применения выбранного преобразования;

сохранение множества преобразований для использования при преобразовании остаточных пиксельных значений видеоблока, связанных с режимами предсказания или остаточных коэффициентов преобразования видеоблока, связанных с режимами предсказания к остаточным коэффициентам преобразования видеоблока или остаточным пиксельным значениям видеоблока соответственно, где каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, и по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями.

13. Устройство кодирования видеоданных, причем устройство содержит:

модуль преобразования, который:

сохраняет множество преобразований для использования при преобразовании остаточных пиксельных значений видеоблока, связанных с режимами предсказания или остаточных коэффициентов преобразования видеоблока, связанных с режимами предсказания к остаточным коэффициентам преобразования видоблока или остаточным пиксельным значениям видеоблока, соответственно,

выбирает одно из множества преобразований для видеоблока на основе, по меньшей мере частично на направленности режима предсказания, связанного с видеоблоком, и

применяет выбранное преобразование к видеоблоку для преобразования остаточных пиксельных значений видеоблока к остаточным коэффициентам преобразования видеоблока,

причем каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, и по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями; и

модуль энтропийного кодирования, который выполняет энтропийное кодирование остаточных коэффициентов преобразования видеоблока.

14. Устройство по п.13, в котором каждое отделимое направленное преобразование включает в себя матрицу преобразования столбцов размером N×N и матрицу преобразования строк размером N×N, где N×N размерность видеоблока.

15. Устройство по п.13, в котором множество преобразований дополнительно включает в себя дискретное косинусное преобразование (DCT) или целочисленное преобразование, и модуль преобразования:

выбирает дискретное косинусное преобразование (DCT) или целочисленное преобразование для применения к видеоблоку, когда выбранный режим предсказания проявляет ограниченную направленность, и

выбирает одно из множества отделимых направленных преобразований для применения к видеоблоку, когда выбранный режим предсказания проявляет направленность.

16. Устройство по п.15, дополнительно содержащее:

модуль предсказания, который выбирает режим предсказания видеоблока из набора режимов предсказания, который включает в себя однонаправленные режимы предсказания и многонаправленные режимы предсказания, которые объединяют по меньшей мере два однонаправленных режима предсказания,

где модуль преобразования выбирает DCT или целочисленное преобразования для применения к видеоблоку, когда выбранным режимом предсказания является либо DC однонаправленный режим предсказания, либо многонаправленный режим предсказания, который объединяет по меньшей мере два режима предсказания, указывающие по существу в ортогональные направления.

17. Устройство по п.16, в котором набор режимов предсказания включает в себя однонаправленные режимы предсказания и поднабор возможных двунаправленных режимов предсказания, причем поднабор двунаправленных режимов предсказания включает в себя по меньшей мере одну комбинацию, включающую в себя каждый из однонаправленных режимов предсказания.

18. Устройство по п.13, в котором выбранное преобразование является отделимым преобразованием и видеоблок содержит первый видеоблок, причем устройство дополнительно содержит модуль сканирования, который:

сканирует остаточные коэффициенты преобразования первого видеоблока с использованием порядка сканирования коэффициентов,

собирает статистические данные, связанные по меньшей мере с частью коэффициентов;

настраивает порядок сканирования коэффициентов в соответствии с собранными статистическими данными; и

сканирует коэффициенты по меньшей мере одного последующего видеоблока с использованием настроенного порядка сканирования коэффициентов, когда в блоке кодирования первого видеоблока существует по меньшей мере один последующий видеоблок.

19. Устройство по п.18, в котором модуль сканирования:

поддерживает отсчитанное значение, соответствующее каждой позиции в упомянутой части двумерного представления коэффициентов, которое отслеживает количество попаданий ненулевых коэффициентов на каждую из позиций в упомянутой части двумерного представления коэффициентов; и

настраивает порядок сканирования коэффициентов, что содержит настройку порядка сканирования коэффициентов для создания настроенного порядка сканирования коэффициентов, при котором позиции коэффициентов сканируются в убывающем порядке на основе отсчитанных значений позиций коэффициентов.

20. Устройство по п.19, в котором модуль сканирования нормализует собранные статистические данные, когда одно из отсчитанных значений достигает порогового отсчитанного значения где нормализация собранных статистических данных содержит одно из сокращения каждого из отсчитанных значений на некоторый множитель и восстановления отсчитанных значений согласно набору начальных отсчитанных значений.

21. Устройство по п.18, в котором:

модуль предсказания выбирает режим предсказания видеоблока из множества режимов предсказаний, и

модуль сканирования собирает статистические данные и настраивает порядок сканирования коэффициентов отдельно для каждого из множества режимов предсказания.

22. Устройство по п.18, в котором первый видеоблок и по меньшей мере один последующий видеоблок принадлежат первому блоку кодирования, и модуль сканирования выполняет повторную инициализацию порядка сканирования для второго блока кодирования.

23. Устройство по п.13, в котором преобразования представляют собой преобразования для использования их при преобразовании остаточных пиксельных значений видеоблока в остаточные коэффициенты преобразования, и дополнительно в котором:

модуль преобразования применяет выбранное преобразование к видеоблоку для преобразования остаточных пиксельных значений видеоблока в остаточные коэффициенты преобразования; и

модуль энтропийного кодирования выполняет энтропийное кодирование остаточных коэффициентов преобразования видеоблока после применения выбранного преобразования.

24. Устройство по п.13, в котором преобразования являются обратными преобразованиями для их использования при преобразовании остаточных коэффициентов преобразования в остаточные пиксельные значения видеоблока, и дополнительно в котором:

модуль преобразования применяет выбранное обратное преобразование к видеоблоку для преобразования остаточных коэффициентов преобразования в остаточные пиксельные значения видеоблока; и

модуль энтропийного кодирования выполняет энтропийное декодирование остаточных коэффициентов преобразования видеоблока до применения выбранного преобразования.

25. Устройство по п.13, в котором устройство является устройством беспроводной связи.

26. Устройство по п.13, в котором по меньшей мере один из модуля преобразования или модуля кодирования устройства является устройством на интегральной схеме.

27. Считываемый компьютером носитель, на котором сохранены команды, которые при их выполнении в устройстве видеокодирования заставляют устройство кодировать видеоблоки, причем указанные команды заставляют устройство:

сохранять множество преобразований для использования при преобразовании остаточных пиксельных значений видеоблока, связанных с режимами предсказания или остаточных коэффициентов преобразования видеоблока, связанных с режимами предсказания к остаточным коэффициентам преобразования видеоблока или остаточным пиксельным значениям видеоблока, соответственно, где каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, и по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями;

выбирать одно из множества преобразований для видеоблока на основе по меньшей мере частично на направленности режима предсказания, связанного с видеоблоком;

применять выбранное преобразование к видеоблоку для преобразования остаточных пиксельных значений видеоблока к остаточным коэффициентам преобразования видеоблока; и выполнять энтропийное кодирование остаточных коэффициентов преобразования видеоблока.

28. Считываемый компьютером носитель по п.27, в котором каждое отделимое направленное преобразование включает в себя матрицу преобразования столбцов размером N×N и матрицу преобразования строк размером N×N, где N×N размерность видеоблока.

29. Считываемый компьютером носитель по п.27, в котором множество преобразований дополнительно включает в себя дискретное косинусное преобразование (DCT) или целочисленное преобразование, и команды заставляют устройство: выбирать дискретное косинусное преобразование (DCT) или целочисленное преобразование для применения к видеоблоку, когда выбранный режим предсказания отличается ограниченной направленностью; и выбирать одно из множества отделимых направленных преобразований для применения к видеоблоку, когда выбранный режим предсказания проявляет направленность.

30. Считываемый компьютером носитель по п.29, в котором команды заставляют устройство:

выбирать режим предсказания видеоблока из набора режимов предсказания, который включает в себя однонаправленные режимы предсказания и многонаправленные режимы предсказания, которые объединяют по меньшей мере два однонаправленных режима предсказания,

выбирать DCT или целочисленное преобразование для применения к видеоблоку, когда выбранным режимом предсказания является либо DC однонаправленный режим предсказания, либо многонаправленный режим предсказания, который объединяет по меньшей мере два режима предсказания, указывающие, по существу, ортогональные направления.

31. Считываемый компьютером носитель по п.27, в котором выбранное преобразование является отделимым преобразованием, а видеоблок содержит первый видеоблок, и команды заставляют устройство:

сканировать остаточные коэффициенты преобразования первого видеоблока с использованием порядка сканирования коэффициентов;

собирать статистические данные, связанные по меньшей мере с частью коэффициентов;

настраивать порядок сканирования коэффициентов в соответствии с собранными статистическими данными; и

сканировать коэффициенты по меньшей мере одного последующего видеоблока с использованием настроенного порядка сканирования коэффициентов, когда в блоке кодирования первого видеоблока существует по меньшей мере один последующий видеоблок.

32. Считываемый компьютером носитель по п.31, в котором команды заставляют устройство:

поддерживать отсчитанное значение, соответствующее каждой позиции в упомянутой части двумерного представления коэффициентов, которое отслеживает количество попаданий ненулевых коэффициентов на каждую из позиций в упомянутой части двумерного представления коэффициентов; и

настраивать порядок сканирования коэффициентов, что содержит настройку порядка сканирования коэффициентов для создания настроенного порядка сканирования коэффициентов, при котором позиции коэффициентов сканируются в убывающем порядке на основе отсчитанных значений позиций коэффициентов.

33. Считываемый компьютером носитель по п.32, в котором команды заставляют устройство нормализовать собранные статистические данные, когда одно из отсчитанных значений достигает порогового отсчитанного значения, где нормализация собранных статистических данных содержит одно из сокращения каждого из отсчитанных значений на некоторый множитель и восстановления отсчитанных значений согласно набору начальных отсчитанных значений.

34. Считываемый компьютером носитель по п.31, в котором команды заставляют устройство собирать статистические данные и настраивать порядок сканирования коэффициентов отдельно для каждого из множества режимов предсказания.

35. Считываемый компьютером носитель по п.31, в котором первый видеоблок и по меньшей мере один последующий видеоблок принадлежат первому блоку кодирования, и команды заставляют устройство выполнять повторную инициализацию порядка сканирования для второго блока кодирования.

36. Считываемый компьютером носитель по п.27, в котором преобразования являются преобразованиями для использования их при преобразовании остаточных пиксельных значений видеоблока в остаточные коэффициенты преобразования, и дополнительно в котором команды заставляют устройство:

применять выбранное преобразование к видеоблоку для преобразования остаточных пиксельных значений видеоблока в остаточные коэффициенты преобразования; и

выполнять энтропийное кодирование остаточных коэффициентов преобразования видеоблока после применения выбранного преобразования.

37. Считываемый компьютером носитель по п.27, в котором преобразования являются обратными преобразованиями для их использования при преобразовании остаточных коэффициентов преобразования в остаточные пиксельные значения видеоблока, и дополнительно в котором команды заставляют устройство:

применять выбранное обратное преобразование к видеоблоку для преобразования остаточных коэффициентов преобразования в остаточные пиксельные значения видеоблока; и

выполнять энтропийное декодирование остаточных коэффициентов преобразования видеоблока до применения выбранного преобразования.

38. Устройство кодирования видеоданных, причем устройство содержит:

средство сохранения множества преобразований для использования при преобразовании между остаточными пиксельными значениями видеоблока связанного с режимами предсказания или остаточных коэффициентов преобразования видеоблока, связанного с режимами предсказания к остаточным коэффициентам преобразования видоблока или остаточным пиксельным значениям видеоблока, соответственно, где каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, и по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями; средство выбора одного из множества преобразований для видеоблока на основе по меньшей мере частично на направленности режима предсказания видеоблока; средство применения выбранного преобразования к видеоблоку для преобразования остаточных пиксельных значений видеоблока к остаточным коэффициентам преобразования видеоблока; и средство энтропийного кодирования остаточных коэффициентов преобразования видеоблока.

39. Устройство по п.38, в котором каждое отделимое направленное преобразование включает в себя матрицу преобразования столбцов размером N×N и матрицу преобразования строк размером N×N, где N×N размерность видеоблока.

40. Устройство по п.38, в котором множество преобразований дополнительно включает в себя дискретное косинусное преобразование (DCT) или целочисленное преобразование, и средство выбора преобразования выбирает дискретное косинусное преобразование (DCT) или целочисленное преобразование для применения к видеоблоку, когда выбранный режим предсказания проявляет ограниченную направленность, и выбирает одно из множества отделимых направленных преобразований для применения к видеоблоку, когда выбранный режим предсказания проявляет направленность.

41. Устройство по п.40, дополнительно содержащее:

средство выбора режима предсказания видеоблока из набора режимов предсказания, который включает в себя однонаправленные режимы предсказания и многонаправленные режимы предсказания, которые объединяют по меньшей мере два однонаправленных режима предсказания,

причем средство выбора преобразования выбирает DCT или целочисленное преобразование для применения к видеоблоку, когда выбранным режимом предсказания является либо DC однонаправленный режим предсказания, либо многонаправленный режим предсказания, который объединяет по меньшей мере два режима предсказания, указывающие, по существу, ортогональные направления.

42. Устройство по п.41, в котором набор режимов предсказания включает в себя однонаправленные режимы предсказания и поднабор возможных двунаправленных режимов предсказания, причем поднабор двунаправленных режимов предсказания включает в себя по меньшей мере одну комбинацию, включающую в себя каждый из однонаправленных режимов предсказания.

43. Устройство по п.38, в котором выбранное преобразование является отделимым преобразованием, и видеоблок содержит первый видеоблок, причем устройство дополнительно содержит:

средство сканирования остаточных коэффициентов преобразования первого видеоблока с использованием порядка сканирования коэффициентов;

средство сбора статистических данных, связанных по меньшей мере с частью коэффициентов;

средство настройки порядка сканирования коэффициентов в соответствии с собранными статистическими данными,

причем средство сканирования коэффициентов сканирует коэффициенты по меньшей мере одного последующего видеоблока с использованием настроенного порядка сканирования коэффициентов, когда в блоке кодирования первого видеоблока существует по меньшей мере один последующий видеоблок.

44. Устройство по п.43, в котором:

средство сбора статистических данных поддерживает отсчитанное значение, соответствующее каждой позиции в упомянутой части двумерного представления коэффициентов, которое отслеживает количество попаданий ненулевых коэффициентов на каждую из позиций в упомянутой части двумерного представления коэффициентов; и

средство настройки настраивает порядок сканирования коэффициентов для создания настроенного порядка сканирования коэффициентов, при котором позиции коэффициентов сканируют в убывающем порядке на основе отсчитанных значений позиций коэффициентов.

45. Устройство по п.44, дополнительно содержащее средство нормализации собранных статистических данных, когда одно из отсчитанных значений достигает порогового отсчитанного значения, причем средство нормализации нормализует собранные статистические данных, выполняя одно из сокращения каждого из отсчитанных значений на некоторый множитель и восстановления отсчитанных значений согласно набору начальных отсчитанных значений.

46. Устройство по п.43, дополнительно содержащее средство выбора режима предсказания видеоблока из множества режимов предсказаний, причем средство сбора статистических данных и средство настройки собирают статистические данные и настраивают порядок сканирования коэффициентов отдельно для каждого из множества режимов предсказания.

47. Устройство по п.43, в котором первый видеоблок и по меньшей мере один последующий видеоблок принадлежат первому блоку кодирования, и средство настройки выполняет повторную инициализацию порядка сканирования для второго блока кодирования.

48. Устройство по п.38, в котором преобразования представляют собой преобразования для использования при преобразовании остаточных пиксельных значений видеоблока в остаточные коэффициенты преобразования, и дополнительно в котором:

средство применения применяет выбранное преобразование к видеоблоку для преобразования остаточных пиксельных значений видеоблока в остаточные коэффициенты преобразования; и

средство энтропийного кодирования выполняет энтропийное кодирование остаточных коэффициентов преобразования видеоблока после применения выбранного преобразования.

49. Устройство по п.38, в котором преобразования являются обратными преобразованиями для их использования при преобразовании остаточных коэффициентов преобразования в остаточные пиксельные значения видеоблока, и дополнительно в котором:

средство применения применяет выбранное обратное преобразование к видеоблоку для преобразования остаточных коэффициентов преобразования в остаточные пиксельные значения видеоблока; и

средство энтропийного кодирования выполняет энтропийное декодирование остаточных коэффициентов преобразования видеоблока до применения выбранного преобразования.

Описание изобретения к патенту

Перекрестные ссылки на родственные заявки

Данная заявка испрашивает приоритет предварительной заявки США № 60/944470, поданной 15 июня 2007 года, и предварительной патентной заявки США № 60/979762, поданной 12 октября 2007 года, содержание которых целиком включено в настоящий документ по ссылке.

Область техники, к которой относится изобретение

Последующее описание относится к цифровому видеокодированию и, в частности, касается энтропийного кодирования коэффициентов видеоблоков.

Уровень техники

Услуги цифрового видео могут быть включены в самые различные устройства, в том числе цифровые телевизионные приемники, цифровые системы прямого вещания, устройства беспроводной связи, такие как карманные радиотелефоны, беспроводные вещательные системы, персональные цифровые помощники (PDA), настольные компьютеры или «лэптопы», цифровые камеры, цифровые записывающие устройства, видеоигровые устройства, видеоигровые приставки и т.п. Устройства цифрового видео реализуют технологии видеосжатия, такие как MPEG-2, MPEG-4 или H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), для более эффективной передачи и приема цифровых видеоданных. Технологии сжатия видеоданных осуществляют пространственное и временное предсказание для уменьшения или устранения избыточности, присущей последовательностям видеоданных.

Сжатие видеоданных в общем случае включает в себя пространственное предсказание и/или временное предсказание. В частности, внутреннее кодирование базируется на пространственном предсказании, обеспечивающем уменьшение или устранение пространственной избыточности между видеоблоками в данном закодированном блоке, который может содержать видеокадр, серия последовательных макроблоков видеокадра или т.п. В отличие от этого внешнее кодирование базируется на временном предсказании, обеспечивающем уменьшение или устранение временной избыточности между видеоблоками последовательно закодированных блоков видеопоследовательности. При внутреннем кодировании видеокодер выполняет пространственное предсказание для сжатия данных на основе других данных в том же закодированном блоке. При внешнем кодировании видеокодер выполняет оценку движения и компенсацию движения для отслеживания перемещения соответствующих видеоблоков из двух или более соседних закодированных блоков.

После пространственного или временного предсказания создают остаточный блок путем вычитания видеоблока предсказания, созданного во время процесса предсказания, из исходного, кодируемого в данный момент видеоблока. Таким образом, остаточный блок указывает различие между предсказанным блоком и текущим кодируемым блоком. Видеокодер может использовать процессы преобразования, квантования и энтропийного кодирования для дополнительного уменьшения скорости передачи битов, связанной с передачей остаточного блока. Способы преобразования позволяют преобразовать набор пиксельных значений в коэффициенты преобразования, которые представляют энергию пиксельных значений в частотной области. Коэффициенты преобразования подвергают квантованию, которое в общем случае включает в себя процесс, ограничивающий количество бит, связанных с любым данным коэффициентом. Перед энтропийным кодированием видеокодер сканирует квантованный блок коэффициентов, преобразуя его в одномерный вектор коэффициентов. Видеокодер выполняет энтропийное кодирование вектора квантованных коэффициентов преобразования для дополнительного сжатия остаточных данных.

Видеодекодер может выполнять операции, обратные энтропийному кодированию, для извлечения указанных коэффициентов. В видеодекодере также может выполняться обратное сканирование для формирования двумерных блоков из полученных одномерных векторов коэффициентов. Затем видеодекодер выполняет обратное квантование и обратное преобразование коэффициентов для получения восстановленного остаточного блока. Далее видеодекодер декодирует видеоблок предсказания на основе информации о предсказании и информации о движении. Затем видеодекодер добавляет видеоблок предсказания к соответствующему остаточному блоку для создания восстановленного видеоблока и создания декодированной последовательности видеоданных.

Сущность изобретения

В изобретении описаны способы преобразования остаточных пиксельных значений (иногда называемых остаточными блоками) видеоблоков. В частности, поддерживается множество различных преобразований, которые избирательно применяют к остаточным блокам на основе режима предсказания видеоблоков. Направленные преобразования могут, например, быть специально подготовлены для каждого режима предсказания, чтобы обеспечить более эффективное уплотнение энергии для остаточных блоков данного режима предсказания. Согласно настоящему изобретению по меньшей мере часть множества направленных преобразований составляют отделимые направленные преобразования. Каждое из отделимых направленных преобразований может включать в себя матрицу преобразования строк и матрицу преобразования столбцов. Матрицы преобразования строк и столбцов могут иметь такую же размерность, как остаточный блок, для которого используется каждая из матриц преобразования. В случае блока размером 4 на 4 пикселя матрицы строк и столбцов имеют размерность 4×4. Использование отделимых направленных преобразований дает преимущество с точки зрения возможности упрощения вычислений и снижения требований к памяти, по сравнению с использованием неотделимых направленных преобразований.

Однако отделимые направленные преобразования могут не фиксировать направленность в остаточных блоках, также как при использовании неотделимых направленных преобразований. Таким образом, созданные блоки остаточных коэффициентов преобразования могут сохранять некоторую направленность. Раз так, то применение фиксированного порядка сканирования для сканирования двухмерного представления остаточных коэффициентов преобразования в одномерный вектор коэффициентов не сможет эффективно скомпоновать ненулевые коэффициенты в направлении начала вектора коэффициентов. Согласно другому аспекту данного изобретения может быть перестроен порядок сканирования на основе статистических данных о коэффициентах видеоблоков, закодированных ранее, с использованием того же самого режима предсказания для более эффективной компоновки ненулевых коэффициентов блока коэффициентов в направлении начала одномерного вектора коэффициентов.

Согласно одному аспекту способ кодирования видеоданных содержит сохранение множества преобразований для их использования при преобразовании между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, причем по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями. Способ также включает в себя выбор одного из множества преобразований для видеоблока на основе режима преобразования видеоблока и применение выбранного преобразования к видеоблоку для преобразования между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Способ дополнительно включает в себя энтропийное кодирование остаточных коэффициентов преобразования видеоблока.

Согласно другому аспекту устройство, кодирующее видеоданные, содержит блок преобразования, который сохраняет множество преобразований для их использования при преобразовании между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока, выбирает одно из множества преобразований для видеоблока на основе режима предсказания видеоблока и применяет выбранное преобразование к видеоблоку для преобразования между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, причем по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями. Устройство также включает в себя блок энтропийного кодирования, который выполняет энтропийное кодирование остаточных коэффициентов преобразования видеоблока.

Согласно еще одному аспекту считываемый компьютером носитель содержит команды, которые при их выполнении в устройстве видеокодирования, заставляют устройство кодировать видеоблоки. Эти команды заставляют устройство сохранять множество преобразований для их использования при преобразовании между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока, выбирать одно из множества преобразований для видеоблока на основе режима предсказания видеоблока и применять выбранное преобразование к видеоблоку для преобразования между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, причем по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями. Эти команды, кроме того, заставляют устройство выполнять энтропийное кодирование остаточных коэффициентов преобразования видеоблока.

Согласно другому аспекту устройство, кодирующее видеоданные, содержит средство сохранения множества преобразований для использования при преобразовании между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Каждое из множества преобразований связано по меньшей мере с одним режимом предсказания, причем по меньшей мере часть множества преобразований являются отделимыми направленными преобразованиями. Устройство дополнительно содержит средство выбора одного из множества преобразований для видеоблока на основе режима предсказания видеоблока и средство применения выбранного преобразования к видеоблоку для преобразования между остаточными пиксельными значениями видеоблока и остаточными коэффициентами преобразования видеоблока. Устройство также включает в себя средство энтропийного кодирования остаточных коэффициентов преобразования видеоблока.

Способы, описанные в этом изобретении, можно реализовать аппаратными средствами, программными средствами, программно-аппаратными средствами или любой их комбинацией. При реализации программными средствами программное обеспечение может выполняться в процессоре, который может обращаться к одному или нескольким процессорам, таким как микропроцессор, прикладная специализированная интегральная схема (ASIC), вентильная матрица, программируемая пользователем (FPGA), или цифровой процессор сигналов (DSP), либо иные эквивалентные интегральные или дискретные логические схемы. Программное обеспечение, содержащее команды для исполнения указанных способов, может изначально храниться на считываемом компьютером носителе и загружаться и выполняться процессором.

Соответственно, настоящее изобретение также предполагает использование считываемых компьютером носителей, содержащих команды, заставляющие процессор выполнять любой из множества различных способов, раскрытых в описании изобретения. В некоторых случаях считываемый компьютером носитель может составлять часть компьютерного программного продукта, который может продаваться изготовителем и/или использоваться в устройстве. Компьютерный программный продукт может включать в себя считываемый компьютером носитель, а в некоторых случаях может также включать в себя упаковочные материалы.

Подробности одного или нескольких аспектов изобретения представлены на сопроводительных чертежах и в приведенном ниже описании. Другие признаки, цели и преимущества описанных здесь способов станут очевидными из описания, чертежей, а также из формулы изобретения.

Краткое описание чертежей

Фиг. 1 - блок-схема, иллюстрирующая систему видеокодирования и видеодекодирования, которая реализует раскрытые здесь способы кодирования;

фиг. 2 - блок-схема, иллюстрирующая пример видеокодера по фиг. 1, с дополнительными подробностями;

фиг. 3 - блок-схема, иллюстрирующая пример видеодекодера по фиг. 1, с дополнительными подробностями;

фиг. 4 - концептуальная схема, иллюстрирующая гипотетический пример настройки порядка сканирования, согласованного с данным изобретением;

фиг. 5 - блок-схема, иллюстрирующая примерное функционирование устройства кодирования, сконфигурированного для адаптивной настройки порядка сканирования коэффициентов преобразования;

фиг. 6 - блок-схема, иллюстрирующая примерное функционирование блока кодирования, сконфигурированного для кодирования информации о заголовке для видеоблока;

фиг. 7 - блок-схема, иллюстрирующая примерный выбор контекста кодирования для кодирования и декодирования информации;

фиг. 8 - блок-схема, иллюстрирующая примерное функционирование блока декодирования, сконфигурированного для декодирования информации о заголовке видеоблока.

Подробное описание

На фиг. 1 представлена блок-схема, иллюстрирующая систему 10 видеокодирования и видеодекодирования, которая реализует способы кодирования, раскрытые в этом описании. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое передает кодированные видеоданные на устройство-адресат 14 через канал 16 связи. Устройство-источник 12 создает кодированные видеоданные для передачи на устройство-адресат 14. Устройство-источник 12 может включать в себя источник 18 видео, видеокодер 20 и передатчик 22. Источник 18 видео в устройстве-источнике 12 может включать в себя устройство фиксации видео, такое как видеокамера, архив видео, содержащий ранее зафиксированное видео, или видео, предоставленное поставщиком видеоконтента. В качестве дополнительной альтернативы источник 18 видео может создавать данные на основе компьютерной графики в качестве исходного видео или комбинацию живого видео и видео, созданного компьютером. В некоторых случаях устройство-источник 12 может представлять собой так называемый «камерафон» или «видеофон», и тогда источником 18 видео может быть видеокамера. В любом случае только что зафиксированное, предварительно зафиксированное или созданное компьютером видео может кодироваться видеокодером 20 для передачи от устройства-источника 12 на устройство-адресат 14 через передатчик 22 и канал 16 связи.

Видеокодер 20 получает видеоданные от источника 18 видео. Видеоданные, полученные от источника 18 видео, могут представлять собой последовательность видеокадров. Видеокодер 20 разбивает последовательность кадров на блоки кодирования и обрабатывает эти блоки кодирования для кодирования последовательности видеокадров. Блоками кодирования могут быть, например, целые кадры или части кадров (то есть, серии последовательных макроблоков). Таким образом, в некоторых случаях кадры могут быть разделены на серии последовательных макроблоков. Видеокодер 20 делит каждый блок кодирования на блоки пикселей (называемые здесь видеоблоки или блоки) и работает с видеоблоками в отдельных блоках кодирования, чтобы закодировать видеоданные. Блок кодирования (например, кадр или серия последовательных макроблоков), как таковая, может содержать множество видеоблоков. Другими словами, видеопоследовательность может включать в себя множество кадров, кадр может включать в себя множество серий последовательных макроблоков, а серия последовательных макроблоков может включать в себя множество видеоблоков.

Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться по размеру в соответствии с определенным стандартом кодирования. Например, стандарт H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), разработанный Сектором стандартизации Международного союза электросвязи (ITU-T) (далее этот стандарт обозначен как «H.264/MPEG-4 Part 10 AVC») поддерживает внутреннее предсказание для различных размеров блока, таких как 16×16, 8×8 или 4×4 для компонент яркости и 8×8 для компонент цветности, а также внешнее предсказание для различных размеров блоков, таких как 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для компонент яркости и соответствующих масштабированных размеров для компонент цветности. В стандарте H.264, например, каждый видеоблок размером 16 на 16 пикселей, часто называемый макроблоком (MB), может быть подразделен на подблоки меньших размеров, и предсказание может выполняться в подблоках. В общем случае макроблоки (MB) и различные подблоки могут рассматриваться как видеоблоки. Таким образом, макроблоки (MB) могут считываться видеоблоками, а если они разбиты на более мелкие части или подблоки, то они сами могут рассматриваться как наборы видеоблоков.

Для каждого видеоблока видеокодер 20 выбирает тип блока. Тип блока может указывать, какой вид предсказания (внутреннее или внешнее) осуществляется, а также размер разбиения блока. Например, стандарт H.264/MPEG-4 Part 10 AVC поддерживает несколько типов блоков с внешним (Inter) и внутренним (Intra) предсказанием, в том числе Inter 16×16, Inter 16×8, Inter 8×16, Inter 8×8, Inter 8×4, Inter 4×8, Inter 4×4, Intra 16×16, Intra 8×8, и Intra 4×4. Как подробно описано ниже, видеокодер 20 для каждого из видеоблоков может выбрать один из указанных типов блок.

Видеокодер 20 также выбирает режим предсказания для каждого видеоблока. В случае видеоблока с внутренним кодированием режим предсказания может определить, каким образом выполняется предсказание для текущего видеоблока с использованием одного или нескольких ранее закодированных видеоблоков. В стандарте H.264/MPEG-4 Part 10 AVC, например, видеокодер 20 может выбрать один из девяти возможных режимов однонаправленного предсказания для каждого блока Intra 4×4: режим вертикального предсказания, режим горизонтального предсказания, режим DC предсказания, режим диагонального (вниз/влево) предсказания, режим диагонального (вниз/вправо) предсказания, режим вертикального (вправо) предсказания, режим горизонтального (вниз) предсказания, режим вертикального (влево) предсказания и режим горизонтального (вверх) предсказания. Аналогичные режимы предсказания используют для предсказания каждого блока Intra 8×8. Для блока Intra 16×16 видеокодер 20 может выбрать один из четырех возможных однонаправленных режимов: режим вертикального предсказания, режим горизонтального предсказания, режим DC предсказания и режим плоскостного предсказания. В некоторых случаях видеокодер 20 может выбрать режим предсказания из набора режимов предсказания, который включает в себя не только режимы однонаправленного предсказания, но также один или несколько режимов многонаправленного предсказания, которые определяют комбинации однонаправленных режимов. Например, один или несколько однонаправленных режимов предсказания могут представлять собой двунаправленные режимы предсказания, которые объединяют два однонаправленных режима предсказания, подробно описанных ниже.

После выбора режима предсказания для видеоблока видеокодер 20 создает предсказанный видеоблок, используя выбранный режим предсказания. Предсказанный видеоблок вычитают из исходного видеоблока для формирования остаточного блока. Остаточный блок включает в себя набор пиксельных значений разностей, которые количественно характеризуют разности между пиксельными значениями исходного видеоблока и пиксельными значениями предсказанного блока. Остаточный блок может быть представлен в двумерном блочном формате (например, двумерная матрица или массив пиксельных значений разностей).

После создания остаточного блока видеокодер 20 может выполнить ряд других операций на остаточном блоке перед его кодированием. Видеокодер 20 может применить к остаточному блоку пиксельных значений некоторое преобразование, такое как целочисленное преобразование, дискретное косинусное преобразование (DCT), направленное преобразование или волновое преобразование, для создания блока коэффициентов преобразования. Таким образом, видеокодер 20 преобразует остаточные пиксельные значения в коэффициенты преобразования (которые также называют остаточными коэффициентами преобразования). Остаточные коэффициенты преобразования можно также называть блоком преобразования или блоком коэффициентов. Блок преобразования или блок коэффициентов может иметь одномерное представление коэффициентов, когда применяются неотделимые преобразования, или двумерное представление коэффициентов при применении отделимых преобразований. Неотделимые преобразования могут включать в себя неотделимые направленные преобразования. Отделимые преобразования могут включать в себя отделимые направленные преобразования, DCT преобразования, целочисленные преобразования и волновые преобразования.

Вслед за преобразованием видеокодер 20 осуществляет квантование для создания квантованных коэффициентов преобразования (которые также называют квантованными коэффициентами или квантованными остаточными коэффициентами). Квантованные коэффициенты опять же можно представить в формате одномерного вектора или в формате двумерного блока. Квантование обычно относится к процессу, в котором коэффициенты квантуют с целью возможного уменьшения объема данных, используемых для представления этих коэффициентов. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми коэффициентами. Используемый здесь термин «коэффициенты» может представлять коэффициенты преобразования, квантованные коэффициенты или коэффициенты другого типа. В некоторых случаях раскрытые здесь способы можно применить к остаточным пиксельным значениям, а также коэффициентам преобразования и квантованным коэффициентам преобразования. Однако в иллюстративных целях раскрытые здесь способы описываются в контексте квантованных коэффициентов преобразования.

При использовании отделимых преобразований и представлении блоков коэффициентов в формате двумерного блока видеокодер 20 сканирует коэффициенты из двумерного формата в одномерный формат. Другими словами, видеокодер 20 может сканировать коэффициенты из двумерного блока для представления коэффициентов в последовательном виде как одномерного вектора коэффициентов. Согласно одному из аспектов изобретения видеокодер 20 может перестроить порядок сканирования, используемый для преобразования блока коэффициентов в одномерный формат, на основе собранных статистических данных. Эти статистические данные могут содержать указание о вероятности того, что данное значение коэффициента в каждой позиции двумерного блока равно или не равно нулю, и может, например, содержать итоговый результат отсчета, вероятность или иной статистический показатель, связанный с каждой из позиций коэффициентов в двумерном блоке. В некоторых случаях статистические данные можно собрать только для поднабора позиций коэффициентов в блоке. При оценке порядка сканирования, например, после конкретного количества блоков, порядок сканирования можно изменить, с тем чтобы позиции коэффициентов в блоке, определенные как имеющие более высокую вероятность наличия ненулевых коэффициентов, сканировались прежде, чем позиции коэффициентов в блоке, определенные как имеющие более низкую вероятность наличия ненулевых коэффициентов. Таким путем начальный порядок сканирования можно адаптировать для более эффективной группировки ненулевых коэффициентов у начала одномерного вектора коэффициентов и группировки нулевых коэффициентов в конце одномерного вектора коэффициентов. Это, в свою очередь, может уменьшить количество бит, затрачиваемых на энтропийное кодирование, поскольку имеют место более короткие серии нулей между ненулевым коэффициентами в начале одномерного вектора коэффициентов и одна более длинная серия нулей в конце одномерного вектора коэффициентов.

После сканирования коэффициентов видеокодер 20 кодирует каждый видеоблок из блока кодирования, используя любую из множества различных методик энтропийного кодирования, таких как контекстное адаптивное кодирование с переменной длиной слова (CAVLC), контекстное адаптивное двоичное арифметическое кодирование (CABAC), неравномерное кодирование или т.п. Устройство-источник 12 передает кодированные видеоданные на устройство-адресат 14 через передатчик 22 и канал 16. Канал 16 связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр или одну или несколько физических линий передачи, либо любую комбинацию беспроводных и проводных сред. Канал 16 связи может составлять часть сети связи на основе пакетов, такой как локальная сеть, сеть широкого охвата или глобальная сеть, например Интернет. Канал 16 связи в общем случае представляет подходящую среду связи или набор различных сред связи для передачи кодированных видеоданных от устройства-источника 12 на устройство-адресат 14.

Устройство-адресат 14 может включать в себя приемник 24, видеодекодер 26 и устройство 28 отображения. Приемник 24 принимает от устройства-источника 12 кодированный битовый видеопоток через канал 16. Видеодекодер 26 применяет энтропийное декодирование для декодирования кодированного битового видеопотока для получения информации о заголовке и квантованных остаточных коэффициентов кодированных видеоблоков кодированного блока. Как было описано выше, квантованные остаточные коэффициенты, закодированные устройством-источником 12, закодированы в виде одномерного вектора. Таким образом, видеодекодер 26 сканирует квантованные остаточные коэффициенты кодированных видеоблоков для преобразования одномерного вектора коэффициентов в двумерный блок квантованных остаточных коэффициентов. Подобно видеокодеру 20, видеодекодер 26 может собирать статистические данные, которые указывают вероятность того, что данная позиция коэффициента в видеоблоке является нулевой или ненулевой, и перестраивать на этой основе порядок сканирования таким же образом, как это делается в процессе кодирования. Соответственно, видеодекодер 26 может применить варианты обратного адаптивного порядка сканирования для преобразования одномерного векторного представления представленных в последовательной форме квантованных коэффициентов преобразования обратно в двумерные блоки квантованных коэффициентов преобразования.

Видеодекодер 26 восстанавливает каждый блок кодирования, используя декодированную информацию о заголовке и декодированную остаточную информацию. В частности, видеодекодер 26 может создать видеоблок предсказания для текущего видеоблока и объединить блок предсказания с соответствующим остаточным видеоблоком для восстановления каждого из видеоблоков. Устройство-адресат 14 может отобразить восстановленные видеоблоки пользователю через устройство 28 отображения. Устройство 28 отображения может содержать любое из различных устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на светоизлучающих диодах (LED), дисплей на органических LED или блок отображения иного типа.

В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут работать фактически симметричным образом. Например, устройство-источник 12 и устройство-адресат 14 могут каждое включать в себя компоненты видеокодирования и видеодекодирования. Следовательно, система 10 может поддерживать однонаправленную или двунаправленную передачу видео между устройствами 12, 14, например, для потокового видео, широковещательной передачи видео или видеотелефонии. Устройство, которое включает в себя компоненты видеокодирования и видеодекодирования, может также составлять часть общего устройства кодирования, архивирования и воспроизведения, такого как цифровой видеомагнитофон (DVR).

Видеокодер 20 и видеодекодер 26 могут функционировать согласно любому из различных стандартов сжатия видео, например стандартов, определенных Экспертной группой по вопросам движущегося изображения (MPEG), а именно MPEG-1, MPEG-2 и MPEG-4, ITU-T H.263; стандарт 421М videoCODEC (известный как «VC-1»), разработанный Обществом кино- и телеинженеров США (SMPTE); стандарт, разработанный Рабочей группой стандартов аудио/видео кодирования Китая (известный как «AVS»), а также любой другой стандарт видеокодирования, определенный или разработанный органом стандартизации в качестве фирменного стандарта. Хотя это на фиг. 1 не показано, согласно некоторым аспектам как видеокодер 20, так и видеодекодер 26 может быть интегрирован соответственно с аудиодекодером и аудиокодером, и включать в себя соответствующие блоки мультиплексирования-демультиплексирования (MUX-DEMUX) или иные аппаратные и программные средства для обработки кодирования как аудиоданных, так и видеоданных в общем потоке данных или в отдельных потоках данных. Таким образом, устройство-источник 12 и устройство-адресат 14 могут работать с мультимедийными данными. При применении блоков MUX-DEMUX они могут функционировать согласно протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол передачи дейтаграмм пользователя (UDP).

Согласно некоторым аспектам при широковещательной передаче видео способы, раскрытые в этом описании, можно применить к усовершенствованному видеокодированию в стандарте H.264 для предоставления услуг передачи видео в реальном времени в наземных мобильных мультимедийных системах многоадресной передачи (TM3), использующих спецификацию радиоинтерфейса только линии связи «Земля - ретранслятор» (FLO), «Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast», опубликованной в июле 2007 года в виде технического стандарта TIA-1099 («FLO Specification»). То есть канал связи 16 может содержать беспроводной информационный канал, используемый для широковещательной беспроводной передачи видеоинформации согласно спецификации FLO или т.п. Спецификация FLO включает в себя примеры, определяющие синтаксис и семантику битового потока и процессы декодирования для радиоинтерфейса FLO.

В альтернативном варианте широковещательная передача видео может обеспечиваться согласно другим стандартам, таким как DVB-H (Стандарт цифрового широковещания на карманные компьютеры), ISDB-T (Стандарт комплексной службы цифрового наземного широковещания) или DMB (Стандарт цифрового медийного широковещания). Таким образом, устройство-источник 12 может представлять собой мобильный беспроводной терминал, сервер потокового видео или сервер широковещательной передачи видео. Однако способы, раскрытые в этом описании, не ограничиваются каким-либо конкретным типом системы широковещательной передачи, многоадресной передачи или передачи от точки к точке. В случае широковещательной передачи устройство-источник 12 может обеспечивать широковещательную передачу по нескольким каналам видеоданных на множество устройств-адресатов, каждое из которых может быть аналогичным устройству-адресату 14 по фиг. 1. Таким образом, хотя на фиг. 1 показано одно устройство-адресат 14, в приложениях, обеспечивающих широковещательную передачу видео, устройство-источник 12, как правило, выполняет широковещательную передачу видеоконтента одновременно на множество устройств-адресатов.

В других примерах передатчик 22, канал 16 связи и приемник 24 могут быть сконфигурированы для обеспечения связи в соответствии с особенностями любой проводной или беспроводной системы связи, включая одну или несколько сетей Ethernet, телефонную кабельную систему (например, POTS (традиционная служба телефонной связи)), системы связи по линиям электропередачи и волоконно-оптические системы, и/или беспроводную систему, содержащая одну или несколько систем связи с множественным доступом и кодовым разделением каналов (CDMA или CDMA2000), систему с множественным доступом и частотным разделением каналов (FDMA), систему с множественным доступом и ортогональным частотным разделением каналов, систему с множественным доступом и временным разделением каналов (TDMA), такую как GSM (глобальная система мобильной связи), систему GPRS (система пакетной радиосвязи) или EDGE (усовершенствованная среда GSM для передачи данных), систему мобильной телефонной связи TETRA (магистральная наземная связь), широкополосную систему с множественным доступом и кодовым разделением каналов (WCDMA), систему высокоскоростной передачи данных 1xEV-DO (первого поколения - только для данных) или широковещательную систему 1xEV-DO Gold, систему IEEE 802.18, систему MediaFLOTM, систему DMB, систему DVB-H или другую схему передачи данных между двумя или более устройствами.

Как видеокодер 20, так и видеодекодер 26 могут быть реализованы в виде одного или нескольких микропроцессоров, цифровых процессоров сигналов (DSP), прикладных специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), дискретной логики, программных средств, аппаратных средств, программно-аппаратных средств или любой их комбинации. Как видеокодер 20, так и видеодекодер 26, могут входить в состав одного или нескольких кодеров или декодеров, любой из которых может составлять часть объединенного кодера/декодера (CODEC) в соответствующем мобильном устройстве, абонентском устройстве, устройстве широковещания, сервере или т.п. Вдобавок, как устройство-источник 12, так и устройство-адресат 14 могут включать в себя соответствующие компоненты модуляции, демодуляции, частотного преобразования, фильтрации и усиления для передачи и приема кодированных видеоданных, если таковые имеются, в том числе компоненты и антенны для радиочастотной (RF) беспроводной связи, достаточные для поддержки беспроводной связи. Однако для упрощения иллюстрации указанные компоненты объединены на фиг. 1 в передатчик 22 устройства-источника 12 и приемник 24 устройства-адресата 14.

На фиг. 2 показана блок-схема, подробно иллюстрирующая примерный видеокодер 20 по фиг. 1. Видеокодер 20 выполняет внутреннее и внешнее кодирование блоков в видеокадрах. Внутреннее кодирование базируется на пространственном предсказании для уменьшения или устранения пространственной избыточности в видеоданных в данном блоке видеокодирования, например, в кадре или серии последовательных макроблоков. При внутреннем кодировании видеокодер 20 формирует блок пространственного предсказания на основе одного или нескольких ранее закодированных блоков в том же блоке кодирования, в которой кодируется данный блок. Внешнее кодирование основано на временном предсказании для уменьшения или устранения временной избыточности в соседних кадрах видеопоследовательности. При внешнем кодировании видеокодер 20 осуществляет оценку движения для отслеживания перемещений сходных видеоблоков между двумя или более соседними кадрами.

В примере по фиг. 2 видеокодер 20 включает в себя модуль 30 разбиения блоков, модуль 32 предсказания, хранилище 34 кадров, модуль 38 преобразования, модуль 40 квантования, модуль 41 сканирования коэффициентов, модуль 42 обратного квантования, модуль 44 обратного преобразования и модуль 46 энтропийного кодирования. Видеокодер 20 также включает в себя сумматоры 48А и 48В («сумматоры 48»). Для уменьшения или устранения артефактов, связанных с разбиением на блоки, восстановленные видеоблоки можно пропустить через фильтр, устраняющий «блочность» (не показан). Изображение различных функций на фиг. 2 в виде модулей имеет своей целью подчеркнуть различные функциональные аспекты показанных устройств и не обязательно предполагает, что указанные модули должны быть реализованы в виде отдельных аппаратных или программных компонент. Скорее наоборот, функциональные возможности, связанные с одним или несколькими модулями, могут быть объединены в виде общих или отдельных аппаратных или программных компонент.

Модуль 30 разбиения на блоки получает видеоинформацию (обозначенную на фиг. 2 как «VIDEO IN»), например, в виде последовательности видеокадров от источника 18 видео (фиг. 1). Модуль 30 разбиения на блоки разделяет каждый из видеокадров на блоков кодирования, которые включают в себя множество видеоблоков. Как было описано выше, блоки кодирования могут представлять собой целый кадр или часть кадра (например, серия последовательных макроблоков кадра). В одном случае модуль 30 разбиения на блоки может изначально разделить каждый блок кодирования на множество видеоблоков с размером разбиения 16х16 (то есть на макроблоки). Модуль 30 разбиения на блоки может дополнительно подразделить каждый видеоблок 16×16 на более мелкие блоки, такие как видеоблоки 8×8 или видеоблоки 4×4.

Видеокодер 20 выполняет внутреннее или внешнее кодирование для каждого видеоблока блоки кодирования на поблочной основе исходя из типа блока. Модуль 32 предсказания присваивает каждому видеоблоку тип блока, который может указывать выбранный размер разбиения блока, а также, какое предсказание (внутреннее или внешнее) следует использовать для данного блока. В случае внешнего предсказания модуль 32 предсказания также находит вектора движения. В случае внутреннего предсказания модуль 32 предсказания также определяет режим предсказания, используемый для создания блока предсказания.

Модуль 32 предсказания создает затем блок предсказания. Блоком предсказания может быть предсказанная версия текущего видеоблока. Текущим видеоблоком называют видеоблок, который кодируют в данный момент. В случае внешнего предсказания, например, когда блоку присвоен тип «внешний блок», модуль 32 предсказания может выполнить временное предсказание для внешнего кодирования текущего видеоблока. Модуль 32 предсказания может, например, сравнить текущий видеоблок с блоками в одном или нескольких соседних видеокадрах для идентификации блока в соседнем кадре, который ближе всех совпадает с текущим видеоблоком, например, блок в соседнем кадре, который имеет минимальную среднеквадратическую ошибку (MSE), сумму квадратов отклонений (SSD), сумму абсолютных отклонений (SAD) или иной показатель различия. Модуль 32 предсказания выбирает идентифицированный блок в соседнем кадре в качестве блока предсказания.

В случае внутреннего предсказания, то есть, когда блоку присваивается тип «внутренний блок», модуль 32 предсказания может создать блок предсказания на основе одного или нескольких ранее закодированных соседних блоков в общем блоке кодирования (например, кадр или серия последовательных макроблоков). Модуль 32 предсказания может, например, выполнить пространственное предсказание для создания блока предсказания путем выполнения интерполяции с использованием одного или нескольких ранее закодированных соседних блоков в текущем кадре.

Один или несколько соседних блоков в текущем кадре можно извлечь, например, из хранилища 34 кадров, которое может содержать запоминающее устройство или устройство хранения данных любого типа для сохранения одного или нескольких предварительно закодированных кадров или блоков.

Модуль 32 предсказания может выполнить интерполяцию в соответствии с одним из набора режимов предсказания. Как было описано выше, набор режимов предсказания может включать в себя однонаправленные режимы предсказания и/или многонаправленные режимы предсказания. Многонаправленные режимы предсказания определяют комбинации однонаправленных режимов предсказания. В одном примере набор режимов предсказания может включать в себя однонаправленные режимы предсказания, определенные в стандарте H.264/MPEG-4 Part 10 AVC, и двунаправленные режимы предсказания, которые определяют различные комбинации из двух однонаправленных режимов предсказания.

Например, для блоков типа Intra 44 набор режимов предсказания может включать в себя девять однонаправленных режимов предсказания, определенных в стандарте H.264/MPEG-4 Part 10 AVC, и поднабор возможных комбинаций однонаправленных режимов предсказания. Таким образом, вместо поддержки всех 36 возможных комбинаций однонаправленных режимов предсказания видеокодер 20 может поддерживать только часть возможных комбинаций однонаправленных режимов предсказания. Это не приведет к заметному снижению качества кодирования. Ниже показан один примерный набор режимов внутреннего предсказания, который включает в себя всего 18 режимов внутреннего предсказания.

Режим 0: Вертикальный

Режим 1: Горизонтальный

Режим 2: DC

Режим 3: Диагональный вниз/влево

Режим 4: Диагональный вниз/вправо

Режим 5: Вертикальный вправо

Режим 6: Горизонтальный вниз

Режим 7: Вертикальный влево

Режим 8: Горизонтальный вверх

Режим 9: Вертикальный+горизонтальный (Режим 0+Режим 1)

Режим 10: DC+вертикальный (Режим 2+Режим 0)

Режим 11: DC+горизонтальный (Режим 2+Режим 1)

Режим 12: Диагональный вниз/влево+горизонтальный (Режим 3+режим 1)

Режим 13: Диагональный вниз/вправо+вертикальный (Режим 4+режим 0)

Режим 14: Вертикальный вправо+горизонтальный (Режим 5+режим 1)

Режим 15: Горизонтальный вниз+вертикальный (Режим 6+Режим 0)

Режим 16: Вертикальный влево+горизонтальный (Режим 7+режим 1)

Режим 17: Горизонтальный вверх+вертикальный (Режим 8+Режим 0).

В примерном наборе, показанном выше, режимы 0-8 являются однонаправленными режимами предсказания, а режимы 9-17 являются двунаправленными режимами предсказания. В частности, режимы 0-8 являются режимами предсказания Intra 4×4, определенными в стандарте H.264/MPEG-4 Part 10 AVC. Режимы 9-17 представляют собой поднабор из возможных двунаправленных режимов предсказания. Этот поднабор возможных двунаправленных режимов предсказания в приведенном примере включает в себя по меньшей мере одну комбинацию, которая содержит каждый из однонаправленных режимов предсказания. Каждый двунаправленный режим предсказания, за исключением двунаправленных режимов предсказания, которые включают в себя режим предсказания типа DC (например, режимы 10 и 11), объединяют однонаправленные режимы предсказания, имеющие направления интерполяции, не параллельные друг другу, а в некоторых случаях практически ортогональные друг другу. Другими словами, поднабор двунаправленных режимов предсказания включает в себя двунаправленные режимы предсказания, которые в общем случае объединяют режимы предсказания из категории «вертикальный» с режимами предсказания из категории «горизонтальный». Указанные двунаправленные режимы предсказания позволяют в процессе внутреннего предсказания объединять имеющиеся пиксели предсказания из далеко отстоящих друг от друга мест, что повышает качество предсказания для большего числа мест расположения пикселей в текущем видеоблоке.

Вышеописанный набор режимов предсказания представлен здесь в иллюстративных целях. Набор режимов предсказания может включать в себя больше или меньше режимов предсказания. Например, набор режимов предсказания может включать в себя больше или меньше двунаправленных режимов предсказания или вообще не содержать двунаправленные режимы предсказания. В других случаях набор режимов предсказания может включать в себя только поднабор однонаправленных режимов предсказания. Вдобавок, набор режимов предсказания может включать в себя многонаправленные режимы предсказания, которые объединяют более двух однонаправленных режимов предсказания вдобавок или вместо двунаправленных режимов предсказания. Кроме того, хотя все вышеописанное относилось к блокам типа Intra 4×4, раскрытые здесь способы можно применит к блокам других типов (например, типа Intra 8×8 или типа 16×16) или к блокам типа Inter. Для определения того, какой из множества режимов предсказания выбрать для конкретного блока, модуль 32 предсказания может оценить затраты на кодирование, например лагранжиан затрат, для каждого режима предсказания из набора и выбрать режим предсказания с минимальными затратами на кодирование. В других случаях модуль 32 предсказания может оценить затраты на кодирование только для части набора возможных режимов предсказания. Например, модуль 32 предсказания может выбрать часть режимов предсказания из данного набора на основе режима предсказания, выбранного для одного или нескольких соседних видеоблоков. Модуль 32 предсказания создает блок предсказания, используя выбранный режим предсказания.

После создания блока предсказания видеокодер 20 создает остаточный блок путем вычитания в сумматоре 48А блока предсказания, созданного модулем 32 предсказания, из текущего видеоблока. Остаточный блок включает в себя набор пиксельных значений разности, которые количественно характеризуют разности между пиксельными значениями текущего видеоблока и пиксельными значениями блока предсказания. Остаточный блок можно представить в формате двумерного блока (например, двумерная матрица или массив пиксельных значений). Другими словами, остаточный блок является двумерным представлением пиксельных значений.

Модуль 38 преобразования применяет преобразование к остаточному блоку для создания остаточных коэффициентов преобразования. Модуль 38 преобразования может, например, применить DCT преобразование, целочисленное преобразование, направленное преобразование, волновое преобразование или их комбинацию. Модуль 38 преобразования может избирательно применить преобразование к остаточному блоку на основе режима предсказания, выбранного модулем 32 предсказания, для создания блока предсказания. Другими словами, преобразование, применяемое к остаточной информации, может зависеть от режима предсказания, выбранного для блока модулем 32 предсказания.

Модуль 38 преобразования может поддерживать множество различных преобразований и избирательно применять эти преобразования к остаточному блоку на основе режима предсказания этого блока. Множество различных преобразований может включать в себя DCT преобразования, целочисленные преобразования, направленные преобразования, волновые преобразования или их комбинации. В некоторых случаях модуль 38 преобразования может поддерживать DCT преобразование или целочисленное преобразование, а также множество направленных преобразований и избирательно применять эти преобразования на основе режима предсказания, выбранного для текущего видеоблока. Модуль 38 преобразования может, например, применить DCT или целочисленное преобразование к остаточным блокам с режимами предсказания, которые отличаются ограниченной направленностью, и применить одно из направленных преобразований к остаточным блокам с режимами предсказания, которые отличаются значительной направленностью.

Используя примерный набор режимов предсказания, описанный выше, модуль 38 преобразования может применить DCT преобразование или целочисленное преобразование к режимам 2, 9 и 12-17. Эти режимы могут отличаться ограниченной направленностью, когда они представляют собой DC предсказание или комбинацию из двух режимов предсказания с приблизительно ортогональными направлениями. В противоположность этому, режимы 1, 3-8, 10 и 11 являются режимами, которые могут характеризоваться направленностью, и поэтому модуль 38 преобразования может применить различные направленные преобразования для каждого из этих режимов для достижения более эффективного уплотнения энергии остаточных видеоблоков. Другими словами, когда выбраны режимы предсказания с более сильной направленностью, направленность также может проявляться в остаточных блоках указанных режимов предсказания. Наконец, остаточные блоки различных режимов предсказания отличаются различными характеристиками направленности. В отличие от таких преобразований, как DCT или подобное DCT целочисленное преобразование, направленные преобразования, специально подготовленные для каждого режима предсказания, могут обеспечить более эффективное уплотнение энергии для остаточных блоков данного режима предсказания. С другой стороны, для режимов предсказания, которые не отличаются сильной направленностью, такие преобразования, как DCT или подобное DCT целочисленное преобразование, обеспечивают достаточное уплотнение энергии. Таким образом, модуль 38 преобразования не обязательно должен поддерживать отдельные преобразования для каждого из возможных режимов предсказания, что снижет требования к памяти для преобразований. Кроме того, применение DCT и/или целочисленных преобразований предпочтительно с точки зрения упрощения вычислений.

В других случаях модуль 38 преобразования может поддерживать отличное от других направленное преобразование для каждого из возможных режимов предсказания и применять соответствующие направленные преобразования на основе выбранного режима предсказания блока. Для примерного набора режимов предсказания, описанного выше, модуль 38 преобразования может поддерживать восемнадцать различных направленных преобразований, каждое из которых соответствует одному из восемнадцати возможных режимов предсказания Intra 4×4. Вдобавок, модуль 38 преобразования может поддерживать восемнадцать различных направленных преобразований для восемнадцати возможных режимов предсказания Intra 8×8 и четыре различных направленных преобразования для четырех возможных режимов предсказания Intra 16×16, а также преобразования для любых других режимов предсказания с другими размерами разбиения. Применение отдельных направленных преобразований на основе выбранного режима предсказания блока повышает эффективность фиксирования остаточной энергии для блоков, для которых выбраны режимы предсказания, характеризующиеся значительной направленностью. Направленные преобразования могут быть неотделимыми направленными преобразованиями, например, получаемыми из неотделимых преобразований Карунена-Лоэва (KLT) или отделимыми направленными преобразованиями. В некоторых случаях направленные преобразования могут предварительно вычисляться с использованием специально подготовленных наборов данных.

Преобразование KLT является линейным преобразованием, где базовые функции получают из статистических данных о сигнале, и поэтому оно может быть адаптивным. Преобразование KLT разработано для причисления максимально возможной энергии как можно меньшему количеству коэффициентов. Преобразование KLT в общем случае не является отделимым, и, соответственно, модуль 38 преобразования выполняет полное матричное умножение, подробно описанное ниже. Далее в качестве примера описано применение неотделимого направленного преобразования к остаточному блоку 4×4. Аналогичные способы используют для блоков других размеров, например, блок 8×8 или блоки 16×16.

Остаточный блок Х размером 4×4 представлен в двумерном блочном формате с четырьмя строками и четырьмя столбцами пиксельных значений, то есть, всего с шестнадцатью пиксельными значениями. Для применения неотделимого направленного преобразования выполняют перекомпоновку остаточного блока 4×4 в одномерный вектор х пиксельных значений, то есть, имеющий шестнадцать значений в длину. Перекомпоновку остаточного блока Х размером 4×4 в вектор х выполняют путем компоновки пикселей в Х в растровом порядке сканирования. То есть, если остаточный блок Х размером 4×4 записан в виде

то тогда остаточный вектор х длиной 16 запишется как

отделимые направленные преобразования, патент № 2463729

Вектор y коэффициентов преобразования получают путем выполнения матричного умножения согласно следующему уравнению (1):

y=Tx, отделимые направленные преобразования, патент № 2463729 (1),

где Т - матрица преобразования размером 16×16, которая соответствует режиму предсказания, выбранному для данного блока. Вектор y коэффициентов преобразования также является однонаправленным вектором, имеющим длину шестнадцать коэффициентов.

Использование неотделимых направленных преобразований может привести к увеличению вычислительных затрат и требований к памяти. В общем случае, для остаточного блока размером N×N неотделимое направленное преобразование потребует базовых функций размером N2×N2. То есть для остаточных блоков 4×4 неотделимое направленное преобразование имеет размер 16×16; для остаточных блоков 8×8 неотделимое направленное преобразование имеет размер 64×64; а для остаточных блоков 16×16 неотделимое направленное преобразование имеет размер 256×256. Поскольку для каждого из режимов предсказания в наборе можно использовать отличное от других неотделимое направленное преобразование, в модуле 32 преобразования может храниться восемнадцать направленных преобразований 16×16 для блоков 4×4 и восемнадцать преобразований 64×64 для блоков 8×8 (в случае вышеописанного примерного набора режимов предсказания), но возможно и больше при более широком наборе режимов предсказания. Это может привести к использованию больших ресурсов памяти для хранения матриц преобразования, необходимых для выполнения процесса преобразования. Вычислительные затраты на неотделимые направленные преобразования также высоки. В общем случае применение неотделимого направленного преобразования для блока N×N потребует N2×N2 умножений и N2×(N2-1) сложений.

Вместо неотделимых направленных преобразований модуль 32 преобразования может поддерживать отделимые направленные преобразования для каждого из режимов предсказания. Отделимые направленные преобразования требуют меньше памяти и вычислительных затрат по сравнению с неотделимыми направленными преобразованиями. Для остаточного блока Х размером 4×4, например, отделимое преобразование применяют, как показано в следующем уравнении (2):

Y=CXR, отделимые направленные преобразования, патент № 2463729 (2),

где Y - результирующая матрица коэффициентов преобразования, C - матрица преобразования столбцов, а R - матрица преобразования строк, причем размер всех этих матриц равен размеру блока (4×4 в данном примере). Таким образом, результирующая матрица Y коэффициентов преобразования также является двумерной матрицей размером 4×4.

Для каждого режима предсказания в модуле 32 преобразования может храниться две матрицы преобразования N×N (например, пары матриц С и R), где N×N соответствует размеру блока (например, N=4, 8 или 16). В вышеописанном примерном наборе из восемнадцати режимов предсказания для блока 4×4 в модуле 32 преобразования хранятся тридцать шесть матриц преобразования 4×4, для которых требуется меньше памяти, чем для восемнадцати матриц преобразования 16х16, которые необходимо хранить при использовании неотделимых преобразований. Вдобавок, модуль 32 преобразования выполняет отделимое направленное преобразование, используя 2×N×N×N умножений и 2×N×N×(N-1) сложений, что значительно меньше по числу операций, чем N2×N2 умножений и N2×(N2-1) сложений, используемых для выполнения неотделимых направленных преобразований. В Таблице 1 сравниваются требования к памяти и вычислениям при использовании отделимых направленных преобразований и неотделимых направленных преобразований для размеров блока 4×4 и 8×8. Аналогичным образом можно сравнить отделимые и неотделимые направленные преобразования для блоков 16×16. Как показано в Таблице 1, использование отделимых направленных преобразований снижает как сложность вычислений, так и требования к памяти по сравнению с неотделимыми направленными преобразованиями, причем это снижение тем более значительно, чем больше размеры блоков, например снижение для блоков 8×8 значительнее, чем снижение для блоков 4×4.

Таблица 1

Сложность неотделимых направленных преобразований по сравнению с отделимыми
отделимые направленные преобразования, патент № 2463729 Размер блока Неотделимое преобразование Отделимое преобразование
Память для всех режимов (в байтах) 4×418×16×16=4608 18×2×4×4=576
8×8 18×64×64=73728 18×2×8×8=2304
Вычисления на один блок 4×4256 операций умножения

240 операций сложения
128 операций умножения

96 операций сложения
8×8 4096 операций умножения

4032 операций сложения
1024 операций умножения

896 операций сложения

Матрицы отделимого преобразования для каждого режима предсказания можно получить путем использования остатков предсказания из набора подготовленных видеопоследовательностей. По аналогии с получением неотделимого KLT преобразования, к остаткам предсказания можно применить операцию сингулярного разложения (SVD) в подготовленном наборе, сначала в направлении строк, а затем в направлении столбцов, чтобы получить соответственно матрицу преобразования строк и матрицу преобразования столбцов. В альтернативном варианте матрицы неотделимого направленного преобразования, то есть матрицы неотделимого KLT преобразования можно подготовить, используя сначала остатки предсказания из подготовленного набора, а затем можно получить матрицы отделимого преобразования для каждого режима предсказания путем дальнейшей разложения матриц неотделимого преобразования на матрицы отделимого преобразования.

В любом случае результирующие матрицы преобразования обычно характеризуются точностью задания чисел с плавающей точкой. Для аппроксимации коэффициентов в матрицах преобразования используют числа, задаваемые с точностью с фиксированной точкой, что позволяет использовать в процессе преобразования арифметические операции с фиксированной точкой и уменьшить вычислительные затраты. Точность аппроксимаций коэффициентов с фиксированной точкой в матрицах преобразования определяется на основе соблюдения баланса между сложностью вычислений и максимальной точностью, необходимой во время процесса преобразования с использованием арифметических операций с фиксированной точкой. Другими словами, более высокая точность аппроксимаций матриц преобразования с фиксированной точкой может привести к меньшим ошибкам благодаря использовании аппроксимации с фиксированной точкой, что является желательным; правда, слишком высокая точность аппроксимаций матриц преобразования с фиксированной точкой также может привести к переполнению при выполнении арифметических операций с фиксированной точкой во время процесса преобразования, что в принципе нежелательно.

После применения преобразования к остаточному блоку пиксельных значений модуль 40 квантования квантует коэффициенты преобразования для дальнейшего уменьшения скорости передачи битов. Вслед за квантованием модуль 42 обратного квантования и модуль 44 обратного преобразования могут соответственно использовать обратное квантование и обратное преобразования для восстановления остаточного блока (обозначенного на фиг.2 как RECON RESID BLOCK»). Сумматор 48b добавляет восстановленный остаточный блок к блоку предсказания, созданному модулем 32 предсказания, для создания восстановленного видеоблока для его сохранения в хранилище 34 кадров. Восстановленный видеоблок может быть использован модулем 32 предсказания для внутреннего или внешнего кодирования последующего видеоблока.

Как было описано выше, при использовании отделимых преобразований, которые включают в себя DCT, целочисленные преобразования, используемые в стандарте H.264/AVC, и отделимые направленные преобразования, результирующие коэффициенты преобразования представляют в виде двумерных матриц коэффициентов. Следовательно, после квантования модуль 41 сканирования коэффициентов сканирует коэффициенты из формата двумерного блока в формат одномерного вектора, причем такую обработку часто называют сканированием коэффициентов. В частности, модуль 41 сканирует коэффициенты согласно некоторому порядку сканирования. Согласно одному аспекту данного изобретения модуль 41 сканирования коэффициентов может адаптивно перестраивать порядок сканирования, используемый для сканирования коэффициентов, на основе статистических данных о коэффициентах. В некоторых случаях модуль 41 сканирования коэффициентов может адаптивно перестроить порядок сканирования отдельно для каждого из режимов предсказания, поскольку каждый из режимов предсказания может иметь отличные от других статистические данные о коэффициентах.

Модуль 41 сканирования коэффициентов изначально может сканировать коэффициенты квантованного остаточного блока, используя первый порядок сканирования. Согласно одному аспекту первый порядок сканирования может являться зигзагообразным порядком, который, как правило, используют в приложениях стандарта H.264/MPEG-4 Part 10 AVC. Хотя модуль 41 сканирования коэффициентов описан как модуль, выполняющий начальное сканирование с использованием зигзагообразного порядка, способы, раскрытые в этом изобретении, не ограничиваются каким-либо конкретным начальным порядком или способом сканирования. Кроме того, каждый из режимов сканирования может иметь отличный от других начальный порядок сканирования, например, порядок сканирования, специально подготовленный для данного режима предсказания. Зигзагообразный порядок сканирования описан здесь в иллюстративных целях. Зигзагообразный порядок сканирования обеспечивает компоновку квантованных коэффициентов в одномерном векторе, так что коэффициенты в левом верхнем углу двумерного блока уплотняются в направлении начала вектора коэффициентов. Зигзагообразный порядок сканирования может обеспечить достаточную плотность для блоков коэффициентов, имеющих ограниченную направленность.

Когда остаточные блоки имеют некоторую или значительную направленность и преобразуются с использованием отделимых направленных преобразований, результирующий двумерный блок коэффициентов преобразования может все еще иметь некоторую степень направленности. Причина этого состоит в том, что, хотя использование отделимых направленных преобразований дает преимущества, заключающиеся в снижении сложности вычислений и требований памяти, это не гарантирует фиксацию направленности в остаточных блоках, как при использовании неотделимых направленных преобразований. Например, после применения направленного преобразования к вертикальному предсказанию (режим 0 в вышеописанном примере) ненулевые коэффициенты будут стремиться располагаться вдоль горизонтального направления. Таким образом, зигзагообразный порядок сканирования не гарантирует, что все ненулевые коэффициенты окажутся плотно скомпонованными в направлении начала вектора коэффициентов. Благодаря адаптации порядка сканирования коэффициентов для ориентации порядка сканировании в горизонтальном направлении вместо фиксированного зигзагообразного порядка сканирования, ненулевые коэффициенты блока коэффициентов могут более компактно размещаться в направлении начала одномерного вектора коэффициентов, чем в случае сканирования в зигзагообразном порядке. В свою очередь, это может уменьшить количество бит, затрачиваемых на энтропийное кодирование, поскольку имеются более короткие серии нулей между ненулевыми коэффициентами в начале одномерного вектора коэффициентов и одна более длинная серия нулей в конце одномерного вектора коэффициентов. Концепция адаптации порядка сканирования, используемой для создания одномерного вектора коэффициентов, также применима к другим режимам предсказания. Например, модуль 41 сканирования коэффициентов может адаптивно перестраивать порядок сканирования отдельно для каждого из режимов предсказания, поскольку каждый из режимов предсказания может иметь отличную от других направленность в блоках коэффициентов и, следовательно, различные статистические данные о коэффициентах. Таким образом, порядок сканирования может быть разным для каждого из режимов предсказания.

Как было описано выше, начальный порядок сканирования необязательно является зигзагообразным; в частности, в случаях, когда к остаточному блоку применяют направленные преобразования. В этих случаях начальный порядок сканирования может быть определен заранее с использованием одного из нижеописанных способов. Например, начальный порядок сканирования может быть определен с использованием набора обучающих видеопоследовательностей. Статистические данные о ненулевых коэффициентах, такие как статистические данные, описанные ниже, собирают для каждого режима предсказания и используют для инициализации порядка сканирования коэффициентов. В частности, первой позицией коэффициента в начальном порядке сканирования является позиция с максимальной вероятностью ненулевых коэффициентов, затем следует позиция со следующей максимальной вероятностью ненулевых коэффициентов, являющаяся второй позицией коэффициента в начальном порядке сканирования, и т.д., пока не будет достигнута позиция с минимальной ненулевой вероятностью, которая является последней позицией коэффициента в начальном порядке сканирования. В альтернативном варианте начальный порядок сканирования можно определить на основе собственных значений матриц отделимого преобразования. Например, собственные значения можно сортировать в убывающем порядке, а коэффициенты сканируют, следуя соответствующему порядку собственных значений.

Если даже начальный порядок сканирования определяют с использованием одного из вышеописанных способов, различные типы источников видео могут привести к тому, что квантованные остаточные коэффициенты окажутся на разных позициях в блоке. Например, источники видео с различным разрешением, такие как источники видео в едином промежуточном формате (CIF), в четвертном CIF (QCIF) и с высоким разрешением (например, 720 p/i или 1080 p/i) могут привести к расположению ненулевых коэффициентов на разных позициях в блоке. Таким образом, если даже начальный порядок сканирования выбран на основе режима предсказания блока, модуль 41 сканирования коэффициентов все же сможет адаптировать порядок сканирования для повышения компактности ненулевых коэффициентов в направлении начала одномерного вектора коэффициентов.

Для адаптации порядка сканирования модуль 41 сканирования коэффициентов или другой модуль видеокодера 20 может собрать статистические данные о коэффициентах для одного или нескольких блоков. Другими словами, так как сканирование коэффициентов выполняют поблочно, модуль 41 сканирования коэффициентов может собрать статистику, которая указывает, сколько раз на каждой из позиций в блоке оказывался ненулевой коэффициент. Например, модуль 41 сканирования коэффициентов может поддерживать множество счетчиков, каждый из которых соответствует позиции коэффициента в двумерном блоке, и увеличивать отсчитанное значение соответствующей позиции, когда на этой позиции оказывается ненулевой коэффициент. Таким образом, большие значения счетчиков соответствуют позициям в блоке, на которых ненулевые коэффициенты появляются с более высокой частотой, а небольшие значения счетчиков соответствуют позициям в блоке, на которых ненулевые коэффициентов появляются с низкой частотой. В некоторых случаях модуль 41 сканирования коэффициентов может собирать отдельные наборы статистических данных о коэффициентах для каждого из режимов предсказания.

Как было описано выше, модуль 41 сканирования может адаптировать порядок сканирования на основе собранных статистических данных. Модуль 41 сканирования коэффициентов может на основе собранных статистических данных адаптировать порядок сканирования для сканирования в первую очередь тех позиций коэффициентов, которые определены как имеющие более высокую вероятность ненулевых коэффициентов, после чего сканировать позиции коэффициентов, которые определены как имеющие меньшую вероятность ненулевых коэффициентов. Например, модуль 41 сканирования коэффициентов может адаптировать порядок сканирования для сканирования позиций коэффициентов двумерного блока в убывающем порядке на основе значений их отсчетов, когда значения отсчетов представляют количество случаев, когда на соответствующих позициях коэффициенты имели ненулевое значение. В альтернативном варианте, счетчики могут отслеживать количество случаев, когда каждая из позиций в блоке являлась позицией для нулевого коэффициента, и адаптировать порядок сканирования для сканирования позиций коэффициентов в возрастающем порядке на основе значений отсчетов. В некоторых случаях статистические данные могут собираться только для поднабора позиций коэффициентов в блоке вместо всех позиций коэффициентов в блоке. В этом случае блок 41 сканирования коэффициентов может адаптировать только часть порядка сканирования.

Модуль 41 сканирования коэффициентов может адаптировать порядок сканирования с фиксированными или нефиксированными интервалами. Например, модуль 41 сканирования коэффициентов может адаптировать порядок сканирования с фиксированными интервалами, например, границами блока. В некоторых случаях модуль 41 сканирования коэффициентов может адаптировать порядок сканирования с границами блока 4×4 или 8×8, либо с границами макроблока. Таким образом, порядок сканирования можно адаптировать для каждого блока или макроблока. Однако для упрощения системы модуль 41 сканирования коэффициентов может адаптировать порядок сканирования не так часто, например, после каждых n блоков или макроблоков. В альтернативном варианте модуль 41 сканирования коэффициентов может адаптировать порядок сканирования с нефиксированными интервалами. Модуль 41 сканирования коэффициентов может, например, адаптировать порядок сканирования, когда одно из значений отсчетов позиции в блоке превышает пороговое значение. После адаптации порядка сканирования модуль 41 сканирования коэффициентов может сканировать последовательные квантованные остаточные блоки по меньшей мере одного последующего видеоблока, используя адаптированный порядок сканирования. В некоторых случаях модуль 41 сканирования коэффициентов может сканировать последовательные квантованные остаточные блоки по меньшей мере одного последующего видеоблока, используя адаптированный порядок сканирования, когда в блоке кодирования первого видеоблока существует по меньшей мере один следующий видеоблок. Модуль 41 сканирования коэффициентов может продолжать сканировать последовательные видеоблоки, пока порядок сканирования не будет адаптирован снова в соответствии с собранными статистическими данными, или пока порядок сканирования не будет заново инициализирован. Таким образом, модуль 41 сканирования коэффициентов адаптирует порядок сканирования для создания одномерного вектора коэффициентов таким образом, что квантованные остаточные коэффициенты можно будет кодировать более эффективно с помощью модуля 46 энтропийного кодирования.

Модуль 41 сканирования коэффициентов в некоторых случаях может нормализовать собранные статистические данные. Нормализация собранных статистических данных желательна тогда, когда отсчеты коэффициентов достигнут порогового значения. Позиция коэффициента, называемая здесь позицией А коэффициента, в блоке, имеющем значение отсчета, которое достигло порога может, например, оставаться позицией коэффициента с максимальным отсчетом даже в том случае, когда позиция коэффициента не содержала ненулевой коэффициент в течение некоторого периода времени. Это может иметь место благодаря тому, что отсчитанное значение коэффициента на позиции А настолько велико, что другие отсчеты коэффициентов могут захватить множество блоков (например, десятки или сотни блоков), прежде чем отсчет коэффициента на другой позиции, называемой здесь позицией В коэффициента, в блоке превысит отсчет коэффициента на позиции А, что приводит к изменению (то есть перестановке) порядка сканирования между позициями А и В коэффициентов. Таким образом, чтобы дать возможность видеокодеру 20 быстрее адаптироваться к локальным статистическим данным о коэффициентах, модуль 41 сканирования коэффициентов может нормализовать коэффициенты, когда один из отсчетов достигнет порогового значения. Например, модуль 41 сканирования коэффициентов может нормализовать коэффициенты путем сокращения каждого из значений отсчетов на заранее определенный множитель, например, сократив каждое из значений отсчетов вдвое, или путем установки значений отсчетов, равными начальным значениям отсчетов. Модуль 41 сканирования коэффициентов может использовать другие методики нормализации. Например, модуль 41 сканирования коэффициентов может обновлять статистические данные после кодирования конкретного количества блоков.

Модуль 46 энтропийного кодирования получает одномерный вектор коэффициентов, который представляет остаточные коэффициенты блока, а также информацию о заголовке для блока в виде одного или нескольких синтаксических элементов заголовка. Синтаксические элементы заголовка могут идентифицировать конкретные характеристики текущего видеоблока, такие как тип блока, режим предсказания, структура кодированного блока (CBP) для яркости и цветности, разбиение блока и один или несколько векторов движения. Эти синтаксические элементы можно получить от других компонент, например, от модуля 32 предсказания в видеокодере 20.

Блок 46 энтропийного кодирования кодирует информацию о заголовке и остаточную информацию для текущего видеоблока, чтобы создать кодированный битовый поток (на фиг.2 обозначен как «Битовый видеопоток»). Модуль 46 энтропийного кодирования кодирует один или несколько синтаксических элементов каждого блока согласно раскрытым здесь способам. В частности, модуль 46 энтропийного кодирования может кодировать синтаксические элементы текущего блока на основе синтаксических элементов одного или нескольких ранее закодированных видеоблоков. По существу, модуль 46 энтропийного кодирования может включать в себя один или несколько буферов для сохранения синтаксических элементов одного или нескольких ранее закодированных видеоблоков. Модуль 46 энтропийного кодирования может анализировать любое количество соседних блоков в любом месте для содействия кодированию синтаксических элементов текущего видеоблока. В иллюстративных целях модуль 46 энтропийного кодирования описывается далее в качестве модуля, кодирующего режим предсказания на основе ранее закодированного блока, находящегося непосредственно над текущим блоком (то есть верхний соседний блок) и ранее закодированного блока, находящегося непосредственно слева от текущего блока (то есть левый соседний блок). Однако аналогичные способы можно использовать для кодирования других синтаксических элементов заголовка, таких как типы блока, разбиения блока, структуры CBP или т.п. Также при кодировании текущего видеоблока можно использовать аналогичные способы, в которых употребляется большее количество соседних блоков, а не только верхний и левый соседние блоки.

Работа модуля 46 энтропийного кодирования описывается со ссылками на вышеописанный набор из восемнадцати режимов предсказания, а также исходя из примерного псевдокода, приведенного ниже.

Let upMode be the prediction mode of the top block отделимые направленные преобразования, патент № 2463729
Let leftMode be the prediction mode of the left block отделимые направленные преобразования, патент № 2463729
Let currMode be the prediction mode of the current block отделимые направленные преобразования, патент № 2463729
If currMode==upMode||currMode==leftMode отделимые направленные преобразования, патент № 2463729
Send "1" отделимые направленные преобразования, патент № 2463729
If upMode!=leftMode отделимые направленные преобразования, патент № 2463729
Send "1" if currMode==upMode or "0" otherwise отделимые направленные преобразования, патент № 2463729
Elseотделимые направленные преобразования, патент № 2463729
Send "0" отделимые направленные преобразования, патент № 2463729
Adjust currMode to be in the range of [0,15] отделимые направленные преобразования, патент № 2463729
Send currMode using 4 bits отделимые направленные преобразования, патент № 2463729

Модуль 46 энтропийного кодирования использует переменные upMode, leftMode и currMode, соответствующие режиму предсказания верхнего соседнего блока, режиму предсказания левого соседнего блока и режиму предсказания текущего блока соответственно. Как было описано выше, режимы предсказания верхнего соседнего блока, левого соседнего блока и текущего блока можно определить на основе анализа лагранжиана затрат. Модуль 46 энтропийного кодирования сравнивает режим предсказания текущего блока (currMode) с режимом предсказания соседних блоков (upMode и leftMode). Если режим предсказания текущего блока совпадает с режимом предсказания любого из соседних блоков, то модуль 46 энтропийного кодирования устанавливает код «1». Таким образом, первый бит, закодированный модулем 46 энтропийного кодирования для представления режима предсказания текущего блока, указывает, является ли текущий режим предсказания таким же, как любой из режимов предсказания: верхнего соседнего блока или левого соседнего блока.

Если режим предсказания текущего блока совпадает с режимом предсказания любого из соседних блоков, то есть первый кодированный бит равен «1», то модуль 46 энтропийного кодирования сравнивает режим предсказания верхнего соседнего блока с режимом предсказания левого соседнего блока. Если режим предсказания верхнего соседнего блока совпадает с режимом предсказания левого соседнего блока, то модуль 46 энтропийного кодирования больше не кодирует ни одного бита для этого режима предсказания. В данном случае режим предсказания можно закодировать, используя один бит.

Однако если режим предсказания верхнего соседнего блока не совпадает с режимом предсказания левого соседнего блока, то модуль 46 энтропийного кодирования кодирует по меньшей мере один дополнительный бит, представляющий режим предсказания, для задания того, какой из соседних блоков имеет тот же режим предсказания, что и текущий блок. Например, когда модуль 46 энтропийного кодирования анализирует режим предсказания верхнего и левого соседних блоков, он может закодировать «1», если режим предсказания текущего блока такой же, как режим предсказания верхнего соседнего блока, и кодирует «0», если режим предсказания текущего блока такой же, как режим предсказания левого соседнего блока. Модуль 46 энтропийного кодирования в альтернативном варианте может закодировать «1», если режим предсказания текущего блока такой же, как режим предсказания левого соседнего блока, и кодирует «0», если режим предсказания текущего блока такой же, как режим предсказания верхнего соседнего блока. В любом случае, второй бит закодированного режима предсказания указывает, какой блок (верхний или левый соседний блок) имеет тот же режим предсказания, что и текущий блок. Таким образом, модуль 46 энтропийного кодирования может закодировать режим предсказания текущего блока, используя минимум один бит и максимум два бита, когда режим предсказания текущего блока совпадает с режимом предсказания одного из соседних блоков. Если модуль 46 энтропийного кодирования анализирует более двух соседних блоков, то он может закодировать более одного дополнительного бита для задания того, какой из ранее закодированных блоков имеет такой же режим предсказания, что и текущий блок.

Если режим предсказания текущего видеоблока не совпадает с любым из упомянутых режимов предсказания (верхнего соседнего блока или левого соседнего блока), то модуль 46 энтропийного кодирования посылает «0», который указывает, что режим предсказания текущего видеоблока не совпадает с режимами предсказания ни одного из соседних блоков. Модуль 46 энтропийного кодирования кодирует кодовое слово, которое представляет режим предсказания текущего блока. Используя, например, вышеописанный набор из восемнадцати режимов предсказания, модуль 46 энтропийного кодирования может закодировать режим предсказания текущего видеоблока путем использования четырехбитового кодового слова. Хотя всего имеется восемнадцать возможных режимов предсказания, для которых, как правило, требуются пятибитовые кодовые слова, два из возможных режимов предсказания можно исключить из указанного набора для текущего блока, то есть режимы предсказания верхнего соседнего блока и левого соседнего блока, поскольку уже было выполнено сравнение режимов предсказания верхнего соседнего блока и левого соседнего блока с режимом предсказания текущего блока и определено, что они не совпадают с режимом предсказания текущего блока. Однако, когда верхний соседний блок и левый соседний блок имеют один и тот же режим предсказания, остается возможность использования семнадцати режимов предсказания вместо шестнадцати режимов предсказания, что вновь потребует использования пятибитового кодового слова, а не четырехбитового кодового слова для представления режима предсказания. В этом случае во время процесса предсказания блок 32 предсказания может избирательно исключить один из оставшихся семнадцати режимов кодирования из указанного набора, чтобы дать возможность представления режима предсказания текущего блока с использованием четырехбитового кодового слова. В одном случае модуль 32 предсказания может исключить последний режим предсказания, например, режим 17 предсказания в это примере. Однако модуль 32 предсказания может выбрать любой режим предсказания из указанного набора на предмет его исключения, используя любую другую из множества различных методик. Например, модуль 32 предсказания может отслеживать вероятность выбора каждого режима предсказания и исключить режим предсказания с минимальной вероятностью выбора.

После исключения выбранного режима предсказания модуль 46 энтропийного кодирования настраивает диапазон шестнадцати оставшихся режимов предсказания, так чтобы диапазон номеров режимов предсказания составил [0, 15]. В одном примере модуль 46 энтропийного кодирования может временно перенумеровать оставшиеся режимы предсказания от 0 до 15, начав с присваивания 0 оставшемуся режиму предсказания с минимальным номером режима, и закончив присваиванием номера 15 оставшемуся режиму предсказания с максимальным номером режима предсказания. Например, если режимом предсказания верхнего соседнего блока является режим 12, а режимом предсказания левого соседнего блока является режим 14, то модуль 46 энтропийного кодирования может перенумеровать режим 13 предсказания, режим 15 предсказания, режим 16 предсказания и режим 17 предсказания, на режим 12 предсказания, режим 13 предсказания, режим 14 предсказания и режим 15 предсказания соответственно. Модуль 46 энтропийного кодирования затем кодирует режим предсказания, используя четыре бита. В других примерах с наборами режимов предсказания, имеющими больше или меньше возможных режимов предсказания, модуль 46 энтропийного кодирования может кодировать режим предсказания большим или меньшим количеством бит, используя аналогичные способы.

Модуль 46 энтропийного кодирования кодирует режим предсказания текущего видеоблока, используя CAVLC или CABAC кодирование. Между режимом предсказания текущего блока и режимами предсказания верхнего и левого соседних блоков может иметь место значительная корреляция. В частности, когда режим предсказания верхнего соседнего блока и режим предсказания левого соседнего блока являются оба однонаправленными режимами предсказания, вероятность, что режимом предсказания текущего блока также будет один из однонаправленных режимов предсказания, велика. Аналогичным образом, когда режим предсказания верхнего соседнего блока и режим предсказания левого соседнего блока являются оба двунаправленными режимами предсказания, высока вероятность того, что режимом предсказания текущего блока также будет один из двунаправленных режимов предсказания. Таким образом, распределение вероятности режима предсказания текущего блока изменяется при изменении категорий (например, однонаправленный на двунаправленный) режимов предсказания верхнего и левого соседних блоков.

По существу, модуль 46 энтропийного кодирования согласно некоторым аспектам может выбирать различные контексты кодирования в зависимости от того, являются ли режимы предсказания одного или нескольких ранее закодированных видеоблоков (например, верхний и левый соседние видеоблоки) однонаправленными или двунаправленными. В случае CABAC кодирования различные контексты кодирования отражают различные вероятности в наборе режимов предсказания в данном контексте. Возьмем в качестве примера контекст кодирования, называемый здесь «первый контекст кодирования», который соответствует случаю, когда оба соседних блока (верхний и левый) имеют однонаправленные режимы кодирования. Из-за корреляции соседних блоков первый контекст кодирования может присвоить более высокие вероятности однонаправленным режимам предсказания, чем двунаправленным режимам предсказания. Таким образом, когда для CABAC кодирования выбран первый контекст кодирования (то есть оба режима предсказания для верхнего и левого соседних блоков являются однонаправленными) на кодирование текущего режима предсказания можно будет затратить меньше битов, если текущим режимом предсказания является один из однонаправленных режимов предсказания, по сравнению со случаем, когда текущим режимом предсказания является один из двунаправленных режимов предсказания. В случае CAVLC кодирования для различных контекстов кодирования могут быть заданы разные таблицы кодирования с переменной длиной слова. Например, при выборе первого контекста кодирования (то есть как верхний, так и левый соседние блоки имеют однонаправленные режимы кодирования) можно использовать таблицу кодирования c переменной длиной слова (VLC), которая присваивает однонаправленным режимам предсказания более короткие кодовые слова, чем двунаправленным режимам предсказания.

Таким путем модуль 46 энтропийного кодирования может выбрать первый контекст кодирования, когда режим предсказания верхнего видеоблока и режим предсказания левого видеоблока являются оба однонаправленными режимами предсказания. Модуль 46 энтропийного кодирования выбирает другой контекст кодирования, когда режим предсказания верхнего видеоблока и режим предсказания левого видеоблока не являются оба однонаправленными режимами предсказания. Например, модуль 46 энтропийного кодирования может выбрать второй контекст кодирования, когда режим предсказания верхнего соседнего видеоблока и режим предсказания левого соседнего видеоблока являются оба двунаправленными режимами предсказания. Второй контекст кодирования моделирует распределение вероятности для режима предсказания текущего видеоблока, когда режим предсказания верхнего и левого соседних блоков являются оба двунаправленными. Распределение вероятности второго контекста кодирования может присвоить более высокие вероятности двунаправленным режимам предсказания, чем однонаправленным режимам предсказания, в случае использования CABAC кодирования и присвоить более короткие кодовые слова двунаправленным режимам кодирования, чем однонаправленным режимам кодирования, в случае использования CAVLC кодирования.

Модуль 46 энтропийного кодирования может еще выбрать и третий контекст кодирования, когда режим предсказания одного из соседних блоков является однонаправленным режимом предсказания, а режим предсказания другого из соседних блоков является двунаправленным режимом предсказания. Третий контекст кодирования более равномерно распределяет вероятность текущего режима предсказания среди однонаправленных режимов предсказания и двунаправленных режимов предсказания в упомянутом наборе. Выбор различных контекстов кодирования для их использования при кодировании на основе того, являются ли режимы предсказания одного или нескольких ранее закодированных видеоблоков (например, верхнего и левого видеоблока) однонаправленными или двунаправленными, может привести к более эффективному сжатию информации о режиме предсказания.

На фиг. 3 представлена блок-схема, более подробно иллюстрирующая пример видеодекодера 26 по фиг. 1. Видеодекодер 26 может выполнять внутреннее и внешнее декодирование блоков в закодированных блоках, таких как видеокадры или серии последовательных макроблоков. В примере по фиг. 3 видеодекодер 26 включает в себя модуль 60 энтропийного декодирования, модуль 62 предсказания, модуль 63 сканирования коэффициентов, модуль 64 обратного квантования, модуль 66 обратного преобразования и хранилище 68 кадров. Видеодекодер 26 также включает в себя сумматор 69, который объединяет выходы модуля 66 обратного преобразования и модуля 62 предсказания.

Модуль 60 энтропийного декодирования получает закодированный битовый видеопоток (на фиг. 3 обозначен как «битовый видеопоток») и декодирует закодированный битовый поток для получения остаточной информации (например, в виде одномерного вектора квантованных остаточных коэффициентов) и информацию о заголовке (например, в виде одного или нескольких синтаксических элементов заголовка). Модуль 60 энтропийного декодирования выполняет функцию декодирования, обратную функции кодирования, выполняемой модулем 46 кодирования по фиг. 2. В иллюстративных целях здесь описан модуль 60 энтропийного декодирования, выполняющий декодирование синтаксического элемента режима предсказания. Указанные способы могут быть распространены на декодирование других синтаксических элементов, таких как тип блока, разбиение блока, структура CBP или т.п.

В частности, модуль 60 энтропийного декодирования анализирует первый бит, представляющий режим предсказания, для определения того, совпадает ли режим предсказания текущего блока с режимом предсказания любого из проанализированных ранее декодированных блоков, например, верхнего соседнего блока или левого соседнего блока. Модуль 60 энтропийного декодирования может определить, что режим предсказания текущего блока совпадает с режимом предсказания одного из соседних блоков, когда первый бит равен «1», и что режим предсказания текущего блока не совпадает с режимом предсказания любого из соседних блоков, когда первый бит равен «0».

Если первый бит равнее «1» и если режим предсказания верхнего соседнего блока совпадает с режимом предсказания левого соседнего блока, то модулю 60 энтропийного декодирования нет необходимости получать дополнительные биты. Модуль 60 энтропийного декодирования выбирает режим предсказания любого из соседних блоков в качестве режима предсказания текущего блока. Модуль 60 энтропийного декодирования может, например, включать в себя один или несколько буферов (или другую память), в которых сохраняются предыдущие режимы предсказания одного или нескольких ранее декодированных блоков.

Если первый бит равнее «1» и если режим предсказания верхнего соседнего блока не совпадает с режимом предсказания левого соседнего блока, то модуль 60 энтропийного декодирования получает второй бит, который представляет режим предсказания, а затем модуль 60 энтропийного декодирования на основе второго бита определяет, какой из соседних блоков имеет тот же режим предсказания, что и текущий блок. Модуль 60 энтропийного декодирования, например, может определить, что режим предсказания текущего блока совпадает с режимом предсказания верхнего соседнего блока, когда второй бит равен «1», и может определить, что режим предсказания текущего блока совпадает с режимом предсказания левого соседнего блока, когда второй бит равен «0». Модуль 60 энтропийного декодирования выбирает в качестве режима предсказания текущего блока режим предсказания соответствующего соседнего блока. Однако, когда первый бит равен «0», модуль 60 энтропийного декодирования определяет, что режим предсказания текущего блока не совпадает ни с одним из режимов предсказания соседних блоков. Тогда модуль 60 энтропийного декодирования может исключить режимы предсказания верхнего и левого соседних блоков из набора возможных режимов предсказания. Набор возможных режимов предсказания может включать в себя один или несколько однонаправленных режимов предсказания и/или один или несколько многонаправленных режимов предсказания. Один из примерных наборов режимов предсказания, который включает в себя всего восемнадцать режимов предсказания, был упомянут при описании фиг. 2. Если верхний и левый соседние блоки имеют одинаковый режим предсказания, то модуль 60 энтропийного декодирования может исключить этот режим предсказания соседних блоков и по меньшей мере еще один режим предсказания. Например, модуль 60 энтропийного декодирования может исключить режим предсказания с максимальным номером (например, режим 17 в вышеописанном наборе из восемнадцати режимов предсказания). Однако модуль 60 энтропийного декодирования может выбрать любой режим предсказания из набора для его удаления с использованием любой из множества различных методик, коль скоро модуль 60 энтропийного декодирования удаляет тот же режим предсказания, который был удален модулем 32 предсказания. Например, модуль 60 энтропийного декодирования может удалить режим декодирования, который имеет минимальную вероятность его выбора.

Модуль 60 энтропийного декодирования может перенумеровать оставшиеся режимы предсказания так, чтобы номера режимов предсказания оказались в диапазоне от 0 до 15. В одном примере модуль 46 энтропийного кодирования может временно перенумеровать оставшиеся режимы предсказания от 0 до 15, начиная с оставшегося режима предсказания имеющего минимальный номер и кончая оставшимся режимом предсказания, имеющим максимальный номер, как было описано в связи с фиг. 2. Модуль 60 энтропийного декодирования декодирует оставшиеся биты, например четыре бита в описанном примере, для получения номера режима предсказания из оставшихся режимов предсказания, который соответствует режиму предсказания текущего блока.

В некоторых случаях модуль 60 энтропийного декодирования может декодировать режим предсказания текущего видеоблока, используя CAVLC или CABAC кодирование. Поскольку между режимом предсказания текущего блока и одним или несколькими ранее декодированными блоками (например, режимы предсказания верхнего и левого соседних блоков) может существовать сильная корреляция, модуль 60 энтропийного декодирования может выбрать различные контексты кодирования для режима предсказания данного блока на основе типа режима предсказания одного или нескольких ранее декодированных видеоблоков. Другими словами, модуль 60 энтропийного декодирования может выбрать различные контексты кодирования на основе того, являются ли режимы предсказания ранее декодированных блоков однонаправленными или двунаправленными.

Например, модуль 60 энтропийного декодирования может выбрать первый контекст кодирования, когда режимы предсказания обоих ранее декодированных блоков являются однонаправленными, выбрать второй контекст кодирования, когда режимы предсказания обоих ранее декодированных блоков являются двунаправленными режимами предсказания, и выбрать третий контекст кодирования, когда режим предсказания одного из ранее декодированных блоков является однонаправленным режимом предсказания, а режим предсказания другого из ранее декодированных блоков является двунаправленным режимом предсказания.

Модуль 62 предсказания создает блок предсказания, используя по меньшей мере часть информации о заголовке, например, в случае блока, подвергшегося внутреннему кодированию, модуль 60 энтропийного декодирования может предоставить по меньшей мере часть информации о заголовке (например, тип блока и режим предсказания для этого блока) модулю 62 предсказания для создания блоков предсказания. Модуль 62 предсказания создает блок предсказания, используя один или несколько соседних блоков (или частей соседних блоков) в общем блоке кодирования в соответствии с типом блока и режимом предсказания. Например, модуль 62 предсказания может создать блок предсказания с размером разбиения, указанным синтаксическим элементом типа блока, используя режим предсказания, заданный синтаксическим элементом режима предсказания. Один или несколько соседних блоков (или частей соседних блоков) в текущем блоке кодирования могут быть извлечены, например, из хранилища 68 кадров.

Модуль 60 энтропийного декодирования также декодирует кодированные видеоданные для получения остаточной информации в виде одномерного вектора коэффициентов. Если используются отделимые преобразования (например, DCT, целочисленные преобразования H.264/AVC, отделимые направленные преобразования), то модуль 63 сканирования коэффициентов, сканирует однонаправленный вектор коэффициентов для создания двумерного блока. Модуль 63 сканирования коэффициентов выполняет функцию, обратную сканированию, которое выполняется модулем 41 сканирования коэффициентов по фиг. 2. В частности, модуль 63 сканирования коэффициентов сканирует коэффициенты в соответствии с начальным порядком сканирования для размещения коэффициентов одномерного вектора в двумерном формате. Другими словами, модуль 63 сканирования коэффициентов сканирует одномерный вектор для создания двумерного блока квантованных коэффициентов.

Модуль 63 сканирования коэффициентов может адаптивно перестроить порядок сканирования, использованный для сканирования коэффициентов, на основе статистических данных о коэффициентах для синхронизации порядка сканирования с порядком сканирования, используемым видеокодером 20. Для этого модуль 63 сканирования коэффициентов может выбрать статистические данные о коэффициентах для одного или нескольких блоков и адаптировать порядок сканирования на основе собранных статистических данных. Другими словами, при восстановлении двумерного блока квантованных коэффициентов модуль 63 сканирования коэффициентов может собрать статистические данные, которые указывают, сколько раз на каждой позиции в двумерном блоке был ненулевой коэффициент. Модуль 63 сканирования коэффициентов может поддерживать множество счетчиков, каждый из которых соответствует позиции коэффициента в двумерном блоке, и увеличивать на единицу отсчитанное значение, соответствующего данной позиции, при нахождении ненулевого коэффициента на этой позиции.

Модуль 63 сканирования коэффициентов может адаптировать порядок сканирования на основе собранных статистических данных. Модуль 63 сканирования коэффициентов на основе собранных статистических данных может адаптировать порядок сканирования для сканирования в первую очередь позиций, которые имеют более высокую вероятность наличия ненулевых коэффициентов, прежде чем сканировать позиции коэффициентов, для которых определено, что вероятность наличия в них ненулевых коэффициентов меньше. Модуль 63 сканирования коэффициентов адаптирует порядок сканирования с теми же фиксированными или нефиксированными интервалами, которые используются видеокодером 20. Модуль 63 сканирования коэффициентов нормализует собранные статистические данные таким же образом, как было описано выше в связи с видеокодером 20.

Как было описано выше, в некоторых случаях модуль 63 сканирования коэффициентов собирает отдельные статистические данные о коэффициентах и адаптивно перестраивает порядок сканирования отдельно для каждого из режимов предсказания. Модуль 63 сканирования коэффициентов может выполнять это, например, потому, что каждый из режимов предсказания может иметь разные статистические данные о коэффициентах.

После создания двумерного блока квантованных остаточных коэффициентов модуль 64 обратного квантования выполняет обратное квантование, то есть «деквантование», квантованных остаточных коэффициентов. Модуль 66 обратного преобразования применяет обратное преобразование, например обратное DCT преобразование, обратное целочисленное преобразование или обратное направленное преобразование, к «деквантованным» остаточным коэффициентам для создания остаточного блока пиксельных значений. Сумматор 69 суммирует блок предсказания, созданный блоком 62 предсказания, с остаточным блоком из блока 66 обратного преобразования для формирования восстановленного видеоблока. Таким образом, видеодекодер 26 восстанавливает кадры видеопоследовательности блок за блоком, используя информацию о заголовке и остаточную информацию.

Видеокодирование на основе блоков иногда может привести к визуально воспринимаемому эффекту «блочности» у границ блока кодированного видеокадра. В таких случаях фильтрация, устраняющая блочность, может сгладить границы блоков, чтобы уменьшить или исключить визуально воспринимаемую блочность. Для фильтрации декодированных блоков с целью уменьшения или устранения блочности также может быть использован деблокирующий фильтр (не показан). После выполнения любой из возможных фильтраций, устраняющих блочность, восстановленные блоки помещают в хранилище 68 кадров, которое обеспечивает эталонные блоки для пространственного и временного предсказания последовательных видеоблоков, а также создает декодированное видео для приведения в действие устройства отображения (такого как устройство 28 отображения по фиг. 1).

На фиг. 4 представлена концептуальная схема, иллюстрирующая гипотетический пример адаптивного сканирования, согласующегося с данным изобретением. В этом примере позиции коэффициентов обозначены в объекте 71 как с1-с16. Действительные значения коэффициентов показаны в блоке 1 (72), блоке 2 (73), блоке 3 (74) и блоке 4 (75) для четырех последовательных блоков. Действительные значения коэффициентов для блоков 1-4 могут представлять квантованные остаточные коэффициенты, коэффициенты преобразования без квантования или коэффициенты другого типа. В других случаях указанные позиции могут представлять позиции пиксельных значений остаточного блока. Блоки 1-4 могут содержать блоки, связанные с одинаковым режимом предсказания. В примере, показанном на фиг. 4, блоки 1-4 являются блоками 4×4. Однако, как было описано выше, способы, раскрытые в изобретении, можно распространить для применения к блокам любого размера. Кроме того, хотя описанное ниже относится к модулю 41 сканирования коэффициентов в видеокодере, аналогичным образом модуль 63 сканирования коэффициентов видеодекодера 26 может собирать статистические данные и адаптировать порядок сканирования.

Изначально модуль 41 сканирования коэффициентов может сканировать коэффициенты блока 1, используя зигзагообразный порядок сканирования. В этом случае модуль 41 сканирования коэффициентов сканирует позиции коэффициентов блока 1 в следующем порядке: с1, с2, с5, с9, 26, с3, с4, с7, с10, с13, с14, с11, с8, с12, с15, с16. Таким образом, после сканирования коэффициентов блока 1 модуль 41 сканирования коэффициентов выводит одномерный вектор отделимые направленные преобразования, патент № 2463729 =[9,4,6,1,1,0,0,0,0,2,0,0,0,0,0,0]. Хотя в примере, показанном на фиг. 4, модуль 41 сканирования коэффициентов изначально сканирует коэффициенты блока 1, используя зигзагообразный порядок сканирования, такой порядок сканирования не является единственно возможной отправной точкой для адаптивного сканирования. В качестве начального порядка сканирования можно использовать горизонтальное сканирование, вертикальное сканирование или любую другую начальную последовательность сканирования. Использование зигзагообразного сканирования приводит к одномерному вектору отделимые направленные преобразования, патент № 2463729 коэффициентов, имеющему серию из четырех нулей между двумя ненулевыми коэффициентами.

Статистические данные 1 (76) представляют статистические данные блока 1. Статистические данные 1 (76) могут представлять собой отсчитанные значения для каждой позиции коэффициента для отслеживания количества ненулевых значений в каждой позиции коэффициента. В примере на фиг. 4 все статистические данные коэффициентов инициализированы с нулевым значением. Однако можно использовать другие схемы инициализации. Например, для инициализации статистических данных соответствующего режима предсказания можно использовать типовые или усредненные статистические данные о коэффициентах для каждого из режимов предсказания. После кодирования блока 1 статистические данные 1 (76) имеют значения, равные единице, для любой позиции коэффициента в блоке 1, являющейся ненулевой, и имеют значения, равные нулю, для любой позиции коэффициента в блоке 1, имеющей нулевое значение. Статистические данные 2 (77) представляют объединенные статистические данные блоков 1 и 2. Модуль 41 сканирования коэффициентов увеличивает отсчеты статистических данных 1 (76), когда позиции коэффициентов в блоке 2 имеют ненулевые значения, и сохраняют отсчитанные значения прежними, когда позиции коэффициентов имеют нулевые значения. Таким образом, как показано на фиг. 4, модуль 41 сканирования коэффициентов увеличивает статистические данные позиций с1, с2, с5, с9, с13 коэффициентов до значения, равного двум и поддерживает статистические данные в остальных позициях коэффициентов такими же, как статистические данные 1 (76). Статистические данные 3 (78) представляют объединенные статистические данные блоков 1-3, а статистические данные 4 (79) представляют объединенные статистические данные блоков 104. Как было описано выше, согласно некоторым аспектам модуль 41 сканирования коэффициентов может собирать статистические данные для блоков, используя множество счетчиков.

Модуль 41 сканирования коэффициентов может адаптировать порядок сканирования на основе собранных статистических данных. В демонстрируемом примере модуль 41 сканирования коэффициентов может быть сконфигурирован для адаптации порядка сканирования после четырех видеоблоков на основе статистических данных 4 (79). В этом случае модуль 41 сканирования коэффициентов анализирует собранные статистические данные и адаптирует порядок сканирования, так что позиции коэффициентов сканируются в убывающем порядке согласно соответствующим отсчитанным значениям. По существу, модуль 41 сканирования коэффициентов может сканировать блоки 1-4 в соответствии с начальным порядком сканирования и адаптировать порядок сканирования для сканирования позиций последующего блока, например, блока 5 (не показан) в следующем порядке: с1, с5, с9, 2, с13, с6, с3, с4, с7, с10, с14, с11, с8, с12, с15, с16. Модуль 41 сканирования коэффициентов продолжает сканировать следующие друг за другом блоки в соответствии с новым порядком сканирования, пока порядок сканирования не будет вновь адаптирован на основе собранных статистических данных для блоков или заново инициализирован, например, с начала последующего блока кодирования.

Адаптация порядка сканирования для изменения по отношению к начальному порядку сканирования (например, зигзагообразный порядок сканирования) на новый порядок сканирования сдвигает ненулевые коэффициенты к началу одномерного вектора коэффициентов, а нулевые коэффициенты к его концу. В примере на фиг. 4 при новом порядке сканирования коэффициенты сканируются по вертикали раньше, чем по горизонтали, что отражает тот факт, что для данного режима предсказания коэффициенты по вертикали имеют более высокую вероятность ненулевого значения, чем коэффициенты по горизонтали. Все блоки 1-4 могут иметь один и тот же режим предсказания, а прошлые статистические данные могут представлять наиболее вероятные в будущем места с ненулевыми коэффициентами. Таким образом, благодаря использованию прошлых статистических данных для определения порядка сканирования способы, раскрытые в этом изобретении, могут способствовать группировке ненулевых коэффициентов ближе к началу отсканированного одномерного вектора, а коэффициенты с нулевыми значениями ближе к концу отсканированного одномерного вектора, что исключает или уменьшает количество нулевых серий между двумя ненулевыми коэффициентами. Это, в свою очередь, может повысить уровень сжатия, которого можно достигнуть во время энтропийного декодирования.

На фиг. 5 представлена блок-схема, иллюстрирующая способ кодирования, совместимый с данным изобретением. Способ кодирования, показанный на фиг. 5, можно использовать для кодирования или декодирования видеоблоков. Как показано на фиг. 5, модуль 41, 63 сканирования коэффициентов сканирует коэффициенты блока согласно начальному порядку сканирования, определенному для соответствующего режима предсказания текущего блока (80). С позиции видеокодера 20 сканирование преобразует двумерный блок коэффициентов в одномерный вектор коэффициентов. С позиции видеодекодера 26 сканирование преобразует одномерный вектор коэффициентов в двумерный блок коэффициентов. В одном примере начальным порядком сканирования соответствующего режима предсказания может быть зигзагообразный порядок сканирования. Зигзагообразный порядок сканирования не является единственно возможным начальным порядком сканирования. В качестве начального порядка сканирования можно использовать горизонтальное сканирование, вертикальное сканирование или любой иной начальный порядок сканирования.

Модуль 41, 63 сканирования коэффициентов собирает статистические данные для одного или нескольких блоков (82). В частности, для каждого сканируемого блока модуль 41, 63 сканирования коэффициентов может собирать статистические данные, которые, например, с помощью счетчиков отслеживают частоту появления ненулевого коэффициента на каждой позиции коэффициентов в двумерном блоке. Модуль 41, 63 сканирования коэффициентов определяет, следует ли проанализировать порядок сканирования (83). Модуль 41, 63 сканирования коэффициентов может выяснить, что порядок сканирования обеспечивается с фиксированными (например, на каждой границе блока или после n границ блоков) или нефиксированными интервалами (например, когда одно из отсчитанных значений некоторой позиции в данном блоке превышает пороговое значение).

Если модуль 41, 63 сканирования коэффициентов определяет, что не надо оценивать порядок сканирования, то он сканирует последующий блок согласно начальному порядку сканирования (80). Если модуль 41, 63 сканирования коэффициентов определяет, что следует оценить порядок сканирования, например, после того как закодировано/декодировано n блоков, то модуль сканирования может адаптировать порядок сканирования на основе собранных статистических данных (84). Например, модуль 41, 63 сканирования коэффициентов может адаптировать порядок сканирования для сканирования позиций коэффициентов блока в убывающем порядке на основе отсчитанных значений, где отсчитанные значения отражают вероятность того, что данная позиция содержит ненулевой коэффициент. После адаптации порядка сканирования модуль 41, 63 сканирования коэффициентов в некоторых случаях может определить, превышают ли какие-либо отсчитанные значения статистических данных пороговое значение (86). Если одна из позиций коэффициентов имеет соответствующее отсчитанное значение, которое превышает порог, то модуль 41, 63 сканирования коэффициентов может нормализовать собранные статистические данные, например значения счетчиков коэффициентов (87). Например, модуль 41, 63 сканирования коэффициентов может нормализовать отсчитанные значения коэффициентов путем уменьшения каждого отсчитанного значения на заранее определенный множитель, например вдвое, чтобы уменьшить каждое из отсчитанных значений наполовину, или повторно установить отсчитанные значения согласно набору исходных отсчитанных значений. Нормализация отсчитанных значений коэффициентов может позволить видеокодеру 20 более быстро адаптироваться к локальным статистическим данным коэффициентов.

После нормализации собранных статистических данных или, если нормализация не выполняется, модуль 41, 63 сканирования коэффициентов сканирует последовательные блоки, используя адаптированный порядок сканирования (88). Модуль 41, 63 сканирования коэффициентов может сканировать по меньшей мере один последующий блок, используя адаптивный порядок сканирования, когда в блоке кодирования ранее отсканированного видеоблока существует по меньшей мере один последующий блок. Модуль 41, 63 сканирования коэффициентов может продолжать сканирование последовательных видеоблоков, пока вновь не будет перестроен порядок кодирования или не произойдет повторная инициализация, например, на границе блока кодирования. Таким образом, модуль 41, 63 сканирования коэффициентов адаптирует порядок сканирования на основе собранных статистических данных для сканирования в первую очередь тех позиций коэффициентов блока, для которых определено, что они имеют более высокую вероятность ненулевого значения, после чего сканировать позиции коэффициентов блока, для которых определено, что они имеют меньшую вероятность нулевого значения. Таким образом, одномерный вектор коэффициентов компонуется так, чтобы способствовать группировке ненулевых коэффициентов ближе к началу отсканированного одномерного вектора, а коэффициентов с нулевыми значениям ближе к концу отсканированного одномерного вектора. В свою очередь, это может повысить уровень сжатия, который можно достигнуть во время энтропийного кодирования.

В некоторых случаях модуль 41, 63 сканирования коэффициентов может адаптивно перестроить порядок сканирования отдельно для каждого режима предсказания, поскольку каждый из режимов предсказания может иметь разные статистические данные о коэффициентах. Другими словами, модуль 41, 63 сканирования коэффициентов может поддерживать отдельные статистические данные для каждого из режимов предсказания и перестраивать порядки сканирования для каждого из режимов предсказания по-разному на основе соответствующих статистических данных. Таким образом, примерная блок схема, описанная выше, может быть реализована модулем 41, 63 сканирования коэффициентов для каждого режима предсказания.

На фиг. 6 представлена блок-схема, иллюстрирующая примерную работу модуля кодирования, такого как модуль 46 энтропийного кодирования в видеокодере 20, который кодирует информацию о заголовке для видеоблока согласно одному из раскрытых здесь способов. Модуль 46 энтропийного кодирования получает информацию о заголовке для блока в виде одного или нескольких синтаксических элементов заголовка (90). Синтаксические элементы заголовка могут идентифицировать конкретные характеристики текущего видеоблока, такие как тип блока, режим предсказания, структуру кодированного блока (CBP) для яркости и/или цветности, разбиение блока, а также один или несколько векторов движения. Фиг. 6 будет описана применительно к кодированию режима предсказания текущего блока. Однако аналогичные способы можно использовать для кодирования других элементов из числа синтаксических элементов заголовка.

Модуль 46 энтропийного кодирования сравнивает режим предсказания текущего блока с режимом предсказания одного или нескольких ранее закодированных блоков (92). Один или несколько ранее закодированных блоков могут содержать, например, один или несколько соседних блоков. В примере на фиг. 6 анализируются два ранее закодированных блока, например, верхний соседний блок и левый соседний блок. Если режим предсказания текущего блока совпадает с режимом предсказания любого из ранее закодированных блоков, то модуль 46 энтропийного кодирования кодирует первый бит для указания на такое совпадение (94). Например, модуль 46 энтропийного кодирования может закодировать первый бит равным «1» для указания на то, что режим предсказания текущего блока совпадает с режимом предсказания любого из ранее закодированных блоков.

Модуль 46 энтропийного кодирования сравнивает режим предсказания верхнего соседнего блока с режимом предсказания левого соседнего блока (98). Если режим предсказания верхнего соседнего блока совпадает с режимом предсказания левого соседнего блока, то модуль 46 энтропийного кодирования не кодирует ни какие другие биты для режима предсказания (100). В этом случае режим предсказания можно закодировать с использованием одного бита.

Однако, если режим предсказания верхнего соседнего блока не совпадает с режимом предсказания левого соседнего блока, то модуль 46 энтропийного кодирования кодирует второй бит, представляющий режим предсказания, чтобы указать, какой из соседних блоков имеет тот же режим предсказания, что и текущий блок (102). Например, модуль 46 энтропийного кодирования может закодировать «1», если режим предсказания текущего блока совпадает с режимом предсказания верхнего соседнего блока, и закодировать «0», если режим предсказания текущего блока совпадает с режимом предсказания левого соседнего блока. По существу, модуль 46 энтропийного кодирования может закодировать режим предсказания текущего блока, используя всего один бит, и максимум два бита, когда режим предсказания текущего блока совпадает с режимом предсказания одного из соседних блоков.

Если режим предсказания текущего блока не совпадает с режимом предсказания любого из ранее закодированных блоков, то модуль 46 энтропийного кодирования кодирует первый бит для указания о таком совпадении (96). В продолжение вышеописанного примера, модуль 46 энтропийного кодирования может закодировать первый бит как «0» для указания на то, что режим предсказания текущего блока не совпадает с режимом предсказания любого из ранее закодированных блоков.

Модуль 46 энтропийного кодирования может перекомпоновать набор возможных режимов предсказания (104). Модуль 46 энтропийного кодирования может перекомпоновать набор возможных режимов предсказания путем удаления режима или режимов предсказания соседних блоков из набора возможных режимов предсказания. Когда верхний и левый соседние блоки имеют разные режимы предсказания, модуль 46 энтропийного кодирования может удалить из набора два режима предсказания. Когда верхний и левый соседние блоки имеют один и тот же режим предсказания, модуль 46 энтропийного кодирования может удалить один режим предсказания (то есть режим предсказания верхнего и левого соседних блоков) из указанного набора. Кроме того, в некоторых случаях модуль 46 энтропийного кодирования может избирательно удалять из набора один или несколько дополнительных режимов кодирования. Когда модуль 46 энтропийного кодирования удаляет один или несколько дополнительных режимов кодирования, модуль 32 предсказания по фиг. 2 также удаляет аналогичные дополнительные режимы кодирования из набора возможных режимов предсказания, так чтобы эти дополнительные режимы кодирования нельзя было выбрать. После удаления одного или нескольких режимов предсказания модуль 46 энтропийного кодирования изменяет номера оставшихся режимов кодирования в наборе.

Модуль 46 энтропийного кодирования кодирует кодовое слово, которое представляет режим кодирования текущего блока (106). Модуль 46 энтропийного кодирования может закодировать режим предсказания текущего видеоблока, используя CAVLC, CABAC или другую методику энтропийного кодирования. Как более подробно описано в связи с фиг. 7, блок 46 кодирования в некоторых случаях адаптивно выбирает контекст кодирования для использования при кодировании режима предсказания текущего блока на основе режимов предсказания одного или нескольких ранее закодированных блоков.

На фиг. 7 представлена блок-схема, иллюстрирующая выбор контекста кодирования согласно одному аспекту изобретения. Как было описано выше, может существовать корреляция между типом режима предсказания текущего блока и типом режима предсказания одного или нескольких ранее закодированных блоков, таких как верхний и левый соседний блок. Например, когда режим предсказания верхнего и левого соседних блоков являются оба однонаправленными режимами предсказания, существует высокая вероятность того, что режим предсказания текущего блока также является однонаправленным режимом предсказания. Аналогичным образом, когда режимы предсказания верхнего и левого соседних блоков являются оба двунаправленными режимами предсказания, существует более высокая вероятность того, что режим предсказания текущего блока также является двунаправленным режимом предсказания.

По существу, модуль 46 энтропийного кодирования может определить, являются ли режимы предсказания верхнего и левого соседних блоков однонаправленными режимами предсказания (112), и выбрать первый контекст кодирования, когда режимы предсказания и верхнего, и левого соседних блоков являются однонаправленными режимами предсказания (114). Первый контекст кодирования моделирует распределение вероятностей для режима предсказания текущего видеоблока, когда режим предсказания и верхнего, и левого соседних блоков является однонаправленным. Распределение вероятности первого контекста кодирования может обеспечить более высокие вероятности для однонаправленных режимов предсказания из набора, чем двунаправленных режимов предсказания из этого же набора. В случае, например, кодирования типа CAVLC в первом контексте кодирования может использоваться таблица кодирования, которая связывает с однонаправленными режимами предсказания более короткие кодовые слова, чем кодовые слова, относящиеся к двунаправленным режимам предсказания.

Когда режимы предсказания и для верхнего, и для левого соседних блоков не являются однонаправленными режимами предсказания, модуль 46 энтропийного кодирования может определить, являются ли и верхний, и левый соседние блоки двунаправленными режимами предсказания (116). Модуль 46 энтропийного кодирования может выбрать второй контекст кодирования, когда режимы предсказания и правого, и левого соседних блоков являются оба двунаправленными режимами предсказания (117). Второй контекст кодирования моделирует распределение вероятности для режима предсказания текущего видеоблока на основе предположения, что существует более высокая вероятность того, что текущим режимом является двунаправленный режим предсказания, а не однонаправленный режим предсказания. Опять же в случае, например, кодирования типа CAVLC во втором контексте кодирования может использоваться таблица кодирования, которая связывает с двунаправленными режимами предсказания более короткие кодовые слова, чем кодовые слова, связанные с однонаправленными режимами предсказания.

Когда режимы предсказания верхнего и левого соседних блоков не являются оба двунаправленными режимами предсказания, то есть режимы предсказания ранее закодированных блоков представляют собой комбинацию двунаправленного и однонаправленного режимов предсказания, модуль 46 энтропийного кодирования может выбрать третий контекст кодирования (118). Третий контекст кодирования создается в предположении, что вероятность текущего режима предсказания более равномерно распределена между однонаправленными режимами предсказания и двунаправленными режимами предсказания в наборе. Например, в случае кодирования типа CAVLC в третьем контексте кодирования может использоваться таблица кодирования, которая связывает кодовые слова с близкой кодовой длиной с режимами двунаправленного предсказания и режимами однонаправленного предсказания.

Модуль 46 энтропийного кодирования кодирует режим предсказания текущего видеоблока согласно выбранному контексту кодирования (119). Выбор разных контекстов кодирования для использования при кодировании режима предсказания текущего видеоблока на основе режимов предсказания одного или нескольких ранее закодированных видеоблоков может привести к более эффективному сжатию информации о режиме предсказания. Аналогичный способ выбора контекста кодирования реализуется блоком 60 декодирования, так что блок 60 декодирования может точно декодировать режимы предсказания видеоблоков.

На фиг. 8 представлена блок-схема, иллюстрирующая примерную работу модуля декодирования, такого как модуль 60 энтропийного декодирования в видеодекодере 26, который декодирует информацию о заголовке видеоблока согласно раскрытым здесь способам. Модуль 60 энтропийного декодирования декодирует закодированный битовый видеопоток для получения информации о заголовке, например, в виде одного или нескольких синтаксических элементов заголовка. Модуль 60 энтропийного декодирования, выполняющий декодирование режимов предсказания, описан как пример. Упомянутые способы можно распространить на декодирование других синтаксических элементов заголовка, таких как тип блока, разбиение блока, структура CBP или т.п.

В частности модуль 60 энтропийного декодирования получает первый бит, представляющий режим предсказания текущего блока (120). Модуль 60 энтропийного декодирования определяет, указывает ли первый бит, представляющий режим предсказания, что режим предсказания текущего блока совпадает с режимом предсказания ранее декодированного блока, например, либо верхнего, либо левого соседнего блока (122). Модуль 60 энтропийного декодирования может, например, определить, что режим предсказания текущего блока совпадает с режимом предсказания верхнего или левого соседнего блока, когда первый бит равен «1» и что режим предсказания текущего блока не таков, как режим предсказания и верхнего, и левого соседних блоков, когда первый бит равен «0».

После того как модуль 60 энтропийного декодирования определяет, что режим предсказания текущего блока совпадает с режимом предсказания верхнего или левого соседнего блока, модуль 60 энтропийного декодирования определяет, одинаковы ли режим предсказания верхнего соседнего блока и режим предсказания левого соседнего блока (124). Когда режим предсказания верхнего соседнего блока совпадает с режимом предсказания левого соседнего блока, больше не получают бит, представляющих режим предсказания текущего видеоблока, и модуль 60 энтропийного декодирования выбирает в качестве режима предсказания текущего блока режим предсказания любого из соседних блоков. Когда режим предсказания верхнего соседнего блока и режим предсказания левого соседнего блока разные, получают один дополнительный бит, представляющий режим предсказания, и модуль 60 энтропийного декодирования выбирает режим предсказания соответствующего соседнего блока в качестве режима предсказания текущего блока на основе следующего полученного бита, представляющего режим предсказания (128). Например, модуль 60 энтропийного декодирования может выбрать режим предсказания верхнего соседнего блока в качестве режима предсказания текущего блока, когда следующий полученный бит равен «1», и выбрать режим предсказания левого соседнего блока в качестве режима предсказания текущего блока, когда следующим полученным битом является «0».

Когда модуль 60 энтропийного декодирования определяет, что режим предсказания текущего блока не совпадает с режимом предсказания любого из соседних блоков (верхнего и левого), то есть когда первый бит, представляющий режим предсказания, равен «0», модуль 60 энтропийного декодирования может удалить из набора возможных режимов предсказания один или несколько режимов предсказания (130). Модуль 60 энтропийного декодирования может удалить из набора возможных режимов предсказания режимы предсказания верхнего и левого соседних блоков. Если верхний и левый соседние блоки имеют одинаковый режим предсказания, модуль 60 энтропийного декодирования может удалить этот режим предсказания соседних блоков и по меньшей мере еще один режим предсказания, как было подробно описано выше.

Модуль 60 энтропийного декодирования декодирует остальные биты, например, четыре бита в описанном примере, чтобы получить номер режима предсказания для текущего блока (132). Модуль 60 энтропийного декодирования может изменить нумерацию оставшихся режимов предсказания (134) обратным образом по отношению к процессу изменения нумерации режимов предсказания, выполненному модулем 46 энтропийного кодирования. В одном примере модуль 60 энтропийного декодирования может перенумеровать декодированные режимы предсказания (в диапазоне от 0 до 15) вернувшись к исходной нумерации режимов предсказания (в диапазоне от 0 до 17), путем обратного введения режимов предсказания, которые были удалены. В некоторых случаях модуль 60 энтропийного декодирования может выбрать другие контексты кодирования для режима предсказания блока на основе режимов предсказания одного или нескольких ранее декодированных видеоблоков, например, на основе того, являются ли режимы предсказания ранее декодированных блоков оба однонаправленными, оба двунаправленными или один однонаправленным, а другой двунаправленным, как было подробно описано выше. Модуль 60 энтропийного декодирования предоставляет режим предсказания модулю 62 предсказания для создания блока предсказания согласно выбранному режиму предсказания (136). Как было описано в связи с фиг. 3, блок предсказания объединяется с остаточными пиксельными значениями для создания восстановленного блока для его представления пользователю.

Описанные в этом изобретении способы можно реализовать аппаратными средствами, программными средствами, программно-аппаратными средствами или любой их комбинацией. Любые функции, описанные в виде блоков или компонент, могут быть реализованы совместно в интегральном логическом устройстве или по отдельности в виде дискретных, но взаимосвязано функционирующих логических устройств. В случае программной реализации описанные способы можно реализовать, по меньшей мере частично, с помощью считываемого компьютером носителя, содержащего команды, которые при их исполнении реализуют один или несколько вышеописанных способов. Считываемый компьютером носитель может составлять часть компьютерного программного продукта, который может включать в себя упаковочные материалы. Считываемый компьютером носитель может содержать память с произвольной выборкой (RAM), например, синхронную динамическую память с произвольным доступом (SDRAM), память только для считывания (ROM), энергонезависимую память с произвольным доступом (NVRAM), электрически стираемую программируемую память только для считывания (EEPROM), флеш-память, магнитные или оптические накопители данных и т.п. Описанные способы, кроме того, или в альтернативном варианте, можно реализовать, по меньшей мере частично, посредством считываемой компьютером среды связи, которая переносит или передает код в виде команд или структур данных, причем к этому коду может быть осуществлен доступ и он может считываться и/или выполняться компьютером.

Упомянутый код может исполняться одним или несколькими процессорами, такими как один или несколько цифровых процессоров сигналов (DSP), микропроцессоры общего назначения, прикладные специализированные интегральные схемы (ASIC), логические матрицы, программируемые пользователем (FPGA), или иные эквивалентные интегральные или логические схемы. Соответственно, используемый здесь термин «процессор» может относиться к любой вышеупомянутой структуре или любой иной структуре, подходящей для реализации описанных здесь способов. Вдобавок, согласно некоторым аспектам описанные здесь функциональные возможности могут быть обеспечены в рамках специализированных программных модулей или аппаратных модулей, сконфигурированных для кодирования и декодирования, или включенных в комбинированный видеокодер - видеодекодер (CODEC). Предполагается, что описание различных функций в виде блоков, подчеркивает различные функциональные аспекты показанных устройств, причем не обязательно считать, что указанные блоки должны быть реализованы отдельными аппаратными или программными компонентами. Скорее наоборот, функциональные возможности, связанные с одним или несколькими модулями, могут быть интегрированы в общих или отдельных аппаратных или программных компонент.

Здесь были описаны различные варианты осуществления изобретения. Эти и другие варианты не выходят за рамки объема нижеследующей формулы изобретения.

Класс H04N7/30 с использованием кодирования с преобразованием

способ и устройство для кодирования и декодирования изображения посредством использования вращательного преобразования -  патент 2504103 (10.01.2014)
способ удаления блочности, устройство для удаления блочности, программа для удаления блочности и машиночитаемый носитель записи, записываемый посредством этой программы -  патент 2499360 (20.11.2013)
способ сжатия графических файлов -  патент 2498407 (10.11.2013)
эффективные аппроксимации с фиксированной запятой прямого и обратного дискретных косинусных преобразований -  патент 2496139 (20.10.2013)
способ и система для получения, сжатия и передачи изображений земной поверхности -  патент 2494459 (27.09.2013)
квантование "скорость-искажение" для контекстно-зависимого адаптивного кодирования с переменной длиной кодового слова (cavlc) -  патент 2480940 (27.04.2013)
устройство и способ обработки информации -  патент 2479937 (20.04.2013)
универсальная корректировка блочности изображения -  патент 2472304 (10.01.2013)
способ и устройство для предоставления режима изменения уменьшенного разрешения для многовидового кодирования видеосигнала -  патент 2457632 (27.07.2012)
адаптивное сканирование коэффициентов при кодировании видео -  патент 2447612 (10.04.2012)
Наверх