СПОСОБ И УСТРОЙСТВО ДЛЯ ЭНТРОПИЙНОГО КОДИРОВАНИЯ ВИДЕО И СПОСОБ И УСТРОЙСТВО ДЛЯ ЭНТРОПИЙНОГО ДЕКОДИРОВАНИЯ ВИДЕО
METHOD AND DEVICE FOR ENTROPY VIDEO ENCODING AND ENTROPY VIDEO DECODING METHOD AND DEVICE

Область техники, к которой относится изобретение
Один или несколько вариантов осуществления настоящего изобретения относятся к кодированию и декодированию видео и, в частности, к способу и устройству для энтропийного кодирования и декодирования информации, относящейся к блоку преобразования.
Уровень техники
Согласно способам сжатия изображений, таким как MPEG-1, MPEG-2 или улучшенное кодирование видео (AVC) MPEG-4 H.264/MPEG-4, изображение разбивается на блоки, имеющие предварительно определенный размер, и затем остаточные данные блоков получаются путем промежуточного предсказания или внутреннего предсказания. Остаточные данные сжимаются путем преобразования, квантования, сканирования, кодирования длин серий и энтропийного кодирования. При энтропийном кодировании синтаксический элемент, такой как коэффициент преобразования или режим предсказания, энтропийно кодируется для вывода битового потока. Декодер выполняет синтаксический анализ и извлекает синтаксические элементы из битового потока и восстанавливает изображение на основе извлеченных синтаксических элементов.
Сущность изобретения
Техническая задача
Один или несколько вариантов осуществления настоящего изобретения включают в себя способ и устройство энтропийного кодирования, и способ и устройство энтропийного декодирования для выбора контекстной модели, используемой для энтропийного кодирования и декодирования синтаксического элемента, относящегося к блоку преобразования, то есть блоку данных, используемому для преобразования блока кодирования, на основе глубины преобразования, указывающей иерархическое взаимоотношение разбиения между блоком кодирования и блоком преобразования.
Техническое решение
Контекстная модель для арифметического декодирования флага значимого коэффициента блока преобразования определяется на основе глубины преобразования, указывающей количество раз, когда блок кодирования разбивается, для определения блока преобразования, включенного в блок кодирования, и флаг значимого коэффициента блока преобразования арифметически декодируется на основе определенной контекстной модели.
Полезные эффекты
Согласно вариантам осуществления настоящего изобретения, путем выбора контекстной модели на основе глубины преобразования условие для выбора контекстной модели может быть упрощено, и операция для энтропийного кодирования и декодирования может также быть упрощена.
Краткое описание чертежей
Фиг. 1 изображает структурную схему устройства кодирования видео согласно одному варианту осуществления настоящего изобретения.
Фиг. 2 изображает структурную схему устройства декодирования видео согласно одному варианту осуществления настоящего изобретения.
Фиг. 3 изображает схему для описания концепции блоков кодирования согласно одному варианту осуществления настоящего изобретения.
Фиг. 4 изображает структурную схему кодера видео на основе блоков кодирования, имеющих иерархическую структуру, согласно одному варианту осуществления настоящего изобретения.
Фиг. 5 изображает структурную схему декодера видео на основе блоков кодирования, имеющих иерархическую структуру, согласно одному варианту осуществления настоящего изобретения.
Фиг. 6 изображает схему, иллюстрирующую более глубокие блоки кодирования согласно глубинам и сегменты, согласно одному варианту осуществления настоящего изобретения.
Фиг. 7 изображает схему для описания отношения между блоком кодирования и блоками преобразования согласно одному варианту осуществления настоящего изобретения.
Фиг. 8 изображает схему для описания информации кодирования блоков кодирования, соответствующих кодируемой глубине, согласно одному варианту осуществления настоящего изобретения.
Фиг. 9 изображает схему более глубоких блоков кодирования согласно глубинам согласно одному варианту осуществления настоящего изобретения.
Фиг. 10-12 изображают схемы для описания отношения между блоками кодирования, блоками предсказания и блоками преобразования частоты согласно одному варианту осуществления настоящего изобретения.
Фиг. 13 изображает схему для описания отношения между блоком кодирования, блоком предсказания и блоком преобразования согласно информации режима кодирования из таблицы 1.
Фиг. 14 изображает структурную схему устройства энтропийного кодирования согласно одному варианту осуществления настоящего изобретения.
Фиг. 15 изображает блок-схему операции энтропийного кодирования и декодирования синтаксического элемента, относящегося к блоку преобразования, согласно одному варианту осуществления настоящего изобретения.
Фиг. 16 изображает схему, иллюстрирующую блок кодирования и блоки преобразования, включенные в блок кодирования, согласно одному варианту осуществления настоящего изобретения.
Фиг. 17 изображает схему, иллюстрирующую параметр увеличения контекста, используемый для определения контекстной модели флага значимого коэффициента блока преобразования каждого из блоков преобразования с фиг. 16, на основе глубины преобразования.
Фиг. 18 изображает схему, иллюстрирующую блок кодирования и блок преобразования, включенный в блок кодирования, согласно другому варианту осуществления настоящего изобретения.
Фиг. 19 изображает схему, иллюстрирующую флаги преобразования разбиения, используемые для определения структуры блоков преобразования, включенных в блок кодирования с фиг. 16, согласно одному варианту осуществления настоящего изобретения.
Фиг. 20 изображает блок преобразования, который энтропийно кодируется, согласно одному варианту осуществления настоящего изобретения.
Фиг. 21 изображает карту значимости, соответствующую блоку преобразования с фиг. 20.
Фиг. 22 изображает coeff_abs_level_greater1_flag, соответствующий блоку преобразования 4×4 с фиг. 20.
Фиг. 23 изображает coeff_abs_level_greater2_flag, соответствующий блоку преобразования 4×4 с фиг. 20.
Фиг. 24 изображает coeff_abs_level_remaining, соответствующий блоку преобразования 4×4 с фиг. 20.
Фиг. 25 изображает блок-схему способа энтропийного кодирования видео согласно одному варианту осуществления настоящего изобретения.
Фиг. 26 изображает структурную схему устройства энтропийного декодирования согласно одному варианту осуществления настоящего изобретения.
Фиг. 27 изображает блок-схему способа энтропийного декодирования видео согласно одному варианту осуществления настоящего изобретения.
Предпочтительный вариант осуществления изобретения
Согласно одному или нескольким вариантам осуществления настоящего изобретения, способ энтропийного декодирования видео, причем способ включает в себя определение блока преобразования, включенного в блок кодирования и используемого для обратного преобразования блока кодирования; получение флага значимого коэффициента блока преобразования, указывающего, существует ли ненулевой коэффициент преобразования в блоке преобразования, из битового потока; если количество раз, когда блок кодирования разбивается для определения блока преобразования, называется глубиной преобразования блока преобразования, определение контекстной модели для арифметического декодирования флага значимого коэффициента блока преобразования, на основе глубины преобразования блока преобразования; и арифметическое декодирование флага значимого коэффициента блока преобразования на основе определенной контекстной модели.
Согласно одному или нескольким вариантам осуществления настоящего изобретения, устройство энтропийного декодирования видео, причем устройство включает в себя синтаксический анализатор для получения флага значимого коэффициента блока преобразования, указывающего, существует ли ненулевой коэффициент преобразования в блоке преобразования, включенном в блок кодирования и используемом для обратного преобразования блока кодирования, из битового потока; средство моделирования контекстов для того, чтобы, если количество раз, когда блок кодирования разбивается для определения блока преобразования, называется глубиной преобразования блока преобразования, определять контекстную модель для арифметического декодирования флага значимого коэффициента блока преобразования, на основе глубины преобразования блока преобразования; и арифметический декодер для арифметического декодирования флага значимого коэффициента блока преобразования на основе определенной контекстной модели.
Согласно одному или нескольким вариантам осуществления настоящего изобретения, способ энтропийного кодирования видео, причем способ включает в себя получение данных блока кодирования, преобразованного на основе блока преобразования; если количество раз, когда блок кодирования разбивается для определения блока преобразования, называется глубиной преобразования блока преобразования, определение контекстной модели для арифметического кодирования флага значимого коэффициента блока преобразования, указывающего, существует ли ненулевой коэффициент преобразования в блоке преобразования, на основе глубины преобразования блока преобразования; и арифметическое кодирование флага значимого коэффициента блока преобразования на основе определенной контекстной модели.
Согласно одному или нескольким вариантам осуществления настоящего изобретения, устройство энтропийного кодирования видео, причем устройство включает в себя средство моделирования контекстов для получения данных блока кодирования, преобразованного на основе блока преобразования, и, если количество раз, когда блок кодирования разбивается для определения блока преобразования, называется глубиной преобразования блока преобразования, определение контекстной модели для арифметического кодирования флага значимого коэффициента блока преобразования, указывающего, существует ли ненулевой коэффициент преобразования в блоке преобразования, на основе глубины преобразования блока преобразования; и арифметический кодер для арифметического кодирования флага значимого коэффициента блока преобразования на основе определенной контекстной модели.
Техническая проблема
Далее способ и устройство для обновления параметра, используемого в информации размера энтропийного кодирования и декодирования блока преобразования согласно одному варианту осуществления настоящего изобретения, будут описаны со ссылками на фиг. 1-13. Дополнительно способ энтропийного кодирования и декодирования синтаксического элемента, полученного посредством способа энтропийного кодирования и декодирования видео, описанного со ссылками на фиг. 1-13, будет описан подробно со ссылками на фиг. 14-27. Такие выражения, как "по меньшей мере один из", когда предшествуют списку элементов, модифицируют весь список элементов и не модифицируют отдельные элементы из списка.
Фиг. 1 изображает структурную схему устройства 100 кодирования видео согласно одному варианту осуществления настоящего изобретения.
Устройство 100 кодирования видео включает в себя иерархический кодер 110 и энтропийный кодер 120.
Иерархический кодер 110 может разбивать текущую картинку, которая должна быть закодирована, на блоки предварительно определенных блоков данных для выполнения кодирования над каждым из блоков данных. Подробно иерархический кодер 110 может разбивать текущую картинку на основе наибольшего блока кодирования, которым является блок кодирования максимального размера. Наибольшим блоком кодирования согласно одному варианту осуществления настоящего изобретения может быть блок данных, имеющий размер 32×32, 64×64, 128×128, 256×256 и т. д., причем формой блока данных является квадрат, ширина и длина которого является степенью 2 и больше 8.
Блок кодирования согласно одному варианту осуществления настоящего изобретения может характеризоваться максимальным размером и глубиной. «Глубина» обозначает количество раз, которое блок кодирования пространственно разбивается от наибольшего блока кодирования, и по мере углубления глубины более глубокие блоки кодирования согласно глубинам могут быть разбиты из наибольшего блока кодирования до наименьшего блока кодирования. Глубиной наибольшего блока кодирования является самая высокая глубина, а глубиной наименьшего блока кодирования является самая низкая глубина. Поскольку размер блока кодирования, соответствующего каждой глубине, уменьшается по мере того, как глубина наибольшего блока кодирования углубляется, блок кодирования, соответствующий верхней глубине, может включать в себя множество блоков кодирования, соответствующих нижним глубинам.
Как описано выше, данные изображения текущей картинки разбиваются на наибольшие блоки кодирования согласно максимальному размеру блока кодирования, и каждый из наибольших блоков кодирования может включать в себя более глубокие блоки кодирования, которые разбиваются согласно глубинам. Поскольку наибольший блок кодирования согласно одному варианту осуществления настоящего изобретения разбивается согласно глубинам, данные изображения пространственной области, включенной в наибольший блок кодирования, могут быть иерархически классифицированы согласно глубинам.
Максимальная глубина и максимальный размер блока кодирования, которые ограничивают полное количество раз, которое высота и ширина наибольшего блока кодирования иерархически разбиваются, могут быть предварительно определены.
Иерархический кодер 110 кодирует по меньшей мере одну разбитую область, полученную путем разбиения области наибольшего блока кодирования согласно глубинам, и определяет глубину для вывода наконец закодированных данных изображения согласно по меньшей мере одной разбитой области. Иными словами, иерархический кодер 110 определяет кодируемую глубину путем кодирования данных изображения в более глубоких блоках кодирования согласно глубинам, согласно наибольшему блоку кодирования текущей картинки, и выбора глубины, имеющей наименьшую ошибку кодирования. Определенная кодируемая глубина и закодированные данные изображения согласно максимальным блокам кодирования, выводятся к энтропийному кодеру 120.
Данные изображения в наибольшем блоке кодирования закодированы на основе более глубоких блоков кодирования, соответствующих по меньшей мере одной глубине, равной или меньшей, чем максимальная глубина, и результаты кодирования данных изображения сравниваются на основе каждого из более глубоких блоков кодирования. Глубина, имеющая наименьшую ошибку кодирования, может быть выбрана после сравнения ошибок кодирования более глубоких блоков кодирования. По меньшей мере одна кодируемая глубина может быть выбрана для каждого наибольшего блока кодирования.
Размер наибольшего блока кодирования разбивается, когда блок кодирования иерархически разбивается согласно глубинам и когда количество блоков кодирования увеличивается. Кроме того, даже если блоки кодирования соответствуют одной и той же глубине в одном наибольшем блоке кодирования, определяется, разбивать ли каждый из блоков кодирования, соответствующих одной и той же глубине, до более низкой глубины путем измерения ошибки кодирования данных изображения каждого блока кодирования, отдельно. Соответственно, даже когда данные изображения включены в один наибольший блок кодирования, данные изображения разбивается на области согласно глубинам, и ошибки кодирования могут отличаться согласно областям в одном наибольшем блоке кодирования, и, таким образом, кодируемые глубины могут отличаться согласно областям в данных изображения. Таким образом, одна или несколько кодируемых глубин могут быть определены в одном наибольшем блоке кодирования, и данные изображения наибольшего блока кодирования могут быть разделены согласно блокам кодирования по меньшей мере одной кодируемой глубины.
Соответственно, иерархический кодер 110 может определять блоки кодирования, имеющие древовидную структуру, включенные в наибольший блок кодирования. "Блоки кодирования, имеющие древовидную структуру" согласно одному варианту осуществления настоящего изобретения включают в себя блоки кодирования, соответствующие глубине, определенной как кодируемая глубина, из всех более глубоких блоков кодирования, включенных в наибольший блок кодирования. Блок кодирования, имеющий кодируемую глубину, может быть иерархически определен согласно глубинам в той же самой области наибольшего блока кодирования и может быть независимо определен в других областях. Подобным образом кодируемая глубина в текущей области может быть независимо определена из кодируемой глубины в другой области.
Максимальная глубина согласно одному варианту осуществления настоящего изобретения является индексом, относящимся к количеству раз, которое наибольший блок кодирования разбивается на наименьшие блоки кодирования. Первая максимальная глубина согласно одному варианту осуществления настоящего изобретения может обозначать полное количество раз, которое наибольший блок кодирования разбивается на наименьшие блоки кодирования. Вторая максимальная глубина согласно одному варианту осуществления настоящего изобретения может обозначать полное количество уровней глубин от наибольшего блока кодирования до наименьшего блока кодирования. Например, когда глубина наибольшего блока кодирования равна 0, глубина блока кодирования, в котором наибольший блок кодирования разбивается единожды, может быть установлена равной 1, и глубина блока кодирования, в котором наибольший блок кодирования разбивается дважды, может быть установлена равной 2. Здесь, если наименьшим блоком кодирования является блок кодирования, в котором наибольший блок кодирования разбивается четыре раза, существует пять уровней глубин 0, 1, 2, 3 и 4, и, таким образом, первая максимальная глубина может быть установлена равной 4, и вторая максимальная глубина может быть установлена равной 5.
Кодирование с предсказанием и преобразование могут выполняться согласно наибольшему блоку кодирования. Кодирование с предсказанием и преобразование также выполняются на основе более глубоких блоков кодирования согласно глубине, равной, или глубинам меньшим, чем максимальная глубина, согласно наибольшему блоку кодирования.
Поскольку количество более глубоких блоков кодирования увеличивается всегда, когда наибольший блок кодирования разбивается согласно глубинам, кодирование, включающее в себя кодирование с предсказанием и преобразование, выполняется над всеми из более глубоких блоков кодирования, генерируемых по мере углубления глубины. Для удобности описания кодирование с предсказанием и преобразование далее будут описаны на основе блока кодирования текущей глубины, в наибольшем блоке кодирования.
Устройство 100 кодирования видео может различным образом выбирать размер или форму блока данных для кодирования данных изображения. Для того чтобы кодировать данные изображения, такие операции, как кодирование с предсказанием, преобразование и энтропийное кодирование, выполняются, и при этом один и тот же блок данных может быть использован для всех операций или различные блоки данных могут быть использованы для каждой операции.
Например, устройство 100 кодирования видео может выбирать не только блок кодирования для кодирования данных изображения, но также и блок данных, отличный от блока кодирования, для выполнения кодирования с предсказанием над данными изображения в блоке кодирования.
Для того чтобы выполнить кодирование с предсказанием в наибольшем блоке кодирования, кодирование с предсказанием может выполняться на основе блока кодирования, соответствующего кодируемой глубине, т. е. на основе блока кодирования, который больше не разбит на блоки кодирования, соответствующие более низкой глубине. Далее блок кодирования, который более не разбит и становится базисным блоком для кодирования с предсказанием, будет называться "блоком предсказания". Сегмент, полученный путем разбиения блока предсказания, может включать в себя блок предсказания или блок данных, полученный путем разбиения по меньшей мере одной из высоты и ширины блока предсказания.
Например, когда блок кодирования 2N×2N (где N является положительным целым) больше не разбит и становится блоком предсказания 2N×2N, размер сегмента может быть 2N×2N, 2N×N, N×2N или N×N. Примеры типа сегмента включают в себя симметричные сегменты, которые получаются путем симметричного разбиения высоты или ширина блока предсказания, сегменты, полученные путем асимметричного разбиения высоты или ширины блока предсказания, такого как 1:n или n:1, сегменты, которые получаются путем геометрического разбиения блока предсказания, и сегменты, имеющие произвольные формы.
Режим предсказания блока предсказания может быть по меньшей мере одним из внутреннего режима, промежуточного режима и режима пропуска. Например, внутренний режим или промежуточный режим могут выполняться над сегментом 2N×2N, 2N×N, N×2N или N×N. Кроме того, режим пропуска может выполняться только над сегментом 2N×2N. Кодирование независимо выполняется над одним блоком предсказания в блоке кодирования, тем самым выбирая режим предсказания, имеющий наименьшую ошибку кодирования.
Устройство 100 кодирования видео может также выполнять преобразование над данными изображения в блоке кодирования на основе не только блока кодирования для кодирования данных изображения, но также на основе блока данных, который отличен от блока кодирования.
Для того чтобы выполнить преобразование в блоке кодирования, преобразование может выполняться на основе блока данных, имеющего размер, равный или меньший размеру блока кодирования. Например, блок данных для преобразования может включать в себя блок данных для внутреннего режима и блок данных для промежуточного режима.
Блок данных, используемый в качестве основы преобразования, называется "блоком преобразования". Подобным образом блоку кодирования блок преобразования в блоке кодирования может быть рекурсивно разбит на области меньшего размера так, чтобы блок преобразования мог быть определен независимо в блоках областей. Таким образом, остаточные данные в блоке кодирования могут быть разделены согласно блоку преобразования, имеющему древовидную структуру, согласно глубинам преобразования.
Глубина преобразования, указывающая количество раз, которое высота и ширина блока кодирования разбиваются для достижения блока преобразования, может также быть установлена в блоке преобразования. Например, в текущем блоке кодирования 2N×2N глубина преобразования может быть 0, когда размер блока преобразования равен 2N×2N, может быть 1, когда размер блока преобразования равен N×N, и может быть 2, когда размер блока преобразования равен N/2×N/2. То есть блок преобразования, имеющий древовидную структуру, может также быть установлен согласно глубинам преобразования.
Информация кодирования согласно блокам кодирования, соответствующим кодируемой глубине, требует не только информации о кодируемой глубине, но также об информации, относящейся к кодированию с предсказанием и преобразованию. Соответственно, иерархический кодер 110 не только определяет кодируемую глубину, имеющую наименьшую ошибку кодирования, но также определяет тип сегмента в блоке предсказания, режим предсказания согласно блокам предсказания и размер блока преобразования для преобразования.
Блоки кодирования согласно древовидной структуре в наибольшем блоке кодирования и способ определения сегмента согласно вариантам осуществления настоящего изобретения будут описаны подробно ниже со ссылками на фиг. 3-12.
Иерархический кодер 110 может измерять ошибку кодирования более глубоких блоков кодирования согласно глубинам посредством оптимизации искажения скорости на основе множителей Лагранжа.
Энтропийный кодер 120 выводит данные изображения наибольшего блока кодирования, который закодирован на основе по меньшей мере одной кодируемой глубины, определенной иерархическим кодером 110, и информации о режиме кодирования согласно кодируемой глубине, в битовых потоках. Закодированными данными изображения может быть закодированный результат остаточных данных изображения. Информация о режиме кодирования согласно кодируемой глубине может включать в себя информацию о кодируемой глубине, информацию о типе сегмента в блоке предсказания, информацию режима предсказания и информацию размера блока преобразования. В частности, как будет описано ниже, энтропийный кодер 120 может энтропийно кодировать флаг значимого коэффициента блока преобразования (coded_block_flag) cbf, указывающий, включен ли ненулевой коэффициент преобразования в блок преобразования, посредством контекстной модели, определенной на основе глубины преобразования блока преобразования. Операция энтропийного кодирования синтаксических элементов, относящихся к блоку преобразования, в блоке 120 энтропийного кодирования будет описана ниже.
Информация о кодируемой глубине может быть определена посредством информации разбиения согласно глубинам, которые указывают, выполняется ли кодирование над блоками кодирования более низкой глубины вместо текущей глубины. Если текущая глубина текущего блока кодирования является кодируемой глубиной, данные изображения в текущем блоке кодирования кодируются и выводятся, и, таким образом, информация разбиения может быть определена не для разбиения текущего блока кодирования до более низкой глубины. В качестве альтернативы, если текущая глубина текущего блока кодирования не является кодируемой глубиной, кодирование выполняется на блоке кодирования более низкой глубины, и, таким образом, информация разбиения может быть определена для разбиения текущего блока кодирования для получения блоков кодирования более низкой глубины.
Если текущая глубина не является кодируемой глубиной, кодирование выполняется над блоком кодирования, который разбивается на блок кодирования более низкой глубины. Поскольку по меньшей мере один блок кодирования более низкой глубины существует в одном блоке кодирования текущей глубины, кодирование многократно выполняется над каждым блоком кодирования более низкой глубины, и, таким образом, кодирование может рекурсивно выполняться для блоков кодирования, имеющих одну и ту же глубину.
Поскольку блоки кодирования, имеющие древовидную структуру, определяются для одного наибольшего блока кодирования, и информация о по меньшей мере одном режиме кодирования определяется для блока кодирования кодируемой глубины, информация о по меньшей мере одном режиме кодирования может быть определена для одного наибольшего блока кодирования. Кроме того, кодируемая глубина данных изображения наибольшего блока кодирования может быть другой согласно местоположениям, поскольку данные изображения иерархически разбиваются согласно глубинам, и, таким образом, информация о кодируемой глубине и режиме кодирования может быть установлена для данных изображения.
Соответственно, энтропийный кодер 120 может назначать информацию кодирования о соответствующей кодируемой глубине и режиме кодирования по меньшей мере одному из блока кодирования, блока предсказания и минимального блока, включенного в наибольший блок кодирования.
Минимальным блоком согласно одному варианту осуществления настоящего изобретения является блок данных квадратной формы, полученный путем разбиения наименьшего блока кодирования, составляющего самую нижнюю глубину, на 4. В качестве альтернативы минимальным блоком может быть максимальный блок данных квадратной формы, который может быть включен во все из блоков кодирования, блоков предсказания, блоков сегментирования и блоков преобразования, включенных в наибольший блок кодирования.
Например, информация кодирования, выводимая через энтропийный кодер 120, может быть классифицирована на информацию кодирования согласно блокам кодирования и информацию кодирования согласно блокам предсказания. Информация кодирования согласно блокам кодирования может включать в себя информацию о режиме предсказания и о размере сегментов. Информация кодирования согласно блокам предсказания может включать в себя информацию об оцененном направлении промежуточного режима, об опорном индексе изображения промежуточного режима, о векторе движения, о компоненте насыщенности внутреннего режима и о способе интерполяции внутреннего режима. Кроме того, информация о максимальном размере блока кодирования, определенная согласно картинкам, секторам или GOP, и информация о максимальной глубине может быть добавлена в заголовок битового потока.
В устройстве 100 кодирования видео более глубокий блок кодирования может быть блоком кодирования, полученным путем деления высоты или ширины блока кодирования более высокой глубины, которая на один слой выше, на два. Иными словами, когда размер блока кодирования текущей глубины равен 2N×2N, размер блока кодирования более низкой глубины равен N×N. Кроме того, блок кодирования текущей глубины, имеющий размер 2N×2N, может включать в себя максимальное количество из четырех блоков кодирования более низкой глубины.
Соответственно, устройство 100 кодирования видео может формировать блоки кодирования, имеющие древовидную структуру, путем определения блоков кодирования, имеющих оптимальную форму и оптимальный размер для каждого наибольшего блока кодирования, на основе размера наибольшего блока кодирования и максимальной глубины, определенной с учетом характеристик текущей картинки. Кроме того, поскольку кодирование может выполняться над каждым наибольшим блоком кодирования посредством любого из различных режимов предсказания и преобразований, оптимальный режим кодирования может быть определен с учетом характеристик блока кодирования различных размеров изображения.
Таким образом, если изображение, имеющее высокое разрешение или большое количество данных, закодировано в стандартном макроблоке, количество макроблоков на картинку чрезмерно увеличивается. Соответственно, количество частей сжатой информации, генерируемой для каждого макроблока, увеличивается, и, таким образом, сложно передать сжатую информацию, и эффективность сжатия данных уменьшается. Однако посредством устройства 100 кодирования видео эффективность сжатия изображений может быть увеличена, поскольку блок кодирования регулируется с учетом характеристик изображения, при этом увеличивается максимальный размер блока кодирования, причем учитывается размер изображения.
Фиг. 2 изображает структурную схему устройства 200 декодирования видео согласно одному варианту осуществления настоящего изобретения.
Устройство 200 декодирования видео включает в себя синтаксический анализатор 210, энтропийный декодер 220 и иерархический декодер 230. Определения различных терминов, таких как «блок кодирования», «глубина», «блок предсказания», «блок преобразования» и «информация о различных режимах кодирования», для различных операций устройства 200 декодирования видео идентичны описанным со ссылками на фиг. 1 и устройство 100 кодирования видео.
Синтаксический анализатор 210 принимает битовый поток закодированного видео для синтаксического анализа синтаксического элемента. Энтропийный декодер 220 арифметически декодирует синтаксические элементы, указывающие закодированные данные изображения на основе блоков кодирования, имеющих структуру, путем выполнения энтропийного декодирования синтаксически проанализированных синтаксических элементов, и выводит арифметически декодированные синтаксические элементы к иерархическому декодеру 230. То есть энтропийный декодер 220 выполняет энтропийное декодирование синтаксических элементов, которые принимаются в форме битовых строк из 0 и 1, тем самым перестраивая синтаксические элементы.
Кроме того, энтропийный декодер 220 извлекает информацию о кодируемой глубине, режиме кодирования, информацию цветовых компонент, информацию режима предсказания и т. д. для блоков кодирования, имеющих древовидную структуру, согласно каждому наибольшему блоку кодирования, из синтаксически проанализированного битового потока. Извлеченная информация о кодируемой глубине и режиме кодирования выводится к иерархическому декодеру 230. Данные изображения в битовом потоке разбиваются на наибольший блок кодирования так, чтобы иерархический декодер 230 мог декодировать данные изображения для каждого наибольшего блока кодирования.
Информация о кодируемой глубине и режиме кодирования согласно наибольшему блоку кодирования может быть установлена для информации о по меньшей мере одном блоке кодирования, соответствующем кодируемой глубине, и информация о режиме кодирования может включать в себя информацию о типе сегмента соответствующего блока кодирования, соответствующего кодируемой глубине, о режиме предсказания и размере блока преобразования. Кроме того, информация разбиения согласно глубинам может извлекаться в качестве информации о кодируемой глубине.
Информация о кодируемой глубине и режиме кодирования согласно каждому наибольшему блоку кодирования, извлеченному энтропийным декодером 220, является информацией о кодируемой глубине и режиме кодирования, определенной для генерирования минимальной ошибки кодирования, когда кодер, такой как устройство 100 кодирования видео, многократно выполняет кодирование для каждого более глубокого блока кодирования согласно глубинам согласно каждому наибольшему блоку кодирования. Соответственно, устройство 200 декодирования видео может перестраивать изображение путем декодирования данных изображения согласно кодируемой глубине и режиму кодирования, что генерирует минимальную ошибку кодирования.
Поскольку кодирование информации о кодируемой глубине и режиме кодирования может быть назначено предварительно определенному блоку данных из соответствующих блока кодирования, блока предсказания и минимального блока, энтропийный декодер 220 может извлекать информацию о кодируемой глубине и режиме кодирования согласно предварительно определенным блокам данных. Когда информация о кодируемой глубине и режиме кодирования соответствующего наибольшего блока кодирования назначена каждому из предварительно определенных блоков данных, предварительно определенные блоки данных, которым назначена одна и та же информация о кодируемой глубине и режиме кодирования, могут быть оценены как блоки данных, включенные в один и тот же наибольший блок кодирования.
Кроме того, как будет описано ниже, энтропийный декодер 220 может энтропийно декодировать флаг значимого коэффициента блока преобразования cbf посредством контекстной модели, определенной на основе глубины преобразования блока преобразования. Операция энтропийного декодирования синтаксических элементов, относящихся к блоку преобразования в энтропийном декодере 220, будет описана ниже.
Иерархический декодер 230 восстанавливает текущую картинку путем декодирования данных изображения в каждом наибольшем блоке кодирования на основе информации о кодируемой глубине и режиме кодирования согласно наибольшим блокам кодирования. Иными словами, иерархический декодер 230 может декодировать закодированные данные изображения на основе извлеченной информации о типе сегмента, режиме предсказания и блоке преобразования для каждого блока кодирования из блоков кодирования, имеющих древовидную структуру, включенных в каждый наибольший блок кодирования. Операция декодирования может включать в себя предсказание, включающее в себя внутреннее предсказание и компенсацию движения, и обратное преобразование.
Иерархический декодер 230 может выполнять внутреннее предсказание или компенсацию движения согласно сегменту и режиму предсказания каждого блока кодирования, на основе информации о типе сегмента и режиме предсказания блока предсказания блока кодирования согласно кодируемым глубинам.
Кроме того, иерархический декодер 230 может выполнять обратное преобразование согласно каждому блоку преобразования в блоке кодирования на основе информации о размере блока преобразования блока кодирования согласно кодируемым глубинам, с целью выполнения обратного преобразования согласно наибольшим блокам кодирования.
Иерархический декодер 230 может определять по меньшей мере одну кодируемую глубину текущего наибольшего блока кодирования посредством информации разбиения согласно глубинам. Если информация разбиения указывает, что данные изображения больше не разбиваются на текущей глубине, то текущая глубина является кодируемой глубиной. Соответственно, иерархический декодер 230 может декодировать блок кодирования текущей глубины в отношении данных изображения текущего наибольшего блока кодирования посредством информации о типе сегмента блока предсказания, режиме предсказания и размере блока преобразования.
Иными словами, блоки данных, содержащие информацию кодирования, включающую одну и ту же информацию разбиения, могут быть собраны путем наблюдения за набором информации кодирования, назначенным для предварительно определенного блока данных из блока кодирования, блока предсказания и минимального блока, и собранные блоки данных могут рассматриваться как один блок данных для декодирования иерархическим декодером 230 в одном и том же режиме кодирования.
Устройство 200 декодирования видео может получать информацию о по меньшей мере одном блоке кодирования, который генерирует минимальную ошибку кодирования, когда кодирование рекурсивно выполняется для каждого наибольшего блока кодирования, и может использовать информацию для декодирования текущей картинки. Иными словами, закодированные данные изображения блоков кодирования, имеющих древовидную структуру, определенных как оптимальные блоки кодирования в каждом наибольшем блоке кодирования, могут быть декодированы.
Соответственно, даже если данные изображения имеют высокое разрешение и большое количество данных, данные изображения могут быть эффективно декодированы и реконструированы посредством размера блока кодирования и режима кодирования, которые адаптивно определяются согласно характеристикам данных изображения, посредством информации об оптимальном режиме кодирования, принятой от кодера.
Способ определения блоков кодирования, имеющих древовидную структуру, блока предсказания и блока преобразования, согласно одному варианту осуществления настоящего изобретения, далее будет описан со ссылками на фиг. 3-13.
Фиг. 3 изображает схему для описания концепции блоков кодирования согласно одному варианту осуществления настоящего изобретения.
Размер блока кодирования может быть выражен в виде "ширина×высота" и может быть 64×64, 32×32, 16×16 и 8×8. Блок кодирования 64×64 может быть разделен на сегменты 64×64, 64×32, 32×64 или 32×32; и блок кодирования 32×32 может быть разделен на сегменты 32×32, 32×16, 16×32 или 16×16; блок кодирования 16×16 может быть разделен на сегменты 16×16, 16×8, 8×16 или 8×8; и блок кодирования 8×8 может быть разделен на сегменты 8×8, 8×4, 4×8, или 4×4.
В отношении видеоданных 310 устанавливается разрешение 1920×1080, максимальный размер блока кодирования 64 и максимальная глубина 2. В отношении видеоданных 320 устанавливается разрешение 1920×1080, максимальный размер блока кодирования 64 и максимальная глубина 3. В отношении видеоданных 330 устанавливается разрешение 352×288, максимальный размер блока кодирования 16 и максимальная глубина 1. Максимальная глубина, показанная на фиг. 3, обозначает полное количество разбиений от наибольшего блока кодирования до наименьшего блока кодирования.
Если разрешение высокое или количество данных велико, максимальный размер блока кодирования может быть большим для того, чтобы не только увеличить эффективность кодирования, но также для точного отражения характеристик изображения. Соответственно, максимальный размер блока кодирования видеоданных 310 и 320, имеющих более высокое разрешение, чем видеоданные 330, может быть 64.
Поскольку максимальная глубина видеоданных 310 равна 2, блоки 315 кодирования видеоданных 310 могут включать в себя наибольший блок кодирования, имеющий размер длинной оси 64, и блоки кодирования, имеющие размеры длинной оси 32 и 16, поскольку глубины углублены до двух слоев путем разбиения наибольшего блока кодирования дважды. При этом, поскольку максимальная глубина видеоданных 330 равна 1, блоки 335 кодирования видеоданных 330 могут включать в себя наибольший блок кодирования, имеющий размер длинной оси 16, и блоки кодирования, имеющие размер длинной оси 8, поскольку глубины углублены до одного слоя путем разбиения наибольшего блока кодирования единожды.
Поскольку максимальная глубина видеоданных 320 равна 3, блоки 325 кодирования видеоданных 320 могут включать в себя наибольший блок кодирования, имеющий размер длинной оси 64, и блоки кодирования, имеющие размеры длинной оси 32, 16 и 8, поскольку глубины углубляются до 3 слоев путем разбиения наибольшего блока кодирования три раза. Поскольку глубина углубляется, подробная информация может быть точно выражена.
Фиг. 4 изображает структурную схему кодера 400 видео на основе блоков кодирования, имеющих иерархическую структуру, согласно одному варианту осуществления настоящего изобретения.
Средство 410 внутреннего прогнозирования выполняет внутреннее предсказание над блоками кодирования во внутреннем режиме, в отношении текущего кадра 405, и средство 420 оценки движения и компенсатор 425 движения соответственно выполняют промежуточную оценку и компенсацию движения над блоками кодирования в промежуточном режиме посредством текущего кадра 405 и опорного кадра 495.
Выведенные данные от средства 410 внутреннего прогнозирования, средства 420 оценки движения и компенсатора 425 движения выводятся в качестве квантованного коэффициента преобразования через преобразователь 430 и квантизатор 440. Квантованный коэффициент преобразования реконструируется в виде данных в пространственной области через обратный квантизатор 460 и обратный преобразователь 470, и реконструированные данные в пространственной области выводятся в качестве опорного кадра 495 после пост-обработки через фильтр 480 деблокирования и контурный фильтр 490. Квантованный коэффициент преобразования может быть выведен в виде битового потока 455 через энтропийный кодер 450.
Блок 450 энтропийного кодирования арифметически кодирует синтаксические элементы, относящиеся к блоку преобразования, такие как флаг значимого коэффициента блока преобразования (cbf), указывающий, включен ли ненулевой коэффициент преобразования в блок преобразования, карта значимости, указывающая местоположение ненулевого коэффициента преобразования, первый флаг критического значения (coeff_abs_level_greater1_flag), указывающий, имеет ли коэффициент преобразования значение больше 1, второй флаг критического значения (coeff_abs_level_greater2_flag), указывающий, имеет ли коэффициент преобразования значение больше 2, и информация размера коэффициента преобразования (coeff_abs_level_remaining), соответствующая разнице между базовым уровнем (baseLevel), который определяется на основе первого флага критического значения и второго флага критического значения, и действительным коэффициентом преобразования (absCoeff).
Для того чтобы кодер 400 видео применялся в устройстве 100 кодирования видео, все элементы кодера 400 видео, т. е. средство 410 внутреннего прогнозирования, средство 420 оценки движения, компенсатор 425 движения, преобразователь 430, квантизатор 440, энтропийный кодер 450, обратный квантизатор 460, обратный преобразователь 470, фильтр 480 деблокирования и контурный фильтр 490, должны выполнять операции на основе каждого блока кодирования из блоков кодирования, имеющих древовидную структуру, с учетом максимальной глубины каждого наибольшего блока кодирования.
Конкретным образом средство 410 внутреннего прогнозирования, средство 420 оценки движения и компенсатор 425 движения определяют сегменты и режим предсказания каждого блока кодирования из блоков кодирования, имеющих древовидную структуру, с учетом максимального размера и максимальной глубины текущего наибольшего блока кодирования, и преобразователь 430 определяет размер блока преобразования в каждом блоке кодирования из блоков кодирования, имеющих древовидную структуру.
Фиг. 5 изображает структурную схему декодера 500 видео на основе блоков кодирования, согласно одному варианту осуществления настоящего изобретения.
Синтаксический анализатор 510 выполняет синтаксический анализ закодированных данных изображения, которые должны быть декодированы, и информацию о кодировании, требуемую для декодирования, из битового потока 505. Закодированные данные изображения проходят через декодер 520 и обратный квантизатор 530 для вывода в виде обратно квантованных данных. Энтропийный декодер 520 получает элементы, относящиеся к блоку преобразования, из битового потока, то есть флаг значимого коэффициента блока преобразования (cbf), указывающий, включен ли ненулевой коэффициент преобразования в блок преобразования, карту значимости, указывающую местоположение ненулевого коэффициента преобразования, первый флаг критического значения (coeff_abs_level_greater1_flag), указывающий, имеет ли коэффициент преобразования значение больше 1, второй флаг критического значения (coeff_abs_level_greater2_flag), указывающий, имеет ли коэффициент преобразования значение больше 2, и информацию размера коэффициента преобразования (coeff_abs_level_remaining), соответствующую разнице между базовым уровнем (baseLevel), который определяется на основе первого флага критического значения и второго флага критического значения, и действительным коэффициентом преобразования (absCoeff), и арифметически декодирует полученные синтаксические элементы с целью реконструкции синтаксических элементов.
Обратный преобразователь 540 восстанавливает обратно квантованные данные до данных изображения в пространственной области. Средство 550 внутреннего прогнозирования выполняет внутреннее предсказание над блоками кодирования во внутреннем режиме в отношении данных изображения в пространственной области, и компенсатор 560 движения выполняет компенсацию движения над блоками кодирования в промежуточном режиме посредством опорного кадра 585.
Данные изображения в пространственной области, которые прошли через средство 550 внутреннего прогнозирования и компенсатор 560 движения, могут быть выведены в качестве реконструированного кадра 595 после пост-обработки через фильтр 570 деблокирования и контурный фильтр 580. Кроме того, данные изображения, которые пост-обработаны посредством фильтра 570 деблокирования и контурного фильтра 580, могут быть выведены в виде опорного кадра 585.
Для того чтобы декодер 500 видео применялся в устройстве 200 декодирования видео, все элементы декодера 500 видео, т. е. синтаксический анализатор 510, энтропийный декодер 520, обратный квантизатор 530, обратный преобразователь 540, средство 550 внутреннего прогнозирования, компенсатор 560 движения, фильтр 570 деблокирования и контурный фильтр 580, выполняют операции на основе блоков кодирования, имеющих древовидную структуру, для каждого наибольшего блока кодирования.
Средство 550 внутреннего прогнозирования и компенсатор 560 движения определяют сегмент и режим предсказания для каждого блока кодирования, имеющего древовидную структуру, и обратный преобразователь 540 должен определять размер блока преобразования для каждого блока кодирования.
Фиг. 6 изображает схему, иллюстрирующую более глубокие блоки кодирования согласно глубинам и сегменты, согласно одному варианту осуществления настоящего изобретения.
Устройство 100 кодирования видео и устройство 200 декодирования видео используют иерархические блоки кодирования для того, чтобы учитывать характеристики изображения. Максимальная высота, максимальная ширина и максимальная глубина блоков кодирования может адаптивно определяться согласно характеристикам изображения, или может иным образом устанавливаться пользователем. Размеры более глубоких блоков кодирования согласно глубинам могут быть определены согласно предварительно определенному максимальному размеру блока кодирования.
В иерархической структуре 600 блоков кодирования согласно одному варианту осуществления настоящего изобретения, обе из максимальной высоты и максимальной ширины блоков кодирования равны 64, и максимальная глубина равна 4. Поскольку глубина углубляется по вертикальной оси иерархической структуры 600, обе из высоты и ширины более глубокого блока кодирования разбиваются. Кроме того, блок предсказания и сегменты, которые являются основой для кодирования с предсказанием каждого более глубокого блока кодирования, показаны вдоль горизонтальной оси иерархической структуры 600.
Иными словами, блок 610 кодирования является наибольшим блоком кодирования в иерархической структуре 600, причем глубина равна 0 и размер, т. е. высота на ширину, равен 64×64. Глубина углубляется по вертикальной оси, и блок 620 кодирования, имеющий размер 32×32 и глубину 1, блок 630 кодирования, имеющий размер 16×16 и глубину 2, блок 640 кодирования, имеющий размер 8×8 и глубину 3, и блок 650 кодирования, имеющий размер 4×4 и глубину 4, существуют. Блок 650 кодирования, имеющий размер 4×4 и глубину 4, является наименьшим блоком кодирования.
Блок предсказания и сегменты блока кодирования обеспечены вдоль горизонтальной оси согласно каждой глубине. Иными словами, если блок 610 кодирования, имеющий размер 64×64 и глубину 0, является блоком предсказания, блок предсказания может быть разделен на сегменты, включенные в блок 610 кодирования, т. е. сегмент 610, имеющий размер 64×64, сегменты 612, имеющие размер 64×32, сегменты 614, имеющие размер 32×64, или сегменты 616 имеющие размер 32×32.
Подобным образом блок предсказания блока 620 кодирования, имеющего размер 32×32 и глубину 1, может быть разделен на сегменты, включенные в блок 620 кодирования, т. е. сегмент 620, имеющий размер 32×32, сегменты 622, имеющие размер 32×16, сегменты 624, имеющие размер 16×32, и сегменты 626, имеющие размер 16×16.
Подобным образом блок предсказания блока 630 кодирования, имеющего размер 16×16 и глубину 2, может быть разделен на сегменты, включенные в блок 630 кодирования, т. е. сегмент, имеющий размер 16×16, включенный в блок 630 кодирования, сегменты 632, имеющие размер 16×8, сегменты 634, имеющие размер 8×16, и сегменты 636, имеющие размер 8×8.
Подобным образом блок предсказания блока 640 кодирования, имеющего размер 8×8 и глубину 3, может быть разделен на сегменты, включенные в блок 640 кодирования, т. е. сегмент, имеющий размер 8×8, включенный в блок 640 кодирования, сегменты 642, имеющие размер 8×4, сегменты 644, имеющие размер 4×8, и сегменты 646, имеющие размер 4×4.
Блок 650 кодирования, имеющий размер 4×4 и глубину 4, является наименьшим блоком кодирования и блоком кодирования самой низкой глубины. Блок предсказания блока 650 кодирования назначен только сегменту, имеющему размер 4×4.
Для того чтобы определить по меньшей мере одну кодируемую глубину блоков кодирования, составляющих наибольший блок 610 кодирования, иерархический кодер 110 устройства 100 кодирования видео выполняет кодирование для блоков кодирования, соответствующих каждой глубине, включенной в наибольший блок 610 кодирования.
Количество более глубоких блоков кодирования согласно глубинам, включая данные в том же самом диапазоне и тот же самый размер, увеличивается по мере того, как глубина углубляется. Например, четыре блока кодирования, соответствующих глубине 2, требуется для покрытия данных, которые включены в один блок кодирования, соответствующий глубине 1. Соответственно, для того, чтобы сравнить результаты кодирования одних и тех же данных согласно глубинам, блок кодирования, соответствующий глубине 1, и четыре блока кодирования, соответствующих глубине 2, все кодируются.
Для того чтобы выполнить кодирование для текущей глубины из глубин, наименьшая ошибка кодирования может быть выбрана для текущей глубины путем выполнения кодирования для каждого блока предсказания в блоках кодирования, соответствующих текущей глубине, вдоль горизонтальной оси иерархической структуры 600. В качестве альтернативы может осуществляться поиск минимальной ошибки кодирования путем сравнения наименьших ошибок кодирования согласно глубинам и выполнения кодирования для каждой глубины по мере того, как глубина углубляется вдоль вертикальной оси иерархической структуры 600. Глубина и сегмент, имеющие минимальную ошибку кодирования в наибольшем блоке 610 кодирования, могут быть выбраны в качестве кодируемой глубины и типа сегмента наибольшего блока 610 кодирования.
Фиг. 7 изображает схему для описания отношения между блоком 710 кодирования и блоками 720 преобразования согласно одному варианту осуществления настоящего изобретения.
Устройство 100 кодирования видео или устройство 200 декодирования видео кодирует или декодирует изображение каждого наибольшего блока кодирования согласно блокам кодирования, имеющим размеры, равные или меньшие чем размер наибольшего блока кодирования. Размеры блоков преобразования для преобразования в течение кодирования могут быть выбраны на основе блоков данных, которые не больше, чем соответствующий блок кодирования.
Например, в устройстве 100 кодирования видео или устройстве 200 декодирования видео, если размер блока 710 кодирования равен 64×64, преобразование может выполняться посредством блоков 720 преобразования, имеющих размер 32×32.
Кроме того, данные блока 710 кодирования, имеющего размер 64×64, могут быть закодированы путем выполнения преобразования над каждым из блоков преобразования, имеющих размер 32×32, 16×16, 8×8 и 4×4, которые меньше 64×64, и затем блок преобразования, имеющий наименьшую ошибку кодирования, может быть выбран.
Фиг. 8 изображает схему для описания информации кодирования блоков кодирования, соответствующих кодируемой глубине, согласно одному варианту осуществления настоящего изобретения.
Блок 130 вывода устройства 100 кодирования видео может кодировать и передавать информацию 800 о типе сегмента, информацию 810 о режиме предсказания и информацию 820 о размере блока преобразования для каждого блока кодирования, соответствующего кодируемой глубине, в качестве информации о режиме кодирования.
Информация 800 указывает информацию о форме сегмента, полученного путем разбиения блока предсказания текущего блока кодирования, причем сегмент является блоком данных для кодирования с предсказанием текущего блока кодирования. Например, текущий блок кодирования CU_0, имеющий размер 2N×2N, может быть разделен на любой один из сегмента 802, имеющего размер 2N×2N, сегмента 804, имеющего размер 2N×N, сегмента 806, имеющего размер N×2N, и сегмента 808, имеющего размер N×N. Здесь информация 800 о типе сегмента устанавливается для указания одного из сегмента 802, имеющего размер 2N×2N, сегмента 804, имеющего размер 2N×N, сегмента 806, имеющего размер N×2N, и сегмента 808, имеющего размер N×N.
Информация 810 указывает режим предсказания каждого сегмента. Например, информация 810 может указывать режим кодирования с предсказанием, выполняемого над сегментом, указанным информацией 800, т. е. внутренний режим 812, промежуточный режим 814 или режим 816 пропуска.
Информация 820 указывает блок преобразования, который должен быть основой, когда преобразование выполняется над текущим блоком кодирования. Например, блоком преобразования может быть первый внутренний блок 822 преобразования, второй внутренний блок 824 преобразования, первый промежуточный блок 826 преобразования или второй промежуточный блок 828 преобразования.
Блок 210 извлечения данных изображения и данных кодирования устройства 200 декодирования видео может извлекать и использовать информацию 800 о блоках кодирования, информацию 810 о режиме предсказания и информацию 820 о размере блока преобразования, для декодирования, согласно каждому более глубокому блоку кодирования.
Фиг. 9 изображает схему более глубоких блоков кодирования согласно глубинам согласно одному варианту осуществления настоящего изобретения.
Информация разбиения может быть использована для указания изменения глубины. Информация разбиения указывает, разбивается ли блок кодирования текущей глубины на блоки кодирования более низкой глубины.
Блок 910 предсказания для кодирования с предсказанием блока 900 кодирования, имеющего глубину 0 и размер 2N_0×2N_0, может включать в себя сегменты типа 912 сегмента, имеющего размер 2N_0×2N_0, типа 914 сегмента, имеющего размер 2N_0×N_0, типа 916 сегмента, имеющего размер N_0×2N_0, и типа 918 сегмента, имеющего размер N_0×N_0. Фиг. 9 иллюстрирует только типы 912-918 сегмента, которые получаются путем симметричного разбиения блока 910 предсказания, но тип сегмента не ограничивается этим, и сегменты блока 910 предсказания могут включать в себя асимметричные сегменты, сегменты, имеющие предварительно определенную форму, и сегменты, имеющие геометрическую форму.
Кодирование с предсказанием многократно выполняется над одним сегментом, имеющим размер 2N_0×2N_0, двумя сегментами, имеющими размер 2N_0×N_0, двумя сегментами, имеющими размер N_0×2N_0, и четырьмя сегментами, имеющими размер N_0×N_0, согласно каждому типу сегмента. Кодирование с предсказанием во внутреннем режиме и промежуточном режиме может выполняться над сегментами, имеющими размеры 2N_0×2N_0, N_0×2N_0, 2N_0×N_0 и N_0×N_0. Кодирование с предсказанием в режиме пропуска выполняется только над сегментами, имеющими размер 2N_0×2N_0.
Если ошибка кодирования является наименьшей в одном из типов 912-916 сегмента, имеющих размеры 2N_0×2N_0, 2N_0×N_0 и N_0×2N_0, блок 910 предсказания может не быть разделен на более низкую глубину.
Если ошибка кодирования является наименьшей в типе 918 сегмента, имеющем размер N_0×N_0, глубина изменяется с 0 на 1 для разбиения типа 918 сегмента на операции 920, и кодирование многократно выполняется над блоками кодирования типа сегмента, имеющими глубину 2 и размер N_0×N_0 для поиска минимальной ошибки кодирования.
Блок 940 предсказания для кодирования с предсказанием (тип сегмента) блока 930 кодирования, имеющего глубину 1 и размер 2N_1×2N_1 (=N_0×N_0), может включать в себя сегменты типа 942 сегмента, имеющего размер 2N_1×2N_1, типа 944 сегмента, имеющего размер 2N_1×N_1, типа 946 сегмента, имеющего размер N_1×2N_1, и типа 948 сегмента, имеющего размер N_1×N_1.
Если ошибка кодирования является наименьшей в типе 948 сегмента, имеющем размер N_1×N_1, глубина изменяется с 1 на 2 для разбиения типа 948 сегмента на операции 950, и кодирование многократно выполняется над блоками 960 кодирования, которые имеют глубину 2 и размер N_2×N_2 для поиска минимальной ошибки кодирования.
Когда максимальная глубина равна d, операция разбиения согласно каждой глубине может выполняться вплоть до того момента, когда глубина станет равна d-1, и информация разбиения может быть закодирована до тех пор, пока глубина находится в диапазоне от 0 до d-2. Иными словами, когда кодирование выполняется вплоть до того момента, когда глубина станет равна d-1 после того, как блок кодирования, соответствующий глубине d-2, разбивается на операции 970, блок 990 предсказания для кодирования с предсказанием блока 980 кодирования, имеющего глубину d-1 и размер of 2N_(d-1)×2N_(d-1), может включать в себя сегменты типа 992 сегмента, имеющего размер 2N_(d-1)×2N_(d-1), типа 994 сегмента, имеющего размер 2N_(d-1)×N_(d-1), типа 996 сегмента, имеющего размер N_(d-1)×2N_(d-1), и типа 998 сегмента, имеющего размер N_(d-1)×N_(d-1).
Кодирование с предсказанием может многократно выполняться над одним сегментом, имеющим размер 2N_(d-1)×2N_(d-1), двумя сегментами, имеющими размер 2N_(d-1)×N_(d-1), двумя сегментами, имеющими размер N_(d-1)×2N_(d-1), четырьмя сегментами, имеющими размер N_(d-1)×N_(d-1) из типов 992-998 сегмента для поиска типа сегмента, имеющего минимальную ошибку кодирования.
Даже когда тип 998 сегмента, имеющий размер N_(d-1)×N_(d-1), имеет минимальную ошибку кодирования, поскольку максимальная глубина равна d, блок кодирования CU_(d-1), имеющий глубину d-1, больше не разбивается до более глубокой глубины, и кодируемая глубина для блоков кодирования, составляющих текущий наибольший блок 900 кодирования, определяется как d-1, и тип сегмента текущего наибольшего блока 900 кодирования может быть определена как N_(d-1)×N_(d-1). Кроме того, поскольку максимальная глубина равна d, информация разбиения для наименьшего блока 952 кодирования не устанавливается.
Блок данных 999 может быть "минимальным блоком" для текущего наибольшего блока кодирования. Минимальным блоком согласно одному варианту осуществления настоящего изобретения может быть прямоугольный блок данных, полученный путем разбиения наименьшего блока 980 кодирования на 4. Путем многократного выполнения кодирования, устройство 100 кодирования видео может выбрать глубину, имеющую наименьшую ошибку кодирования, путем сравнения ошибок кодирования согласно глубинам блока 900 кодирования для определения кодируемой глубины, и установить соответствующий тип сегмента и режим предсказания в качестве режима кодирования кодируемой глубины.
Таким образом, минимальные ошибки кодирования согласно глубинам сравниваются на всех из глубин от 1 до d, и глубина, имеющая наименьшую ошибку кодирования, может быть определена как кодируемая глубина. Кодируемая глубина, тип сегмента блока предсказания и режим предсказания могут быть закодированы и переданы в качестве информации о режиме кодирования. Кроме того, поскольку блок кодирования разбивается от глубины 0 до кодируемой глубины, только информация разбиения кодируемой глубины устанавливается равной 0, и информация разбиения глубин, исключая кодируемую глубину, устанавливается равной 1.
Энтропийный декодер 220 устройства 200 декодирования видео может извлекать и использовать информацию о кодируемой глубине и блок предсказания блока 900 кодирования для декодирования блока 912 кодирования. Устройство 200 декодирования видео может определять глубину, на которой информация разбиения равна 0, в качестве кодируемой глубины посредством информации разбиения согласно глубинам и использовать информацию о режиме кодирования соответствующей глубины для декодирования.
Фиг. 10-12 изображают схемы для описания отношения между блоками 1010 кодирования, блоками 1060 предсказания и блоками 1070 преобразования согласно одному варианту осуществления настоящего изобретения.
Блоки 1010 кодирования являются блоками кодирования, имеющими древовидную структуру, соответствующими кодируемым глубинам, определенным устройством 100 кодирования видео, в наибольшем блоке кодирования. Блоки 1060 предсказания являются сегментами блоков предсказания каждого из блоков 1010 кодирования, и блоки 1070 преобразования являются блоками преобразования каждого из блоков 1010 кодирования.
Когда глубина наибольшего блока кодирования равна 0 в блоках 1010 кодирования, глубины блоков 1012 и 1054 кодирования равны 1, глубины блоков 1014, 1016, 1018, 1028, 1050 и 1052 кодирования равны 2, глубины блоков 1020, 1022, 1024, 1026, 1030, 1032 и 1048 кодирования равны 3, и глубины блоков 1040, 1042, 1044 и 1046 кодирования равны 4.
В блоках 1060 предсказания некоторые блоки 1014, 1016, 1022, 1032, 1048, 1050, 1052 и 1054 кодирования получаются путем разбиения блоков кодирования. Иными словами, типы сегмента в блоках 1014, 1022, 1050 и 1054 кодирования имеют размер 2N×N, типы сегмента в блоках 1016, 1048 и 1052 кодирования имеют размер N×2N, и тип сегмента блока 1032 имеет размер N×N. Блоки предсказания и сегменты блоков 1010 кодирования равны или меньше чем каждый блок кодирования.
Преобразование или обратное преобразование выполняется над данными изображения блока 1052 кодирования в блоках 1070 преобразования в блоке данных, который меньше блока 1052 кодирования. Кроме того, блоки 1014, 1016, 1022, 1032, 1048, 1050, 1052 и 1054 кодирования в блоках 1070 преобразования отличны от находящихся в блоках 1060 предсказания в плане размеров и форм. Иными словами, устройство 100 кодирования видео и устройство 200 декодирования видео могут выполнять внутреннее предсказание, оценку движения, компенсацию движения, преобразование и обратное преобразование отдельно над блоком данных в одном и том же блоке кодирования.
Соответственно, кодирование рекурсивно выполняется над каждым из блоков кодирования, имеющих иерархическую структуру, в каждой области наибольшего блока кодирования для определения оптимального блока кодирования, и, таким образом, блоки кодирования, имеющие рекурсивную древовидную структуру, могут быть получены. Информация кодирования может включать в себя информацию разбиения о блоке кодирования, информацию о типе сегмента, информацию о режиме предсказания и информацию о размере блока преобразования.
Таблица 1 изображает информацию кодирования, которая может быть установлена устройством 100 кодирования видео и устройством 200 декодирования видео.
Таблица 1
Информация разбиения 0(кодирование над блоком кодирования, имеющим размер 2N×2N и текущую глубину d)
Информация разбиения 1
Режим предсказания
Тип сегмента
Размер блока преобразования
Многократно кодировать блоки кодирования, имеющие более низкую глубину d+1
Внутренний ПромежуточныйПропуск (только 2N×2N)
Симметричный тип сегмента
Асимметричный тип сегмента
Информация разбиения 0 блока преобразования
Информация разбиения 1 блока преобразования
2N×nU2N×nDnL×2NnR×2N
2N×nU2N×nDnL×2NnR×2N
2N×2N
N×N (симметричный тип сегмента)N/2×N/2 (асимметричный тип сегмента)
Энтропийный кодер 120 устройства 100 кодирования видео может выводить информацию кодирования о блоках кодирования, имеющих древовидную структуру, и энтропийный декодер 220 устройства 200 декодирования видео может извлекать информацию кодирования о блоках кодирования, имеющих древовидную структуру, из принятого битового потока.
Информация разбиения указывает, разбивается ли текущий блок кодирования на блоки кодирования более низкой глубины. Если информация разбиения текущей глубины d равна 0, глубина, на которой текущий блок кодирования больше не разбивается на более низкую глубину, является кодируемой глубиной, и, таким образом, информация о типе сегмента, режим предсказания и размер блока преобразования могут быть определены для кодируемой глубины. Если текущий блок кодирования дополнительно разбивается согласно информации разбиения, кодирование независимо выполняется над четырьмя разбитными блоками кодирования более низкой глубины.
Режимом предсказания может быть один из внутреннего режима, промежуточного режима и режима пропуска. Внутренний режим и промежуточный режим могут быть определены во всех типах сегмента, и режим пропуска определен только в типе сегмента, имеющем размер 2N×2N.
Информация о типе сегмента может указывать симметричные типы сегмента, имеющие размеры 2N×2N, 2N×N, N×2N и N×N, которые получаются путем симметричного разбиения высоты или ширины блока предсказания, и асимметричные типы сегмента, имеющие размеры 2N×nU, 2N×nD, nL×2N и nR×2N, которые получаются путем асимметричного разбиения высоты или ширины блока предсказания. Асимметричные типы сегмента, имеющие размеры 2N×nU и 2N×nD, могут быть соответственно получены путем разбиения высоты блока предсказания в соотношении 1:n и n:1 (где n является целым больше 1), и асимметричные типы сегмента, имеющие размеры nL×2N и nR×2N, могут быть соответственно получены путем разбиения ширины блока предсказания в соотношении 1:n и n:1.
Размер блока преобразования может быть установлен как два типа во внутреннем режиме и два типа в промежуточном режиме. Иными словами, если информация разбиения блока преобразования равна 0, размер блока преобразования может быть 2N×2N, что является размером текущего блока кодирования. Если информация разбиения блока преобразования равна 1, блоки преобразования могут быть получены путем разбиения текущего блока кодирования. Кроме того, если тип сегмента текущего блока кодирования, имеющего размер 2N×2N, является симметричным типом сегмента, размер блока преобразования может быть N×N, и если тип сегмента текущего блока кодирования является асимметричным типом сегмента, размер блока преобразования может быть N/2×N/2.
Информация кодирования о блоках кодирования, имеющих древовидную структуру, может включать в себя по меньшей мере один из блока кодирования, соответствующего кодируемой глубине, блока предсказания и минимального блока. Блок кодирования, соответствующий кодируемой глубине, может включать в себя по меньшей мере один из блока предсказания и минимального блока, содержащих одну и ту же информацию кодирования.
Соответственно, определяется, включаются ли смежные блоки данных в один и тот же блок кодирования, соответствующий кодируемой глубине, путем сравнения информации кодирования смежных блоков данных. Кроме того, соответствующий блок кодирования, соответствующий кодируемой глубине, определяется посредством информации кодирования блока данных, и, таким образом, распределение кодируемых глубин в наибольшем блоке кодирования может быть определено.
Соответственно, если текущий блок кодирования предсказан на основе информации кодирования смежных блоков данных, на информацию кодирования блоков данных в более глубоких блоках кодирования, смежных с текущим блоком кодирования, может непосредственно делаться ссылка, и она может использоваться.
В качестве альтернативы, если текущий блок кодирования предсказан на основе информации кодирования смежных блоков данных, выполняется поиск блоков данных, смежных с текущим блоком кодирования, с использованием закодированной информации блоков данных, и на найденные смежные блоки кодирования может делаться ссылка для предсказания текущего блока кодирования.
Фиг. 13 изображает схему для описания отношения между блоком кодирования, блоком предсказания и блоком преобразования согласно информации режима кодирования таблицы 1.
Наибольший блок 1300 кодирования включает в себя блоки 1302, 1304, 1306, 1312, 1314, 1316 и 1318 кодирования кодируемых глубин. Здесь, поскольку блок 1318 кодирования является блоком кодирования кодируемой глубины, информация разбиения может быть установлена равной 0. Информация о типе сегмента блока 1318 кодирования, имеющего размер 2N×2N, может быть установлена как один из типа 1322 сегмента, имеющего размер 2N×2N, типа 1324 сегмента, имеющего размер 2N×N, типа 1326 сегмента, имеющего размер N×2N, типа 1328 сегмента, имеющего размер N×N, типа 1332 сегмента, имеющего размер 2N×nU, типа 1334 сегмента, имеющего размер 2N×nD, типа 1336 сегмента, имеющего размер nL×2N, и типа 1338 сегмента, имеющего размер nR×2N.
Когда тип сегмента устанавливается как симметричный, т. е. тип 1322, 1324, 1326 или 1328 сегмента, блок 1342 преобразования, имеющий размер 2N×2N, устанавливается, если информация разбиения (флаг размера TU) блока преобразования равна 0, и блок 1344 преобразования, имеющий размер N×N, устанавливается, если флаг размера TU равен 1.
Когда тип сегмента устанавливается как асимметричный, т. е. тип 1332, 1334, 1336 или 1338 сегмента, блок 1352 преобразования, имеющий размер 2N×2N, устанавливается, если флаг размера TU равен 0, и блок 1354 преобразования, имеющий размер N/2×N/2, устанавливается, если флаг размера TU равен 1.
Флаг размера TU является типом индекса преобразования; размер блока преобразования, соответствующий индексу преобразования, может быть модифицирован согласно типу блока предсказания или типу сегмента блока кодирования.
Когда тип сегмента устанавливается как симметричный, т. е. тип 1322, 1324, 1326 или 1328 сегмента, блок 1342 преобразования, имеющий размер 2N×2N, устанавливается, если флаг размера TU блока преобразования равен 0, и блок 1344 преобразования, имеющий размер N×N, устанавливается, если флаг размера TU равен 1.
Когда тип сегмента устанавливается как асимметричный, т. е. тип 1332 (2N×nU), 1334 (2N×nD), 1336 (nL×2N) или 1338 (nR×2N) сегмента, блок 1352 преобразования, имеющий размер 2N×2N, устанавливается, если флаг размера TU равен 0, и блок 1354 преобразования, имеющий размер N/2×N/2, устанавливается, если флаг размера TU равен 1.
Со ссылкой на фиг. 9 флаг размера TU, описанный выше, является флагом, имеющим значение 0 или 1, но флаг размера TU не ограничивается 1 битом, и блок преобразования может иерархически разбиваться, в то время как флаг размера TU увеличивается от 0. Информация разбиения блока преобразования (флаг размера TU) может быть использована в качестве примера индекса преобразования.
В этом случае, когда флаг размера TU согласно одному варианту осуществления используется с максимальным размером и минимальным размером блока преобразования, размер действительно используемого блока преобразования может быть выражен. Устройство 100 кодирования видео может кодировать информацию размера наибольшего блока преобразования, информацию размера наименьшего блока преобразования и информацию разбиения наибольшего блока преобразования. Закодированная информация размера наибольшего блока преобразования, информация размера наименьшего блока преобразования и информация разбиения наибольшего блока преобразования может быть добавлена в набор параметров последовательности (SPS). Устройство 200 декодирования видео может использовать информацию размера наибольшего блока преобразования, информацию размера наименьшего блока преобразования и информацию разбиения наибольшего блока преобразования для декодирования видео.
Например, (a) если размер текущего блока кодирования равен 64×64 и наибольший блок преобразования равен 32×32, (a-1) размер блока преобразования равен 32×32, если флаг размера TU равен 0; (a-2) размер блока преобразования равен 16×16, если флаг размера TU равен 1; и (a-3) размер блока преобразования равен 8×8, если флаг размера TU равен 2.
В качестве альтернативы (b) если размер текущего блока кодирования равен 32×32 и наименьший блок преобразования равен 32×32, (b-1) размер блока преобразования равен 32×32, если флаг размера TU равен 0, и поскольку размер блока преобразования не может меньше 32×32, может не устанавливаться никаких дополнительных флагов размера TU.
В качестве альтернативы (c) если размер текущего блока кодирования равен 64×64 и максимальный флаг размера TU равен 1, флаг размера TU может быть 0 или 1, и может не устанавливаться никаких других флагов размера TU.
Соответственно, при определении максимального флага размера TU как "MaxTransformSizeIndex", минимального флага размера TU как "MinTransformSize" и блока преобразования в случае, когда флаг размера TU равен 0, то есть корневого блока преобразования RootTu, как "RootTuSize", размер наименьшего блока преобразования "CurrMinTuSize", который доступен в текущем блоке кодирования, может быть определен посредством уравнения (1) ниже.
В сравнении с размером наименьшего блока преобразования "CurrMinTuSize", который доступен в текущем блоке кодирования, размер корневого блока преобразования "RootTuSize", которым является размер блока преобразования, если флаг размера TU равен 0, может указывать наибольший блок преобразования, который может быть выбран в отношении системы. То есть согласно уравнению (1), "RootTuSize/(2^MaxTransformSizeIndex)" является размером блока преобразования, который получается путем разбиения "RootTuSize", которым является размер блока преобразования, когда блок преобразования информация разбиения равен 0, в количестве раз разбиения, соответствующем информации разбиения наибольшего блока преобразования, и "MinTransformSize" является размером наименьшего блока преобразования, и, таким образом, меньшее значение из них может быть "CurrMinTuSize", которым является размер наименьшего блока преобразования, который доступен в текущем блоке кодирования.
Размер корневого блока преобразования "RootTuSize" согласно одному варианту осуществления настоящего изобретения может варьироваться согласно режиму предсказания.
Например, если текущий режим предсказания является промежуточным режимом, RootTuSize может быть определен согласно уравнению (2) ниже. В уравнении (2) "MaxTransformSize" ссылается на размер наибольшего блока преобразования, а "PUSize" ссылается на размер текущего блока предсказания.
Иными словами, если текущий режим предсказания является промежуточным режимом, размер корневого блока преобразования "RootTuSize", который является блоком преобразования, если флаг размера TU равен 0, может быть установлен равным меньшему значению из размера наибольшего блока преобразования и размера текущего блока предсказания.
Если режим предсказания текущего блока сегментирования является внутренним режимом, "RootTuSize" может быть определен согласно уравнению (3) ниже. "PartitionSize" ссылается на размер текущего блока сегментирования.
Иными словами, если текущий режим предсказания является внутренним режимом, размер корневого блока преобразования "RootTuSize" может быть установлен равным меньшему значению из размера наибольшего блока преобразования и размера текущего блока сегментирования.
Однако следует заметить, что размер корневого блока преобразования "RootTuSize", который является размером текущего наибольшего блока преобразования согласно одному варианту осуществления настоящего изобретения и варьируется согласно режиму предсказания блока сегментирования, является примером, и факторы для определения размера текущего наибольшего блока преобразования не ограничиваются этим.
Операция энтропийного кодирования синтаксического элемента, которая выполняется энтропийным кодером 120 устройства 100 кодирования видео с фиг. 1, и операция энтропийного декодирования синтаксического элемента, которая выполняется энтропийным декодером 220 устройства 200 декодирования видео с фиг. 2, далее будут описаны подробно.
Как описано выше, устройство 100 кодирования видео и устройство 200 декодирования видео выполняют кодирование и декодирование путем разбиения наибольшего блока кодирования на блоки кодирования, которые равны или меньше наибольшего блока кодирования. Блок предсказания и блок преобразования, используемые при предсказании и преобразовании, могут быть определены на основе затрат независимо от других блоков данных. Поскольку оптимальный блок кодирования может быть определен путем рекурсивного кодирования каждого блока кодирования, имеющего иерархическую структуру, включенную в наибольший блок кодирования, блоки данных, имеющие древовидную структуру, могут быть сконфигурированы. Иными словами, для каждого наибольшего блока кодирования, блок кодирования, имеющий древовидную структуру, и блок предсказания и блок преобразования, каждый из которых имеет древовидную структуру, могут быть сконфигурированы. Для декодирования иерархическая информация, которая является информацией, указывающей структуру информации блоков данных, имеющих иерархическую структуру, и неиерархическая информация для декодирования, помимо иерархической информации, должна быть передана.
Информация, относящаяся к иерархической структуре, является информацией, необходимой для определения блока кодирования, имеющего древовидную структуру, блока предсказания, имеющего древовидную структуру, и блока преобразования, имеющего древовидную структуру, как описано выше со ссылками на фиг. 10-12, и включает в себя информацию размера наибольшего блока кодирования, кодируемую глубину, информацию сегментирования блока предсказания, флаг разбиения, указывающий, разбивается ли блок кодирования, информацию размера блока преобразования и флаг преобразования разбиения (split_transform_flag), указывающий, разбивается ли блок преобразования на меньшие блоки преобразования для операции преобразования. Примеры информации кодирования помимо информации иерархической структуры включают в себя информацию режима предсказания внутреннего/промежуточного предсказания, применяемую к каждому блоку предсказания, информацию вектора движения, информацию направления предсказания, информацию цветовых компонент, применяемую к каждому блоку данных в случае, когда используются множество цветовых компонент, и информацию уровня коэффициента преобразования. Далее иерархическая информация и экстраиерархическая информация могут называться синтаксическим элементом, который должен быть энтропийно закодирован или энтропийно декодирован.
В частности, согласно вариантам осуществления настоящего изобретения, обеспечен способ выбора контекстной модели, когда синтаксический элемент, относящийся к блоку преобразования, из синтаксических элементов. Операция энтропийного кодирования и декодирования синтаксических элементов, относящихся к блоку преобразования, далее будет описана подробно.
Фиг. 14 изображает структурную схему устройства 1400 энтропийного кодирования согласно одному варианту осуществления настоящего изобретения. Устройство 1400 энтропийного кодирования соответствует энтропийному кодеру 120 устройства 100 кодирования видео с фиг. 1.
Со ссылкой на фиг. 14 устройство 1400 энтропийного кодирования включает в себя двоичный преобразователь 1410, средство 1420 моделирования контекстов и двоичный арифметический кодер 1430. Кроме того, двоичный арифметический кодер 1430 включает в себя систему 1432 обычного кодирования и систему 1434 обходного кодирования.
Когда синтаксические элементы, вводимые в устройство 1400 энтропийного кодирования, не являются двоичными значениями, двоичный преобразователь 1410 двоично преобразует синтаксические элементы для того, чтобы вывести строку двоичных величин, состоящую из двоичных значений 0 и 1. Двоичная величина обозначает каждый бит потока, состоящего из 0 и 1, и кодируется контекстно-адаптивным двоичным арифметическим кодированием (CABAC). Если синтаксический элемент является данными, имеющими одинаковую вероятность между 0 и 1, синтаксический элемент выводится к системе 1434 обходного кодирования, которая не использует вероятность, для кодирования.
Двоичный преобразователь 1410 может использовать различные способы двоичного преобразования согласно типу синтаксического элемента. Примеры способов двоичного преобразования могут включать в себя одноместный способ, урезанный одноместный способ, способ урезанного кода Райса, способ кода Голомба и способ кода фиксированной длины.
Флаг значимого коэффициента блока преобразования cbf, указывающий, существует ли ненулевой коэффициент преобразования (далее также называемый "значимым коэффициентом") в блоке преобразования, преобразуется в двоичную форму посредством способа фиксированного кода. То есть если ненулевой коэффициент преобразования существует в блоке преобразования, флаг значимого коэффициента блока преобразования cbf устанавливается как имеющий значение 1. Иначе, если ненулевой коэффициент преобразования не существует в блоке преобразования, флаг значимого коэффициента блока преобразования cbf устанавливается как имеющий значение 0. Если изображение включает в себя множество цветовых компонентов, флаг значимого коэффициента блока преобразования cbf может быть установлен в отношении блока преобразования каждой цветовой компоненты. Например, если изображение включает в себя компоненты яркости (Y) и насыщенности (Cb, Cr), флаг значимого коэффициента блока преобразования cbf_яркость блока преобразования компоненты яркости и флаг значимого коэффициента блока преобразования cbf_cb или cbf_cr блока преобразования компоненты насыщенности могут быть установлены.
Средство 1420 моделирования контекстов обеспечивает контекстную модель для кодирования битовой строки, соответствующей синтаксическому элементу, системе 1432 обычного кодирования. Более подробно средство 1420 моделирования контекстов выводит вероятность двоичного значения для кодирования каждого двоичного значения битовой строки текущего синтаксического элемента, к двоичному арифметическому кодеру 1430.
Контекстная модель является вероятностной моделью двоичной величины и включает в себя информацию о том, что из 0 и 1 соответствует наиболее вероятному символу (MPS) и наименее вероятному символу (LPS), и информацию вероятности по меньшей мере одного из MPS и LPS.
Средство 1420 моделирования контекстов может выбирать контекстную модель для энтропийного кодирования флага значимого коэффициента блока преобразования cbf на основе глубины преобразования блока преобразования. Если размер блока преобразования равен размеру блока кодирования, то есть если глубина преобразования блока преобразования равна 0, средство 1420 моделирования контекстов может определять предварительно установленную первую контекстную модель в качестве контекстной модели для энтропийного кодирования флага значимого коэффициента блока преобразования cbf. Иначе, если размер блока преобразования меньше размера блока кодирования, то есть если глубина преобразования блока преобразования не равна 0, средство 1420 моделирования контекстов может определять предварительно установленную вторую контекстную модель в качестве контекстной модели для энтропийного кодирования флага значимого коэффициента блока преобразования cbf. Здесь первая и вторая контекстные модели основаны на различных моделях распределения вероятностей. То есть первая и вторая контекстные модели являются различными контекстными моделями.
Как описано выше, когда флаг значимого коэффициента блока преобразования cbf энтропийно кодируется, средство 1420 моделирования контекстов использует различные контекстной модели в случае, когда размер блока преобразования равен размеру блока кодирования, и в случае, когда размер блока преобразования не равен размеру блока кодирования. Если индекс, указывающий одну из множества предварительно установленных контекстных моделей для энтропийного кодирования флага значимого коэффициента блока преобразования cbf, называется индексом контекста ctxldx, индекс контекста ctxldx может иметь значение, получаемое путем суммирования параметра увеличения контекста ctxlnc для определения контекстной модели и предварительно установленного смещения индекса контекста ctxldxСмещение. То есть ctxldx=ctxlnc+ctxldxСмещение. Средство 1420 моделирования контекстов может отличать случай, когда глубина преобразования блока преобразования равна 0, от случая, когда глубина преобразования блока преобразования не равна 0, может изменять параметр увеличения контекста ctxlnc для определения контекстной модели, на основе глубины преобразования блока преобразования, и, таким образом, может изменять индекс контекста ctxldx для определения контекстной модели для энтропийного кодирования флага значимого коэффициента блока преобразования cbf.
Более подробно, если глубина преобразования обозначается как trafodepth, средство 1420 моделирования контекстов может определять параметр увеличения контекста ctxlnc на основе следующего алгоритма.
ctxlnc=(trafodepth==0)? 1:0
Этот алгоритм может осуществляться следующим псевдокодом.
Флаг значимого коэффициента блока преобразования cbf может быть отдельно установлен согласно компонентам яркости и насыщенности. Как описано выше, контекстная модель для энтропийного кодирования флага значимого коэффициента блока преобразования cbf_яркость блока преобразования компоненты яркости может быть определена посредством параметра увеличения контекста ctxlnc, который изменяется согласно тому, равна ли 0 глубина преобразования блока преобразования. Контекстная модель для энтропийного кодирования флага значимого коэффициента блока преобразования cbf_cb или cbf_cr блока преобразования компоненты насыщенности может быть определена посредством значения глубины преобразования trafodepth в качестве параметра увеличения контекста ctxlnc.
Система 1432 обычного кодирования выполняет двоичное арифметическое кодирование над битовым потоком, соответствующим синтаксическому элементу, на основе информации о MPS и LPS и информации вероятности по меньшей мере одного из MPS и LPS, которые включены в контекстную модель, обеспеченную от средства 1420 моделирования контекстов.
Фиг. 15 изображает блок-схему операции энтропийного кодирования и декодирования синтаксического элемента, относящегося к блоку преобразования, согласно одному варианту осуществления настоящего изобретения.
Со ссылкой на фиг. 15 на операции 1510 флаг значимого коэффициента блока преобразования cbf, указывающий, существует ли ненулевой коэффициент преобразования из коэффициентов преобразования, включенных в текущий блок преобразования, изначально энтропийно кодируется и декодируется. Как описано выше, контекстная модель для энтропийного кодирования флага значимого коэффициента блока преобразования cbf может быть определена на основе глубины преобразования блока преобразования, и двоичное арифметическое кодирование над флагом значимого коэффициента блока преобразования cbf может выполняться на основе определенной контекстной модели.
Если флаг значимого коэффициента блока преобразования cbf равен 0, поскольку только коэффициенты преобразования 0 существуют в текущем блоке преобразования, только значение 0 энтропийно кодируется или декодируется в качестве флага значимого коэффициента блока преобразования cbf, и информация уровня коэффициента преобразования энтропийно не кодируется и не декодируется.
На операции 1520, если значимый коэффициент существует в текущем блоке преобразования, карта значимости SigMap, указывающая местоположение значимого коэффициента, энтропийно кодируется или декодируется.
Карта значимости SigMap может быть сформирована из значимого бита и предварительно определенной информации, указывающей местоположение последнего значимого коэффициента. Значимый бит указывает, является ли коэффициент преобразования согласно каждому индексу сканирования значимым коэффициентом или 0, и может быть выражен через significant_coeff_flag[i]. Как будет описано ниже, карта значимости устанавливается в блоках подмножеств, имеющих предварительно определенный размер, которые получаются путем разбиения блока преобразования. Соответственно, significant_coeff_flag[i] указывает, равен ли 0 коэффициент преобразования i-го индекса сканирования из коэффициентов преобразования, включенных в подмножество, включенное в блок преобразования.
Согласно стандартному H.264, флаг (Конец-Блока), указывающий, является ли каждый значимый коэффициентом последним значимым коэффициентом, отдельно энтропийно кодируется или декодируется. Однако, согласно одному варианту осуществления настоящего изобретения, информация местоположения последнего значимого коэффициента сама энтропийно кодируется или декодируется. Например, если местоположением последнего значимого коэффициента является (x, y), где x и y целые, last_significant_coeff_x и last_significant_coeff_y, которые являются синтаксическими элементами, указывающими координатные значения (x, y), могут энтропийно кодироваться или декодироваться.
На операции 1530 информация уровня коэффициента преобразования, указывающая размер коэффициента преобразования, энтропийно кодируется или декодируется. Согласно стандартному H.264/AVC, информация уровня коэффициента преобразования выражается через coeff_abs_level_minus1, что является синтаксическим элементом. Согласно вариантам осуществления настоящего изобретения, в качестве информации уровня коэффициента преобразования, coeff_abs_level_greater1_flag, который является синтаксическим элементом, касающимся того, является ли абсолютное значение коэффициента преобразования больше 1, coeff_abs_level_greater2_flag, который является синтаксическим элементом, касающимся того, является ли абсолютное значение коэффициента преобразования больше 2, и coeff_abs_level_remaining, который указывает информацию размера остального коэффициента преобразования, кодируются.
Синтаксический элемент coeff_abs_level_remaining, указывающий информацию размера оставшегося коэффициента преобразования, имеет разницу в диапазоне между размером коэффициента преобразования (absCoeff) и значением базового уровня baseLevel, которое определяется посредством coeff_abs_level_greater1_flag и coeff_abs_level_greater2_flag. Значение базового уровня baseLevel определяется согласно уравнению: baseLevel = 1+coeff_abs_level_greater1_flag+coeff_abs_level_greater2_flag, и coeff_abs_level_remaining определяется согласно уравнению: coeff_abs_level_remaining = absCoeff - baseLevel. В то время как coeff_abs_level_greater1_flag и coeff_abs_level_greater2_flag имеют значение 0 или 1, значение базового уровня baseLevel может иметь значение от 1 до 3. Соответственно, coeff_abs_level_remaining может варьироваться от (absCoeff-1) до (absCoeff-3). Как описано выше, (absCoeff-baseLevel), что является разницей между размером исходного коэффициента преобразования absCoeff и значением базового уровня baseLevel, передается в качестве информации размера коэффициент преобразования для того, чтобы уменьшить размер переданных данных.
Операция определения контекстной модели для энтропийного кодирования флага значимого коэффициента блока преобразования, согласно одному варианту осуществления настоящего изобретения, далее будет описана.
Фиг. 16 изображает схему, иллюстрирующую блок кодирования и блоки 1611-1617 преобразования, включенные в блок кодирования, согласно одному варианту осуществления настоящего изобретения. На фиг. 16 блок данных, указанный пунктирной линией, обозначает блок кодирования, и блоки данных, указанные сплошными линиями, обозначают блоки 1611-1617 преобразования.
Как описано выше, устройство 100 кодирования видео и устройство 200 декодирования видео выполняют кодирование и декодирование путем разбиения наибольшего блока кодирования на блоки кодирования, имеющие размер, равный или меньший размеру наибольшего блока кодирования. Блок предсказания и блок преобразования, используемые в операции предсказания и операции преобразования, могут быть определены на основе затрат независимо от других блоков данных. Если размер блока кодирования больше размера наибольшего блока преобразования, пригодного для использования устройством 100 кодирования видео и устройством 200 декодирования видео, блок кодирования может быть разбит на блоки преобразования, имеющие размер, равный или меньший размеру наибольшего блока преобразования, и операция преобразования может выполняться на основе разбитых блоков преобразования. Например, если размер блока кодирования равен 64×64 и размер пригодного для использования наибольшего блока преобразования равен 32×32, для того, чтобы преобразовать (или обратно преобразовать) блок кодирования, блок кодирования разбивается на блоки преобразования, имеющие размер, равный или меньший 32×32.
Глубина преобразования (trafodepth), указывающая количество раз, когда блок кодирования разбивается в горизонтальном и вертикальном направлениях на блоки преобразования, может быть определена. Например, если размер текущего блока кодирования равен 2N×2N и размер блока преобразования равен 2N×2N, глубина преобразования может быть определена как 0. Если размер блока преобразования равен N×N, глубина преобразования может быть определена как 1. Иначе, если размер блока преобразования равен N/2×N/2, глубина преобразования может быть определена как 2.
Со ссылкой на фиг. 16 блоки 1611, 1616 и 1617 преобразования являются блоками преобразования уровня-1, полученными путем разбиения корневого блока кодирования единожды, и имеют глубину преобразования 1. Блоки 1612, 1614, 1614 и 1615 преобразования являются блоками преобразования уровня-2, полученными путем разбиения блока преобразования уровня-1 на четыре части, и имеют глубину преобразования 2.
Фиг. 17 изображает схему, иллюстрирующую параметр увеличения контекста ctxlnc, используемый для определения контекстной модели флага значимого коэффициента блока преобразования cbf каждого из блоков 1611-1617 преобразования с фиг. 16, на основе глубины преобразования. В древовидной структуре с фиг. 17 концевые узлы 1711-1717 соответственно соответствуют блокам 1611-1617 преобразования с фиг. 16, и значения 0 и 1, отмеченные на концевых узлах 1711-1717, указывают флаг значимого коэффициента блока преобразования cbf блоков 1611-1617 преобразования. Кроме того, на фиг. 17 концевые узлы, имеющие одну и ту же глубину преобразования, иллюстрируются в порядке блоков преобразования, расположенных в верхней левой, верхней правой, нижней левой и нижней правой сторонах. Например, концевые узлы 1712, 1713, 1714 и 1715 с фиг. 17 соответственно соответствуют блокам 1612, 1613, 1614 и 1615 преобразования с фиг. 16. Кроме того, со ссылкой на фиг. 16 и 17 предполагается, что только флаги значимого коэффициента блока преобразования cbf блоков 1612 и 1614 преобразования равны 1 и что флаги значимого коэффициента блока преобразования cbf других блоков преобразования равны 0.
Со ссылкой на фиг. 17, поскольку все из блоков 1611-1617 преобразования с фиг. 16 получаются путем разбиения корневого блока кодирования и, таким образом, имеют ненулевые глубины преобразования, параметр увеличения контекста ctxlnc, используемый для определения контекстной модели флага значимого коэффициента блока преобразования cbf каждого из блоков 1611-1617 преобразования, устанавливается как имеющий значение 0.
Фиг. 18 изображает схему, иллюстрирующую блок 1811 кодирования и блок 1812 преобразования, включенные в блок 1811 кодирования, согласно другому варианту осуществления настоящего изобретения. На фиг. 18 блок данных, указанный пунктирной линией, обозначает блок 1811 кодирования, и блок данных, указанный сплошной линией, обозначает блок 1812 преобразования.
Со ссылкой на фиг. 18, если размер блока 1811 кодирования равен размеру блока 1812 преобразования, используемого для преобразования блока 1811 кодирования, глубина преобразования (trafodepth) блока 1812 преобразования имеет значение 0. Если блок 1812 преобразования имеет глубину преобразования 0, параметр увеличения контекста ctxlnc, используемый для определения контекстной модели флага значимого коэффициента блока преобразования cbf блока 1812 преобразования, устанавливается как имеющий значение 1.
Средство 1420 моделирования контекстов с фиг. 14 может сравнивать размер блока кодирования с размером блока преобразования на основе глубины преобразования блока преобразования, может отличать случай, когда глубина преобразования блока преобразования равна 0, от случая, когда глубина преобразования блока преобразования не равна 0, и, таким образом, может изменять параметр увеличения контекста ctxlnc, используемый для определения контекстной модели, для энтропийного кодирования флага значимого коэффициента блока преобразования cbf. Путем изменения параметра увеличения контекста ctxlnc, используемого для определения контекстной модели, контекстная модель для энтропийного кодирования флага значимого коэффициента блока преобразования cbf может быть изменена в случае, когда глубина преобразования блока преобразования равна 0, и в случае, когда глубина преобразования блока преобразования не равна 0.
Фиг. 19 изображает схему, иллюстрирующую флаги преобразования разбиения split_transform_flag, используемые для определения структуры блоков преобразования, включенных в блок кодирования с фиг. 16, согласно одному варианту осуществления настоящего изобретения.
Устройство 100 кодирования видео может сигнализировать информацию о структуре блоков преобразования, используемую для преобразования каждого блока кодирования, к устройству 200 декодирования видео. Информация о структуре блоков преобразования может быть просигнализирована посредством флага преобразования разбиения split_transform_flag, указывающего, разбивается ли каждый блок кодирования в горизонтальном и вертикальном направлениях на четыре блока преобразования.
Со ссылкой на фиг. 16 и 19, поскольку корневой блок кодирования разбивается на четыре части, флаг преобразования разбиения split_transform_flag 1910 корневого блока кодирования устанавливается как 1. Если размер корневого блока кодирования больше размера используемого наибольшего блока преобразования, флаг преобразования разбиения split_transform_flag 1910 корневого блока кодирования может всегда быть установлен как 1 и может не сигнализироваться. Это так, поскольку, если размер блока кодирования больше размера используемого наибольшего блока преобразования, блок кодирования не требуется разделять на более глубокие блоки кодирования, имеющие размер, равный или меньший размеру по меньшей мере наибольшего блока преобразования.
В отношении каждого из четырех блоков преобразования, разбитых из корневого блока кодирования, имеющих глубину преобразования 1, флаг преобразования разбиения, указывающий, разбивать ли каждый из четырех блоков преобразования на четыре блока преобразования, имеющих глубину преобразования 2, устанавливается. На фиг. 19 флаги преобразования разбиения блоков преобразования, имеющие одну и ту же глубину преобразования, иллюстрируются в порядке блоков преобразования, расположенных в верхней левой, верхней правой, нижней левой и нижней правой сторонах. Ссылочная позиция 1911 обозначает флаг преобразования разбиения блока 1611 преобразования с фиг. 16. Поскольку блок 1611 преобразования не разбивается на блоки преобразования, имеющие более низкую глубину, флаг 1911 преобразования разбиения блока 1611 преобразования имеет значение 0. Схожим образом, поскольку блоки 1616 и 1617 преобразования с фиг. 16 не разбиваются на блоки преобразования, имеющие более низкую глубину, флаги 1913 и 1914 преобразования разбиения блоков 1616 и 1617 преобразования имеют значение 0. Поскольку верхний правый блок преобразования, имеющий глубину преобразования 1, на фиг. 16 разбивается на блоки 1612, 1613, 1614 и 1615 преобразования, имеющие глубину преобразования 2, флаг 1912 преобразования разбиения верхнего правого блока преобразования имеет глубину преобразования 1. Поскольку блоки 1612, 1613, 1614 и 1615 преобразования, имеющие глубину преобразования 2, не разбиваются на блоки преобразования, имеющие более низкую глубину, флаги 1915, 1916, 1917 и 1918 преобразования разбиения блоков 1612, 1613, 1614 и 1615 преобразования, имеющих глубину преобразования 2, имеют значение 0.
Как описано выше, контекстная модель для энтропийного кодирования флага значимого коэффициента блока преобразования cbf может быть определена на основе глубины преобразования блока преобразования, и двоичное арифметическое кодирование может выполняться над флагом значимого коэффициента блока преобразования cbf на основе выбранной контекстной модели. Если флаг значимого коэффициента блока преобразования cbf равен 0, поскольку только 0 коэффициентов преобразования существует в текущем блоке преобразования, только значение 0 энтропийно кодируется или декодируется в качестве флага значимого коэффициента блока преобразования cbf, и информация уровня коэффициента преобразования энтропийно не кодируется и не декодируется.
Операция энтропийного кодирования синтаксического элемента, относящегося к коэффициентам преобразования, включенным в блок преобразования, у которого флаг значимого коэффициента блока преобразования cbf имеет значение 1, то есть блок преобразования, имеющий ненулевой коэффициент преобразования, далее будет описана.
Фиг. 20 изображает блок 2000 преобразования, который энтропийно кодируется согласно одному варианту осуществления настоящего изобретения. Хотя блок 2000 преобразования, имеющий размер 16×16, иллюстрируется на фиг. 20, размер блока 2000 преобразования не ограничивается иллюстрируемым размером 16×16 и может также быть других размеров в диапазоне от 4×4 до 32×32.
Со ссылкой на фиг. 20 для энтропийного кодирования и декодирования коэффициента преобразования, включенного в блок 2000 преобразования, блок 2000 преобразования может разделяться на меньшие блоки преобразования. Операция энтропийного кодирования синтаксического элемента, относящегося к блоку 2010 преобразования 4×4, включенному в блок 2000 преобразования, далее будет описана. Эта операция энтропийного кодирования может также применяться к блоку преобразования других размеров.
Все коэффициенты преобразования, включенные в блок 2010 преобразования 4×4, имеют коэффициент преобразования (absCoeff), как изображено на фиг. 20. Коэффициенты преобразования, включенные в блок 2010 преобразования 4×4, могут быть упорядочены согласно предварительно определенному порядку сканирования, как изображено на фиг. 20, и последовательно обработаны. Однако порядок сканирования не ограничивается иллюстрируемым и может также быть модифицирован.
Примерами синтаксических элементов, относящихся к коэффициентам преобразования, включенным в блок 2010 преобразования 4×4, являются significant_coeff_flag, который является синтаксическим элементом, указывающим, является ли каждый коэффициент преобразования, включенный в блок преобразования, значимым коэффициентом, имеющим значение, которое не равно 0, coeff_abs_level_greater1_flag, который является синтаксическим элементом, указывающим, является ли абсолютное значение коэффициента преобразования больше 1, coeff_abs_level_greater2_flag, который является синтаксическим элементом, указывающим, является ли абсолютное значение больше 2, и coeff_abs_level_remaining, который является синтаксическим элементом, указывающим информацию размера остальных коэффициентов преобразования.
Фиг. 21 изображает карту 2100 значимости SigMap, соответствующую блоку 2010 преобразования с фиг. 20.
Со ссылкой на фиг. 20 и 21 карта 2100 значимости SigMap, имеющая значение 1 для каждого из значимых коэффициентов, которые имеют значение, которое не равно 0, из коэффициентов преобразования, включенных в блок 2010 преобразования 4×4 с фиг. 20, устанавливается. Карта 2100 значимости SigMap энтропийно кодируется или декодируется посредством ранее установленной контекстной модели.
Фиг. 22 изображает coeff_abs_level_greater1_flag 2200, соответствующий блоку 2010 преобразования 4×4 с фиг. 20.
Со ссылкой на фиг. 20-22 coeff_abs_level_greater1_flag 2200, который является флагом, указывающим, имеет ли соответствующий значимый коэффициент преобразования значение больше 1, в отношении значимых коэффициентов, для которых карта 2100 значимости SigMap имеет значение 1, устанавливается. Когда coeff_abs_level_greater1_flag 2200 равен 1, это указывает, что соответствующий коэффициент преобразования является коэффициентом преобразования, имеющим значение больше 1, и когда coeff_abs_level_greater1_flag 2200 равен 0, это указывает, что соответствующий коэффициент преобразования является коэффициентом преобразования, имеющим значение 1. На фиг. 22, когда coeff_abs_level_greater1_flag 2210 находится в местоположении коэффициента преобразования, имеющего значение 1, coeff_abs_level_greater1_flag 2210 имеет значение 0.
Фиг. 23 изображает coeff_abs_level_greater2_flag 2300, соответствующий блоку 2010 преобразования 4×4 с фиг. 20.
Со ссылкой на фиг. 20-23 coeff_abs_level_greater2_flag 2300, указывающий, имеет ли соответствующий коэффициент преобразования значение больше 2, касающийся коэффициентов преобразования, для которых coeff_abs_level_greater1_flag 2200 устанавливается равным 1, устанавливается. Когда coeff_abs_level_greater2_flag 2300 равен 1, это указывает, что соответствующий коэффициент преобразования является коэффициентом преобразования, имеющим значение больше 2, и когда coeff_abs_level_greater2_flag 2300 равен 0, это указывает, что соответствующий коэффициент преобразования является коэффициентом преобразования, имеющим значение 2. На фиг. 23, когда coeff_abs_level_greater2_flag 2310 находится в местоположении коэффициента преобразования, имеющего значение 2, coeff_abs_level_greater2_flag 2310 имеет значение 0.
Фиг. 24 изображает coeff_abs_level_remaining 2400, соответствующий блоку 2010 преобразования 4×4 с фиг. 20.
Со ссылкой на фиг. 20-24 coeff_abs_level_remaining 2400, который является синтаксическим элементом, указывающим информацию размера остальных коэффициентов преобразования, может быть получен путем вычисления (absCoeff-baseLevel) каждого коэффициента преобразования.
Coeff_abs_level_remaining 2400, который является синтаксическим элементом, указывающим информацию размера остальных коэффициентов преобразования, имеет разницу в диапазоне между размером коэффициента преобразования (absCoeff) и значением базового уровня baseLevel, определенных посредством coeff_abs_level_greater1_flag и coeff_abs_level_greater2_flag. Значение базового уровня baseLevel определяется согласно уравнению: baseLevel = 1+coeff_abs_level_greater1_flag+coeff_abs_level_greater2_flag, и coeff_abs_level_remaining определяется согласно уравнению: coeff_abs_level_remaining = absCoeff - baseLevel.
Coeff_abs_level_remaining 2400 может быть считан и энтропийно закодирован согласно иллюстрируемому порядку сканирования.
Фиг. 25 изображает блок-схему способа энтропийного кодирования видео согласно одному варианту осуществления настоящего изобретения.
Со ссылкой на фиг. 14 и 25 на операции 2510 средство 1420 моделирования контекстов получает данные блока кодирования, преобразованные на основе блока преобразования. На операции 2520 средство 1420 моделирования контекстов определяет контекстную модель для арифметического кодирования флага значимого коэффициента блока преобразования, указывающего, существует ли ненулевой коэффициент преобразования в блоке преобразования, на основе глубины преобразования блока преобразования.
Средство 1420 моделирования контекстов может определять различные контекстной модели в случае, когда размер блока преобразования равен размеру блока кодирования, то есть когда глубина преобразования блока преобразования равна 0, и в случае, когда размер блока преобразования меньше размера блока кодирования, то есть когда глубина преобразования блока преобразования не равна 0. Более подробно средство 1420 моделирования контекстов может изменять параметр увеличения контекста ctxlnc для определения контекстной модели на основе глубины преобразования блока преобразования, может отличать случай, когда глубина преобразования блока преобразования равна 0, от случая, когда глубина преобразования блока преобразования не равна 0, и, таким образом, может изменять индекс контекста ctxldx для определения контекстной модели для энтропийного кодирования флага значимого коэффициента блока преобразования.
Флаг значимого коэффициента блока преобразования может быть отдельно установлен согласно компонентам яркости и насыщенности. Контекстная модель для энтропийного кодирования флага значимого коэффициента блока преобразования cbf_яркость блока преобразования компоненты яркости может быть определена посредством параметра увеличения контекста ctxlnc, измененного согласно тому, равна ли 0 глубина преобразования блока преобразования. Контекстная модель для энтропийного кодирования флага значимого коэффициента блока преобразования cbf_cb или cbf_cr блока преобразования компоненты насыщенности может быть определена посредством значения глубины преобразования (trafodepth) в качестве параметра увеличения контекста ctxlnc.
На операции 2530 система 1432 обычного кодирования арифметически кодирует флаг значимого коэффициента блока преобразования на основе определенной контекстной модели.
Фиг. 26 изображает структурную схему устройства 2600 энтропийного декодирования согласно одному варианту осуществления настоящего изобретения. Устройство 2600 энтропийного декодирования соответствует энтропийному декодеру 220 устройства 200 декодирования видео с фиг. 2. Устройство 2600 энтропийного декодирования выполняет обратную операцию к операции энтропийного кодирования, выполняемой устройством 1400 энтропийного кодирования, описанным выше.
Со ссылкой на фиг. 26 устройство 2600 энтропийного декодирования включает в себя средство 2610 моделирования контекстов, систему 2620 обычного декодирования, систему 2630 обходного декодирования и обратный двоичный преобразователь 2640.
Синтаксический элемент, закодированный посредством обходного кодирования, выводится к обходному декодеру 2630 для арифметического декодирования, и синтаксический элемент, закодированный посредством обычного кодирования, арифметически декодируется обычным декодером 2620. Обычный декодер 2620 арифметически декодирует двоичное значение текущего синтаксического элемента на основе контекстной модели, обеспеченной посредством средства 2610 моделирования контекстов, чтобы, таким образом, вывести битовую строку.
Как вышеописанное средство 1420 моделирования контекстов с фиг. 14, средство 2610 моделирования контекстов может выбирать контекстная модель для энтропийного декодирования флага значимого коэффициента блока преобразования cbf на основе глубины преобразования блока преобразования. То есть средство 2610 моделирования контекстов может определять различные контекстной модели в случае, когда размер блока преобразования равен размеру блока кодирования, то есть когда глубина преобразования блока преобразования равна 0, и в случае, когда размер блока преобразования меньше размера блока кодирования, то есть когда глубина преобразования блока преобразования не равна 0. Более подробно средство 2610 моделирования контекстов может изменять параметр увеличения контекста ctxlnc для определения контекстной модели на основе глубины преобразования блока преобразования, может отличать случай, когда глубина преобразования блока преобразования равна 0, от случая, когда глубина преобразования блока преобразования не равна 0, и, таким образом, может изменять индекс контекста ctxldx для определения контекстной модели для энтропийного декодирования флага значимого коэффициента блока преобразования cbf.
Если структура блоков преобразования, включенных в блок кодирования, определяется на основе флага преобразования разбиения split_transform_flag, указывающего, разбивается ли блок кодирования, полученный из битового потока, на блоки преобразования, глубина преобразования блока преобразования может быть определена на основе количества раз, которое блок кодирования разбивается для достижения блока преобразования.
Флаг значимого коэффициента блока преобразования cbf может быть отдельно установлен согласно компонентам яркости и насыщенности. Контекстная модель для энтропийного декодирования флага значимого коэффициента блока преобразования cbf_яркость блока преобразования компоненты яркости может быть определена посредством параметра увеличения контекста ctxlnc, который изменяется согласно тому, равна ли 0 глубина преобразования блока преобразования. Контекстная модель для энтропийного декодирования флага значимого коэффициента блока преобразования cbf_cb или cbf_cr блока преобразования компоненты насыщенности может быть определена посредством значения глубины преобразования (trafodepth) в качестве параметра увеличения контекста ctxlnc.
Обратный двоичный преобразователь 2640 восстанавливает битовые строки, которые арифметически декодируются посредством системы 2620 обычного декодирования или системы 2630 обходного декодирования, снова до синтаксических элементов.
Устройство 2600 энтропийного декодирования арифметически декодирует синтаксические элементы, относящиеся к блокам преобразования, такие как coeff_abs_level_remaining, SigMap, coeff_abs_level_greater1_flag и coeff_abs_level_greater2_flag, дополнительно к флагу значимого коэффициента блока преобразования cbf, и выводит их. Когда синтаксические элементы, относящиеся к блоку преобразования, реконструируются, данные, включенные в блоки преобразования, могут быть декодированы посредством обратного квантования, обратного преобразования и декодирования с предсказанием, на основе реконструированных синтаксических элементов.
Фиг. 27 изображает блок-схему способа энтропийного декодирования видео согласно одному варианту осуществления настоящего изобретения.
Со ссылкой на фиг. 27 на операции 2710 определяется блок преобразования, включенный в блок кодирования и используемый для обратного преобразования блока кодирования. Как описано выше, структура блоков преобразования, включенных в блок кодирования, может быть определена на основе флага преобразования разбиения split_transform_flag, указывающего, разбивается ли блок кодирования, полученный из битового потока, на блоки преобразования. Кроме того, глубина преобразования блока преобразования может быть определена на основе количества раз, которое блок кодирования разбивается для достижения блока преобразования.
На операции 2720 средство 2610 моделирования контекстов получает флаг значимого коэффициента блока преобразования, указывающий, существует ли ненулевой коэффициент преобразования в блоке преобразования, из битового потока.
На операции 2730 средство 2610 моделирования контекстов определяет контекстная модель для арифметического декодирования флага значимого коэффициента блока преобразования на основе глубины преобразования блока преобразования. Как описано выше, средство 2610 моделирования контекстов может определять различные контекстные модели в случае, когда размер блока преобразования равен размеру блока кодирования, то есть когда глубина преобразования блока преобразования равна 0, в случае, когда размер блока преобразования меньше размера блока кодирования, то есть когда глубина преобразования блока преобразования не равна 0. Более подробно средство 2610 моделирования контекстов может изменять параметр увеличения контекста ctxlnc для определения контекстной модели, на основе глубины преобразования блока преобразования, может отличать случай, когда глубина преобразования блока преобразования равна 0, от случая, когда глубина преобразования блока преобразования не равна 0, и, таким образом, может изменять индекс контекста ctxldx для определения контекстной модели для энтропийного декодирования флага значимого коэффициента блока преобразования.
На операции 2740 система 2620 обычного декодирования арифметически декодирует флаг значимого коэффициента блока преобразования на основе контекстной модели, обеспеченной из средства 2610 моделирования контекстов.
Вышеупомянутые варианты осуществления настоящего изобретения могут также осуществляться в виде считываемого компьютером кода на считываемом компьютером носителе записи. Считываемым компьютером носителем записи является любое устройство хранения данных, которое может сохранять данные, которые могут быть после этого считаны компьютерной системой. Примеры считываемого компьютером носителя записи включают в себя постоянную память (ROM), оперативную память (RAM), CD-ROM, магнитные ленты, гибкие диски и оптические устройства хранения данных. Считываемый компьютером носитель записи может также быть распределенным по объединенным сетью компьютерным системам так, чтобы считываемый компьютером код сохранялся и исполнялся распределенным образом.
Хотя настоящее изобретение было, в частности, показано и описано со ссылками на его примерные варианты осуществления, обычному специалисту в данной области техники будет понятно, что различные изменения в его форме и подробностях могут быть сделаны без выхода за пределы сущности и объема настоящего изобретения, определенного следующей формулой.