КОНТЕКСТНАЯ ОПТИМИЗАЦИЯ ДЛЯ КОДИРОВАНИЯ ПОЛОЖЕНИЯ ПОСЛЕДНЕГО ЗНАЧИМОГО КОЭФФИЦИЕНТА
CONTEXTUAL OPTIMISATION FOR COING LAST SIGNIFICANT COEFFICIENT POSITION

РОДСТВЕННЫЕ ЗАЯВКИ
Настоящая заявка испрашивает приоритет:
Предварительной заявки на патент США № 61/557,317, поданной 8 ноября 2011 года;
Предварительной заявки на патент США № 61/561,909, поданной 20 ноября 2011 года;
Предварительной заявки на патент США № 61/588,579, поданной 19 января 2012 года; и
Предварительной заявки на патент США № 61/596,049, поданной 7 февраля 2012 года, каждая из которых включена в настоящий документ во всей своей полноте посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение относится к кодированию видеосигнала и, более конкретно, к способам кодирования коэффициентов преобразования.
УРОВЕНЬ ТЕХНИКИ
Возможности цифрового видео могут быть включены в широкий ряд устройств, включая цифровые телевизоры, цифровые системы прямой широковещательной передачи, системы беспроводной широковещательной передачи, персональные цифровые помощники (PDA), портативные или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые фотоаппараты, цифровые записывающие устройства, цифровые медиаплееры, устройства видеоигр, игровые видеоприставки, сотовые или спутниковые радиотелефоны, так называемые «смартфоны», устройства видеотелеконференции, устройства потокового видео и тому подобное. Цифровые видео устройства осуществляют способы сжатия видеосигнала, как, например, описанные в стандартах MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, Продвинутое Кодирование (AVC) Видеосигнала, стандарте Высокоэффективное Кодирование (HEVC) Видеосигнала, в настоящее время находящемся в разработке, и расширениях этих стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить цифровую видеоинформацию более эффективно, осуществляя такие способы сжатия видеосигнала.
Способы сжатия видеосигнала выполняют пространственное (внутри изображения) предсказание и/или временное (между изображениями) предсказание для сокращения или устранения избыточности, присущей для последовательностей видеокадров. Для кодирования видеосигналов на основе блоков, видеослайс (то есть, видеокадр или часть видеокадра) может быть разделен на видеоблоки, которые также называют древовидными блоками, элементами (CU) кодирования и/или узлами кодирования. Видеоблоки в слайсе (I) изображения, подвергнутом интра-кодированию, кодируются с использованием пространственного предсказания по отношению к опорным выборкам в соседних блоках в том же изображении. Видеоблоки в слайсе изображения (Р или В), подвергнутом интер-кодированию, могут использовать пространственное предсказание по отношению к опорным выборкам в соседних блоках в том же изображении или временное предсказание по отношению к опорным выборкам в других опорных изображениях. Изображения называются кадрами, и опорные изображения называются опорными кадрами.
Пространственное или временное предсказание приводит к предсказательному блоку для блока, который подлежит кодированию. Остаточные данные представляют собой разницы пикселов между исходным блоком, который подлежит кодированию, и предсказательным блоком. Блок, подвергнутый интер-кодированию, кодируется в соответствии с вектором движения, который указывает на блок опорных выборок, формирующих предсказательный блок, и остаточными данными, указывающими разницу между закодированным блоком и предсказательным блоком. Блок, подвергнутый интра-кодированию, кодируется в соответствии с режимом интра-кодирования и остаточными данными. Для дополнительного сжатия остаточные данные могут быть преобразованы из области пикселов в область преобразования, что приведет к остаточным коэффициентам преобразования, которые затем могут быть квантованы. Квантованные коэффициенты преобразования, изначально размещенные в двумерном массиве, могут быть сканированы в конкретном порядке для производства одномерного вектора коэффициентов преобразования, и энтропийное кодирование может быть применено для достижения еще большего сжатия.
СУЩЕСТВО ИЗОБРЕТЕНИЯ
В общем, настоящее изобретение описывает способы кодирования видеоданных. Более конкретно, настоящее изобретение описывает способы кодирования коэффициентов преобразования.
В одном примере настоящего изобретения, способ кодирования коэффициентов преобразования содержит получение двоичной цепочки, указывающей положение последнего значимого коэффициента внутри блока коэффициентов преобразования, связанного с видеоблоком; определение контекста для двоичного индекса двоичной цепочки на основании размера видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с разными размерами видеоблока; и кодирование двоичной цепочки с использованием контекстно-адаптивного двоичного арифметического кодирования (САВАС) на основании, по меньшей мере, частично, определенного контекста.
В другом примере настоящего изобретения, способ декодирования коэффициентов преобразования содержит получение закодированной двоичной цепочки, указывающей положение последнего значимого коэффициента внутри блока коэффициентов преобразования, связанного с видеоблоком, причем закодированная двоичная цепочка закодирована с использованием САВАС; определение контекста для двоичного индекса закодированной двоичной цепочки на основании размере видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с разными размерами видеоблока; и декодирование закодированной двоичной цепочки с использованием САВАС на основании, по меньшей мере, частично, определенного контекста.
В другом примере настоящего изобретения, устройство, выполненное с возможностью кодировать коэффициенты преобразования в процессе кодирования видеосигнала, содержит средство получения двоичной цепочки, указывающей положение последнего значимого коэффициента внутри блока коэффициентов преобразования, связанного с видеоблоком; средство определения контекста для двоичного индекса двоичной цепочки на основании размера видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с разными размерами видеоблока; и средство кодирования двоичной цепочки с использованием САВАС на основании, по меньшей мере, частично, определенного контекста.
В другом примере настоящего изобретения, устройство, выполненное с возможностью декодировать коэффициенты преобразования в процессе декодирования видеосигнала, содержит средство получения закодированной двоичной цепочки, указывающей положение последнего значимого коэффициента внутри блока коэффициентов преобразования, связанного с видеоблоком, причем закодированная двоичная цепочка закодирована с использованием САВАС; средство определения контекста для двоичного индекса закодированной двоичной цепочки на основании размера видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с разными размерами видеоблока; и средство декодирования закодированной двоичной цепочки с использованием САВАС на основании, по меньшей мере, частично, определенного контекста.
В другом примере настоящего изобретения, устройство содержит видеокодер, выполненный с возможностью получать двоичную цепочку, указывающую положение последнего значимого коэффициента внутри блока коэффициентов преобразования, связанного с видеоблоком; определять контекст для двоичного индекса двоичной цепочки на основании размера видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с разными размерами видеоблока; и кодировать двоичную цепочку с использованием САВАС на основании, по меньшей мере, частично, определенного контекста.
В другом примере настоящего изобретения, устройство содержит видеодекодер, выполненный с возможностью получать закодированную двоичную цепочку, указывающую положение последнего значимого коэффициента внутри блока коэффициентов преобразования, связанного с видеоблоком, причем закодированная двоичная цепочка закодирована с использованием САВАС; определять контекст для двоичного индекса закодированной двоичной цепочки на основании размера видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с разными размерами видеоблока; и декодировать закодированную двоичную цепочку с использованием САВАС на основании, по меньшей мере, частично, определенного контекста.
В другом примере настоящего изобретения, неизменяемый компьютерно-читаемый носитель данных имеет команды, хранящиеся на нем, которые, при их выполнении, побуждают устройство кодирования видеосигнала получать двоичную цепочку, указывающую положение последнего значимого коэффициента внутри блока коэффициентов преобразования, связанного с видеоблоком; определять контекст для двоичного индекса двоичной цепочки на основании размера видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с разными размерами видеоблока; и кодировать двоичную цепочку с использованием САВАС на основании, по меньшей мере, частично, определенного контекста.
В другом примере настоящего изобретения, неизменяемый компьютерно-читаемый носитель данных имеет команды, хранящиеся на нем, которые, при их выполнении, побуждают устройство декодирования видеосигнала получать закодированную двоичную цепочку, указывающую положение последнего значимого коэффициента внутри блока коэффициентов преобразования, связанного с видеоблоком, причем закодированная двоичная цепочка закодирована с использованием САВАС; определять контекст для двоичного индекса закодированной двоичной цепочки на основании размера видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с разными размерами видеоблока; и декодировать закодированную двоичную цепочку с использованием САВАС на основании, по меньшей мере, частично, определенного контекста.
Детали одного или нескольких примеров изложены в сопровождающих чертежах и раскрытии изобретения ниже. Другие признаки, цели и преимущества будут очевидны из раскрытия и чертежей, а также из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг. 1 является блок-схемой, изображающей пример системы кодирования и декодирования видеосигнала.
Фиг. 2A-2D изображают примеры порядков сканирования величины коэффициента.
Фиг. 3 изображает пример карты значимости по отношению к блоку величин коэффициентов.
Фиг. 4 является блок-схемой, изображающей пример видеокодера, который может осуществлять способы, описанные в настоящем изобретении.
Фиг. 5 является блок-схемой, изображающей пример энтропийного кодера, который может осуществлять способы, описанные в настоящем изобретении.
Фиг. 6 является блок-схемой алгоритма, изображающей пример кодирования величины двоичной цепочки, указывающей положение последнего значимого коэффициента, в соответствии со способами настоящего изобретения.
Фиг. 7 является блок-схемой, изображающей пример видеодекодера, который может осуществлять способы, описанные в настоящем изобретении.
Фиг. 8 является блок-схемой, изображающей пример энтропийного декодера, который может осуществлять способы, описанные в настоящем изобретении.
Фиг. 9 является блок-схемой алгоритма, изображающей пример декодирования величины двоичной цепочки, указывающей положение последнего значимого коэффициента, в соответствии со способами настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
В общем, настоящее изобретение описывает способы кодирования видеоданных. Более конкретно, данное изобретение описывает способы кодирования коэффициентов преобразования в процессе кодирования и/или декодирования видеосигнала. При кодировании видеосигнала на основании блоков, блок коэффициентов преобразования может быть упорядочен в двумерную (2D) матрицу. Процесс сканирования может быть выполнен для переупорядочивания двумерной (2D) матрицы коэффициентов преобразования в упорядоченную одномерную (1D) матрицу, то есть вектор, коэффициентов преобразования. Один или несколько коэффициентов преобразования могут быть использованы для указания положения последнего значимого коэффициента (то есть, ненулевого коэффициента) внутри блока коэффициентов преобразования на основании порядка сканирования. Положение последнего значимого коэффициента может быть использовано видеокодером для оптимизации кодирования коэффициентов преобразования. Таким образом, желательно эффективно кодировать один или несколько синтаксических элементов, которые указывают положение последнего значимого коэффициента.
Настоящее изобретение описывает способы кодирования одного или нескольких синтаксических элементов, которые указывают положение последнего значимого коэффициента. В некоторых примерах, все или часть синтаксических элементов, которые указывают положение последнего значимого коэффициента, могут быть энтропийно кодированы в соответствии с любым из следующих способов: контекстно-зависимым адаптивным кодированием (CAVLC) с переменной длиной кодового слова, контекстно-зависимым адаптивным двоичным арифметическим кодированием (CAВАC), энтропийным кодированием (PIPE) с разделением интервала вероятности или тому подобным. В способах энтропийного кодирования, которые используют двоичные индексы (которые также называют «бинами» или «индексами бина») и назначения контекста, общее назначение контекста может быть использовано для бинов для блоков (TU) преобразования различных размеров и/или компонентов различных цветов. Таким образом, общее число контекстов может быть сокращено. При сокращении общего числа контекстов, видеокодер и/или видеодекодер могут более эффективно кодировать синтаксические элементы, которые указывают положение последнего значимого коэффициента, так как нужно хранить меньше контекстов.
Фиг. 1 является блок-схемой, изображающей пример системы 10 кодирования и декодирования видеосигнала, которая может быть выполнена с возможностью использовать способы кодирования коэффициентов преобразования, в соответствии с примерами настоящего изобретения. Как изображено на Фиг. 1, система 10 включает в себя устройство 12 источника, которое передает закодированный видеосигнал устройству 14 назначения по каналу 16 связи. Закодированные видеоданные могут также храниться на носителе 34 данных или файловом сервере 36, и при желании доступ к ним может быть осуществлен устройством 14 назначения. При хранении на носителе данных или файловом сервере, видеокодер 20 может обеспечивать закодированные видеоданные другому устройству, как, например, сетевому интерфейсу, компактному диску (CD), устройству для записи цифрового видеодиска (DVD) или Blu-ray, либо устройству маркировки средств передачи информации или другим устройствам, для хранения закодированных видеоданных на носителе данных. Подобным образом, устройство, отдельное от видеодекодера 30, как, например, сетевой интерфейс, считывающее устройство CD или DVD, или тому подобное, может извлекать закодированные видеоданные из носителя данных и обеспечивать извлеченные данные видеодекодеру 30.
Устройство 12 источника и устройство 14 назначения могут содержать любое из широкого выбора устройств, включая настольные компьютеры, ноутбуки (то есть, портативные компьютеры), планшеты, телевизионные приставки, телефонные устройства, как, например, так называемые смартфоны, телевизоры, фотоаппараты, устройства отображения, цифровые медиаплееры, игровые видеоприставки и тому подобное. Во многих случаях, такие устройства могут быть оборудованы для беспроводной связи. Следовательно, канал 16 связи может содержать беспроводной канал, проводной канал или комбинацию беспроводного и проводного каналов, подходящую для передачи закодированных видеоданных. Подобным образом, к файловому серверу 36 может быть осуществлен доступ устройством 14 назначения по любому стандартному соединению данных, включая интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и так далее), или их комбинацию, подходящую для доступа к закодированным видеоданным, хранящимся на файловом сервере.
Способы кодирования коэффициентов преобразования, в соответствии с примерами настоящего изобретения, могут быть применены к кодированию видеосигнала для поддержки любого из множества мультимедийных приложений, как, например, широковещательные передачи по эфирному телевидению, передачи по кабельному телевидению, передачи по спутниковому телевидению, передачи по потоковому видео, например, по интернету, кодирование цифрового видеосигнала для хранения на носителе данных, декодирование цифрового видеосигнала, хранящегося на носителе данных, и другие приложения. В некоторых примерах, система 10 может быть выполнена с возможностью поддерживать одностороннюю или двустороннюю передачу видеоданных для поддержки приложений, как, например, потоковое видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
В примере на Фиг. 1, устройство 12 источника включает в себя видеоисточник 18, видеокодер 20, модулятор/демодулятор 22 и передатчик 24. В устройстве 12 источника, видеоисточник 18 может включать в себя источник, как, например, устройство захвата видеосигнала, как, например, видеокамера, видеоархив, содержащий ранее захваченный видеосигнал, интерфейс видеопотока для приема видео от провайдера видеоконтента, и/или систему компьютерной графики для формирования данных компьютерной графики в качестве видеосигнала источника, либо комбинацию таких источников. В качестве одного примера, если источник 18 видеосигнала - это видеокамера, то устройство 12 источника и устройство 14 назначения могут формировать так называемые камерофоны или видеофоны. Однако способы, описанные в настоящем изобретении, могут быть применимы к кодированию видеосигнала вообще и могут быть применимы к беспроводным и/или проводным приложениям, либо к приложению, в котором закодированные видеоданные хранятся на локальном диске.
Захваченный, ранее захваченный или сформированный компьютером видеосигнал может быть закодирован видеокодером 20. Закодированная видеоинформация может быть модулирована модемом 22 в соответствии со стандартом связи, как, например, протокол беспроводной связи, и передана устройству 14 назначения по передатчику 24. Модем 22 может включать в себя различные микшеры, фильтры, усилители или другие компоненты, предназначенные для модуляции сигнала. Передатчик 24 может включать в себя схемы, предназначенные для передачи данных, включая усилители, фильтры и одну или несколько антенн.
Захваченный, ранее захваченный или сформированный компьютером видеосигнал, который закодирован видеокодером 20, может также храниться на носителе 34 данных или файловом сервере 36 для дальнейшего использования. Носитель 34 данных может включать в себя диски Blu-ray, DVD, CD-ROM, флэш-память, или любые другие подходящие цифровые носители данных для хранения закодированного видеосигнала. Доступ к закодированному видеосигналу, хранящемуся на носителе 34 данных, может быть осуществлен устройством 14 назначения для декодирования и воспроизведения.
Файловый сервер 36 может быть любым типом сервера, способным хранить закодированный видеосигнал и передавать этот закодированный видеосигнал устройству 14 назначения. Примеры файловых серверов включают в себя веб-сервер (например, для вебсайта), сервер FTP, устройства сетевого хранилища (NAS) данных, локальный дисковод или любой другой тип устройства, способного хранить закодированный видеосигнал и передавать его устройству назначения. Передача закодированных видеоданных от файлового сервера 36 может быть потоковой передачей, передачей загрузки или их комбинацией. Доступ к файловому серверу 36 может быть осуществлен устройством 14 назначения по любому стандартному соединению данных, включая интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, этернет, USB и так далее) или их комбинацию, подходящую для доступа к закодированным видеоданным, хранящимся на файловом сервере.
Устройство 14 назначения, в примере на Фиг. 1, включает в себя приемник 26, модем 28, видеодекодер 30 и устройство 32 отображения. Приемник 26 устройства 14 назначения принимает информацию по каналу 16, и модем 28 демодулирует информацию для производства демодулированного потока двоичных данных для видеодекодера 30. Информация, передаваемая по каналу 16, может включать в себя различную синтаксическую информацию, сформированную видеокодером 20, для использования видеодекодером 30 при декодировании видеоданных. Такой синтаксис может также быть включен в закодированные видеоданные, хранящиеся на носителе 34 данных или файловом сервере 36. Каждый из видеокодера 20 и видеодекодера 30 может формировать часть соответствующего кодера-декодера (CODEC), который способен кодировать или декодировать видеоданные.
Устройство 32 отображения может быть интегрировано, либо быть внешним по отношению к устройству 14 назначения. В некоторых примерах, устройство 14 назначения может включать в себя интегрированное устройство отображения и также быть выполнено с возможностью взаимодействовать с внешним устройством отображения. В других примерах, устройство 14 назначения может быть устройством отображения. В общем, устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из устройств отображения, как, например, жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
В примере на Фиг. 1, канал 16 связи может содержать беспроводной или проводной носитель связи, как, например, радиочастотный (RF) спектр или одна или несколько физических линий передачи, либо любую комбинацию беспроводных и проводных носителей. Канал 16 связи может формировать часть пакетной сети, как, например, локальная сеть, региональная сеть или глобальная сеть, как, например, интернет. Канал 16 связи, в общем, представляет собой любой подходящий носитель связи или группу различных носителей связи для передачи видеоданных от устройства 12 источника устройству 14 назначения, включая любую подходящую комбинацию проводных или беспроводных носителей. Канал 16 связи может включать в себя роутеры, переключатели, базовые станции или любое другое оборудование, которое можно использовать для способствования связи от устройства 12 источника к устройству 14 назначения.
Видеокодер 20 и видеодекодер 30 могут функционировать в соответствии со стандартом сжатия видеосигнала, как, например, стандарт высокоэффективного кодирования (HEVC) видеосигнала, находящийся в настоящее время в разработке Совместной Кооперативной Группой (JCT-VC) по Кодированию видеосигнала Экспертной группы (VCEG) по Видеокодированию ITU-T и Экспертной группы (MPEG) по движущемуся изображению ISO/IEC, и может соответствовать тестовой модели (HM) HEVC. Видеокодер 20 и видеодекодер 30 могут функционировать в соответствии с последней версией стандарта HEVC, называемой «Рабочая версия 5 HEVC» или «WD5», которая описана в документе JCTVC-G1103, Бросс и другие, «WD5: Рабочая версия 5 Высокоэффективного кодирования (HEVC) видеосигнала», Совместная группа (JCT-VC) по видеокодированию ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 7-я встреча: Женева, Швейцария, Ноябрь, 2012 год. Дополнительно, другая последняя рабочая версия HEVC, Рабочая версия 7, описана в документе HCTVC-I1003, Бросс и другие, «Текстовая версия 7 спецификации Высокоэффективного кодирования (HEVC) видеосигнала», Совместная группа (JCT-VC) по видеокодированию ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 9ая встреча: Женева, Швейцария, 27 апреля - 7 мая, 2012 год. Альтернативно, видеокодер 20 и видеодекодер 30 могут функционировать в соответствии с другими частными или промышленными стандартами, как, например, стандарт ITU-T H.264, альтернативно называемый как MPEG-4, часть 10, Продвинутое Кодирование (AVC) Видеосигнала, либо расширениями таких стандартов. Способы настоящего изобретения, однако, не ограничены любым конкретным стандартом кодирования. Другие примеры включают в себя MPEG-2 и ITU-T H.263.
Хотя это не изображено на Фиг. 1, в некоторых аспектах видеокодер 20 и видеодекодер 30 могут быть интегрированы с аудиокодером и декодером и могут включать в себя элементы MUX-DEMUX или другие технические средства или программное обеспечение для выполнения кодирования аудио- и видеосигнала в общем потоке данных либо раздельных потоках данных. Если это применимо, в некоторых примерах, элементы MUX-DEMUX могут соответствовать протоколу мультиплексирования ITU H.223 или другим протоколам, как, например, протокол (UDP) пользовательских дейтаграмм.
Видеокодер 20 и видеодекодер 30 могут быть осуществлены в качестве любой из подходящих схем кодирования, как, например, один или несколько микропроцессоров, цифровые сигнальные элементы (DSP) обработки, специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, программное обеспечение, технические средства, программно-аппаратные средства или любые их комбинации. Когда способы осуществлены частично в программном обеспечении, устройство может хранить команды для программного обеспечения на подходящем неизменяемом компьютерно-читаемом носителе и выполнять команды в технических средствах с использованием одного или нескольких процессоров для выполнения способов настоящего изобретения. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или несколько кодеров и декодеров, любой из которых может быть интегрирован как часть комбинированного кодера-декодера (CODEC) в соответствующем устройстве.
Видеокодер 20 может осуществлять любой или все способы настоящего изобретения для кодирования коэффициентов преобразования в процессе видеокодирования. Подобным образом, видеодекодер 30 может осуществлять любой или все способы кодирования коэффициентов преобразования в процессе видеокодирования. Видеокодер, как описано в настоящем изобретении, может относиться к видеокодеру или видеодекодеру. Подобным образом, элемент кодирования видеосигнала может относиться к видеокодеру или видеодекодеру. Подобным образом, кодирование видеосигнала может относиться к кодированию видеосигнала или декодированию видеосигнала.
Видеокодер 20 и видеодекодер 30 на Фиг. 1 представляют примеры видеокодеров, выполненных с возможностью получать двоичную цепочку, указывающую положение последнего значимого коэффициента внутри видеоблока, определять контекст для двоичного индекса двоичной цепочки на основании размера видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с разными размерами видеоблока; и кодировать двоичную цепочку с использованием контекстно-адаптивного двоичного арифметического кодирования (САВАС) на основании, по меньшей мере, частично, определенного контекста.
Для кодирования видеосигнала в соответствии со стандартом HEVC, который находится в настоящее время в разработке, видеокадр может быть разделен на элементы кодирования. Элемент (CU) кодирования, в общем, относится к участку изображения, который служит в качестве базового элемента, к которому применяются различные инструменты кодирования для сжатия видеосигнала. CU, как правило, имеет компонент яркости, обозначаемый как Y, и два компонента цветности, обозначаемые как U и V. В зависимости от формата видеодискретизации, размер компонентов U и V, с точки зрения числа выборок, может быть тем же или отличаться от размера компонента Y. CU, как правило, квадратный, и его можно рассматривать как похожий на так называемый макроблок, например, по другим стандартам кодирования видеосигнала, как, например, ITU-T H.264. Кодирование в соответствии с некоторыми из предлагаемых аспектов развивающегося стандарта HEVC будет описано в настоящей заявке для целей иллюстрации. Однако способы, описанные в настоящем изобретении, могут быть использованы для других процессов кодирования видеосигнала, как, например, определенные в соответствии с Н.264 или другим стандартом или частными процессами кодирования видеосигнала. Усилия по стандартизации HEVC основаны на модели устройства кодирования видеосигнала, называемой тестовая модель (НМ) HEVC. НМ предполагает несколько способностей устройств кодирования видеосигнала по сравнению с другими устройствами в соответствии, например, с ITU-T H.264/AVC. Например, в то время как Н.264 обеспечивает девять режимов кодирования с интра-предсказанием, НМ обеспечивает тридцать четыре режима кодирования с интра-предсказанием.
Видеопоследовательность обычно включает в себя последовательность видеокадров или изображений. Группа (GOP) изображений, в общем, содержит последовательность одного или нескольких видеоизображений. GOP может включать в себя синтаксические данные в заголовке GOP, заголовке одного или нескольких изображений или еще где-либо, которые описывают число изображений, включенных в GOP. Каждый слайс изображения может включать в себя синтаксические данные слайса, которые описывают режим кодирования для соответствующего слайса. Видеокодер 20, как правило, функционирует на видеоблоках внутри отдельных видеослайсов, чтобы кодировать видеоданные. Видеоблок может включать в себя один или несколько TU или PU, которые соответствуют узлу кодирования внутри CU. Видеоблоки могут иметь фиксированные или изменяемые размеры и могут отличаться в размерах в соответствии с конкретным стандартом кодирования.
В соответствии с НМ, CU может включать в себя один или несколько элементов (PU) предсказания и/или один или несколько элементов (TU) преобразования. Синтаксические данные внутри двоичного потока данных могут определять наибольший элемент (LCU) кодирования, который является наибольшим CU по отношению к числу пикселов. В общем, CU предназначен для того же, что и макроблок Н.264, за исключением того, что CU не имеет отличия в размере. Таким образом, CU может быть разделен на суб-CU. В общем, ссылки в настоящем изобретении на CU могут относиться к наибольшему элементу кодирования изображения или суб-CU LCU. LCU может быть разделен на суб-CU, и каждый суб-CU может быть дополнительно разделен на суб-CU. Синтаксические данные для двоичного потока данных могут определять максимальное число раз, которое может быть разделен LCU, называемое глубиной CU. Соответственно, поток двоичных данных может также определять наименьший элемент (SCU) кодирования. Настоящее изобретение также использует термин «блок» или «часть» для ссылки на любой из CU, PU или TU. В общем, «часть» может относиться к любому из подгруппы видеокадра.
LCU может быть связан со структурой данных дерева квадратов. В общем, структура данных дерева квадратов включает в себя один узел на CU, где корневой узел соответствует LCU. Если CU разделен на четыре суб-CU, то узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одному из суб-CU. Каждый узел структуры данных дерева квадратов может обеспечивать синтаксические данные соответствующему CU. Например, узел в дереве квадратов может включать в себя флаг разделения, указывающий, разделен ли CU, соответствующий узлу, на суб-CU. Синтаксические элементы для CU могут быть определены рекурсивно и могут зависеть от того, разделен ли CU на суб-CU. Если CU дополнительно не разделен, то он называется концевым CU. В настоящем изобретении, 4 суб-CU концевого CU будут также называться концевыми CU, хотя при этом нет явного разделения исходного концевого CU. Например, если CU размера 16х16 не разделен дополнительно, то четыре суб-CU 8х8 также будут называться концевыми CU, хотя CU 16х16 никогда не был разделен.
Более того, TU концевых CU также могут быть связаны с соответственными структурами данных дерева квадратов. То есть, концевой CU может включать в себя дерево квадратов, указывающее, как разделен концевой CU на TU. Настоящее изобретение ссылается на дерево квадратов, указывающее, как LCU разделен в качестве дерева квадратов CU, и дерево квадратов, указывающее, как концевой CU разделен на TU в качестве дерева квадратов TU. Корневой узел дерева квадратов TU, в общем, соответствует концевому CU, в то время как корневой узел дерева квадратов CU, в общем, соответствует LCU. TU дерева квадратов TU, которые не разделены, называются концевыми TU.
Концевой CU может включать в себя один или несколько элементов (PU) предсказания. В общем, PU представляет собой все или часть соответствующих CU и может включать в себя данные для извлечения опорной выборки для PU. Например, когда PU закодирован в интре-режиме, PU может включать данные, определяющие вектор движения для PU. Данные, определяющие вектор движения, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, с точностью до одной четвертой пиксела или одной восьмой пиксела), опорный кадр, на который указывает вектор движения, и/или опорный список (например, список 0) для вектора движения. Данные для концевого CU, определяющие PU, также могут описывать, например, разделение CU на один или несколько PU. Режимы разделения могут отличаться в зависимости от того, является ли CU незакодированным, закодированным в режиме интра-предсказания или закодированным в режиме интер-предсказания. Для интра-кодирования, PU может рассматриваться так же, как и концевой элемент преобразования, описанный ниже.
В качестве примера, НМ поддерживает предсказание в различных размерах PU. Предполагая, что размер конкретного CU равен 2N×2N, НМ поддерживает интра-предсказание в размерах PU 2N×2N или N×N, и интер-предсказание в симметричных размерах PU 2N×2N, 2N×N, N×2N или N×N. НМ также поддерживает асимметричное разделение для интер-предсказания в размерах PU 2N×nU, 2N×nD, nL×2N и nR×2N. В асимметричном разделении, одно направление CU не разделяется, в то время как другое направление разделяется на 25% и 75%. Часть CU, соответствующая 25% разделению, указывается «n», за которым следует указание «Вверх», «Вниз», «Влево» или «Вправо». Таким образом, например, «2N×nU» относится к 2N×2N CU, который разделен горизонтально с 2N×0,5N PU сверху и 2N×1,5N PU снизу.
В настоящем изобретении, «N×N» и «N на N» могут быть использованы взаимозаменяемо для ссылки на размеры пикселов видеоблока с учетом вертикальных и горизонтальных размеров, например, 16×16 пикселов или 16 на 16 пикселов. В общем, блок 16×16 будет иметь 16 пикселов в вертикальном направлении (у=16) и 16 пикселов в горизонтальном направлении (х=16). Подобным образом, блок N×N будет иметь N пикселов в вертикальном направлении и N пикселов в горизонтальном направлении, где N представляет собой неотрицательную целую величину. Пикселы в блоке могут быть упорядочены в строки и столбцы. Более того, блоки необязательно должны иметь одинаковое число пикселов в горизонтальном направлении и вертикальном направлении. Например, блоки могут содержать N×M пикселов, где М необязательно равно N.
Для кодирования блока (например, элемента предсказания видеоданных), сперва извлекается предиктор для блока. Предиктор, также называемый предсказательным блоком, может быть извлечен либо с помощью интра-предсказания (I) (то есть, пространственного предсказания), либо интер-предсказания (Р или В) (то есть, временного предсказания). Следовательно, некоторые элементы предсказания могут быть закодированы в интра-режиме (I) с использованием пространственного предсказания по отношению к опорным выборкам в соседних опорных блоках в том же кадре (или слайсе), и другие элементы предсказания могут быть закодированы однонаправленно во интер-режиме (Р) или закодированы двунаправленно в интер-режиме (В) по отношению к блокам опорных выборок в других ранее закодированных кадрах (или слайсах). В каждом случае, опорные выборки могут быть использованы для формирования предсказательного блока для блока, который подлежит кодированию.
После идентификации предсказательного блока, определяется разница между исходным блоком видеоданных и его предсказательным блоком. Эта разница может называться остаточными данными предсказания и указывать разницы пикселов между величинами пикселов в блоке, который подлежит кодированию, и величинами пикселов в блоке, выбранном для представления закодированного блока. Для достижения лучшего сжатия, остаточные данные предсказания могут быть преобразованы, например, с использованием дискретного косинусного преобразования (DCT), целочисленного преобразования, преобразования Карунена-Лоэва (K-L) или другого преобразования.
Остаточные данные в блоке преобразования, как, например, TU, могут быть упорядочены в двумерную (2D) матрицу величин разницы пикселов, находящуюся в пространственной, пиксельной области. Преобразование преобразует остаточные величины пикселов в двумерную матрицу коэффициентов преобразования в области преобразования, как, например, область частот. Для дополнительного сжатия, коэффициенты преобразования могут быть квантованы до энтропийного кодирования. Элемент энтропийного кодирования затем применяет энтропийное кодирование, как, например, CAVLC, CABAC, PIPE или тому подобное, к квантованным коэффициентам преобразования.
Для энтропийного кодирования блока коэффициентов преобразования, процесс сканирования обычно выполняется так, чтобы двумерная (2D) матрица квантованных коэффициентов преобразования в блоке была переупорядочена, в соответствии с конкретным порядком сканирования, в упорядоченную, одномерную (1D) матрицу, то есть вектор, коэффициентов преобразования. Затем к вектору коэффициентов преобразования применяется энтропийное кодирование. Сканирование квантованных коэффициентов преобразования в элементе преобразования преобразует в последовательную форму 2D матрицу коэффициентов преобразования для энтропийного кодера. Карта значимости может быть сформирована для указания положений значимых (то есть, ненулевых) коэффициентов. Сканирование может быть применено для сканирования уровней значимых (то есть, ненулевых) коэффициентов и/или кодирования знаков значимых коэффициентов.
В HEVC, информация о положении значимых коэффициентов преобразования (например, карта значимости) сперва кодируется для TU, чтобы указать местоположение последнего ненулевого коэффициента в порядке сканирования. Карта значимости и информация уровня (абсолютные величины и знаки коэффициентов) кодируются для каждого коэффициента в обратном порядке сканирования.
Вслед за любыми преобразованиями для произведения коэффициентов преобразования, видеокодер 20 может выполнять квантование коэффициентов преобразования. Квантование, в общем, относится к процессу, в котором коэффициенты преобразования квантуются для возможного сокращения количества данных, используемых для представления коэффициентов, учитывая дополнительное сжатие. Процесс квантования может сократить битовую глубину, связанную с некоторыми или всеми коэффициентами. Например, величина n-бит может быть округлена до величины m-бит во время квантования, где n больше, чем m. В некоторых примерах, видеокодер 20 может использовать заранее определенный порядок сканирования для сканирования квантованных коэффициентов преобразования для произведения упорядоченного вектора, который может быть энтропийно закодирован. В других примерах, видеокодер 20 может выполнять адаптивное сканирование.
Фиг. 2А-2D изображают некоторые различные примеры порядков сканирования. Другие определенные порядки сканирования или адаптивные (изменяемые) порядки сканирования могут также быть использованы. Фиг. 2А изображает зигзагообразный порядок сканирования, Фиг. 2В изображает горизонтальный порядок сканирования, Фиг. 2С изображает вертикальный порядок сканирования, Фиг. 2D изображает диагональный порядок сканирования. Комбинации этих порядков сканирования могут также быть определены и использованы. В некоторых примерах, способы настоящего изобретения могут быть конкретно применимы во время кодирования так называемой карты значимости в процессе видеокодирования.
Один или несколько синтаксических элементов могут быть определены для указания положения последнего значимого коэффициента (то есть, ненулевого коэффициента), которое может зависеть от порядка сканирования, связанного с блоком коэффициентов. Например, один синтаксический элемент может определять положение в столбце последнего значимого коэффициента внутри блока величин коэффициентов, а другой синтаксический элемент может определять положение в строке последнего значимого коэффициента внутри блока величин коэффициентов.
Фиг. 3 изображает пример карты значимости по отношению к блоку величин коэффициентов. Карта значимости изображена справа, на ней однобитные флаги идентифицируют те коэффициенты в видеоблоке слева, которые значимые, то есть ненулевые. В одном примере, с учетом группы значимых коэффициентов (например, определенной картой значимости) и порядка сканирования, может быть определено положение последнего значимого коэффициента. В развивающемся стандарте HEVC, коэффициенты преобразования могут быть сгруппированы во фрагмент. Фрагмент может содержать весь TU или, в некоторых случаях, TU могут быть подразделены на более мелкие фрагменты. Карта значимости и информация уровня (абсолютная величина и знак) кодируются для каждого коэффициента во фрагменте. В одном примере, фрагмент состоит из 16 последовательных коэффициентов в обратном порядке сканирования (например, диагональном, вертикальном или горизонтальном) для TU 4×4 и TU 8×8. Для TU 16×16 и 32×32 коэффициенты внутри суб-блока 4×4 рассматриваются как фрагмент. Синтаксические элементы кодируются и сигнализируются для представления информации уровня коэффициентов внутри фрагмента. В одном примере, все символы кодируются в обратном порядке сканирования. Способы настоящего изобретения могут улучшить кодирование синтаксического элемента, используемого для определения положения последнего значимого коэффициента блока коэффициентов.
В качестве примера, способы настоящего изобретения могут быть использованы для кодирования положения последнего значимого коэффициента блока коэффициентов (например, TU или фрагмента TU). Далее, после кодирования положения последнего значимого коэффициента, информация уровня и знака, связанная с коэффициентами преобразования, может быть закодирована. Кодирование информации уровня и знака может обрабатываться в соответствии с подходом в пять проходов путем кодирования следующих символов в обратном порядке сканирования (например, для TU или фрагмента TU):
significant_coeff_flag (аббр. sigMapFlag): этот флаг может указывать значимость каждого коэффициента в фрагменте. Коэффициент с величиной один или больше может быть рассмотрен как значимый.
coeff_abs_level_greater1_flag (аббр. gr1Flag): этот флаг может указывать, является ли абсолютная величина коэффициента больше, чем один для ненулевых коэффициентов (то есть, коэффициентов с sigMapFlag 1).
coeff_abs_level_greater2_flag (аббр. gr2Flag): этот флаг может указывать, является ли абсолютная величина коэффициента больше, чем два для коэффициентов с абсолютной величиной больше, чем один (то есть, коэффициентов с gr1Flag 1).
coeff_sign_flag (аббр. signFlag): этот флаг может указывать информацию знака для ненулевых коэффициентов. Например, ноль для этого флага может указывать положительный знак, а 1 может указывать отрицательный знак.
coeff_abs_level_remain (аббр. levelRem): этот синтаксический элемент может указывать оставшуюся абсолютную величину уровня коэффициента преобразования. Для этого синтаксического элемента, абсолютная величина коэффициента - х, может быть закодирована как (abs(level)-x) для каждого коэффициента с амплитудой больше, чем х. Величина х зависит от присутствия gr1Flag и gr2Flag. Если gr2Flag был закодирован, то величина levelRem вычисляется как (abs(level)-2). Если gr2Flag не был закодирован, но величина gr1Flag была закодирована, то величина levelRem вычисляется как (abs(level)-1).
Таким образом, могут быть закодированы коэффициенты преобразования для TU или части (например, фрагмента) TU. В любом случае, способы настоящего изобретения, которые касаются кодирования синтаксического элемента, используемого для определения положения последнего значимого коэффициента блока коэффициентов, могут быть также использованы с другими типами способов, прежде всего, кодирования информации уровня и знака коэффициентов преобразования. Подход в пять проходов для кодирования значимости, информации уровня и знака является всего лишь одним примером способа, который может быть использован вслед за кодированием положения последнего значимого коэффициента блока, как изложено в настоящем изобретении.
После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, видеокодер 20 может энтропийно кодировать одномерный вектор коэффициентов преобразования. Видеокодер 20 может также энтропийно кодировать синтаксические элементы, связанные с закодированными видеоданными, для использования видеодекодером 30 при декодировании видеоданных. Энтропийное кодирование может быть выполнено в соответствии с одним из следующих способов: CAVLC, CAВАC, синтаксическое контекстно-зависимое адаптивное двоичное арифметическое кодирование (SBAC), кодирование PIPE или другой методологией энтропийного кодирования. Для выполнения CAVLC, видеокодер 20 может выбирать код с переменной длиной для символа, который подлежит передаче. Кодовые слова при кодировании (VLC) с переменной длиной кодового слова могут быть построены так, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может позволить достижение сохранения битов по сравнению, например, с использованием кодовых слов равной длины для каждого символа, который подлежит передаче.
Способы энтропийного кодирования настоящего изобретения конкретно описаны как применимые к САВАС, хотя способы могут также быть применимы к CAVLC, SBAC, PIPE или другим способам. Необходимо отметить, что PIPE использует принципы, подобные арифметическому кодированию.
В общем, кодирование символов данных с использованием САВАС может включать один или несколько из следующих этапов:
(1) Преобразование в двоичную форму: Если символ, который подлежит кодированию, не представлен в двоичном значении, то его отражают в двоичной последовательности, то есть так называемой «двоичной цепочке». Каждый двоичный индекс (то есть, «бин») в двоичной цепочке может иметь величину «0» или «1».
(2) Назначение контекста: В обычном режиме каждому бину назначается контекст. Бин может также кодироваться в соответствии с режимом обхода, где контекст не назначается. Контекст является моделью вероятности и часто называется «моделью контекста». Как использовано в настоящем документе, термин контекст может относиться к модели вероятности или величине вероятности. Контекст определяет, как вероятность величины бина вычисляется для заданного бина. Контекст может связывать вероятность с величиной бина на основании информации, как, например, величины ранее закодированных символов или число бинов. Дополнительно, контекст может быть назначен бину на основании параметров более высокого уровня (то есть, слайса).
(3) Кодирование бинов: Бины кодируются с помощью арифметического кодера. Для кодирования бина, арифметическому кодеру требуется в качестве ввода вероятность величины бина, то есть вероятность того, что величина бина равна «0», и/или вероятность того, что величина бина равна «1». (Оцененная) вероятность может быть представлена в контексте целой величиной, называемой «состояние контекста».
(4) Обновление состояния: Вероятность (состояние) выбранного контекста может быть обновлена на основании актуальной закодированной величины бина (например, если величина бина была «1», то вероятность того, что бин равен «1», может возрасти). Обновлением вероятностей можно управлять в соответствии с правилами перехода, связанными с контекстом.
Далее идет пример способа преобразования в двоичную форму синтаксических элементов последнего значимого коэффициента, который может быть выполнен видеокодером 20. Синтаксические элементы последнего значимого коэффициента могут включать в себя положение в строке и столбце последнего значимого коэффициента внутри двумерно блока (то есть, координаты х и у). Для блока 8х8 есть восемь различных возможностей для последнего положения коэффициента внутри столбца или строки, то есть, 0, 1, …, 7. Восемь различных бинов используются для представления этих восьми положений в строке и столбце. Например, бин 0=1 может указывать, что коэффициент в строке или столбце 0 является последним значимым коэффициентом. В этом примере, если бин 0=0, то коэффициент в положении 0 не последний значимый коэффициент. Другой бин, равный 1, может указывать положение последнего значимого коэффициента. Например, бин 1=1 может указывать, что положение 1 является последним значимым коэффициентом. В качестве другого примера, бин Х=1 может указывать, что положение Х является последним значимым коэффициентом. Как описано выше, каждый бин может быть закодирован двумя различными способами: (1) кодировать бин с помощью контекста и (2) кодировать бин с использованием режима обхода (без контекста).
2
Таблица 1 показывает пример преобразования в двоичную форму положения последнего значимого коэффициента, где некоторые бины закодированы с помощью контекста, а другие закодированы с использованием режима обхода. Пример в Таблице 1 обеспечивает пример преобразования в двоичную форму положения последнего значимого коэффициента для TU 32×32. Второй столбец Таблицы 1 обеспечивает соответствующие сокращенные унарные величины префикса для возможных величин положения последнего значимого коэффициента внутри TU размера Т, определенного путем максимальной сокращенной унарной длины префикса 2log(T)-1. Третий столбец Таблицы 1 обеспечивает соответствующий суффикс фиксированной длины для каждого сокращенного унарного префикса. Для краткости, Таблица 1 включает в себя Х величин, которые указывают величину бита либо один, либо ноль. Необходимо отметить, что величины Х отображают уникально каждую величину, имеющую сокращенный унарный префикс в соответствии с кодом фиксированной длины. Значение компонента последнего положения в Таблице 1 может соответствовать величине х-координаты и/или величине у-координаты. Необходимо отметить, что преобразование в двоичную форму положения последнего значимого коэффициента для TU 4×4, 8×8 и 16×16 могут быть определены подобным образом, что и преобразование в двоичную форму TU 32×32, описанное по отношению к Таблице 1.
Таблица 1Преобразование в двоичную форму для TU размера 32×32, где Х значит 1 или 0
Значение компонента последнего положения
Сокращенный унарный (модель контекста)
Фиксированный двоичный (обход)
f_value
0
1
-
0
1
01
-
0
2
001
-
0
3
0001
-
0
4-5
00001
Х
0-1
6-7
000001
Х
0-1
8-11
0000001
ХХ
0-3
12-15
00000001
ХХ
0-3
16-23
000000001
ХХХ
0-7
24-31
000000000
ХХХ
0-7
Как описано выше, кодирование символов данных с использованием САВАС может также включать назначение контекста. В одном примере, контекстное моделирование может быть использовано для арифметического кодирования части сокращенных унарных цепочек двоичной цепочки, в то время как контекстное моделирование не используется для арифметического кодирования фиксированных двоичных цепочек двоичной цепочки (то есть фиксированную двоичную цепочку обходят). В случае, когда сокращенные унарные цепочки кодируются с использованием контекстного моделирования, контекст может быть назначен каждому индексу бина двоичной цепочки.
Существует несколько способов, которыми можно назначить контексты каждому индексу бина двоичной цепочки. Число назначений контекста для двоичной цепочки, представляющей собой положение последнего значимого коэффициента, может быть равно числу индексов бина или длине сокращенной унарной цепочки для возможных размеров и цветовых компонентов TU. Например, если возможные размеры компонента яркости 4×4, 8×8, 16×16 и 32×32, то число назначений контекста для одного измерения может быть равно 60 (то есть, 4+8+16+32), когда ни один из бинов не обходят. Подобным образом, для каждого компонента цветности с возможными размерами 4×4, 8×8 и 16×16 число назначений контекста может быть равно 28 (то есть, 4+8+16), когда ни один из бинов не обходят. Таким образом, максимальное число назначений контекста может быть равно 116 (то есть, 60+28+28) для каждого измерения, когда положение последнего значимого коэффициента определено с использованием координат х и у. Пример назначений контекста ниже предполагает, что некоторые бины обойдут в соответствии со схемой преобразования в двоичную форму, описанной по отношению к Таблице 1. Однако необходимо отметить, что способы назначения контекста, описанные в настоящем документе, могут быть применимы к нескольким схемам преобразования в двоичную форму. Дополнительно, даже когда предполагается, что некоторые бины обойдут, все равно остается множество способов, которыми могут быть назначены контексты бинам двоичной цепочки, представляющей собой положение последнего значимого коэффициента.
В некоторых случаях, может быть желательно сократить общее число контекстов по отношению к числу требуемого числа назначений контекста. Таким образом, кодеру или декодеру необязательно хранить и поддерживать много контекстов. Однако когда число контекстов сокращено, точность предсказания также может ухудшиться, например, если контексты совместно используются двумя бинами с различными вероятностями. Дополнительно, конкретный контекст может обновляться более часто, что может повлиять на оцененную вероятность величины бина. То есть, кодирование бина с использованием назначенного контекста может включать обновление контекста. Таким образом, последующий бин, назначенный контексту, может быть закодирован с использованием обновленного контекста. Дополнительно, необходимо отметить, что в некоторых примерах модели контекста могут быть запущены для уровня слайса, так что величины бинов внутри слайса не могут влиять на кодирование бинов внутри последующего слайса, хотя бины назначаются тому же контексту. Настоящее изобретение описывает способы оптимизации назначений контекста, чтобы число контекстов могло быть сокращено при одновременном поддержании точности для оцененных вероятностей. В одном примере, способы назначения контекста, описанные в настоящем документе, включают в себя способы, когда индивидуальным индексам бинов назначается одинаковой контекст.
Таблицы 2-13 ниже изображают назначения контекста индексам бинов двоичной цепочки, представляющей собой положение последнего значимого коэффициента внутри TU. Необходимо отметить, что для некоторых бинов в Таблице 2-13 (например, бины 5-7 блока 8×8) нет назначенных контекстов. Это происходит вследствие предположения, что эти бины будут закодированы с использованием режима обхода, как описано выше. Необходимо также отметить, что величины в Таблице 2-13 представляют собой индекс контекста. В Таблицах 2-13, когда различные бины имеют одинаковую величину индекса контекста, они имеют общий одинаковый контекст. Отображение индекса контекста в актуальном контексте может быть определено в соответствии со стандартом кодирования видеосигнала. Таблицы 2-13 изображают, как контекст может быть совместно назначен бинам.
Таблица 2 изображает возможное индексирование контекста для каждого бина различных размеров TU для примеров преобразований в двоичную форму, обеспеченных выше по отношению к Таблице 1. В примере в Таблице 2 смежным бинам разрешено иметь общие одинаковые контексты. Например, бины 2 и 3 TU 8×8 имеют общий одинаковый контекст.
Таблица 2Назначение контекста для последнего положения кодирования
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
0
1
2
TU 8×8
3
4
5
5
6
TU 16×16
7
8
9
9
10
10
11
TU 32×32
12
13
14
14
15
15
16
16
17
Таблицы 3-6 изображают дополнительные примеры назначений контекста в соответствии со следующими правилами:
1. Первые К бинов не имеют общего контекста, где К>1. К может отличаться для каждого размера TU.
2. Один контекст может быть назначен только последовательным бинам. Например, бин3 - бин5 могут использовать контекст 5. Однако не разрешено использование контекста 5 для бина3 и бина5 и использование контекста 6 для бина4.
3. Последние N бины, N>=0, различных размеров TU могут иметь общие одинаковые контексты.
4. Число бинов, которые имеют общий одинаковый контекст, возрастает с размером TU.
Правила 1-4 выше могут быть конкретно применимы к преобразованию в двоичную форму, обеспеченному в Таблице 1. Однако правила 1-4 могут быть равно применимы и к другим схемам преобразования в двоичную форму, и актуальные назначения контекста могут быть приспособлены соответственно к схеме преобразования в двоичную форму, которая осуществляется.
Таблица 3Пример бинов последнего положения в соответствиис правилами 1-4
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
0
1
2
TU 8×8
3
4
5
6
7
TU 16×16
8
9
10
11
11
12
12
TU 32×32
13
14
14
15
16
16
16
16
17
Таблица 4Пример бинов последнего положения в соответствиис правилами 1-4
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
0
1
2
TU 8×8
3
4
5
6
6
TU 16×16
8
9
10
11
11
12
12
TU 32×32
13
14
14
15
16
16
16
16
17
Таблица 5Пример бинов последнего положения в соответствиис правилами 1-4
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
0
1
2
TU 8×8
3
4
5
6
7
TU 16×16
8
9
10
11
11
12
12
TU 32×32
13
14
14
15
16
16
16
12
12
Таблица 6Пример бинов последнего положения в соответствии справилами 1-4
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
0
1
2
TU 8×8
3
4
5
6
7
TU 16×16
8
9
10
10
11
11
12
TU 32×32
13
14
14
15
15
15
16
16
16
Таблицы 7-8 ниже обеспечивают пример назначений контекста, где последние бины из блоков различных размеров имеют общий одинаковый контекст, который может дополнительно оптимизировать число контекстов. В одном примере, прямое отображение может быть использовано для определения того, как два последних бина двух или нескольких размеров блоков имеют общий контекст. Например, для блока А и блока В с размерами M и N, соответственно, контекст n-го бина блока А может использовать тот же контекст, что и n-ый бин блока размера В.
Таблица 7Пример бинов последнего положения, где размеры блоков имеют общие одинаковые контексты
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
12
13
14
TU 8×8
12
13
14
14
15
TU 16×16
12
13
14
14
15
15
16
TU 32×32
12
13
14
14
15
15
16
16
17
Таблица 8 показывает другой пример, где бины последнего положения из некоторых размеров блоков имеют общие контексты. В этом случае, TU размера 8×8 и 16×16 имеют общие одинаковые контексты.
Таблица 8Пример бинов последнего положения, где некоторые размеры блоков (8×8 и 16×16) имеют общие одинаковые контексты
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
0
1
2
TU 8×8
7
8
9
9
10
TU 16×16
7
8
9
9
10
10
11
TU 32×32
12
13
14
14
15
15
16
16
17
В качестве другого примера, отображение контекстов для бинов последнего положения из различных размеров блоков может быть извлечено с использованием функции f(.). Например, n-ый бин блока размера А может иметь общие одинаковые контексты с m-ым бином блока размера В, где m является функцией n(m=f(n)). Например, функция может быть линейной, то есть, m=n*a+b, где а и b являются параметрами линейной функции. Таблица 9 изображает пример, где а=1, b=1, А=TU 8×8 и В=TU 16×16.
Таблица 9Пример бинов последнего положения с общими контекстами на основании линейной функции
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
0
1
2
TU 8×8
8
9
9
10
10
TU 16×16
7
8
9
9
10
10
11
TU 32×32
12
13
14
14
15
15
16
16
17
Необходимо отметить, что при применении вышеуказанного уравнения в определенных случаях, вследствие целочисленной функции, может быть использовано округление. Например, 7*0,5=3.
В соответствии со следующим примером, отображение от местоположения n в размере блока 8×8 до местоположения m в блоке 4×4 может быть вычислено с помощью следующего уравнения:
m=f(n)=n>>1, что означает а=0,5, b=0, А=8×8, В=4×4 (1)
Отображение от местоположения n в блоке 16×16 до местоположения m в блоке 4×4 может быть вычислено с помощью следующего уравнения:
m=f(n)=n>>2, что означает а=0,5, b=0, А=16×16, В=4×4 (2)
Как описано выше, уравнения (1) и (2) являются только парой примеров, которые могут быть использованы для осуществления отображения между блоками различных размеров. Уравнения (1) и (2) могут называться функциями отображения. Необходимо отметить, что «>>» в уравнениях (1) и (2) может представлять функцию сдвига, определенную в соответствии со стандартом кодирования видеосигнала, как, например, HEVC. Дополнительно, другие уравнения могут быть использованы для достижения того же отображения или других отображений.
Таблица 10 обеспечивает пример назначения контекста для последнего значимого коэффициента для TU 4×4, 8×8 и 16×16, в соответствии с уравнениями (1) и (2).
Таблица 10Отображение контекста для элементов преобразования различных размеров
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
0
1
2
TU 8×8
0
0
1
1
2
TU 16×16
0
0
0
0
1
1
1
Таблица 11 обеспечивает пример назначения контекста Таблицы 10, где использованы другие величины индекса контекста (то есть, 15-17 вместо 0-2). Как описано выше, величины индексов контекста в Таблицах 3-12 не предназначены для ограничения актуальных контекстов, назначенных двоичному индексу.
Таблица 11Отображение контекста для элементов преобразования другого размера
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
15
16
17
TU 8×8
15
15
16
16
17
TU 16×16
15
15
15
15
16
16
16
Необходимо отметить, что отображение контекстов в Таблице 11 эквивалентно следующей функции отображения:
ctx_index=(n>>k)+15 (3),
где ctx_index является индексом контекста;
n = индекс бина
k = logTrafoDimension-2;
log2TrafoDimension = log2(width) для последнего положения в х измерении;
log2TrafoDimension = log2(height) для последнего положения в у измерении.
В некоторых случаях функция, определенная в (1)-(3), может быть использована устройством кодирования для построения последовательности таблиц, которая может храниться в памяти и использоваться для поиска назначений контекста. В некоторых случаях, таблицы могут быть заранее определены на основании уравнений и правил, описанных в настоящем документе и хранящихся в видеокодере 20 и видеодекодере 30.
Дополнительно, в некоторых примерах, функции (1)-(3), определенные выше, могут быть выборочно применены для назначения контекстов для конкретных бинов. Таким образом, различные бины могут быть назначены контексту на основании другого правила. В одном примере, функции, как, например, описанные выше, могут применяться только для индекса бина (то есть, величины n), который меньше, чем порог Th1 и/или больше, чем порог Th2. Таблица 12 показывает пример, где способы отображения, описанные выше, выборочно применены на основании величины индекса бина, то есть, n>Th2=2.
Таблица 12Пример бинов последнего положения с общими контекстами на основании линейной функции и порога
Индекс бина
0
1
2
3
4
5
6
7
8
TU 4×4
0
1
2
TU 8×8
3
4
9
10
10
TU 16×16
7
8
9
9
10
10
11
TU 32×32
12
13
14
14
15
15
16
16
17
В качестве другого примера, величина порога для способов, применяемых к индексам бинов, может отличаться для различных размеров блоков, различных типов кадров, различных цветовых компонентов (Y, U, V) и/или другой сторонней информации. Этот порог может быть заранее определен в соответствии со стандартом кодирования видеосигнала или может быть сигнализирован с использованием синтаксиса высокого уровня. Например, порог может быть сигнализирован в группе (SPS) параметров последовательности, группе (PPS) параметров изображения, группе (APS) параметров адаптации и/или заголовке слайса.
В другом примере, функция отображения может отличаться для различных размеров блока, различных типов кадра, различных цветовых компонентов (Y, U и V) и/или другой сторонней информации. Функции отображения может быть заранее определена в соответствии со стандартом кодирования видеосигнала или сигнализирована с использованием синтаксиса высокого уровня. Например, функция отображения может быть сигнализирована в SPS, PPS, APS и/или заголовке слайса.
В другом примере, способы прямого отображения и отображения функции, описанные выше, могут быть адаптивно применены на основании цветовых компонентов, типа кадра, параметра (QP) квантования и/или другой сторонней информации. Например, способы прямого отображения или отображения функции могут быть применены только к компонентам цветности. Правила для этой адаптации могут быть заранее определены или могут быть сигнализированы с использованием синтаксиса высокого уровня. Например, правила адаптации могут быть сигнализированы в SPS, PPS, APS и/или заголовке слайса.
В другом примере, бины последнего положения для компонентов цветности и яркости могут иметь общие одинаковые контексты. Это можно применять к любому размеру блока, например, 4×4, 8×8, 16×16 или 32×32. Таблица 13 показывает пример, когда бины последнего положения компонентов цветности и яркости для TU 4×4 имеют общие контексты.
Таблица 13Пример бинов последнего положения для компонентов яркости и цветности в TU 4×4
Индекс бина
0
1
2
3
Яркость TU 4×4
0
1
2
Цветность TU 4×4
0
1
2
Фиг. 4 является блок-схемой, изображающей пример видеокодера 20, который может использовать способы кодирования коэффициентов преобразования, описанные в настоящем изобретении. Например, видеокодер 20 представляет собой пример видеокодера, выполненного с возможностью получать двоичную цепочку, указывающую положение последнего значимого коэффициента внутри видеоблока; определять контекст для двоичного индекса двоичной цепочки на основании размера видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с разными размерами видеоблока; и кодировать двоичную цепочку с использованием САВАС на основании, по меньшей мере, частично, определенного контекста. Видеокодер 20 будет описан в контексте кодирования HEVC для целей иллюстрации, но не ограничения настоящего изобретения относительно других стандартов кодирования или способов, которые могут требовать сканирование коэффициентов преобразования. Видеокодер 20 может выполнять интра- и интер-кодирование CU внутри видеокадров. Интра-кодирование полагается на пространственное предсказание для сокращения или устранения пространственной избыточности в видеоданных внутри заданного видеокадра. Интер-кодирование полагается на временное предсказание для сокращения или устранения временной избыточности между текущим кадром и ранее закодированными кадрами видеопоследовательности. Интра-режим (I-режим) может относиться к любому из нескольких режимов сжатия видеосигнала на основании пространственного предсказания. Интер-режимы, как, например, однонаправленное предсказание (Р-режим) или двунаправленное предсказание (В-режим) может относиться к любому из нескольких режимов сжатия видеосигнала на основании временного предсказания.
Как изображено на Фиг. 4, видеокодер 20 принимает текущий видеоблок внутри видеокадра, который подлежит кодированию. В примере на Фиг. 4, видеокодер 20 включает в себя модуль 40 выбора режима, модуль 42 оценки движения, модуль 44 компенсации движения, модуль 46 интра-предсказания, буфер 64 опорных кадров, сумматор 50, модуль 52 преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 52 преобразования, изображенный на Фиг. 4, является модулем, который применяет актуальное преобразование или комбинации преобразования к блоку остаточных данных, и его не следует путать с блоком коэффициентов преобразования, который также называют элементом (TU) преобразования CU. Для восстановления видеоблока, видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Фильтр для удаления блочности (не изображен на Фиг. 4) может также быть включен для фильтрации границ блока для устранения блочных искажений из восстановленного видеосигнала. Если желательно, но фильтр для удаления блочности будет фильтровать вывод сумматора 62.
Во время процесса кодирования, видеокодер 20 принимает видеокадр или слайс, который подлежит кодированию. Кадр или слайс может быть разделен на множество видеоблоков, например, наибольших элементов (LCU) кодирования. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с интер-предсказанием принятого видеоблока по отношению к одному или нескольким опорным кадрам для обеспечения временного сжатия. Модуль 46 интра-предсказания может выполнять кодирование с интра-предсказанием принятого видеоблока по отношению к одному или нескольким соседним блокам в том же кадре или слайсе, что и блок, который подлежит кодированию, для обеспечения пространственного сжатия.
Модуль 40 выбора режима может выбирать один из режимов кодирования, внутренний (интра-режим) или внешний (интер-режим), например, на основании результатов ошибки (то есть, искажения) для каждого режима, и обеспечивать результирующий блок с интра- или интер-предсказанием (например, элемент (PU) предсказания) сумматору 50 для формирования данных остаточного блока и сумматору 62 для восстановления закодированного блока для использования в опорном кадре. Сумматор 62 комбинирует предсказанный блок с обратно квантованными, обратно преобразованными данными от модуля 60 обратного преобразования для блока, чтобы восстановить закодированный блок, как описано более подробно ниже. Некоторые видеокадры могут быть предназначены в качестве I-кадров, где все блоки в I-кадре закодированы в режиме интра-предсказания. В некоторых случаях, модуль 46 интра-предсказания может выполнять кодирование с интра-предсказанием блока в Р- или В-кадре, например, когда поиск движения, выполняемый модулем 42 оценки движения, не приводит к достаточному предсказанию блока.
Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированы, но изображены отдельно для концептуальных целей. Оценка движения (или поиск движения) является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать расположение элемента предсказания в текущем кадре по отношению к опорной выборке опорного кадра. Модуль 42 оценки движения вычисляет вектор движения для элемента предсказания кадра, закодированного в интер-режиме, путем сравнения элемента предсказания с опорными выборками опорного кадра, хранящимися в буфере 64 опорных кадров. Опорная выборка может быть блоком, который близко совпадает с частью CU, включающей PU, который кодируется, по отношению к разнице пикселов, которая может быть определена путем суммы (SAD) абсолютной разницы, суммы (SSD) квадратной разницы или других метрик разницы. Опорная выборка может встречаться в любом месте внутри опорного кадра или опорного слайса и необязательно на границе блока (например, элемента кодирования) опорного кадра или слайса. В некоторых примерах, опорная выборка может встречаться в дробном положении пиксела.
Модуль 42 оценки движения отправляет вычисленный вектор движения модулю 56 энтропийного кодирования и модулю 44 компенсации движения. Часть опорного кадра, идентифицированная вектором движения, может называться опорной выборкой. Модуль 44 компенсации движения может вычислять величину предсказания для элемента предсказания текущего CU, например, путем извлечения опорной выборки, идентифицированной вектором движения для PU.
Модуль 46 интра-предсказания может выполнять интра-предсказание принятого блока в качестве альтернативы интер-предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения. Модуль 46 интра-предсказания может предсказывать принятый блок по отношению к соседним, ранее закодированным блокам, например, блокам сверху, сверху справа, сверху слева, либо слева от текущего блока, предполагая, что порядок кодирования блоков идет слева направо, сверху вниз. Модуль 46 интра-предсказания может быть выполнен с множеством различных режимов интра-предсказания. Например, модуль 46 интра-предсказания может быть выполнен с конкретным числом режимов направленного предсказания, например, тридцать четыре режима направленного предсказания, на основании размера CU, который кодируют.
Модуль 46 интра-предсказания может выбирать режим интра-предсказания, например, с помощью вычисления величин ошибок для различных режимов интра-предсказания и выбора режима с наименьшей величиной ошибки. Режимы направленного предсказания могут включать в себя функции для комбинации величин пространственно соседних пикселов и применения комбинированных величин к одному или нескольким положениям пикселов в PU. Как только величины для всех положений пикселов в PU вычислены, модуль 46 интра-предсказания может вычислять величину ошибки для режима предсказания на основании разниц пикселов между PU и принятым блоком, который подлежит кодированию. Модуль 46 интра-предсказания может продолжить тестировать режимы интра-предсказания до тех пор, пока не обнаружится режим интра-предсказания с приемлемой величиной ошибки. Модуль 46 интра-предсказания может затем отправить PU сумматору 50.
Видеокодер 20 формирует остаточный блок путем вычитания данных предсказания, вычисленных модулем 44 компенсации движения или модулем 46 интра-предсказания, из исходного видеоблока, который кодируют. Сумматор 50 представляет собой компонент или компоненты, которые выполняют функцию вычитания. Остаточный блок может соответствовать двумерной матрице величин разниц пикселов, где число величин в остаточном блоке то же, что и число величин в PU, соответствующем остаточному блоку. Величины в остаточном блоке могут соответствовать разницам, то есть, ошибке, между величинами совместно расположенных пикселов в PU и в исходном блоке, который подлежит кодированию. Разницы могут быть разницами цветности или яркости, в зависимости от типа блока, который кодируют.
Модуль 52 преобразования может формировать один или несколько элементов (TU) преобразования из остаточного блока. Модуль 52 преобразования выбирает преобразование из множества преобразований. Преобразование может быть выбрано на основании одной или нескольких характеристик кодирования, как, например, размер блока, режим кодирования или тому подобное. Модуль 52 преобразования затем применяет выбранное преобразование к TU, производя видеоблок, содержащий двумерную матрицу коэффициентов преобразования.
Модуль 52 преобразования может отправлять получившиеся коэффициенты преобразования модулю 54 квантования. Модуль 54 квантования может затем квантовать коэффициенты преобразования. Модуль 56 энтропийного кодирования может затем выполнять сканирование квантованных коэффициентов преобразования в матрице в соответствии с режимом сканирования. Настоящее изобретение описывает модуль 56 энтропийного кодирования как выполняющий сканирование. Однако необходимо понимать, что в других примерах другие модули обработки, как, например, модуль 54 квантования, могут выполнять сканирование.
Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для восстановления остаточного блока в области пикселов, например, для дальнейшего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислять опорный блок путем добавления остаточного блока к предсказательному блоку одного из кадров буфера 64 опорных кадров. Буфер 64 опорных кадров иногда называют буфером (DPB) декодируемых изображений. Модуль 44 компенсации движения может также применять один или несколько фильтров интерполяции к восстановленному остаточному блоку для вычисления субцелочисленных величин пикселов для использования при оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания с компенсированным движением, произведенным модулем 44 компенсации движения для произведения восстановленного видеоблока для хранения в буфере 64 опорных изображений. Восстановленный видеоблок может быть использован модулем 42 оценки движения и модулем 44 компенсации движения в качестве опорного блока для интер-кодирования блока в последующем видеокадре.
Как только коэффициенты преобразования сканированы в одномерную матрицу, модуль 56 энтропийного кодирования может применять энтропийное кодирование, как, например, CAVLC, CABAC, SBAC, PIPE или другую методологию энтропийного кодирования, к коэффициентам. В некоторых случаях, модуль 56 энтропийного кодирования может быть выполнен с возможностью выполнять другие функции кодирования, дополнительно к энтропийному кодированию. Например, модуль 56 энтропийного кодирования может быть выполнен с возможностью определять величины шаблона (СВР) закодированного блока для CU и PU. Также, в некоторых случаях, модуль 56 энтропийного кодирования может выполнять кодирование длин серий коэффициентов. Вслед за энтропийным кодированием модулем 56 энтропийного кодирования, получившийся закодированный видеосигнал может быть передан другому устройству, как, например, видеодекодеру 30, либо архивирован для дальнейшей передачи или извлечения.
В соответствии со способами настоящего изобретения, модуль 56 энтропийного кодирования может выбирать контекст, используемый для кодирования синтаксических элементов, на основании, например, назначений контекста, описанных выше по отношению к Таблицам 2-13, и любую комбинацию из следующего: направление интра-предсказания для режимов интра-предсказания, положение сканирования коэффициента, соответствующего синтаксическим элементам, тип блока, тип преобразования и/или другие характеристики видеопоследовательности.
В одном примере, модуль 56 энтропийного кодирования может кодировать положение последнего значимого коэффициента с использованием способа преобразования в двоичную форму, принятого HEVC, который описан выше по отношению к Таблице 1. В других примерах, модуль 56 энтропийного кодирования может кодировать положение последнего значимого коэффициента с использованием других способов преобразования в двоичную форму. В одном примере, кодовое слово для положения последнего значимого коэффициента может включать в себя сокращенный унарный префикс кода, за которым следует суффикс кода с фиксированной длиной. В одном примере, каждое значение последнего положения может использовать одинаковое преобразование в двоичную форму для всех возможных размеров TU, за исключением того, когда последнее положение равно размеру TU минус 1. Это исключение происходит вследствие характеристик сокращенного унарного кодирования. В одном примере, положение последнего значимого коэффициента внутри прямоугольного коэффициента преобразования может быть определено с помощью определения величины х-координаты и величины у-координаты. В другом примере, блок коэффициентов преобразования может быть в форме вектора 1xN, и положение последнего значимого коэффициента внутри вектора может быть определено с помощью одной величины положения.
Фиг. 5 является блок-схемой, которая изображает пример модуля 56 энтропийного кодирования, который может осуществлять способы, описанные в настоящем изобретении. В одном примере, модуль 56 энтропийного кодирования, изображенный на Фиг. 5, может быть кодером САВАС. Пример модуля 56 энтропийного кодирования может включать в себя модуль 502 преобразования в двоичную форму, модуль 510 арифметического кодирования, который включает в себя механизм 504 кодирования в режиме обхода и механизм 508 обычного кодирования, и модуль 506 контекстного моделирования. Модуль 56 энтропийного кодирования принимает синтаксические элементы, как, например, один или несколько синтаксических элементов, представляющих положение последнего значимого коэффициента преобразования внутри блока коэффициентов преобразования, и кодирует синтаксический элемент в поток двоичных данных. Синтаксические элементы могут включать в себя синтаксический элемент, определяющий х-координату положения последнего значимого коэффициента внутри блока коэффициентов преобразования, и синтаксический элемент, определяющий у-координату положения последнего значимого коэффициента внутри блока коэффициентов преобразования.
Модуль 502 преобразования в двоичную форму принимает синтаксический элемент и производит цепочку бинов (то есть, двоичную цепочку). В одном примере, модуль 502 преобразования в двоичную форму принимает синтаксические элементы, представляющие собой последнее положение значимого коэффициента внутри блока коэффициентов преобразования, и производит двоичную цепочку в соответствии с примером, описанным выше по отношению к Таблице 1. Модуль 510 арифметического кодирования принимает двоичную цепочку от модуля 502 преобразования в двоичную форму и выполняет арифметическое кодирование двоичной цепочки. Как изображено на Фиг. 5, модуль 510 арифметического кодирования может принимать величины бинов от тракта обхода или тракта обычного кодирования. В соответствии с процессом САВАС, описанным выше, в случае если модуль 510 арифметического кодирования принимает величины бинов от тракта обхода, то механизм 504 кодирования в режиме обхода может выполнять арифметическое кодирование величин бина без использования контекста, назначенного величине. В одном примере, механизм 504 кодирования в режиме обхода может предположить равные вероятности для возможных величин бина.
В случае, когда модуль 510 арифметического кодирования принимает величины бина по регулярному тракту, то модуль 506 контекстного моделирования может обеспечивать переменную контекста (например, состояние контекста), чтобы механизм 508 обычного кодирования мог выполнить арифметическое кодирование на основании назначений контекста, обеспеченных модулем 506 контекстного моделирования. В одном примере, модуль 510 арифметического кодирования может кодировать часть префикса двоичной цепочки, используя назначение контекста, и может кодировать часть суффикса двоичной цепочки, не используя назначения контекста. Назначения контекста могут быть определены в соответствии с примерами, описанными выше по отношению к Таблицам 2-13. Модели контекстов могут храниться в памяти. Модуль 506 контекстного моделирования может включать в себя последовательность индексных таблиц и/или использовать функции отображения для определения контекста и переменной контекста для конкретного бина. После кодирования величины бина, механизм 508 обычного кодирования может обновить контекст на основании актуальных величин бина и вывести закодированную величину бина в качестве части двоичного потока данных. Таким образом, модуль энтропийного кодирования выполнен с возможностью кодировать один или несколько синтаксических элементов на основании способов назначения контекста, описанных в настоящем документе.
Фиг. 6 является блок-схемой, изображающей пример способа определения контекста для величины двоичной цепочки, указывающей положение последнего значимого коэффициента, в соответствии со способами настоящего изобретения. Способ, описанный на Фиг. 6, может быть выполнен любыми из примеров видеокодеров и энтропийных кодеров, описанных в настоящем документе. На этапе 602, получают двоичную цепочку, указывающую положение последнего значимого коэффициента внутри видеоблока. Двоичная цепочка может быть определена в соответствии со схемой преобразования в двоичную форму, описанной по отношению к Таблице 1. На этапе 604, определяют контекст для величины бина двоичной цепочки. Контекст может быть назначен бину на основании способов, описанных в настоящем документе. Контекст может быть определен видео- или энтропийным кодером при осуществлении доступа к таблице поиска или при выполнении функции отображения. Контекст может быть использован для извлечения конкретной переменной контекста для конкретного бина. Переменная контекста может быть 7-битной двоичной величиной, указывающей одну из 64 возможных вероятностей (состояний) и наиболее вероятное состояние (например, «1» или «0»). Как описано выше, в некоторых случаях, бины могут иметь общие контексты в соответствии с функциями отображения и Таблицами 2-13, описанными выше. На этапе 606, кодируют величину бина с использованием процесса арифметического кодирования, который применяет переменную контекста, как, например, САВАС. Необходимо отметить, что когда бины имеют общие контексты, величина одного бина может влиять на величину переменной контекста, используемой для кодирования последующего бина, в соответствии со способами контекстно-адаптивного кодирования. Например, если конкретный бин равен «1», то последующий бин может быть закодирован на основании увеличенной вероятности того, что он будет 1. Таким образом, энтропийное кодирование двоичной цепочки может включать в себя обновление состояния контекста модели контекста. Дополнительно, необходимо отметить, что в некоторых примерах модели контекста могут быть запущены для уровня слайса, чтобы величины бинов внутри слайса не могли влиять на кодирование бинов внутри последующего слайса.
Фиг. 7 является блок-схемой, изображающей пример видеодекодера 30, который может использовать способы кодирования коэффициентов преобразования, описанные в настоящем изобретении. Например, видеодекодер 30 представляет собой пример видеодекодера, выполненного с возможностью получать закодированную двоичную цепочку, указывающую положение последнего значимого коэффициента внутри видеоблока, причем закодированная двоичная цепочка закодирована с использованием САВАС; определять контекст для двоичного индекса закодированной двоичной цепочки на основании размера видеоблока, причем контекст назначается, по меньшей мере, двум двоичным индексам, причем каждый из, по меньшей мере, двух двоичных индексов связан с другими размерами видеоблока; и декодировать закодированную двоичную цепочку с использованием САВАС на основании, по меньшей мере, частично, определенного контекста.
В примере на Фиг. 7, видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 интра-предсказания, модуль 76 обратного квантования, модуль 78 обратного преобразования, буфер 82 опорных кадров и сумматор 80. Видеодекодер 30 может, в некоторых примерах, выполнять проход декодирования, в общем, обратный проходу кодирования, описанному по отношению к видеокодеру 20.
Модуль 70 энтропийного декодирования выполняет процесс энтропийного декодирования закодированного потока двоичных данных для извлечения одномерной матрицы коэффициентов преобразования. Используемый процесс энтропийного декодирования зависит от энтропийного кодирования, используемого видеокодером 20 (например, САВАС, CAVLC и так далее). Процесс энтропийного кодирования, используемый кодером, может быть сигнализирован в закодированном потоке двоичных данных или может быть заранее определенным процессом.
В некоторых примерах, модуль 70 энтропийного декодирования (или модуль 76 обратного квантования) может сканировать принятые величины с использованием зеркального отображения сканирования режима сканирования, используемого модулем 56 энтропийного кодирования (или модулем 54 квантования) видеокодера 20. Хотя сканирование коэффициентов может быть выполнено модулем 76 обратного квантования, сканирование будет описано для целей иллюстрации как выполняемое модулем 70 энтропийного декодирования. Дополнительно, хотя для облегчения иллюстрации они изображены как отдельные функциональные модули, модуль 70 энтропийного декодирования, модуль 76 обратного преобразования и другие модули видеодекодера 30 могут быть высоко интегрированы друг с другом структурно и функционально.
Модуль 76 обратного квантования обратно квантует, то есть, деквантует, квантованные коэффициенты преобразования, обеспеченные в двоичном потоке данных и декодированные модулем 70 энтропийного декодирования. Процесс обратного квантования может включать в себя традиционный процесс, например, подобный процессам, предложенным для HEVC или определенным стандартом Н.264 декодирования. Процесс обратного квантования может включать в себя использование параметра QP квантования, вычисленного видеокодером 20 для CU, для определения степени квантования и, подобным образом, степени обратного квантования, которая должна быть применена. Модуль 76 обратного квантования может обратно квантовать коэффициенты преобразования либо до, либо после того, как коэффициенты преобразованы из одномерной матрицы в двумерную матрицу.
Модуль 78 обратного преобразования применяет обратное преобразование к обратно квантованным коэффициентам преобразования. В некоторых примерах, модуль 78 обратного преобразования может определять обратное преобразование на основании сигнализации от видеокодера 20 или путем выведения преобразования из одной или нескольких характеристик кодирования, как, например, размер блока, режим кодирования или тому подобное. В некоторых примерах, модуль 78 обратного квантования может определять преобразование для применения к текущему блоку на основании сигнализированного преобразования в корневом узле дерева квадратов для LCU, включающем в себя текущий блок. Альтернативно, преобразование может быть сигнализировано в корне дерева квадратов TU для концевого узла CU в дереве квадратов LCU. В некоторых примерах, модуль 78 обратного преобразования может применять каскадное обратное преобразование, в котором модуль 78 обратного преобразования применяет два или более обратных преобразования к коэффициентам преобразования текущего блока, который кодируют.
Модуль 74 интра-предсказания может формировать данные предсказания для текущего блока текущего кадра на основании сигнализированного режима интра-предсказания и данных из ранее декодированных блоков текущего кадра. Модуль 72 компенсации движения может извлекать вектор движения, направление предсказания движения и опорный индекс из закодированного потока двоичных данных. Направление опорного предсказание указывает, является ли режим интер-предсказания однонаправленным (например, Р кадр) или двунаправленным (например, В кадр). Опорный индекс указывает, на каком опорном кадре основан подходящий вектор движения. На основании извлеченного направления предсказания движения, индекса опорного кадра и вектора движения, модуль 72 компенсации движения производит блок с компенсированным движением для текущей части. Эти блоки с компенсированным движением существенным образом воссоздают предсказательный блок, используемый для произведения остаточных данных.
Модуль 72 компенсации движения может производить блоки с компенсированным движением, возможно выполняя интерполяцию на основании фильтров интерполяции. Идентификаторы фильтров интерполяции, которые будут использованы для оценки движения с точностью до суб-пиксела, могут быть включены в синтаксические элементы. Модуль 72 компенсации движения может использовать фильтры интерполяции так же, как и видеокодер 20 во время кодирования видеоблока, для вычисления интерполированных величин для субцелочисленных пикселов опорного блока. Модуль 72 компенсации движения может определять фильтры интерполяции, используемые видеокодером 20, в соответствии с принятой синтаксической информацией и использовать фильтры интерполяции для произведения предсказательных блоков.
Дополнительно, модуль 72 компенсации движения и модуль 74 интра-предсказания, в примере HEVC, могут использовать синтаксическую информацию (например, обеспеченную деревом квадратов) для определения размеров LCU, используемых для кодирования кадра(ов) закодированной видеопоследовательности. Модуль 72 компенсации движения и модуль 74 интра-предсказания могут также использовать синтаксическую информацию для определения информации разделения, которая описывает, как разделен каждый CU в кадре закодированной видеопоследовательности (и, подобным образом, как разделены суб-CU). Синтаксическая информация может также включать в себя режимы, указывающие, как закодировано каждое разделение (например, интра- или интер-предсказание, и для интра-предсказания режим кодирования с интра-предсказанием), один или несколько опорных кадров (и/или опорных списков, содержащих идентификаторы для опорных кадров) для каждого PU с интер-кодированием и другую информацию для декодирования закодированной видеопоследовательности.
Сумматор 80 комбинирует остаточные блоки с соответствующими блоками предсказания, сформированными модулем 72 компенсации движения или модулем 74 интра-предсказания, для формирования декодированных блоков. Если желательно, фильтр для удаления блочности может также быть применен для фильтрации декодированных блоков, чтобы устранить блочные искажения. Декодированные видеоблоки затем сохраняются в буфере 82 опорных кадров, который обеспечивает опорные блоки для последующей компенсации движения и также производит декодированный видеосигнал для представления на устройстве отображения (как, например, устройство 32 отображения на Фиг. 1). Буфер 82 опорных кадров также может называться DPB.
Фиг. 8 является блок-схемой, которая изображает пример модуля 70 энтропийного декодирования, который может осуществлять способы, описанные в настоящем изобретении. Модуль 70 энтропийного декодирования принимает энтропийно закодированный поток двоичных данных и декодирует синтаксические элементы из потока двоичных данных. В одном примере, синтаксические элементы могут представлять собой положение последнего значимого коэффициента преобразования внутри блока коэффициентов преобразования. Синтаксические элементы могут включать в себя синтаксический элемент, определяющий х-координату положения последнего значимого коэффициента внутри блока коэффициентов преобразования, и синтаксический элемент, определяющий у-координату положения последнего значимого коэффициента внутри блока коэффициентов преобразования. В одном примере, модуль 70 энтропийного декодирования, изображенный на Фиг. 8, может быть декодером САВАС. Пример модуля 70 энтропийного декодирования на Фиг. 8 включает в себя модуль 702 арифметического декодирования, который может включать в себя механизм 704 декодирования в режиме обхода и механизм 706 обычного декодирования. Пример модуля 70 энтропийного декодирования также включает в себя элемент 708 контекстного моделирования и модуль 710 обратного преобразования в двоичную форму. Пример модуля 70 энтропийного декодирования может выполнять обратные функции примера модуля 56 энтропийного кодирования, описанного по отношению к Фиг. 5. Таким образом, модуль 70 энтропийного декодирования может выполнять энтропийное декодирование на основании способов назначений контекста, описанных в настоящем документе.
Модуль 702 арифметического декодирования принимает закодированный поток двоичных данных. Как изображено на Фиг. 8, модуль 702 арифметического декодирования может обрабатывать закодированные величины бинов в соответствии с трактом обхода или трактом обычного кодирования. Указание того, должна ли закодированная величина бина быть обработана в соответствии с трактом обхода или обычным проходом, может быть сигнализировано в потоке двоичных данных синтаксисом высокого уровня. В соответствии с процессом САВАС, описанным выше, в случае, когда модуль 702 арифметического декодирования принимает величины бина от тракта обхода, механизм 704 арифметического декодирования может выполнять арифметическое декодирование величин бина, не используя контекст, назначенный величине бина. В одном примере, механизм 704 арифметического декодирования может предположить равные вероятности для возможных величин бина.
В случае, когда модуль 702 арифметического декодирования принимает величины бинов по обычному тракту, модуль 708 контекстного моделирования может обеспечивать переменную контекста, чтобы механизм 706 обычного декодирования мог выполнить арифметическое декодирование на основании назначений контекста, обеспеченных модулем 708 контекстного моделирования. Назначения контекста могут быть определены в соответствии с примерами, описанными выше по отношению к Таблицам 2-13. Модели контекстов могут храниться в памяти. Модуль 708 контекстного моделирования может включать в себя последовательность индексных таблиц и/или использовать функции отображения для определения контекста и части переменной контекста закодированного потока двоичных данных. После декодирования величины бина, механизм 706 обычного декодирования может обновлять контекст на основании декодированных величин бина. Дополнительно, модуль 710 обратного преобразования в двоичную форму может выполнять обратное преобразование в двоичную форму величины бина и использовать функцию совпадения бинов для определения того, действительна ли величина бина. Модуль 710 обратного преобразования в двоичную форму может также обновлять модуль контекстного моделирования на основании определения совпадения. Таким образом, модуль 710 обратного преобразования в двоичную форму выводит синтаксические элементы в соответствии со способом контекстно-адаптивного декодирования. Таким образом, модуль 70 энтропийного декодирования выполнен с возможностью декодировать один или несколько синтаксических элементов на основании способов назначения контекста, описанных в настоящем документе.
Фиг. 9 является блок-схемой, изображающей пример способа определения величины, указывающей положение последнего значимого коэффициента внутри блока коэффициентов преобразования из двоичной цепочки, в соответствии со способами настоящего изобретения. Способ, описанный на Фиг. 9, может быть выполнен любым из примеров видеодекодеров или элементов энтропийного декодирования, описанных в настоящем документе. На этапе 902, получают закодированный поток двоичных данных. Закодированный поток двоичных данных может быть извлечен из памяти или по передаче. Закодированный поток двоичных данных может быть закодирован в соответствии с процессом кодирования САВАС или другим процессом энтропийного кодирования. На этапе 904, определяют контекст для части закодированной двоичной цепочки. Контекст может быть назначен закодированному бину на основании способов, описанных в настоящем документе. Контекст может быть определен видео- или энтропийным декодером, осуществляющим доступ к таблице поиска или выполняющим функцию отображения. Контекст может быть определен на основании синтаксиса высокого уровня, обеспеченного в закодированном потоке двоичных данных. Контекст может быть использован для извлечения конкретной переменной контекста для конкретного закодированного бина. Как описано выше, переменная контекста может быть 7-битной двоичной величиной, указывающей одну из 64 возможных вероятностей (состояний) и наиболее вероятное состояние (например, «1» или «0») и, в некоторых случаях, бины могут иметь общие контексты. На этапе 906, декодируют двоичную цепочку с использованием процесса арифметического декодирования, который использует переменную контекста, как, например, САВАС. Двоичная цепочка может быть декодирована на основании бин-за-бином, причем модель контекстов обновляется после декодирования каждого бина. Декодированный поток двоичных данных может включать в себя синтаксические элементы, которые дополнительно используются для декодирования коэффициентов преобразования, связанных с закодированными видеоданными. Таким образом, назначение контекстов конкретным бинам, использующее способы, описанные выше, может обеспечивать эффективное декодирование закодированных видеоданных.
В одном или более примерах, описанные функции могут быть воплощены в технических средствах, программном обеспечении, программно-аппаратных средствах или любой их комбинации. При осуществлении в программном обеспечении, функции могут храниться или передаваться в качестве одной или нескольких команд или кода на компьютерно-читаемом носителе и выполняться обрабатывающим элементом на основании технических средств. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые запоминающие носители, которые соответствуют физическому носителю, как, например, читаемый носитель данных или средства связи, включая любой носитель, который поддерживает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. В этом случае, компьютерно-читаемые носители, в общем, могут соответствовать (1) физическим компьютерно-читаемым запоминающим носителям, являющимся неизменяемыми, или (2) средствам связи, как, например, сигнал или несущая волна. Запоминающие носители данных могут быть любыми доступными носителями, доступ к которым может быть осуществлен одним или несколькими компьютерами или одним или несколькими устройствами обработки для извлечения команд, кода и/или структур данных для осуществления способов, описанных в настоящем изобретении. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
Для примера, но не ограничения, такие компьютерно-читаемые запоминающие носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может быть использован для хранения желаемого программного кода в форме команд или структур данных и доступ к которому может быть осуществлен компьютером. Также, любое соединение правильно называется компьютерно-читаемым носителем. Например, если команды передаются с вебсайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, кабеля с витой парой, цифровой абонентской линии (DSL) или беспроводной технологии, как, например, инфракрасная, радио и микроволновая, то коаксиальный кабель, оптоволоконный кабель, кабель с витой парой, DSL или беспроводная технология, как, например, инфракрасная, радио или микроволновая, включены в определение носителя. Необходимо понимать, однако, что компьютерно-читаемые запоминающие носители и запоминающие носители данных не включают в себя соединения, несущие волны, сигналы или другие изменяемые носители, но, напротив, направлены на неизменяемые, физические запоминающие носители. Термин «диск», как использовано в настоящем документе, включает в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-ray, где магнитные диски, как правило, воспроизводят данные магнитным образом, в то время как оптические диски воспроизводят данные оптически с помощью лазера. Комбинации вышеназванного также должны быть включены в объем компьютерно-читаемых носителей.
Команды могут быть выполнены одним или несколькими устройствами обработки, как, например, одно или несколько устройств (DSP) для цифровой обработки сигнала, микропроцессоров общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA) или другие эквивалентные интегральные схемы или схемы с дискретной логикой. Соответственно, термин «устройство обработки», как использовано в настоящем документе, может относиться к любой из вышеуказанных структур или любой другой структуре, подходящей для осуществления способов, описанных в настоящем документе. Дополнительно, в некоторых аспектах, функциональность, описанная в настоящем документе, может быть обеспечена внутри закрепленных модулей технических средств и/или программного обеспечения, выполненных с возможностью кодировать и декодировать, или встроенных в комбинированный кодер-декодер. Также, способы могут быть полностью осуществлены в одной или нескольких схемах или логических элементах.
Способы настоящего изобретения могут быть осуществлены в широком ряде устройств или аппаратов, включая беспроводной мобильный телефон, интегральную схему (IC) или группу IC (например, набор микросхем). Различные компоненты, модули или элементы описаны в настоящем изобретении для усиления функциональных аспектов устройств, выполненных с возможностью выполнять раскрытые способы, но не обязательно требуют реализации различными элементами технических средств. Скорее, как описано выше, различные элементы могут быть скомбинированы в аппаратном модуле кодера-декодера или обеспечены группой взаимодействующих аппаратных модулей, включая одно или несколько устройств обработки, как описано выше, совместно с подходящим программным обеспечением и/или программно-аппаратными средствами.
Описаны различные примеры. Эти и другие примеры находятся в пределах объема следующей формулы изобретения.