адаптивное сканирование коэффициентов для кодирования видео

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

Изобретение относится к способам кодирования и декодирования для видеоизображений с пространственным и временным предсказанием для уменьшения или удаления избыточности, свойственной видеопоследовательностям. Техническим результатом является повышение эффективности кодирования видеоизображений. Указанный технический результат достигается тем, что предложен способ сканирования коэффициентов видеоблоков, в котором адаптируют порядок сканирования, используемый для сканирования двумерного блока коэффициентов в одномерный вектор коэффициентов на основе статистических данных, связанных с одним или несколькими предварительно кодированными блоками. Например, статистические данные, которые указывают вероятность того, что заданное значение коэффициента в каждой позиции двумерного блока равно нулю или отличается от нуля, могут быть собраны для одного или нескольких предварительно кодированных блоков. Установка порядка сканирования может быть выполнена для большей гарантии того, что ненулевые коэффициенты сгруппируются в передней части одномерного вектора коэффициентов. Сбор статистических данных и установка порядка сканирования могут быть выполнены отдельно для каждого возможного режима предсказания. 4 н. и 50 з.п. ф-лы, 8 ил.адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615

адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615 адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615 адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615 адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615 адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615 адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615 адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615

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

1. Способ кодирования видеоданных, содержащий этапы, на которых

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

14. Устройство, которое кодирует видеоданные, содержащее

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

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

15. Устройство по п.14, в котором блок сканирования устанавливает порядок сканирования коэффициентов, определенный для первого набора видеоблоков, после фиксированного интервала для формирования установленного порядка сканирования коэффициентов, определенного для первого набора видеоблоков.

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

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

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

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

20. Устройство по п.14, в котором блок сканирования нормализует первые собранные статистические данные.

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

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

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

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

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

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

27. Устройство по п.14, причем устройство включает в себя устройство беспроводной связи.

28. Устройство по п.14, причем устройство включает в себя устройство с интегральной схемой.

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

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

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

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

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

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

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

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

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

статистически кодировать значения коэффициентов.

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

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

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

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

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

35. Машиночитаемый носитель информации по п.29, в котором команды предписывают устройству нормализовать первые собранные статистические данные.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

43. Устройство по п.42, в котором средство установки адаптирует порядок сканирования коэффициентов, определенный для первого набора видеоблоков, после фиксированного интервала для формирования установленного порядка сканирования коэффициентов, определенного для первого набора видеоблоков.

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

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

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

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

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

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

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

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

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

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

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

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

Родственные заявки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Способы, описанные в настоящем раскрытии, могут быть реализованы в аппаратных средствах, программных средствах, микропрограммных средствах или же посредством любой комбинации вышеперечисленного. При программной реализации программные средства могут быть выполнены в процессоре, который может являться одним или несколькими процессорами, таким как микропроцессор, специализированная интегральная микросхема (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 может формировать данные, основанные на компьютерной графике, в качестве исходного видео, или комбинацию живого видео и видео, сформированного на компьютере. В некоторых случаях, когда видеоисточник 18 может являться видеокамерой, устройство-источник 12 может являться так называемым камерофоном или видеотелефоном. В каждом случае захваченное, предварительно захваченное или сформированное на компьютере видео может быть закодировано посредством видеокодера 20 для передачи с устройства-источника 12 на устройство-получатель 14 посредством передатчика 22 и канала 16 связи.

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

Видеоблоки могут иметь фиксированный или переменный размер, а также могут отличаться по размеру, в соответствии с определенным стандартом кодирования. В качестве примера, стандарт сектора по стандартизации телекоммуникаций в составе международного телекоммуникационного союза (ITU-T) H.264/ часть 10 MPEG-4 продвинутое кодирование видео (AVC) (далее стандарт «Н.264/часть 10 MPEG-4 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), может быть подразделен на подблоки меньшего размера, а также предсказан в подблоках. В целом, макроблоки МВ и различные подблоки могут рассматриваться в качестве видеоблоков. Следовательно, макроблоки МВ могут рассматриваться в качестве видеоблоков, и в случае подразделения или подразбиения макроблоки МВ могут быть самостоятельно рассмотрены для определения наборов видеоблоков.

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

Видеокодер 20 также выбирает для каждого видеоблока режим предсказания. Что касается видеоблока, кодированного с применением внутрикадрового кодирования, режим предсказания может определить способ предсказания текущего видеоблока с использованием одного или нескольких предварительно кодированных видеоблоков. Например, в стандарте H.264/часть 10 MPEG-4 AVC видеокодер 20 может выбрать один из девяти возможных режимов однонаправленного предсказания для каждого блока внутрикадрового предсказания, имеющего размер, равный 4×4: режим предсказания по вертикали, режим предсказания по горизонтали, режим предсказания DC, режим предсказания по нижней левой диагонали, режим предсказания по нижней правой диагонали, режим предсказания по правой вертикали, режим предсказания по нижней горизонтали, режим предсказания по левой вертикали и режим предсказания по верхней горизонтали. Подобные режимы предсказания используются для предсказания каждого блока внутрикадрового предсказания, имеющего размер, равный 8×8. Для блока внутрикадрового предсказания, имеющего размер 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), дисплей на органических светодиодах (OLED) или дисплей другого типа.

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

Видеокодер 20 и видеодекодер 26 могут работать в соответствии с любым множеством стандартов сжатия видео, таких как стандарты, определенные посредством экспертной группы по вопросам движущегося изображения (MPEG) в MPEG-1, MPEG-2 и MPEG-4, стандарт ITU-T H.263, стандарт 421M видеокодека общества инженеров по кино и телевидению (SMPTE) (как правило, называемый «VC-1»), стандарт, определенный посредством рабочей группы Китая по стандартизации кодирования аудио и видео (как правило, называемый «AVS»), а также любой другой стандарт кодирования видео, определенный посредством органа стандартизации или разработанный посредством организации в качестве специального стандарта. Несмотря на то, что на Фиг.1 не изображено, в некоторых аспектах как видеокодер 20, так и видеодекодер 26 могут быть объединены с кодером и декодером аудио, соответственно, а также могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексирования/демультиплексирования) или другие аппаратные средства и программные средства для обработки кодирования как аудио, так и видео в общем потоке данных или же в отдельных потоках данных. В этом способе устройство-источник 12 и устройство-получатель 14 могут работать с мультимедийными данными. В случае необходимости блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол передачи пользовательских датаграмм (UDP).

В некоторых аспектах при широковещательной передаче видео описанные в настоящем раскрытии способы могут быть применены к расширенному стандарту Н.264 кодирования видео для предоставления услуг передачи видео в реальном времени в мобильных системах наземной многоадресной передачи мультимедийных данных (TM3) с использованием спецификации радиоинтерфейса односторонней передачи данных по прямой линии связи (FLO). «Спецификация радиоинтерфейса односторонней передачи данных по прямой линии связи для наземной мобильной многоадресной передачи мультимедийных данных» была опубликована в июле 2007 года в качестве технического стандарта TIA-1099 («Спецификация FLO»). То есть канал 16 связи может включать в себя информационный радиоканал, используемый для беспроводной рассылки видеоинформации, в соответствии со спецификацией FLO или подобной. Спецификация FLO включает в себя примеры, определяющие синтаксис битового потока, а также семантику и процессы декодирования, подходящие для радиоинтерфейса FLO.

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

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

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

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

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

Блок 30 разбиения принимает видеоинформацию (обозначенную на Фиг.2 как «ВВОД ВИДЕОИНФОРМАЦИИ»), например, в виде последовательности видеокадров, от видеоисточника 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/часть 10 MPEG-4 AVC, и режимы двунаправленного предсказания, которые определяют различные комбинации двух режимов однонаправленного предсказания.

Например, для типа блока внутрикадрового предсказания, имеющего размер, равный 4×4, набор режимов предсказания может включать в себя девять режимов однонаправленного предсказания, определенных в стандарте H.264/часть 10 MPEG-4 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 являются режимами предсказания блока внутрикадрового предсказания, имеющего размер, равный 4×4, определенными в стандарте H.264/часть 10 MPEG-4 AVC. Режимы 9-17 являются подмножеством возможных режимов двунаправленного предсказания. Подмножество возможных режимов двунаправленного предсказания в предоставленном примере включает в себя, по меньшей мере, одну комбинацию, которая включает каждый режим однонаправленного предсказания. Каждый режим двунаправленного предсказания, помимо режимов двунаправленного предсказания, которые включают в себя режим предсказания DC (например, режим 10 и 11), комбинирует режимы однонаправленного предсказания, имеющие направления интерполяции, которые не являются параллельными и, в некоторых случаях, по существу, ортогональны друг другу. Другими словами, подмножество режимов двунаправленного предсказания включает в себя режимы двунаправленного предсказания, которые, в целом, комбинируют режимы предсказания из «вертикальной» категории с режимами предсказания из «горизонтальной» категории. Такие режимы двунаправленного предсказания предоставляют процессу внутрикадрового предсказания возможность комбинирования доступных пикселей предсказания из отдаленных позиций, следовательно, повышая качество предсказания для большего количества пиксельных позиций, находящихся в пределах текущего видеоблока.

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

Для определения того, какой режим предсказания выбрать из множества режимов предсказания для конкретного блока, блок 32 предсказания может вычислить стоимость кодирования, например множитель Лагранжа, для каждого режима предсказания из набора, а также выбрать режим предсказания с наименьшей стоимостью кодирования. В других случаях блок 32 предсказания может вычислить стоимость кодирования только для части набора возможных режимов предсказания. Например, блок 32 предсказания может выбрать часть режимов предсказания из набора на основе режима предсказания, выбранного для одного или нескольких соседних видеоблоков. Блок 32 предсказания формирует блок предсказания с использованием выбранного режима предсказания.

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

Блок 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 преобразования может поддерживать восемнадцать различных направленных преобразований, каждое из которых соответствует одному из восемнадцати возможных режимов предсказания кадров внутрикадрового предсказания, имеющих размер, равный 4×4. Кроме того, блок 38 преобразования может поддерживать восемнадцать различных направленных преобразований для восемнадцати возможных режимов предсказания кадров внутрикадрового предсказания, имеющих размер, равный 8x8, а также четыре различных направленных преобразования для четырех возможных режимов предсказания кадров внутрикадрового предсказания, имеющих размер, равный 16×16, и помимо всего прочего, преобразования для любых других режимов предсказания других размеров разбиения. Применение отдельных направленных преобразований на основе выбранного режима предсказания блока увеличивает эффективность, с которой захватывается остаточная энергия, в частности, для блоков, для которых выбраны режимы предсказания, которые указывают существенную направленность. Направленные преобразования могут являться неразделимыми направленными преобразованиями, например полученными из неразделимых преобразований Карунена Лоэва (KLT), или разделимыми направленными преобразованиями. В некоторых случаях направленные преобразования могут быть предварительно вычислены с использованием настроечной последовательности данных.

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

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

то остаточный вектор x, имеющий длину, равную 16, описывается как

x=[x00, x01 , x02, x03, x10, x11 , x12, x13, x20, x21 , x22, x23, x30, x31 , x32, x33].

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

адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615

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

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

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

адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615

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

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

Таблица 1

Сложность неразделимых направленных преобразований сравнительно с разделимыми направленными преобразованиями
адаптивное сканирование коэффициентов для кодирования видео, патент № 2446615 Размер блока Неразделимое преобразование Разделимое преобразование
Информационный объем памяти для всех режимов 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 как «ВОССТАНОВЛЕНИЕ ОСТАТОЧНОГО БЛОКА»). Блок 48B суммирования добавляет восстановленный остаточный блок к блоку предсказания, сформированному посредством блока 32 предсказания, для формирования восстановленного видеоблока для сохранения в блоке 34 сохранения. Восстановленный видеоблок может быть использован посредством блока 32 предсказания для внутрикадрового или межкадрового кодирования последующего видеоблока.

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

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

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

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

Даже если начальный порядок сканирования определен с использованием одного из вышеописанных способов, различные типы видеоисточников могут привести к тому, что квантованные остаточные коэффициенты будут располагаться в различных позициях коэффициентов в пределах блока. Например, видеоисточники различного разрешения, например видеоисточники единого промежуточного формата (CIF), четверти CIF (QCIF) и высокого разрешения (например, 720p/i или 1080p/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 сканирования коэффициентов может нормализовать коэффициенты посредством уменьшения каждого счетного значения посредством множителя 2 или посредством сброса счетных значений в набор начальных счетных значений. Блок 41 сканирования коэффициентов может использовать и другие способы нормализации. Например, блок 41 сканирования коэффициентов может освежить статистические данные после кодирования конкретного количества блоков.

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

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

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

Пусть upMode является режимом предсказания верхнего блока

Пусть leftMode является режимом предсказания левого блока

Пусть currMode является режимом предсказания текущего блока

Если currMode == upMode || currMode == leftMode

Посылка «1»

Если upMode != leftMode

Посылка «1» если currMode == upMode или «0» иначе

Посылка «0»

Установка currMode в диапазоне [0, 15]

Посылка currMode с использованием 4 бит

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

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

Однако, если режим предсказания верхнего соседнего блока не эквивалентен режиму предсказания левого соседнего блока, то блок 46 статистического кодирования кодирует, по меньшей мере, один дополнительный бит, представляющий режим предсказания, для определения того, какой из соседних блоков имеет режим предсказания, аналогичный режиму предсказания текущего блока. Например, когда блок 46 статистического кодирования анализирует режим предсказания верхнего и левого соседних блоков, блок 46 статистического кодирования может кодировать «1» в случае, если режим предсказания текущего блока является аналогичным режиму предсказания верхнего соседнего блока, а также кодирует «0» в случае, если режим предсказания текущего блока является аналогичным режиму предсказания левого соседнего блока. Альтернативно, блок 46 статистического кодирования может кодировать «1» в случае, если режим предсказания текущего блока является аналогичным режиму предсказания левого соседнего блока, а также кодирует «0» в случае, если режим предсказания текущего блока является аналогичным режиму предсказания верхнего соседнего блока. В любом случае второй бит кодированного режима предсказания указывает на то, верхний или левый соседний блок имеет режим предсказания, аналогичный режиму предсказания текущего блока. Таким образом, блок 46 статистического кодирования может кодировать режим предсказания текущего блока с использованием минимально - одного бита, и максимально - двух битов, когда режим предсказания текущего блока является эквивалентным режиму предсказания одного из соседних блоков. Если блок 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 для различных кодируемых контекстов могут быть определены различные таблицы кодирования VLC. Например, если выбран первый кодируемый контекст (то есть и верхний, и левый соседние блоки имеют режимы однонаправленного предсказания), то может быть использована таблица кодирования 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 статистического декодирования, выполняющего декодирование синтаксического элемента режима предсказания, дано в иллюстративных целях. Способы могут быть расширены для декодирования других синтаксических элементов, таких как тип блока, разбиение блока, содержимое СВР или подобное.

В частности, блок 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 сканирования коэффициентов видеокодера 20, блок 63 сканирования коэффициентов видеодекодера 26 может собрать статистические данные и установить порядок сканирования подобным способом.

Изначально блок 41 сканирования коэффициентов может сканировать коэффициенты блока 1 с использованием зигзагообразного порядка сканирования. В этом случае блок 41 сканирования коэффициентов сканирует позиции коэффициентов блока 1 в следующем порядке: с1, c2, c5, c9, c6, c3, c4, c7, c10, c13, c14, с11, c8, c12, c15, c16. Следовательно, после сканирования коэффициентов блока 1 блок 41 сканирования коэффициентов выводит одномерный вектор v коэффициентов, где v=[9, 4, 6, 1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0]. Несмотря на то, что в иллюстрированном на Фиг.4 примере блок 41 сканирования коэффициентов изначально сканирует коэффициенты блока 1 с использованием зигзагообразного порядка сканирования, зигзагообразное сканирование не является единственной возможной отправной точкой для адаптивного сканирования. Сканирование по горизонтали, сканирование по вертикали или же любая другая начальная последовательность сканирования может быть использована в качестве начального порядка сканирования. Использование зигзагообразного сканирования приводит к тому, что одномерный вектор v коэффициентов между двумя ненулевыми коэффициентами имеет интервал из четырех нулей.

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

Блок 41 сканирования коэффициентов может адаптировать порядок сканирования на основе собранных статистических данных. В иллюстрированном примере блок 41 сканирования коэффициентов может быть сконфигурирован для адаптации порядка сканирования после четырех видеоблоков на основе статистических данных 4 (79). В этом случае блок 41 сканирования коэффициентов анализирует собранные статистические данные, а также адаптирует порядок сканирования таким образом, чтобы позиции коэффициентов сканировались в порядке убывания посредством их соответствующих счетных значений. По существу, блок 41 сканирования коэффициентов может отсканировать блоки 1-4 в соответствии с начальным порядком сканирования, а также адаптировать порядок сканирования для сканирования позиций последующего блока, например блока 5 (не показан), в следующем порядке: с1, c5, c9, c2, c13, с6, c3, c4, c7, c10, c14, с11, c8, c12, c15, c16. Блок 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 сканирования коэффициентов решают не вычислять порядок сканирования, то блоки 41, 63 сканирования коэффициентов сканируют последующий блок в соответствии с начальным порядком (80) сканирования. Если блоки 41, 63 сканирования коэффициентов решают вычислять порядок сканирования, например, после кодирования/декодирования n блоков, то блок сканирования коэффициентов может адаптировать порядок сканирования на основе собранных статистических данных (84). Например, блоки 41, 63 сканирования коэффициентов могут адаптировать порядок сканирования для сканирования позиций коэффициентов блока в порядке убывания, на основе их счетных значений, где счетные значения отражают вероятность ненулевого коэффициента данной позиции. В некоторых случаях после адаптации порядка сканирования блоки 41, 63 сканирования коэффициентов могут определить, превышают ли какие-либо счетные значения статистических данных пороговое значение (86). Если одна из позиций коэффициентов имеет соответствующее счетное значение, которое превышает порог, то блоки 41, 63 сканирования коэффициентов могут нормализовать собранные статистические данные, например счетные значения коэффициента (87). Например, блоки 41, 63 сканирования коэффициентов могут нормализовать счетные значения коэффициентов посредством уменьшения каждого счетного значения с помощью предварительно определенного множителя, например 2, для половинного уменьшения каждого счетного значения или посредством повторной установки счетных значений в набор начальных счетных значений. Нормализация счетных значений коэффициентов может предоставить видеокодеру 20 возможность более быстрой адаптации к локальным статистическим данным коэффициентов.

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

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

Фиг.6 изображает схему последовательности операций, отображающую иллюстративную работу блока кодирования, такого как блок 46 статистического кодирования видеокодера 20, кодирующего информацию заголовка для видеоблока, в соответствии с одним из способов настоящего раскрытия. Блок 46 статистического кодирования принимает информацию заголовка для блока в форме одного или нескольких синтаксических элементов заголовка (90). Синтаксические элементы заголовка могут идентифицировать конкретные параметры текущего видеоблока, такие как тип блока, режим предсказания, кодированное содержимое блока (СВР) для яркости и/или насыщенности цвета, разбиение блока, а также один или несколько векторов движения. Фиг.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 декодирования 60 мог точно декодировать режимы предсказания видеоблоков.

Фиг.8 изображает схему последовательности операций, отображающую иллюстративную работу блока декодирования, такого как блок 60 статистического декодирования видеодекодера 26, декодирующего информацию заголовка видеоблока в соответствии со способами настоящего раскрытия. Блок 60 статистического декодирования декодирует кодированный битовый видеопоток для получения информации заголовка, например, в форме одного или нескольких синтаксических элементов заголовка. Описание блока 60 статистического декодирования, выполняющего декодирование режима предсказания, дано в иллюстративных целях. Способы могут быть расширены для декодирования других синтаксических элементов заголовка, таких как тип блока, разбиение блока, содержимое СВР или подобных.

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

Если блок 60 статистического декодирования определяет, что режим предсказания текущего блока является аналогичным режиму предсказания верхнего или левого соседнего блока, то блок 60 статистического декодирования определяет, является ли режим предсказания верхнего соседнего блока аналогичным режиму предсказания левого соседнего блока (124). Если режим предсказания верхнего соседнего блока и режим предсказания левого соседнего блока являются аналогичными, то больше не принимаются биты, представляющие режим предсказания текущего видеоблока и блок 60 статистического декодирования выбирает режим предсказания любого соседнего блока в качестве режима предсказания текущего блока (126). Если режим предсказания верхнего соседнего блока и режим предсказания левого соседнего блока являются различными, то принимается один дополнительный бит, представляющий режим предсказания, и блок 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) или другой эквивалентной интегрированной или дискретной логической схемы. Соответственно, используемый в настоящем документе термин «процессор» может относиться к любой предшествующей структуре или же к любой другой структуре, подходящей для варианта осуществления описанных в настоящем документе способов. Кроме того, в некоторых аспектах описанные в настоящем документе функциональные возможности могут быть обеспечены в пределах специализированных программных блоков или аппаратных блоков, сконфигурированных для кодирования и декодирования, или включены в комбинированный кодер-декодер видео (КОДЕР-ДЕКОДЕР). Описание различных отличительных признаков в качестве блоков предназначено для выделения различных функциональных аспектов иллюстрированных устройств и не обязывает подразумевать то, что такие блоки должны быть реализованы посредством отдельных компонентов аппаратных или программных средств. Скорее всего, функциональные возможности, связанные с одним или несколькими блоками, могут быть объединены в пределах общих или отдельных компонентов аппаратных или программных средств.

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

Класс 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)
отделимые направленные преобразования -  патент 2463729 (10.10.2012)
способ и устройство для предоставления режима изменения уменьшенного разрешения для многовидового кодирования видеосигнала -  патент 2457632 (27.07.2012)
Наверх