ПРЕДСКАЗАНИЕ ВЕКТОРА БЛОКА В КОДИРОВАНИИ/ДЕКОДИРОВАНИИ ВИДЕО И ИЗОБРАЖЕНИЙ
BLOCK VECTOR PREDICTION IN VIDEO AND IMAGE CODING/DECODING

УРОВЕНЬ ТЕХНИКИ
[001] Инженеры используют сжатие (также называемое кодированием источника или шифрованием источника) для уменьшения битовой скорости (битрейта) цифрового видео. Сжатие уменьшает издержки хранения и передачи видеоинформации путем преобразования информации в форму с более низкой битовой скоростью. Распаковка (также называемая декодированием) воспроизводит версию исходной информации из сжатой формы. "Кодек" является системой кодера/декодера.
[002] За последние два десятилетия различные стандарты видеокодеков были приняты, включая стандарты ITU-T H.261, H.262 (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 (VC-1). Совсем недавно стандарт HEVC (ITU-T H.265 или ISO/IEC 23008-2) был одобрен. Расширения для стандарта HEVC (например, для масштабируемого кодирования/декодирования видео, для кодирования/декодирования видео с более высокой точностью в плане битовой глубины выборки или частоты дискретизации по цветности, или для многовидового кодирования/декодирования) в текущий момент разрабатываются. Стандарт видеокодека обычно определяет варианты для синтаксиса битового потока закодированного видео, детализируя параметры в битовом потоке, когда конкретные признаки используются в кодировании и декодировании. Во многих случаях стандарт видеокодека также обеспечивает подробности об операциях декодирования, которые декодер должен выполнять для достижения соответствующих результатов декодирования. Помимо стандартов кодека, различные запатентованные форматы кодека определяют другие варианты для синтаксиса битового потока закодированного видео и соответствующих операций декодирования.
[003] Предсказание внутри копии блока ("BC") является режимом предсказания, разрабатываемым для расширений HEVC. Для режима предсказания внутри BC значения выборки текущего блока картинки предсказываются с использованием ранее воспроизведенных значений выборки в той же самой картинке. Вектор блока ("BV") указывает смещение от текущего блока к некоторой области картинки, которая включает в себя ранее воспроизведенные значения выборки, используемые для предсказания. BV сигнализируется в битовом потоке. Предсказание внутри BC является формой предсказания внутри картинки - предсказание внутри BC для блока картинки не использует каких-либо значений выборки за исключением значений выборки в той же самой картинке.
[004] Как в текущий момент определено в стандарте HEVC и осуществляется в некоторых ссылочных программных средствах для стандарта HEVC, режим предсказания внутри BC имеет несколько проблем. В частности, значения BV не сигнализируются эффективно во многих ситуациях, и кодирование блоков с предсказуемым смещением BC не обрабатывается эффективно.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[005] В кратком изложении подробное описание представляет нововведения в области предсказания значений вектора блока ("BV") в течение кодирования или декодирования блоков с использованием предсказания внутри копии блока ("BC"). Например, некоторые из нововведений относятся к использованию элемента предсказания (предиктора) BV по умолчанию с ненулевым значением. Другие нововведения относятся к использованию выбранного одного из множества вариантов элемента предсказания BV для текущего блока. Дополнительные нововведения относятся к использованию режима пропуска, в котором текущий предсказанный внутри BC блок использует предсказанное значение BV. Во многих ситуациях нововведения улучшают эффективность кодирования значений BV или иным образом улучшают эффективность кодирования для предсказанных внутри BC блоков.
[006] Согласно первому аспекту нововведений, описанных здесь, кодер определяет элемент предсказания BV по умолчанию для текущего блока картинки. Элемент предсказания BV по умолчанию включает в себя компонент элемента предсказания BV с ненулевым значением. Например, один из вертикального и горизонтального компонентов BV элемента предсказания BV по умолчанию равен нулю, а другой имеет ненулевое значение. Кодер кодирует текущий блок с использованием элемента предсказания BV по умолчанию. Например, кодер выполняет предсказание внутри копии блока ("BC") с использованием значения BV для текущего блока, определяет дифференциал BV с использованием значения BV и элемента предсказания BV по умолчанию для текущего блока, затем кодирует дифференциал BV. Либо кодер просто выполняет предсказание внутри BC с использованием элемента предсказания BV по умолчанию.
[007] Соответствующий декодер определяет элемент предсказания BV по умолчанию для текущего блока картинки. Элемент предсказания BV по умолчанию включает в себя компонент элемента предсказания BV с ненулевым значением. Например, один из вертикального и горизонтального компонентов BV элемента предсказания BV по умолчанию равен нулю, а другой имеет ненулевое значение. Декодер декодирует текущий блок с использованием элемента предсказания BV по умолчанию. Например, декодер декодирует дифференциал BV для текущего блока, затем комбинирует декодированный дифференциал BV с элементом предсказания BV по умолчанию для воспроизведения значения BV для текущего блока. Декодер выполняет предсказание внутри BC с использованием значения BV. Либо декодер просто выполняет предсказание внутри BC с использованием элемента предсказания BV по умолчанию.
[008] Кодер или декодер может в зависимости от условий использовать элемент предсказания BV по умолчанию в зависимости от того, доступно ли фактическое значение BV для предыдущего блока картинки. Например, кодер/декодер проверяет, доступно ли фактическое значение BV для предыдущего блока картинки. Если да, фактическое значение BV для предыдущего блока используется в качестве элемента предсказания BV для текущего блока. Иначе элемент предсказания BV по умолчанию используется в качестве элемента предсказания BV для текущего блока. В некоторых осуществлениях фактическое значение BV для предыдущего блока доступно, если (1) предыдущий блок и текущий блок входят в состав заданного элемента дерева кодирования, и (2) режим предсказания предыдущего блока является режимом предсказания внутри BC.
[009] Согласно второму аспекту нововведений, описанных здесь, кодер использует предсказание BV для определения значения BV для текущего блока картинки. Значение BV для текущего блока указывает смещение к некоторой области внутри картинки. Кодер кодирует текущий блок с использованием внутренней BC со значением BV (в данном случае элемента предсказания BV). Кодер выводит в битовом потоке указание, что текущий блок закодирован в режиме пропуска, и битовый поток не имеет дифференциала BV и остаточных данных для текущего блока.
[010] Соответствующий декодер принимает из битового потока указание, что текущий блок картинки закодирован в режиме пропуска. Битовый поток не имеет дифференциала BV и остаточных данных для текущего блока. Декодер использует предсказание BV для определения значения BV для текущего блока. Декодер затем декодирует текущий блок с использованием предсказания внутри копии блока со значением BV (в данном случае элемента предсказания BV).
[011] Для пропущенного блока битовый поток может включать в себя значение индекса, которое указывает выбор варианта элемента предсказания BV, из набора множества вариантов элемента предсказания BV, для использования в качестве значения BV (в данном случае элемента предсказания BV) для текущего блока. Значение индекса может быть флаговым значением или целочисленным значением.
[012] Согласно третьему аспекту нововведений, описанных здесь, кодер определяет набор множества вариантов элемента предсказания BV для текущего блока картинки, затем выбирает один из вариантов элемента предсказания BV для использования для текущего блока. Кодер кодирует текущий блок с использованием выбранного варианта элемента предсказания BV, выводя в битовом потоке значение индекса, которое указывает выбранный вариант элемента предсказания BV.
[013] Соответствующий декодер принимает из битового потока значение индекса. Декодер определяет набор множества вариантов элемента предсказания BV для текущего блока картинки и, на основе значения индекса, выбирает один из вариантов элемента предсказания BV для использования для текущего блока. Декодер декодирует текущий блок с использованием выбранного варианта элемента предсказания BV.
[014] В некоторых случаях, битовый поток включает в себя дифференциал BV для текущего блока (который является блоком режима без пропуска, режима без объединения). Дифференциал BV указывает разницу между выбранным вариантом элемента предсказания BV и значением BV для текущего блока. В других случаях, текущий блок является блоком режима объединения, и битовый поток не имеет дифференциала BV для текущего блока, но может включать в себя остаточные данные для текущего блока. В дополнительных случаях, значение в битовом потоке указывает, что текущий блок является блоком режима пропуска. В этих случаях, битовый поток не имеет дифференциала BV для текущего блока, и битовый поток не имеет остаточных данных для текущего блока.
x
[015] В общем случае, множество вариантов элемента предсказания BV включает в себя вплоть до  фактических значений BV предыдущих блоков. Предыдущие блоки могут быть идентифицированы по меньшей мере частично на основе местоположения в окружении вокруг текущего блока (например, блоки слева, сверху и сверху справа от текущего блока). Либо предыдущие блоки могут быть идентифицированы по меньшей мере частично на основе порядка декодирования по сравнению с текущим блоком (например, последние три предсказанных внутри BC блока). Множество вариантов элемента предсказания BV могут также включать в себя один или несколько элементов предсказания BV по умолчанию.
[016] Нововведения для предсказания BV могут осуществляться в составе способа, в составе вычислительного устройства, выполненного с возможностью выполнения способа, или в составе материальных машиночитаемых носителей, хранящих машиноисполняемые инструкции для побуждения вычислительного устройства выполнять способ. Различные нововведения могут быть использованы в комбинации или отдельно. В частности, режим объединения для предсказания BV может быть использован в сочетании с элементами предсказания BV по умолчанию с ненулевым движением и/или режимом пропуска для предсказанных внутри BC блоков. Режим пропуска для предсказанных внутри BC блоков может быть использован в сочетании с элементами предсказания BV по умолчанию с ненулевым движением.
[017] Вышеупомянутые и другие цели, признаки и преимущества изобретения станут более очевидны из последующего подробного описания, которое осуществляется со ссылками на сопроводительные чертежи.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[018] Фиг.1 изображает схему примерной вычислительной системы, в которой некоторые описанные варианты осуществления могут осуществляться.
[019] Фиг.2a и 2b изображают схемы примерных сетевых сред, в которых некоторые описанные варианты осуществления могут осуществляться.
[020] Фиг.3 изображает схему примерной системы кодера, в сочетании с которой некоторые описанные варианты осуществления могут осуществляться.
[021] Фиг.4 изображает схему примерной системы декодера, в сочетании с которой некоторые описанные варианты осуществления могут осуществляться.
[022] Фиг.5a и 5b изображают схемы, иллюстрирующие примерный кодер видео, в сочетании с которым некоторые описанные варианты осуществления могут осуществляться.
[023] Фиг.6 изображает схему, иллюстрирующую примерный декодер видео, в сочетании с которым некоторые описанные варианты осуществления могут осуществляться.
[024] Фиг.7a-7d изображают схемы, иллюстрирующие предсказание внутри BC для блока картинки, предсказание BV для блока, элемент предсказания BV по умолчанию (0, 0) и элемент предсказания BV по умолчанию с ненулевым значением, соответственно.
[025] Фиг.8 и 9 изображают блок-схемы, иллюстрирующие методики для кодирования, которые включают в себя использование элемента предсказания BV по умолчанию с ненулевым значением.
[026] Фиг.10 и 11 изображают блок-схемы, иллюстрирующие методики для декодирования, которые включают в себя использование элемента предсказания BV по умолчанию с ненулевым значением.
[027] Фиг.12 и 13 изображают блок-схемы, иллюстрирующие методики для кодирования и декодирования, соответственно, которые включают в себя режим пропуска для предсказанных внутри BC блоков.
[028] Фиг.14 изображает схему, иллюстрирующую варианты элемента предсказания BV среди фактических значений BV предыдущих блоков в картинке.
[029] Фиг.15 изображает схему, иллюстрирующую варианты элемента предсказания BV среди фактических значений BV соседних блоков в картинке.
[030] Фиг.16a и 16b изображают блок-схемы, иллюстрирующие методики для кодирования, которые включают в себя выбор из множества вариантов элемента предсказания BV.
[031] Фиг.17a и 17b изображают блок-схемы, иллюстрирующие методики для декодирования, которые включают в себя выбор из множества вариантов элемента предсказания BV.
ПОДРОБНОЕ ОПИСАНИЕ
[032] Подробное описание представляет нововведения в области предсказания значений вектора блока ("BV") в течение кодирования или декодирования блоков с использованием предсказания внутри копии блока ("BC"). Например, некоторые из нововведений относятся к использованию элемента предсказания BV по умолчанию с ненулевым значением. Другие нововведения относятся к использованию выбранного одного из множества вариантов элемента предсказания BV для текущего блока. Дополнительные нововведения относятся к использованию режима пропуска, в котором текущий предсказанный внутри BC блок использует предсказанное значение BV. Во многих ситуациях нововведения улучшают эффективность кодирования значений BV, что может снизить битовую скорость и/или улучшить качество, или иным образом улучшить эффективность кодирования для предсказанных внутри BC блоков.
[033] Хотя операции, описанные здесь, местами описываются как выполняемые кодером или декодером видео, во многих случаях операции могут выполняться другим типом инструмента обработки мультимедиа (например, кодером или декодером изображений).
[034] Некоторые из нововведений, описанных здесь, иллюстрируются со ссылками на синтаксические элементы и операции, характерные для стандарта HEVC. Например, делается ссылка на предварительную версию JCTVC-O1005 стандарта HEVC - ("High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 5" ("Техническое описание текста расширений диапазона кодирования видео высокой Эффективности (HEVC): Предварительная версия 5"), JCTVC-O1005_v3, ноябрь 2013 г. Нововведения, описанные здесь, могут также осуществляться для других стандартов или форматов.
[035] В более общем случае, возможны различные альтернативы для примеров, описанных здесь. Например, некоторые из способов, описанных здесь, могут быть изменены путем изменения порядка описанных действий способов, путем разбиения, повторения или опускания конкретных действий способов и т. д. Различные аспекты раскрываемой технологии могут быть использованы в комбинации или отдельно. Различные варианты осуществления используют одно или несколько из описанных нововведений. Некоторые из нововведений, описанных здесь, решают одну или несколько из проблем, отмеченных в предшествующем уровне техники. Обычно заданная методика/инструмент не решает всех таких проблем.
I. Примерные вычислительные системы.
[036] Фиг.1 изображает обобщенный пример подходящей вычислительной системы (100), в которой несколько из описанных нововведений могут осуществляться. Вычислительная система (100) не предназначена для наложения какого-либо ограничения в отношении объема использования или функциональных возможностей, поскольку нововведения могут осуществляться в разнообразных универсальных или специализированных вычислительных системах.
[037] Со ссылками на фиг.1, вычислительная система (100) включает в себя один или несколько обрабатывающих элементов (110, 115) и память (120, 125). Обрабатывающие элементы (110, 115) исполняют машиноисполняемые инструкции. Обрабатывающий элемент может быть универсальным центральным процессором ("CPU"), процессором в специализированной интегральной цепи ("ASIC") или процессором любого другого типа. В многопроцессорной системе множество обрабатывающих элементов исполняют машиноисполняемые инструкции для увеличения производительности обработки. Например, фиг.1 изображает центральный процессор (110), а также графический обрабатывающий элемент или сопроцессорный элемент (115). Материальная память (120, 125) может быть энергозависимой памятью (например, реестрами, кэшем, RAM), энергонезависимой памятью (например, ROM, EEPROM, флэш-памятью и т. д.), или некоторыми их комбинациями, доступными обрабатывающему элементу(-ам). Память (120, 125) хранит программные средства (180), осуществляющие одно или несколько нововведений для предсказания вектора блока, в форме машиноисполняемых инструкций, подходящих для исполнения обрабатывающим элементом(-ами).
[038] Вычислительная система может иметь дополнительные признаки. Например, вычислительная система (100) включает в себя хранилище (140), одно или несколько устройств (150) ввода, одно или несколько устройств (160) вывода и одно или несколько соединений (170) связи. Механизм взаимного соединения (не показан), такой как шина, средство управления или сеть, взаимно соединяет компоненты вычислительной системы (100). Обычно программные средства операционной системы (не показаны) обеспечивают операционную среду для исполнения других программных средств в вычислительной системе (100), и координируют действия компонентов вычислительной системы (100).
[039] Материальное хранилище (140) может быть сменным или несменным и включает в себя магнитные диски, магнитные ленты или кассеты, CD-ROM, DVD или любой другой носитель, который может быть использован для хранения информации и к которому может осуществляться доступ внутри вычислительной системы (100). Хранилище (140) хранит инструкции для программных средств (180), осуществляющих одно или несколько нововведений для предсказания вектора блока.
[040] Устройством(-ами) (150) ввода может быть сенсорное устройство ввода, такое как клавиатура, мышь, стилус или трекбол, устройство голосового ввода, устройство сканирования или другое устройство, которое обеспечивает ввод в вычислительную систему (100). Для видео, устройством(-ами) (150) ввода могут быть камера, видеокарта, карта TV-тюнера или подобное устройство, которое принимает ввод видео в аналоговой или цифровой форме, или CD-ROM или CD-RW, который считывает ввод видео в вычислительную систему (100). Устройством(-ами) (160) вывода могут быть дисплей, принтер, динамик, средство записи CD или другое устройство, которое обеспечивает вывод из вычислительной системы (100).
[041] Соединение(-я) (170) связи обеспечивает связь через среду связи с другим вычислительным объектом. Среда связи переносит информацию, такую как машиноисполняемые инструкции, ввод или вывод аудио или видео или другие данные в модулированном сигнале данных. Модулированный сигнал данных является сигналом, одна или несколько из характеристик которого установлена или изменена таким образом, чтобы закодировать информацию в сигнале. В качестве примера и не ограничения, среда связи может использовать электрический, оптический, RF- или другие несущие каналы.
[042] Нововведения могут быть описаны в общем контексте машиночитаемых носителей. Машиночитаемые носители являются любыми доступными материальными носителями, к которым может осуществляться доступ внутри вычислительной среды. В качестве примера и не ограничения, при вычислительной системе (100) машиночитаемые носители включают в себя память (120, 125), хранилище (140) и комбинаций любых элементов из вышеперечисленных.
[043] Нововведения могут быть описаны в общем контексте машиноисполняемых инструкций, таких как включенные в программные модули, исполняемые в вычислительной системе на требуемом реальном или виртуальном процессоре. В общем случае, программные модули включают в себя подпрограммы, программы, библиотеки, объекты, классы, компоненты, структуры данных и т. д., которые выполняют конкретные задачи или осуществляют конкретные абстрактные типы данных. Функциональные возможности программных модулей могут комбинироваться или разбиваться между программными модулями в зависимости от желаемого в различных вариантах осуществления. Машиноисполняемые инструкции для программных модулей могут исполняться внутри локальной или распределенной вычислительной системы.
[044] Термины "система" и "устройство" используются здесь взаимозаменяемым образом. Если контекст явно не указывает обратного, никакой термин не подразумевает какого-либо ограничения для типа вычислительной системы или вычислительного устройства. В общем случае, вычислительная система или вычислительное устройство могут быть локальными или распределенными и могут включать в себя любую комбинацию специализированных аппаратных средств и/или универсальных аппаратных средств с программными средствами, осуществляющими функциональные возможности, описанные здесь.
[045] Раскрываемые способы могут также осуществляться с использованием специализированных вычислительных аппаратных средств, сконфигурированных для выполнения любого из раскрываемых способов. Например, раскрываемые способы могут осуществляться интегральной цепью (например, ASIC (такой как процессор цифровых сигналов ("DSP") ASIC, графический обрабатывающий элемент ("GPU") или программируемое логическое устройство ("PLD"), такое как программируемая пользователем вентильная матрица ("FPGA")), специально спроектированной или сконфигурированной для осуществления любого из раскрываемых способов.
[046] В целях представления подробное описание использует такие термины, как "определять" и "использовать", для описания компьютерных операций в вычислительной системе. Эти термины являются абстракциями высокого уровня для операций, выполняемых компьютером, и не должны быть спутаны с действиями, выполняемыми человеком. Фактические компьютерные операции, соответствующие этим терминам, варьируются в зависимости от осуществления.
II. Примерные сетевые среды.
[047] Фиг.2a и 2b изображают примерные сетевые среды (201, 202), которые включают в себя кодеры (220) видео и декодеры (270) видео. Кодеры (220) и декодеры (270) соединены по сети (250) с использованием надлежащего протокола связи. Сеть (250) может включать в себя Интернет или другую компьютерную сеть.
[048] В сетевой среде (201), изображенной на фиг.2a, каждый инструмент (210) связи в реальном времени ("RTC") включает в себя оба из кодера (220) и декодера (270) для двунаправленной связи. Заданный кодер (220) может производить выходной сигнал, согласующийся с вариацией или расширением стандарта HEVC (также известного как H.265), стандарта SMPTE 421M, стандарта ISO-IEC 14496-10 (также известного как H.264 или AVC), другого стандарта или патентованного формата, причем соответствующий декодер (270) принимает закодированные данные от кодера (220). Двунаправленная связь может быть частью видеоконференции, видеотелефонного вызова или другого сценария связи с двумя сторонами или с множеством сторон. Хотя сетевая среда (201) на фиг.2a включает в себя два инструмента (210) связи в реальном времени, сетевая среда (201) может вместо этого включать в себя три или более инструмента (210) связи в реальном времени, которые участвуют в связи с множеством сторон.
[049] Инструмент (210) связи в реальном времени управляет кодированием посредством кодера (220). Фиг.3 изображает примерную систему (300) кодера, которая может быть включена в инструмент (210) связи в реальном времени. В качестве альтернативы, инструмент (210) связи в реальном времени использует другую систему кодера. Инструмент (210) связи в реальном времени также управляет декодированием посредством декодера (270). Фиг.4 изображает примерную систему (400) декодера, которая может быть включена в инструмент (210) связи в реальном времени. В качестве альтернативы, инструмент (210) связи в реальном времени использует другую систему декодера.
[050] В сетевой среде (202), изображенной на фиг.2b, инструмент (212) кодирования включает в себя кодер (220), который кодирует видео для доставки к множеству инструментов (214) проигрывания, которые включают в себя декодеры (270). Однонаправленная связь может быть обеспечена для системы видеонаблюдения, системы наблюдения на основе веб-камеры, представления конференции удаленного настольного компьютера или других сценариев, в которых видео кодируется и посылается от одного местоположения к одному или нескольким другим местоположениям. Хотя сетевая среда (202) на фиг.2b включает в себя два инструмента (214) проигрывания, сетевая среда (202) может включать в себя больше или меньше инструментов (214) проигрывания. В общем, инструмент (214) проигрывания связывается с инструментом кодирования (212) для определения потока видео для инструмента (214) проигрывания для приема. Инструмент (214) проигрывания принимает поток, буферизует принятые закодированные данные на надлежащий период и начинает декодирование и проигрывание.
[051] Фиг.3 изображает примерную систему (300) кодера, которая может быть включена в инструмент (212) кодирования. В качестве альтернативы, инструмент (212) кодирования использует другую систему кодера. Инструмент (212) кодирования может также включать в себя логику управления на стороне сервера для руководства соединениями с одним или несколькими инструментами (214) проигрывания. Фиг.4 изображает примерную систему (400) декодера, которая может быть включена в инструмент (214) проигрывания. В качестве альтернативы, инструмент (214) проигрывания использует другую систему декодера. Инструмент (214) проигрывания может также включать в себя логику управления на стороне сервера для руководства соединениями с инструментом (212) кодирования.
III. Примерные системы кодера.
[052] Фиг.3 изображает структурную схему примерной системы (300) кодера, в сочетании с которой некоторые описанные варианты осуществления могут осуществляться. Система (300) кодера может быть универсальным инструментом кодирования с возможностью операции в любом из множества режимов кодирования, таких как режим кодирования с малой задержкой для связи в реальном времени, режим перекодирования и режим кодирования с более высокой задержкой, чтобы производить мультимедиа для проигрывания из файла или потока, или она может быть специализированным инструментом кодирования, выполненным с возможностью одного такого режима кодирования. Система (300) кодера может осуществляться в качестве модуля операционной системы в составе библиотеки приложения или в качестве самостоятельного приложения. В общем, система (300) кодера принимает последовательность видеокадров (311) источника от источника (310) видео и производит закодированные данные в качестве выводимых в канал (390). Закодированные данные, выводимые в канал, могут включать в себя содержимое, закодированное с использованием нововведений в предсказании BV, как описано здесь.
[053] Источником (310) видео может быть камера, карта тюнера, носители памяти или другой цифровой источник видео. Источник (310) видео производит последовательность видеокадров со скоростью кадров, например, 30 кадров в секунду. Используемый здесь термин "кадр" в общем случае ссылается на кодированные или воспроизведенные данные изображения источника. Для видео прогрессивной развертки, кадр является кадром видео прогрессивной развертки. Для чересстрочного видео, в примерных вариантах осуществления, из кадра чересстрочного видео устраняется чересстрочная развертка перед кодированием. В качестве альтернативы, два дополняющих друг друга поля чересстрочного видео кодируются вместе в качестве одного видеокадра или кодируются в качестве двух отдельно закодированных полей. Помимо указания видеокадра прогрессивной развертки или видеокадра чересстрочной развертки, термин "кадр" или "картинка" могут указывать одно непарное поле видео, дополняющую пару полей видео, плоскость объекта видео, которая представляет объект видео в некоторое заданное время, или область, представляющую интерес в большем изображении. Плоскость или область объекта видео могут входить в состав большего изображения, которое включает в себя множество объектов или областей сцены.
[054] Поступающий кадр (311) источника сохраняется во временной области (320) хранения памяти кадров источника, которая включает в себя множество областей (321, 322,..., 32n) хранения буфера кадров. Буфер (321, 322 и т. д.) кадров содержит один кадр источника в области (320) хранения кадра источника. После того как один или несколько из кадров (311) источника были сохранены в буферах (321, 322 и т. д.) кадров, средство (330) выбора кадра выбирает отдельный кадр источника из области (320) хранения кадра источника. Порядок, в котором кадры выбираются средством (330) выбора кадра для ввода в кодер (340), может отличаться от порядка, в котором кадры производятся источником (310) видео, например, кодирование некоторых кадров может быть задержано в порядке с той целью, чтобы обеспечить возможность некоторым последующим кадрам быть закодированными раньше и чтобы, таким образом, обеспечить временно обратное предсказание. Перед кодером (340) система (300) кодера может включать в себя препроцессор (не показан), который выполняет предварительную обработку (например, фильтрацию) выбранного кадра (331) перед кодированием. Предварительная обработка может включать в себя преобразование пространства цветов в первичные (например, яркость) и вторичные (например, различия цветности к красному и к синему) компоненты и обработку повторной дискретизации (например, для уменьшения пространственного разрешения компонентов цветности) для кодирования. Обычно перед кодированием видео преобразовано в пространство цветов, такое как YUV, в котором значения выборки компонента яркости (Y) представляют значения светлоты или интенсивности, а значения выборки компонентов цветности (U, V) представляют значения цветовых различий. Значения выборки цветности могут быть дискретизованы с понижением в более низкую частоту дискретизации по цветности (например, для формата YUV 4:2:0), или значения выборки цветности могут иметь то же самое разрешение, что и значения выборки яркости (например, для формата YUV 4:4:4). Или видео может быть закодировано в другом формате (например, формате RGB 4:4:4).
[055] Кодер (340) кодирует выбранный кадр (331), чтобы произвести кодированный кадр (341), и также производит сигналы (342) управляющей операции руководства памятью ("MMCO") или информацию набора опорных картинок ("RPS"). Если текущий кадр не является первым кадром, который был закодирован, при выполнении своего процесса кодирования кодер (340) может использовать один или несколько ранее закодированных/декодированных кадров (369), которые были сохранены во временной области (360) хранения памяти декодированных кадров. Такие сохраненные декодированные кадры (369) используются в качестве опорных кадров для межкадрового предсказания содержимого текущего кадра (331) источника. Информация (342) MMCO/RPS указывает декодеру, какие воспроизведенные кадры могут быть использованы в качестве опорных кадров и, таким образом, должны быть сохранены в области хранения кадра.
[056] В общем случае, кодер (340) включает в себя множество модулей кодирования, которые выполняют задачи кодирования, такие как разделение на сегменты (плитки), оценка внутреннего предсказания и предсказание, оценка и компенсация движения, частотные преобразования, квантование и энтропийное кодирование. Точные операции, выполняемые кодером (340), могут варьироваться в зависимости от формата сжатия. Формат выходных закодированных данных может быть вариацией или расширением формата HEVC (H.265), формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2 или MPEG-4), формата H.26x (например, H.261, H.262, H.263, H.264) или другого формата.
[057] Кодер (340) может разделять кадр на множество сегментов одного и того же размера или различных размеров. Например, кодер (340) разбивает кадр по строкам сегментов и столбцам сегментов, которые, с границами кадра, определяют горизонтальные и вертикальные границы сегментов внутри кадра, где каждый сегмент является прямоугольной областью. Сегменты часто используются для обеспечения опций для параллельной обработки. Кадр может также быть организован в качестве одного или нескольких секторов (слайсов), где сектором может быть весь кадр или область кадра. Сектор может быть декодирован независимо от других секторов в кадре, что улучшает устойчивость против ошибок. Содержимое сектора или сегмента дополнительно разделяется на блоки или другие наборы выборок в целях кодирования и декодирования.
[058] Для синтаксиса согласно стандарту HEVC кодер разбивает содержимое кадра (или сектор, или сегмент) на элементы дерева кодирования. Элемент дерева кодирования ("CTU") включает в себя значения выборки яркости, организованные в виде блока дерева кодирования ("CTB") яркости, и соответствующие значения выборки цветности, организованные в виде двух CTB цветности. Размер CTU (и его CTB) выбирается кодером и может быть, например, 64×64, 32×32 или 16×16 значений выборки. CTU включает в себя один или несколько элементов кодирования. Элемент кодирования ("CU") имеет блок кодирования ("CB") яркости и два соответствующих CB цветности. Например, CTU с CTB яркости 64×64 и двумя CTB цветности 64×64 (формат YUV 4:4:4) может быть разбит на четыре CU, причем каждый CU включает в себя CB яркости 32×32 и два CB цветности 32×32, и причем каждый CU, возможно, разбивается дополнительно на меньшие CU. Либо, в качестве другого примера, CTU с CTB яркости 64×64 и двумя CTB цветности 32×32 (формат YUV 4:2:0) может быть разбит на четыре CU, причем каждый CU включает в себя CB яркости 32×32 и два CB цветности 16×16, и причем каждый CU, возможно, разбивается дополнительно на меньшие CU. Наименьший допустимый размер CU (например, 8×8, 16×16) может быть просигнализирован в битовом потоке.
[059] В общем случае, 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 и т. д.
[060] Возвращаясь к фиг.3, кодер представляет внутренне кодированный блок кадра (331) источника в плане предсказания из других, ранее воспроизведенных значений выборки в кадре (331). Для предсказания внутри BC средство оценки внутри картинки оценивает смещение блока относительно других, ранее воспроизведенных значений выборки. Опорная область внутрикадрового предсказания является областью выборок в кадре, которые используются для генерирования значений BC-предсказания для блока. Область внутрикадрового предсказания может быть указана значением блока вектора ("BV") (определенным в оценке BV). Для внутреннего пространственного предсказания для блока средство оценки внутри картинки оценивает экстраполяцию соседних воспроизведенных значений выборки в блок. Средство оценки внутри картинки может выводить информацию предсказания (такую как значения BV для предсказания внутри BC или режима предсказания (направления) для внутреннего пространственного предсказания), которая энтропийно кодируется. Элемент предсказания внутрикадрового предсказания применяет информацию предсказания для определения значений внутреннего предсказания.
[061] Кодер (340) представляет межкадровый кодированный предсказанный блок кадра (331) источника в плане предсказания из опорных кадров. Средство оценки движения оценивает движение блока в отношении одного или нескольких опорных кадров (369). Когда множество опорных кадров используются, множество опорных кадров может быть от различных временных направлений или одного и того же временного направления. Опорная область предсказания с компенсацией движения является областью выборок в опорном кадре(-ах), которые используются для генерирования значений предсказания с компенсацией движения для блока выборок текущего кадра. Средство оценки движения выводит информацию движения, такую как информация вектора движения ("MV"), которая энтропийно кодируется. Компенсатор движения применяет MV к опорным кадрам (369) для определения значений предсказания с компенсацией движения для межкадрового предсказания.
[062] Кодер может определять различия (если имеются) между значениями предсказания блока (внутри или между) и соответствующими исходными значениями. Эти остаточные значения предсказания дополнительно кодируются с использованием частотного преобразования, квантования и энтропийного кодирования. Например, кодер (340) устанавливает значения для параметра квантования ("QP") для картинки, сегмента, сектора и/или другой части видео и квантует коэффициенты преобразования соответственно. Энтропийное средство кодирования кодера (340) сжимает квантованные значения коэффициентов преобразования, а также некоторую побочную информацию (например, информацию MV, значения индекса для элементов предсказания BV, дифференциалы BV, значения QP, решения о режиме, выборы параметров). Типичные методики энтропийного кодирования включают в себя экспоненциальное кодирование Голомба, кодирование Голомба-Райса, арифметическое кодирование, дифференциальное кодирование, кодирование Хаффмана, кодирование длин серий, кодирование из переменной длины в переменную длину ("V2V"), кодирование из переменной длины в фиксированную длину ("V2F"), кодирование Лемпеля-Зива ("LZ"), кодирование словаря, разделительное энтропийное кодирование интервала вероятности ("PIPE") и комбинации вышеперечисленного. Энтропийный кодер может использовать различные методики кодирования для различных видов информации, может применять множество методик в комбинации (например, путем применения кодирования Голомба-Райса, за которым следует арифметическое кодирование) и может выбирать из множества кодовых таблиц внутри конкретной методики кодирования.
[063] Адаптивный деблокинг-фильтр включается в цикл компенсации движения в кодере (340) для сглаживания неоднородностей на строках и/или столбцах границ блоков в декодированном кадре. Другая фильтрация (такая как фильтрация подавления реверберации, адаптивная контурная фильтрация ("ALF"), или адаптивная к выборке фильтрация смещения ("SAO"); не показаны) может в качестве альтернативы или дополнения применяться в качестве операций петлевой фильтрации.
[064] Кодированные кадры (341) и информация (342) MMCO/RPS (или информация, эквивалентная информации (342) MMCO/RPS, поскольку взаимозависимости и структуры упорядочивания для кадров уже известны в кодере (340)) обрабатываются посредством эмулятора (350) процесса декодирования. Эмулятор (350) процесса декодирования осуществляет некоторые из функциональных возможностей декодера, например задачи декодирования для воспроизведения опорных кадров. Способом, соответствующим информации (342) MMCO/RPS, эмулятор (350) процессов декодирования определяет, должен ли заданный кодированный кадр (341) быть воспроизведен и сохранен для использования в качестве опорного кадра в межкадровом предсказании последующих кадров, которые должны быть закодированы. Если кодированный кадр (341) должен быть сохранен, эмулятор (350) процесса декодирования моделирует процесс декодирования, который проводился бы декодером, который принимает кодированный кадр (341) и производит соответствующий декодированный кадр (351). Таким образом, когда кодер (340) использовал декодированный кадр(ы) (369), который был сохранен в области (360) хранения декодированного кадра, эмулятор (350) процесса декодирования также использует декодированный кадр(ы) (369) из области (360) хранения в составе процесса декодирования.
n
[065] Временная область (360) хранения памяти декодированных кадров включает в себя множество областей хранения буфера (361, 362,..., 36) кадров. Способом в соответствии с информацией (342) MMCO/RPS эмулятор (350) процесса декодирования управляет содержимым области (360) хранения для того, чтобы определять любые буферы (361, 362 и т. д.) кадров с кадрами, которые больше не необходимы кодеру (340), для использования в качестве опорных кадров. После моделирования процесса декодирования эмулятор (350) процесса декодирования сохраняет заново декодированные кадры (351) в буфере (361, 362 и т. д.) кадров, который был идентифицирован таким образом.
[066] Кодированные кадры (341) и информация (342) MMCO/RPS буферизуются во временной области (370) кодированных данных. Кодированные данные, которые агрегируются в области (370) кодированных данных, содержат, в составе синтаксиса элементарного битового потока кодированного видео, закодированные данные для одной или нескольких картинок. Кодированные данные, которые агрегируются в области (370) кодированных данных, могут также включать в себя метаданные мультимедиа, относящиеся к кодированным видеоданным (например, в виде одного или нескольких параметров в одном или нескольких сообщениях вспомогательной информации улучшения ("SEI") или сообщениях информации применимости видео ("VUI")).
[067] Агрегированные данные (371) из временной области (370) кодированных данных обрабатываются кодером (380) канала. Кодер (380) канала может объединять в пакеты и/или мультиплексировать агрегированные данные для передачи или хранения в качестве потока мультимедиа (например, согласно формату потока программы мультимедиа или формату транспортного потока, такому как ITU-T H.222.0 | ISO/IEC 13818-1, или формату транспортного протокола реального времени Интернета, такому как IETF RFC 3550), в случае чего кодер (380) канала может добавлять синтаксические элементы как часть синтаксиса потока передачи мультимедиа. Либо кодер (380) канала может организовывать агрегированные данные для хранения в качестве файла (например, согласно формату контейнера мультимедиа, такому как ISO/IEC 14496-12), в случае чего кодер (380) канала может добавлять синтаксические элементы как часть синтаксиса файла хранения мультимедиа. Либо, в более общем случае, кодер (380) канала может осуществлять один или несколько протоколов мультиплексирования системы мультимедиа или транспортных протоколов, в случае чего кодер (380) канала может добавлять синтаксические элементы как часть синтаксиса протокола(-ов). Кодер (380) канала обеспечивает выходной сигнал каналу (390), который представляет хранилище, соединение связи или другой канал для выходного сигнала. Кодер (380) канала или канал (390) могут также включать в себя другие элементы (не показаны), например, для кодирования с прямым исправлением ошибок ("FEC") и модуляции аналогового сигнала.
IV. Примерные системы кодера.
[068] Фиг.4 изображает структурную схему примерной системы (400) декодера, в сочетании с которой некоторые описанные варианты осуществления могут осуществляться. Система (400) декодера может быть универсальным инструментом декодирования с возможностью оперирования в любом из множества режимов декодирования, таких как режим декодирования с малой задержкой для связи в реальном времени и режим декодирования с более высокой задержкой для проигрывания мультимедиа из файла или потока, или она может быть специализированным инструментом декодирования, выполненным с возможностью одного такого режима декодирования. Система (400) декодера может осуществляться в качестве модуля операционной системы, в составе библиотеки приложения или в качестве самостоятельного приложения. В общем, система (400) декодера принимает кодированные данные из канала (410) и производит воспроизведенные кадры в качестве выходного сигнала для места (490) назначения вывода. Кодированные данные могут включать в себя содержимое, которое было закодировано с использованием нововведений в предсказании BV, как описано здесь.
[069] Система (400) декодера включает в себя канал (410), который может представлять хранилище, соединение связи или другой канал для кодированных данных в качестве входных. Канал (410) производит кодированные данные, которые было кодированы в канале. Декодер (420) канала может обрабатывать кодированные данные. Например, декодер (420) канала распаковывает из пакетов и/или демультиплексирует данные, которые были агрегированы для передачи или хранения в виде потока мультимедиа (например, согласно формату потока программы мультимедиа или транспортного потока, такому как ITU-T H.222.0 | ISO/IEC 13818-1, или формату транспортного протокола реального времени Интернета, такому как IETF RFC 3550), в случае чего декодер (420) канала может синтаксически анализировать синтаксические элементы, добавленные в составе синтаксиса потока передачи мультимедиа. Либо декодер (420) канала отделяет кодированные видеоданные, которые были агрегированы для хранения, в качестве файла (например, согласно формату контейнера мультимедиа, такому как ISO/IEC 14496-12), в случае чего декодер (420) канала может синтаксически анализировать синтаксические элементы, добавленные в составе синтаксиса файла хранения мультимедиа. Либо, в более общем случае, декодер (420) канала может осуществлять один или несколько протоколов демультиплексирования системы мультимедиа или транспортных протоколов, в случае чего декодер (420) канала может синтаксически анализировать синтаксические элементы, добавленные в составе синтаксиса протокола(-ов). Канал (410) или декодер (420) канала могут также включать в себя другие элементы (не показаны), например, для декодирования FEC и демодуляции аналогового сигнала.
[070] Кодированные данные (421), которые выводятся из декодера (420) канала, сохраняются во временной области (430) кодированных данных, пока не принято достаточное количество таких данных. Кодированные данные (421) включают в себя кодированные кадры (431) и информацию (432) MMCO/RPS. Кодированные данные (421) в области (430) кодированных данных содержат, в составе синтаксиса элементарного битового потока кодированного видео, кодированные данные для одной или нескольких картинок. Кодированные данные (421) в области (430) кодированных данных могут также включать в себя метаданные мультимедиа, относящиеся к закодированным видеоданным (например, в виде одного или нескольких параметров в одном или нескольких сообщениях SEI или сообщениях VUI).
[071] В общем случае, область (430) кодированных данных временно хранит кодированные данные (421), пока такие кодированные данные (421) не используются декодером (450). В этот момент кодированные данные для кодированного кадра (431) и информация (432) MMCO/RPS переносятся из области (430) кодированных данных к декодеру (450). Пока декодирование продолжается, новые кодированные данные добавляются в область (430) кодированных данных и самые старые кодированные данные, остающиеся в области (430) кодированных данных, переносятся к декодеру (450).
[072] Декодер (450) декодирует кодированный кадр (431), чтобы произвести соответствующий декодированный кадр (451). Если это уместно, при выполнении своего процесса декодирования декодер (450) может использовать один или несколько ранее декодированных кадров (469) в качестве опорных кадров для межкадрового предсказания. Декодер (450) считывает такие ранее декодированные кадры (469) из временной области (460) хранения памяти декодированных кадров. В общем случае, декодер (450) включает в себя множество модулей декодирования, которые выполняют задачи декодирования, такие как энтропийное декодирование, внутрикадровое предсказание, межкадровое предсказание с компенсацией движения, обратное квантование, обратные частные преобразования и объединение сегментов. Точные операции, выполняемые декодером (450), могут варьироваться в зависимости от формата сжатия.
[073] Например, декодер (450) принимает закодированные данные для сжатого кадра или последовательности кадров и производит выходной сигнал, включающий в себя декодированный кадр (451). В декодере (450) буфер принимает закодированные данные для сжатого кадра и, в надлежащее время, делает принятые закодированные данные доступными для энтропийного декодера. Энтропийный декодер энтропийно декодирует энтропийно кодированные квантованные данные, а также энтропийно кодированную побочную информацию, обычно применяя обратную операцию от энтропийного кодирования, выполняемого в кодере. Компенсатор движения применяет информацию движения к одному или нескольким опорным кадрам для формирования значений предсказания с компенсируемым движением для любых промежуточно кодированных блоков воспроизводимого кадра. Модуль внутрикадрового предсказания может пространственно предсказывать значения выборки текущего блока из соседних, ранее воспроизведенных значений выборки или, для предсказания внутри BC, предсказывать значения выборки текущего блока с использованием ранее воспроизведенных значений выборки области внутрикадрового предсказания в кадре. Область внутрикадрового предсказания может быть указана значением BV. Декодер (450) также воспроизводит остаточные значения предсказания. Обратный квантователь обратно квантует энтропийно декодированные данные. Например, декодер (450) устанавливает значения для QP для картинки, сегмента, сектора и/или другой части видео на основе синтаксических элементов в битовом потоке и обратно квантует коэффициенты преобразования, соответственно. Обратный частотный преобразователь преобразует квантованные данные частотной области в данные пространственной области. Для межкадровым образом предсказанного блока декодер (450) комбинирует воспроизведенные остаточные значения предсказания со значениями предсказания с компенсируемым движением. Декодер (450) может подобным образом комбинировать остаточные значения предсказания со значениями предсказания из внутреннего предсказания. Адаптивный деблокинг-фильтр включается в цикл компенсации движения в видеодекодере (450), чтобы сгладить неоднородность на строках и/или столбцах границ блоков в декодированном кадре (451). Другая фильтрация (такая как фильтрация подавления ревербераций, ALF или SAO-фильтрация; не показаны) может в качестве альтернативы или дополнения применяться в качестве операций фильтрации внутри цикла.
n
[074] Временная область (460) хранения памяти декодированных кадров включает в себя множество областей (461, 462,..., 46) хранения буфера кадров. Область (460) хранения декодированного кадра является примером буфера декодированных картинок. Декодер (450) использует информацию (432) MMCO/RPS для определения буфера (461, 462 и т. д.) кадров, в котором он может сохранить декодированный кадр (451). Декодер (450) сохраняет декодированный кадр (451) в этом буфере кадров.
[075] Секвенсор (480) вывода определяет, когда следующий кадр, который должен быть произведен в порядке вывода, доступен в области (460) хранения декодированного кадра. Когда следующий кадр (481), который должен быть произведен в порядке вывода, доступен в области (460) хранения декодированного кадра, он считывается секвенсором (480) вывода и выводится к пункту (490) назначения вывода (например, дисплею). В общем, порядок, в котором кадры выводятся из области (460) хранения декодированного кадра секвенсором (480) вывода, может отличаться от порядка, в котором кадры декодируются декодером (450).
V. Примерные видеокодеры.
[076] Фиг.5a и 5b изображают структурную схему обобщенного кодера (500) видео, в сочетании с которым некоторые описанные варианты осуществления могут осуществляться. Кодер (500) принимает последовательность картинок видео, включающую в себя текущую картинку, в качестве входного видеосигнала (505) и производит закодированные данные в битовом потоке (595) кодированного видео в качестве выходных данных.
[077] Кодер (500) основывается на блоках и использует формат блоков, который зависит от осуществления. Блоки могут дополнительно подразделяться на различных этапах, например, на этапах предсказания, частотного преобразования и/или энтропийного кодирования. Например, картинка может разделяться на блоки 64×64, блоки 32×32 или блоки 16×16, которые могут в свою очередь разделяться на меньшие блоки значений выборки для кодирования и декодирования. В осуществлениях кодирования для стандарта HEVC кодер разделяет картинку на CTU (CTB), CU (CB), PU (PB) и TU (TB).
[078] Кодер (500) сжимает картинки с использованием кодирования внутри картинки и/или кодирования между картинками. Многие из компонентов кодера (500) используются как для кодирования внутри картинки, так и для кодирования между картинками. Точные операции, выполняемые этими компонентами, могут варьироваться в зависимости от типа сжимаемой информации.
[079] Модуль (510) сегментирования опционально разделяет картинку на множество сегментов одного и того же размера или различных размеров. Например, модуль (510) сегментирования разбивает картинку по строкам сегментов и столбцам сегментов, которые, с границами картинок, определяют горизонтальные и вертикальные границы сегментов внутри картинки, где каждый сегмент является прямоугольной областью.
[080] Общее управление (520) кодированием принимает картинки для входного видеосигнала (505), а также обратную связь (не показана) от различных модулей кодера (500). В общем, общее управление (520) кодированием обеспечивает управляющие сигналы (не показаны) другим модулям (таким как модуль (510) сегментирования, преобразователь/средство масштабирования/квантователь (530), средство масштабирования/обратный преобразователь (535), средство (540) оценки внутри картинки, средство (550) оценки движения и переключатель "внутри/между") для установления и изменения параметров кодирования в течение кодирования. В частности, общее управление (520) кодированием может принимать решение, использовать ли и как использовать аспекты предсказания BV (например, режим пропуска с предсказанными значениями BV, режим объединения для предсказания BV) в течение кодирования. Общее управление (520) кодированием может также оценивать промежуточные результаты в течение кодирования, например, выполняя анализ отношения скорости к искажению. Общее управление (520) кодированием производит данные (522) общего управления, которые указывают решения, принятые в течение кодирования, так, чтобы соответствующий декодер мог принимать непротиворечивые решения. Данные (522) общего управления обеспечиваются средству форматирования заголовка/энтропийному кодеру (590).
[081] Если текущая картинка предсказывается с использованием предсказания между картинками, средство (550) оценки движения оценивает движение блоков значений выборки текущей картинки входного видеосигнала (505) в отношении одной или нескольких опорных картинок. Буфер (570) декодированных картинок буферизует одну или несколько воспроизведенных ранее кодированных картинок для использования в качестве опорных картинок. Когда множество опорных картинок используются, множество опорных картинок может быть с различных временных направлений или с одного и того же временного направления. Средство (550) оценки движения производит в качестве побочной информации данные (552) движения, такие как данные MV, значения индексов режима объединения и данные выбора опорной картинки. Данные (552) движения обеспечиваются средству форматирования заголовка/энтропийному кодеру (590), а также компенсатору (555) движения.
[082] Компенсатор (555) движения применяет MV к воспроизведенной опорной картинке(-ам) из буфера (570) декодированных картинок. Компенсатор движения (555) производит предсказания с компенсацией движения для текущей картинки.
[083] В отдельном пути внутри кодера (500) средство (540) оценки внутри картинки определяет, как выполнять предсказание внутри картинки для блоков значений выборки текущей картинки входного видеосигнала (505). Текущая картинка может быть целиком или частично кодирована с использованием кодирования внутри картинки. С использованием значений воспроизведения (538) текущей картинки, для внутреннего пространственного предсказания, средство (540) оценки внутри картинки определяет, как пространственно предсказать значения выборки текущего блока текущей картинки из соседних, ранее воспроизведенных значений выборки текущей картинки. Либо для предсказания внутри BC с использованием значений BV, средство (540) оценки внутри картинки оценивает смещение значений выборки текущего блока к различным областям-кандидатам внутри текущей картинки.
[084] Средство (540) оценки внутри картинки производит в качестве побочной информации данные (542) внутреннего предсказания, такие как информация, указывающая, использует ли внутреннее предсказание пространственное предсказание или же предсказание внутри BC (например, флаговое значение для каждого внутреннего блока), направление режима предсказания (для внутреннего пространственного предсказания) и значения BV (для предсказания внутри BC). Данные (542) внутреннего предсказания обеспечиваются средству форматирования заголовка/энтропийному кодеру (590), а также элементу (545) предсказания внутри картинки.
[085] Согласно данным (542) внутреннего предсказания, элемент (545) предсказания внутри картинки пространственно предсказывает значения выборки текущего блока текущей картинки из соседних, ранее воспроизведенных значений выборки текущей картинки. Либо, для предсказания внутри BC, элемент (545) предсказания внутри картинки предсказывает значения выборки текущего блока с использованием ранее воспроизведенных значений выборки области внутрикадрового предсказания, которая указывается значением BV для текущего блока. В некоторых случаях (например, для блока режима пропуска или блока режима объединения), значение BV может быть элементом предсказания BV (предсказанное значение BV). Когда данные цветности для картинки имеют то же самое разрешение, что и данные яркости (например, когда формат является форматом YUV 4:4:4 или форматом RGB 4:4:4), значение BV, которое применяется для блока цветности, может быть тем же самым, что и значение BV, применяемое для блока яркости. С другой стороны, когда данные цветности для картинки имеют уменьшенное разрешение по отношению к данным яркости (например, когда формат является форматом YUV 4:2:0), значение BV, которое применяется для блока цветности, может быть уменьшено по масштабу и, возможно, округлено для регулирования в отношении разницы в разрешении цветности (например, путем разделения вертикального и горизонтального компонентов значения BV на два и отбрасывания дробной части или округления их до целочисленных значений).
[086] Переключатель "внутри/между" выбирает значения предсказания с компенсацией движения или предсказания внутри картинки для использования в качестве предсказания (558) для заданного блока. Различие (если имеется) между блоком предсказания (558) и соответствующей частью исходной текущей картинки входного видеосигнала (505) обеспечивает значения остатка (518), для блока режима без пропуска. В течение воспроизведения текущей картинки, для блока режима без пропуска, воспроизведенные остаточные значения комбинируются с предсказанием (558), чтобы произвести воспроизведение (538) исходного содержимого из видеосигнала (505). В сжатии с потерями, однако, некоторая информация все равно теряется из видеосигнала (505).
[087] В преобразователе/средстве масштабирования/квантователе (530) частотный преобразователь преобразует видеоинформацию пространственной области в данные частотной области (т. е. спектральные данные, данные преобразования). Для кодирования видео на основе блоков частотный преобразователь применяет дискретное косинусное преобразование ("DCT"), его целочисленное приближение или другой тип прямого преобразования блоков (например, дискретное синусное преобразование или его целочисленное приближение) в блоки остаточных данных предсказания (или данных значения выборки, если предсказание (558) недействительно), производя блоки коэффициентов частотного преобразования. Кодер (500) может также иметь возможность указывать, что такой этап преобразования пропускается. Средство масштабирования/квантователь масштабирует и квантует коэффициенты преобразования. Например, квантователь применяет скалярное квантование зоны нечувствительности к данным частотной области с размером этапа квантования, который варьируется от кадра к кадру, от сегмента к сегменту, от сектора к сектору, от блока к блоку, на основе частоты или на другой основе. Данные (532) квантованного коэффициента преобразования обеспечиваются средству форматирования заголовка/энтропийному кодеру (590).
[088] В средстве масштабирования/обратном преобразователе (535) средство масштабирования/обратный квантователь выполняет обратное масштабирование и обратное квантование над квантованными коэффициентами преобразования. Обратный частотный преобразователь выполняет обратное частотное преобразование, производя блоки воспроизведенных остаточных значений предсказания или значений выборки. Для блока режима без пропуска кодер (500) комбинирует воспроизведенные остаточные значения со значениями (558) предсказания (например, значениями предсказания с компенсацией движения, значениями предсказания внутри картинки) для формирования воспроизведения (538). Для блока режима пропуска кодер (500) использует значения предсказания (558) в качестве воспроизведения (538).
[089] Для предсказания внутри картинки, значения воспроизведения (538) могут подаваться обратно средству (540) оценки внутри картинки и элементу (545) предсказания внутри картинки. Кроме того, значения воспроизведения (538) могут быть использованы для предсказания с компенсацией движения последующих картинок. Значения воспроизведения (538) могут дополнительно фильтроваться. Управление (560) фильтрацией определяет, как выполнять фильтрацию с устранением блочности (деблокинг-фильтрацию) и фильтрацию SAO над значениями воспроизведения (538), для заданной картинки видеосигнала (505). Управление (560) фильтрацией производит данные (562) управления фильтра, которые обеспечиваются средству форматирования заголовка/энтропийному кодеру (590) и средству объединения/фильтру(-ам) (565).
[090] В средстве объединения/фильтре(-ах) (565) кодер (500) объединяет содержимое от различных сегментов в воспроизведенную версию картинки. Кодер (500) выборочно выполняет деблокинг-фильтрацию и SAO-фильтрацию согласно данным (562) управления фильтра, для того, чтобы адаптивно сгладить неоднородности на границах в кадрах. Другая фильтрация (такая как фильтрация подавления реверберации или ALF; не показана) может применяться в качестве альтернативы или дополнения. Границы сегментов могут фильтроваться выборочно или не фильтроваться вообще в зависимости от установок кодера (500), и кодер (500) может обеспечивать синтаксис внутри кодированного битового потока для указания, была ли применена такая фильтрация или нет. Буфер (570) декодированных картинок буферизует воспроизведенную текущую картинку для использования в последующем предсказании с компенсацией движения.
[091] Средство форматирования заголовка/энтропийный кодер (590) форматирует и/или энтропийно кодирует общие управляющие данные (522), данные (532) квантованного коэффициента преобразования, данные (542) внутреннего предсказания, данные (552) движения и данные (562) управления фильтра. Для данных (542) внутреннего предсказания средство форматирования заголовка/энтропийный кодер (590) выбирает и энтропийно кодирует значения индекса элемента предсказания BV (для предсказания внутри BC), например, с использованием контекстно-адаптивного двоичного арифметического кодирования. Для блоков режима без пропуска, режима без объединения средство форматирования заголовка/энтропийный кодер (590) определяет дифференциалы BV для значений BV (по отношению к элементам предсказания BV для значений BV), затем энтропийно кодирует дифференциалы BV, например, с использованием контекстно-адаптивного двоичного арифметического кодирования. Для блока режима пропуска или блока режима объединения дифференциал BV опускается.
[092] Средство форматирования заголовка/энтропийный кодер (590) обеспечивает закодированные данные в битовом потоке (595) кодированного видео. Формат битового потока (595) кодированного видео может быть вариацией или расширением формата HEVC, формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2 или MPEG-4), формата H.26x (например, H.261, H.262, H.263, H.264) или другого формата.
[093] В зависимости от осуществления и желаемого типа сжатия модули кодера могут добавляться, опускаться, разбиваться на множество модулей, комбинироваться с другими модулями и/или замещаться подобными модулями. В альтернативных вариантах осуществления кодеры с другими модулями и/или другими конфигурациями модулей выполняют одну или несколько из описанных методик. Конкретные варианты осуществления кодеров обычно используют вариацию или дополненную версию кодера (500). Отношения, показанные между модулями внутри кодера (500), указывают общие потоки информации в кодере; другие отношения не показаны в целях упрощения.
VI. Примерные видеодекодеры.
[094] Фиг.6 изображает структурную схему обобщенного декодера (600), в сочетании с которым некоторые описанные варианты осуществления могут осуществляться. Декодер (600) принимает закодированные данные в битовом потоке (605) кодированного видео и производит выходной сигнал, включающий в себя картинки для воспроизведенного видео (695). Формат битового потока (605) кодированного видео может быть вариацией или расширением формата HEVC, формата Windows Media Video, формата VC-1, формата MPEG-x (например, MPEG-1, MPEG-2 или MPEG-4), формата H.26x (например, H.261, H.262, H.263, H.264) или другого формата.
[095] Декодер (600) основывается на блоках и использует блочный формат, который зависит от осуществления. Блоки могут дополнительно подразделяться на различных этапах. Например, картинка может разделяться на блоки 64×64, блоки 32×32 или блоки 16×16, которые могут в свою очередь разделяться на меньшие блоки значений выборки. В осуществлениях декодирования для стандарта HEVC картинка разделяется на CTU (CTB), CU (CB), PU (PB) и TU (TB).
[096] Декодер (600) распаковывает картинки с использованием декодирования внутри картинки и/или декодирования между картинками. Многие из компонентов декодера (600) используются как для декодирования внутри картинки, так и для декодирования между картинками. Точные операции, выполняемые этими компонентами могут варьироваться в зависимости от типа информации, которая распаковывается.
[097] Буфер принимает закодированные данные в битовом потоке (605) кодированного видео и делает принятые закодированные данные доступными для синтаксического анализатора/энтропийного декодера (610). Синтаксический анализатор/энтропийный декодер (610) энтропийно декодирует энтропийно кодированные данные, обычно применяя обратную операцию для энтропийного кодирования, выполняемого в кодере (500) (например, контекстно-адаптивное двоичное арифметическое декодирование). В результате синтаксического анализа и энтропийного декодирования, синтаксический анализатор/энтропийный декодер (610) производит данные (622) общего управления, данные (632) квантованного коэффициента преобразования, данные (642) внутреннего предсказания, данные (652) движения и данные (662) управления фильтра. Для данных (642) внутреннего предсказания, синтаксический анализатор/энтропийный декодер (610) энтропийно декодирует значения индекса элемента предсказания BV (для предсказания внутри BC), например, с использованием контекстно-адаптивного двоичного арифметического декодирования. Для блоков режима без пропуска, режима без объединения синтаксический анализатор/энтропийный декодер (610) также энтропийно декодирует дифференциалы BV для значений BV (например, с использованием контекстно-адаптивного двоичного арифметического декодирования), затем комбинирует дифференциалы BV с соответствующими элементами предсказания BV для воспроизведения значений BV. Для блока режима пропуска или блока режима объединения, дифференциал BV опускается из битового потока, и значение BV является просто элементом предсказания BV (например, указанным значением индекса элемента предсказания BV).
[098] Общее управление (620) декодированием принимает данные (622) общего управления и обеспечивает управляющие сигналы (не показаны) другим модулям (таким как средство масштабирования/обратный преобразователь (635), элемент (645) предсказания внутри картинки, компенсатор (655) движения и переключатель "внутри/между") для установления и изменения параметров декодирования в течение декодирования.
[099] Если текущая картинка предсказывается с использованием предсказания между картинками, компенсатор (655) движения принимает данные (652) движения, такие как данные MV, данные выбора опорной картинки и значения индексов режима объединения. Компенсатор (655) движения применяет MV к воспроизведенной опорной картинке(-ам) из буфера (670) декодированных картинок. Компенсатор (655) движения производит предсказания с компенсацией движения для промежуточно кодированных блоков текущей картинки. Буфер (670) декодированных картинок сохраняет одну или несколько ранее воспроизведенных картинок для использования в качестве опорных картинок.
[0100] В отдельном пути внутри декодера (600) элемент (645) предсказания внутрикадрового предсказания принимает данные (642) внутреннего предсказания, такие как информация, указывающая, использует ли внутреннее предсказание пространственное предсказание или предсказание внутри BC (например, флаговое значение на внутренний блок), направление режима предсказания (для внутреннего пространственного предсказания) и значения BV (для предсказания внутри BC). Для внутреннего пространственного предсказания, с использованием значений воспроизведения (638) текущей картинки, согласно данным режима предсказания, элемент (645) предсказания внутри картинки пространственно предсказывает значения выборки текущего блока текущей картинки из соседних, ранее воспроизведенных значений выборки текущей картинки. Либо, для предсказания внутри BC с использованием значений BV, элемент (645) предсказания внутри картинки предсказывает значения выборки текущего блока с использованием ранее воспроизведенных значений выборки области внутрикадрового предсказания, которая указывается значением BV для текущего блока.
[0101] Переключатель "внутри/между" выбирает значения предсказания с компенсацией движения или предсказания внутри картинки для использования в качестве предсказания (658) для заданного блока. Например, если следовать синтаксису HEVC, управление переключателем "внутри/между" может осуществляться на основе синтаксического элемента, закодированного для CU картинки, которая может содержать внутренне предсказанные CU и промежуточно предсказанные CU. Для блока режима без пропуска декодер (600) комбинирует предсказание (658) с воспроизведенными остаточными значениями, чтобы произвести воспроизведение (638) содержимого из видеосигнала. Для блока режима пропуска декодер (600) использует значения (658) предсказания в качестве воспроизведения (638).
[0102] Для воспроизведения остатка для блока режима без пропуска, средство масштабирования/обратный преобразователь (635) принимает и обрабатывает данные (632) квантованного коэффициента преобразования. В средстве масштабирования/обратном преобразователе (635) средство масштабирования/обратный квантователь выполняет обратное масштабирование и обратное квантование над квантованными коэффициентами преобразования. Обратный частотный преобразователь выполняет обратное частотное преобразование, производя блоки воспроизведенных остаточных значений предсказания или значений выборки. Например, обратный частотный преобразователь применяет обратное преобразование блока к коэффициентам частотного преобразования, производя данные значений выборки или остаточные данные предсказания. Обратное частотное преобразование может быть обратным DCT, его целым приближением или другим типом обратного частотного преобразования (например, обратное дискретное синус-преобразование или его целое приближение).
[0103] Для предсказания внутри картинки, значения воспроизведения (638) могут быть поданы обратно элементу (645) предсказания внутри картинки. Для предсказания внутри картинки, значения воспроизведения (638) могут дополнительно фильтроваться. В средстве объединения/фильтре(-ах) (665) декодер (600) объединяет содержимое из различных сегментов в воспроизведенную версию картинки. Декодер (600) выборочно выполняет деблокинг-фильтрацию и SAO-фильтрацию согласно данным (662) управления фильтра и принимает решение о фильтровой адаптации для того, чтобы адаптивным образом сгладить неоднородности на границах в кадрах. Другая фильтрация (такая как фильтрация подавления реверберации или ALF; не показана) может применяться в качестве альтернативы или дополнения. Границы сегментов могут выборочно фильтроваться или не фильтроваться вообще, в зависимости от установок декодера (600) или синтаксического указания внутри закодированных данных битового потока. Буфер (670) декодированных картинок буферизует воспроизведенную текущую картинку для использования в последующем предсказании с компенсацией движения.
[0104] Декодер (600) может также включать в себя фильтр постобработки. Фильтр (608) постобработки может включать в себя фильтрацию подавления реверберации, адаптивную фильтрацию Винера, фильтрацию воссоздания зернистости пленки, SAO-фильтрацию или другой вид фильтрации.
[0105] В зависимости от осуществления и желаемого типа распаковывания модули декодера могут добавляться, опускаться, разбиваться на множество модулей, комбинироваться с другими модулями и/или замещаться подобными модулями. В альтернативных вариантах осуществления декодеры с другими модулями и/или другими конфигурациями модулей выполняют одну или несколько из описанных методик. Конкретные варианты осуществления декодеров обычно используют вариацию или дополненную версию декодера (600). Отношения, показанные между модулями внутри декодера (600), указывают общие потоки информации в декодере; другие отношения не показаны в целях упрощения.
VII. Нововведения в предсказании вектора блока.
[0106] Этот раздел представляет различные признаки предсказания вектора блока ("BV"). Некоторые из признаков относятся к использованию элемента предсказания BV по умолчанию, в то время как другие признаки относятся к режиму объединения для элементов предсказания BV или режиму пропуска для предсказания внутри копии блока ("BC"). Эти признаки могут способствовать предсказанию внутри BC, которое более эффективно в плане производительности отношения скорости к искажению.
[0107] В частности, описанные нововведения могут улучшать производительность отношения скорости к искажению при кодировании конкретного "искусственно" созданного видеосодержимого, такого как содержимое захвата экрана. Содержимое захвата экрана обычно включает в себя повторяемые структуры (например, графику, текстовые знаки), которые обеспечивают возможности для предсказания внутри BC для улучшения выполнения. Содержимое захвата экрана обычно кодируется в формате (например, YUV 4:4:4 или RGB 4:4:4) с высоким разрешением дискретизации по цветности, хотя может также быть закодировано в формате с пониженным разрешением дискретизации по цветности (например, YUV 4:2:0). Общие сценарии для кодирования/декодирования содержимого захвата экрана включают в себя проведение конференции удаленного настольного компьютера и кодирование/декодирование графических накладных элементов на естественном видео или другом видео со "смешанным содержимым".
A. Режим предсказания внутри BC, значения BV и предсказание BV - Введение.
[0108] Для предсказания внутри BC значения выборки текущего блока картинки предсказываются с использованием значений выборки в той же самой картинке. Значение BV указывает смещение от текущего блока к области картинки, которая включает в себя значения выборки, используемые для предсказания. Значения выборки, используемые для предсказания, являются ранее воспроизведенными значениями выборок. Значение BV может быть просигнализировано в битовом потоке, и декодер может использовать значение BV для определения области картинки для использования для предсказания, которое также воспроизводится в декодере. Предсказание внутри BC является формой предсказания внутри картинки - предсказание внутри BC для блока картинки не использует каких-либо значений выборки за исключением значений выборки в той же самой картинке.
m
n
m
n
m
n
[0109] Фиг.7a изображает предсказание внутри BC для текущего блока (760) текущего кадра (710). Текущий блок может быть блоком кодирования ("CB") элемента кодирования ("CU"), блоком предсказания ("PB") элемента предсказания ("PU"), блоком преобразования ("TB") элемента преобразования ("TU") или другим блоком. Размер текущего блока может быть 64×64, 32×32, 16×16, 8×8 или некоторым другим размером. В более общем случае, размер текущего блока равен ×, где каждое из  и  является целым числом, и где  и  могут быть равны друг другу или могут иметь различные значения. В качестве альтернативы, текущий блок может иметь некоторую другую форму (например, область кодированного видеообъекта с непрямоугольной формой).
x
y
x
y
x
x
y
y
0
0
1
1
1
0
1
0
[0110] BV (761) указывает смещение (или сдвиг) от текущего блока (760) к области (762) картинки, которая включает в себя значения выборки, используемые для предсказания. Область (762) внутрикадрового предсказания, указанная BV (761), иногда называется "совпадающим блоком" для текущего блока (760). Совпадающий блок может быть идентичен текущему блоку (760) или он может быть приближением текущего блока (760). Предположим, верхняя левая позиция текущего блока находится в позиции (, ) в текущем кадре, и предположим, что верхняя левая позиция области внутрикадрового предсказания находится в позиции (, ) в текущем кадре. BV указывает смещение (-, -). Например, если верхняя левая позиция текущего блока находится в позиции (256, 128), и верхняя левая позиция области внутрикадрового предсказания находится в позиции (176, 104), значение BV равно (-80, -24). В этом примере отрицательное горизонтальное смещение указывает позицию левее текущего блока, и отрицательное вертикальное смещение указывает позицию выше текущего блока.
[0111] Предсказание внутри BC может улучшить эффективность кодирования путем задействования избыточности (такой как повторяемые закономерности внутри кадра) с использованием операций BC. Значения выборки текущего блока представляются с использованием значения BV вместо непосредственного кодирования значений выборки текущего блока. Даже если значения выборки текущего блока не точно совпадают с значениями выборок области внутрикадрового предсказания, указанной значением BV, различия могут быть пренебрежимо малы (не заметны для восприятия). Или, если различия существенны, различия могут быть закодированы в качестве остаточных значений, которые могут быть сжаты более эффективно, чем исходные значения выборки для текущего блока.
[0112] В совокупности, значения BV для блоков, закодированные с использованием предсказания внутри BC, могут потреблять существенное количество бит. Значения BV могут энтропийно кодироваться для уменьшения битовой скорости. Чтобы дополнительно уменьшить битовую скорость для значений BV, кодер может использовать предсказание значений BV. Значения BV часто демонстрируют избыточность - значение BV для заданного блока часто подобно, или даже равно, значениям BV предыдущих блоков в картинке. Для предсказания BV значение BV для заданного блока предсказывается с использованием элемента предсказания BV. Разница (или дифференциал BV) между значением BV для заданного блока и элементом предсказания BV затем энтропийно кодируется. Обычно дифференциал BV вычисляется для горизонтальных и вертикальных компонентов значения BV и элемента предсказания BV. Когда предсказание BV срабатывает, дифференциалы BV имеют распределение вероятностей, которое поддерживает эффективное энтропийное кодирование. В текущей предварительной версии стандарта HEVC (JCTVC-O1005) элемент предсказания BV является значением BV последнего кодированного CU внутри текущего CTU (то есть значением BV предыдущего предсказанного внутри BC блока внутри текущего CTU).
[0113] Фиг.7b изображает BV (761) текущего блока (760) в кадре, а также BV (751) предыдущего блока (750) в кадре (710). BV (751) предыдущего блока (750) используется в качестве элемента предсказания BV для BV (761) текущего блока (760). Например, если значение BV равно (-80, -24) и элемент предсказания BV равен (-80, -32), дифференциал BV (0, 8) энтропийно кодируется.
[0114] Декодер принимает и энтропийно декодирует энтропийно кодированный дифференциал BV для значения BV. Декодер также определяет элемент предсказания BV для значения BV. Элемент предсказания BV, определенный декодером, является тем же самым, что и элемент предсказания BV, определенный кодером. Декодер комбинирует элемент предсказания BV и декодированный дифференциал BV для воспроизведения значения BV.
[0115] В текущей предварительной версии стандарта HEVC (JCTVC-O1005_v3) элемент предсказания BV на основе фактического значения BV недоступен в некоторых ситуациях. Например, предыдущее фактическое значение BV недоступно для первого предсказанного внутри BC блока в заданном CTU. Когда предыдущее фактическое значение BV недоступно для элемента предсказания BV (как показано на фиг.7c), значение по умолчанию (0, 0) используется в качестве элемента предсказания BV. На практике это означает, что предсказание BV пропускается, когда никакое значение BV не доступно для предыдущего предсказанного внутри BC блока в CTU.
B. Элемент предсказания BV по умолчанию с ненулевым компонентом.
[0116] Согласно одному аспекту нововведений, описанному здесь, когда предыдущее фактическое значение BV недоступно для использования в качестве элемента предсказания BV для значения BV текущего блока, кодер и декодер используют элемент предсказания BV по умолчанию с ненулевым компонентом. По сравнению с элементом предсказания BV по умолчанию с нулевым значением, элемент предсказания BV по умолчанию с ненулевым компонентом имеет тенденцию быть ближе к значению BV текущего блока, что приводит в результате к более эффективному энтропийному кодированию дифференциала BV. Кроме того, элемент предсказания BV по умолчанию с ненулевым значением может обеспечивать полезный вариант для режима пропуска или режима объединения для предсказания BV.
1. Пример элементов предсказания BV по умолчанию.
[0117] Как изображено на фиг.7d, для значения (761) BV текущего блока (760) элемент (763) предсказания BV по умолчанию может иметь ненулевой горизонтальный компонент. Например, элемент предсказания BV по умолчанию является горизонтальным вектором (BVx, 0). Значение горизонтального компонента BV BVx может быть фиксированным ненулевым значением. Либо значение BVx может быть шириной текущего блока, что является наименьшим значением горизонтального компонента BV BVx, который избегает взаимного наложения между текущим блоком и опорной областью.
W
H
W
W
H
W
H
W
[0118] Например, когда текущий блок является CB из CU, имеющего ширину  и высоту , значение горизонтального компонента BV BVx для элемента предсказания BV по умолчанию может быть отрицательным сдвигом, равным ширине  CU. То есть элемент предсказания BV по умолчанию может быть (-, 0). Элемент предсказания BV по умолчанию (BVx, 0) может быть использован всегда, когда обычный элемент предсказания BV (на основе фактического значения BV предыдущего блока) недоступен. Либо элемент предсказания BV по умолчанию (BVx, 0) может в зависимости от условий использоваться в зависимости от значения BV текущего блока. Например, если вертикальный компонент BV значения BV текущего блока меньше -, элемент предсказания BV по умолчанию равен (-, 0). Иначе (вертикальный компонент BV значения BV текущего блока не меньше -), элемент предсказания BV по умолчанию равен (0, 0). Это условие обеспечивает то, что элемент предсказания BV по умолчанию (-, 0) не применяется, когда значение BV текущего блока имеет существенный вертикальный компонент BV. В качестве альтернативы, ненулевой элемент предсказания BV по умолчанию (BVx, 0) в зависимости от условий применяется согласно другому условию.
W
W
[0119] Вместо того, чтобы иметь отрицательный сдвиг -, элемент предсказания BV по умолчанию может иметь другой отрицательный сдвиг. Например, элемент предсказания BV по умолчанию может быть (-2*, 0).
W
H
H
[0120] В качестве альтернативы, элемент предсказания BV по умолчанию является вертикальным вектором (0, BVy). Значение вертикального компонента BV BVy может быть фиксированным ненулевым значением, или значение BVy может быть высотой текущего блока, которая является наименьшим значением BVy, которое избегает взаимного наложения между текущим блоком и опорной областью. Например, когда текущий блок является CB из CU, имеющего ширину  и высоту , элемент предсказания BV по умолчанию может быть (0, -). Элемент предсказания BV по умолчанию (0, BVy) может быть использован всегда, когда обычный элемент предсказания BV недоступен, или элемент предсказания BV по умолчанию (0, BVy) может быть в зависимости от условий использован в зависимости от значения BV текущего блока.
[0121] В качестве альтернативы, элемент предсказания BV по умолчанию может иметь ненулевой горизонтальный компонент и ненулевой вертикальный компонент.
2. Примерное кодирование с элементами предсказания BV по умолчанию.
[0122] Фиг.8 изображает обобщенную методику (800) для использования элемента предсказания BV по умолчанию с ненулевым компонентом в течение кодирования. Кодер изображений или кодер видео, такой как описанный со ссылками на фиг.3 или фиг.5a-5b, может выполнять методику (800).
[0123] Кодер (830) определяет элемент предсказания BV по умолчанию для текущего блока картинки. Например, в осуществлениях HEVC текущий блок входит в состав элемента кодирования элемента дерева кодирования. Элемент предсказания BV по умолчанию включает в себя компонент элемента предсказания BV с ненулевым значением. Например, компонент элемента предсказания BV с ненулевым значением является горизонтальным компонентом BV. В зависимости от осуществления, ненулевой горизонтальный компонент BV может иметь фиксированное значение (независимое от размера текущего блока), значение, равное ширине текущего блока, или некоторое другое ненулевое значение. Либо компонент элемента предсказания BV с ненулевым значением равен вертикальному компоненту BV. В зависимости от осуществления, ненулевой вертикальный компонент BV может иметь фиксированное значение (независимое от размера текущего блока), значение, равное высоте текущего блока, или некоторое другое ненулевое значение. Либо элемент предсказания BV по умолчанию может включать в себя ненулевой горизонтальный компонент BV и ненулевой вертикальный компонент BV. Элемент предсказания BV по умолчанию может входить в состав набора множества вариантов элемента предсказания BV, собранного для режима пропуска, как описано в разделе C, или для режима объединения, как описано в разделе D.
[0124] Кодер кодирует (850) текущий блок с использованием элемента предсказания BV по умолчанию. Например, кодер (a) выполняет предсказание внутри BC с использованием значения BV для текущего блока, (b) определяет дифференциал BV с использованием значения BV и элемента предсказания BV по умолчанию для текущего блока, и (c) кодирует дифференциал BV. В качестве альтернативы, кодер просто выполняет предсказание внутри BC с использованием элемента предсказания BV по умолчанию.
[0125] Фиг.9 изображает более подробную примерную методику (900) для использования элемента предсказания BV по умолчанию с ненулевым компонентом в течение кодирования. Кодер изображений или кодер видео, такой как описанный со ссылками на фиг.3 или фиг.5a-5b, может выполнять методику (900).
[0126] Для начала кодер определяет (910) значение BV для текущего блока картинки. Кодер может использовать любую форму оценки BV для определения значения BV для текущего блока. В осуществлениях HEVC текущий блок входит в состав элемента кодирования элемента дерева кодирования.
[0127] Кодер проверяет (920), доступен ли фактический BV для использования в качестве элемента предсказания BV. Например, кодер проверяет, доступно ли фактическое значение BV для предыдущего блока картинки. В осуществлениях HEVC фактическое значение BV для предыдущего блока доступно, если (1) предыдущий блок и текущий блок входят в состав одного и того же CTU, и (2) режим предсказания предыдущего блока является режимом предсказания внутри BC. Фактическое значение BV для предыдущего блока недоступно, например, для первого предсказанного внутри BC блока заданного CTU.
[0128] Если фактический BV доступен для использования в качестве элемента предсказания BV, кодер использует (940) фактический BV в качестве элемента предсказания BV. С другой стороны, если никакой фактический BV для какого-либо предыдущего блока не доступен для использования в качестве элемента предсказания BV, кодер определяет (930) элемент предсказания BV по умолчанию для текущего блока. Элемент предсказания BV по умолчанию включает в себя компонент элемента предсказания BV с ненулевым значением. Например, элемент предсказания BV по умолчанию определяется, как описано выше в отношении действия (830) с фиг.8.
[0129] Кодер определяет (950) дифференциал BV между значением BV для текущего блока и элементом предсказания BV. Кодер энтропийно кодирует (960) дифференциал BV.
3. Примерное декодирование с элементами предсказания BV по умолчанию.
[0130] Фиг.10 изображает обобщенную методику (1000) для использования элемента предсказания BV по умолчанию с ненулевым компонентом в течение декодирования. Декодер изображений или декодер видео, такой как описанный со ссылками на фиг.4 или фиг.6, может выполнять методику (1000).
[0131] Декодер определяет (1030) элемент предсказания BV по умолчанию для текущего блока картинки. Например, в осуществлениях HEVC текущий блок входит в состав элемента кодирования элемента дерева кодирования. Элемент предсказания BV по умолчанию включает в себя компонент элемента предсказания BV с ненулевым значением. Например, компонент элемента предсказания BV с ненулевым значением является горизонтальным компонентом BV. В зависимости от осуществления, ненулевой горизонтальный компонент BV может иметь фиксированное значение (независимое от размера текущего блока), значение, равное ширине текущего блока, или некоторое другое ненулевое значение. Либо компонент элемента предсказания BV с ненулевым значением является вертикальным компонентом BV. В зависимости от осуществления, ненулевой вертикальный компонент BV может иметь фиксированное значение (независимое от размера текущего блока), значение, равное высоте текущего блока, или некоторое другое ненулевое значение. Либо элемент предсказания BV по умолчанию может включать в себя ненулевой горизонтальный компонент BV и ненулевой вертикальный компонент BV. Элемент предсказания BV по умолчанию может входить в состав набора множества вариантов элемента предсказания BV, собранного для режима пропуска, как описано в разделе C, или для режима объединения, как описано в разделе D.
[0132] Декодер декодирует (1050) текущий блок с использованием элемента предсказания BV по умолчанию. Например, кодер (a) декодирует дифференциал BV для текущего блока, (b) комбинирует декодированный дифференциал BV с элементом предсказания BV по умолчанию для воспроизведения значения BV для текущего блока, и (c) выполняет предсказание внутри BC с использованием значения BV для текущего блока. В качестве альтернативы, декодер просто выполняет предсказание внутри BC с использованием элемента предсказания BV по умолчанию.
[0133] Фиг.11 изображает более подробную примерную методику (1100) для использования элемента предсказания BV по умолчанию с ненулевым компонентом в течение декодирования. Декодер изображений или декодер видео, такие как описанные со ссылками на фиг.4 или фиг.6, могут выполнять методику (1100).
[0134] Декодер проверяет (1120), доступен ли фактический BV для использования в качестве элемента предсказания BV для значения BV для текущего блока картинки. Например, декодер проверяет, доступно ли фактическое значение BV для предыдущего блока картинки. В осуществлениях HEVC фактическое значение BV для предыдущего блока доступно, если (1) предыдущий блок и текущий блок входят в состав одного и того же CTU, и (2) режим предсказания предыдущего блока является режимом предсказания внутри BC. Фактическое значение BV для предыдущего блока недоступно, например, для первого предсказанного внутри BC блока заданного CTU.
[0135] Если фактический BV доступен для использования в качестве элемента предсказания BV, декодер использует (1140) фактический BV в качестве элемента предсказания BV. С другой стороны, если никакой фактический BV для какого-либо предыдущего блока не доступен для использования в качестве элемента предсказания BV, декодер определяет (1130) элемент предсказания BV по умолчанию для текущего блока. Элемент предсказания BV по умолчанию включает в себя компонент элемента предсказания BV с ненулевым значением. Например, элемент предсказания BV по умолчанию определяется, как описано выше в отношении действия (1030) с фиг.10.
[0136] Декодер также энтропийно декодирует (1150) дифференциал BV для текущего блока. Декодер затем комбинирует (1160) дифференциал BV с элементом предсказания BV для воспроизведения значения BV для текущего блока.
4. Альтернативы и вариации.
[0137] В примерах элементов предсказания BV по умолчанию, описанных выше, значение элемента предсказания BV по умолчанию не ограничивается в зависимости от местоположения текущего блока. В качестве альтернативы, значение элемента предсказания BV по умолчанию может быть ограничено в зависимости от местоположения текущего блока. Например, если текущий блок находится на краю картинки, так, что элемент предсказания BV по умолчанию будет указывать на местоположение вне картинки, элемент предсказания BV по умолчанию ограничивается для указания на местоположение внутри картинки, или элемент предсказания BV (0, 0) используется. Либо, в качестве другого примера для осуществлений HEVC, в которых значения BV ограничиваются для ссылки на местоположение в некотором наборе CTU (например, текущий CTU и предыдущий CTU), элемент предсказания BV по умолчанию ограничивается для ссылки на местоположение внутри этого набора CTU. Либо, в качестве другого примера для осуществлений HEVC, в которых картинка включает в себя множество сегментов или множество секторов, значения BV (и элементы предсказания BV по умолчанию) могут ограничиваться для ссылки на местоположение с текущим сегментом (и/или текущим сектором).
[0138] В примерах элементов предсказания BV по умолчанию, описанных выше, значение элемента предсказания BV по умолчанию не переключается в зависимости от местоположения текущего блока. В качестве альтернативы, значение элемента предсказания BV по умолчанию может переключаться в зависимости от местоположения текущего блока. Например, элемент предсказания BV по умолчанию является горизонтальным элементом предсказания BV (BVx, 0), если текущий блок находится где-то, кроме левого края картинки (или сегмента, или сектора, если они используются). Если текущий блок находится с левого края картинки (или сегмента, или сектора, если они используются), или горизонтальный элемент предсказания BV по умолчанию будет другим образом ссылаться на местоположение вне картинки (или сегмента, или сектора, если они используются), элемент предсказания BV по умолчанию является вертикальным элементом предсказания BV (0, BVy). И, если текущий блок находится в верхнем левом углу картинки (или сегмента, или сектора, если они используются), или горизонтальный элемент предсказания BV и вертикальный элемент предсказания BV по умолчанию будут другим образом ссылаться на местоположение вне картинки (или сегмента, или сектора, если они используются), элемент предсказания BV по умолчанию является элементом предсказания BV (0, 0).
C. Режим пропуска для предсказания внутри BC.
[0139] Согласно другому аспекту нововведений, описанных здесь, кодер и декодер используют режим пропуска для конкретных предсказанных внутри BC блоков. В режиме пропуска предсказанный внутри BC блок использует предсказанное значение BV и не имеет никаких остаточных данных в битовом потоке. В некоторых сценариях использование режима пропуска для предсказанных внутри BC блоков могут существенно улучшить эффективность отношения скорости к искажению.
[0140] В общем случае, кодер принимает решение, когда использовать режим пропуска для текущего предсказанного внутри BC блока. Кодер может принимать решение использовать режим пропуска на основе того, как близко область предсказания внутри BC совпадает с текущим блоком, на основе воспринимаемой важности остаточных значений, на основе битовой скорости, доступной для кодирования остаточных значений, и/или на основе других факторов. Кодер может предпочесть режим пропуска для предсказанных внутри BC блоков в конкретных режимах кодирования, в которых скорость кодирования является ограничением, например кодирование в реальном времени.
[0141] Фиг.12 изображает обобщенную методику (1200) для кодирования, которая включает в себя режим пропуска для предсказанных внутри BC блоков. Кодер изображений или кодер видео, такой как описанный со ссылками на фиг.3 или фиг.5a-5b, может выполнять методику (1200).
[0142] Для текущего блока картинки, если текущий блок является предсказанным внутри BC блоком, закодированным в режиме пропуска, кодер использует (1210) предсказание BV для определения значения BV для текущего блока. Значение BV для текущего блока указывает смещение к некоторой области внутри картинки. Предсказание BV может включать в себя предсказание в режиме объединения, предсказание с использованием значения BV последнего кодированного предсказанного внутри BC блока, предсказание с использованием покомпонентной медианы значений BV соседних предсказанных внутри BC блоков, или некоторую другую форму предсказания BV. Текущий блок, например, входит в состав CU CTU.
[0143] Кодер кодирует (1220) текущий блок с использованием предсказания внутри BC со значением BV (здесь предсказанное значение BV). Кодер выводит (1230) в битовом потоке указание, что текущий блок закодирован в режиме пропуска. Поскольку блок закодирован в режиме пропуска, битовый поток не имеет дифференциала BV и остаточных данных для текущего блока. Битовый поток может включать в себя, однако, значение индекса, которое указывает выбор варианта элемента предсказания BV, из набора множества вариантов элемента предсказания BV, для использования в качестве значения BV для текущего блока. Например, когда набор множества вариантов элемента предсказания BV имеет два варианта элемента предсказания BV, значение индекса является флаговым значением. Либо, когда набор множества вариантов элемента предсказания BV имеет более двух вариантов элемента предсказания BV, значение индекса является целочисленным значением. Значение индекса может быть энтропийно кодированным, например, с использованием арифметического кодирования.
[0144] Фиг.13 изображает обобщенную методику (1300) для декодирования, которая включает в себя режим пропуска для предсказанных внутри BC блоков. Декодер изображений или декодер видео, такой как описанный со ссылками на фиг.4 или фиг.6, может выполнять методику (1300).
[0145] Для текущего блока картинки, если текущий блок является предсказанным внутри BC блоком, закодированным в режиме пропуска, декодер принимает (1310) из битового потока указание, что текущий блок закодирован в режиме пропуска. Поскольку блок закодирован в режиме пропуска, битовый поток не имеет дифференциала BV и остаточных данных для текущего блока. Как описано выше, однако, битовый поток может включать в себя значение индекса, которое указывает выбор варианта элемента предсказания BV, из набора множества вариантов элемента предсказания BV, для использования в качестве значения BV для текущего блока. Текущий блок, например, входит в состав CU CTU.
[0146] Декодер использует (1320) предсказание BV для определения значения BV для текущего блока. Предсказание BV в общем случае зеркально отражает предсказание BV, выполняемое в кодере. Оно может включать в себя предсказание в режиме объединения, предсказание с использованием значения BV последнего кодированного предсказанного внутри BC блока, предсказание с использованием покомпонентной медианы значений BV соседних предсказанных внутри BC блоков, или некоторую другую форму предсказания BV. Декодер декодирует (1330) текущий блок с использованием предсказания внутри BC со значением BV (здесь, предсказанное значение BV).
D. Режим объединения для предсказания BV.
[0147] Согласно другому аспекту нововведений, описанных здесь, кодер и декодер используют режим объединения для предсказания BV. Режим объединения может существенно улучшить качество предсказания BV, что в свою очередь уменьшает количество бит, потребляемых дифференциалами BV в битовом потоке.
[0148] Для режима объединения, при определении элемента предсказания BV для блока, кодер собирает набор вариантов элемента предсказания BV, выбирает один из вариантов элемента предсказания BV для использования в качестве элемента предсказания BV для блока и сигнализирует в битовом потоке значение индекса, которое указывает выбранный вариант элемента предсказания BV. Декодер собирает набор вариантов элемента предсказания BV и, на основе просигнализированного значения индекса, выбирает один из вариантов элемента предсказания BV для использования в качестве элемента предсказания BV для блока. Хотя значения индекса потребляют биты в битовом потоке, режим объединения может существенно улучшить предсказание BV и, следовательно, уменьшить количество бит, потребляемых дифференциалами BV, что в результате приводит к общему уменьшению в битовой скорости.
[0149] В примерных осуществлениях режим объединения для предсказания BV используется в комбинации с режимом пропуска для предсказанных внутри BC блоков. В качестве альтернативы, режим объединения для предсказания BV может быть использован, даже если режим пропуска не позволен для предсказанных внутри BC блоков.
1. Примерные варианты элемента предсказания BV и значения индекса.
[0150] При определении элемента предсказания BV для блока в режиме объединения, кодер или декодер собирает набор вариантов элемента предсказания BV. Составляющие набора вариантов элемента предсказания BV зависят от осуществления, но являются одними и теми же на стороне кодера и стороне декодера.
x
x
x
[0151] В одном подходе варианты элемента предсказания BV собираются из фактических значений BV ранее кодированных блоков в картинке. В общем случае, кодер и декодер определяют вплоть до  фактических значений BV предыдущих блоков в картинке. Предыдущие блоки являются ранее кодированными предсказанными внутри BC блоками в картинке. В частности, они являются  ближайшими предсказанными внутри BC блоками, более ранними в порядке декодирования, чем текущий блок. Значение  зависит от осуществления и может быть, например, 2, 3, 4, 5 или некоторым другим числом. Использование большего количества вариантов элемента предсказания BV имеет тенденцию увеличивать битовую скорость для значений индекса, но улучшать качество предсказания BV, что, в свою очередь, уменьшает количество бит, потребляемых дифференциалами BV.
x
x
[0152] Предыдущие предсказанные внутри BC блоки не обязаны быть соседними для текущего блока. Если меньше чем  предыдущих блоков с фактическими значениями BV доступно, набор вариантов элемента предсказания BV может включать в себя меньше чем  вариантов элемента предсказания BV.
[0153] Фиг.14 изображает пример этого подхода. На фиг.14 три значения (1431, 1441, 1451) BV трех предыдущих предсказанных внутри BC блоков (1430, 1440, 1450) обеспечивают варианты элемента предсказания BV для режима объединения для элемента предсказания BV текущего блока (1460) текущего кадра (1410). Хотя предыдущие блоки (1430, 1440, 1450) являются смежными в примере с фиг.14, предыдущие блоки не обязаны быть смежными. (То есть предыдущие предсказанные внутри BC блоки, которые обеспечивают варианты элемента предсказания BV, могут быть разделены другими, не предсказанными внутри BC блоками в картинке.)
[0154] Набор вариантов элемента предсказания BV может дополнительно включать в себя один или несколько элементов предсказания BV по умолчанию. В примере с фиг.14, набор вариантов элемента предсказания BV включает в себя элемент предсказания BV по умолчанию (BVx, 0) с горизонтальным смещением и элемент предсказания BV по умолчанию (0, BVy) с вертикальным смещением. В частности, элементы предсказания BV по умолчанию с горизонтальным смещением и вертикальным смещением имеют тенденцию быть полезными для текстового содержимого, которое в общем случае следует чисто горизонтальному или вертикальному направлению.
[0155] Режим объединения значений индекса ассоциирован с соответственными вариантами элемента предсказания BV. Обычно меньшие значения индекса ассоциированы с вариантами элемента предсказания BV, которые с наибольшей вероятностью будут выбраны, и большие значения индекса ассоциированы с вариантами элемента предсказания BV, которые с меньшей вероятностью будут выбраны, что имеет тенденцию уменьшать битовую скорость для значений индексов после энтропийного кодирования. На фиг.14, значения индексов idx 0,..., idx 4 назначаются вариантам элемента предсказания BV со значениями BV (1451, 1441, 1431) и элементам предсказания BV по умолчанию согласно ожидаемой вероятности выбора.
канд0
канд1
канд1
канд0
канд0
канд0
канд1
канд0
канд1
канд0
канд1
канд0
канд1
[0156] Например, в некоторых осуществлениях два фактических значения BV ранее кодированных блоков сохраняются в качестве вариантов элемента предсказания BV BV и BV. После того как новое значение BV было использовано, более старый вариант элемента предсказания BV BV замещается более новым вариантом элемента предсказания BV BV, и более новый вариант элемента предсказания BV BV замещается значением BV, которое было только что использовано. На стороне кодера для текущего блока кодер выбирает один из BV и BV для использования в качестве элемента предсказания BV. В качестве значения индекса режима объединения кодер сигнализирует флаговое значение, которое указывает, который из BV и BV был использован кодером и должен быть использован декодером. На стороне декодера декодер принимает и выполняет синтаксический анализ флагового значения и на основе флагового значения выбирает один из BV и BV для использования в качестве элемента предсказания BV для блока. В этом подходе каждый из кодера и декодера сохраняет и обновляет два варианта элемента предсказания BV BV и BV.
канд0
канд1
канд0
канд1
канд0
канд1
канд0
канд1
канд0
канд1
канд0
канд1
канд0
W
[0157] В качестве другого примера, в некоторых других осуществлениях одно фактическое значение BV ранее кодированного блока сохраняется в качестве первого варианта элемента предсказания BV BV, и элемент предсказания BV по умолчанию сохраняется в качестве второго варианта элемента предсказания BV BV. Например, элемент предсказания BV по умолчанию равен (BVx, 0), где BVx может быть отрицательным сдвигом, равным ширине  текущего блока, или иметь некоторое другое ненулевое значение. После того как новое значение BV было использовано, первый вариант элемента предсказания BV BV замещается значением BV, которое было только что использовано, но второй вариант элемента предсказания BV BV остается неизменным. На стороне кодера, для текущего блока, кодер выбирает один из BV и BV для использования в качестве элемента предсказания BV. Кодер сигнализирует флаговое значение, которое указывает, какой из BV и BV был использован кодером и должен быть использован декодером. Декодер принимает и выполняет синтаксический анализ флагового значения и, на основе флагового значения, выбирает один из BV и BV для использования в качестве элемента предсказания BV для блока. В этом подходе каждый из кодера и декодера сохраняет два варианта элемента предсказания BV BV и BV, и первый вариант элемента предсказания BV BV обновляется в течение кодирования или декодирования.
x
x
x
x
[0158] В другом подходе варианты элемента предсказания BV собираются из фактических значений BV ранее кодированных блоков, которые являются соседними для текущего блока в картинке. Кодер и декодер определяют вплоть до  фактических значений BV соседних блоков. Соседние блоки являются ранее кодированными предсказанными внутри BC блоками в картинке слева от текущего блока, сверху от текущего блока, сверху справа от текущего блока и так далее. Значение  зависит от осуществления и может быть, например, 2, 3, 4, 5 или некоторым другим числом. Если менее чем  соседних блоков с фактическими значениями BV доступно, набор вариантов элемента предсказания BV может включать в себя менее чем  вариантов элемента предсказания BV.
[0159] Фиг.15 изображает пример этого подхода. На фиг.15 три значения BV (1531, 1541, 1551) трех соседних предсказанных внутри BC блоков (1530, 1540, 1550) обеспечивают варианты элемента предсказания BV для режима объединения для элемента предсказания BV текущего блока (1560) текущего кадра (1510). Если один из соседних блоков недоступен (например, не является предсказанным внутри BC блоком или находится вне картинки, сегмента или сектора), в некоторых случаях другой соседний блок может добавляться (например, блок выше и левее текущего блока). Как изображено на фиг.15, набор вариантов элемента предсказания BV может включать в себя один или несколько элементов предсказания BV по умолчанию (таких как элемент предсказания BV по умолчанию (BVx, 0) с горизонтальным смещением и элемент предсказания BV по умолчанию (0, BVy) с вертикальным смещением). На фиг.15 значения индекса idx 0,..., idx 4 назначаются вариантам элемента предсказания BV со значениями BV (1541, 1531, 1551) и элементам предсказания BV по умолчанию согласно ожидаемой вероятности выбора.
[0160] Обработка избыточных значений среди вариантов элемента предсказания BV зависит от осуществления. В некоторых осуществлениях набор вариантов элемента предсказания BV для режима объединения может включать в себя избыточные значения - то есть избыточные варианты элемента предсказания BV не удаляются и не замещаются. В других осуществлениях, при сборе набора вариантов элемента предсказания BV для режима объединения, кодер и декодер не добавляют избыточное значение элемента предсказания BV в набор. Этот подход может давать в результате меньший набор вариантов элемента предсказания BV, что может уменьшать битовую скорость для кодированных значений индекса. В дополнительных осуществлениях, при сборе набора вариантов элемента предсказания BV для режима объединения, кодер и декодер замещают вариант элемента предсказания BV, который был бы избыточным для варианта элемента предсказания BV, уже находящегося в наборе, другим вариантом элемента предсказания BV (например, из другого ранее кодированного предсказанного внутри BC блока, из другого соседнего предсказанного внутри BC блока, из другого варианта элемента предсказания BV по умолчанию). Например, если значение BV 3-го предыдущего предсказанного внутри BC блока то же самое, что и значение BV 1-го предыдущего предсказанного внутри BC блока или 2-го предыдущего предсказанного внутри BC блока, кодер/декодер вместо этого добавляют значение BV 4-го предыдущего предсказанного внутри BC блока в набор вариантов элемента предсказания BV. Если это значение BV было бы избыточным, кодер/декодер вместо этого добавляет значение BV 5-го, 6-го и т. д. предыдущего предсказанного внутри BC блока. Либо кодер/декодер добавляет другой элемент предсказания BV по умолчанию.
2. Примерное кодирование с выбранными элементами предсказания BV.
[0161] Фиг.16a изображает обобщенную методику (1600) для кодирования, которая включает в себя режим объединения для элементов предсказания BV. Кодер изображений или кодер видео, такой как описанный со ссылками на фиг.3 или фиг.5a-5b, может выполнять методику (1600).
x
x
x
x
[0162] Для начала, кодер определяет (1610) набор множества вариантов элемента предсказания BV для текущего предсказанного внутри BC блока картинки. Текущий блок, например, входит в состав CU CTU. Кодер может определять набор вариантов элемента предсказания BV с использованием одного из подходов, описанных со ссылками на фиг.14 и 15, или с использованием другого подхода. В общем, варианты элемента предсказания BV могут включать в себя вплоть до  фактических значений BV предыдущих блоков, соответственно, где  зависит от осуществления (например,  равно 2, 3, 4, 5 или какому-либо другому числу).  предыдущих блоков могут быть идентифицированы на основе, по меньшей мере частично, местоположения в окружении вокруг текущего блока (см., например, фиг.15) и/или порядка декодирования по сравнению с текущим блоком (см., например, фиг.14). варианты элемента предсказания BV могут также включать в себя один или несколько элементов предсказания BV по умолчанию (например, каждый из которых имеет компонент элемента предсказания BV с ненулевым значением).
[0163] Кодер выбирает (1620) один из множества вариантов элемента предсказания BV для использования для текущего предсказанного внутри BC блока. Например, когда текущий блок будет кодироваться с использованием предсказания внутри BC с выбранным вариантом элемента предсказания BV, кодер выбирает вариант элемента предсказания BV, для которого область внутреннего предсказания, на которую сделана ссылка, наиболее близко совпадает с текущим блоком по некоторой метрике (например, сумме абсолютной разности, среднеквадратической ошибке). Либо, когда текущий блок имеет значение BV (идентифицированное через оценку BV), которое будет использовано для предсказания внутри BC, кодер выбирает вариант элемента предсказания BV, который наиболее близко совпадает со значением BV для текущего блока. Этот выбор дает в результате наименьший дифференциал BV, который имеет тенденцию улучшать эффективность энтропийного кодирования.
[0164] Кодер кодирует (1630) текущий предсказанный внутри BC блок с использованием выбранного варианта элемента предсказания BV. Фиг.16b изображает подробности кодирования (1630) текущего блока в примерных осуществлениях. Кодер проверяет (1632), закодирован ли текущий блок в режиме пропуска. Если да, кодер кодирует (1633) текущий блок с использованием предсказания внутри BC с выбранным элементом предсказания BV, но не с использованием каких-либо остаточных данных. Иначе (не в режиме пропуска) кодер проверяет (1634), закодирован ли текущий блок в режиме объединения. Если да, кодер кодирует (1635) текущий блок с использованием предсказания внутри BC с выбранным элементом предсказания BV. В режиме объединения кодер опционально кодирует остаточные данные для текущего блока. Иначе (не в режиме объединения) кодер кодирует (1637) текущий блок с использованием предсказания внутри BC со значением BV для текущего блока, опционально кодируя остаточные данные для текущего блока.
[0165] Кодер выводит (1640) в битовом потоке значение индекса, которое указывает выбранный вариант элемента предсказания BV. Когда набор вариантов элемента предсказания BV включает в себя два варианта элемента предсказания BV, значение индекса может быть флаговым значением. Либо, когда присутствует более двух вариантов элемента предсказания BV, значение индекса может быть целочисленным значением. Значение индекса может быть энтропийно кодировано или сигнализировано в виде значения фиксированной длины. Значение индекса может (в зависимости от условий) сигнализироваться в битовом потоке в качестве отдельного синтаксического элемента, если синтаксический элемент режима предсказания внутри BC указывает, что текущий блок закодирован с использованием режима предсказания внутри BC. Либо значение индекса может сигнализироваться в битовом потоке совместно с другим синтаксическим элементом (например, синтаксическим элементом, который указывает, закодирован ли текущий блок с использованием режима предсказания внутри BC).
[0166] Кодер также выводит любые закодированные данные для текущего блока. Значение в битовом потоке может указывать, закодирован ли текущий блок в режиме пропуска. Если текущий блок является блоком режима пропуска, битовый поток не имеет дифференциала BV для текущего блока и не имеет остаточных данных для текущего блока. Если текущий блок является блоком режима объединения, битовый поток не имеет дифференциала BV для текущего блока, но может включать в себя остаточные данные для текущего блока. Иначе (текущий блок является блоком режима без пропуска, режима без объединения), битовый поток включает в себя дифференциал BV для текущего блока (указывающий разницу между выбранным вариантом элемента предсказания BV и значением BV для текущего блока) и может также включать в себя остаточные данные для текущего блока.
[0167] Когда кодер использует структуру данных для отслеживания используемых фактических значений BV для предыдущих предсказанных внутри BC блоков, кодер может обновить структуру данных со значением BV для текущего блока.
3. Примерное декодирование с выбранными элементами предсказания BV.
[0168] Фиг.17a изображает обобщенную методику (1700) для декодирования, которая включает в себя режим объединения для элементов предсказания BV. Декодер изображений или декодер видео, такой как описанный со ссылками на фиг.4 или фиг.6, может выполнять методику (1700).
[0169] Для начала декодер принимает (1710) из битового потока значение индекса для текущего блока картинки. Текущий блок, например, входит в состав CU CTU. Значение индекса указывает выбранный вариант элемента предсказания BV из набора множества вариантов элемента предсказания BV. Когда набор вариантов элемента предсказания BV включает в себя два варианта элемента предсказания BV, значение индекса может быть флаговым значением. Либо, когда существует более двух вариантов элемента предсказания BV, значение индекса может быть целым значением. Значение индекса может быть энтропийно кодировано, в случае чего декодер энтропийно декодирует значение индекса, или сигнализировано в виде значения фиксированной длины. Значение индекса может быть (в зависимости от условий) сигнализировано в битовом потоке в качестве отдельного синтаксического элемента, если синтаксический элемент режима предсказания внутри BC указывает, что текущий блок был закодирован с использованием режима предсказания внутри BC. Либо значение индекса может сигнализироваться в битовом потоке совместно с другим синтаксическим элементом (например, синтаксическим элементом, который указывает, закодирован ли текущий блок с использованием режима предсказания внутри BC).
[0170] Декодер также принимает любые закодированные данные для текущего блока. Декодер энтропийно декодирует закодированные данные на надлежащем этапе декодирования. Значение в битовом потоке может указывать, был ли текущий блок закодирован в режиме пропуска. Если текущий блок является блоком режима пропуска, битовый поток не имеет дифференциала BV для текущего блока и не имеет остаточных данных для текущего блока. Если текущий блок является блоком режима объединения, битовый поток не имеет дифференциала BV для текущего блока, но может включать в себя остаточные данные для текущего блока. Иначе (текущий блок является блоком режима без пропуска, режима без объединения), битовый поток включает в себя дифференциал BV для текущего блока и может также включать в себя остаточные данные для текущего блока.
x
x
x
x
[0171] Декодер определяет (1720) набор множества вариантов элемента предсказания BV для текущего блока. Декодер может определять набор вариантов элемента предсказания BV с использованием одного из подходов, описанных со ссылками на фиг.14 и 15, или с использованием другого подхода. В общем, варианты элемента предсказания BV могут включать в себя вплоть до  фактических значений BV предыдущих блоков, где  зависит от осуществления (например,  равно 2, 3, 4, 5 или некоторому другому числу).  предыдущих блоков может быть идентифицировано на основе, по меньшей мере частично, местоположения в окружении вокруг текущего блока (см., например, фиг.15) и/или порядка декодирования по сравнению с текущим блоком (см., например, фиг.14). варианты элемента предсказания BV могут также включать в себя один или несколько элементов предсказания BV по умолчанию (например, каждый из которых имеет компонент элемента предсказания BV с ненулевым значением).
[0172] На основе значения индекса декодер выбирает (1730) один из множества вариантов элемента предсказания BV для использования для текущего блока. Декодер декодирует (1740) текущий блок с использованием выбранного варианта элемента предсказания BV. Фиг.17b изображает подробности декодирования (1740) текущего блока в примерных осуществлениях. Декодер проверяет (1742), был ли текущий блок закодирован в режиме пропуска. Если да, то декодер декодирует (1743) текущий блок с использованием предсказания внутри BC с выбранным элементом предсказания BV, но без использования каких-либо остаточных данных. Иначе (не в режиме пропуска) декодер проверяет (1744), был ли текущий блок закодирован в режиме объединения. Если да, то декодер декодирует (1745) текущий блок с использованием предсказания внутри BC с выбранным элементом предсказания BV. В режиме объединения декодер декодирует остаточные данные (если присутствуют) для текущего блока. Иначе (не в режиме объединения) декодер декодирует (1747) текущий блок с использованием предсказания внутри BC со значением BV для текущего блока (декодированным с дифференциалом BV по отношению к выбранному элементу предсказания BV), также декодируя остаточные данные (если присутствуют) для текущего блока.
[0173] Когда декодер использует структуру данных для отслеживания фактических значений BV, используемых для предыдущих предсказанных внутри BC блоков, декодер может обновлять структуру данных со значением BV для текущего блока.
4. Примерные осуществления режима объединения.
[0174] В осуществлениях HEVC синтаксис и семантика для CU могут быть модифицированы в синтаксические элементы сигнала для режима объединения для предсказания BV и/или режима пропуска для предсказанных внутри BC блоков.
[0175] В предварительном техническом описании HEVC в JCTVC-O1005_v3, cu_skip_flag[x0][y0] указывает, пропускается ли текущий CU, но флаг сигнализируется, только если текущий сектор является предсказательным ("P") сектором или би-предсказательным ("B") сектором. Индексы матрицы x0, y0 определяют местоположение (x0, y0) верхней левой выборки яркости рассматриваемого CB по отношению к верхней левой выборке яркости картинки. Если cu_skip_flag[x0][y0] равен 1, текущий CU пропускается, и никакие дополнительные синтаксические элементы синтаксически не анализируются после cu_skip_flag[x0][y0] для CU, кроме индекса варианта объединения merge_idx [x0][y0]. Если cu_skip_flag[x0][y0] равен 0, CU не пропускается. Когда cu_skip_flag[x0][y0] отсутствует, он предполагается равным 0.
[0176] Согласно одной возможной модификации, cu_skip_flag[x0][y0] также сигнализируется, если текущий сектор является внутренним ("I") сектором. Когда обеспечена возможность предсказания внутри BC (согласно флагу intra_block_copy_enabled_flag в наборе параметров последовательности), если значение cu_skip_flag[x0][y0] равно 1, текущий CU пропускается, и никакие дополнительные синтаксические элементы не анализируются синтаксически после cu_skip_flag[x0][y0] для CU, кроме значения индекса элемента предсказания BV idx. В частности, никакая разница BV не сигнализируется для текущего, пропущенного CU. С другой стороны, если значение cu_skip_flag[x0][y0] равно 0, текущий CU не пропускается.
[0177] В предварительном техническом описании HEVC в JCTVC-01005_v3 intra_bc_flag[x0][y0] указывает, кодируется ли текущий CU в режиме предсказания внутри BC. Индексы матрицы x0, y0 определяют местоположение (x0, y0) верхней левой выборки яркости рассматриваемого CB по отношению к верхней левой выборке яркости картинки. Если intra_bc_flag[x0][y0] равен 1, текущий CU кодируется в режиме предсказания внутри BC. Если intra_bc_flag[x0][y0] равен 0, текущий CU кодируется посредством внутреннего пространственного предсказания. Если он отсутствует, значение intra_bc_flag предполагается равным 0.
[0178] Согласно одной возможной модификации для intra_bc_flag[x0][y0], когда intra_bc_flag[x0][y0] равен 1, синтаксис для текущего CU включает в себя значение индекса элемента предсказания BV idx, которое указывает выбор варианта элемента предсказания BV. Значение индекса idx может быть флаговым значением для указания выбора между двумя вариантами элемента предсказания BV или целым значением для указания выбора из более чем двух вариантов элемента предсказания BV. Значение индекса может быть энтропийно кодировано с использованием, например, арифметического кодирования.
[0179] Либо, согласно другой возможной модификации для intra_bc_flag[x0][y0], синтаксический элемент является целочисленным значением вместо двоичного флага. Если intra_bc_flag[x0][y0] равен 0, текущий CU кодируется с внутренним пространственным предсказанием, как в JCTVC-O1005_v3. С другой стороны, если intra_bc_flag[x0][y0] больше 0, то текущий CU кодируется в режиме предсказания внутри BC, и intra_bc_flag[x0][y0] также указывает значение индекса элемента предсказания BV idx. Например, если intra_bc_flag[x0][y0] равен 1, то idx равен 1; если intra_bc_flag[x0][y0] равен 2, то idx равен 2; и так далее. Иными словами, значение индекса элемента предсказания BV idx совместно кодируется с двоичным значением для пространственного предсказания или предсказания BC в одном синтаксическом элементе.
[0180] Для любого из способов модификации intra_bc_flag[x0][y0] и сигнализирования значения индекса idx, переменная BvIntraPredictor[idx][compIdx] определяет вариант элемента предсказания BV, который должен быть использован для предсказания внутри BC текущего CU. Например, в примере с фиг.14, BvIntraPredictor[0][compIdx], BvIntraPredictor[l][compIdx] и BvIntraPredictor[2][compIdx] хранят значения BV вплоть до трех наиболее свежих предыдущих предсказанных внутри BC блоков. Либо в примере с фиг.15, BvIntraPredictor[0][compIdx], BvIntraPredictor[l][compIdx] и BvIntraPredictor[2][compIdx] хранят значения BV вплоть до трех соседних предсказанных внутри BC блоков. BvIntraPredictor[3][compIdx] и BvIntraPredictor[4][compIdx] хранят элементы предсказания BV по умолчанию в горизонтальном и вертикальном направлениях, соответственно. Горизонтальный компонент BV назначен compIdx=0, и вертикальный компонент BV назначен compIdx=1.
[0181] Для блока режима пропуска или блока режима объединения никакой дифференциал BV не сигнализируется для блока. Значение BV для блока является выбранным вариантом элемента предсказания BV.
[0182] Для блока режима без пропуска режима без объединения дифференциал BV сигнализируется в битовом потоке. Переменная BvdIntra[x0][y0][compIdx] определяет дифференциал BV. Индексы матрицы x0, y0 определяют местоположение (x0, y0) верхней левой выборки яркости рассматриваемого PB по отношению к верхней левой выборке яркости картинки. Горизонтальному компоненту дифференциала BV назначается compIdx=0, и вертикальному компоненту дифференциала BV назначается compIdx=1. Значение BV для блока равно BvIntra[x0][y0][compIdx]=BvdIntra[x0][y0][compIdx]+BvIntraPredictor[idx][compIdx], при compIdx=0..1.
[0183] Переменный BvIntraPredictor[idx][compIdx] может затем обновляться для включения значения BV для текущего CU.
5. Альтернативы и вариации.
[0184] Когда текущий блок имеет значение BV, которое идентифицировано через оценку BV, кодер может использовать любую форму оценки BV для определения значения BV для текущего блока. В течение оценки BV для текущего блока кодер может начинать с расчета одного или нескольких вариантов элемента предсказания BV, которые доступны для текущего блока. Начало оценки BV вариантом(-ами) элемента предсказания BV может помочь быстро определить подходящее значение BV, избегая расчета других значений BV. Кодер рассчитывает другие значения BV при необходимости. Кодер может использовать структуру данных для отслеживания вариантов элемента предсказания BV. Когда значение BV может применяться для различных размеров блоков (например, для CU 32×32, CU 16×16, CU 8×8 или меньших TU или CU), структура данных может включать в себя различные варианты элемента предсказания BV для различных размеров блоков (например, один или несколько вариантов элемента предсказания BV для CU 32×32, один или несколько вариантов элемента предсказания BV для CU 16×16 и так далее). Для текущего блока кодер сначала рассчитывает вариант(ы) элемента предсказания BV, сохраненные в структуре данных, для уровня (размера) текущего блока затем переходит к оценке других значений BV, если необходимо.
[0185] Ввиду множества возможных вариантов осуществления, к которым принципы раскрываемого изобретения могут применяться, следует понимать, что иллюстрируемые варианты осуществления являются только предпочтительными примерами изобретения и не должны восприниматься как ограничивающие объем изобретения. В действительности, объем изобретения определен следующей формулой. Мы, таким образом, заявляем в качестве нашего изобретения все, что находится внутри объема и сущности этой формулы.