ПРЕОБРАЗОВАНИЕ ДЕКОДИРОВАННОГО ВЕКТОРА БЛОКА ДЛЯ ВНУТРЕННЕЙ КОМПЕНСАЦИИ БЛОКОВ ИЗОБРАЖЕНИЯ
BLOCK DECODED VECTOR TRANSFORMATION FOR INTERNAL IMAGE BLOC COMPENSATION

Включение путем ссылки
[0001] Настоящее описание ссылается на приоритет заявки на патент США №16/860975, озаглавленной «Преобразование декодированного вектора блока для внутренней компенсации блоков изображения» и зарегистрированной 28 апреля 2020 года, которая ссылается на приоритет предварительной заявки на патент США №62/863, озаглавленной «Преобразование декодированного вектора блока для внутренней компенсации блоков изображения» и зарегистрированной 18 июня 2019 года, при этом все из упомянутых заявок полностью включены в настоящий документ путем ссылки.
Область техники
[0002] Настоящее изобретение относится, в общем, к видеокодированию.
Предпосылки создания изобретения
[0003] Ниже, чтобы дать общее представление о контексте настоящего изобретения, приведено описание существующего уровня техники. Работа, проделанная авторами настоящей заявки, а также аспекты настоящего изобретения, которые не могут быть отнесены к известному уровню техники на момент подачи заявки, даже если они описаны в данном разделе, посвященному описанию известного уровня техники, не могут быть ни косвенно, ни явно отнесены к существующему уровню техники, несмотря на включение в данный раздел.
[0004] Видеокодирование и видеодекодирование могут выполняться с использованием внешнего предсказания изображений с компенсацией движения. Несжатое цифровое видео может содержать последовательность изображений, каждое из которых имеет заданный пространственный размер, например, 1920×1080 отсчетов яркости и соответствующих отсчетов цветности. Такая последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой смены кадров), равную, например, 60 изображениям в секунду, или 60 Гц. Несжатое видео предъявляет высокие требования к битовой скорости передачи данных. К примеру, видео формата 1080р60 4:2:0 с 8-битной глубиной отсчета (разрешение в 1920×1080 отсчетов яркости с частотной смены кадров 60 Гц) требует полосы пропускания около 1,5 Гб/с. Час такого видео требует более 600 ГБ памяти для хранения.
[0005] Одной из задач видеокодирования и видеодекодирования является снижение избыточности во входном видеосигнале за счет сжатия. Сжатие позволяет сократить требования к полосе пропускания или объему памяти для хранения в некоторых случаях до двух порядков величины или более. Может применяться как сжатие без потерь, так и с потерями, а также их комбинации. Под сжатием без потерь понимают методы, в которых из сжатого сигнала может быть восстановлена точная копия исходного сигнала. Когда используют сжатие с потерями восстановленный сигнал может не быть идентичным исходному, однако расхождение между исходным и восстановленным сигналами достаточно мало, чтобы восстановленный сигнал был пригоден для целевого применения. Сжатие с потерями широко применяется для видео. Величина допустимых искажений зависит от конкретного применения; например, пользователи коммерческих приложений потоковой передачи могут быть терпимее к искажениям, чем пользователи приложений телевещания. Степень сжатия подчиняется следующей закономерности: чем больше допустимые искажения, тем больше достижимая степень сжатия.
[0006] В видеокодере и видеодекодере может применяться ряд методов, относящихся к различным категориям, включая, например, компенсацию движения, преобразования, квантование и энтропийное кодирование.
[0007] Среди технологий, применяемых в видеокодеках, существуют методы, известные под названием внутреннего кодирования. При внутреннем кодировании значения отсчетов представлены без ссылок на отсчеты или другие данные из ранее восстановленных опорных изображений. В некоторых видеокодеках изображения пространственно разбивают на блоки отсчетов. Когда все блоки отсчетов кодируют во внутреннем режиме, такое изображение можно называть внутренне-кодируемым изображением. Внутренне кодируемые изображения и производные от них, например, изображения независимого обновления декодирования могут применяться для восстановления исходного состояния декодера, и соответственно, могут использоваться в качестве первого изображения в кодированном видеопотоке и видеосеансе, или в качестве статичного изображения. Отсчеты внутренне-кодируемого блока могут подвергаться преобразованиям, при этом коэффициенты преобразования могут квантоваться перед энтропийным кодированием. Внутреннее предсказание - этот метод, который минимизирует значения отсчетов в области значений до выполнения преобразования. В некоторых случаях, чем меньше значения коэффициентов DC после преобразования, и чем меньше коэффициент АС, тем меньше бит требуется, при заданном шаге квантования, для представления блока после энтропийного кодирования.
[0008] В традиционных методах внутреннего кодирования, предложенных, например, в методах кодирования поколения MPEG-2, не используют внутреннее предсказание. Однако в некоторых более новых технологиях видеосжатия имеются методы, которые пытаются выполнять предсказание на основе, например, данных окружающих отсчетов и/или метаданных, полученных при кодировании/декодировании пространственно смежных и предшествующих, в порядке декодирования, блоков данных. Такие методы далее будут называться методами с «внутренним предсказанием». Следует отметить, что по меньшей мере в некоторых случаях для внутреннего предсказания используют опорные данные только из текущего изображения, восстанавливаемого в данный момент, но не из опорных изображений.
[0009] Существуют множество различных видов внутреннего предсказания. Когда в технологии видеокодирования допускается применение более одного из подобных методов, применяемая технология может иметь режим внутреннего предсказания. В некоторых случаях режимы могут иметь подрежимы и/или параметры, которые могут кодироваться отдельно или включаться в кодовое слово режима. То, какое кодовое слово используется для заданной комбинации режима/подрежима/параметров, может влиять на эффективность кодирования при внутреннем предсказании. Также влияние может оказывать метод энтропийного кодирования, используемый для преобразования кодовых слов в битовый поток.
[0010] Один из режимов внутреннего предсказания был введен в стандарте Н.264, усовершенствован в стандарте Н.265 и еще более усовершенствован в новых технологиях кодирования, таких как «Объединенная исследовательская модель» (joint exploration model, JEM), «Универсальное видеокодирование» (versatile video coding, VVC) и «Набор эталонов» (benchmark set, BMS). Предсказание блока может быть сформировано с использованием значений отсчетов, относящихся к уже доступным отсчетам. Значения соседних отсчетов копируют в блок предсказания в соответствии с заданным направлением. Указание на то, какое направление нужно использовать, может быть кодировано в битовом потоке, или может также предсказываться.
[0011] Компенсация движения - это метод сжатия с потерями, относящийся к методам, в которых блок данных отсчетов из ранее восстановленного изображения, или его части, после пространственного сдвига в направлении, заданном вектором движения (motion vector, MV), используют для предсказания нового восстанавливаемого изображения или его части. В некоторых случаях опорное изображение может совпадать с текущим предсказываемым изображением. Векторы движения могут иметь два измерения, X и Y, или три измерения, третье из которых указывает на применяемое опорное изображение (оно, опосредованно, может быть временным измерением).
[0012] В некоторых технологиях видеосжатия вектор движения, применяемый для некоторой области данных отсчетов, может предсказываться на основе других векторов движения, например, на основе векторов, относящихся к другим областям данных отсчетов, пространственно смежных с восстанавливаемой областью, и предшествующих данному вектору движения в порядке декодирования. Это позволяет значительно снизить объем данных, необходимый для кодирования вектора движения, а значит, уменьшить избыточность и повысить эффективность сжатия. Предсказание векторов движения может быть эффективным, например, потому, что при кодировании входного видеосигнала, полученного с камеры (называемого необработанным видео), есть статистическая вероятность того, что области, более крупные, чем области применимости отдельного вектора движения, движутся в том же направлении, и следовательно, могут в некоторых случаях быть предсказаны с использованием аналогичных векторов движения, вычисленных на основе векторов движения соседних областей. В результате вектор движения, найденный для заданной области, может быть сходен или идентичен вектору движения, предсказанному на основе окружающих векторов движения, и следовательно, может быть представлен, после энтропийного кодирования, меньшим количеством бит, чем необходимо для непосредственного кодирования вектора движения. В некоторых случаях предсказание векторов движения может быть примером сжатия, без потерь, сигнала (а именно, векторов движения), полученного из исходного сигнала (а именно, потока отсчетов). В других случаях предсказание векторов движения может выполняться с потерями, например, из-за ошибок округления при вычислении предсказания на основе нескольких окружающих векторов движения.
[0013] Различные механизмы предсказания векторов движения описаны в стандарте H.265/HEVC (рекомендация Н.265 ITU-T «Высокоэффективное видеокодирование», декабрь 2016 года). Из множества механизмов предсказания векторов движения, предложенных в стандарте Н.265, в данном документе описан метод, далее называемый «пространственным слиянием» (spatial merge).
[0014] Рассмотрим фиг. 1: текущий блок (101), содержит отсчеты, для которых в процессе поиска движения кодером было определено, что они могут быть предсказаны на основе предшествующего блока того же размера, но сдвинутого в пространстве. Вместо непосредственного кодирования этого вектора движения он может быть вычислен на основе метаданных, связанных с одним или более опорными изображениями, например, из непосредственно предшествующего (в порядке декодирования) опорного изображения с использованием вектора движения, относящегося к любому из пяти отсчетов, обозначенных А0, А1 и В0, B1, В2 (102-106 соответственно). В стандарте Н.265 для предсказания векторов движения могут использоваться кандидаты из того же опорного изображения, которое применялось для соседнего блока.
Сущность изобретения
[0015] В аспектах настоящего изобретения предложены способы и устройства для видеокодирования в декодере. В одном из вариантов осуществления настоящего изобретения предложен способ видеокодирования в декодере. В предложенном способе принимают битовый поток кодированного видео, включающий текущее изображение. Выполняют определение, кодирован ли текущий блок в текущем пакете кодового дерева (coding tree unit, CTU), содержащемся в текущем изображении, в режиме внутреннего копирования блоков (intra block copy, IBC), на основе флага, включенного в битовый поток кодированного видео. В ответ на определение того, что текущий блок кодирован в режиме IBC-копирования, определяют вектор блока, указывающий на первый опорный блок для текущего блока; над упомянутым вектором блока выполняют операцию, в результате чего, когда первый опорный блок не полностью восстановлен или находится вне корректного диапазона поиска для текущего блока, вектор блока модифицируют так, чтобы он указывал на второй опорный блок, который находится в полностью восстановленной области и внутри корректного диапазона поиска для текущего блока; и текущий блок декодируют на основе модифицированного вектора блока.
[0016] В одном из вариантов осуществления настоящего изобретения упомянутые полностью восстановленная область и текущий блок находятся в одном тайле, слайсе или группе тайлов.
[0017] В одном из вариантов осуществления настоящего изобретения выполнение упомянутой операции включает выполнение операции по модулю над х-компонентой и над у-компонентой вектора блока на основе размера текущего CTU.
[0018] В одном из вариантов осуществления настоящего изобретения выполнение упомянутой операции включает выполнение операции по модулю над х-компонентой вектора блока на основе значения, кратного размеру текущего CTU. Упомянутая операция включает также выполнение операции по модулю над у-компонентой вектора блока на основе размера текущего CTU.
[0019] В одном из вариантов осуществления настоящего изобретения выполнение упомянутой операции модифицирует вектор блока, только когда первый опорный блок не полностью восстановлен или находится вне корректного диапазона поиска для текущего блока.
[0020] В одном из вариантов осуществления настоящего изобретения выполнение упомянутой операции не модифицирует вектор блока, когда первый опорный блок полностью восстановлен и находится внутри корректного диапазона поиска для текущего блока.
[0021] В одном из вариантов осуществления настоящего изобретения корректный диапазон поиска для текущего блока включает текущий CTU.
[0022] В одном из вариантов осуществления настоящего изобретения выполнение упомянутой операции модифицирует блок так, что смещение первого опорного блока относительно CTU, включающего первый опорный блок, идентично смещению второго опорного блока относительно текущего CTU.
[0023] В одном из вариантов осуществления настоящего изобретения выполнение упомянутой операции включает усечение вектора блока так, чтобы усеченный вектор блока указывал на второй опорный блок, который лежит на границе корректного диапазона поиска для текущего блока, когда первый опорный блок не полностью восстановлен или не находится внутри корректного диапазона поиска для текущего блока.
[0024] В аспектах настоящего изобретения предложены устройства, сконфигурированные для выполнения любых из описанных выше способов.
[0025] В аспектах настоящего изобретения также предложены машиночитаемые носители данных, хранящие инструкции, которые, при исполнении компьютером, обеспечивают выполнение, этим компьютером, любых из описанных выше способов.
Краткое описание чертежей
[0026] Дополнительные признаки, сущность и различные преимущества предложенного изобретения могут быть уяснены более детально с помощью приведенного ниже подробного описания и приложенных чертежей, где:
[0027] на фиг. 1 показана эскизная иллюстрация текущего блока и окружающих его кандидатов на пространственное слияние в одном из примеров;
[0028] фиг. 2 представляет собой эскизное изображение упрощенной блок-схемы системы связи, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0029] фиг. 3 представляет собой эскизное изображение упрощенной блок-схемы системы связи, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0030] фиг. 4 представляет собой эскизное изображение упрощенной блок-схемы декодера, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0031] фиг. 5 представляет собой эскизное изображение упрощенной блок-схемы кодера, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0032] на фиг. 6 показана блок-схема кодера в соответствии с одним из вариантов осуществления настоящего изобретения;
[0033] на фиг. 7 показана блок-схема декодера в соответствии с одним из вариантов осуществления настоящего изобретения;
[0034] на фиг. 8 показан пример компенсации на основе внутреннего копирования блоков (IBC) в соответствии с одним из вариантов осуществления настоящего изобретения;
[0035] на фиг. 9A-9D показаны примеры компенсации на основе IBC-копирования в соответствии с некоторыми из вариантов осуществления настоящего изобретения;
[0036] на фиг. 10 показан пример кандидатов на пространственное слияние в соответствии с одним из вариантов осуществления настоящего изобретения;
[0037] на фиг. 11 показана блок-схема алгоритма, иллюстрирующая процедуру декодирования в соответствии с одним из вариантов осуществления настоящего изобретения;
[0038] фиг. 12 представляет собой схематическую иллюстрацию компьютерной системы в соответствии с одним из вариантов осуществления настоящего изобретения.
Подробное описание вариантов осуществления изобретения
[0039] I. Кодер и декодер для видеокодирования
[0040] На фиг. 2 проиллюстрирована упрощенная блок-схема системы (200) связи в соответствии одним из примеров осуществления настоящего изобретения. Система (200) связи включает множество терминальных устройств, которые могут взаимодействовать друг с другом, например, по сети (250). Например, система (200) связи может включать первую пару терминальных устройств (210) и (220), связанных по сети (250). В примере фиг. 2 первая пара терминальных устройств (210) и (220) выполняет однонаправленную передачу данных. К примеру, терминальное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных терминальным устройством (210)) для передачи в другое терминальное устройство (220) по сети (250). Кодированные видеоданные могут передаваться в форме одного или более битовых потоков кодированного видео. Терминальное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения в соответствии с восстановленными видеоданными. Однонаправленная передача данных широко применяется в приложениях медиасервисов и аналогичных приложениях.
[0041] В другом примере система (200) связи может включать вторую пару терминальных устройств (230) и (240), которые выполняют двунаправленную передачу кодированных видеоданных. Такая ситуация может возникать, например, при видеоконференцсвязи. При двунаправленной передаче данных, в одном из примеров, каждое терминальное устройство, (230) и (240), может кодировать видеоданные (например, поток видеоизображений, захваченных терминальным устройством) для передачи в другое терминальное устройство, (230) или (240), по сети (250). Каждое из терминальных устройств (230) и (240) может также принимать кодированные видеоданные, переданные другим терминальным устройством, (230) или (240), и декодировать кодированные видеоданные, чтобы восстанавливать видеоизображения, а также воспроизводить видеоизображения на имеющемся дисплейном устройстве в соответствии с восстановленными видеоданными.
[0042] В примере фиг. 2 терминальные устройства (210), (220), (230) и (240) могут быть серверами, персональными компьютерами или смартфонами, однако без ограничения ими замысла настоящего изобретения. Варианты осуществления настоящего изобретения могут применяться в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференцсвязи. Сеть (250) может представлять собой любое количество сетей, передающих кодированные видеоданные между терминальными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть (250) связи может обеспечивать обмен данными по линиям связи с коммутацией каналов и/или коммутацией пакетов. Примерами таких сетей могут быть телекоммуникационные сети, локальные вычислительные сети, глобальные вычислительные сети и/или Интернет. В настоящем описании архитектура и топология сети (250) не играют никакой роли в функционировании предложенного изобретения, если на это явно не указано.
[0043] На фиг. 3 проиллюстрировано, в качестве примера применения настоящего изобретения, размещение видеокодера и декодера в окружении потоковой передачи. Предложенное изобретение может применяться с равной эффективностью и в других областях, где используется видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранения сжатого видео на цифровых носителях, включая CD, DVD, карты памяти и т.п.
[0044] Система потоковой передачи может включать подсистему (313) захвата, которая может включать источник (301) видео, например, видеокамеру, которая формирует поток несжатых видеоизображений (302). В одном из примеров поток видеоизображений (302) может включать отсчеты, захватываемые цифровой камерой. Поток видеоизображений (302), показанный жирной линией, чтобы подчеркнуть высокий объем данных по сравнению с кодированными видеоданными (304) (кодированными битовыми потоками видео), может обрабатываться электронным устройством (320), которое включает видеокодер (303), связанный с источником (301) видео. Видеокодер (303) может включать аппаратное обеспечение, программное обеспечение, или их комбинацию, которые позволяют реализовать аспекты предложенного изобретения, в соответствии с последующим более подробным описанием. Кодированные видеоданные (304) (или кодированный битовый поток (304) видео) показанные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком видеоизображений (302), может сохраняться на сервере (305) потоковой передачи для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например, клиентская подсистема (306) и (308) на фиг. 3, могут осуществлять доступ к серверу (305) потоков передачи для получения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может включать видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует принятую копию (307) кодированных видеоданных и формирует выходной поток видеоизображений (311), который может быть отрисован на дисплее (312) (например, дисплейном экране) или на другом устройстве отображения (не показано на чертеже). В некоторых системах потоковой передачи кодированные видеоданные (304), (307) и (309) (например, битовые потоки) могут быть кодированы в соответствии с заданными стандартами видеокодирования/видеосжатия. Примеры таких стандартов включают, без ограничения, Рекомендацию Н.265. ITU-T. В одном из примеров может применяться разрабатывающийся в настоящее время стандарт видеокодирования, неофициально называемый универсальным видеокодированием (VVC). Описанное в данном документе изобретение может применяться в контексте стандарта VVC.
[0045] Следует отметить, что электронные устройства (320) и (330) могут включать и другие компоненты (не показаны на чертеже). К примеру, электронное устройство (320) может также включать видеодекодер (не показан на чертеже), а электронное устройство (330) - видеокодер (не показан на чертеже).
[0046] На фиг. 4 показана блок-схема видеодекодера (410) в соответствии с одним из вариантов осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может включать приемник (431) (например, приемные схемы). Видеодекодер (410) может использоваться вместо видеодекодера (310), показанного в примере фиг. 3.
[0047] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования при помощи декодера (410). В этом же или в альтернативном варианте осуществления настоящего изобретения прием видеопоследовательностей может выполняться поочередно, при этом декодирование каждой из кодированных видеопоследовательностей не зависит от декодирования остальных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (401), который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные вместе с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут перенаправляться в соответствующие использующие их элементы (не показано на чертеже). Приемник (431) может отделять кодированную видеопоследовательность от остальных данных. Для борьбы с сетевым «дрожанием» (джиггером) между приемником (431) и энтропийным декодером/анализатором (420) (далее, «анализатор») может быть установлена буферная память (415). В некоторых случаях практического применения буферная память (410) может быть частью видеодекодера (410). В других случаях она может располагаться вне видеодекодера (410) (не показано на чертеже). В иных случаях может присутствовать буферная память вне видеодекодера (410) (не показано на чертеже), например, для борьбы с сетевым джиттером, а также, дополнительно, еще одна буферная память (415) внутри видеодекодера (410), например, для соблюдения тайминга воспроизведения. Когда приемник (431) принимает данные из устройства хранения или передачи с достаточной полосой пропускания и управляемостью, или из сети с изосинхронной передачей, буфер (415) быть не нужен или иметь малый объем. В случае применения пакетных сетей с негарантированной доставкой, таких как Интернет, буфер 315 необходим, может быть сравнительно объемным и иметь при этом адаптивный размер, при этом он по меньшей мере отчасти может быть реализован в операционной системе или в аналогичных элементах (не показано на чертеже) вне видеодекодера (410).
[0048] Видеодекодер (410) может содержать анализатор (420) для восстановления символов (421) из энтропийно-кодированной видеопоследовательности. Различные типы этих символов могут включать информацию, используемую для управления работой видеодекодера (410), а также, потенциально, информацию для управления устройством отображения, например, устройством отображения (412) (к примеру, дисплейного экрана), которое не является интегральной частью электронного устройства (430), однако может быть с ним связано, в соответствии с иллюстрацией фиг. 3. Управляющая информация для устройств отображения может, например, иметь форму сообщений дополнительной уточняющей информации (Supplementary Enhancement Information, SEI) или фрагментов наборов параметров информации об используемости видео (Video Usability Information, VUI) (не показано на чертеже). Анализатор (420) может выполнять анализ/энтропийное декодирование принятой кодированной видеопоследовательности. Кодированная видеопоследовательность может быть кодирована в соответствии с некоторой технологией или стандартом видеокодирования, и может различным следовать принципам, хорошо известным специалистам в данной области техники, включая кодирование с переменной длиной кодового слова, кодирование Хаффмана, контекстно-зависимое или контекстно-независимое арифметическое кодирование и т.п. Анализатор (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной подгруппы пикселей в видеодекодере, на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (Groups of Pictures, GOP), изображения, тайлы, слайсы, макроблоки, кодовые пакеты (Coding Units, CU), блоки отсчетов (blocks), пакеты преобразования (Transform Units, TU), пакеты предсказания (Prediction Units, PU) и т.п. Анализатор (420) может также извлекать из кодированной видеопоследовательности такую информацию, как коэффициенты преобразования, значения параметров квантователя, векторы движения и т.п.
[0049] Анализатор (420) может выполнять операции энтропийного декодирования/анализа над видеопоследовательностью, принятой из буферной памяти (415), и формировать символы (421).
[0050] При восстановлении символов (421) могут задействоваться различные блоки устройства, в зависимости от типа кодированных видеоизображений или их частей (например, внутренне и внешне предсказываемые изображения, внутренне и внешне предсказываемые блоки отсчетов), а также от других факторов. \То, какие блоки устройства будут задействованы, и каким образом, может определяться управляющей информацией подгруппы, извлеченной из кодированной видеопоследовательности анализатором (420). Для простоты поток такой управляющей информации подгруппы между анализатором (420) и множеством описанных ниже блоков устройства на чертеже не показан.
[0051] Помимо уже упомянутых функциональных блоков видеодекодер (410) может быть концептуально подразбит на набор функциональных блоков, описанных ниже. В практических реализациях, применяемых в коммерческих условиях, многие из этих блоков плотно взаимодействуют друг с другом и могут быть, по меньшей мере частично, взаимно интегрированы. Однако в целях описания предложенного изобретения подходит описанное ниже подразделение на функциональные блоки.
[0052] Первым из таких блоков может быть блок (451) масштабирования/обратного преобразования. Блок (451) масштабирования/обратного преобразования принимает квантованные коэффициенты преобразования, а также управляющую информацию, включая информацию о том, какое преобразование следует использовать, размер блока, коэффициент квантования, масштабирующие матрицы квантования и т.п., в виде символов (421) из анализатора (420). Блок (451) масштабирования/обратного преобразования может выдавать блоки отсчетов, включающие значения отсчетов, которые могут быть введены в агрегатор (455).
[0053] В некоторых случаях отсчеты на выходе из блока (451) масштабирования/обратного преобразования могут относиться к внутренне кодируемому блоку отсчетов, то есть: блоку отсчетов, для которого не используют информацию предсказания из ранее восстановленных изображений, но могут использовать информацию из ранее восстановленных частей текущего изображения. Такая информация предсказания может предоставляться блоком (452) внутреннего предсказания изображений. В некоторых случаях блок (452) внутреннего предсказания изображений формирует блок тех же размеров и формы, что и восстанавливаемый блок, с использованием уже восстановленной информации его окружения, полученной из текущего (частично восстановленного) изображения в буфере (458) текущих изображений. В буфер (458) текущих изображений помещают, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (455) может в некоторых случаях добавлять информацию предсказания, сформированную блоком (452) внутреннего предсказания, к выходной информации отсчетов, предоставляемой блоком 451 масштабирования/обратного преобразования, индивидуально для каждого отсчета.
[0054] В других случаях отсчеты на выходе блока (451) масштабирования/обратного преобразования могут относиться к внешнему предсказанию, и потенциально, блоку отсчетов с компенсацией движения. В таких случаях блок (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений и получать отсчеты, используемые для предсказания. После компенсации движения полученные отсчеты, в соответствии с символами (421), относящимися к этому блоку отсчетов, могут быть добавлены агрегатором (455) к выходным данным блока (451) масштабирования/обратного преобразования (в этом случае их называют разностными отсчетами или разностным сигналом), в результате чего формируют выходную информацию отсчетов. Адреса в памяти (457) опорных изображений, по которым блок (453) предсказания с компенсацией движения получает предсказанные отсчеты, могут определяться векторами движения, доступными для блока (453) предсказания с компенсацией движения в форме символов, которые могут иметь, например, Х-компоненту, Y-компоненту и компоненту опорного изображения. Компенсация движения может также включать интерполяцию значений отсчетов, полученных из памяти (457) опорных изображений, когда применяют векторы движения, механизмы предсказания векторов движения и т.п., имеющие субпиксельную точность.
[0055] Отсчеты на выходе из агрегатора (455) могут обрабатываться при помощи различных методов контурной фильтрации в блоке (456) контурной фильтрации. Технологии сжатия видео могут включать технологии внутриконтурной фильтрации, которые управляются параметрами, содержащимися в кодированной видеопоследовательности (также называемой битовым потоком кодированного видео), и предоставляемыми в блок (456) контурной фильтрации в виде символов (421) из анализатора (420). Они могут также зависеть от метаинформации, полученной при декодировании предшествующих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также - от ранее восстановленных и прошедших контурную фильтрацию значений отсчетов.
[0056] Выходными данными блока (456) контурной фильтрации может быть поток отсчетов, который подают в устройство (412) отображения, а также сохраняют в памяти (457) опорных изображений для использования при будущем внешнем предсказании изображений.
[0057] Отдельные кодированные изображения, после их полного восстановления могут использоваться в качестве опорных для будущего предсказания. Например, после полного восстановления кодированного изображения, соответствующего текущему изображения, если оно было определено как опорное (например, анализатором (420)), текущее опорное изображение, хранимое в буфере (458) текущих изображений, может быть помещено в память (457) опорных изображений, и перед началом восстановления следующего кодированного изображения может быть выделен новый буфер текущих изображений.
[0058] Видеодекодер 410 может выполнять операции декодирования в соответствии с заранее заданной технологий сжатия видео, которая может быть задокументирована в стандарте, например, рекомендации Н.265 ITU-T. Кодированная видеопоследовательность может удовлетворять синтаксису, заданному применяемой технологией или стандартом сжатия видео, в том смысле, что она удовлетворяет синтаксису, заданному в документе, или стандарте, технологии сжатия видео, и в частности, синтаксису специфицированных профилей стандарта. В частности, профиль позволяют выбрать часть инструментов из всех инструментов, доступных в технологии или стандарте видеосжатия, как доступные для применения в этом профиле. При этом, чтобы отвечать некоторым из технологий или стандартов сжатия видео, сложность кодированной видеопоследовательности должна быть в пределах ограничений, определяемых уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни стандарта ограничивают максимальный размер изображения, максимальную частоту смены кадров, максимальную частоту восстановления отсчетов (измеряемую, например, в миллионах отсчетов за секунду), максимальный размер опорного изображения и т.п. Накладываемые уровнями ограничения в некоторых случаях могут быть дополнительно лимитированы при помощи спецификаций гипотетического опорного декодера (Hypothetical Reference Decoder (HRD) и метаданных для управления буфером HRD-декодера, сигнализируемых в кодированной видеопоследовательности.
[0059] В одном из вариантов осуществления настоящего изобретения приемник (431) может вместе с кодированным видео принимать дополнительные (избыточные) данные. Эти дополнительные данные могут быть составной частью кодированной видеопоследовательности (или видеопоследовательностей). Дополнительные данные могут использоваться видеодекодером (410) для корректного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут иметь форму, например, уточняющих временных, пространственных или уровней уточнения соотношения «сигнал-шум» (signal noise ratio, SNR), избыточных слайсов, избыточных изображений, кодов упреждающей коррекции ошибок и т.п.
[0060] На фиг. 5 показана блок-схема видеокодера (503) в соответствии с одним из вариантов осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) содержит передатчик (540) (например, передающие схемы). Видеокодер (503) может использоваться вместо видеокодера (303), показанного в примере фиг. 3.
[0061] Видеокодер (503) может принимать видеоотсчеты из источника (501) видео (который не является частью электронного устройства (520) в примере фиг. 5), захватывающего видеоизображения для кодирования при помощи видеокодера (503). В другом примере источник (501) видео может быть частью электронного устройства (520).
[0062] Источник (501) видео может подавать исходную видеопоследовательность для кодирования видеокодером (503) в форме цифрового потока видеоотсчетов, имеющих любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру отчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе медиасервиса источник (501) видео может быть запоминающим устройством, на котором хранят заранее подготовленное видео. В системе видеоконференцсвязи источник (501) видео может быть видеокамерой, которая захватывает информацию изображений локально в форме видеопоследовательности. Видеоданные могут иметь форму множества отдельных изображений, которые передают ощущение движения при их последовательном просмотре. Сами изображения могут быть организованы в виде пространственной матрицы пикселей, где каждый пиксель может включать один или более отсчетов, в зависимости от применяемой структуры отсчетов, цветового пространства и т.п. Специалистам в данной области техники должно быть очевидна связь между пикселями и отсчетами. Далее в настоящем описании будут рассматриваться отсчеты.
[0063] В соответствии с одним из вариантов осуществления настоящего изобретения видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени, или в соответствии с другими временными ограничениями, накладываемыми практическим применением. Одной из функций контроллера (550) может быть обеспечение подходящей скорости кодирования. В некоторых из вариантов осуществления настоящего изобретения контроллер (550) управляет другими функциональными блоками, описанными ниже, и функционально связан с этими блоками. Эта связь для простоты на чертеже не показана. Параметры, задаваемые контроллером (550), могут включать параметры, связанные с управлением скоростью (пропуск изображений, квантователь, значение λ для методов оптимизации скорость-искажения, …), размером изображений, компоновкой групп изображений (GOP), максимальным диапазоном поиска векторов движения и т.п. Контроллер (550) может быть сконфигурирован для наличия других подходящих функций, относящихся к видеокодеру (503), оптимизированному для конкретной конструкции системы.
[0064] В некоторых вариантах осуществления настоящего изобретения видеокодер (503) может быть сконфигурирован для работы в петле кодирования. Крайне упрощенно, в одном из примеров, петля кодирования может включать кодер (530) источника (например, который отвечает за формирование символов, то есть, потока символов, на основе кодируемого входного изображения, и опорных изображений), и (локального) декодера (533), встроенного в видеокодер (503). Декодер (533) восстанавливает символы, чтобы сформировать данные отсчетов, идентичные тем, которые бы также формировал (удаленный) декодер (поскольку сжатие символов в кодированном битовом потоке в технологиях сжатия, рассматриваемых в настоящем изобретении, выполняют без потерь). Этот восстановленный поток отсчетов (данные отсчетов) может вводиться в память 534 опорных изображений. Поскольку декодирование потока символов дает результатом одинаковые с точностью до бита результаты, независимо от декодера (локального или удаленного), содержимое памяти (534) опорных изображений также одинаково с точностью до бита в локальном кодере и удаленном кодере. Другими словами, подсистема предсказания в кодере «видит» в качестве отсчетов опорных изображений в точности те же значения отсчетов, которые «увидит» декодер, используя предсказание при декодировании. Этот фундаментальный принцип синхронности опорных изображений (и результирующий дрейф, если синхронность не может быть обеспечена, например, из-за ошибок в канале) используется в некоторых решениях на существующем уровне техники.
[0065] Работа «локального» декодера (533) аналогична «удаленному» декодеру, например видеодекодеру (410), которая уже была подробно описана выше в связи с фиг. 4. Однако, возвращаясь к фиг. 4, поскольку символы доступны, а кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может выполняться без потерь, в локальном декодере (533) могут не быть в полной мере реализованы подсистемы энтропийного декодирования из состава декодера (410), включая буферную память (415) и анализатор (420).
[0066] Здесь можно заметить, что любая технология декодирования, помимо анализа/энтропийного декодирования, имеющаяся в декодере, должна присутствовать в по существу идентичной функциональной форме в соответствующем кодере. По этой причине описание настоящего изобретения сконцентрировано на работе декодера. Описание технологий кодирования может быть опущено, поскольку они могут быть обратными подробно описанным технологиям декодирования. Лишь в некоторых местах необходимо более подробное описание, и оно будет приведено ниже.
[0067] При выполнении своих операций, в некоторых из примеров, кодер (530) источника может выполнять кодирование с предсказанием на основе компенсации движения, при котором входное изображение кодируют с предсказанием на основе одного или более ранее кодированных изображений видеопоследовательности, которые были помечены как «опорные кадры». Таким образом, подсистема (532) кодирования кодирует разности между блоками пикселей во входном изображении и блоками пикселей в опорном изображении (или изображения), которые могут быть выбраны как опорные для предсказания входного изображения.
[0068] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, помеченные как опорные, в зависимости от символов, формируемых кодером (530) источника. Операции подсистемы (532) кодирования, предпочтительно, являются обработкой данных с потерями. Когда кодированные видеоданные декодируют в видеодекодере (не показан на фиг. 5), восстановленная видеопоследовательность, как правило, является репликой исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) в точности воспроизводит процесс декодирования, который мог бы выполняться удаленным видеодекодером, над опорными изображениями и помещает восстановленные опорные изображения в кэш (534) опорных изображений. Таким образом, в видеокодере (503) могут локально храниться копии восстановленных опорных изображений, имеющих то же содержание, что и восстановленные опорные изображения, получаемые удаленным видеодекодером (при отсутствии ошибок передачи).
[0069] Предиктор (535) может выполнять поиск предсказаний для подсистемы (532) кодирования. То есть, для нового кодируемого изображения предиктор (535) может выполнять поиск в памяти (534) опорных изображений, чтобы найти данные отсчетов (в качестве кандидатных опорных блоков пикселей), или метаданные, например, векторы движений опорных изображений, формы блоков и т.п., которые могут служить опорными для новых изображений. Предиктор (535), может находить подходящие опорные данные для каждого отдельного блока пикселей. В некоторых случаях, в зависимости от результатов поиска, полученных предиктором (535), опорные данные для предсказания входного изображения могут извлекаться из нескольких опорных изображений, хранимых в памяти (534) опорных изображений.
[0070] Контроллер (550) может управлять операциями кодирования в кодере (530) источника, включая, например, задание параметров и параметров подгрупп, используемых для кодирования видеоданных.
[0071] Выходные данные всех описанных выше функциональных блоков могут подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) преобразует символы, формируемые различными функциональными блоками, в кодированную видеопоследовательность при помощи сжатия этих символов, без потерь, в соответствии с технологиями, известными специалистами в данной области техники, например, кодированием Хоффмана, кодированием с переменной длиной кодового слова, арифметическим кодированием и т.п.
[0072] Передатчик (540) может буферизовать кодированную видеопоследовательность (или видеопоследовательности), формируемую энтропийным кодером (545), чтобы подготовить ее к передаче по каналу (560), связи, который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные из видеокодера (503) с другими передаваемыми данными, например, потоками кодированных аудиоданных и/или служебных данных (их источники не показаны на чертеже).
[0073] Контроллер (550) может управлять работой видеокодера (503). При кодировании контроллер (550) может присваивать каждому кодированному изображению некоторый тип кодированного изображения, который может влиять на применяемые к нему методы кодирования. Например, изображениям может быть присвоен один из следующих типов:
[0074] Внутренне предсказываемым изображением (1-изображением) может быть изображение, которое кодируют и декодируют без использования, в качестве источника для предсказания, каких-либо других изображений видеопоследовательности. Некоторые видеокодеки поддерживают различные типы внутренне предсказываемых изображений, например, изображения независимого обновления декодирования (Independent Decoder Refresh, IDR). Специалисты в данной области техники должны быть осведомлены о подобных вариантах 1-изображений, а также об их свойствах и применимости.
[0075] Предсказываемое изображение (Р-изображение) - это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум одного вектора движения и указателя на опорное изображение для предсказания значений отсчетов каждого блока.
[0076] Двунаправленно предсказываемое изображение (В-изображение) - это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум двух векторов движения и указателей на опорное изображение для предсказания значений отсчетов каждого блока. Аналогично, в случае множественно предсказываемых изображений могут применяться более чем два опорных изображения и соответствующих метаданных, чтобы восстановить один блок.
[0077] Исходные изображения обычно пространственно разбивают на множество блоков отсчетов (например, блоки размера 4×4, 8×8, 4×8 или 16×16 отсчетов в каждом) и кодируют поблочно. Блоки отсчетов могут кодироваться с предсказанием на основе других (уже кодированных) блоков, в зависимости от типов кодирования, назначенных соответствующим этим блоками изображениям. К примеру, блоки отсчетов в I-изображениях могут кодироваться без предсказания или с предсказанием на основе уже кодированных блоков того же изображения («пространственное предсказание» или «внутреннее предсказание»). Блоки пикселей в Р-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного ранее кодированного опорного изображения. Блоки пикселей в В-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного или двух ранее кодированных опорных изображений.
[0078] Видеокодер (503) может выполнять операции кодирования в соответствии с заранее заданной технологией или стандартом видеокодирования, которые могут быть задокументированы в стандарте, например, рекомендации Н.265 ITU-T.H.265. При своем функционировании видеокодер (503) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, использующие временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, соответственно, могут удовлетворять синтаксису, заданному применяемой технологией или стандартом видеокодирования.
[0079] В одном из вариантов осуществления настоящего изобретения передатчик (540) может, совместно с кодированным видео, передавать дополнительные данные. Кодер (530) источника, например, может предоставлять такие данные, как фрагмент кодированной видеопоследовательности. Дополнительные данные могут включать данные уточняющих временных, пространственных или SNR уровней, избыточных изображений или слайсов, сообщений SEI или фрагментов наборов параметров VUI и т.п.
[0080] Видео может захватываться в виде множества исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно называемое «внутренним предсказанием») возможно из-за наличия в изображениях пространственных корреляций, а внешнее предсказание изображений возможно из-за корреляции (временной или иной) между различными изображениями. В одном из примеров кодируемое или декодируемое изображение, которое называют текущим изображением, разбивают на блоки отсчетов. Когда блок в текущем изображении сходен с опорным блоком отсчетов в ранее кодированном и все еще находящемся в буфере опорным изображении этого же видео, такой блок текущего изображения может быть кодирован при помощи вектора, называемого вектором движения. Вектор движения указывает на опорный блок в опорном изображении, а также, если применяются множественные опорные изображения, имеет третье измерение, идентифицирующее опорное изображение.
[0081] В некоторых из вариантов для внешнего предсказания изображений может применяться метод двунаправленного предсказания. В методе двунаправленного предсказания используют два опорных изображения, а именно, первое опорное изображение и второе опорное изображение, оба из которых предшествуют в видео текущему изображению в порядке декодирования (однако могут быть предшествующим и следующим, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться при помощи первого вектора движения, указывающего на первый опорный блок в первом опорном изображении, и второго вектора движения, указывающего на второй опорный блок во втором опорном изображении. Блок может предсказываться при помощи комбинации из первого опорного блока и второго опорного блока.
[0082] Также, для повышения эффективности кодирования, при внешнем предсказании изображений может применяться метод режима слияния.
[0083] В соответствии с некоторыми из вариантов осуществления настоящего изобретения элементарной единицей для предсказания, то есть, внешнего и внутреннего предсказания изображений, являются блоки отсчетов. К примеру, в соответствии со стандартном HEVC изображение в последовательности видеоизображений для сжатия разбивают на пакеты кодового дерева (CTU), при этом все пакеты CTU в изображении имеют одинаковый размер, а именно, 64×64 пикселя, 32×32 пикселя или 16×16 пикселей. В общем случае CTU содержит три блока кодового дерева (coding tree blocks, СТВ): один блок СТВ яркости и два блока СТВ цветности. Каждый CTU может быть рекурсивно разбит, в форме квадродерева, на один или более пакетов кодирования (coding units, CU). К примеру, CTU размером 64×64 пикселей может быть разбит на один пакет кодирования, CU, размером 64×64 пикселя, на четыре пакета CU размером 32×32 пикселя или на 16 пакетов CU размером 16×16 пикселей. В одном из примеров каждый пакет CU анализируют, чтобы определить тип предсказания для этого пакета, то есть, внешнее предсказание или внутреннее предсказание. Пакет CU разбивают на один или более пакетов предсказания (prediction unit, PU), в зависимости от возможности временного и/или пространственного предсказания. В общем случае каждый пакет PU содержит блок предсказания (prediction block, РВ) яркости и два блока РВ цветности. В одном из вариантов осуществления настоящего изобретения элементарной единицей для операции предсказания при кодировании (кодировании/декодировании) является блок предсказания. На примере блока предсказания яркости: блок предсказания содержит матрицу значений (например, значений яркости) пикселей, к примеру, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[0084] На фиг. 6 показана блок-схема видеокодера (603) в соответствии с еще одним из вариантов осуществления настоящего изобретения. Видеокодер (603) сконфигурирован для приема обрабатываемого блока (например, блока предсказания) значений отсчетов внутри текущего видеоизображения из последовательности видеоизображений и для кодирования обрабатываемого блока в кодированное изображение, являющее частью кодированной видеопоследовательности. В одном из примеров видеокодер (603) может использоваться вместо видеокодера (303), показанного в примере фиг. 3.
[0085] В случае стандарта HEVC видеокодер (603) принимает, в качестве обрабатываемого блока, матрицу значений отсчетов, например, блок предсказания размером 8x8 отсчетов. Видеокодер (603) определяет, может ли обрабатываемый блок быть наиболее эффективно кодирован с использованием режима внутреннего предсказания, внешнего предсказания или двунаправленного предсказания при помощи, например, оптимизации соотношения «битовая скорость - искажения». Если обрабатываемый блок будет кодироваться в режиме внутреннего предсказания, видеокодер (603) может использовать метод внутреннего предсказания для кодирования обрабатываемого блока в кодированное изображение; а когда обрабатываемый блок будет кодироваться в режиме внешнего предсказания или двунаправленного предсказания, видеокодер (603) может использовать для кодирования обрабатываемого блока метод внешнего предсказания или двунаправленного предсказания, соответственно. В некоторых технологиях видеокодирования режим слияния может быть подрежимом внешнего предсказания изображений, в котором вектор движения вычисляют на основе одного или более предсказаний векторов движения без задействования кодированной составляющей вектора движения вне предсказаний. В некоторых других технологиях видеокодирования составляющая вектора движения, применимая к обрабатываемому блоку, может присутствовать. В одном из примеров видеокодер (603) может содержать и другие компоненты, такие как модуль определения режима (не показан на чертеже) для определения режима, применяемого к обрабатываемым блокам.
[0086] В примере фиг. 6 видеокодер (603) включает кодер (630) с внешним предсказанием, кодер (622) с внутренним предсказанием, вычислитель (623) остатка, переключатель (626), кодер (624) остатка, основной контроллер (621) и энтропийный кодер, соединенные вместе в соответствии с иллюстрацией фиг. 6.
[0087] Кодер (630) с внешним предсказанием сконфигурирован для приема отсчетов текущего блока (например, обрабатываемого блока), для сравнения этого блока с одним или более опорными блоками в опорных изображениях (например, блоками в предшествующих и последующих изображениях), для формирования информации внешнего предсказания (например, описания избыточной информации в соответствии с методом внешнего предсказания, векторов движения, информации режима слияния) и для вычисления результатов внешнего предсказания (например, предсказанного блока) на основе информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорные изображения являются опорными изображениями, декодированными на основе кодированной видеоинформации.
[0088] Кодер (622) с внутренним предсказанием сконфигурирован для приема отсчетов текущего блока (например, обрабатываемого блока), в некоторых случаях, для сравнения этого блока с уже кодированными блоками в этом же изображении, для формирования квантованных коэффициентов после преобразования, и в некоторых случаях, также информации внутреннего предсказания (например, информации о направлении внутреннего предсказания в соответствии с одним или более методами внутреннего предсказания). В одном из примеров кодер (622) с внутренним предсказанием также вычисляет результаты внутреннего предсказания (например, предсказанный блок) на основе информации внутреннего предсказания и опорных блоков отсчетов в том же изображении.
[0089] Основной контроллер (621) сконфигурирован для определения данных общего управления и для управления остальными компонентами видеокодера (603) на основе данных общего управления. В одном из примеров основной контроллер (621) может определять режим для блока и подавать сигнал управления на переключатель (626) в зависимости от режима. Например, когда необходим режим внутреннего предсказания, основной контролер (621) управляет переключателем (626) для обеспечения использования результата режима внутреннего предсказания вычислителем (623) остатка, а также управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения этой информации в битовый поток; а когда необходим режим внешнего предсказания, основной контроллер (621) управляет переключателем (626) для обеспечения использования результата режима внешнего предсказания вычислителем (623) остатка, а также управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения этой информации в битовый поток.
[0090] Вычислитель (623) остатка сконфигурирован для вычисления разности (данных остатка) между принятым блоком отсчетов и результатами предсказания, выбранными из кодера (622) с внутренним предсказанием или кодера (630) с внешним предсказанием. Кодер (624) остатка сконфигурирован для выполнения операций на основе данных остатка и кодирования данных остатка, чтобы сформировать коэффициенты преобразования. В одном из примеров кодер (624) остатка, чтобы формировать коэффициенты преобразования, может быть сконфигурирован для преобразования данных остатка из пространственных в частотные. Коэффициенты преобразования затем подвергают квантованию и получают квантованные коэффициенты преобразования. В различных вариантах осуществления настоящего изобретения видеокодер (603) включает также декодер (628) остатка. Декодер (628) остатка сконфигурирован для выполнения обратного преобразования и формирования декодированных данных остатка. Декодированные данные остатка соответствующим образом используются в кодере (622) с внутренним предсказанием и кодере (630) с внешним предсказанием. К примеру, кодер (630) с внешним предсказанием может формировать декодированные блоки отсчетов на основе декодированных данных остатка и информации внешнего предсказания, а кодер (622) с внутренним предсказанием может формировать декодированные блоки отсчетов на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки отсчетов соответствующим образом обрабатывают и формируют декодированные изображения, которые, в некоторых примерах, могут быть буферизованы в запоминающих схемах (не показаны на чертеже) и использованы в качестве опорных изображений.
[0091] Энтропийный кодер (625) сконфигурирован для форматирования битового потока с включением в него кодированного блока. Энтропийный кодер (625) сконфигурирован для включения [в битовый поток] различной информации в соответствии с используемым стандартом, например, стандартом HEVC. В одном из примеров энтропийный кодер (625) может быть сконфигурирован для включения, в битовый поток, данных общего управления, выбранной информации предсказания (например, информации внутреннего предсказания или внешнего предсказания), информации остатка и другой подходящей информации. Следует отметить, что в соответствии с настоящим изобретением при кодировании блока в подрежиме слияния, как в режиме внутреннего предсказания, так и в режиме внешнего предсказания, информация остатка отсутствует.
[0092] На фиг. 7 показана блок-схема видеодекодера (710) в соответствии с еще одним из вариантов осуществления настоящего изобретения. Видеодекодер (710) сконфигурирован для приема кодированных изображений, являющихся частью кодированной видеопоследовательности, и для декодирования кодированных изображений с целью формирования восстановленных изображений. В одном из примеров видеодекодер (710) может использоваться вместо видеодекодера (310), показанного в примере фиг. 3.
[0093] В примере фиг. 7 видеодекодер (710) включает энтропийный декодер (771), декодер (780) с внешним предсказанием, декодер (773) остатка, модуль (774) восстановления и декодер (772) с внутренним предсказанием, объединенные в соответствии с иллюстрацией фиг. 7.
[0094] Энтропийный декодер (771) может быть сконфигурирован для восстановления, на основе кодированного изображения, символов, которые представляют синтаксические элементы, составляющие кодированное изображение. Эти символы могут включать, например: режим, в котором кодирован блок (например, режим внутреннего предсказания, режим внешнего предсказания, режим двунаправленного предсказания, причем последние два могут быть в подрежиме слияния или ином подрежиме), информация предсказания (например, информация внутреннего предсказания или внешнего предсказания), которая может указывать на фрагмент метаданных, используемый для предсказания декодером (772) с внутренним предсказанием или декодером (780) с внешним предсказанием, соответственно, информация остатка, например, в форме квантованных коэффициентов преобразования, и т.п. В одном из примеров, когда режимом является режим внешнего предсказания или двунаправленного предсказания, информацию внешнего предсказания предоставляют в декодер (780) с внешним предсказанием; а когда используют тип внутреннего предсказания, информацию внутреннего предсказания предоставляют в декодер (772) с внутренним предсказанием. Информация остатка может быть подвергнута обратному квантованию и передана в декодер (773) остатка.
[0095] Декодер (780) с внешним предсказанием сконфигурирован для приема информации внешнего предсказания и формирования результатов внешнего предсказания на ее основе.
[0096] Декодер (772) с внутренним предсказанием сконфигурирован для приема информации внутреннего предсказания и формирования результатов внешнего предсказания на ее основе.
[0097] Декодер (773) остатка сконфигурирован для выполнения обратного квантования для получения деквантованных коэффициентов преобразования, а также для обработки деквантованных коэффициентов преобразования, чтобы преобразовать остаток из частотных значений в пространственные. В декодере (773) остатка может также быть необходима определенная информация управления, включающая параметр квантователя (Quantizer Parameter, QP), которая может предоставляться энтропийным декодером (771) (этот путь прохождения данных не показан на чертеже, поскольку такая управляющая информация имеет лишь малый объем).
[0098] Модуль (774) восстановления сконфигурирован для комбинирования, в пространственных значениях, остатка, выданного декодером (773) остатка, и результатов предсказания (выданных модулями внешнего предсказания или внутреннего предсказания, в зависимости от конкретной ситуации), с формированием восстановленного блока, который может быть частью восстановленного изображения, а восстановленное изображение, в свою очередь, может быть частью восстановленного видео. Следует отметить, что для повышения качества видео могут выполняться и другие соответствующие операции, например, операция деблокирования и т.п.
[0099] Следует отметить, что видеокодеры (303), (503) и (603), а также видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любой подходящей технологии. В одном из вариантов осуществления настоящего изобретения видеокодеры (303), (503) и (603), а также видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления настоящего изобретения видеокодеры (303), (503) и (503), а также видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, исполняющих программные инструкции.
[0100] II. Внутреннее копирование блоков
[0101] Блок может быть кодирован с использованием опорного блока из того же изображения или из другого изображения. Компенсация блоков с использованием опорных блоков из других изображений может называться компенсацией движения. Компенсация блоков с использованием опорных блоков из ранее восстановленных областей того же изображения может называться внутренней компенсаций блоков, опорой на текущее изображение (current picture referencing, CPR) или внутренним копированием блоков (intra block copy, IBC). Вектор смещения, который отражает смещение между текущим блоком отсчетов и опорным блоком называют вектором блока (block vector, BV или bvL). В отличие от векторов движения при компенсации движения, которые могут иметь любое значение (положительно или отрицательное, как в направлении х, так и в направлении у), на векторы блока BV накладываются ограничения, гарантирующие, что опорный блок уже был восстановлен и его восстановленные отсчеты доступны. В некоторых из вариантов осуществления настоящего изобретения, в виду ограничений, накладываемых для возможности параллельной обработки, исключают опорные области вне заданных границ (например, границ тайла или границ в форме ступенчатой волны).
[0102] Кодирование вектора блока, BV, может быть явным или неявным. В явном режиме разность между вектором блока и его предсказанием может сигнализироваться аналогично режиму улучшенного предсказания векторов движения (advanced motion vector prediction, AMVP) при внешнем кодировании. В неявном режиме вектор блока может восстанавливаться на основе только предсказания, например, аналогично векторам движения в режиме слияния. Разрешение векторов блока, в некоторых реализациях, выбирают равным целочисленным позициям, или, в некоторых примерах, дробным позициям.
[0103] Использование IBC-копирования на уровне блока может сигнализироваться с использованием флага уровня блока (или флага IBC). В некоторых примерах этот флаг может быть выставлен, когда текущий блок не кодируют в режиме слияния. В других примерах этот флаг может выставляться при помощи указателя на опорные данные, например, за счет рассматривания текущего декодируемого изображения в качестве опорного. Такое опорное изображение может быть помещено на последнюю позицию в списке (например), в расширении кодирования экранного контента стандарта HEVC (screen content coding, SCC). Такое специальное опорное изображение может содержаться совместно с другими временными опорными изображениями в буфере декодированных изображений (decoded picture buffer, DPB).
[0104] В настоящем изобретении, в качестве примера, использован один из вариантов осуществления IBC-копирования, однако варианты осуществления настоящего изобретения могут применяться и для других вариаций IBC-копирования. Вариации IBC-копирования могут включать, например, трактовку IBC-копирования как третьего режима, отличающегося от режимов внутреннего предсказания или внешнего предсказания. Соответственно, предсказание вектора блока в режиме слияния и режиме AMVP может быть отделено от обычного режима внешнего предсказания. К примеру, для режима IBC-копирования может быть определен/сформирован отдельный список кандидатов на слияние, все записи в котором являются векторами блоков. Аналогично, список предсказания векторов блоков в режиме AMVP IBC может состоять только из векторов блоков. Процедура вычисления кандидатов в списке предсказания векторов блоков может следовать той же логике, что и в списке кандидатов внешнего слияния или списке предсказаний AMVP. К примеру, в режиме внешнего слияния HEVC или VVC для вычисления собственного списка кандидатов на слияния для IBC-копирования рассматривают 5 соседних пространственных местоположений.
[0105] Фиг. 8 представляет собой эскизную иллюстрацию текущего блока (810) отсчетов в текущем изображении (800), которое кодируют с использованием компенсации на основе IBC, в соответствии с одним из вариантов осуществления настоящего изобретения. На фиг. 8 показан один из примеров использования компенсации на основе IBC, в котором текущее изображение (800) включает 15 блоков отсчетов, организованных в 3 сроки и 5 столбцов. В некоторых примерах каждый блок соответствует CTUy. Текущий блок (810) отсчетов включает подблок (812) (например, блок кодирования в CTU), которые имеет вектор (822) блока, указывающий на опорный подблок (832) в текущем изображении (800).
[0106] Восстановленные отсчеты текущего изображения могут сохраняться в памяти или в блоке памяти (например, специальной или выделенной памяти, или фрагменте памяти). Для снижения сложности реализации опорная область, в которой могут находиться восстановленные отсчеты для опорных блоков, может быть меньшей, чем кадр целиком, в зависимости от объема выделенной памяти. Поэтому, для текущего подблока, к которому применяют компенсацию на основе IBC, в некоторых примерах опорные подблоки IBC могут быть ограничены только заданными соседними областями и не включать все изображение в целом.
[0107] В одном из примеров объем памяти может быть ограничен размером в один CTU, и это означает, что режим IBC-копирования может применяться, только когда опорный блок находится в том же CTU, что и текущий блок. В другом примере объем памяти может быть ограничен размером в два CTU, и это означает, что режим IBC-копирования может применяться, только когда опорный блок находится либо в текущем CTU, либо в CTU, расположенном слева от текущего. Когда опорный блок находится вне ограниченной опорной области (т.е., выделенной локальной области), даже если он восстановлен, такие опорные отсчеты не могут использоваться для компенсации на основе IBC-копирования. Соответственно, декодер должен проверять, указывает ли восстановленный или найденный вектор блока на опорный блок в ограниченной опорной области (т.е. корректной области поиска). Аспекты настоящего изобретения включают способы, снимающие некоторые из таких ограничений, что позволяет декодеру модифицировать и использовать вектор блока, даже когда вектор блока указывает на опорный блок вне ограниченной опорной области.
[0108] В одном из вариантов осуществления настоящего изобретения требования эффективного использования памяти диктуют необходимость хранения опорных отсчетов, используемых при IBC-копировании, в объеме размером один CTU. В одном из примеров размер CTU может быть равен 128×128 отсчетов. Текущий CTU включает текущую область, восстанавливаемую в данный момент.Текущая область имеет размер 64×64 отсчетов. Поскольку в опорной памяти могут также храниться восстановленные значения из текущей области, опорная память, когда ее объем равен одному CTUy размера 128×128 отсчетов, может содержать 3 дополнительные области размером 64×64 отсчета. Соответственно, диапазон поиска может включать отдельные части ранее восстановленного CTU, тогда как требования к памяти для хранения опорных отсчетов остаются неизменными (например, всего 1 CTU размером 128×128 отсчетов, или 4 раза по 64×64 опорных отсчетов).
[0109] В одном из примеров, когда при IBC-копировании диапазон поиска ограничен, вектор блока для текущего блока может быть ограничен границей текущего СТВ, границей левого соседнего СТВ или аналогичным образом, в зависимости от позиции текущего блока и объема памяти.
[0110] На Фиг. 9A-9D показаны примеры компенсации на основе IBC-копирования в соответствии с некоторыми из вариантов осуществления настоящего изобретения. В соответствии с иллюстрацией фиг. 9A-9D текущее изображение (901) включает текущий восстанавливаемый CTU (915) и ранее восстановленный CTU (910), соседний слева от текущего CTU (915). Пакеты CTU в текущем изображении (901) имеют размер CTU и ширину CTU. Текущий CTU (915) включает 4 области (916)-(919). Аналогично, ранее восстановленный CTU (910) включает 4 области (911)-(914). В одном из вариантов осуществления настоящего изобретения размер CTU может быть равен объему опорной памяти. К примеру, размер CTU и объем опорной памяти могут составлять 128×128 отсчетов, при этом каждая из областей (911)-(914) и (916)-(919) будут иметь размер 64×64 отсчета.
[0111] В соответствии с иллюстрацией фиг. 9А текущая область (916) находится в процессе восстановления. Текущая область (916) включает текущий восстанавливаемый блок. В соответствии с некоторыми из вариантов осуществления настоящего изобретения диапазон поиска для текущего блока не включает область (911), расположенную в той же позиции, что и текущая область (916), и включает области (912)-(914) ранее восстановленного CTU (910).
[0112] В соответствии с иллюстрацией фиг. 9 В в процессе реконструкции находится текущая область (917). Текущая область (917) включает текущий восстанавливаемый блок. В ранее восстановленном CTU (910) позицию текущей области (917) занимает (так называемая «сорасположенная») область (912). Диапазон поиска для текущего блока не включает сорасположенную область (912). Диапазон поиска включает области (913) и (914) ранее восстановленного CTU(910), а также область (916) в текущем CTU (915). Диапазон поиска также не включает область (911) из-за ограничений на объем опорной памяти (т.е. размер в один CTU).
[0113] В соответствии с иллюстрацией 9С в процессе реконструкции находится текущая область (918). Текущая область (918) включает текущий восстанавливаемый блок. В ранее восстановленном CTU (910) сорасположенной для текущей области (918) является область (913). Диапазон поиска для текущего блока не включает сорасположенную область (913). Диапазон поиска включает область (914) ранее восстановленного CTU (910), а также области (916) и (917) в текущем CTU (915). Диапазон поиска также не включает области (911) и (912) из-за ограничений на объем опорной памяти.
[0114] В соответствии с иллюстрацией фиг. 9D в процессе реконструкции находится текущая область (919). Текущая область (919) включает текущий восстанавливаемый блок. В ранее восстановленном CTU (910) сорасположенной для текущей области (919) является область (914). Диапазон поиска для текущего блока не включает сорасположенную область (914). Диапазон поиска включает области (916)-(918) в текущем CTU (915). Диапазон поиска не включает области (911)-(913) из-за ограничений на объем опорной памяти, и следовательно, диапазон поиска вообще не включает ранее восстановленный CTU (910).
[0115] На векторы блоков и/или диапазоны поиска могут накладываться различные ограничения. В одном из вариантов осуществления настоящего изобретения диапазон поиска для текущего восстанавливаемого блока в текущем CTU ограничен текущим пакетом CTU.
[0116] В одном из вариантов осуществления настоящего изобретения текущее изображение является изображением яркости (luma), а текущим пакетом CTU является CTU яркости, включающий множество отсчетов яркости и вектор блока (mvL, имеющий разрешение в 1/16 пикселя). В некоторых из вариантов осуществления настоящего изобретения вектор движения mvL яркости, в целях совместимости битового потока, подчиняется описанными ниже ограничениям A1, А2, B1, С1, и С2.
[0117] В некоторых из вариантов осуществления настоящего изобретения первое ограничение (А1) и второе ограничение (А2) требуют, чтобы опорный блок для текущего блока был уже восстановлен. К примеру, когда опорный блок имеет прямоугольную форму, может выполняться процедура проверки доступности, чтобы выяснить, восстановлены ли верхний левый и нижний правый отсчет опорного блока. Если и верхний левый, и правый нижний отсчет опорного блока восстановлены, делают вывод о том, что опорный блок восстановлен.
[0118] Для первого ограничения (А1), в соответствии с некоторыми из вариантов осуществления настоящего изобретения, когда вызывают процедуру определения доступности опорного блока, с позицией (xCurr, yCurr) верхнего левого отсчета текущего блока, заданной равной (xCb, yCb), и позицией (xCb + (mvL[0] >> 4), yCb + (mvL[1] >> 4)) верхнего левого отсчета опорного блока в качестве входных данных, на выходе будет получено TRUE («истина»), если верхний левый отсчет опорного блока отсчета восстановлен, где вектор движения mvL - это двумерный вектор, имеющий х-компоненту mvL[0] и у-компоненту mvL[1].
[0119] Для второго ограничения (А2), в соответствии с некоторыми из вариантов осуществления настоящего изобретения, когда вызывают процедуру определения доступности опорного блока, с позицией (xCurr, yCurr) верхнего левого отсчета текущего блока, заданной равной (xCb, yCb), и позицией (xCb + (mvL[0] >> 4) + cbWidth - 1, yCb + (mvL[1] >> 4) + cbHeight - 1) правого нижнего отсчета опорного блока в качестве входных данных, на выходе будет получено TRUE («истина»), если нижний правый отсчет опорного блока восстановлен. Параметры cbWidth и cbHeight представляют ширину и высоту опорного блока соответственно.
[0120] Третье ограничение (В1) в некоторых из вариантов осуществления настоящего изобретения включает по меньшей мере одно из следующих условий: 1) значение (mvL[0] >> 4) + cbWidth меньше или равно 0, это означает, что опорный блок слева находится слева от текущего блока и не накладывается на текущий блок; 2) значение (mvL[1] >> 4) + cbHeight меньше или равно 0, это означает, что опорный блок слева находится сверху от текущего блока и не накладывается на текущий блок.
[0121] В четвертом ограничении (С1), в некоторых из вариантов осуществления настоящего изобретения, должны выполняться следующие условия:
где CtbLog2SizeY равно логарифму по основанию 2 (log2) от ширины CTU. Например, когда ширина CTU равна 128 отсчетам, CtbLog2SizeY равно 7. Уравнения (1) и (2) определяют, что CTU, включающий опорный блок, находится в той же строке CTU, что и текущий CTU (т.е. ранее восстановленный CTU (1010) находится в той же строке, что и текущий CTU (1015), когда опорный блок находится в ранее восстановленном CTU(1010)). Уравнения (3) и (4) определяют, что CTU, включающий опорный блок, находится либо в столбце CTU слева от текущего CTU, либо в том же столбце, что и текущий CTU. Четвертое ограничение, описанное уравнениями (1)-(4) определяет, что CTU, включающий опорный блок, либо находится в текущем CTU, либо в соседнем слева CTU.
[0122] Пятое ограничение (С2), в некоторых из вариантов осуществления настоящего изобретения, определяет, что когда опорный блок является находится в соседнем слева от текущего CTU, сорасположенная опорному блоку область не восстановлена (т.е. ни один из отсчетов в сорасположенной области не был восстановлен). При этом сорасположенная область для опорного блока находится в текущем CTU.
[0123] В одном из примеров пятое ограничение может быть задано следующим образом: Если (xCb + (mvL[0] >> 4)) >> CtbLog2SizeY равно (xCb >> CtbLog2SizeY) - 1, когда вызывают процедуру определения доступности опорного блока, с позицией текущего блока (xCurr, yCurr), заданной равной (xCb, yCb), и позицией (((xCb + (mvL[0] >> 4) + CtbSizeY) >> (CtbLog2SizeY - 1)) << (CtbLog2SizeY - 1), ((yCb + (mvL[1] >> 4)) >> (CtbLog2SizeY - 1)) << (CtbLog2SizeY - 1)), в качестве входных данных, то значение FALSE («ложь») на выходе указывает на то, что сорасположенная область не восстановлена.
[0124] В приведенных выше уравнениях xCb и yCb являются координатами х и у текущего блока, соответственно. Переменные cbHeight и cbWidt представляют собой высоту и ширину текущего блока, соответственно. Переменные mvL0[0] и mvL0[1] обозначают х- и у-компоненты вектора mvL0 блока, соответственно. Ограничения на диапазон поиска и/или вектор блока могут включать любую подходящую комбинацию из описанных выше первого, второго, третьего, четвертого и пятого ограничений. В одном из примеров первое, второе, третье, четвертое и/или пятое ограничения могут быть модифицированы.
[0125] III. Кандидаты на пространственное слияние
[0126] На фиг. 10 показан пример кандидатных позиций на пространственное слияние в текущем блоке (1010) отсчетов, соответствии с одним из вариантов осуществления настоящего изобретения. Среди кандидатных позиций, показанный на фиг. 4, могут быть выбраны и вычислены максимум четыре кандидата на слияние. В одном из примеров порядок вычисления может быть следующим: А0, В0, B1, А1 и В2. В одном из примеров позицию В2 рассматривают, только если все пакеты кодирования с позициями А0, В,0 В1 и А1 недоступны или кодированы с внутренним предсказанием. В одном из примеров пакет кодирования в какой-либо позиции может быть недоступен, если этот пакет кодирования принадлежит другому слайсу или тайлу.
[0127] IV. Вычисление кандидатов на слияние на основе истории
[0128] В некоторых из вариантов осуществления настоящего изобретения кандидаты на слияние для предсказания векторов движения на основе истории (history-based motion vector prediction, HMVP) добавляют в расширенный список слияния текущего пакета кодирования после пространственных и временных кандидатных MVP-предсказаний. При HMVP-предсказании информация о движении ранее кодированных блоков отсчетов может храниться в таблице (или буфере истории) и использоваться в качестве MVP-кандидатов для текущего пакета кодирования. Такую информацию о движении называют HMVP-кандидатами. Таблица с множеством HMVP-кандидатов может обрабатываться в ходе процедур кодирования и декодирования. В одном из примеров таблица может быть сброшена (опустошена), когда начинается новая строка CTU. В одном из вариантов осуществления настоящего изобретения, когда встречается кодированный с внешним предсказанием пакет кодирования, не имеющий подблоков, соответствующая информация может заноситься в таблицу последней записью в качестве нового HMVP-кандидата.
[0129] В одном из вариантов осуществления настоящего изобретения размер таблицы HMVP, обозначенный S, может быть задан равным 6. Соответственно, в таблицу может быть добавлено вплоть до 6 HMVP-кандидатов. При добавлении в таблицу нового кандидата предсказания движения, в одном из вариантов осуществления настоящего изобретения, может применяться строгое правило «первым вошел, первым вышел» (first-in-first-out, FIFO). При этом при добавлении нового HMVP-кандидата может выполняться проверка на избыточность, чтобы выяснить, нет ли в таблице идентичного HMVP-кандидата. Если в таблице найден идентичный HMVP-кандидат, он может быть удален из таблице, а все следующие за ним HMVP-кандидаты могут быть сдвинуты вперед. Затем новый HMVP-кандидат может быть добавлен в конец таблицы.
[0130] В одном из вариантов осуществления настоящего изобретения HMVP-кандидаты используются в процедуре восстановления расширенного списка кандидатов на слияние. В одном из вариантов осуществления настоящего изобретения несколько вновь добавленных HMVP-кандидатов в таблице могут быть проверены друг за другом и вставлены в расширенный список кандидатов, в позициях после TMVP-кандидата. Чтобы определить, являются ли HMVP-кандидаты сходными или идентичными пространственным или временным кандидатам на слияние, ранее добавленным в расширенный список слияния, может выполняться проверка на избыточность.
[0131] HMVP-кандидаты могу также применяться в процедуре формирования списка AMVP-кандидатов. Вектора движения последних К HMVP-кандидатов в таблице вставляют после TMVP-кандидата. Для восстановления списка AMVP-кандидатов используют только HMVP-кандидаты, имеющие то же опорное изображение, что и целевое опорное изображение AMVP. Над HMVP-кандидатами выполняют процедуру отсечения ветвей. В некоторых практических применениях К выбирают равным 4, тогда как размер списка AMVP оставляют неизменным, то есть, равным 2.
[0132] Чтобы снизить число операций проверки на избыточность, в одном из вариантов осуществления настоящего изобретения могут быть введены следующие упрощения:
(i) количество HMPV-кандидатов, используемых для формирования расширенного списка слияния, задают равным (N<=4) ? М: (8-N), где N - количество имеющихся кандидатов в расширенном списке слияния, а М количество доступных HMVP-кандидатов в таблице истории.
(ii) Если общее число доступных кандидатов на слияние в расширенном списке слияния достигает максимального разрешенного числа кандидатов на слияние минус 1, процедуру формирования списка кандидатов на слияние на основе HMVP завершают.
[0133] В соответствии с некоторыми из вариантов осуществления настоящего изобретения, когда IBC-копирование функционирует как режим, отдельный от внешнего предсказания, для хранения ранее кодированных векторов блоков IBC может использоваться отдельный буфер истории, называемый HBVP. В случае режима IBC-копирования, отдельного от внешнего предсказания, в нем желательно иметь упрощенную процедуру вычисления векторов блоков. Список кандидатов для предсказания векторов блоков при IBC-копировании в режиме AMVP может быть таким же, как список, используемые в режиме слияния IBC (список кандидатов на слияние), с двумя пространственными кандидатами + пять кандидатов HBVP.
[0134] Размер списка кандидатов на слияние в режиме IBC может быть обозначен MaxNumMergeCand. Значение MaxNumMergeCand может определяться размером списка кандидатов на слияние режима внешнего предсказания, MaxNumMergeCand, которое обозначают, в некоторых примерах, six_minus_max_num_merge_cand. Переменная six_minus_max_num_merge_cand может обозначать максимальное количество MVP-кандидатов (предсказаний векторов движения) на слияние, поддерживаемое в слайсе, вычтенное из 6.
[0135] В некоторых примерах максимальное количество MVP-кандидатов на слияние, MaxNumMergeCand, может быть вычислено следующим образом:
MaxNumMergeCand = 6 - six_minus_max_num_merge_cand
[0136] Значение MaxNumMergeCand может лежать в диапазоне от 1 до 6 включительно. Для предсказания векторов движения в режиме без слияния может использоваться этот же список, сформированный для режима слияния IBC. Однако в некоторых примерах в случае режима без слияния размер списка кандидатов всегда равен 2. Соответственно, необходимо предложить подходящие методы для определения размера списка кандидатов на слияние IBC, а также размера списка предсказания в режиме IBC без слияния (режиме AMVP), когда MaxNumMergeCand может быть задано равным различным значениям, а максимальный размер списка кандидатов на слияние IBC, может задаваться отличным от размера списка кандидатов на слияния в режиме внешнего предсказания.
[0137] V. Преобразование/модификация вектора движения для режима IBC
[0138] В соответствии с предшествующим описанием существующие ограничения на корректный декодированный вектор блока включают, в некоторых из вариантов осуществления настоящего изобретения, по меньшей мере два требования:
[0139] (i) опорный блок, на который указывает вектор блока, должен быть полностью восстановлен и находиться в той же области кодирования, что и текущий блок. Под той же областью кодирования могут понимать области, отсчеты которых могут быть предсказаны на основе друг друга, например, тот же тайл, тот же слайс или та же группа тайлов. Такой тип ограничения может называться ограничением проверки на доступность.
[0140] (ii) Опорный блок, на который указывает вектор блока, должен находиться внутри разрешенного диапазона поиска, для обеспечения возможности волновой параллельной обработки (wave parallel processing, WPP), в диапазоне из текущего и расположенного слева CTU для удовлетворения ограничениям на объем памяти и т.п. Такой тип ограничения может называться ограничением диапазона.
[0141] Аспекты настоящего изобретения включают способы, преобразующие/модифицирующие декодированный вектор блока таким образом, чтобы снять некоторые из ограничений (например, ограничения диапазона, проверку доступности). В этой связи от декодера может не требоваться проверка, удовлетворяет ли вектор блока некоторым из ограничений, при декодировании текущего блока в режиме IBC-копирования.
[0142] Например, требования совместимости битового потока могут определять, что вектор движения (mvL) должен указывать на опорный блок, полностью расположенный в том же CTU, что и текущий блок, или полностью расположенный в соседнем слева блоке отсчетов, имеющем ту же высоту, что и текущий блок, и ширину, равную 128 отсчетов яркости, т.е. должны выполняться все следующие условия:
[0143] Описанные выше ограничения, накладываемые для совместимости битового потока (т.е. уравнения (5)-(8)) могут быть сняты, если вектор блока преобразуют/модифицируют в соответствии с некоторыми из вариантов осуществления настоящего изобретения.
[0144] В некоторых из вариантов осуществления настоящего изобретения над х- и у-компонентами вектора блока может быть выполнена операция по модулю на основе размера текущего CTU, так что, когда верхняя левая позиция опорного блока находится вне заранее заданного диапазона поиска для IBC-копирования (например, текущий CTU или левый соседний CTU), модификация вектора блока может перемещать верхний левый угол опорного блока внутрь целевого диапазона (например, внутрь разрешенного/корректного диапазона поиска, исходя из объема опорной памяти и позиции текущего блока в текущем CTU). В одном из примеров модифицированный вектор блока может указывать на верхний угол другого опорного блока, внутри целевого диапазона. В другом случае, когда вектор блока указывает на опорный блок, находящийся внутри целевого диапазона, этот вектор блока может оставаться неизменным (модификацию не выполняют).
[0145] В одном из вариантов осуществления настоящего изобретения некорректный вектор блока (например, вне корректного диапазона поиска) может быть модифицирован так, чтобы он располагаться в текущем CTU. В одном из вариантов осуществления настоящего изобретения некорректный вектор блока может быть модифицирован так, чтобы он располагался в текущем CTU или левом соседнем CTU, когда целевой диапазон поиска включает текущий CTU и левый соседний CTU. В одном из вариантов осуществления настоящего изобретения целевой диапазон допуска может включать текущий CTU и несколько CTU слева, в зависимости от размера памяти опорных отсчетов и размера CTU в текущем изображении.
[0146] В одном из примеров х-компонента вектора блока и у-компонента вектора блока могут быть модифицированы с использованием следующих формул:
[0147] В приведенных выше двух уравнениях (9) и (10) bvL[0] - х-компонента вектора блока, a bvL[1] у-компонента вектора блока. CtbSizeY размер CTU (например, в отсчетах яркости), а "%" - оператор по модулю. Операция по модулю может выполняться на основе числа, кратного размеру CTU, когда целевой диапазон включает один или более CTU слева. Упомянутое кратное число соответствует количеству из одного или более расположенных слева CTU, входящих в целевой диапазон. К примеру, такое кратное число может быть равно 2, когда целевой диапазон включает текущий CTU и соседний слева CTU, или 8, когда целевой диапазон включает текущий корректный диапазон поиска и три расположенных слева CTU. Верхняя левая позиция текущего CTU, (xCurrCtuTL, yCurrCtuTL), и верхняя левая позиция CTU, в котором находится опорный блок, (xRefCtuTL, yRefCtuTL), могут быть вычислены следующим образом:
[0148] При этом в уравнении (9) переменная numLeftCtus обозначает количество CTU слева от текущего CTU и может быть вычислена следующим образом:
[0149] После модификации может быть выполнена операция сдвига, чтобы изменить разрешение вектора блока до разрешения, которое используют при хранении. Ниже приведен пример изменения разрешения вектора блока:
[0150] В некоторых из вариантов осуществления настоящего изобретения вектор блока может быть модифицирован так, чтобы смещение опорного блока относительно CTU, в котором он располагался до модификации, было идентично смещению модифицированного опорного вектора блока относительно текущего CTU после модификации. В этой связи модификация вектора блока может не приводить к изменению смещения. В уравнении (9) смещение может быть равно (xRefCtuTL < xCurrCtuTL && xCurrCtuTL xRefCtuTL <= numLeftCtus * CtbSizeY).
[0151] В одном из вариантов осуществления настоящего изобретения нижний правый угол (xRefBR, yRefBR) опорного блока может быть модифицирован аналогично его верхнему левому углу (xRefTL, yRefTL), что было описано выше. Соответственно, аспекты настоящего изобретения позволяют гарантировать, что внутри текущего CTU будет находиться опорный блок полностью, а не только его верхний левый угол.
[0152] В одном из вариантов осуществления настоящего изобретения может выполняться операция усечения для корректировки декодированного вектора блока таким образом, чтобы после усечения вектор блока всегда указывал на опорный блок внутри целевого диапазона. Когда верхняя левая позиция опорного блока находится вне корректного диапазона поиска для IBC-копирования (например, текущий CTU или левый соседний CTU), модификация вектора блока позволяет скорректировать верхнюю левую позицию таким образом, чтобы левый верхний угол опорного блока находился внутри целевого диапазона. В другом случае, когда вектор блока указывает на опорный блок, находящийся внутри целевого диапазона, этот вектор блока может оставаться неизменным (например, операцию усечения не выполняют).
[0153] В одном из примеров если одна из компонент, х или у, вектора блока лежат вне целевого диапазона, то при помощи операции отсечения верхний левый угол опорного блока может быть усечен до целевого диапазона. Нижний правый угол опорного блока также может быть усечен до целевого диапазона. Когда и верхний левый угол опорного блока, и правый нижний угол опорного блока усекают до целевого диапазона, опорный блок полностью будет лежать внутри целевого диапазона.
[0154] В одном из вариантов осуществления настоящего изобретения, когда у-координата левого верхнего угла опорного блока (на который указывает вектор блока) лежит вне строки текущего CTU, вектор блока может быть усечен так, чтобы находиться в верхней строке текущего CTU (т.е. на границе текущего CTU). Аналогично, х-координата левого верхнего угла опорного блока (на который указывает вектор блока) лежит вне диапазона, равного текущему CTUy и соседнему слева CTUy, вектор блока может быть усечен так, чтобы находиться в крайнем левом столбце текущего CTU. Соответственно, находящийся вне границ вектор блока может быть усечен так, чтобы модифицированный опорный блок находился либо в верхней строке, либо в крайнем левом столбце текущего CTU.
[0155] Следует отметить, что и все другие ограничения (например, первое, второе, третье и пятое описанные выше ограничения) могут также накладываться, или использоваться, для определения, является ли модифицированный вектор блока корректным.
[0156] В одном из вариантов осуществления настоящего изобретения за счет применения модификаций (с помощью операций усечения или по модулю, описанных выше) к декодированному вектору блока могут быть сняты описанные ниже ограничения на битовый поток.
[0157] Должны быть истинными одно или более следующих условий:
Значение (mvL[0] >> 4) + cbWidth меньше либо равно 0; и
значение (mvL[1] >> 4) + cbHeight меньше либо равно 0.
[0158] Приведенные выше условия могут использоваться, чтобы гарантировать, что опорный блок не накладывается на текущий блок. Если опорный блок накладывается на текущий блок (т.е. оба условия не выполняются) вектор блока может быть модифицирован, чтобы обеспечить соблюдение по меньшей мере одного из приведенных выше двух условий. В одном из вариантов осуществления настоящего изобретения два приведенных выше условия могут быть сняты, даже если над декодированным вектором блока не выполняют операций или модификаций.
[0159] В одном из примеров, чтобы гарантировать выполнение одного из двух описанных выше условий могут выполняться следующие операции:
Когда (mvL[0] >> 4) + cbWidth > 0 and (mvL[1] >> 4) + cbHeight > 0, применяют следующее:
mvL[0] =- cbWidth << 4.
[0160] В другом примере, чтобы гарантировать выполнение одного из двух описанных выше условий могут выполняться следующие операции:
Когда (mvL[0] >> 4) + cbWidth > 0 and (mvL[1] >> 4) + cbHeight > 0, применяют следующее:
mvL[1] = -cbHeight << 4.
[0161] VI. Примеры процедур декодирования
[0162] На фиг. 11 показана блок-схема алгоритма, описывающая процедуру (1100) процедуру декодирования в соответствии с некоторыми из вариантов осуществления настоящего изобретения. Процедура (1100) может быть использована для декодирования текущего блока в режиме IBC-копирования. В различных вариантах осуществления настоящего изобретения процедура (1100) может исполняться схемами обработки данных, например, схемами обработки данных в терминальных устройствах (210), (220), (230) и (240), схемами обработки данных, которые выполняю функции видеодекодера (310), схемами обработки данных, которые выполняют функции видеокодера (410) и т.п. В некоторых из вариантов осуществления настоящего изобретения процедура (1100) может быть реализована программными инструкциями, например, когда схемы обработки данных исполняют программные инструкции, эти схемы обработки данных могут выполнять процедуру (1100). Процедура начинается шагом (S1101), затем переходят к шагу (S1110).
[0163] На шаге (S1110) принимают битовый поток кодированного видео, включающий текущее изображение.
[0164] На шаге (S1120) определяют, кодирован ли текущий блок в текущем пакете кодового дерева (CTU), содержащемся в текущем изображении, в режиме внутреннего копирования блоков (IBC), на основе флага, включенного в битовый поток кодированного видео. Такой флаг может быть флагом IBC, указывающим на использование IBV на уровне блока. Если определено, что текущий блок не кодирован в режиме IBC-копирования, процедуру, показанную на фиг. 11, завершают.
[0165] На шаге (S1130), в ответ на определение того, что текущий блок кодирован в режиме IBC-копирования, определяют вектор блока, который указывает на первый опорный блок для текущего блока. Вектор блока может быть определен на основе режима AMVP IBC или режима слияния.
[0166] На шаге (S1140) над вектором блока выполняют операцию, так что, когда первый опорный блок не полностью восстановлен или не находится внутри корректного диапазона поиска для текущего блока, вектор блока модифицируют для указания на второй опорный блок, который находится в полностью восстановленной областью и внутри корректного диапазона поиска для текущего блока. К примеру, может выполняться операция по модулю над х-компонентой и над у-компонентой вектора блока на основе размера текущего CTU. В одном из примеров х-компонента вектора блока и у-компонента вектора блока могут быть модифицированы с использованием уравнения (9) и уравнения (10). В одном из вариантов осуществления настоящего изобретения операцию деления по модуля выполняют над х-компонентой вектора блока на основе значения, кратного размеру текущего CTU. В одном из вариантов осуществления настоящего изобретения операцию по модулю над у-компонентой вектора блока выполняют на основе размера CTU. Когда вектор блока указывает на опорный блок, который полностью восстановлен и находится внутри корректного диапазона поиска для текущего блока, выполняемая операция (например, уравнения (9) и 10)) не модифицирует вектор блока. В этом случае первый опорный блок такой же, как и опорный блок.
[0167] На шаге (S1150) текущий блок декодируют на основе модифицированного вектора блока. А именно, текущий блок может быть декодирован на основе опорных отсчетов во втором опорном блоке отсчетов, на который указывает модифицированный вектор блока. Процедура (1100) переходит к шагу (S1199), где она завершается.
[0168] VII. Компьютерная система
[0169] Описанные выше методы могут быть реализованы в виде компьютерного программного обеспечения, где используются машиночитаемые инструкции, и которое физически хранят на одном или более машиночитаемых носителей. К примеру, на фиг. 12 показана компьютерная система (1200), подходящая для реализации некоторых из вариантов осуществления настоящего изобретения.
[0170] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или языка программирования, который может обрабатываться при помощи ассемблирования, компиляции, линкования или аналогичных механизмов, в результате чего получают код, включающий инструкции, выполняемые непосредственно или при помощи интерпретации, исполнения микрокода и т.п., одним или более центральных процессоров компьютера (computer central processing units, CPU), графических процессоров (Graphics Processing Units, GPU) и т.п.
[0171] Инструкции могут выполняться на компьютерах, или компьютерных компонентах, различных типов, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0172] Компоненты компьютерной системы (1200), показанные на фиг. 12, приведены исключительно для примера и не предполагают каких-либо ограничений на область применения или функциональность компьютерного обеспечения, реализующего варианты осуществления настоящего изобретения. Аналогично, показанная конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требования, связанные с любым компонентом, проиллюстрированным в примере осуществления компьютерной системы (1200), или комбинацией таких компонентов.
[0173] Компьютерная система (1200) может включать устройства ввода из состава интерфейса пользователя. Устройства ввода в пользовательском интерфейсе могут реагировать на ввод от одного или более пользователей при помощи, к примеру, тактильного ввода (например, нажатий на клавиши, жестов скольжения пальцем по экрану, движений киберперчатки), аудиоввода (например, голоса, хлопков ладоней), визуального ввода (например, жестов), обонятельного ввода (не показано на чертеже). Устройства пользовательского интерфейса могут также применяться для захвата медиаданных различных типов, не обязательно связанных с сознательным вводом от человека, таких как аудио (например, голос, музыка, звуки окружающей среды), изображения (например, сканированные изображения, фотоизображения, полученные с фотокамеры), видео (например, двумерное видео, трехмерное видео, включая стереоскопическое видео).
[0174] Устройства пользовательского интерфейса могут включать одно или более из следующего (на чертеже показано только по одному устройству каждого типа): клавиатура (1201), мышь (1202), трекпад (1203), сенсорный экран (1210), киберперчатка (не показана на чертеже), джойстик (1205), микрофон (1206), сканер (1207), камера (1208).
[0175] Компьютерная система (1200) может также иметь в своем составе устройства вывода пользовательского интерфейса. Устройства вывода пользовательского интерфейса могут воздействовать на органы чувств одного или более пользователей, например, при помощи тактильного вывода, звука, света и/или запаха/вкуса. Устройства вывода пользовательского интерфейса могут включать устройства тактильного вывода (например, тактильная обратная связь от сенсорного экрана (1210), киберперчатки (не показана на чертеже) или джойстика (1205), однако могут также присутствовать устройства тактильного вывода, не являющиеся при этом устройствами ввода). К примеру, подобными устройствами могут быть устройства аудиовывода (например, громкоговорители (1209), наушники (не показаны на чертеже)), устройства визуального вывода (например, экраны (1210), включая CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, как сенсорные, так и без функций сенсорного ввода, как с функциями тактильно обратной связи, так и без них, - при этом некоторые из экранов могут быть способны выводить двумерную визуальную информацию или более чем трехмерную визуальною информацию, при помощи таки средств, как например, стереографический вывод; очки виртуальной реальности (не показаны на чертеже), голографические дисплеи, голографические дым-машины, а также принтеры (не показаны на чертеже).
[0176] Компьютерная система (1200) может также включать запоминающие устройства, доступные для пользователей, и связанные с ними носители данных, например, оптические носители, включая CD/DVD ROM/RW (1220), с носителями (1221) CD/DVD или аналогичными им, флэш-привод (1222), съемный жесткий диск или твердотельный диск (1223), применяемые ранее магнитные носители, например, ленты или гибкие диски (не показаны на чертеже), специализированные устройства на основе ROM/ASIC/PLD, например, аппаратные ключи (не показаны на чертеже), и т.п.
[0177] Специалисты в данной области техники должны при этом понимать, что выражение «машиночитаемый носитель данных», используемое в связи с настоящим изобретением, не включает в себя среды передачи данных, несущие волны или другие энергозависимые сигналы.
[0178] Компьютерная система (1200) может также иметь интерфейс с одной или более сетями связи. Сети могут быть, например, беспроводными, проводными или оптическими. Сети также могут быть локальными, глобальными, городскими, размещаемыми на транспортных средствах или промышленных объектах, сетями реального времени, устойчивыми к задержкам и т.п. Примеры сетей включают такие локальные сети, как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные или беспроводные глобальные сети цифрового телевещания, включая кабельное телевидение, спутниковое телевидение и сети эфирного вещания, сети транспортных средств и промышленных объектов, включая CANBus, и т.п. Некоторые сети требуют наличия внешних адаптеров сетевых интерфейсов, подключаемых к портам данных или периферийным шинам (1249) общего назначения (например, USB-портам компьютерной системы (1200)). Другие сети могут быть интегрированы во внутреннюю структуру компьютерной системы (1200) за счет подключения к системной шине, в соответствии с приведенным ниже описанием (например, интерфейс Ethernet в системе персонального компьютера или интерфейс сети сотовой связи в компьютерной системе на базе смартфона). Применение любых из подобных сетей позволяет компьютерной системе (1200) осуществлять связь с другими объектами. Такая связь может быть однонаправленной, только на прием (например, телевещание), однонаправленной, только на передачу (например, сеть CANbus в некоторые устройства CANbus) или двунаправленной, например, в другие компьютерные системы с использованием локальных или глобальных цифровых сетей. В любой из сетей и сетевых интерфейсов, описанных выше, могут применяться соответствующие протоколы и стеки протоколов.
[0179] Описанные выше устройства пользовательского интерфейса, доступные пользователям запоминающие устройства и сетевые интерфейсы могут быть подключены к базовой внутренней структуре (1240) компьютерной системы (1200).
[0180] Базовая внутренняя структура (1240) может включать один или более центральных процессоров (CPU) (1241), графических процессоров (GPU) (1242), специализированных программируемых блоков обработки данных в форме электрически программируемых вентильных матриц (Field Programmable Gate Areas, FPGA) (1243), аппаратных ускорителей (1244) для определенных задач и т.п. Эти устройства, вместе с памятью (1245) в режиме «только для чтения» (Read-only memory, ROM), памятью (1246) с произвольным доступом, внутренней памятью большой емкости, например, внутренними, недоступными пользователю жесткими дисками, SSD-дисками и аналогичной памятью (1247), могут быть объединены системной шиной (1248). В некоторых компьютерных системах к системной шине (1248) может предоставляться доступ в виде одного или более физических разъемов, позволяющих расширять систему дополнительными CPU, GPU и т.п. Периферийные устройства могут подключаться либо непосредственно к базовой системной шине (1248), либо к периферийной шине (1249). Примерами архитектур периферийной шины могут служить шины PCI, USB и т.п.
[0181] CPU (1241), GPU (1242), FPGA (1243) и ускорители (1244) могут выполнять инструкции, которые, в совокупности, могут составлять описанный выше компьютерный код. Компьютерный код может храниться в памяти ROM (1245) или RAM (1246). Временные данные при этом могут храниться в RAM (1246), тогда как постоянные данные могут храниться, например, во внутренней памяти (1247) большой емкости. Высокая скорость сохранения данных в запоминающие устройства и извлечения данных из них может обеспечиваться за счет применения кэш-памяти, которая может быть тесно связан с одним или более CPU (1241), GPU (1242), памятью (1247) большой емкости, ROM (1245), RAM (1246) и т.п.
[0182] Машиночитаемые носители данных могут хранить компьютерный код для выполнения различных машиноисполняемых операций. Такие носители и компьютерный код могут быть специально спроектированными и изготовленными для целей настоящего изобретения или могут быть широко распространенными и известными специалистам в области компьютерного программного обеспечения.
[0183] В качестве неограничивающего примера, компьютерная система с архитектурой (1200), и в частности, базовой структурой (1240), может предоставлять требуемую функциональность в результате исполнения, процессором (или процессорами) (включая CPU, GPU, FPGA, ускорители и т.п.), программного обеспечения, реализованного на одном или более материальных машиночитаемых носителях данных. Такие машиночитаемые носители данных могут быть носителями, связанными с описанными выше запоминающими устройствами большой емкости, которые доступны пользователям, или энергонезависимыми запоминающими устройствами в базовой структуре (1240), например, встроенным запоминающим устройством (1247) большой емкости или ROM (1245). Программное обеспечение, которое реализует различные варианты осуществления настоящего изобретения, может храниться в подобных устройствах и исполняться внутренней структурой (1240) компьютерной системы. Машиночитаемый носитель данных, в зависимости от конкретных требований, может включать одно или более запоминающих устройств или микросхем памяти. Программное обеспечение может обеспечивать выполнение, базовой структурой (1240), и в частности, процессорами из его состава (включая CPU, GPU, FPGA и т.п.), необходимых процедуры, или частей необходимых процедур, описанных в данном документе, включая создание структур данных, хранимых в RAM (1246), и модификацию этих структур данных в соответствии с процедурами, определенными программным обеспечением. В дополнение или альтернативно, компьютерная система может обеспечивать требуемую функциональность в результате работы логики, жестко запрограммированной или иным образом воплощенной в электрической схеме (например, ускорителе (1244)), которая может работать вместе с программным обеспечением, или вместо него, для выполнения требуемых процедур или частей требуемых процедур, описанных в данном документе. Упоминание программного обеспечения, там, где это уместно, может подразумевать такую логику и наоборот. Упоминание машиночитаемого носителя, там, где это уместно, может подразумевать электрическую схему (например, интегральную схему), на которой хранится исполняемое программное обеспечение, электрическую схему, реализующую исполняемую логику или оба эти случая одновременно. В объем настоящего изобретения входят все соответствующие комбинации из аппаратного и программного обеспечения.
Приложение А: Сокращения
JEM: Объединенная исследовательская модель (joint exploration model)
VVC: Универсальное видеокодирование (versatile video coding)
BMS: Набор эталонов (benchmark set)
MV: Вектор движения (Motion Vector)
HEVC: Высокоэффективное видеокодирование (High Efficiency Video Coding)
SEI: Дополнительная уточняющая информация (Supplementary Enhancement Information
VUI: Информация об используемости видео (Video Usability Information)
GOP: Группы изображений (Groups of Pictures)
TU: Пакеты преобразования (Transform Units),
PU: Пакеты предсказания (Prediction Units)
CTU: Пакеты кодового дерева (Coding Tree Units)
СТВ: Блоки кодового дерева (Coding Tree Blocks)
РВ: Блоки предсказания (Prediction Blocks)
HRD: Гипотетический опорный декодер (Hypothetical Reference Decoder)
SNR: Соотношение «сигнал-шум» (Signal Noise Ratio)
CPU: Центральные процессорные блоки (Central Processing Units)
GPU: Графические процессоры (Graphics Processing Units)
CRT: Катодно-лучевая трубка (Cathode Ray Tube)
LCD: Дисплей на жидких кристаллах (Liquid-Crystal Display)
OLED: Органический светодиод (Organic Light-Emitting Diode)
CD: Компактный диск (Compact Disc)
DVD: Цифровой видеодиск (Digital Video Disc)
ROM: Память в режиме «только для чтения» (Read-Only Memory)
RAM: Память с произвольным доступом (Random Access Memory)
ASIC: Заказная интегральная схема (Application-Specific Integrated Circuit)
PLD: Программируемое логическое устройство (Programmable Logic Device)
LAN: Локальная вычислительная сеть (Local Area Network)
GSM: Глобальная система мобильной связи (Global System for Mobile communications)
LTE: Долгосрочная эволюция (Long term evolution)
CANBus: Шина сети контролеров (Controller Area Network Bus)
USB: Универсальная последовательная шина (Universal Serial Bus)
PCI: Взаимодействие периферийных компонентов (Peripheral Component Interconnect)
FPGA: Электрически программируемая вентильная матрица (Field Programmable Gate Areas)
SSD: твердотельный жесткий диск (solid-state drive)
IC: Интегральная схема (Integrated Circuit)
CU: Пакет кодирования (Coding Unit)
CG: Группа коэффициентов (Coefficient Group)
IBC: Внутреннее копирование блоков (Intra Block Copy)
[0184] В данном документе были описаны несколько примеров осуществления настоящего изобретения, однако при этом возможны модификации, изменения и эквивалентные замены, которые попадают в объем настоящего изобретения. Соответственно, нужно понимать, что специалисты в данной области техники способны создать множество систем и способов, которые хотя явно здесь и не описаны, реализуют замысел настоящего изобретения и соответственно, находятся в пределах его объема и сущности.