ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ РЕЖИМА ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ С БЛОЧНЫМ КОПИРОВАНИЕМ ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕО И ИЗОБРАЖЕНИЙ
FEATURES OF INTRA BLOCK COPY PREDICTION MODE FOR VIDEO AND IMAGE CODING AND DECODING

УРОВЕНЬ ТЕХНИКИ
Инженеры используют сжатие (также называемое кодированием источника или закодированием источника) для уменьшения битрейта цифрового видео. Сжатие снижает затраты на хранение и передачу видеоинформации путем преобразования этой информации в форму с меньшим битрейтом. Распаковка (также называемая декодированием) восстанавливает версию исходной информации из сжатой формы. Система кодера/декодера представляет собой так называемый «кодек». В последнее двадцатилетие были приняты различные стандарты кодеков для видео, в том числе стандарты ITU-T H.261, H262 (MPEG-2 или ISO/IEC 13818-2), H.263 и H.264 (MPEG-4 AVC или ISO/IEC 14496-10), стандарты MPEG-1 (ISO/IEC 11172-2) и стандарты MPEG-4 Visual (ISO/IEC 14496-2) и стандарт SMPTE 421M. Недавно был одобрен стандарт HEVC (ITU-T H.265 или ISO/IEC 23008-2). В настоящее время разрабатываются расширения к стандарту HEVC (например, для масштабируемого видеокодирования/видеодекодирования для кодирования/декодирования видео с более высоким качеством в контексте глубины отсчета в битах или частоты дискретизации цветности, либо для многоракурсного кодирования/декодирования. Стандарт видеокодека, как правило, определяет опции для синтаксиса кодированного видеопотока, детализации параметров в битовом потоке при использовании конкретных функциональных возможностей при кодировании и декодировании. Во многих случаях стандарт видеокодека также обеспечивает детали, касающиеся операций декодирования, которые должен выполнять декодер для достижения подходящих результатов при декодировании. Помимо стандартов кодека различные патентованные форматы кодека определяют другие опции для синтаксиса кодированного битового потока видео и соответствующие операции декодирования.
Внутреннее блочное копирование (BC) представляет режим предсказания, рассматриваемый для расширений стандарта HEVC. Для режима внутреннего предсказания с ВС значения отсчетов текущего блока кадра предсказываются с использованием ранее восстановленных значений отсчетов в том же кадре. Блочный вектор (BV) указывает смещение от текущего блока до области кадра, которая включает в себя ранее восстановленные значения отсчетов, использованные для предсказания. Вектор BV передается в качестве сигнализации в битовом потоке. Внутреннее предсказание с ВС является формой предсказания внутри кадра, то есть, при внутреннем предсказании с ВС для блока кадра не используются какие-либо значения отсчетов, отличные от значений отсчетов в этом же кадре.
Как в настоящее время определено в стандарте HEVC и реализовано в некотором эталонном программном обеспечении для стандарта HEVC, режим внутреннего предсказания с блочным копированием имеет ряд проблем. Например, режим внутреннего предсказания с BC нельзя эффективно интегрировать с различными отличительными признаками стандарта HEVC, такими как опции для частотных преобразований/обратных частотных преобразований, петлевая фильтрация по устранению блочности в видео (деблокинг-фильтрация) и ограниченное внутреннее предсказание. Процесс выбора значений BV эффективно не ограничивается, а закодирование значений BV не эффективно, если иметь в виду использование битрейта.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В данном разделе подробно описываются нововведения в режиме внутреннего предсказания с блочным копированием (BC). Например, некоторые из предложенных нововведений обеспечивают пути для более эффективного выбора значений блочного вектора («BV»). Другие нововведения обеспечивают пути для более эффективного закодирования/декодирования значений BV. Ряд других нововведений указывают, каким образом следует выполнять петлевую деблокинг-фильтрацию, когда блок имеет режим внутреннего предсказания с BC, или указывают, каким образом следует выполнять внутреннее предсказание с BC, когда разрешено ограниченное внутреннее предсказание. Эти нововведения могут повысить эффективность внутреннего предсказания с BC в плане показателя искажений в зависимости от скорости и/или эффективность вычислений для закодирования и декодирования.
Упомянутые нововведения для режима внутреннего предсказания с BC можно реализовать как часть способа, как часть вычислительного устройства, адаптированного для выполнения этого способа, или как часть материального считываемого компьютером носителя (среды), на котором сохранены исполняемые компьютером команды, которые инициируют выполнение вычислительным устройством упомянутого способа. Эти разного рода нововведения можно использовать по отдельности или в комбинациях.
Вышеописанные и другие цели, признаки и преимущества изобретения станут более очевидными при ознакомлении с последующим подробным описанием, которое сопровождается ссылками на прилагаемые чертежи.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг. 1 – схема примерной вычислительной системы, в которой могут быть реализованы некоторые описанные здесь варианты осуществления изобретения;
Фигуры 2а и 2b – схемы примерных сетевых сред, в которых могут быть реализованы некоторые описанные здесь варианты осуществления изобретения;
Фиг. 3 – схема примерной системы кодера, вместе с которой могут быть реализованы некоторые описанные здесь варианты осуществления изобретения;
Фиг. 4 – схема примерной системы декодера, вместе с которой могут быть реализованы некоторые описанные здесь варианты осуществления изобретения;
Фигуры 5а и 5b – схемы, иллюстрирующие примерный видеокодер, вместе с которым могут быть реализованы некоторые описанные здесь варианты осуществления изобретения;
Фиг. 6 – схема, иллюстрирующая примерный видеодекодер, вместе с которым могут быть реализованы некоторые описанные здесь варианты осуществления изобретения;
Фиг. 7 – схема, иллюстрирующая внутреннее предсказание с BC для одного блока кадра;
Фиг. 8 – схема, иллюстрирующая примерные ограничения на область поиска значений BV;
Фиг. 9 – блок-схема, иллюстрирующая обобщенный способ закодирования с внутренним режимом предсказания с BC с наложенным одним или несколькими ограничениями на выбор значений BV;
Фиг. 10 – схема, иллюстрирующая примерный порядок z сканирования для блоков кадра;
Фигуры 11а и 11b – схемы, иллюстрирующие области с невосстановленными значениями отсчетов, подлежащими замене заполняемыми значениями;
Фиг. 12 – блок-схема, иллюстрирующая обобщенный способ использования режима внутреннего предсказания с BC во время закодирования или декодирования, когда может быть разрешено ограниченное внутреннее предсказание;
Фиг. 13 – схема, иллюстрирующая примерные ограничения на допустимые значения BV, когда разрешено ограниченное внутреннее предсказание;
Фиг. 14 – таблица, иллюстрирующая примерный подход к разблокированию режима внутреннего предсказания с BC, когда разрешено ограниченное внутреннее предсказание;
Фигуры 15а и 15b – схемы, иллюстрирующие примерные диапазоны значений BV, обладающих свойствами, которые можно использовать при закодировании;
Фигуры 16 и 17 – блок-схемы, иллюстрирующие обобщенные способы закодирования и декодирования значений BV соответственно;
Фигуры 18 и 19 – блок-схемы, иллюстрирующие обобщенные способы закодирования и декодирования соответственно с использованием режима внутреннего предсказания с BC и альтернативных прямых (или обратных) частотных преобразований;
Фиг. 20 – схема, иллюстрирующая примерные правила для изменения подхода к петлевой деблокинг-фильтрации в зависимости от режимов предсказания блоков;
Фиг. 21 - блок-схема, иллюстрирующая обобщенный способ петлевой деблокинг-фильтрации во время закодирования или декодирования для блоков, имеющих режим внутреннего предсказания с BC.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
В подробном описании представлены нововведения при использовании режима внутреннего предсказания с блочным копированием (BC) во время закодирования и/или декодирования. В частности, в подробном описании представлены нововведения при выборе значений блочного вектора (BV), закодировании/декодировании значений BV, интеграции режима внутреннего предсказания с ВС с ограниченным внутренним предсказанием, выборе прямых и обратных частотных преобразований в случае использования режима внутреннего предсказания с ВС, и петлевой деблокинг-фильтрации через границу блоков с режимом внутреннего предсказания с ВС.
Хотя здесь показано, что описанные операции отчасти выполняются видеокодером или видеодекодером, во многих случаях эти операции могут выполняться средствами обработки медиа другого типа (например, кодером изображений, декодером изображений).
Некоторые из описанных здесь нововведений проиллюстрированы со ссылками на синтаксические элементы и операции, специфичные для стандарта HEVC. Например, показана ссылка на предварительную версию JCTVC-N1005 стандарта HEVC «High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 4,» JCTVC N1005, July 2013. Описанные здесь нововведения также можно реализовать для других стандартов или форматов.
В более общем случае возможно использование различных альтернатив для описанных здесь примеров. Например, некоторые из описанных здесь способов можно изменить, изменив порядок описанных действий способа путем разделения на части, повторения или отбрасывания некоторых действий способа и т.д. Различные аспекты раскрытой здесь технологии можно использовать в сочетании или по отдельности. В разных вариантах осуществления используется одно или несколько из описанных здесь нововведений. Некоторые из писанных здесь нововведений направлены на решение одной или нескольких проблем, отмеченных в разделе «Уровень техники». Как правило, один предложенный способ/одно средство не решают всех указанных проблем.
I. Примерные вычислительные системы
На фиг. 1 показан обобщенный пример подходящей вычислительной системы (100), в которой можно реализовать несколько из описанных здесь нововведений. Здесь не предполагается, что вычислительная система (100) накладывает какое-либо ограничение на объем использования и функциональные возможности, так что эти нововведения могут быть реализованы в различных вычислительных системах общего назначения или специализированных вычислительных системах.
Обратимся к фиг. 1, где вычислительная система (100) включает в себя один или несколько обрабатывающих блоков (110, 115) и память (120, 125). Обрабатывающие блоки (110, 115) выполняют исполняемые компьютером программы. Обрабатывающий блок может представлять собой центральный обрабатывающий блок (CPU) общего назначения, процессор в прикладной специализированной интегральной схеме (ASIC) или процессор любого другого типа. В многопроцессорной системе для повышения производительности исполняемые компьютером команды выполняются множеством обрабатывающих блоков. Например, на фиг. 1 показан центральный управляющий блок (110), а также блок графической обработки или сопроцессорный блок (115). Материальная память (120, 125) может представлять собой энергозависимую память (например, регистры, кэш-память, RAM), энергонезависимую память (например, ROM, EEPROM, флэш-память и т.д.) или некоторую комбинацию из двух указанных устройств, доступных обрабатывающему блоку (блокам). В памяти (120, 125) хранится программное обеспечение (180), реализующее одно или несколько нововведений для режима внутреннего ВС предсказания, в виде считываемых компьютером программ, подходящим для выполнения обрабатывающим блоком (блоками).
Вычислительная система может иметь дополнительные функциональные возможности. Например, вычислительная система (100) включает в себя хранилище (140), одно или несколько устройств (150) ввода, одно или несколько устройств (160) вывода и одно или несколько коммуникационных соединений (170). Компоненты вычислительной системы (100) соединены между собой механизмом межсоединения (не показан), таким как шина, контроллер или сеть. Как правило, программное обеспечение операционной системы (не показано) обеспечивает операционную среду для других программных средств, реализуемых в вычислительной системе (100), и координирует операции, выполняемые компонентами вычислительной системы (100).
Материальное хранилище данных (40) может быть съемным или несъемным и может включать в себя магнитные диски, магнитные ленты или кассеты, CD-ROM, DVD или любой другой носитель, который можно использовать для хранения информации, которая может быть доступна в вычислительной системе (100). Хранилище (140) обеспечивает хранение команд для программного обеспечения (180), используя одну или несколько операций для режима внутреннего предсказания с ВС.
Устройство (устройства) (150) ввода могут представлять собой устройство сенсорного ввода, такое как клавиатура, мышь, перо или шаровой манипулятор, устройство ввода голоса, сканирующее устройство или иное устройство, обеспечивающее ввод в вычислительную систему (100). Для видео устройством (устройствами) (150) ввода может быть камера, видеокарта, карта селектора TV программ или аналогичное устройство, которое получает видео в аналоговой или цифровой форме, либо CD-ROM или CD-RW, которые считывают отсчеты видео в вычислительную систему (100). Устройство (устройства) (160) вывода может представлять собой дисплей, принтер, динамик, устройство записи на CD или какое-либо другое устройство, которое обеспечивает вывод из вычислительной системы (100).
Коммуникационное соединение (соединения) (170) предоставляет возможность связи через среду связи с другим вычислительным объектом. Коммуникационная среда переносит информацию, такую как исполняемые компьютером команды, ввод или вывод видео или иные данные в сигнале, модулированном данными. Сигналом, модулированным данными, является сигнал, имеющий одну или несколько характеристик, установленных или измененных таким образом, чтобы обеспечить закодирование информации в указанном сигнале. Например, но не как ограничение, коммуникационная среда может использовать электрическую, оптическую, радиочастотную (RF) или иную несущую.
Упомянутые нововведения можно описать в общем контексте считываемых компьютером сред. Считываемые компьютером среды представляют собой любые доступные материальные среды, к которым можно обращаться в данной вычислительной среде. Например, но не как ограничение, при использовании вычислительной системы (100) считываемый компьютером среды включают в себя память (120, 125), хранилище (140) и любые комбинации из них.
Упомянутые нововведения можно описать в общем контексте исполняемых компьютером команд, таких как команды, содержащиеся в программных модулях, которые исполняются вычислительной системой на целевом реальном или виртуальном процессоре. Обычно программные модули включают в себя стандартные программы, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д., которые решают конкретные задачи или реализуют конкретные типы абстрактных данных. Функциональные возможности программных модулей могут быть объединены или разделены между программными модулями в соответствии с требованиями в различных вариантах осуществления. Исполняемые компьютером команды для программных модулей могут выполняться в локальной или распределенной вычислительной системе.
Термины «система» и «устройство» используются здесь как взаимозаменяемые. Если из контекста в явном виде не следует иное, ни один из этих терминов не накладывает какое-либо ограничение на тип вычислительной системы или вычислительного устройства. В общем случае вычислительная система или вычислительное устройство может быть локальным или распределенным и может включать в себя любую комбинацию специализированных аппаратных средств и/или аппаратных средств общего назначения с программным обеспечением, реализующим описанные здесь функциональные возможности.
Раскрытые здесь способы также можно реализовать с использованием специализированных аппаратных вычислительных средств, сконфигурированных для выполнения любого из раскрытых здесь способов. Например, раскрытые способы можно реализовать с помощью интегральной схемы (например, ASIC (такой как блок обработки цифровых сигналов (DSP), блок обработки графики (GPU) или программируемое логическое устройство (PLD), такое как вентильная матрица, программируемая пользователем (FPGA)), специально спроектированная или сконфигурированная для реализации любого из раскрытых здесь способов.
Для представления в данном подробном описании используются термины типа «определяет» и «использует» для описания компьютерных операций в вычислительной системе. Эти термины являются абстракциями высокого уровня для операций, выполняемых компьютером, и их не следует путать с действиями, выполняемыми человеком. Реальные вычислительные операции, соответствующие этим терминам, зависят от конкретной реализации.
II. Примерные сетевые среды
На фигурах 2а и 2b показаны примерные сетевые среды (201, 202), которые включают в себя видеокодеры (220) и видеодекодеры (270). Кодеры (220) и декодеры (270) соединены через сеть (250), использующую соответствующий коммуникационный протокол. Сеть (250) может включать в себя Интернет или другую компьютерную сеть.
В сетевой среде (201), показанной на фиг. 2а, каждое средство связи в режиме реального времени (RTC) включает в себя кодер (220) и декодер (270) для двунаправленного обмена. Данный кодер (220) может создавать выходные данные, совместимые с вариантом или расширением стандарта HEVC, стандарта SMPTE 421M, стандарта ISO-IEC 14496-10 (также называемого H.264 или AVC), другого стандарта или патентованного формата, с соответствующим декодером (270), получающим кодированные данные от кодера (220). Упомянутая двунаправленная связь может быть частью видеоконференции, видеотелефонного звонка или другого сценария двусторонней связи. Хотя сетевая среда (201) на фиг. 2а включает в себя два средства (210) связи в режиме реального времени, сетевая среда (201) может вместо этого включать в себя три или более средства (210) связи в режиме реального времени, которые являются участниками многосторонней связи.
Средство (210) связи в режиме реального времени организует закодирование, выполняемое кодером (220). На фиг.3 показана примерная система (300) кодера, которая может быть включена в средство (210) связи в режиме реального времени. В качестве альтернативы, в средстве (210) связи в режиме реального времени может быть использована другая система кодера. Средство (210) связи в режиме реального времени также организует декодирование, выполняемое декодером (270). На фиг.4 показана примерная система (400) декодера, которая может быть включена в средство (210) связи в режиме реального времени. В качестве альтернативы, в средстве (210) связи в режиме реального времени может быть использована другая система декодера.
В сетевой среде (202), показанной на фиг. 2b, средство закодирования (212) включает в себя кодер (220), выполняющий закодирование видео для доставки на множество средств (214) воспроизведения, которые включают в себя декодеры (270). Однонаправленная связь может быть обеспечена для системы видеонаблюдения, системы текущего контроля с использованием веб-камеры, презентации в режиме телеконференции с использованием удаленных настольных компьютеров или для другого сценария, в котором видео кодируют и посылают из одного места в одно или несколько других мест. Хотя сетевая среда (202) на фиг. 2b включает в себя два средства (214) воспроизведения, сетевая среда (202) может включать в себя больше или меньше средств (214) воспроизведения. Обычно средство (214) воспроизведения осуществляет связь со средством (212) закодирования для определения потока видео для его приема средством (214) воспроизведения. Средство 214 воспроизведения принимает указанный поток, выполняет буферизацию полученных кодированных данных за соответствующий период и приступает к декодированию и воспроизведению.
На фиг. 3 показана примерная система (300) кодера, которая может входить в состав средства (212) закодирования. В качестве альтернативы, в средстве (212) закодирования может использоваться другая система кодера. Средство (212) закодирования также может включать в себя логический блок контроллера на стороне сервера для организации соединений с одним или несколькими средствами (214) воспроизведения. На фиг. 4 показана примерная система (400) декодера, которая может быть включена в средство (214) воспроизведения. В качестве альтернативы в средстве (214) воспроизведения может использоваться другая система декодера. Средство (214) воспроизведения также может включать в себя логический блок контроллера на стороне клиента для организации соединений со средством 212 закодирования.
III. Примерные системы кодера
На фиг. 3 представлена блок-схема примерной системы (300) кодера, вместе с которой можно реализовать некоторые описанные здесь варианты осуществления изобретения. Система (300) кодера может представлять собой средство кодирования общего назначения, способное работать в любом из множества режимов закодирования, таких как режим закодирования с малой задержкой для связи в реальном времени, режим транскодирования и режим регулярного закодирования для воспроизведения медиа из файла или потока, либо может представлять собой специализированное средство закодирования, адаптированное к одному указанному режиму закодирования. Система (300) кодера может быть реализована в виде модуля операционной системы, в виде части библиотеки приложений или в виде автономного приложения. Система (300) кодера принимает в целом последовательность исходных видеокадров (311) от источника (310) видео и создает закодированные данные в качестве выхода в канал (390). Закодированные данные, выведенные в указанный канал, могут включать в себя контент, закодированный с использованием режима внутреннего предсказания с ВС.
Источником (310) видео может быть камера, карта селектора каналов, запоминающая среда или иной источник цифрового видео. Источник (310) видео создает последовательность видеокадров с частотой кадров, например, 30 кадров в секунду Используемый здесь термин «кадр» обычно относится к исходным, кодированным или восстановленным данным изображения. Для прогрессивного видео кадром является прогрессивный видеокадр. Для чересстрочного видео в примерных вариантах осуществления чересстрочный видеокадр является построчным перед закодированием. В качестве альтернативы кодируются два комплементарных чересстрочных видеополя в качестве чересстрочного видеокадра или отдельные поля. Помимо указания на прогрессивный видеокадр термин «frame» (кадр), или «picture» (картинка), может указывать на одно непарное видеополе, комплементарную пару видеополей, плоскость видеообъекта, которая представляет видеообъект в данный момент времени, или интересующая область в более крупном изображении. Плоскость или область видеообъекта может являться частью более крупного изображения, которое включает в себя множество объектов или областей сцены.
Поступающий исходный кадр (311) запоминается в зоне (320) хранения временной памяти исходных кадров, которая включает в себя множество зон (321, 322 …, 32n) хранения буферов кадров. Буфер (321, 322, и т.д.) запоминает исходный кадр в зоне (320) хранения исходных кадров. После запоминания одного или нескольких исходных кадров (311) в буферах (321, 322, и т.д.) кадров селектор (330) кадров периодически выбирает отдельный исходный кадр из зоны 320) хранения исходных кадров. Порядок отбора кадров селектором (330) кадров для ввода в кодер (340) может отличаться от порядка, в котором эти кадры создаются источником (310) видео, например, кадр может по порядку идти впереди для облегчения обратного временного предсказания. Перед кодером (340) система (300) кодера может включать в себя процессор предварительной обработки (не показан), выполняющий предварительную обработку (например, фильтрацию) выбранного кадра (331) перед закодированием. Эта предварительная обработка может также включать в себя преобразование цветового пространства в первичные и вторичные компоненты для закодирования. Как правило, перед закодированием видео преобразуют в цветовое пространства, например, YUV, в котором значения отсчетов компоненты яркости (Y) представляют значения яркости или интенсивности, а значения отсчетов компонент цветности (UV) представляют цветоразностные значения. Значения отсчетов цветности могут быть подвергнуты субдискретизации для обеспечения более низкой частоты дискретизации цветности (например, для формата 4:2:0 YUV), либо значения отсчетов цветности могут иметь такое же разрешение, как значения отсчетов яркости (например, для формата 4:4:4 YUV). Либо видео может быть закодировано в другом формате (например, формат 4:4:4 RGB).
Кодер (340) выполняет закодирование выбранного кадра (331) для создания кодированного кадра (341), а также создает сигналы (342) операций управления памятью (MMCO) или информацию о наборе опорных картинок (RPS). Если текущий кадр не является первым кадром, который был закодированным при выполнении процесса закодирования, то кодер (340) может использовать один или несколько ранее закодированных/декодированных кадров (369), Которые были сохранены в зоне (360) временного хранения декодированных кадров. Указанные запомненные декодированные кадры (369) используют в качестве опорных кадров для межкадрового предсказания контента текущего исходного кадра (331). В общем случае, кодер (340) включает в себя множество кодирующих модулей, которые решают задачи закодирования, такие как разделение на плитки, оценка внутреннего предсказания и предсказание, оценка и компенсация движения, частотные преобразования, квантование и энтропийное кодирование. Точные операции, выполняемые кодером (340) могут варьироваться в зависимости от формата сжатия. Формат выходных закодированных данных может представлять собой версию или расширение формата HEVC, формат Windows Media Video, формат VC-1, формат MPEG-x (например, MPEG-1, MPEG-2 или MPEG-4), формат H.26x (например, Н.261, Н.262, Н.263, Н.264) или другой формат.
Кодер (340) может разделить кадр на множество плиток одинакового размера или разных размеров. Например, кодер (340) разделить кадр вдоль строк и столбцов плиток, что вместе с границами кадра определяет горизонтальные и вертикальные границы плиток в кадре, где каждая плитка представляет собой прямоугольную область. Плитки часто используют для улучшения опций для параллельной обработки. Кадр также можно сформировать в виде одного или нескольких слайсов, где один слайс может представлять весь кадр или область кадра. Слайс можно будет декодировать независимо от других слайсов в кадре, что повышает устойчивость к ошибкам. Контент слайса или плитки дополнительно разделяется на блоки или другие наборы отсчетов в целях закодирования и декодирования.
Что касается синтаксиса согласно стандарту HEVC, кодер расщепляет контент кадра (или слайса, или плитки) на единицы кодировочного дерева. Единица кодировочного дерева (CTU) включает в себя значения отсчетов яркости, сформированных в виде блока кодировочного дерева яркости (CTB), и соответствующие значения отсчетов цветности, сформированных в виде двух CTB цветности. Размер CTU (и ее CTB) выбирается кодером и может, например, составлять 64×64, 32×32 или 16×16 значений отсчетов. Единица CTU включает в себя одну или несколько единиц кодирования. Единица кодирования (CU) содержит блок кодирования (CB) яркости и два соответствующих CB цветности. Например, CTU с одним CTB яркости размером 64×64 и двумя CTB цветности (в формате 4:4:4 YUV) размером 64×64 может быть разделена на четыре CU, где каждая CU включает в себя один CB яркости размером 32×32 и два CB цветности размером 32×32, причем каждую CU можно разделить дополнительно на более мелкие CU. Либо, как в другом примере, CTU c одним CTB яркости размером 64×64 и двумя CTB цветности размером 32×32 (в формате 4:2:0 YUV) можно разделить на четыре CU, где каждая CU включает в себя CB яркости 32×32 и два CB цветности 16×16, при этом каждую CU можно дополнительно разделить на более мелкие CU. Минимальный допустимый размер CU (например, 8×8, 16×16) может быть передан в битовом потоке в качестве сигнализации.
Обычно CU имеет режим предсказания, например, внешнего (интер) или внутреннего (интра). CU включает в себя один или несколько блоков предсказания в целях сигнализации о предсказании (например, подробности режима предсказания, значения смещения и т.д.) и/или обработки предсказания. Единица предсказания (PU) содержит блок предсказания яркости (PB) и два PB цветности. Для CU, полученной посредством внутреннего предсказания PU имеет тот же размер, что и CU, если CU не имеет минимальный размер (например, 8×8). В этом случае CU можно разделить на четыре более мелких PU (например, каждая размером 4×4, если минимальный размер CU составляет 8×8) или PU может иметь минимальный размер CU, как указано синтаксическим элементом для данной CU. Единица CU также имеет один или несколько блоков преобразования в целях избыточного кодирования/декодирования, где единица преобразования (TU) имеет блок преобразования (TB) и два TB цветности. Единица PU в CU, полученной с использованием внутреннего предсказания, может содержать одну TU (равную по размеру единице PU) или несколько TU. Используемый здесь термин «блок» может указывать на CB, PB, TB или другой набор значений отсчетов в зависимости от контекста. Кодер решает, каким образом разделить видео на единицы CTU, CU, PU, TU и т.д.
Обратимся к фиг. 3, где кодер представляет полученный путем внутреннего кодирования блок исходного кадра (331) в контексте предсказания исходя из других, ранее восстановленных значений отсчетов в кадре (331). В случае внутреннего предсказания с ВС средство оценки внутреннего предсказания оценивает смещение блока по отношению к другим, ранее восстановленным значениям отсчетов. Опорная область внутреннего предсказания представляет собой область отсчетов в кадре, которые используют для создания значений BC предсказания для блока. Что касается внутреннего пространственного предсказания для блока, то средство оценки внутреннего предсказания оценивает результат экстраполяции соседних восстановленных значений отсчетов в данном блоке. Средство оценки внутреннего предсказания выводит информацию о предсказании (например, значения блочного вектора (BV) для внутреннего предсказания с ВС и режим (направление) предсказания для внутреннего пространственного предсказания), которая подвергаются энтропийному кодированию. Средство внутреннего предсказания использует упомянутую информацию о предсказаниях для определения значений внутреннего предсказания.
Кодер (340) представляет кодированный, с использованием внешнего предсказания, блок исходного кадра (331) в контексте предсказания на основе опорных кадров. Средство оценки движения оценивает движение блока относительно одного или нескольких опорных кадров (369). При использовании множества опорных кадров это множество опорных кадров может быть взято из разных временных направлений или одного и того же временного направления. Опорная область предсказания с компенсацией движения является областью отсчетов в опорном кадре (кадрах), которые используют для создания значений предсказания с компенсацией движения для блока отсчетов текущего кадра. Средство оценки движения выводит информацию о движении, такую как информация о векторе движения, которая кодируется с использованием энтропийного кодирования. Компенсатор движения использует векторы движения для опорных кадров (369), чтобы определить значения предсказания с компенсацией движения.
Кодер определяет различия (если это имеет место) между значениями предсказания (внутреннего или внешнего) блока и соответствующими исходными значениями. Эти значения остатков предсказания дополнительно кодируют, используя частотное преобразование, квантование и энтропийное закодирование. Например, кодер (340) устанавливает значения для параметра квантования (QP) для кадра, плитки, слайса и/или другой части видео и квантует коэффициенты преобразования соответствующим образом. Энтропийный кодировщик кодера (340) выполняет сжатие квантованных значений коэффициентов преобразования, а также некоторой вспомогательной информации (например, информация о векторе движения, значения BV, значения QP, принятые решения о режиме, выбранные параметры). Типовые приемы энтропийного кодирования включают в себя экспоненциальное кодирование Голомба, арифметическое кодирование, дифференциальное кодирование, кодирование Хаффмана, кодирование длин серий, кодирование с преобразованием «переменная длина слова-переменная длина слова» (V2V), кодирование с преобразованием «переменная длина слова-фиксированная длина слова» (V2F), LZ кодирование, словарное кодирование, энтропийное кодирование с разделением интервала вероятности (PIPE) и комбинации вышеуказанных способов кодирования. Энтропийный кодировщик может использовать разные приемы кодирования для информации разного рода и может выбирать конкретный способ кодирования из множества кодовых таблиц.
Кодированные кадры (341) и информация (342) о MMCO/RPS обрабатываются эмулятором (350) обработки декодирования. Эмулятор (350) обработки декодирования реализует некоторые из функциональных возможностей декодера, например, декодирование задач для восстановления опорных кадров. Эмулятор (350) обработки декодирования использует информацию (342) о MMCO/RPS для определения того, требуется ли восстановление и запоминание данного кодированного кадра (341) для использования в качестве опорного кадра при межкадровом предсказании последующих кадров, подлежащих закодированию. Если информация (342) о MMCO/RPS указывает, что кодированный кадр (341) необходимо запомнить, то эмулятор 350 процесса декодирования моделирует процесс декодирования, который будет реализован декодером, принимающим кодированный кадр (341) и создающим соответствующий декодированный кадр (351). Действуя таким образом, при использовании кодером (340) декодированного кадра (кадров) (369), который был запомнен в зоне (360) хранения декодированных кадров, эмулятор (350) процесса декодирования также использует декодированный кадр (кадры) (369) из зоны (360) хранения как часть процесса декодирования.
Зона (360) временного хранения декодированных кадров включает в себя множество зон (361, 362, …, 36n) хранения буферов кадров. Эмулятор (350) процесса декодирования использует информацию (342) о MMCO/RPS для управления контентом зоны (360) хранения, чтобы идентифицировать буферы (361, 362, и т.д.) кадров с кадрами, которые больше не нужны кодеру (340) для использования в качестве опорных кадров. После моделирования процесса декодирования эмулятор (350) процесса декодирования запоминает вновь декодированный кадр (351) в буфере (361, 362 и т.д.) кадра, который был идентифицирован указанным образом.
Кодированные кадры (341) и информация (342) о MMCO/RPS буферизируются в зоне (370) временно кодированных данных. Кодированные данные, собранные в зоне (370) кодированных данных, содержат в качестве части синтаксиса элементарно кодированного битового видеопотока, закодированные данные для одного или нескольких кадров. Кодированные данные, собранные в зоне (370) кодированных данных, также могут включать в себя метаданные для медиа, относящиеся к кодированным видеоданным (например, в виде одного или нескольких параметров в одном или нескольких сообщений с дополнительной расширяющей информацией (SEI) или в сообщениях с информацией о годности видео (VUI)).
Агрегированные данные (371) из зоны (370) временно кодированных данных обрабатываются канальным кодером (380). Канальный кодер (380) может пакетировать агрегированные данные для передачи в виде потока медиа (например, в соответствии с форматом мультиплексирования потока медиа, таким как ISO/IEC 13818-1), и в этом случае канальный кодер (380) может добавить синтаксические элементы как часть синтаксиса потока передачи медиа. Либо канальный кодер (380) может сформировать агрегированные данные для хранения в виде файла (например, согласно формату контейнера медиа, такому как ISO/IEC 14496-12), и в этом случае канальный кодер (380) может добавить синтаксические элементы как части синтаксиса файла хранения медиа. Либо, в более общем случае, канальный кодер (380) может реализовать один или несколько протоколов мультиплексирования медиасистем или транспортных протоколов, и в этом случае канальный кодер (380) может добавить синтаксические элементы как части синтаксиса указанного протокола (протоколов). Канальный кодер (380) обеспечивает вывод в канал (390), который представляет хранилище, коммуникационное соединение или другой канал для указанного вывода.
IV. Примерные системы декодера
На фиг. 4 представлена блок-схема примерной системы (400) декодера, вместе с которым можно реализовать некоторые описанные здесь варианты осуществления изобретения. Система (400) декодера может представлять собой средство декодирования общего назначения, способное работать в любом из множества режимов декодирования, таких как режим декодирования с малой задержкой для связи в реальном времени, и режим регулярного декодирования для воспроизведения медиа из файла или потока, либо может представлять собой специализированное средство декодирования, адаптированное к одному указанному режиму декодирования. Система (400) декодера может быть реализована в виде модуля операционной системы, в виде части библиотеки приложений или в виде автономного приложения. Система (400) декодера принимает в целом кодированные данные из канала (410) и создает восстановленные кадры в качестве выхода для адресата (490) выхода. Эти кодированные данные могут включать в себя контент, закодированный с использованием режима внутреннего предсказания с ВС.
Система (400) декодера включает в себя канал (410), который может представлять хранилище, коммуникационное соединение или другой канал для кодированных данных в качестве входных данных. Канал (410) создает кодированные данные, полученные с использованием канального кодирования. Канальный декодер (420) может обрабатывать кодированные данные. Например, канальный декодер (420) распаковывает данные, которые были агрегированы для передачи в виде медиапотока (например, согласно формату мультиплексирования медиапотока, такому как ISO/IEC 13818-1), и в этом случае канальный декодер (420) может проанализировать синтаксические элементы, добавленные как часть синтаксиса потока передачи медиа. Либо канальный декодер (420) выделяет кодированные видеоданные, которые были агрегированы для хранения в виде файла (например, согласно формату контейнера медиа, такому как ISO/IEC 14496-12), и в этом случае канальный декодер (420) может выполнить синтаксический анализ элементов, добавленных как часть синтаксиса файла хранения медиа. Либо, в более общем случае, канальный декодер (420) может реализовать один или несколько протоколов мультиплексирования медиасистем или транспортных протоколов, и в этом случае канальный декодер (420) может выполнить синтаксический анализ элементов, добавленных как часть синтаксиса указанного протокола (протоколов).
Кодированные данные (421), выведенные из канального декодера (420), запоминаются в зоне (430) временных кодированных данных, пока не будет получено достаточное количество таких данных. Кодированные данные (421) включают в себя кодированные кадры (431) и информацию (432) о MMCO/RPS. Кодированные данные (421) в зоне (430) кодированных данных содержат, в качестве части синтаксиса элементарно кодированного битового потока видео кодированные данные для одной или нескольких картинок. Кодированные данные (421) в зоне (430) кодированных данных также могут включать в себя метаданные медиа, относящиеся к закодированным видеоданным (например, в виде одного или нескольких параметров в одном или нескольких сообщениях SEI или сообщениях VUI).
В общем случае в зоне (430) кодированных данных временно хранятся кодированные данные (421), пока указанные кодированные данные (421) не используются декодером (450). В этот момент кодированные данные для кодированного кадра (421) и информация (432) о MMCO/RPS пересылаются из зоны (430) кодированных данных на декодер (450). Так как декодирование продолжается, в зону (430) кодированных данных добавляются новые кодированные данные, а самые старые кодированные данные, остающиеся в зоне (43=20) кодированных данных, пересылаются на декодер (450).
Декодер (450) периодически декодирует кодированный кадр (431) для создания соответствующего декодированного кадра (451). Когда это необходимо, при выполнении процесса декодирования декодер (450) может использовать один или несколько ранее декодированных кадров (469) в качестве опорных кадров для межкадрового предсказания. Декодер (450) считывает указанные ранее декодированные кадры (469) из зоны (460) временного хранения декодированных кадров. Обычно декодер (450) включает в себя множество декодирующих модулей, которые решают такие задачи декодирования, как энтропийное декодирование, обратное квантование, обратные частотные преобразования, внутреннее предсказание, компенсацию движения и объединения плиток. Точный набор операций, выполняемых декодером (450), может изменяться в зависимости от формата сжатия.
Например, декодер (450) принимает кодированные данные для сжатого кадра или последовательности кадров и создает выходные данные, включающие в себя декодированный кадр (451). Имеющийся в декодере (450) буфер получает закодированные данные для сжатого кадра и в подходящее время делает полученные закодированные данные доступными для энтропийного декодера. Энтропийный декодер выполняет энтропийное декодирование кодированных квантованных данных, а также кодированной вспомогательной информации, как правило, применяя операции, обратные энтропийному закодированию, выполненному в кодере. Компенсатор движения использует информацию о движении для одного или нескольких опорных кадров, формируя значения предсказания с компенсацией движения для любых кодированных (с использованием межкадрового кодирования) блоков восстанавливаемого кадра. Модуль внутреннего предсказания может обеспечить предсказание значений отсчетов текущего блока на основе соседних, ранее восстановленных значений отсчетов, или, в случае внутреннего предсказания с ВС, предсказать значение отсчетов текущего блока, используя ранее восстановленные значения отсчетов из области внутреннего предсказания в данном кадре. Декодер (450) также восстанавливает остаточные элементы предсказания. Обратный квантователь выполняет обратное квантование для декодированных (с использованием энтропийного декодирования) данных. Например, декодер (450) устанавливает значения для QP для картинки, плитки, слайса и/или другой части видео на основе синтаксических элементов в битовом потоке и выполняет обратное квантование соответствующих коэффициентов преобразования. Средство обратного частотного преобразования преобразует квантованные данные в частотной области в информацию пространственной области. Для блоков, полученных с использованием межкадрового предсказания, декодер (450) объединяет восстановленные остатки предсказания с предсказаниями с компенсацией движения. Декодер (450) может подобным же образом объединить остатки предсказания с предсказаниями, полученными с использованием внутреннего предсказания. Контур компенсации движения в видеодекодере (450) включает в себя адаптивный деблокинг-фильтр для сглаживания разрывов через строки и/или столбцы на границах блоков в декодированном кадре (451).
Зона (460) временного хранения декодированных кадров включает в себя множество зон (461, 462, …, 46n) хранения буферов кадров. Зона (460) хранения декодированных кадров представляет собой пример буфера декодированных картинок. Декодер (450) использует информацию (432) о MMCO/RPS для идентификации буфера (461, 462 и т.д.) кадров, в котором может храниться декодированный кадр (451). Декодер (450) запоминает декодированный кадр (451) в этом буфере кадров.
Секвенсор (480) вывода использует информацию (432) о MMCO/RPS для идентификации того, когда следующий кадр, создаваемый в порядке вывода, будет доступен в зоне 460 хранения декодированных кадров. Когда в зоне (460) хранения декодированных кадров появится следующий кадр (481), создаваемый в порядке вывода, он считывается секвенсором (480) вывода и выводится для адресата (490) вывода (например, на дисплей). В общем случае порядок, в котором выводятся секвенсором (480) вывода кадры из зоны (460) хранения декодированных кадров, может отличаться от порядка, в котором эти кадры декодировались декодером (450).
V. Примерные видеокодеры
На фигурах 5а и 5b представлена блок-схема обобщенного видеокодера (500), совместно с которым могут быть реализованы некоторые описанные здесь варианты осуществления. Кодер (500) принимает последовательность видеокартинок, включая текущую картинку, в виде входного видеосигнала 505 и создает закодированные данные в кодированном битовом потоке (595) видео в качестве выходных данных.
Кодер (500) создан на блочной основе и использует блочный формат, который зависит от реализации. Блоки могут быть дополнительно разделены на другие ступени, например, при предсказании, частотном преобразовании и/или энтропийном закодировании. Например, картинка может быть разделена на 64×64 блока, 32×32 блока или 16×16 блоков, которые, в свою очередь, можно разделить на более мелкие блоки значений отсчетов для кодирования и декодирования. В реализациях кодирования для стандарта HEVC кодер разделяет картинку на единицы CTU (CTB), CU (CB), PU (PB), и TU (TB).
Кодер (500) выполняет сжатие картинок, используя кодирование внутри одной картинки (внутреннее кодирование) и/или между картинками (внешнее кодирование). Многие компоненты кодера (500) используются как для внутреннего кодирования, так и для внешнего кодирования. Точный список операций, выполняемых этими компонентами, может существенно зависеть от типа сжимаемой информации.
Модуль (510) разделения на плитки выполняет необязательное разделение картинки на множество плиток одинакового размера или разных размеров. Например, модуль (510) разделения на плитки разделяет картинку по строкам и столбцам, которые вместе с границами картинки определяют горизонтальные и вертикальные границы плиток в картинке, где каждая плитка представляет собой прямоугольную область. Модуль (510) разделения на плитки может затем сгруппировать эти плитки в один или несколько наборов, где набор плиток представляет собой одну или несколько плиток.
Средство (520) общего управления закодированием получает картинки для входного видеосигнала (505), а также сигнала обратной связи (не показан) от различных модулей кодера (500). Средство (520) общего управления закодированием в общем случае обеспечивает управляющие сигналы (не показаны) для других модулей (таких как модуль (510) разделения на плитки, преобразователь/средство масштабирования/квантователь (530), средство масштабирования/обратный преобразователь (535), средство (540) оценки внутреннего предсказания, средство (550) оценки движения и переключатель «интра/интер») для установки и изменения параметров кодирования во время закодирования. В частности, средство (520) общего управления закодированием может принять решение о том, использовать ли внутреннее предсказание с ВС во время закодирования и принять решение о том, каким образом это сделать. Средство (520) общего управления закодированием также может оценить промежуточные результаты во время закодирования, например, выполнения анализа зависимости искажения от скорости. средство (520) общего управления закодированием создает общие управляющие данные (522), которые указывают решения, сделанные во время закодирования, так что соответствующий декодер может принять согласованные решения. Общие данные (522) управления подаются в средство форматирования заголовка/кодер (590) энтропийного кодирования.
Если текущая картинка предсказывается с использованием внешнего предсказания компенсатор (550) движения оценивает движение блоков значений отсчетов текущей картинки входного видеосигнала (505) по отношению к одной или нескольким опорным картинкам. Буфер (570) декодированных картинок буферизирует одно или несколько восстановленных ранее кодированных картинок для использования в качестве опорных картинок. При использовании множества опорных картинок это множество опорных картинок может поступать с разных временных направлений или с одного и того же временного направления. Средство (550) оценки движения создает в качестве дополнительной информации данные (552), такие как данные вектора движения и данные по выбору опорных картинок. Данные (552) о движении подаются в средство форматирования заголовка/энтропийный кодировщик 590, а также на компенсатор (555) движения.
Компенсатор (555) движения применяет векторы движения к восстановленной опорной картинке (картинкам) из буфера (570) декодированных картинок. Компенсатор (555) движения создает предсказания с компенсацией движения для текущей картинки.
В отдельном тракте в декодере (500) средство (540) оценки внутреннего предсказания определяет, каким образом выполнить внутреннее предсказание для блоков значений отсчетов текущей картинки входного видеосигнала (505). Эта текущая картинка может быть целиком или частично кодирована с использованием внутреннего кодирования. Используя значения восстановления (538) текущей картинки для внутреннего пространственного предсказания, средство (540) оценки внутреннего предсказания определяет, каким образом выполнить пространственное предсказание значений отсчетов текущего блока текущей картинки исходя из соседних ранее восстановленных значений отсчетов текущей картинки. Либо, если речь идет о внутреннем предсказании с ВС, средство (540) оценки внутреннего предсказания оценивает смещение значений отсчетов текущего блока для различных областей-кандидатов в текущей картинке. Что касается внутреннего предсказания с ВС, то средство (540) оценки внутреннего предсказания оценки может ограничить процесс выбора BV с использованием одного или нескольких ограничений, описанных ниже. Средство (540) оценки внутреннего предсказания может также ограничить использование внутреннего предсказания с ВС, когда разрешено ограниченное внутреннее предсказание, как описано ниже.
Средство (540) оценки внутреннего предсказания создает в качестве вспомогательной информации данные (542) внутреннего предсказания, такую как информация, указывающая, используется ли пространственное предсказание или предсказание с BC (например, значение флага на внутренний блок), направление режима предсказания (для внутреннего пространственного предсказания) и значения BV (для внутреннего предсказания с BC). Данные (542) внутреннего предсказания подаются в средство форматирования заголовка/энтропийный кодировщик (590), а также в средство (545) внутреннего предсказания.
Согласно данным (542) внутреннего предсказания средство 545 внутреннего предсказания выполняет пространственное предсказание значений отсчетов текущего блока текущей картинки исходя из соседних ранее восстановленных значений отсчетов текущей картинки. Либо в случае внутреннего предсказания с ВС, средство (545) внутреннего предсказания обеспечивает значения отсчетов текущего блока, используя ранее восстановленные значения отсчетов в области внутреннего предсказания, которая указана значением BV для текущего блока. Когда данные цветности для картинки имеют такое же разрешение, как данные яркости (например, когда формат представляет собой формат YUV 4:4:4 или формат RGB 4:4:4), значение, которое используется для блока цветности, может совпадать со значением BV, используемым для блока яркости. С другой стороны, когда данные цветности для картинки имеют уменьшенное разрешение по сравнению с данным яркости (например, когда форматом является формат YUV 4:2:0), значение BV, которое используется для блока цветности, может быть уменьшено в масштабе и возможно округлено для согласования с разницей в разрешении цветности (например, путем деления вертикальной и горизонтальной компонент значения BV на два и отбрасывания или округления их до целых значений).
Переключатель «интра/интер» выбирает значения предсказания с компенсацией движения или внутреннего предсказания для использования в качестве предсказания (558) для данного блока. Разность (если она имеет место) между блоком предсказания (558) и соответствующей частью исходной текущей картинки сигнала (505) входного видео обеспечивает значения остатка (518). Во время восстановления текущей картинки восстановленные значения остатков объединяют с результатами предсказания (558) для создания восстановления (538) исходного контента из видеосигнала (505). Однако, при сжатии с потерями некоторая часть информации из видеосигнала (505) теряется.
В преобразователе/блоке масштабирования/квантователе (530) преобразователь частоты выполняет преобразование видеоинформации пространственной области в данные частотной области (например, спектр, преобразование). Для видеокодирования на блочной основе частотный преобразователь применяет дискретное косинусное преобразование (DCT), его целочисленную аппроксимацию или прямое блочное преобразование другого типа в блоки данных остатков предсказания (или данные о значения отсчетов, если предсказание (558) дало нулевой результат), обеспечивая блоки коэффициентов частотного преобразования. При использовании внутреннего предсказания с ВС кодер (500) может применить дискретное синусное преобразование (DST), его целочисленную аппроксимацию или прямое блочное преобразование другого типа (которое отличается от преобразования, использованного для других блоков) по меньшей мере для некоторых размеров блоков значений остатков внутреннего ВС предсказания, как описано ниже. Кодер (500) также способен указать, что данный шаг преобразования пропущен. Средство масштабирования/квантователь выполняет масштабирование и квантование коэффициентов преобразования. Например, квантователь применяет неоднородное масштабируемое квантование к данным частотной области, используя размер шага, который изменяется от кадра к кадру, от плитки к плитке, от слайса к слайсу, от блока к блоку или на другой основе. Квантованные данные (532) о коэффициентах преобразования подаются в средство форматирования заголовка/энтропийный кодировщик (590).
В блоке масштабирования/обратном преобразователе (535) средство масштабирования/обратный квантователь выполняет обратное масштабирование и обратное квантование квантованных коэффициентов преобразования. Обратный частотный преобразователь выполняет обратное частотное преобразование, создавая блоки восстановленных остатков предсказания или значений отсчетов. Кодер (500) объединяет восстановленные остатки со значениями предсказания (558) (например, значения предсказания с компенсацией движения, значения внутреннего предсказания) для формирования восстановления (538).
Что касается внутреннего предсказания, то значения восстановления (538) могут быть направлены обратно в средство (540) оценки внутреннего предсказания и средство (545) внутреннего предсказания. Также значения восстановления (538) могут быть использованы для предсказания (с компенсацией движения) последующих картинок. Значения восстановления (538) кроме того могут подвергнуться фильтрации. Средство (560) управления фильтрацией определяет, каким образом выполнять деблокинг-фильтрацию и фильтрацию с адаптивным смещением отсчетов (SAO) для значений восстановления (538) для данной картинки видеосигнала (505). Средство (560) управления фильтрацией создает данные (562) для управления фильтром, которые подаются в средство форматирования заголовка/энтропийный кодировщик (590) и средство объединения/фильтр (фильтры) (565).
В средстве (565) объединения/фильтре (фильтрах) кодер (500) объединяет контент из разных плиток, формируя восстановленную версию картинки. Кодер (500) избирательно выполняет деблокинг-фильтрацию и фильтрацию с SAO в соответствии с данными (562) для управления фильтром, с тем чтобы адаптивно сглаживать разрывы через границы в кадрах. Кодер (500) может использовать разные подходы при петлевой деблокинг-фильтрации на границах между блоками картинки в зависимости от того, какой режим предсказания используется: внутреннее пространственное предсказание, внутреннее предсказание с ВС или внешнее предсказание, для соответствующих блоков, как описано ниже. Фильтрация границ плиток выполняется избирательно или вообще не выполняется в зависимости от настроек кодера (500), а кодер (500) может предоставить синтаксис в кодированном потоке для указания о том, была ли применена указанная фильтрация. Буфер (570) декодированных картинок буферизирует восстановленную текущую картинку для ее использования при последующем предсказании с компенсацией движения.
Средство форматирования заголовка/энтропийный кодировщик (590) выполняет форматирование и/или энтропийное кодирование общих управляющих данных (522), данных (532) квантованных коэффициентов преобразования, данных (542) внутреннего предсказания, данных (552) движения и данных (562) управления фильтром. Например, средство форматирования заголовка/энтропийный кодировщик (590) используют контекстно-ориентированное двоичное арифметическое кодирование для энтропийного кодирования различных синтаксических элементов. В частности, когда он выполняет закодирование значения BV, средство формирования заголовка/энтропийный кодировщик (590) может использовать вероятности появления значений для одной компоненты вектора BV (например, горизонтальные компоненты), учитывая значение другой компоненты вектора BV (например, вертикальной компоненты), как описано ниже.
Средство форматирования заголовка/энтропийный кодировщик (590) обеспечивает закодированные данные в кодированном битовом потоке (595) видео. Формат кодированного битового потока (595) видео может представлять собой вариант или расширение формата HEVC, формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2 или MPEG-4), формата H.26x (например, Н.261, Н.262, Н.263, Н.264) или другого формата.
В зависимости от реализации и требуемого типа сжатия возможно добавление, удаление, разбиение на множество модулей, объединение с другими модулями и/или замена подобными модулями кодера. В альтернативных вариантах осуществления кодеры с разными модулями и/или с другими конфигурациями модулей выполняют один или несколько описанных здесь способов. В конкретных вариантах осуществления кодеров, как правило, используют вариант или дополнительную версию кодера (500). Показанные здесь взаимосвязи между модулями в кодере (500) указывают общие информационные потоки в кодере; при этом другие взаимосвязи для простоты не показаны.
VI. Примерные видеодекодеры
На фиг. 6 представлена блок-схема обобщенного декодера (600), совместно с которым могут быть реализованы некоторые описанные здесь варианты осуществления. Декодер (600) принимает закодированные данные в кодированном битовом потоке (605) видео и создает выходные данные, включающие в себя картинки для восстановленного видео (695). Формат кодированного битового потока (605) видео может представлять собой вариант или расширение формата HEVC, формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2 или MPEG-4), формата H.26x (например, Н.261, Н.262, Н.263, Н.264) или другого формата.
Декодер (600) создан на блочной основе и использует блочный формат, который зависит от реализации. Блоки могут быть дополнительно разделены на другие ступени. Например, картинка может быть разделена на 64×64 блока, 32×32 блока или 16×16 блоков, которые, в свою очередь, можно разделить на более мелкие блоки значений отсчетов. В реализациях декодирования для стандарта HEVC картинка разделяется на единицы (блоки) CTU (CTB), CU (CB), PU (PB), и TU (TB).
Декодер (600) выполняет распаковку картинок, используя внутреннее декодирование и/или внешнее декодирование. Многие компоненты декодера (600) используются как для внутреннего декодирования, так и для внешнего декодирования картинок. Точный список операций, выполняемых этими компонентами, может существенно зависеть от типа распаковываемой информации.
Буфер получает закодированные данные в кодированном битовом потоке (605) видео и делает полученные закодированные данные доступными для анализатора/энтропийного декодера (610). Анализатор/энтропийный декодер (610) выполняет энтропийное декодирование данных (полученных в результате энтропийного кодирования), применяя, как правило, операции, обратные энтропийному кодированию, выполненному в кодере (500) (например, контекстно-ориентированное двоичное арифметическое декодирование). В частности, при декодировании значения вектора BV анализатор/энтропийный декодер (610) может декодировать соответствующие компоненты вектора BV, как описано ниже. В результате выполнения синтаксического анализа и энтропийного декодирования анализатор/энтропийный декодер (610) создает данные (622) общего управления, данные (632) о квантованных коэффициентах преобразования, данные (642) внутреннего предсказания, данные (652) движения и данные (662) для управления фильтром.
Средство (620) общего управления декодированием получает общие данные (622) управления и подает управляющие сигналы (не показаны) на другие модули (такие как средство масштабирования/обратный преобразователь (635), компенсатор (655) движения и переключатель «интра/интер») для установки и изменения параметров декодирования в ходе декодирования.
Если текущая картинка предсказывается с использованием внутреннего предсказания компенсатор (655) получает данные (652) движения, такие как данные вектора движения и данные выбора опорной картинки.
Компенсатор (655) движения применяет векторы движения к восстановленной опорной картинке (картинкам) из буфера (670) декодированных картинок. Компенсатор (655) движения создает предсказания с компенсацией движения для кодированных межкадровым кодированием блоков текущей картинки. В буфере (670) декодированных картинок запоминается одна или несколько ранее восстановленных картинок для использования в качестве опорных картинок.
В отдельном тракте в декодере (600) средство (645) внутреннего предсказания получает данные (642) внутреннего предсказания, такие как информация, указывающая, используется ли при внутреннем предсказании пространственное предсказание или предсказание с BC (например, значение флага на внутренний блок), направление режима предсказания (для внутреннего пространственного предсказания) и значения BV (для внутреннего предсказания с ВС). В случае внутреннего пространственного предсказания средство (645) внутреннего предсказания, используя значения восстановления (638) текущей картинки в соответствии с данными режима предсказания, выполняет пространственное предсказание значений отсчетов текущего блока текущей картинки исходя из соседних ранее восстановленных значений отсчетов текущей картинки. Либо, в случае внутреннего предсказания с ВС средство 645 внутреннего предсказания создает значения отсчетов текущего блока, используя ранее восстановленные значения отсчетов области внутреннего предсказания, которая указана значением BV для текущего блока. Средство (645) внутреннего предсказания также может ограничить использование внутреннего предсказания с ВС, когда разрешается ограниченное внутреннее предсказание, как описано ниже.
Переключатель «интра/интер» выбирает значения предсказания с компенсацией движения или внутреннего предсказания для использования в качестве предсказания (658) для данного блока. Например, при использовании синтаксиса HEVC переключатель «интра/интер» может управляться на основе синтаксического элемента, закодированного для CU картинки, которая может содержать предсказанные внутренним предсказанием единицы CU и предсказанные (с использованием внешнего предсказания) единицы CU. Декодер (600) объединяет предсказание (658) с восстановленными значениями остатков для создания данных восстановления (638) контента из видеосигнала.
Для восстановления остатка средство масштабирования/обратный преобразователь (635) принимает и обрабатывает данные (632) квантованных коэффициентов преобразования. В блоке масштабирования/обратного преобразователя (615) средство масштабирования/обратного квантователя выполняет обратное масштабирование и обратное квантование квантованных коэффициентов преобразования. Обратный частотный преобразователь выполняет обратное частотное преобразование, создавая блоки восстановленных остатков предсказания или значения отсчетов. Например, обратный частотный преобразователь применяет обратное блочное преобразование к коэффициентам частотного преобразования, создавая данные значений отсчетов или данные остатков предсказания. Обратное частотное преобразование может представлять собой обратное DCT, его целочисленную аппроксимацию или обратное частотное преобразование другого типа. При использовании внутреннего предсказания с ВС декодер (600) может применить обратное DST, его целочисленную аппроксимацию или обратное блочное преобразование другого типа (отличающееся преобразованием, примененным для других блоков) по меньшей мере для некоторых размеров блоков значений остатков внутреннего предсказания с ВС, как описано ниже.
В случае внутреннего предсказания значения восстановления (638) могут быть направлены обратно в средство (645) внутреннего предсказания. Что касается внешнего предсказания, то значения предсказания (638) кроме того могут быть подвергнуты фильтрации. В блоке объединения/фильтре (фильтрах) (665) декодер (600) объединяет контент из разных плиток в восстановленную версию картинки. Декодер (600) избирательно выполняет деблокинг-фильтрацию и фильтрацию SAO согласно данным (662) для управления фильтром и правилам для адаптации фильтра, с тем чтобы адаптивно сгладить разрывы через границы в кадрах. Декодер (600) может применить другие подходы при петлевой деблокинг-фильтрации границ между блоками картинки в зависимости от того, является ли режим предсказания режимом внутреннего пространственного предсказания, внутреннего предсказания с ВС или внешним предсказанием для соответствующих блоков, как описано ниже. Границы плиток могут быть избирательно отфильтрованы или вообще не фильтроваться в зависимости от настроек декодера (600) или синтаксической индикации в кодированных данных битового потока. Буфер (670) декодированных картинок буферизирует восстановленную текущую картинку для ее использования в последующем предсказании с компенсацией движения.
Декодер (600) также может включать в себя пост-обрабатывающий деблокинг-фильтр. Пост-обрабатывающий деблокинг-фильтр, являющийся опцией, сглаживает разрывы в восстановленных картинках. Также возможно применение другой фильтрации (например, фильтрация периодически появляющихся помех) в качестве части пост-обрабатывающей фильтрации.
В зависимости от реализации и требуемого типа распаковки в декодере возможно добавление модулей, удаление модулей, разбиение их на множество модулей, объединение с другими модулями и/или замена подобными модулями. В альтернативных вариантах осуществления декодеры с разными модулями и/или с другими конфигурациями модулей выполняют один или несколько описанных здесь приемов. В конкретных вариантах осуществления декодеров, как правило, используют вариант или дополнительную версию декодера (600). Показанные здесь взаимосвязи между модулями в декодере (600) указывают общие информационные потоки в декодере; при этом другие взаимосвязи для простоты не показаны.
VII. Нововведения для режима внутреннего предсказания с блочным копированием
Этот раздел представляет различные нововведения для режима внутреннего предсказания с блочным копированием (BC). Некоторые из этих нововведений относятся к выбору значений блочного вектора (BV), в то время как другие относятся к закодированию/декодированию значений BV. Ряд других нововведений относится к интегрированию режима внутреннего предсказания с BC с ограниченным внутренним предсказанием, выбору прямого и обратного частотных преобразований при использовании режима внутреннего предсказания с BC, или петлевой деблокинг-фильтрации через границу блока в связи с режимом внутреннего предсказания с BC. Эти нововведения могут облегчить внутреннее предсказание с BC, которое является более эффективным в контексте показателя искажения в зависимости от скорости и/или в контексте эффективности вычислений для закодирования и декодирования. В частности, внутреннее предсказание с BC может улучшить показатель искажения в зависимости от скорости при закодировании конкретного «искусственно» созданного видеоконтента, такого как контент снимка экрана. Контент снимка экрана, как правило, включает в себя повторяющиеся структуры (например, графика, текстовые символы), которые обеспечивают возможности повышения эффективности внутреннего предсказания с BC. Контент снимка экрана обычно кодируется в формате (например, YUV 4:4:4 или RGB 4:4:4) с высоким разрешением дискретизации цветности, хотя также возможно его закодирование в формате с более низким разрешением дискретизации цветности (например, YUV 4:2:0).
А. Режим внутреннего предсказания с BC – Введение
В режиме внутреннего предсказания с BC значения отсчетов текущего блока картинки предсказываются с использованием значений отсчетов в одной и той же картинке. Вектор BV указывает смещение от текущего блока до области картинки, которая включает в себя значения отсчетов, использованных для предсказания. Как правило, значения отсчетов, использованных для предсказания, представляют собой ранее восстановленные значения отсчетов. Вектор BV передается в битовом потоке в качестве сигнализации. Внутреннее предсказание с DC является формой внутреннего предсказания для картинки, то есть, внутреннее предсказание с BC для блока картинки не использует какие-либо значения отсчетов, отличные от значений отсчетов в той же картинки.
m
n
m
n
m
n
На фиг. 7 показано внутреннее предсказание с BC для текущего блока (730) текущего кадра (710). Текущим блоком может быть блок кодирования (CB) единицы кодирования (CU), блок предсказания (PB) единицы предсказания (PU), блок преобразования (TB) единицы преобразования (TU) или другой блок. Размер текущего блока может составлять 64×64, 32×32, 16×16, 8×8 или некоторый другой размер. В более общем случае размер текущего блока составляет  × , где  и  являются каждое целым числом, и где  и могут быть равны друг другу или могут иметь разные значения. В качестве альтернативы текущий блок может иметь другую форму (например, область кодированного видеообъекта непрямоугольной формы).
0
0
j
j
j
0
j
0
Вектор BV (740) указывает смещение (или сдвиг) от текущего блока (730) до области (750) картинки, которая включает в себя значения отсчетов, использованных для предсказания. Положим, что верхнее левое положение текущего блока – это положение (x,y) в текущем кадре, и положим, что верхнее левое положение области внутреннего предсказания – это положение (x,y) в текущем кадре. Вектор BV указывает смещение (x-x, y-y). Например, если верхним левым положением текущего блока является положение (320, 256), а верхним левым положением области внутреннего предсказания является положение (295, 270), то значение BV составит (-25, 14). Отрицательное горизонтальное смещение указывает на положение влево от текущего блока, а отрицательное вертикальное смещение указывает на положение выше текущего блока.
В некоторых примерных реализациях область (750) внутреннего предсказания ограничена пределами того же слайса или плитки, что текущий блок (730). При указанном внутреннем предсказании с BC не используются значения отсчетов в других слайсах или плитках. На местоположение области 750 внутреннего предсказания могут быть наложены одно или несколько других ограничений (например, для диапазона поиска, касающегося использования восстановленных значений отсчетов кодированных внешним кодированием блоков.
Блоком с внутренним режимом предсказания с BC может быть блок CB, PB или другой блок. Когда это блок CB, вектор BV для этого блока может быть передан в качестве сигнализации на уровне CU (а для других блоков CB в CU используют тот же самый BV или его масштабированную версию). Либо, когда блок объявляется PB блоком вектор BV для этого блока может быть передан в качестве сигнализации на уровне PU (а для других блоков PB в PU используют тот же самый BV или его масштабированную версию). В более общем случае вектор BV для блока внутреннего предсказания с BC передается в качестве сигнализации на соответствующем синтаксическом уровне для данного блока.
Операции блочного копирования для предсказания согласно режиму внутреннего предсказания с BC могут выполняться на уровне CB (когда вектор BV передается в качестве сигнализации для каждого CB) или PB (когда вектор BV передается в качестве сигнализации для каждого PB). Например, положим, что блок CB 16×16 имеет один блок PB 16×16. Вектор BV (для PB) применяется к блочной копии области 16×16. Когда область внутреннего предсказания ограничена, чтобы избежать перекрытия предсказываемого блока 16×16, вектор BV имеет величину (абсолютное значение) по меньшей мере 16 по горизонтали или вертикали.
В качестве альтернативы, операции блочного копирования могут выполняться на уровне блоков TB в блоке PB или CB даже в том случае, когда BV передается в качестве сигнализации для PB или CB. Таким образом, вектор BV, применяемый для TB, может обращаться к позициям других блоков TB в том же самом PB или CB. Например, положим, что блок CB 16×16 имеет один блок PB 16×16, но он разделен на шестнадцать блоков TB 4×4 с целью кодирования/декодирования остатка. Вектор BV (для блока PB) применяется для блочного копирования области 4×4 для первого TB в порядке растрового сканирования, затем этот же BV используется для блочного копирования области 4×4 для второго TB в порядке растрового сканирования и т.д. Область 4×4, используемая в операциях BC для блока TB, может включать в себя положения в ранее восстановленных блоках TB в том же самом CB после объединения значений остатков с предсказанными значениями для этих ранее восстановленных блоков TB. (Вектор BV еще не привязан к каким-либо местам в блоке TB, для которого выполняется предсказание). Применение операций BC на уровне TB облегчает использование векторов BV, имеющих относительно малую величину.
Операции внутреннего предсказания с BC для блоков цветности единицы CU обычно соответствуют операциям внутреннего предсказания с BC для блока яркости единицы CU. Обычно сегментация блоков РB цветности и блоков TB цветности напрямую соответствует сегментации блоков PB яркости и блоков TB яркости в единице CU. При использовании формата видео YUV 4:4:4 размеры блоков PB и TB цветности соответствуют размерам соответствующих блоков PB и TB яркости. Когда форматом видео является формат YUV 4:2:0, ширина блоков PB и блоков TB цветности составляет половину ширины, а высота составляет половину высоты соответствующих блоков PB и TB яркости. Однако, если блок TB яркости имеет минимальный размер преобразования, то используется один блок TB цветности с этим минимальным размером преобразования.
В некоторых реализациях для CU с внутренним предсказанием с BC при внутреннем предсказании с BC для блока цветности в PU используется то же самое значение BV, что и во внутреннем предсказании с BC для блока яркости в PU, возможно после масштабирования и округления, когда данные цветности уменьшили разрешающую способность по сравнению с данными яркости (например, при использовании формата YUV 4:2:0). В качестве альтернативы возможна передача в качестве сигнализации других значений BV для блока яркости и блоков цветности единицы PU.
В некоторых реализациях, если режимом предсказания блока яркости единицы PU является внутреннее предсказание с BC, то режимом предсказания для блоков цветности единицы PU также будет внутреннее предсказание с BC. Например, сообщение о режиме предсказания передается в качестве сигнализации для PU. В качестве альтернативы, режимом предсказания может быть внутреннее предсказание с BC для блока яркости или блоков цветности единицы PU, но не для их обоих.
B. Ограничение поиска BV для режима внутреннего предсказания с BC
В некоторых примерных реализациях кодер ограничивает диапазон BV в соответствии с одним или несколькими ограничениями. Благодаря ограничению диапазона BV область восстановленных значений отсчетов, к которой обращаются путем быстрого доступа к памяти для внутреннего предсказания с BC во время закодирования и декодирования, может быть уменьшена, что открывает дорогу к снижению затрат на реализацию.
На фиг. 8 показаны примерные ограничения на диапазон поиска значений BV. Вдобавок к текущему блоку (830) текущего кадра (810) на фиг. 8 показан диапазон поиска, определенный двумя блоками CTB (820, 822). Текущий блок CTB (820) является частью текущей CTU и включает в себя текущий блок (830). При использовании CTB (822) слева текущий CTB (820) определяет диапазон поиска, в котором могут быть найдены допустимые векторы BV для текущего блока (830). Векторы (842, 844) относятся к областям, находящимся вне диапазона поиска, так что эти значения BV (842, 844) недопустимы.
m
n
CTB
CTB
BV
BV
0
0
sizey
sizey
В некоторых примерных реализациях диапазоном поиска для значений BV для текущего блока является текущий блок CTB и блок CTB слева от него. Например, блок CTB может иметь размер 64×64, 32×32 или 16×16 значений отсчетов, что дает диапазон поиска 128×64, 64×2 или 32×16 значений отсчетов. Для внутреннего предсказания с BC для текущего блока используют только одно значение отсчета в текущем блоке CTB и блоке CTB слева от него. Это упрощает реализацию кодера благодаря ограничению процесса поиска. Это также упрощает реализацию декодера благодаря ограничению количества значений отсчетов, которое буферизирует декодер в быстродействующей памяти для внутреннего предсказания. Другое ограничение состоит в том, что внутреннее предсказание не может обращаться к значениям отсчетов из другого слайса или плитки. Для текущего блока  × с верхним левым положением (x,y) и CTB, имеющих каждый размерность x, кодер может проверить указанные ограничения для двухмерного BV, имеющего горизонтальную компоненту [0] и вертикальную компоненту [1] следующим образом.
BV
-((x
CTB
)+CTB
)
0%
sizeY
sizeY
[0] >≥
0%
sizeY
BV[1] ≥ -(y CTB)
0
0
0
0
0
0
Значения отсчетов в положениях (x,y), (x+BV[0], y+BV[1]) и (x+BV[0]+m-1, y+BV[1]+n-1) должны быть в одном и том же слайсе.
0
0
0
0
0
0
Значения отсчетов в положениях (x,y), (x+BV[0], y+BV[1]) и (x+BV[0]+m-1, y+BV[1]+n-1) должны быть из одной и той же плитке.
На фиг. 9 показан прием (900) закодирования с режимом внутреннего предсказания с BC с одним или несколькими ограничениями на выбор значений вектора BV. Данный прием (900) может выполняться кодером, таким как кодер, описанный со ссылками на фиг. 3 или фигуры 5а-5b.
Для запуска процесса кодер определяет (910) вектор BV для текущего блока картинки. Текущим блоком может быть CB, PB или другой блок. Вектор BV указывает смещение до области внутри картинки. При определении BV кодер проверяет выполнение одного или нескольких ограничений.
0
0
width
height
0%
width
width
0%
height
width
width
height
height
Согласно одному возможному ограничению кодер проверяет диапазон значений отсчетов, используемых для внутреннего предсказания с BC. Кодер может проверить, что предполагаемая область внутреннего предсказания находится в пределах диапазона, определенного текущим блоком CTB и одним или несколькими другими блоками CTB (например, CTB слева от текущего CTB). Например, когда вектор BV имеет первую компоненту BV[0] и вторую компоненту BV[1], текущий блок имеет верхнее левое положение в положении (x,y), а каждый из блоков CTB имеет ширину CTBи высоту CTB, удовлетворяется ограничение: если BV[0] ≥ -((x CTB)+CTB) и BV[1] ≥ -(y CTB). Кодер может аналогичным образом проверить ограничение сверху на значения BV[0] и BV[1] в диапазоне поиска: BV[0]<(CTB - m –(x0% CTB)) и BV[1] < (CTB - n – (y0% CTB)). В качестве альтернативы, диапазон поиска может включать в себя больше или меньше блоков CTB, или диапазон поиска может быть определен каким-либо другим путем.
(x
,y
)
(x
+BV
, y
+BV
(x
+BV
+m-1, y
+BV
+n-1)
0
0
0
0
0
0
Согласно еще одному возможному ограничению кодер ограничивает поиск текущим слайсом и плиткой (то есть, текущий блок и область поиска являются частью не более чем одного слайса картинки, и не более одной плитки картинки). Кодер может проверить, являются ли верхнее левое положение текущего блока, верхнее левое положение возможной области внутреннего предсказания и нижнее правое положение возможной области внутреннего предсказания частью одного слайса и одной плитки. Например, выполняется ограничение: , [0][1]) и [0][1]являются частью одного слайса и одной плитки.
В качестве альтернативы, кодер может проверить другие и/или дополнительные ограничения.
Кодер выполняет (920) внутреннее предсказание с BС для текущего блока, используя вектор BV. Например, кодер выполняет внутреннее предсказание с BC для всего текущего блока. Либо кодер выполняет внутреннее предсказание с BC для множества блоков, связанных с текущим блоком (например, для множества блоков TB на поблочной основе, где блоки TB связаны с текущим блоком PB, который имеет BV).
Кодер выполняет закодирование (930) вектора BV. Например, кодер выполняет закодирование (930) вектора BV, как описано ниже. Кодер может повторить выполнение приема (900) для другого блока в режиме внутреннего предсказания с BC. При использовании внутреннего предсказания с BC кодер и декодер используют восстановленные значения отсчетов. Невосстановленные значения отсчетов могут быть представлены как части картинки, которые еще не были закодированы и восстановлены. Во избежание использования невосстановленных значений отсчетов для внутреннего предсказания с BC кодер может установить ограничение на допустимые значения вектора BV, с тем чтобы для внутреннего предсказания с BC в соответствии с BV использовались только действительно ранее восстановленные значения отсчетов.
z
z
(x
+BV
+m-1, y
+BV
+n-1)
z
(x
,y
)
BV
+m≤0
BV
+n≤
0
0
0
0
В некоторых примерных реализациях кодер проверяет значение BV, учитывая порядки -сканирования текущего блока и блока, содержащего нижнее правое положение предполагаемой области внутреннего предсказания. В частности, кодер проверяет, меньше ли порядок -сканирования блока, содержащего позицию [0][1], чем порядок -сканирования блока, содержащего . Если да, то блок, который содержит нижнее правое положение области внутреннего предсказания, был ранее восстановлен (и, следовательно, может остаться в области внутреннего предсказания). Вектор BV также удовлетворяет по меньшей мере одному из условий [0]и/или[1]0, что гарантирует отсутствие перекрытия области внутреннего предсказания областью внутреннего предсказания текущего блока.
z
z
z
z
z
z
z
Порядок -сканирования следует заданной последовательности блоков, на которые разделена картинка. На фиг. 10 показан примерный порядок (1000) -сканирования для текущего блока (1020) и блоков, которые могли бы включать в себя нижнее правое положение области внутреннего предсказания для возможного вектора BV. Текущим блоком (1030) может быть блок CB, блок PB или другой блок. Порядки -сканирования обычно выделяются для блоков последовательно слева направо по строке, с повторением в последующих строках сверху вниз. Когда блок разделен на отдельные части, порядки -сканирования присваивают в разделенном блоке рекурсивно. Для реализаций закодирования/декодирования согласно стандарту HEVC, порядок -сканирования определяет сканирование от CTB к CTB с использованием шаблона растрового сканирования CTB (слева направо в одной строке CTB, с повторением на последующих строках CTB сверху вниз). Если блок CTB разделен на отдельные части, порядок -сканирования соответствует шаблону растрового сканирования для блоков CB квадродерева в разделенном CTB. И наконец, если CB разделен на отдельные части (например, на множество блоков CB или множество блоков PB), то порядок -сканирования соответствует шаблону растрового сканирования для блоков внутри разделенного блока CB.
В качестве альтернативы, во избежание использования невосстановленных значений отсчетов для внутреннего предсказания с BC кодер (и декодер) может заменить невосстановленные значения отсчетов значениями по умолчанию или в ином случае определенными значениями. На фигурах 11а и 11b показаны примеры областей внутреннего предсказания с невосстановленными значениями отсчетов, которые должны быть заменены заполняемыми значениями. На фиг. 11а область (1150) внутреннего предсказания для текущего блока (1130) включает в себя некоторые значения отсчетов в ранее восстановленной строке блоков, но также включает в себя невосстановленные значения отсчетов ниже этой строки. На фиг. 11b область (1152) внутреннего предсказания включает в себя некоторые значения отсчетов в ранее восстановленных блоках над текущим блоком (1130) и слева от текущего блока (1130), но также включают в себя некоторые невосстановленные значения отсчетов в текущем блоке (1130). Кодер (и декодер) могут заполнить невосстановленные значения отсчетов заранее определенным значением. Например, заранее определенное значение составляет 128 (серого) для значений отсчетов, имеющих глубину в битах, равную 8. Либо в качестве заранее определенного значения используется другое значение. Или, вместо заполнения заранее определенным значением невосстановленные значения отсчетов могут быть заполнены посредством расширения или интерполяции по горизонтали и вертикали, либо посредством какого-либо другого вида расширения или интерполяции, такого как угловое направленное расширение, расширение с подбором планарной поверхности или расширение, использующее среднее значение некоторых доступных восстановленных значений отсчетов. В указанном случае кодер может проверить ограничение, с тем чтобы значения отсчетов, находящиеся вне диапазона поиска, не были использованы для внутреннего предсказания с BC. кодировщик также может предоставить синтаксическую информацию в данных кодированного битового потока для управления процессом заполнения невосстановленных значений отсчетов; например, путем посылки постоянного значения, подлежащего использованию, посылки индикатора угла предсказания для углового направленного расширения или путем посылки индикатора для выбора между множеством способов расширения.
Во время закодирования кодер может заполнить невосстановленные значения отсчетов области внутреннего предсказания подставляемыми значениями (например, на основе интерполяции или экстраполяции на действительных восстановленных значениях отсчетов) или заполнить значения отсчетов заранее определенным значением (например, значение серого) в качестве части процесса внутреннего предсказания с BC. Во время декодирования таким же образом декодер может заполнить невосстановленные значения отсчетов области внутреннего предсказания подставляемыми значениями или заполнить значения отсчетов заранее определенным значением в качестве части процесса внутреннего предсказания с BC.
m
n
m
n
BV
m
BV
n
m
n
m
n
BV
m
BV
n
BV
m
BV
n
m
n
В качестве альтернативы, когда внутреннее предсказание с BC может выполняться на блочной основе (для блоков TB) (смотри раздел G), кодер и декодер могут проверить наличие возможного перекрытия между областью внутреннего предсказания и текущим блоком (TB), а затем использовать результаты этой проверки для решения вопроса о том, следует ли разделить текущий блок TB на более мелкие блоки TB, для применения операции внутреннего предсказания с BC. Положим, что текущий блок TB имеет размер x, где  и  могут быть равны друг другу или могут иметь разные значения. Если [0] > - и [1] > -, то область внутреннего предсказания перекрывает текущий блок TB  × , что представляет проблему, если текущий блок TB  ×  разделен на меньшее количество TB для применения операций внутреннего предсказания с BC. Таким образом, если [0] > - и [1] > -, то кодер и декодер разделяет текущий блок TB на более мелкие блоки TB. Проверяется аналогичные условие (например, рекурсивно проверяется) для более мелких блоков TB, которые могут быть дополнительно разделены, если [0] > - и [1]> - для более мелких значений  и  после разделения.
Например, положим, что вектор BV для блока PB равен (-9, -5), а текущий блок TB представляет собой блок 32×32. Кодер и декодер определяют, что 9 > -32, и что -5 > -32, а это указывает на перекрытие областью внутреннего предсказания (чей верхний левый угол смещен: -9, -5) текущего блока TB 32×32. Кодер и декодер разделяют блок TB 32×32 на четыре блока TB 16×16. Для каждого из блоков TB 16×16 кодер и декодер определяют, что -9> -16, и что -5> -16, что указывает на перекрытие областью внутреннего предсказания (чей верхний левый угол смещен: -9, -5) текущего блока TB 16×16. Для блока TB 8×8 вектор BV (-9, -5) не является проблемой, так как блок TB 8×8 не подвергается дополнительному разделению.
В этом сценарии, когда блок TB разделяется из-за значения BV и размера данного блока TB, кодер может пропустить сигнализацию о значении флага, который, в противном случае сообщал бы о том, разделять ли текущий блок TB на более мелкие блоки TB. Битовый поток закодированных данных не содержит значения флага, указывающее декодеру о необходимости разделения текущего блока TB на более мелкие блоки TB. Вместо этого декодер может сделать вывод, что блок TB следует разделить из-за значения BV и размера этого блока TB. Это поможет сэкономить биты, которые, в противном случае, были бы потрачены на передачу сигнальной информации о разделении блоков TB.
С. Режим внутреннего предсказания с BC, если разрешено ограниченное внутреннее предсказание
В некоторых примерных реализациях процедура внутреннего предсказания с BC выполняется в зависимости от того, разрешено ли ограниченное внутреннее предсказание. Ограниченное внутреннее предсказание – это настройка, используемая для управления устойчивостью к ошибкам, которые могут попасть в закодированные видеоданные (например, из-за потерь пакетов или инвертирования бита из-за помех). Ограниченное внутреннее предсказание вводит ограничение на то, какие восстановленные значения отсчетов могут быть использованы для внутреннего предсказания. Когда ограниченное внутреннее предсказание разрешено, восстановленные значения отсчетов из кодированных внешним кодированием блоков не могут быть использованы для внутреннего предсказания с BC или внутреннего пространственного предсказания. Флаг в битовом потоке может указывать, разрешено ли ограниченное внутреннее предсказание.
На фиг. 12 показан прием (1200) использования режима внутреннего предсказания с BC, когда ограниченное внутреннее предсказание может быть разрешено. Кодер, такой как кодер, описанный со ссылками на фиг. 3 или фигуры 5а-5b, может выполнить прием (1200). Либо этот прием (1200) может выполнить декодер, такой как декодер, описанный со ссылками на фиг. 4 или фиг. 6.
Кодер или декодер определяет (1210), разрешено ли ограниченное внутреннее предсказание. Например, кодер или декодер проверяет значение флага, который управляет возможностью разрешения ограниченного внутреннего предсказания. Этот флаг может быть передан в качестве сигнализации как часть набора параметров картинки или на каком-либо другом уровне.
Кодер или декодер (1220) выполняет внутреннее предсказание с BC для текущего блока по меньшей мере частично в зависимости от того, разрешено ли ограниченное внутреннее предсказания. Имеется несколько подходов к настройке внутреннего предсказания с BC в зависимости от того, разрешено ли ограниченное внутреннее предсказание, как подробно описывается ниже. Кодер или декодер может повторять указанный прием (1200) для другого блока режима внутреннего предсказания с BC.
Согласно одному подходу, когда кодер определяет BV для текущего блока, если разрешено ограниченное внутреннее предсказание, то кодер проверяет, что ни одно значение отсчета из возможной области внутреннего предсказания не является восстановленным значением отсчета из кодированного внешним кодированием блока. Если ограниченное внутреннее предсказание не разрешено, то это ограничение не применяется, и внутреннее предсказание с BC может использовать восстановленные значения отсчетов из кодированного внешним кодированием блока.
0
0
0
0
0
На фиг. 13 это ограничение показано на допустимых значениях BV, когда разрешено ограниченное внутреннее предсказание. Использование векторов BV (1342, 1344) для областей внутреннего предсказания в кодированных (с применением внутреннего кодирования) блоках разрешено независимо от того, как они были кодированы (с использованием внутреннего пространственного предсказания или внутреннего предсказания с BC). Использование векторов BV (1346, 1348) для областей внутреннего предсказания, которые целиком или частично входят в кодированный внешним кодированием блок ) не разрешается. Например, если ограниченное внутреннее предсказание разрешено, то при определении BV для текущего блока кодер проверяет наличие какого-либо значения p[x][y] отсчета из возможной области внутреннего предсказания в кодированном (с применением внутреннего кодирования) блоке. То есть, для текущего блока m х n c верхним левым положением в (x, y) кодер проверяет это условие для всех p[x][y] с x=x+BV[0]…x0+BV[0]+m-1 и y=y+BV[1]…y+BV[1]+n-1.
В другом подходе вместо восстановленных значений отсчетов из кодированного внешним кодированием блока используются заполненные значения отсчетов, если ограниченное внутреннее предсказание разрешено. Если ограниченное внутреннее предсказание разрешено, то внутреннее предсказание с BC включает в себя определение заполняемого значения отсчета или подставляемого значения отсчета (путем экстраполяции или интерполяции) вместо любого значения отсчета из области внутреннего предсказания, которое является восстановленным значением отсчета из кодированного внешним кодированием блока.
В еще одном подходе, если ограниченное внутреннее предсказание разрешено, то внутреннее предсказание с BC не разрешается в слайсах, не связанных с внутренним предсказанием. Внутреннее предсказание с BC разрешено для слайсов, относящихся к внутреннему предсказанию (которые имеют контент, кодированный с применением внутреннего предсказания) и для слайсов, не связанных с внутренним предсказанием, когда ограниченное внутреннее предсказание не разрешено. Этот подход показан на фиг. 14. На этой фигуре условие в синтаксической таблице (1400) указывает наличие или отсутствие синтаксических элементов intra_bc_flag, используемых для внутреннего предсказания с BC. Даже в том случае, если внутреннее предсказание с BC разрешено, (флаг intra_block_copy_enabled_flag равен 1) флаг внутреннего предсказания с BC передается в качестве сигнализации только, если текущий слайс является слайсом внутреннего предсказания (slice_type равен 1), или ограниченное внутреннее предсказание не разрешено (constrained_intra_pred_flag равен 0).
D. Закодирование и декодирование значений BV
В некоторых примерных реализациях двумерные значения BV эффективно кодируют путем использования вероятностей появления значений для первой компоненты при заданном значении для второй компоненты.
На фигурах 15а и 15b показаны примерные диапазоны значений BV со свойствами, которые могут быть использованы при закодировании. На фигурах 15а и 15b вектор BV найден для текущего блока m х n (1530). Этот вектор BV имеет горизонтальную компоненту BV[0] и вертикальную компоненту BV[1]. Внутреннее предсказание с BС ограничено только использованием действительных восстановленных значений отсчетов. (Альтернативные варианты, в которых разрешены другие значения BV, относящиеся к невосстановленным значениям отсчетов, рассмотрены в конце этого раздела)
Поскольку при внутреннем предсказании с BC используются действительные восстановленные значения отсчетов, значения BV в диапазоне, где BV[0]> -m и BV[1]> -n, не разрешаются. В этом диапазоне возможные области внутреннего предсказания будут содержать по меньшей мере некоторые невосстановленные значения отсчетов.
Как показано на фиг. 15а, когда BV[1]≤-n, BV[0] может иметь положительное или отрицательное значение. Однако, когда BV[1]> -n, разрешенные векторы BV имеют BV[0]≤-m (в предположении, что внутреннее предсказание с BC ограничено только использованием действительных восстановленных значений отсчетов). Горизонтальная компонента вектора BV может быть скорректирована с использованием значения сдвига. Это повышает эффективность кодирования в типовых схемах энтропийного кодирования, поскольку близкие к нулю значения кодируются с использованием меньшего количества бит. Например, вместо прямого кодирования BV[0] кодируется горизонтальная компонента в виде DV[0]=BV[0]+m. Значение DV[0] ближе к 0, чем BV[0], и, как правило, кодируется с использованием меньшего количества бит. При декодировании DV[0] из битового потока BV[0] может быть восстановлено в виде DV[0]-m. В частности, вектор BV восстанавливается следующим образом. Сначала декодируется BV[1]. Если BV[1]> -n, то тогда BV[0]=DV[0]-m. В противном случае (когда BV[1]≤-n), BV[0]=DV[0].
BV
m
BV
BV
m
BV
n
DV
BV
n
DV
BV
DV
n
Подобным же образом, как показано на фиг. 15b, когда [0]≤-, [1] может иметь положительное или отрицательное значение. Однако, когда [0]> -, разрешенные векторы BV имеют [1]≤- (в предположении, что внутреннее предсказание с BC ограничено только использованием действительных восстановленных значений отсчетов). Вертикальная компонента вектора BV может быть скорректирована с использованием значения сдвига, например, в виде[1]=[1]+. При декодировании [1] из битового потока [1] может быть восстановлено в виде [1]-.
m
n
В качестве альтернативы, вместо того, чтобы устанавливать значение сдвига на основе размера  и  текущего блока, это значение можно установить в битовом потоке (например, в наборе параметров последовательности, наборе параметров картинки или в заголовке слайса) или задать заранее определенное значение. Например, значение сдвига может быть установлено равным 8, 16 или некоторому другому значению. Скорректированные значения компонент BV станут ближе к нулю, чем они были бы в противном случае в большинстве случаев.
На фиг. 16 показан прием (1600) закодирования значений BV. Кодер, такой как кодер, описанный со ссылками на фиг. 3 или фигуры 5а-5b, может выполнить прием (1600).
Кодер определяет (1610) двумерный вектор BV для текущего блока картинки. Вектор BV имеет первую компоненту и вторую компоненту. Например, кодер выполняет поиск BV в диапазоне поиска, на который наложены одно или несколько ограничений, как было описано выше. Кодер выполняет (1620) внутреннее предсказание с BC для текущего блока, используя вектор BV. Например, кодер выполняет внутреннее предсказание с BC для всего текущего блока. Либо кодер выполняет внутреннее предсказание с BC для множества блоков, связанных с текущим блоком (например, для множества блоков TB на поблочной основе, где блоки TB связаны с текущим блоком PB, который имеет BV).
BV
BV
m
n
n
m
BV
n
BV
Кодер выполняет закодирование (1630) вектора BV. При закодировании вектора BV используются вероятности появления значений для первой компоненты при заданном значении для второй компоненты. В некоторых реализациях закодирования значения для первой компоненты вектора BV зависят от значения для второй компонента вектора BV. Кодер может сравнить значение для второй компоненты с первым значением сдвига, затем избирательно скорректировать значение для первой компоненты, используя второе значение сдвига. Например, первой компонентой является горизонтальная компонента [0], второй компонентой является вертикальная компонента [1], а текущий блок представляет собой блок размером  × . Первое значение сдвига зависит от , а второе значение сдвига зависит от . Если значение для вертикальной компоненты [1] больше, чем –, то значение для горизонтальной компоненты [0] увеличивают на m. После такой корректировки закодирование вектора BV может включать в себя двоичное арифметическое кодирование или энтропийное кодирование другого вида.
Кодер может повторить прием (1600) для другого блока режима внутреннего предсказания с BC.
На фиг. 17 показан прием (1700) для декодирования значений вектора BV. Прием (1700) может быть реализован декодером, таким как декодер, описанный со ссылками на фиг. 4 или фиг. 6.
Декодер выполняет декодирование (1710) двумерного вектора BV для текущего блока картинки. Вектор BV имеет первую компоненту и вторую компоненту. Декодер выполняет операции, обратные операциям закодирования BV, используя вероятности появления значений для первой компоненты при заданном значении для второй компоненты. Декодирование вектора BV может включать в себя двоичное арифметическое декодирование или энтропийное декодирование другого вида.
BV
BV
m
n
n
m
BV
n
BV
m
После двоичного арифметического декодирования или иного энтропийного декодирования корректируют значение для первой компоненты вектора BV. В некоторых реализациях декодирования значения для первой компоненты BV зависит от значения второй компоненты вектора BV. Декодер может сравнить значение для второй компоненты с первым значением сдвига, затем избирательно скорректировать значение для первой компоненты, используя второе значение сдвига. Например, первой компонентой является горизонтальная компонента [0], второй компонентной является вертикальная компонента [1], а текущий блок представляет собой блок  × . Первое значение сдвига зависит от , а второе значение сдвига зависит от . Если значение для вертикальной компоненты [1] превышает –, то значение для горизонтальной компоненты [0] уменьшают на .
Декодер выполняет (1720) внутреннее предсказание с BC для текущего блока, используя вектор BV. Например, декодер выполняет внутреннее предсказание с BC для всего текущего блока. Либо декодер выполняет внутреннее предсказание с BC для множества блоков, связанных с этим текущим блоком (например, для множества блоков TB на блочной основе, где блоки TB связаны с текущим блоком PB, имеющим вектор BV). Декодер может повторить этот прием (1700) для другого блока режима внутреннего предсказания с BC.
В качестве альтернативы для приемов (1600, 1700), показанных на фигурах 16 и 17, первой компонентой является вертикальная компонента BV[1], второй компонентой является горизонтальная компонента BV[0], первое значение сдвига зависит от m, а второе значение сдвига зависит от n. Если значение горизонтальной компоненты BV[0] превышает –m, то значение для вертикальной компоненты BV[1] увеличивают на n (во время закодирования) или уменьшается на n (во время декодирования).
Либо, что касается приемов (1600, 1700), показанных на фигурах 16 и 17, то первая компонента и вторая компонента могут кодироваться вместе с учетом отсутствия кодов по меньшей мере для некоторых комбинаций первой компоненты и второй компоненты. Например, кодер и декодер могут использовать кодовую таблицу с переменной длиной слова с кодами, отсутствующими для комбинаций первой компоненты и второй компоненты, которые находятся в диапазоне, ограничивающем текущий блок.
Если значения BV, относящиеся к областям внутреннего предсказания с невосстановленными значениями отсчетов, разрешены, то кодировщик и декодер могут скорректировать значение компоненты BV. Например, кодер может скорректировать значение для одной из компонент BV, чтобы приблизить ее к нулю в среднем, учитывая значение другой компоненты BV. Скорректированное значение компоненты BV может быть положительным, но более вероятно, что оно будет ближе к нулю, и поэтому ее закодирование потребует меньшее количество бит.
В примерных реализациях при внутреннем предсказании с BC используются целочисленные значения для вектора BV. Дробные значения смещения (и дробная интерполяция между восстановленными значениями отсчетов) не используются. В качестве альтернативы, векторы BV могут иметь дробные значения смещения.
x
BV
x
BV
В качестве альтернативы, когда диапазон поиска ограничен, при закодировании и декодировании значений BV можно использовать операцию свертки по модулю. Если значение компоненты BV указывает положение вне диапазона поиска, то эта компонента «циклически переходит» на противоположную сторону диапазона поиска и обработка продолжается с этого места. Это способствует более эффективному закодированию экстремальных значений смещений. Например, если положительное смещение, превышающее , приведет к значению [0], которое указывает на выход из диапазона поиска, то смещение  для [0] может быть использовано для индикации экстремального отрицательного значения на противоположной стороне диапазона поиска.
Помимо энтропийного кодирования/декодирования значений BV, которое включает в себя использование значений сдвига (как было описано выше), кодер и декодер могут использовать предсказание BV и/или режим объединения/состязательности BV при закодировании/декодировании значений BV.
Для базового предсказания BV во время закодирования и декодирования значение для текущего блока может быть предсказано на основе значений BV одного или нескольких предшествующих блоков. Значение BV соседнего блока (например, блока, находящегося слева от текущего блока) можно использовать для определения предиктора BV для значения BV текущего блока. Либо предиктор BV для значения BV текущего блока может представлять собой покомпонентную медиану или среднее из значений BV множества соседних блоков (например, блоков слева, над и слева выше текущего блока). Во время закодирования определяют отклонение BV, используя значение BV и предиктор BV, после чего выполняется закодирование отклонения BV. Во время декодирования восстановленное отклонение BV объединяется с предиктором BV.
Либо кодер и декодер определяют одно или несколько возможных значений BV для текущего блока из числа значений BV, использованных для восстановленных блоков, которые пространственно соседствуют с данным текущим блоком (например, блок слева от текущего блока, блок над текущим блоком и т.д.). Это возможное значение (значения) BV также может включать в себя одно или несколько значений BV, использованных для восстановленных блоков, которые временно соседствуют с текущим блоком, где временно соседствующий блок занимает соответствующее текущему блоку положение в другой картинке (например, в том же самом положении или с перекрытием). Список возможных значений (значения) BV определяется правилами во время закодирования и декодирования для исключения избыточных значений BV. Во время закодирования кодер может сообщить один или несколько синтаксических элементов, указывающих, какое из возможных значений BV следует использовать в качестве предиктора BV для текущего блока. В некоторых режимах этот предиктор BV можно использовать в качестве значения BV для текущего блока, что обеспечивает эффективное «слияние» значения BV текущего блока со значением BV соседнего блока, обеспечивая возможное значение BV. Либо кодер может определить и выполнить закодирование разности BV на основе значения BV и предиктора BV. Когда сообщается о разности BV, выбор предиктора BV может произойти автоматически (без передачи синтаксических элементов для выбора возможного значения BV). Во время декодирования декодер может получить один или несколько синтаксических элементов, указывающих, какое из возможных значений BV следует использовать в качестве предиктора BV для текущего блока. В некоторых режимах этот предиктор BV можно использовать в качестве значения BV для текущего блока, что обеспечивает эффективное «слияние» значения BV текущего блока со значением BV соседнего блока, обеспечивая возможное значение BV. Либо декодер может получить и декодировать отклонение BV, которое он объединяет с предиктором BV для восстановления значения BV. При передаче в качестве сигнализации значения отклонения BV, выбор предиктора BV может произойти автоматически (без передачи в качестве сигнализации синтаксических элементов для выбора возможного значения BV). Может быть обеспечен режим «пропуска» BV или «прямой» режим BV, в котором предиктор BV (выбранный согласно правилу) используют в качестве значения BV текущего блока, при отсутствии информации о значениях остатков, переданной в качестве сигнализации для текущего блока.
Е. Прямые и обратные преобразования для блоков режима внутреннего предсказания с BC
При использовании внутреннего предсказания с BC в некоторых примерных реализациях определенные размеры блоков остатков цветности кодируются, используя дискретное синусное преобразование (DST) или его целочисленную аппроксимацию, и декодируются, используя обратное DST или его целочисленную аппроксимацию. В частности, преобразование DST (или его целочисленная аппроксимация) и обратное преобразование DST (или его целочисленную аппроксимацию) используют для блоков яркости 4х4 значений остатков исходя из внутреннего предсказания с BC. В более общем случае при использовании внутреннего предсказания с BC кодер использует прямое преобразование первого типа («регулярное» преобразование) для некоторых размеров блоков яркости значений остатков на основе внутреннего предсказания с BC, и для блоков цветности, а декодер использует обратное преобразование первого типа («регулярное» обратное преобразование) для указанных блоков. Однако для других размеров блоков яркости значений остатков кодер использует прямое преобразование второго типа («альтернативное» преобразование) и использует обратное преобразование второго типа («альтернативное» обратное преобразование).
На фиг. 18 показана обобщенный технический прием (1800) для закодирования с использованием режима внутреннего предсказания с BC и альтернативных преобразований. Прием (1800) может быть выполнен кодером, таким как кодер, описанный со ссылками на фиг. 3 или фигуры 5а-5b.
Кодер выполняет предсказание (1810) значений отсчетов, используя режим внутреннего предсказания с BC, а затем определяет (1820) значения остатков на основе предсказанных значений отсчетов и исходных значений отсчетов.
Кодер проверяет (1825), выполняется ли закодирование специальных блоков (например, блоков яркости специального размера). Если да, то кодер применяет (1832) альтернативное прямое преобразование к значениям остатков для создания коэффициентов преобразования, которые подвергаются квантованию и энтропийному кодированию (1840). Например, кодер применяет преобразование DST, его целочисленную аппроксимацию или прямое преобразование другого типа к блокам 4×4 яркости значений остатков на основе внутреннего предсказания с BC. В противном случае, кодер применяет (1830) регулярное прямое преобразование к значениям остатков для создания коэффициентов преобразования, которые подвергаются квантованию и энтропийному кодированию 1840. Например, кодер применяет преобразование DСT, его целочисленную аппроксимацию или прямое преобразование другого типа к блокам других размеров значений остатков на основе внутреннего предсказания с BC и для блоков цветности. Кодер может повторить прием (1800) для другого блока режима внутреннего предсказания с BC.
На фиг. 19 показан обобщенный технический прием 1900 для декодирования с использованием режима внутреннего предсказания с BC и альтернативных обратных преобразований. Прием (1900) может быть выполнена декодером, таким как декодер, описанный со ссылками на фиг. 4 или фиг. 6.
Декодер выполняет энтропийное декодирование и обратное квантование (1910) коэффициентов преобразования. Декодер проверяет (1915), декодируются ли специальные блоки (например, блоки яркости специального размера). Если да, то декодер применяет (1922) альтернативное обратное преобразование к коэффициентам преобразования для создания значений остатков. Например, декодер применяет обратное преобразование DST, его целочисленную аппроксимацию или обратное преобразование другого типа для преобразования коэффициентов блоков 4х4 яркости значений остатков на основе внутреннего предсказания с BC. В противном случае, декодер применяет (1920) регулярное обратное преобразование к коэффициентам преобразования. Например, кодер применяет при обратном DCT, его целочисленной аппроксимации или обратном преобразовании иного типа к блокам других размеров на основе внутреннего предсказания с BC и блоков цветности. Декодер выполняет предсказание (1930) значений отсчетов, используя режим внутреннего предсказания с BC. Декодер объединяет (1940) значения остатков и предсказанные значения отсчетов для восстановления значений отсчетов. Декодер может повторить прием (1900) для другого блока режима внутреннего предсказания с BC.
F. Петлевая деблокинг-фильтрация для блоков режима внутреннего предсказания с BC
В некоторых примерных реализациях деблокинг-фильтрация через границу между блоками зависит от режима предсказания блоков (например, внутреннее пространственное предсказание, внутреннее предсказание с BC или внешнее предсказание). Также в некоторых примерных реализациях деблокинг-фильтрация через границу между блоками внутреннего предсказания с BC адаптируется в зависимости от значений BV.
Обычно деблокинг-фильтр избирательно применяется к значениям отсчетов, примыкающим к границе блока (например, PB, TB). Для блокирования или изменения фильтрации на границе кадра, границе слайса или границе плитки могут применяться специальные правила. Кодер или декодер устанавливает уровень для деблокинг-фильтрации, зависящий от различных факторов, в том числе, режима предсказания (внутреннее пространственное, внутреннее с BC, внешнее), значений опорного индекса и значений вектора движения (для кодированных внешним кодированием блоков), значений BV (для блоков, предсказанных с применением внутреннего предсказания с BC) и наличия/отсутствия ненулевых коэффициентов преобразования.
Положим, например, что блоки P и Q являются смежными блоками с общей границей, Если один или оба блока P и Q имеют режим внутреннего пространственного предсказания, то уровень фильтрации имеет первое значение (например, указывающее самую сильную фильтрацию). С другой стороны, если блоки P и Q кодированы оба с применением внешнего кодирования, оба предсказаны с применением внутреннего предсказания с BC, или один с применением внешнего кодирования, а другой с применением внутреннего предсказания с BC, то тогда уровень фильтрации имеет другое значение (например, указывающий умеренную фильтрацию или указывающий на ее отсутствие).
Если оба блока P и Q кодированы с применением внешнего кодирования, значение уровня фильтрации, которое указывает на умеренную фильтрацию, присваивается, если: (а) какой-либо блок имеет ненулевые коэффициенты преобразования; (b) значения опорного индекса для указанных двух блоков не одинаковы; (с) значения вектора движения для обоих блоков не одинаковы; или (d) разность между двумя компонентами вектора движения для другого блока превышает пороговое значение (например, один отсчет). В противном случае (условие не удовлетворяется) присваивается значение уровня фильтрации, которое указывает на отсутствие фильтрации.
P
Q
Если оба блока  и предсказаны с применением внутреннего предсказания с BC, то значение уровня фильтрации, которое указывает на умеренную фильтрацию, присваивается, если: (а) какой-либо блок имеет ненулевые коэффициенты преобразования; (b) значения BV для указанных двух блоков не одинаковы; или (с) разность между компонентами BV для любого блока превышает пороговое значение (например, один отсчет). В противном случае (условие не удовлетворяется) присваивается значение уровня фильтрации, указывающее на отсутствие фильтрации.
P
Q
P
Q
Если один из блоков  и кодирован с применением внешнего кодирования, а другой предсказан с применением внутреннего предсказания с BC, то значение уровня фильтрации, которое указывает на умеренную фильтрацию, присваивается, если: (а) какой-либо блок имеет ненулевые коэффициенты преобразования. В противном случае присваивается значение уровня фильтрации, указывающее на отсутствие фильтрации. В качестве альтернативы, если один из блоков  и кодирован с применением внешнего кодирования, а другой предсказан с применением внутреннего предсказания с BC, то уровень фильтрации может иметь первое значение (например, указывающее на самую сильную фильтрацию).
Что касается сильной и умеренной фильтрации, то ее можно дополнительно отрегулировать в зависимости от значений параметров квантования или других соображений. В качестве альтернативы, уровень фильтрации присваивают и/или регулируют в соответствии с другими правилами.
На фиг. 20 показаны примерные правила (2000) для изменения подхода к петлевой деблокинг-фильтрации в зависимости от режимов предсказания блоков. Если любой из двух смежных блоков имеет режим внутреннего пространственного предсказания, для границы между блоками кодер или декодер применяет первый подход к деблокинг-фильтрации (например, сильная фильтрация). В противном случае, если режимом предсказания для одного из упомянутых двух блоков является внешнее предсказание и режимом предсказания для другого блока является внутреннее предсказание с BC, то кодер или декодер применяет второй подход к деблокинг-фильтрации (например, умеренная фильтрация или отсутствие фильтрации в зависимости от наличия/отсутствия ненулевых уровней коэффициентов преобразования). В противном случае, если для обоих блоков режимом предсказания является внутреннее предсказание с BC, то кодер или декодер применяет третий подход к деблокинг-фильтрации (например, умеренная фильтрация или отсутствие фильтрации в зависимости от наличия/отсутствия ненулевых уровней коэффициентов преобразования и в зависимости от значений BV). В противном случае (режимом предсказания для обоих блоков является внешнее предсказание, на фиг. 20 не показанное), кодер или декодер применяет четвертый подход к деблокинг-фильтрации (например, умеренная фильтрация или отсутствие фильтрации в зависимости от наличия/отсутствия ненулевых уровней коэффициентов преобразования, значений опорного индекса и значений вектора движения). Для всех этих подходов фильтрация может быть дополнительно отрегулирована в зависимости от значений параметров квантования или других соображений.
На фиг. 21 показан прием (2100) для петлевой деблокинг-фильтрации для блока, имеющего режим внутреннего предсказания с BC. Этот прием (2100) может быть реализован кодером, таким как кодер, описанный со ссылками на фиг. 3 или фигуры 5а-5b. Либо прием (2100) может быть выполнен декодером, таким как декодер, описанный со ссылками на фиг. 4 или фиг. 6.
Кодер или декодер восстанавливает (2110) первый и второй блоки кадра, который включает в себя по меньшей мере несколько блоков с режимом внутреннего предсказания с BC.
Кодер или декодер выполняет петлевую деблокинг-фильтрацию через границу между первым и вторым блоками. Как часть петлевой деблокинг-фильтрации кодер или декодер определяет (2120) режим предсказания как для первого, так и для второго блока и использует (2130) подход к деблокинг-фильтрации, который по меньшей мере частично зависит от режима предсказания. В частности, если режимом предсказания как для первого, так и для второго блоков является внутреннее предсказание с BC, то кодер или декодер настраивает петлевую деблокинг-фильтрацию по меньшей мере частично на основе значений BV для первого и второго блоков соответственно.
Кодер или декодер может повторить прием (2100) для других блочных границ в кадре.
Что касается временных характеристик деблокинг-фильтрации (и других петлевых операций, таких как фильтрация SAO), связанной с внутренним предсказанием с BC, то в некоторых реализациях операции внутреннего предсказания с BC предшествуют операциям деблокинг-фильтрации и фильтрации SAO, применяемым для предшествующих частей картинки. Например, операции внутреннего предсказания с BC могут использовать запомненные копии значений отсчетов перед применением процессов фильтрации. Это исключает необходимость синхронизации процессов фильтрации с процессами внутреннего предсказания с BC. Это также предотвращает косвенные зависимости от значений отсчетов вне слайса, плитки и т.д. (или в кодированном внешним кодированием блоке, когда разрешено ограниченное внутреннее предсказание), когда при фильтрации используются указанные значения отсчетов.
В качестве альтернативы, операции внутреннего предсказания с BC следуют за операциями деблокинг-фильтрации и фильтрации SAO, применяемыми для предыдущих частей кадра. Для этого может потребоваться синхронизация операций фильтрации и предсказания, и оценка их зависимости от значений отсчетов в другом слайсе, плитке и т.д. С другой стороны, использование отфильтрованных значений отсчетов для внутреннего предсказания с BC может обеспечить эффективное сжатие в контексте показателя искажения, в зависимости от скорости передачи.
G. Примерная реализация, объединяющая функциональные возможности внутреннего предсказания с BC
Как упоминалось выше, изложенные функциональные возможности внутреннего предсказания с BC можно использовать по отдельности и избирательно. Либо эти функциональные возможности внутреннего предсказания с BC можно использовать в комбинации.
Например, в одной комбинированной реализации, которая обычно следует синтаксису стандарта HEVC, значение BV передается в качестве сигнализации для PU (которая может представлять собой CU или часть CU). Единица РU может включать в себя одну или несколько единиц TU. Процессы внутреннего предсказания с BC проходят на уровне блоков TB на поблочной основе с использованием значения BV, переданного в качестве сигнализации для PU. (Все блоки TB используют одно и то же значение BV, и внутреннее предсказание с BC для текущего блока TB может использовать восстановленные значения отсчетов или другие, более ранние блоки TB в той же самой единице CU) Значение BV может быть предсказано с использованием значений BV одной или нескольких соседних PU. Независимо от того, используется ли предсказание BV, значение BV (или значение отклонения BV) может быть кодировано с учетом допустимых значений BV (например, с учетом разрешенных значений горизонтальной/вертикальной компоненты или путем использования свертки по модулю при закодировании значения BV). Выбор значений BV ограничен: (а) так что кодеру запрещено выбирать значения BV, инициирующие значения отсчетов, которые находятся в областях, где еще не было закодирования/восстановления (то есть, значения отсчетов области внутреннего предсказания для текущего TB должны находиться в областях, перекрытых другими блоками TB, предшествующими текущему TB при декодировании порядка битового потока; то есть, для данного блока TB значение BV ограничено обращением к области вне данного TB); (b) для сокращения необходимого объема памяти в декодере (например, путем ограничения опорных значений, соответствующих значениям BV, чтобы не выходить за границы текущего CTB и одного или двух CTB слева от текущего CTB); (с) чтобы запретить обращение к значениям BV вне текущего слайса, вне текущей плитки или вне кадра; и (d) когда ограниченное внутреннее предсказание разрешено, для запрета использования кодером значений BV, которые ссылаются на значения отсчетов, для которых использовалось внешнее предсказание.
В контексте многих возможных вариантов осуществления, для которых могут быть применимы принципы раскрытого изобретения, следует понимать, что показанные варианты осуществления являются лишь предпочтительными примерами изобретения, и их не следует рассматривать как ограничение объема изобретения. Скорее, объем изобретения определяется нижеследующей формулой изобретения. Таким образом, авторы изобретения считают, что изобретением является все, что не выходит за рамки объема и существа изобретения, сформулированных в формуле изобретения.