Унифицированная процедура комбинирования предсказаний в зависимости от позиции
UNIFIED PROCEDURE FOR POSITION-DEPENDENT PREDICTION COMBINATION

Включение путем ссылки
[0001] Настоящая заявка ссылается на приоритет предварительной заявки на патент США №15/931255, «Унифицированная процедура комбинирования предсказаний в зависимости от позиции», зарегистрированной 13 мая 2020 года, которая ссылается на приоритет предварительной заявки на патент США №62/859920, «Унифицированная процедура комбинирования предсказаний в зависимости от позиции», зарегистрированной 11 июня 2019 года» и предварительной заявки на патент США №62/869015 «Дальнейшая унификация процедуры комбинирования предсказаний в зависимости от позиции», зарегистрированной 30 июня 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] Рассмотрим фиг. 1А, где в нижней правой части показано подмножество из девяти направлений предсказания, являющихся частью 33 возможных направлений предсказания, имеющихся в стандарте Н.265 (соответствующих 33 угловым режимам из 35 режимов внутреннего предсказания). Точка (101), в которой сходятся стрелки, представляет собой предсказываемый отсчет. Стрелки представляют направления, по которым отсчет предсказывают. К примеру, стрелка (102) указывает на то, что отсчет (101) предсказывают на основе отсчета, или отсчетов, расположенных справа-сверху, под углом в 45 градусов от горизонтали. Аналогично, стрелка (103) указывает на то, что отсчет (101) предсказывают на основе отсчета, или отсчетов, расположенных слева-снизу, под углом в 22,5 градусов от горизонтали.
[0012] Продолжим рассмотрение фиг. 1А: в левой верхней части проиллюстрирован квадратный блок (104) размером 4×4 отсчета (показано жирной штриховой линией). Квадратный блок (104) содержит 16 отсчетов, каждый из которых обозначен "S" и его позицией по оси Y (например, номер строки), и по оси X (например, номер столбца). К примеру, отсчет S21 - это второй отсчет по оси Y (сверху) и первый (слева) отсчет по оси X. Аналогично, отсчет S44 - четвертый отсчет в блоке (104) по обеим осям, Y и X. Поскольку блок имеет размер 4×4 отсчета, отсчет S44 расположен в нижнем правом углу. Также на чертеже показаны опорные отсчеты, для которых применяется аналогичная схема нумерации. Опорный отсчет обозначен "R", позицией по оси Y (например, номер строки) и позицией по оси X (номер столбца) относительно блока (104). В стандартах Н.264 и Н.265, отсчеты, на основе которых выполняют предсказания, являются смежными с восстанавливаемым блоком, и следовательно, отрицательные значения не применяются.
[0013] Внутреннее предсказание изображения выполняют при помощи копирования значений соседних опорных отсчетов, в соответствии с сигнализируемым направлением предсказания. К примеру, если битовый поток кодированного видео включает сигнализацию, указывающую, для данного блока, направление предсказания, соответствующее стрелке (102), то отсчеты должны предсказываться на основе опорного отсчета, или отсчетов, расположенных справа-сверху, под углом 45 градусов к горизонтали. В этом случае отсчеты S41, S32, S23 и S14 будут предсказываться на основе одного и того же опорного отсчета R05. Отсчет S44 же будет предсказываться на основе опорного отсчета R08.
[0014] В некоторых случаях значения множества опорных отсчетов могут комбинироваться, например, при помощи интерполяции, чтобы получить один результирующий опорный отсчет; в особенности, когда направления не являются кратными 45 градусам.
[0015] С развитием технологий видеокодирования количество возможных направлений значительно возросло. В стандарте Н.264 (2003 год) могли применяться девять различных направлений. Это число возросло до 33 в стандарте Н.265 (2013 год), а стандарты JEM/VVC/BMS, на момент написания настоящей заявки, могут поддерживать вплоть до 65 направлений. Были проведены эксперименты для определения наиболее вероятных направлений. Для представления этих наиболее вероятных направлений с использованием минимального количества бит применяют специальные методы энтропийного кодирования, с допустимыми издержками в случае менее вероятных направлений. Также, сами направления в некоторых случаях могут предсказываться на основе соседних направлений, использованных для соседних, уже декодированных блоков.
[0016] Чтобы проиллюстрировать возросшее количество направлений предсказания с течением времени на фиг. 1В показана схема (105), иллюстрирующая 65 направлений внутреннего предсказания, соответствующих стандарту JEM.
[0017] Размещение битов, определяющих направления внутреннего предсказания в битовом потоке кодированного видео, может быть различным в различных технологиях видеокодирования; например, в диапазоне от простого прямого соответствия между направлением предсказания и режимом внутреннего предсказания, до кодовых слов или сложных адаптивных схем, включающих наиболее вероятные режимы, а также аналогичных методов. Однако в любом случае определенные направления будут статистически с меньшей вероятностью встречаться в видеоконтенте, по сравнению с остальными направлениями. Поскольку целью сжатия видео является снижение избыточности, эти менее вероятные направления будут, в корректно функционирующей технологии видео кодирования, представлены большим количеством бит, чем более вероятные направления.
[0018] Компенсация движения - это метод сжатия с потерями, относящийся к методам, в которых блок данных отсчетов из ранее восстановленного изображения, или его части, после пространственного сдвига в направлении, заданном вектором движения (motion vector, MV), используют для предсказания нового восстанавливаемого изображения или его части. В некоторых случаях опорное изображение может совпадать с текущим предсказываемым изображением. Векторы движения могут иметь два измерения, X и Y, или три измерения, третье из которых указывает на применяемое опорное изображение (оно, опосредованно, может быть временным измерением).
[0019] В некоторых технологиях видеосжатия вектор движения, применяемый для некоторой области данных отсчетов, может предсказываться на основе других векторов движения, например, на основе векторов, относящихся к другим областям данных отсчетов, пространственно смежных с восстанавливаемой областью, и предшествующих данному вектору движения в порядке декодирования. Это позволяет значительно снизить объем данных, необходимый для кодирования вектора движения, а значит, уменьшить избыточность и повысить эффективность сжатия. Предсказание векторов движения может быть эффективным, например, потому, что при кодировании входного видеосигнала, полученного с камеры (называемого необработанным видео), есть статистическая вероятность того, что области, более крупные, чем области применимости отдельного вектора движения, движутся в том же направлении, и следовательно, могут в некоторых случаях быть предсказаны с использованием аналогичных векторов движения, вычисленных на основе векторов движения соседних областей. В результате вектор движения, найденный для заданной области, может быть сходен или идентичен вектору движения, предсказанному на основе окружающих векторов движения, и следовательно, может быть представлен, после энтропийного кодирования, меньшим количеством бит, чем необходимо для непосредственного кодирования вектора движения. В некоторых случаях предсказание векторов движения может быть примером сжатия, без потерь, сигнала (а именно, векторов движения), полученного из исходного сигнала (а именно, потока отсчетов). В других случаях предсказание векторов движения может выполняться с потерями, например, из-за ошибок округления при вычислении предсказания на основе нескольких окружающих векторов движения.
[0020] Различные механизмы предсказания векторов движения описаны в стандарте H.265/HEVC (рекомендация Н.265 ITU-T «Высокоэффективное видеокодирование», декабрь 2016 года). Из множества механизмов предсказания векторов движения, предложенных в стандарте Н.265, в данном документе описан метод, далее называемый «пространственным слиянием» (spatial merge).
[0021] Рассмотрим фиг. 1С: текущий блок (111), может содержать отсчеты, для которых в процессе поиска движения кодером было определено, что они могут быть предсказаны на основе предшествующего блока того же размера, но сдвинутого в пространстве. Вместо непосредственного кодирования этого вектора движения он может быть вычислен на основе метаданных, связанных с одним или более опорными изображениями, например, из непосредственно предшествующего (в порядке декодирования) опорного изображения с использованием вектора движения, относящегося к любому из пяти отсчетов, обозначенных А0, А1 и В0, B1, В2 (112-116 соответственно). В стандарте Н.265 для предсказания векторов движения могут использоваться кандидаты из того же опорного изображения, которое применялось для соседнего блока.
Сущность изобретения
[0022] В аспектах настоящего изобретения предложены способы и устройства видеокодирования и/или видеодекодирования. В некоторых примерах устройство видеодекодирования включает схемы обработки данных.
[0023] В соответствии с аспектами настоящего изобретения предложен способ видеодекодирования в декодере. В предложенном способе упомянутые схемы обработки данных декодируют информацию предсказания для текущего блока в текущем изображении, являющемся частью кодированной видеопоследовательности. Информация предсказания указывает на направление внутреннего предсказания для текущего блока, которое является (i) диагональным направлением внутреннего предсказания или (ii) направлением внутреннего предсказания, соседним с диагональным направлением внутреннего предсказания. Схемы обработки данных определяют применение процедуры комбинирования предсказаний в зависимости от позиции (position dependent prediction combination, PDPC) в соответствии с направлением внутреннего предсказания для текущего блока. Ту же самую процедуру PDPC применяют как к диагональному направлению внутреннего предсказания, так и к соседнему направлению внутреннего предсказания. Схемы обработки данных восстанавливают текущий блок на основе применения процедуры PDPC к текущему блоку.
[0024] В соответствии с аспектами настоящего изобретения диагональное направление внутреннего предсказания является направлением внутреннего предсказания вниз-влево или направлением внутреннего предсказания вверх-вправо. В одном из вариантов осуществления настоящего изобретения, когда направление внутреннего предсказания является направлением внутреннего предсказания вниз-влево, номер режима соседнего направления внутреннего предсказания меньше номера режима горизонтального направления внутреннего предсказания. В одном из вариантов осуществления настоящего изобретения, когда направление внутреннего предсказания является направлением внутреннего предсказания вверх-вправо, номер режима соседнего направления внутреннего предсказания больше номера режима вертикального направления внутреннего предсказания.
[0025] В соответствии с аспектами настоящего изобретения, когда направление внутреннего предсказания является соседним направлением внутреннего предсказания, схемы обработки данных определяют, указывает ли направление внутреннего предсказания на дробную позицию. В ответ на определение того, что направление внутреннего предсказания указывает на дробную позицию, схемы обработки данных определяют досрочное завершение процедуры PDPC.
[0026] В соответствии с аспектами настоящего изобретения, когда текущий отсчет в текущем блоке подлежит фильтрации с помощью процедуры PDPC, схемы обработки данных определяют, лежит ли опорный отсчет для текущего отсчета в заранее заданном диапазоне в соответствии с построчной или постолбцовой проверкой. В одном из вариантов осуществления настоящего изобретения постолбцовая проверка зависит по меньшей мере от одного из следующего: (i) общее количество доступных опорных отсчетов, расположенных слева от текущего блока, (ii) высоты текущего блока, и (iii) значения горизонтальной координаты текущего отсчета. В одном из вариантов осуществления настоящего изобретения построчная проверка зависит по меньшей мере от одного из следующего: (i) общее количество доступных опорных отсчетов, расположенных сверху от текущего блока, (ii) ширины текущего блока, и (iii) значения вертикальной координаты текущего отсчета.
[0027] В соответствии с аспектами настоящего изобретения угол направления внутреннего предсказания больше или равен заранее заданному значению. В одном из вариантов осуществления настоящего изобретения, когда направление внутреннего предсказания ближе к вертикальному направлению внутреннего предсказания, чем к горизонтальному направлению внутреннего предсказания, схемы обработки данных выполняют процедуру PDPC над первым количеством столбцов отсчетов в текущем блоке, при этом первое количество определяют в соответствии с упомянутым заранее заданным значением и размером текущего блока. В одном из вариантов осуществления настоящего изобретения, когда направление внутреннего предсказания ближе к горизонтальному направлению внутреннего предсказания, чем к вертикальному направлению внутреннего предсказания, схемы обработки данных выполняют процедуру PDPC над вторым количеством строк отсчетов в текущем блоке, при этом второе количество определяют в соответствии с упомянутым заранее заданным значением и размером текущего блока.
[0028] В аспектах настоящего изобретения предложен также машиночитаемый носитель данных, хранящий инструкции, которые, при исполнении компьютером для видеодекодирования, обеспечивают выполнение, этим компьютером, любого из предложенных способов видеодекодирования, или их комбинации.
Краткое описание чертежей
[0029] Дополнительные признаки, сущность и различные преимущества предложенного изобретения могут быть уяснены более детально с помощью приведенного ниже подробного описания и приложенных чертежей, где:
[0030] на фиг. 1А эскизно показан пример подмножества режимов внутреннего предсказания;
[0031] на фиг. 1В проиллюстрирован пример направлений внутреннего предсказания;
[0032] на фиг. 1С показана эскизная иллюстрация текущего блока и окружающих его кандидатов на пространственное слияние в одном из примеров;
[0033] фиг. 2 представляет собой эскизное изображение упрощенной блок-схемы системы связи, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0034] на фиг. 3 эскизно показана упрощенная блок-схема системы связи, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0035] на фиг. 4 эскизно показана упрощенная блок-схема декодера, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0036] на фиг. 5 эскизно показана упрощенная блок-схема кодера, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0037] на фиг. 6 показана блок-схема кодера в соответствии с еще одним из вариантов осуществления настоящего изобретения;
[0038] на фиг. 7 показана блок-схема декодера в соответствии с еще одним из вариантов осуществления настоящего изобретения;
[0039] на фиг. 8А показана иллюстрация примера направлений внутреннего предсказания и соответствующих режимов внутреннего предсказания в некоторых примерах (например, в VVC);
[0040] на фиг. 8В показана таблица угловых направлений внутреннего предсказания и соответствующих им углов внутреннего предсказания в некоторых примерах (например, в VVC);
[0041] на фиг. 9А показан пример весовых коэффициентов для предсказания отсчета в позиции (0, 0), в режиме DC, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0042] на фиг. 9В показан пример весовых коэффициентов для предсказания отсчета в позиции (1, 0), в режиме DC, в соответствии с одним из вариантов осуществления настоящего изобретения;
[0043] на фиг. 10 показан пример блок-схемы алгоритма, описывающей процедуру в соответствии с одним из вариантов осуществления настоящего изобретения; и
[0044] на фиг. 11 эскизно проиллюстрирована компьютерная система в соответствии с одним из вариантов осуществления настоящего изобретения.
Подробное описание вариантов осуществления изобретения
[0045] Видеокодер и видеодекодер
[0046] На фиг. 2 проиллюстрирована упрощенная блок-схема системы (200) связи в соответствии одним из примеров осуществления настоящего изобретения. Система (200) связи включает множество терминальных устройств, которые могут взаимодействовать друг с другом, например, по сети (250). Например, система (200) связи может включать первую пару терминальных устройств (210) и (220), связанных по сети (250). В примере фиг. 2 первая пара терминальных устройств (210) и (220) выполняет однонаправленную передачу данных. К примеру, терминальное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных терминальным устройством (210)) для передачи в другое терминальное устройство (220) по сети (250). Кодированные видеоданные могут передаваться в форме одного или более битовых потоков кодированного видео. Терминальное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения в соответствии с восстановленными видеоданными. Однонаправленная передача данных широко применяется в приложениях медиасервисов и аналогичных приложениях.
[0047] В другом примере система (200) связи может включать вторую пару терминальных устройств (230) и (240), которые выполняют двунаправленную передачу кодированных видеоданных. Такая ситуация может возникать, например, при видеоконференцсвязи. При двунаправленной передаче данных, в одном из примеров, каждое терминальное устройство, (230) и (240), может кодировать видеоданные (например, поток видеоизображений, захваченных терминальным устройством) для передачи в другое терминальное устройство, (230) или (240), по сети (250). Каждое из терминальных устройств (230) и (240) может также принимать кодированные видеоданные, переданные другим терминальным устройством, (230) или (240), и декодировать кодированные видеоданные, чтобы восстанавливать видеоизображения, а также воспроизводить видеоизображения на имеющемся дисплейном устройстве в соответствии с восстановленными видеоданными.
[0048] В примере фиг. 2 терминальные устройства (210), (220), (230) и (240) могут быть серверами, персональными компьютерами или смартфонами, однако без ограничения ими замысла настоящего изобретения. Варианты осуществления настоящего изобретения могут применяться в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференцсвязи. Сеть (250) может представлять собой любое количество сетей, передающих кодированные видеоданные между терминальными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть (250) связи может обеспечивать обмен данными по линиям связи с коммутацией каналов и/или коммутацией пакетов. Примерами таких сетей могут быть телекоммуникационные сети, локальные вычислительные сети, глобальные вычислительные сети и/или Интернет. В настоящем описании архитектура и топология сети (250) не играют никакой роли в функционировании предложенного изобретения, если на это явно не указано.
[0049] На фиг. 3 проиллюстрировано, в качестве примера применения настоящего изобретения, размещение видеокодера и декодера в окружении потоковой передачи. Предложенное изобретение может применяться с равной эффективностью и в других областях, где используется видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранения сжатого видео на цифровых носителях, включая CD, DVD, карты памяти и т.п.
[0050] Система потоковой передачи может включать подсистему (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.
[0051] Следует отметить, что электронные устройства (320) и (330) могут включать и другие компоненты (не показаны на чертеже). К примеру, электронное устройство (320) может также включать видеодекодер (не показан на чертеже), а электронное устройство (330) - видеокодер (не показан на чертеже).
[0052] На фиг. 4 показана блок-схема видеодекодера (410) в соответствии с одним из вариантов осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может включать приемник (431) (например, приемные схемы). Видеодекодер (410) может использоваться вместо видеодекодера (310), показанного в примере фиг. 3.
[0053] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования при помощи декодера (410). В этом же или в альтернативном варианте осуществления настоящего изобретения прием видеопоследовательностей может выполняться поочередно, при этом декодирование каждой из кодированных видеопоследовательностей не зависит от декодирования остальных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (401), который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные вместе с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут перенаправляться в соответствующие использующие их элементы (не показано на чертеже). Приемник (431) может отделять кодированную видеопоследовательность от остальных данных. Для борьбы с сетевым «дрожанием» (джиттером) между приемником (431) и энтропийным декодером/анализатором (420) (далее, «анализатор») может быть установлена буферная память (415). В некоторых случаях практического применения буферная память (410) может быть частью видеодекодера (410). В других случаях она может располагаться вне видеодекодера (410) (не показано на чертеже). В иных случаях может присутствовать буферная память вне видеодекодера (410) (не показано на чертеже), например, для борьбы с сетевым джиттером, а также, дополнительно, еще одна буферная память (415) внутри видеодекодера (410), например, для соблюдения тайминга воспроизведения. Когда приемник (431) принимает данные из устройства хранения или передачи с достаточной полосой пропускания и управляемостью, или из сети с изосинхронной передачей, буфер (415) быть не нужен или иметь малый объем. В случае применения пакетных сетей с негарантированной доставкой, таких как Интернет, буфер 315 необходим, может быть сравнительно объемным и иметь при этом адаптивный размер, при этом он по меньшей мере отчасти может быть реализован в операционной системе или в аналогичных элементах (не показано на чертеже) вне видеодекодера (410).
[0054] Видеодекодер (410) может содержать анализатор (420) для восстановления символов (421) из энтропийно-кодированной видеопоследовательности. Различные типы этих символов могут включать информацию, используемую для управления работой видеодекодера (410), а также, потенциально, информацию для управления устройством отображения, например, устройством отображения (412) (к примеру, дисплейного экрана), которое не является интегральной частью электронного устройства (430), однако может быть с ним связано, в соответствии с иллюстрацией фиг. 4. Управляющая информация для устройств отображения может, например, иметь форму сообщений дополнительной уточняющей информации (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) может также извлекать из кодированной видеопоследовательности такую информацию, как коэффициенты преобразования, значения параметров квантователя, векторы движения и т.п.
[0055] Анализатор (420) может выполнять операции энтропийного декодирования/анализа над видеопоследовательностью, принятой из буферной памяти (415), и формировать символы (421).
[0056] При восстановлении символов (421) могут задействоваться различные блоки устройства, в зависимости от типа кодированных видеоизображений или их частей (например, внутренне и внешне предсказываемые изображения, внутренне и внешне предсказываемые блоки отсчетов), а также от других факторов. То, какие блоки устройства будут задействованы, и каким образом, может определяться управляющей информацией подгруппы, извлеченной из кодированной видеопоследовательности анализатором (420). Для простоты поток такой управляющей информации подгруппы между анализатором (420) и множеством описанных ниже блоков устройства на чертеже не показан.
[0057] Помимо уже упомянутых функциональных блоков видеодекодер (410) может быть концептуально подразбит на набор функциональных блоков, описанных ниже. В практических реализациях, применяемых в коммерческих условиях, многие из этих блоков плотно взаимодействуют друг с другом и могут быть, по меньшей мере частично, взаимно интегрированы. Однако в целях описания предложенного изобретения подходит описанное ниже подразделение на функциональные блоки.
[0058] Первым из таких блоков может быть блок (451) масштабирования/обратного преобразования. Блок (451) масштабирования/обратного преобразования принимает квантованные коэффициенты преобразования, а также управляющую информацию, включая информацию о том, какое преобразование следует использовать, размер блока, коэффициент квантования, масштабирующие матрицы квантования и т.п., в виде символов (421) из анализатора (420). Блок (451) масштабирования/обратного преобразования может выдавать блоки отсчетов, включающие значения отсчетов, которые могут быть введены в агрегатор (455).
[0059] В некоторых случаях отсчеты на выходе из блока (451) масштабирования/обратного преобразования могут относиться к типу внутренне кодированных блоков отсчетов; то есть, блоков отсчетов, для которых не используют информацию предсказания из ранее восстановленных изображений, но могут использовать информацию из ранее восстановленных частей текущего изображения. Такая информация предсказания может предоставляться блоком (452) внутреннего предсказания изображений. В некоторых случаях блок (452) внутреннего предсказания изображений формирует блок тех же размеров и формы, что и восстанавливаемый блок, с использованием уже восстановленной информации его окружения, полученной из текущего (частично восстановленного) изображения в буфере (458) текущих изображений. В буфер (458) текущих изображений помещают, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (455) может в некоторых случаях добавлять информацию предсказания, сформированную блоком (452) внутреннего предсказания, к выходной информации отсчетов, предоставляемой блоком (451) масштабирования/обратного преобразования, индивидуально для каждого отсчета.
[0060] В других случаях отсчеты на выходе блока (451) масштабирования/обратного преобразования могут относиться к внешнему предсказанию, и потенциально, блоку с компенсацией движения. В таких случаях блок (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений и получать отсчеты, используемые для предсказания. После компенсации движения полученные отсчеты, в соответствии с символами (421), относящимися к этому блоку, могут быть добавлены агрегатором (455) к выходным данным блока (451) масштабирования/обратного преобразования (в этом случае их называют разностными отсчетами или разностным сигналом), в результате чего формируют выходную информацию отсчетов. Адреса в памяти (457) опорных изображений, по которым блок (453) предсказания с компенсацией движения получает предсказанные отсчеты, могут определяться векторами движения, доступными для блока (453) предсказания с компенсацией движения в форме символов, которые могут иметь, например, Х-компоненту, Y-компоненту и компоненту опорного изображения. Компенсация движения может также включать интерполяцию значений отсчетов, полученных из памяти (457) опорных изображений, когда применяют векторы движения, механизмы предсказания векторов движения и т.п., имеющие субпиксельную точность.
[0061] Отсчеты на выходе из агрегатора (455) могут обрабатываться при помощи различных методов контурной фильтрации в блоке (456) контурной фильтрации. Технологии сжатия видео могут включать технологии внутриконтурной фильтрации, которые управляются параметрами, содержащимися в кодированной видеопоследовательности (также называемой битовым потоком кодированного видео), и предоставляемыми в блок (456) контурной фильтрации в виде символов (421) из анализатора (420). Они могут также зависеть от метаинформации, полученной при декодировании предшествующих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также от ранее восстановленных и прошедших контурную фильтрацию значений отсчетов.
[0062] Выходными данными блока (456) контурной фильтрации может быть поток отсчетов, который подают в устройство (412) отображения, а также сохраняют в памяти (457) опорных изображений для использования при будущем внешнем предсказании изображений.
[0063] Отдельные кодированные изображения, после их полного восстановления могут использоваться в качестве опорных для будущего предсказания. Например, после полного восстановления кодированного изображения, соответствующего текущему изображения, если оно было определено как опорное (например, анализатором (420)), текущее опорное изображение, хранимое буфере (458) текущих изображений, может быть помещено в память (457) опорных изображений, и перед началом восстановления следующего кодированного изображения может быть выделен новый буфер текущих изображений.
[0064] Видеодекодер (410) может выполнять операции декодирования в соответствии с заранее заданной технологий сжатия видео, которая может быть задокументирована в стандарте, например, Рекомендации Н.265 ITU-T.265. Кодированная видеопоследовательность может удовлетворять синтаксису, заданному применяемой технологией или стандартом сжатия видео, в том смысле, что она удовлетворяет синтаксису, заданному в документе, или стандарте, технологии сжатия видео, и в частности, синтаксису специфицированных профилей стандарта. В частности, профиль позволяют выбрать часть инструментов из всех инструментов, доступных в технологии или стандарте видеосжатия, как доступные для применения в этом профиле. При этом, чтобы отвечать некоторым из технологий или стандартов сжатия видео, сложность кодированной видеопоследовательности должна быть в пределах ограничений, определяемых уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни стандарта ограничивают максимальный размер изображения, максимальную частоту смены кадров, максимальную частоту восстановления отсчетов (измеряемую, например, в миллионах отсчетов за секунду), максимальный размер опорного изображения и т.п. Накладываемые уровнями ограничения в некоторых случаях могут быть дополнительно лимитированы при помощи спецификаций гипотетического опорного декодера (Hypothetical Reference Decoder, HRD) и метаданных для управления буфером HRD-декодера, сигнализируемых в кодированной видеопоследовательности.
[0065] В одном из вариантов осуществления настоящего изобретения приемник (431) может вместе с кодированным видео принимать дополнительные (избыточные) данные. Эти дополнительные данные могут быть составной частью кодированной видеопоследовательности (или видеопоследовательностей). Дополнительные данные могут использоваться видеодекодером (410) для корректного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут иметь форму, например, уточняющих временных, пространственных или уровней улучшения отношения сигнал/шум (signal noise ratio, SNR), избыточных слайсов, избыточных изображений, кодов упреждающей коррекции ошибок и т.п.
[0066] На фиг. 5 показана блок-схема видеокодера (503) в соответствии с одним из вариантов осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) содержит передатчик (540) (например, передающие схемы). Видеокодер (503) может использоваться вместо видеокодера (303), показанного в примере фиг. 3.
[0067] Видеокодер (503) может принимать видеоотсчеты из источника (501) видео (который не является частью электронного устройства (520) в примере фиг. 5), захватывающего видеоизображения для кодирования при помощи видеокодера (503). В другом примере источник (501) видео может быть частью электронного устройства (520).
[0068] Источник (501) видео может подавать исходную видеопоследовательность для кодирования видеокодером (503) в форме цифрового потока видеоотсчетов, имеющих любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру отчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе медиасервиса источник (501) видео может быть запоминающим устройством, на котором хранят заранее подготовленное видео. В системе видеоконференцсвязи источник (501) видео может быть видеокамерой, которая захватывает информацию изображений локально в форме видеопоследовательности. Видеоданные могут иметь форму множества отдельных изображений, которые передают ощущение движения при их последовательном просмотре. Сами изображения могут быть организованы в виде пространственной матрицы пикселей, где каждый пиксель может включать один или более отсчетов, в зависимости от применяемой структуры отсчетов, цветового пространства и т.п. Специалистам в данной области техники должно быть очевидна связь между пикселями и отсчетами. Далее в настоящем описании будут рассматриваться отсчеты.
[0069] В соответствии с одним из вариантов осуществления настоящего изобретения видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени, или в соответствии с другими временными ограничениями, накладываемыми практическим применением. Одной из функций контроллера (550) может быть обеспечение подходящей скорости кодирования. В некоторых из вариантов осуществления настоящего изобретения контроллер (550) управляет другими функциональными блоками, описанными ниже, и функционально связан с этими блоками. Эта связь для простоты на чертеже не показана. Параметры, задаваемые контроллером (550), могут включать параметры, связанные с управлением скоростью (пропуск изображений, квантователь, значение λ для методов оптимизации скорость-искажения, …), размером изображений, компоновкой групп изображений (GOP), максимальной опорной областью векторов движения и т.п. Контроллер (550) может быть сконфигурирован для наличия других подходящих функций, относящихся к видеокодеру (503), оптимизированному для конкретной конструкции системы.
[0070] В некоторых вариантах осуществления настоящего изобретения видеокодер (503) может быть сконфигурирован для работы в петле кодирования. Крайне упрощенно, в одном из примеров, петля кодирования может включать кодер (530) источника (например, который отвечает за формирование символов, то есть, потока символов, на основе кодируемого входного изображения, и опорных изображений), и (локального) декодера (533), встроенного в видеокодер (503). Декодер (533) восстанавливает символы, чтобы сформировать данные отсчетов, идентичные тем, которые бы также формировал (удаленный) декодер (поскольку сжатие символов в кодированном битовом потоке в технологиях сжатия, рассматриваемых в настоящем изобретении, выполняют без потерь). Этот восстановленный поток отсчетов (данные отсчетов) может вводиться в память 534 опорных изображений. Поскольку декодирование потока символов дает результатом одинаковые с точностью до бита результаты, независимо от декодера (локального или удаленного), содержимое памяти (534) опорных изображений также одинаково с точностью до бита в локальном кодере и удаленном кодере. Другими словами, блок предсказания в кодере «видит» в качестве отсчетов опорных изображений в точности те же значения отсчетов, которые «увидит» декодер, используя предсказание при декодировании. Этот фундаментальный принцип синхронности опорных изображений (и результирующий дрейф, если синхронность не может быть обеспечена, например, из-за ошибок в канале) используется в некоторых решениях на существующем уровне техники.
[0071] Работа «локального» декодера (533) может быть аналогична «удаленному» декодеру, например видеодекодеру (410), которая уже была подробно описана выше в связи с фиг. 4. Однако, возвращаясь к фиг. 4, поскольку символы доступны, а кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может выполняться без потерь, в локальном декодере (533) могут не быть в полной мере реализованы блоки энтропийного декодирования из состава декодера (410), включая буферную память (415) и анализатор (420).
[0072] Здесь можно заметить, что любая технология декодирования, помимо анализа/энтропийного декодирования, имеющаяся в декодере, должна присутствовать в по существу идентичной функциональной форме в соответствующем кодере. По этой причине описание настоящего изобретения сконцентрировано на работе декодера. Описание технологий кодирования может быть опущено, поскольку они могут быть обратными подробно описанным технологиям декодирования. Лишь в некоторых местах необходимо более подробное описание, и оно будет приведено ниже.
[0073] При выполнении своих операций, в некоторых из примеров, кодер (530) источника может выполнять кодирование с предсказанием на основе компенсации движения, при котором входное изображение кодируют с предсказанием на основе одного или более ранее кодированных изображений видеопоследовательности, которые были помечены как «опорные кадры». Таким образом, машина (532) кодирования кодирует разности между блоками пикселей во входном изображении и блоками пикселей в опорном изображении (или изображения), которые могут быть выбраны как опорные для предсказания входного изображения.
[0074] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, помеченные как опорные, в зависимости от символов, формируемых кодером (530) источника. Операции машины (532) кодирования, предпочтительно, являются обработкой данных с потерями. Когда кодированные видеоданные декодируют в видеодекодере (не показан на фиг. 5), восстановленная видеопоследовательность, как правило, является репликой исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) в точности воспроизводит процесс декодирования, который мог бы выполняться удаленным видеодекодером, над опорными изображениями и помещает восстановленные опорные изображения в кэш (534) опорных изображений. Таким образом, в видеокодере (503) могут локально храниться копии восстановленных опорных изображений, имеющих то же содержание, что и восстановленные опорные изображения, получаемые удаленным видеодекодером (при отсутствии ошибок передачи).
[0075] Предсказатель (535) может выполнять поиск предсказаний для машины (532) кодирования. То есть, для нового кодируемого изображения предсказатель (535) может выполнять поиск в памяти (534) опорных изображений, чтобы найти данные отсчетов (в качестве кандидатных опорных блоков пикселей), или метаданные, например, векторы движений опорных изображений, формы блоков и т.п., которые могут служить опорными для новых изображений. Предсказатель (535), может находить подходящие опорные данные для каждого отдельного блока пикселей. В некоторых случаях, в зависимости от результатов поиска, полученных предсказателем (535), опорные данные для предсказания входного изображения могут извлекаться из нескольких опорных изображений, хранимых в памяти (534) опорных изображений.
[0076] Контроллер (550) может управлять операциями кодирования в кодере (530) источника, включая, например, задание параметров и параметров подгрупп, используемых для кодирования видеоданных.
[0077] Выходные данные всех описанных выше функциональных блоков могут подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) преобразует символы, формируемые различными функциональными блоками, в кодированную видеопоследовательность при помощи сжатия этих символов, без потерь, в соответствии с технологиями, известными специалистами в данной области техники, например, кодированием Хаффмана, кодированием с переменной длиной кодового слова, арифметическим кодированием и т.п.
[0078] Передатчик (540) может буферизовать кодированную видеопоследовательность (или видеопоследовательности), формируемую энтропийным кодером (545), чтобы подготовить ее к передаче по каналу (560), связи, который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные из видеокодера (503) с другими передаваемыми данными, например, потоками кодированных аудиоданных и/или служебных данных (их источники не показаны на чертеже).
[0079] Контроллер (550) может управлять работой видеокодера(503). При кодировании контроллер (550) может присваивать каждому кодированному изображению некоторый тип кодированного изображения, который может влиять на применяемые к нему методы кодирования. Например, изображениям может быть присвоен один из следующих типов:
[0080] Внутренне предсказываемым изображением (I-изображением) может быть изображение, которое кодируют и декодируют без использования, в качестве источника для предсказания, каких-либо других изображений видеопоследовательности. Некоторые видеокодеки поддерживают различные типы внутренне предсказываемых изображений, например, изображения независимого обновления декодирования (Independent Decoder Refresh, IDR). Специалисты в данной области техники должны быть осведомлены о подобных вариантах I-изображений, а также об их свойствах и применимости.
[0081] Предсказываемое изображение (Р-изображение) - это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум одного вектора движения и указателя на опорное изображение для предсказания значений отсчетов каждого блока.
[0082] Двунаправленно предсказываемое изображение (В-изображение) - это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум двух векторов движения и указателей на опорное изображение для предсказания значений отсчетов каждого блока. Аналогично, в случае множественно предсказываемых изображений могут применяться более чем два опорных изображения и соответствующих метаданных, чтобы восстановить один блок.
[0083] Исходные изображения обычно пространственно разбивают на множество блоков отсчетов (например, блоки размера 4×4, 8×8, 4×8 или 16×16 отсчетов в каждом) и кодируют поблочно. Блоки отсчетов могут кодироваться с предсказанием на основе других (уже кодированных) блоков, в зависимости от типов кодирования, назначенных соответствующим этим блоками изображениям. К примеру, блоки отсчетов в I-изображениях могут кодироваться без предсказания или с предсказанием на основе уже кодированных блоков того же изображения («пространственное предсказание» или «внутреннее предсказание»). Блоки пикселей в Р-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного ранее кодированного опорного изображения. Блоки пикселей в В-изображениях могут кодироваться без предсказания (в оригинале predietively, однако по смыслу и в прошлом тексте, скорее «без предсказания»), с помощью пространственного предсказания или с помощью временного предсказания на основе одного или двух ранее кодированных опорных изображений.
[0084] Видеокодер (503) может выполнять операции кодирования в соответствии с заранее заданной технологией или стандартом видеокодирования, которые могут быть задокументированы в стандарте, например, Рекомендации Н.265 ITU-T. При своем функционировании видеокодер (503) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, использующие временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, соответственно, могут удовлетворять синтаксису, заданному применяемой технологией или стандартом видеокодирования.
[0085] В одном из вариантов осуществления настоящего изобретения передатчик (540) может, совместно с кодированным видео, передавать дополнительные данные. Кодер (530) источника, например, может предоставлять такие данные, как фрагмент кодированной видеопоследовательности. Дополнительные данные могут включать данные уточняющих временных, пространственных или SNR уровней, избыточных изображений или слайсов, сообщений SEI или фрагментов наборов параметров VUI и т.п.
[0086] Видео может захватываться в виде множества исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно называемое «внутренним предсказанием») возможно из-за наличия в изображениях пространственных корреляций, а внешнее предсказание изображений возможно из-за корреляции (временной или иной) между различными изображениями. В одном из примеров кодируемое или декодируемое изображение, которое называют текущим изображением, разбивают на блоки отсчетов. Когда блок в текущем изображении сходен с опорным блоком в ранее кодированном и все еще находящемся в буфере опорным изображении этого же видео, такой блок текущего изображения может быть кодирован при помощи вектора, называемого вектором движения. Вектор движения указывает на опорный блок в опорном изображении, а также, если применяются множественные опорные изображения, имеет третье измерение, идентифицирующее опорное изображение.
[0087] В некоторых из вариантов для внешнего предсказания изображений может применяться метод двунаправленного предсказания. В методе двунаправленного предсказания используют два опорных изображения, а именно, первое опорное изображение и второе опорное изображение, оба из которых предшествуют в видео текущему изображению в порядке декодирования (однако могут быть предшествующим и следующим, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться при помощи первого вектора движения, указывающего на первый опорный блок в первом опорном изображении, и второго вектора движения, указывающего на второй опорный блок во втором опорном изображении. Блок может предсказываться при помощи комбинации из первого опорного блока и второго опорного блока.
[0088] Также, для повышения эффективности кодирования, при внешнем предсказании изображений может применяться метод режима слияния.
[0089] В соответствии с некоторыми из вариантов осуществления настоящего изобретения элементарной единицей для предсказания, то есть, внешнего и внутреннего предсказания изображений, являются блоки отсчетов. К примеру, в соответствии со стандартном 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 пикселей и т.п.
[0090] На фиг. 6 показана блок-схема видеокодера (603) в соответствии с еще одним из вариантов осуществления настоящего изобретения. Видеокодер (603) сконфигурирован для приема обрабатываемого блока (например, блока предсказания) значений отсчетов внутри текущего видеоизображения из последовательности видеоизображений и для кодирования обрабатываемого блока в кодированное изображение, являющее частью кодированной видеопоследовательности. В одном из примеров видеокодер (603) может использоваться вместо видеокодера (303), показанного в примере фиг. 3.
[0091] В случае стандарта HEVC видеокодер (603) принимает, в качестве обрабатываемого блока, матрицу значений отсчетов, например, блок предсказания размером 8×8 отсчетов. Видеокодер (603) определяет, может ли обрабатываемый блок быть наиболее эффективно кодирован с использованием режима внутреннего предсказания, внешнего предсказания или двунаправленного предсказания при помощи, например, оптимизации соотношения «битовая скорость искажения». Если обрабатываемый блок будет кодироваться в режиме внутреннего предсказания, видеокодер (603) может использовать метод внутреннего предсказания для кодирования обрабатываемого блока в кодированное изображение; а когда обрабатываемый блок будет кодироваться в режиме внешнего предсказания или двунаправленного предсказания, видеокодер (603) может использовать для кодирования обрабатываемого блока метод внешнего предсказания или двунаправленного предсказания, соответственно. В некоторых технологиях видеокодирования режим слияния может быть подрежимом внешнего предсказания изображений, в котором вектор движения вычисляют на основе одного или более предсказаний векторов движения без задействования кодированной составляющей вектора движения вне предсказаний. В некоторых других технологиях видеокодирования составляющая вектора движения, применимая к обрабатываемому блоку, может присутствовать. В одном из примеров видеокодер (603) может содержать и другие компоненты, такие как модуль определения режима (не показан на чертеже) для определения режима, применяемого к обрабатываемым блокам.
[0092] В примере фиг. 6 видеокодер (603) включает кодер (630) с внешним предсказанием, кодер (622) с внутренним предсказанием, вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер, соединенные вместе в соответствии с иллюстрацией фиг. 6.
[0093] Кодер (630) с внешним предсказанием сконфигурирован для приема отсчетов текущего блока (например, обрабатываемого блока), для сравнения этого блока с одним или более опорными блоками в опорных изображениях (например, блоками в предшествующих и последующих изображениях), для формирования информации внешнего предсказания (например, описания избыточной информации в соответствии с методом внешнего предсказания, векторов движения, информации режима слияния) и для вычисления результатов внешнего предсказания (например, предсказанного блока) на основе информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорные изображения являются опорными изображениями, декодированными на основе кодированной видеоинформации.
[0094] Кодер (622) с внутренним предсказанием сконфигурирован для приема отсчетов текущего блока (например, обрабатываемого блока), в некоторых случаях, для сравнения этого блока с уже кодированными блоками в этом же изображении, для формирования квантованных коэффициентов после преобразования, и в некоторых случаях, также информации внутреннего предсказания (например, информации о направлении внутреннего предсказания в соответствии с одним или более методами внутреннего предсказания). В одном из примеров кодер (622) с внутренним предсказанием также вычисляет результаты внутреннего предсказания (например, предсказанный блок) на основе информации внутреннего предсказания и опорных блоков отсчетов в том же изображении.
[0095] Общий контроллер (621) сконфигурирован для определения данных общего управления и для управления остальными компонентами видеокодера (603) на основе данных общего управления. В одном из примеров общий контроллер (621) может определять режим для блока и подавать сигнал управления на переключатель (626) в зависимости от режима. Например, когда необходим режим внутреннего предсказания, общий контролер (621) управляет переключателем (626) для обеспечения использования результата режима внутреннего предсказания вычислителем (623) остатка, а также управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения этой информации в битовый поток; а когда необходим режим внешнего предсказания, общий контроллер (621) управляет переключателем (626) для обеспечения использования результата режима внешнего предсказания вычислителем (623) остатка, а также управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения этой информации в битовый поток.
[0096] Вычислитель (623) остатка сконфигурирован для вычисления разности (данных остатка) между принятым блоком отсчетов и результатами предсказания, выбранными из кодера (622) с внутренним предсказанием или кодера (630) с внешним предсказанием. Кодер (624) остатка сконфигурирован для выполнения операций на основе данных остатка и кодирования данных остатка, чтобы сформировать коэффициенты преобразования. В одном из примеров кодер (624) остатка, чтобы формировать коэффициенты преобразования, может быть сконфигурирован для преобразования данных остатка из пространственных в частотные. Коэффициенты преобразования затем подвергают квантованию и получают квантованные коэффициенты преобразования. В различных вариантах осуществления настоящего изобретения видеокодер (603) включает также декодер (628) остатка. Декодер (628) остатка сконфигурирован для выполнения обратного преобразования и формирования декодированных данных остатка. Декодированные данные остатка соответствующим образом используются в кодере (622) с внутренним предсказанием и кодере (630) с внешним предсказанием. К примеру, кодер (630) с внешним предсказанием может формировать декодированные блоки отсчетов на основе декодированных данных остатка и информации внешнего предсказания, а кодер (622) с внутренним предсказанием может формировать декодированные блоки отсчетов на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки отсчетов соответствующим образом обрабатывают и формируют декодированные изображения, которые, в некоторых примерах, могут быть буферизованы в запоминающих схемах (не показаны на чертеже) и использованы в качестве опорных изображений.
[0097] Энтропийный кодер (625) сконфигурирован для форматирования битового потока с включением в него кодированного блока. Энтропийный кодер (625) сконфигурирован для включения [в битовый поток] различной информации в соответствии с используемым стандартом, например, стандартом HEVC. В одном из примеров энтропийный кодер (625) может быть сконфигурирован для включения, в битовый поток, данных общего управления, выбранной информации предсказания (например, информации внутреннего предсказания или внешнего предсказания), информации остатка и другой подходящей информации. Следует отметить, что в соответствии с настоящим изобретением при кодировании блока в подрежиме слияния, как в режиме внутреннего предсказания, так и в режиме внешнего предсказания, информация остатка отсутствует.
[0098] На фиг. 7 показана блок-схема видеодекодера (710) в соответствии с еще одним из вариантов осуществления настоящего изобретения. Видеодекодер (710) сконфигурирован для приема кодированных изображений, являющихся частью кодированной видеопоследовательности, и для декодирования кодированных изображений с целью формирования восстановленных изображений. В одном из примеров видеодекодер (710) может использоваться вместо видеодекодера (310), показанного в примере фиг. 3.
[0099] В примере фиг. 7 видеодекодер (710) включает энтропийный декодер (771), декодер (780) с внешним предсказанием, декодер (773) остатка, модуль (774) восстановления и декодер (772) с внутренним предсказанием, объединенные в соответствии с иллюстрацией фиг. 7.
[0100] Энтропийный декодер (771) может быть сконфигурирован для восстановления, на основе кодированного изображения, символов, которые представляют синтаксические элементы, составляющие кодированное изображение. Эти символы могут включать, например: режим, в котором кодирован блок (например, режим внутреннего предсказания, режим внешнего предсказания, режим двунаправленного предсказания, причем последние два могут быть в подрежиме слияния или ином подрежиме), информация предсказания (например, информация внутреннего предсказания или внешнего предсказания), которая может указывать на фрагмент метаданных, используемый для предсказания декодером (772) с внутренним предсказанием или декодером (780) с внешним предсказанием, соответственно, информация остатка, например, в форме квантованных коэффициентов преобразования, и т.п.В одном из примеров, когда режимом является режим внешнего предсказания или двунаправленного предсказания, информацию внешнего предсказания предоставляют в декодер (780) с внешним предсказанием; а когда используют тип внутреннего предсказания, информацию внутреннего предсказания предоставляют в декодер (772) с внутренним предсказанием. Информация остатка может быть подвергнута обратному квантованию и передана в декодер (773) остатка.
[0101] Декодер (780) с внешним предсказанием сконфигурирован для приема информации внешнего предсказания и формирования результатов внешнего предсказания на ее основе.
[0102] Декодер (772) с внутренним предсказанием сконфигурирован для приема информации внутреннего предсказания и формирования результатов внешнего предсказания на ее основе.
[0103] Декодер (773) остатка сконфигурирован для выполнения обратного квантования для получения деквантованных коэффициентов преобразования, а также для обработки деквантованных коэффициентов преобразования, чтобы преобразовать остаток из частотных значений в пространственные. В декодере (773) остатка может также быть необходима определенная информация управления, включающая параметр квантователя (Quantizer Parameter, QP), которая может предоставляться энтропийным декодером (771) (этот путь прохождения данных не показан на чертеже, поскольку такая управляющая информация имеет лишь малый объем).
[0104] Модуль (774) восстановления сконфигурирован для комбинирования, в пространственных значениях, остатка, выданного декодером (773) остатка, и результатов предсказания (выданных модулями внешнего предсказания или внутреннего предсказания, в зависимости от конкретной ситуации), с формированием восстановленного блока, который может быть частью восстановленного изображения, а восстановленное изображение, в свою очередь, может быть частью восстановленного видео. Следует отметить, что для повышения качества видео могут выполняться и другие соответствующие операции, например, операция деблокирования и т.п.
[0105] Следует отметить, что видеокодеры (303), (503) и (603), а также видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любой подходящей технологии. В одном из вариантов осуществления настоящего изобретения видеокодеры (303), (503) и (603), а также видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления настоящего изобретения видеокодеры (303), (503) и (603), а также видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, исполняющих программные инструкции.
[0106] Внутреннее предсказание в стандарте VVC
[0107] На фиг. 8А показана иллюстрация примера направлений внутреннего предсказания и соответствующих режимов внутреннего предсказания в некоторых примерах (например, в VVC). На фиг. 8А представлены в общей сложности 95 режимов внутреннего предсказания (режимы -14 ~ 80), среди которых режим 0 является плоским режимом (обозначаемым INTRA_PLANAR), режим 1 является режимом DC (обозначаемым INTRA_DC), а остальные режимы (режимы -14 ~ -1 и режимы 2 ~ 80) являются угловыми (или направленными) (обозначаемыми INTRA_ANGULAR). Среди угловых (или направленных) режимов режим 18 (обозначаемый INTRA_ANGULAR18) является горизонтальным режимом), режим 50 (обозначаемый INTRA_ANGULAR50) является вертикальным режимом, режим 2 (обозначаемый INTRA_ANGULAR2) является диагональным режимом, указывающим в направлении вниз-влево, режим 34 (обозначаемый INTRA_ANGULAR34) является диагональным режимом, указывающим в направлении вверх-влево, а режим 66 (обозначаемый INTRA_ANGULAR66), является диагональным режимом, указывающим в направлении вверх-вправо. Режимы -14 ~ -1 и режимы 67~80 называют режимами широкоугольного внутреннего предсказания (Wide-Angle Intra Prediction, WAIP). В таблице на фиг. 8В показаны примеры угловых режимов внутреннего предсказания и соответствующих им углов внутреннего предсказания.
[0108] Процедура фильтрации с комбинированием предсказаний в зависимости от позиции (PDPC)
[0109] В соответствии с аспектами настоящего изобретения, комбинирование предсказаний в зависимости от позиции (PDPC) может применяться к следующим режимам внутреннего предсказания, без сигнализации: плоский, DC, режимы WAIP, горизонтальный, вертикальный, угловой режим вниз-влево (режим 8) и 8 соседних с ним угловых режимов (режимы 3 ~ 10), и угловой режим вверх-вправо (режим 66) и 8 соседних с ним угловых режимов (режимы 58 ~ 65).
[0110] В одном из вариантов осуществления настоящего изобретения предсказание pred'[x][y] отсчета, расположенного в позиции (х, у) в текущем блоке получают с использованием одного из режимов внутреннего предсказания (например, режима DC, плоского или углового режима) и линейной комбинации опорных отсчетов в соответствии с ур. 1.
pred'[x][y] = (wL×R(-1,y) + wT×R(x,-1) - wTL×R(-1,-1) + (64 - wL - wT + wTL)×pred[x][y] + 32) >> 6 (Ур. 1)
где pred'[x][y] - значение внутреннего предсказания, полученное на основе режима внутреннего предсказания, R(x, -1) (нефильтрованный) опорный отсчет, расположенный в опорной линии сверху от текущего отсчета (х, у) и имеющий такую же горизонтальную координату, что и текущий отсчет (х, у), R(-1, у) - (нефильтрованный) опорный отсчет, который расположен в опорной линии слева от текущего отсчета и имеет такую же вертикальную координату, что и текущий отсчет (х, у), R(-1, -1) опорный отсчет, расположенный в углу сверху-слева от текущего блока, а wT, wL, и wTL - весовые коэффициенты.
[0111] В одном из вариантов осуществления настоящего изобретения, когда режимом внутреннего предсказания является режим DC, весовые коэффициенты могут быть вычислены с помощью ур. 15.
wT = 32 >> ((у << 1) >> nScale) (Ур. 2)
wL = 32 >> ((х << 1) >> nScale) (Ур. 3)
wTL = + (wL >> 4) + (wT >> 4) (Ур. 4)
nScale = (log2(width) + log2(height)-2) >> 2 (Ур. 5)
где wT - весовой коэффициент для опорного отсчета (х, -1), wL - весовой коэффициент для опорного отсчета (1, у), wTL - весовой коэффициент для опорного отсчета (-1, -1) сверху-слева, nScale определяет, как быстро весовые коэффициенты уменьшаются вдоль оси (например, wL уменьшается слева направо вдоль оси х, wT уменьшается сверху вниз по оси у). Постоянная 32 в ур. 2 и 3 представляет собой исходный весовой коэффициент для соседнего отсчета (например, соседнего сверху отсчета, соседнего слева отсчета или соседнего отсчета слева-сверху). Исходный весовой коэффициент назначают также для верхнего левого отсчета текущего блока. Весовые коэффициенты для соседних отсчетов в процедуре фильтрации PDPC меньше или равны исходному весовому коэффициенту.
[0112] В одном из вариантов осуществления настоящего изобретения, когда режимом внутреннего предсказания является плоский режим, wTL назначают равным 0; когда режимом внутреннего предсказания является горизонтальный режим, wTL назначают равным wT; а когда режимом внутреннего предсказания является вертикальный режим, wTL назначают равным wL. Весовые коэффициенты PDPC могут быть вычислены с помощью операций сложения и сдвига. Значение pred'[x][y] может быть вычислено одним шагом с помощью ур. 1.
[0113] На фиг. 9А показан пример весовых коэффициентов для предсказания отсчета в позиции (0, 0), в режиме DC. В примере фиг. 9А текущий блок имеет размер 4×4 (ширина = высота = 4), следовательно nScale равно 0. Тогда, wT равен 32, wL равен 32, a wTL равен 4.
[0114] На фиг. 9В показан пример весовых коэффициентов для предсказания отсчета в позиции (1, 0), в режиме DC. В примере фиг. 9А текущий блок имеет размер 4×4 (ширина = высота = 4), следовательно nScale равно 0. Тогда wT равен 32, wL равен 8, a wTL равен 2.
[0115] В некоторых из вариантов осуществления настоящего изобретения, когда процедуру фильтрации PDPC применяют в режиме DC, плоском, горизонтальном и вертикальном режимах внутреннего предсказания, дополнительные граничные фильтры, такие как граничный фильтр режима DC HEVC или краевые фильтры горизонтального или вертикального режимов, не требуются.
[0116] Пример процедуры фильтрации PDPC
[0117] В некоторых примерах входные данные для процедуры фильтрации PDPC включают:
- режим внутреннего предсказания, обозначенный preModeIntra;
- ширина текущего блока, обозначенная nTbW;
- высота текущего блока, обозначенная nTbH;
- ширина опорных отсчетов, обозначенная refW;
- высота опорных отсчетов, обозначенная refH; - предсказанные отсчеты, обозначенные predSs[x][у], где х = 0..nTbW-1 и у = 0..nTbH-1;
- нефильтрованные опорные (также называемые соседними) отсчеты, обозначенные р[х][у], где х = -1, у = -1..refH-1 и х = 0..refW-1, у = -1; и
- составляющая цветности текущего блока, обозначенная cIdx.
[0118] В зависимости от значения cIdx, функцию clip1Cmp определяют следующим образом:
Y
- если cIdx равна 0, clip1Cmp назначают равной Clip1.
C
- в противном случае clip1Cmp назначают равной Clip1.
[0119] Далее, выходными значениями процедуры фильтрации PDPC являются модифицированные предсказанные отсчеты predSamples'[x][y], где х = 0..nTbW-1 и у = 0..nTbH-1.
[0120] Затем с помощью ур. 6 может быть вычислен коэффициент масштабирования, nScale.
nScale = ((Log2(nTbW) + Log2(nTbH) - 2) >> 2) (Ур. 6)
[0121] Затем массив опорных отсчетов, mainRef[x], где х = 0..refW, может быть определен как массив нефильтрованных опорных отсчетов сверху от текущего блока, и второй массив опорных отсчетов sideRef[y], где у = 0..refH, может быть определен как массив нефильтрованных опорных отсчетов слева от текущего блока. Массивы опорных отсчетов, mainRef[x] и sideRef[y] могут быть вычислены на основе нефильтрованных опорных отсчетов согласно ур. 7 и ур. 8, соответственно.
mainRef[x] = р[х][-1] (Ур. 7)
sideRef[y] = р[-1][у] (Ур. 8)
[0122] Для каждой позиции (х, у) в текущем блоке для вычислений PDPC могут использоваться опорный отсчет сверху, обозначенный refT[x][у], опорный отсчет слева, обозначенный refL[х][у], и угловой опорный отсчет р[-1,-1]. Модифицированный предсказанный отсчет может быть вычислен с помощью ур. 9, и результат соответствующим образом усекают в соответствии с переменной cIdx, которой обозначена составляющая цветности.
predSamples'[x][y] = (wL × refL(x,y) + wT × refT(x,y) - wTL × p(-1,-1) + (64 - wL - wT + wTL) × predSamples[x][y] + 32) >> 6 (Ур. 9)
[0123] Опорные отсчеты refT[x][y], refL[x][y], и весовые коэффициенты wL, wT, и wTL могут определяться в зависимости от режима внутреннего предсказания, preModeIntra.
[0124] Когда режим preModeIntra внутреннего предсказания равен INTRA_PLANAR (например, 0, плоский режим, или режим 0) или INTRA_DC (например, 1, режим DC, или режим 1), опорные отсчеты refT[x][у], refL[x][y], и весовые коэффициенты wL, wT и wTL могут быть определены согласно уравнениям ур. 10-14.
refL[х][у] = р[-1][у] (Ур. 10)
refT[x][y] = р[x][-1] (Ур. 11)
wT[y] = 32 >> ((у << 1) >> nScale) (Ур. 12)
wL[х] = 32 >> ((x << 1) >> nScale) (Ур. 13)
wTL[x][y] = (predModeIntra = = INTRA_DC)? (wL[x] >> 4) + (wT[y] >> 4)):0 (Ур. 14)
[0125] В противном случае, когда режим preModeIntra внутреннего предсказания равен INTRA_ANGULAR18 (например, 18, горизонтальный режим, или режим 18) или INTRA_ANGULAR50 (например, 50, вертикальный режим, или режим 50), опорные отсчеты refT[х][у], refL[х][у], и весовые коэффициенты wL, wT и wTL могут быть определены согласно уравнениям ур. 15-19.
refL[x][y] = p[-1][y] (Ур. 15)
refT[x][y] = р[х][-1] (Ур. 16)
wT[y] = (predModeIntra = = INTRA_ANGULAR18)? 32 >> ((у << 1) >> nScale):0 (Ур. 17)
wL[х] = (predModeIntra = = INTRA_ANGULAR50)? 32 >> ((x << 1) >> nScale):0 (Ур. 18)
wTL[x][y] = (predModeIntra = = INTRA_ANGULAR18)? wT[y]:wL[x] (Ур. 19)
[0126] В противном случае, когда режим preModeIntra внутреннего предсказания равен INTRA_ANGULAR2 (например, 2, или режим 2) или INTRA_ANGULAR66 (например, 66, или режим 66) опорные отсчеты refT[х][у], refL[x][y] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 20-24.
refL[х][у] = р[-1][х + у + 1] (Ур. 20)
refT[x][y] = р[х + у + 1][-1] (Ур. 21)
T[у] = (32 >> 1) >> ((у << 1) >> nScale) (Ур. 22)
wL[x] = (32 >> 1) >> ((х << 1) >> nScale) (Ур. 23)
wTL[x][y] = 0 (Ур. 24)
[0127] В противном случае, когда режим preModeIntra внутреннего предсказания меньше или равен INTRA_ANGULAR 10 (например 10, или режим), для каждой позиции (х,у), переменные dXPos[y], dXFrac[y], dXInt[y], и dX[х][у] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dXPos[y], dXFrac[y], dXInt[y] и dX[x][y].
[0128] Переменные dXPos[y], dXFrac[y], dXInt[y] и dX[x][y] могут быть определены в соответствии с уравнениями 25-28.
dXPos[y] = ((у + 1) × invAngle + 2) >> 2 (Ур. 25)
dXFrac[y] = dXPos[y]&63 (Ур. 26)
dXInt[y] = dXPos[y] >> 6 (Ур. 27)
dX[х][у] = х + dXInt[y] (Ур. 28)
[0129] Затем в соответствии с уравнениями 29-33 могут быть определены опорные отсчеты refT[x][у], refL[x][y] и весовые коэффициенты wL, wT, и wTL.
refL[x][y] = 0 (Ур. 29)
refT[x][y] = (dX[x][y] < refW-1)? mainRef[dX[x][y] + (dXFrac[y] >> 5)]:0 (Ур. 30)
wT[y] = (dX[y] < refW-1)?32 >> ((y << 1) >> nScale):0 (Ур. 31)
wL[x] = 0(Ур. 32)
wTL[x][y] = 0 (Ур. 33)
[0130] В противном случае, когда режим preModeIntra внутреннего предсказания больше или равен INTRA_ANGULAR58 (например, 58, или режим 58), переменные dYPos[x], dYFrac[x], dYInt[x] и dY[x][y] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[x][у], refL[x][y] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dYPos[x], dYFrac[x], dYInt[x] и dY[x][y].
[0131] Переменные dYPos[x], dYFrac[x], dYInt[x] и dY[x][y] могут быть определены в соответствии с уравнениями 34-37.
dYPos[x] = ((х + 1) × invAngle + 2) >> 2 (Ур. 34)
dYFrac[x] = dYPos[х]&63 (Ур. 35)
dYInt[x] = dYPos[x] >> 6 (Ур. 36)
dY[x][y] = x + dYInt[x] (Ур. 37)
[0132] Затем в соответствии с уравнениями 38-42 могут быть определены опорные отсчеты refT[x][y], refL[x][y] и весовые коэффициенты wL, wT, и wTL.
refL[x][у] = (dY[x][у]<refH-1)? sideRef[dY[x][y] + (dYFrac[x] >> 5)]:0 (Ур. 38)
refT[x][y] = 0 (Ур. 39)
wT[y] = 0 (Ур. 40)
wL[x] = (dY[x] < refH-1)? 32 >> ((x << 1) >> nScale):0 (Ур. 41)
wTL[x][y] = 0 (Ур. 42)
[0133] В противном случае, когда переменная preModeIntra лежит между режимами 11-57 и не является ни режимом 18, ни режимом 50, опорные отсчеты refT[х][у], refL[х][у], а также весовые коэффициенты wL, wT и wTL назначают равными 0.
[0134] Наконец, в соответствии с ур. 43 могут быть вычислены значения фильтрованных отсчетов filtSamples[x][y], где х = 0..nTbW-1, у = 0..nTbH-1.
filtSamples[х][у] = clip1Cmp((refL[x][y] × wL + refT[x][y] × wT - р[-1][-1] × wTL[x][y] + (64 - wL[x] - wT[y] + wTL[x][y]) × predSamples[x][y] + 32) >> 6) (Ур. 43)
[0135] В некоторых примерах (например, в стандарте VVC) для блока преобразования размером nTbW × nTbH в текущем блоке размером nCbW × nCbH, при выполнении внутреннего предсказания с помощью PDPC, если текущий блок не кодирован в режиме внутренних подразбиений (intra sub-partitions, ISP) (т.е. IntraSubPartitionsSplitType равно ISP_NO_SPLIT, в соответствии со спецификацией версии 5 проекта VVC, VVC Draft v5), диапазон доступных верхних опорных отсчетов (refW) назначают равным 2 × nTbW, а диапазон доступных левых опорных отсчетов (refH) назначают равным 2 × nTbH. В противном случае, если для текущего блока применяют ISP (т.е. IntraSubPartitionsSplitType не равен ISP_NO_SPLIT, в соответствии с VVC Draft v5), диапазон доступных верхних опорных отсчетов (refW) назначают равным 2 × nCbW, а диапазон доступных левых опорных отсчетов (refH) назначают равным 2 × nCbH.
[0136] Методы усовершенствования PDPC
[0137] В предыдущем разделе «Пример процедуры фильтрации PDPC» или в других соответствующих примерах (например, VTM5.0), для внутренне кодированных блоков с диагональным режимом внутреннего предсказания и режимов, соседних с диагональным режимом внутреннего предсказания, могут применяться различные процедуры PDPC. К примеру, для режима 2 и соседних с ним режимов (например, режимов с номерами меньшими либо равными 10) могут применяться различные процедуры PDPC. В другом примере различные процедуры PDPC могут применяться для режима 66 и соседних с ним режимов (например, режимов с номерами меньшими либо равными 58). Однако процедура предсказания для диагональных режимов предсказания и соседних с ними режимов остается такой же, поскольку нет явных преимуществ для поддержки отличающихся процедур PDPC в этих режимах. Соответственно, в аспектах настоящего изобретения предложены методы усовершенствования процедуры PDPC.
[0138] Предложенные методы или способы могут использоваться по отдельности или в виде комбинаций, в любом порядке. Следует отметить, что в приведенных ниже разделах описания PDPC может использоваться как общий термин для процедур контурной фильтрации отсчетов предсказания в зависимости от позиции, в которой применяют линейное комбинирование отсчетов предсказания и соседних восстановленных отсчетов с использованием зависящих от позиции весовых коэффициентов, при этом результаты фильтрации могут использоваться для замены исходных отсчетов предсказания. Соответственно, процедура PDPC не ограничена процедурой, рассмотренной в предыдущем разделе «Пример процедуры фильтрации PDPC».
[0139] При этом в приведенном ниже описании диагональными режимами внутреннего предсказания могут быть режим 2 и режим 66, показанные на фиг. 8А. Режимы, соседние с режимом 2 могут иметь номера, меньшие, чем горизонтальный режим (например, номера режимов внутреннего предсказания менее 18), а режимы, соседние с режимом 66 могут иметь номера режимов, большие, чем вертикальный режим (например, номера режимов внутреннего предсказания большие 50).
[0140] В соответствии с аспектами настоящего изобретения для диагональных режимов внутреннего предсказания и соседних с ними режимов применяют одну и ту же процедуру PDPC (то есть, тот же диапазон доступных опорных отсчетов и те же весовые коэффициенты, применяемые для каждой позиции).
[0141] В одном из вариантов осуществления настоящего изобретения диагональными режимами внутреннего предсказания могут быть режим 2 и режим 66 на фиг. 8А, при этом режимами, соседними с диагональными режимами внутреннего предсказания могут быть режимы -1 ~ -14, режимы 3 ~ 10, режимы 58 ~ 65 и режимы 67 ~ 80 на фиг. 8А.
[0142] В одном из вариантов осуществления настоящего изобретения для блоков, где используют диагональные режимы внутреннего предсказания, в процедуре PDPC может использоваться только подмножество доступных соседних опорных отсчетов, однако все доступные соседние опорные отсчеты могут использоваться в процедуре PDPC для блоков с режимами, соседними с диагональными режимами предсказания. Например, только refW - K соседних сверху опорных отсчетов и refH - K соседних слева опорных отсчетов могут использоваться в процедуре PDPC для блоков, предсказываемых с помощью диагональных режимов внутреннего предсказания (например, режима 2 и режима 66 в VVC Draft v5), где refW и refH, соответственно, общее количество доступных опорных отсчетов сверху и слева (в соответствии с определением в разделе «Общее внутреннее предсказание отсчетов» в VVC Draft v5, также в соответствии с предыдущим разделом «Пример процедуры фильтрации PDPC»), а K - положительное целое число (например, 1, 2, 3 или 4).
[0143] В одном из вариантов осуществления настоящего изобретения для диагонального режима (например, режим 2 и режим 66 в VVC Draft v5) в процедуре PDPC могут использоваться все доступные опорные отсчеты сверху и слева, за исключением самого правого отсчета и самого нижнего отсчета.
[0144] Примеры модификации процедуры PDPC
[0145] В некоторых из вариантов осуществления настоящего изобретения (например, в рассмотренных ниже вариантах А-Е осуществления настоящего изобретения) процедура PDPC может быть модифицирована следующим образом.
[0146] Вариант А осуществления изобретения:
[0147] Примеры входных данных для процедуры фильтрации PDPC включают:
- режим внутреннего предсказания, обозначенный preModeIntra;
- ширина текущего блока, обозначенная nTbW;
- высота текущего блока, обозначенная nTbH;
- ширина опорных отсчетов, обозначенная refW;
- высота опорных отсчетов, обозначенная refH;- предсказанные отсчеты, обозначенные predSs[x][у], где х = 0..nTbW-1 и у = 0..nTbH-1;
- нефильтрованные опорные (также называемые соседними) отсчеты, обозначенные р[х][у], где х = -1, у = -1..refH-1 и х = 0..refW-1, у = -1; и
- составляющая цветности текущего блока, обозначенная cIdx.
[0148] В зависимости от значения cIdx функцию clip1Cmp определяют следующим образом:
Y
- если cIdx равна 0, clip1Cmp назначают равным Clip1.
C
- В противном случае, clip1Cmp назначают равным Clip1.
[0149] Далее, выходными значениями процедуры фильтрации PDPC могут быть модифицированные предсказанные отсчеты predSamples'[x][y], где х = 0..nTbW-1 и у = 0..nTbH-1.
[0150] Затем при помощи ур. 44 может быть вычислен коэффициент nScale масштабирования.
nScale = ((Log2(nTbW) + Log2(nTbH) - 2) >> 2) (Ур. 44)
[0151] Затем массив опорных отсчетов, mainRef[x], где х = 0..refW, может быть определен как массив нефильтрованных опорных отсчетов сверху от текущего блока, и второй массив опорных отсчетов sideRef[y], где у = 0..refH может быть определен как массив нефильтрованных опорных отсчетов слева от текущего блока. Массивы опорных отсчетов, mainRef[x] и sideRef[y] могут быть вычислены на основе нефильтрованных опорных отсчетов согласно ур. 45-46 соответственно.
mainRef [х] = р[х][- 1] (Ур. 45)
sideRef[y] = р[-1][у] (Ур. 46)
[0152] Для каждой позиции (х, у) в текущем блоке для вычислений PDPC могут использоваться опорный отсчет сверху, обозначенный refT[х][у], опорный отсчет слева, обозначенный refL[x][у], и угловой опорный отсчет р[-1,-1]. В некоторых примерах модифицированный предсказанный отсчет может быть вычислен с помощью ур. 47, и результат соответствующим образом усекают в соответствии с переменной cIdx, которой обозначена составляющая цветности.
predSamples'[x][y] = (wL × refL(x,y) + wT × refT(x,y) - wTL × p(-1,-1) + (64 - wL - wT + wTL) × predSamples[x][y] + 32) >> 6 (Ур. 47)
[0153] Опорные отсчеты refT[x][у], refL[x][y], и весовые коэффициенты wL, wT, и wTL могут определяться в зависимости от режима внутреннего предсказания, preModeIntra.
[0154] Когда режим preModeIntra внутреннего предсказания равен INTRA_PLANAR (например, 0, или режим 0) или INTRA_DC (например, 1, режим DC, или режим 1) опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 48-52.
refL[x][y] = р[-1][у] (Ур. 48)
refT[x][y] = р[х][-1] (Ур. 49)
wT[y] = 32 >> ((у << 1) >> nScale) (Ур. 50)
wL[x] = 32 >> ((x << 1) >> nScale) (Ур. 51)
wTL[x][y] = (predModeIntra = INTRA_DC)? ((wL[x] >> 4) + (wT[y] >> 4)): 0 (Ур. 52)
[0155] В противном случае, когда режим preModeIntra внутреннего предсказания равен INTRA_ANGULAR18 (например, 18, горизонтальный режим, или режим 18) или INTRA_ANGULAR50 (например, 50, вертикальный режим, или режим 50) опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 53-57.
refL[x][y] = p[-1][y] (Ур. 53)
refT[x][y] = p[x][-1] (Ур. 54)
wT[y] = (predModeIntra = = INTRA_ANGULAR18)? 32 >> ((у << 1) >> nScale):0 (Ур. 55)
wL [x] = (predModeIntra = = INTRA_ANGULAR50)? 32 >> ((x << 1) >> nScale):0 (Ур. 56)
wTL[x][y] = (predModeIntra = = INTRA_ANGULAR18)? wT[y]:wL[x] (Ур. 57)
[0156] В противном случае, когда режим preModeIntra внутреннего предсказания меньше или равен INTRA_ANGULAR10 (например 10, или режим), для каждой позиции (х,у), переменные dXPos[y], dXFrac[y], dXInt[y], и dX[х][у] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dXPos[y], dXFrac[y], dXInt[y] и dX[x][у].
[0157] Например, переменные dXPos[y], dXFrac[y], dXInt[y] и dX[x][у] могут быть определены в соответствии с уравнениями 58-61.
dXPos[y] = ((у + 1) × invAngle + 2) >> 2 (Ур. 58)
dXFrac[y] = dXPos[y]&63 (Ур. 59)
dXInt[y] = dXPos[y] >> 6 (Ур. 60)
dX[х][у] = x + dXInt[y] (Ур. 61)
[0158] Затем в соответствии с уравнениями 62-66 могут быть определены опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT, и wTL.
refL[x][y] = 0(Ур. 62)
refT[x][y] = (dX[x][y]<refW-1)? mainRef[dX[x][y] + (dXFrac[y] >> 5)]:0 (Ур. 63)
wT[y] = (dX[y]<refW-1)?32 >> ((y << 1) >> nScale):0 (Ур. 64)
wL[x] = 0(Ур. 65)
wTL[x][y] = 0 (Ур. 66)
[0159] В противном случае, когда preModeIntra больше или равен INTRA_ANGULAR58 (например, 58, или режим 58), переменные dYPos[x], dYFrac[x], dYInt[x] и dY[x][y] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[x][у], refL[x][y] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dYPos[x], dYFrac[x], dYInt[x], и dY[x][y].
[0160] Например, переменные dYPos[x], dYFrac[x], dYInt[x] и dY[x][y] могут быть определены в соответствии с уравнениями 67-70.
dYPos[x] = ((x + 1) × invAngle + 2) >> 2 (Ур. 67)
dYFrac[x] = dYPos[х]&63 (Ур. 68)
dYInt[x] = dYPos[x] >> 6 (Ур. 69)
dY[x][y] = x + dYInt[x] (Ур. 70)
[0161] Затем в соответствии с уравнениями 71-75 могут быть определены опорные отсчеты refT[x][y], refL[x][y] и весовые коэффициенты wL, wT, и wTL.
refL[x][y] = (dY[x][y] < refH-1)? sideRef[dY[x][y] + (dYFrac[x] >> 5)]:0 (Ур. 71)
refT[x][y] = 0 (Ур. 72)
wT[y] = 0(Ур. 73)
wL[x] = (dY[x] < refH-1)? 32 >> ((x << 1) >> nScale):0 (Ур. 74)
wTL[x][y] = 0 (Ур. 75)
[0162] В противном случае, когда переменная preModeIntra лежит между режимами 11-57 и не является ни режимом 18, ни режимом 50, опорные отсчеты refT[x][у], refL[x][у], а также весовые коэффициенты wL, wT и wTL назначают равными 0.
[0163] Наконец, в соответствии с ур. 76 могут быть вычислены значения фильтрованных отсчетов filtSamples[x][y], где x = 0..nTbW-1, у = 0..nTbH-1.
filtSamples[х][у] = clip1Cmp((refL[x][y] × wL + refT[x][y] × wT - р[-1][-1] × wTL[х][у] + (64 - wL[x] - wT[у] + wTL[x][y]) × predSamples[x][y] + 32) >> 6) (Ур. 76)
[0164] Разница между вариантом А осуществления изобретения и предыдущим разделом «Пример процедуры фильтрации PDPC заключается в том, что в варианте А осуществления изобретения для диагонального режима внутреннего предсказания и соседних с ним режимов применяют одинаковую процедуру PDPC. В одном из примеров одна и та же процедура PDPC может применяться для режима 2 и соседних с ним режимов (например, режимов с номерами меньшими либо равными 10). В другом примере одна и та же процедура PDPC может применяться для режима 66 и соседних с ним режимов (например, режимов с номерами большими либо равными 58).
[0165] Вариант В осуществления изобретения
[0166] Примеры входных данных для процедуры фильтрации PDPC включают:
- режим внутреннего предсказания, обозначенный preModeIntra;
- ширина текущего блока, обозначенная nTbW;
- высота текущего блока, обозначенная nTbH;
- ширина опорных отсчетов, обозначенная refW;
- высота опорных отсчетов, обозначенная refH; - предсказанные отсчеты, обозначенные predSs[x][у], где х = 0..nTbW-1 и у = 0.. nTbH-1;
- нефильтрованные опорные (также называемые соседними) отсчеты, обозначенные р[х][у], где х = - 1, у = -1..refH-1 и х = 0..refW-1, у = -1; и
- составляющая цветности текущего блока, обозначенная cIdx.
[0167] В зависимости от значения cIdx функцию clip1Cmp определяют следующим образом:
Y
- если cIdx равна 0, clip1Cmp назначают равным Clip1.
C
- В противном случае, clip1Cmp назначают равным Clip1.
[0168] Далее, выходными значениями процедуры фильтрации PDPC являются модифицированные предсказанные отсчеты predSamples'[x][y], где х = 0..nTbW-1 и у = 0..nTbH-1.
[0169] Затем при помощи ур. 77 может быть вычислен коэффициент nScale масштабирования.
nScale = ((Lo + Log2(nTbH) - 2) >> 2) (Ур. 77)
[0170] Затем массив опорных отсчетов, mainRef[x], где х = 0..refW, может быть определен как массив нефильтрованных опорных отсчетов сверху от текущего блока, и второй массив опорных отсчетов sideRef[y], где у = 0..refH может быть определен как массив нефильтрованных опорных отсчетов слева от текущего блока. Массивы опорных значений, mainRef[x] и sideRef[y], могут быть вычислены на основе нефильтрованных опорных значений в соответствии с уравнениями 78-79 соответственно.
mainRef[x] = р[х][-1] (Ур. 78)
sideRef[y] = р[-1][у] (Ур. 79)
[0171] Для каждой позиции (х,у) в текущем блоке для вычислений PDPC могут использоваться опорный отсчет сверху, обозначенный refT[х][у], опорный отсчет слева, обозначенный refL[x][у], и угловой опорный отсчет р[-1,-1]. В некоторых примерах модифицированный предсказанный отсчет может быть вычислен с помощью ур. 80, и результат соответствующим образом усекают в соответствии с переменной cIdx, которой обозначена составляющая цветности.
predSamples'[x][y] = (wL × refL(x,y) + wT × refT(x,y) - wTL × p(-1,-1) + (64 - wL - wT + wTL) × predSamples[x][y] + 32) >> 6 (Ур. 80)
[0172] Опорные отсчеты refT[x][у], refL[x][y], и весовые коэффициенты wL, wT, и wTL могут определяться в зависимости от режима внутреннего предсказания, preModeIntra.
[0173] Когда режим preModeIntra внутреннего предсказания равен INTRA_PLANAR (например, 0, или режим 0) или INTRA_DC (например, 1, режим DC, или режим 1) опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 81-85.
refL[x][y] = р[-1][у] (Ур. 81)
refT[x][y] = р[х][-1] (Ур. 82)
wT[у] = 32 >> ((у << 1) >> nScale) (Ур. 83)
wL[x] = 32 >> ((x << 1) >> nScale) (Ур. 84)
wTL[x][y] = (predModeIntra = INTRA_DC)? ((wL[x] >> 4) + (wT[y] >> 4)):0 (Ур. 85)
[0174] В противном случае, когда режим preModeIntra внутреннего предсказания равен INTRA_ANGULAR18 (например, 18, горизонтальный режим, или режим 18) или INTRA_ANGULAR50 (например, 50, вертикальный режим, или режим 50) опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 86-90.
refL[x][y] = p[-1][y](Ур. 86)
refT[x][y] = p[x][-1](Ур. 87)
wT[y] = (predModeIntra = = INTRA_ANGULAR18)? 32 >> ((у << 1) >> nScale):0 (Ур. 88)
wL[x] = (predModeIntra = = INTRA_ANGULAR50)? 32 >> ((x << 1) >> nScale):0 (Ур. 89)
wTL[x][y] = (predModeIntra = INTRA_ANGULAR18)? wT[y]:wL[x] (Ур. 90)
[0175] В противном случае, когда режим preModeIntra внутреннего предсказания меньше или равен INTRA_ANGULAR10 (например 10, или режим), для каждой позиции (х,у), переменные dXPos[y], dXInt[y] и dX[х][у] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dXPos[y], dXInt[y] и dX[x][y].
[0176] Например, переменные dXPos[y], dXInt[y] и dX[х][у] могут быть определены в соответствии с уравнениями 91-93.
dXPos[y] = ((у + 1) × invAngle + 2) >> 2 (Ур. 91)
dXInt[y] = (dXPos[y] + 32) >> 6 (Ур. 92)
dX[х][у] = х + dXInt[y] (Ур. 93)
[0177] Затем в соответствии с уравнениями 94-98 могут быть определены опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT, и wTL.
refL[x][y] = 0 (Ур. 94)
refT[x][y] = (dX[x][y] < refW)?mainRef[dX[x][y]]:0 (Ур. 95)
wT[y] = (dX[y]<refW)? 32 >> ((y << 1) >> nScale):0 (Ур. 96)
wL[x] = 0 (Ур. 97)
wTL[х][у] = 0 (Ур. 98)
[0178] В противном случае, когда preModeIntra больше или равен INTRA_ANGULAR58 (например, 58, или режим 58), переменные dYPos[x], dYInt[x] и dY[x][y] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[x][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dYPos[x], dYInt[x] и dY[х][у].
[0179] Например, переменные dYPos[x], dYInt[x] и dY[x][у] могут быть определены в соответствии с уравнениями 99-101.
dYPos[x] = ((х + 1) × invAngle + 2) >> 2 (Ур. 99)
dYInt[x] = (dYPos[x] + 32) >> 6 (Ур. 100)
dY[x][y] = х + dYInt[x] (Ур. 101)
[0180] Затем в соответствии с уравнениями 102-106 могут быть определены опорные отсчеты refT[x][y], refL[x][y] и весовые коэффициенты wL, wT, и wTL.
refL[х][у] = (dY[x][y] < refH)?sideRef[dY[x][y]]:0 (Ур. 102)
refT[x][y] = 0 (Ур. 103)
wT[у] = 0 (Ур. 104)
wL[х] = (dY[x] < refH)? 32 >> ((х << 1) >> nScale):0 (Ур. 105)
wTL[x][y] = 0 (Ур. 106)
[0181] В противном случае, когда переменная preModeIntra лежит между режимами 11-57 и не является ни режимом 18, ни режимом 50, опорные отсчеты refT[x][у], refL[x][у], а также весовые коэффициенты wL, wT и wTL назначают равными 0.
[0182] Наконец, в соответствии с Ур. 107 могут быть вычислены значения фильтрованных отсчетов filtSamples[x][y], где x = 0..nTbW-1, y = 0..nTbH-1.
filtSamples[x][у] = clip1Cmp((refL[x][y] × wL + refT[x][y] × wT - p[-1][-1] × wTL[х][у] + (64 - wL[x] - wT[y] + wTL[x][y]) × predSamples[x][y] + 32) >> 6) (Ур. 107)
[0183] Разница между вариантом А и вариантом В осуществления настоящего изобретения заключается в том, что в варианте В осуществления изобретения, когда режим preModeIntra внутреннего предсказания меньше или равен INTRA_ANGULAR10, dXFrac[y] (ур. 59) не вычисляют, a dXInt[y] может быть вычислено иначе (т.е., ур. 92 вместо ур. 60), то есть, refT[x][у] и wT[у] вычисляют иначе, по сравнению с вариантом А осуществления изобретения (т.е., ур. 95 вместо ур. 63, и ур. 96 вместо ур. 64). Аналогично, когда режим preModeIntra внутреннего предсказания больше или равен INTRA_ANGULAR58, в варианте В осуществления настоящего изобретения dYFrac[x] (ур. 68) не вычисляют, a dYInt[x] может быть вычислено иначе (ур. 100 вместо ур. 69), то есть, refL[x][у] and wL[y] вычисляют иначе, чем в варианте А осуществления изобретения (т.е., ур. 102 вместо ур. 71, и ур. 105 вместо ур. 74).
[0184] Вариант С осуществления изобретения
[0185] Примеры входных данных для процедуры фильтрации PDPC включают:
- режим внутреннего предсказания, обозначенный preModeIntra;
- ширина текущего блока, обозначенная nTbW;
- высота текущего блока, обозначенная nTbH;
- ширина опорных отсчетов, обозначенная refW;
- высота опорных отсчетов, обозначенная refH; - предсказанные отсчеты, обозначенные predSs[x][у], где х = 0..nTbW-1 и у = 0..nTbH-1;
- нефильтрованные опорные (также называемые соседними) отсчеты, обозначенные р[х][у], где х = -1, у = -1..refH-1 и х = 0..refW-1, у = -1; и
- составляющая цветности текущего блока, обозначенная cIdx.
[0186] В зависимости от значения cIdx функцию clip1Cmp определяют следующим образом:
Y
- если cIdx равна 0, clip1Cmp назначают равным Clip1.
C
- в противном случае, clip1Cmp назначают равным Clip1.
[0187] Далее, выходными значениями процедуры фильтрации PDPC являются модифицированные предсказанные отсчеты predSamples'[x][y], где х = 0..nTbW-1 и у = 0..nTbH-1.
[0188] Затем при помощи ур. 108 может быть вычислен коэффициент nScale масштабирования.
nScale = ((Log2(nTbW) + Log2(nTbH) - 2) >> 2) (Ур. 108)
[0189] Затем массив опорных отсчетов, mainRef[x], где х = 0..refW, может быть определен как массив нефильтрованных опорных отсчетов сверху от текущего блока, и второй массив опорных отсчетов sideRef[y], где у = 0..refH может быть определен как массив нефильтрованных опорных отсчетов слева от текущего блока. Массивы опорных значений, mainRef[x] и sideRef[y], могут быть вычислены на основе нефильтрованных опорных значений в соответствии с уравнениями 109-110 соответственно.
mainRef[x] = р[х][-1] (Ур. 109)
sideRef[y] = р[-1][у] (Ур. 110)
[0190] Для каждой позиции (х, у) в текущем блоке для вычислений PDPC могут использоваться опорный отсчет сверху, обозначенный refT[х][у], опорный отсчет слева, обозначенный refL[x][у], и угловой опорный отсчет р[-1,-1]. В некоторых примерах модифицированный предсказанный отсчет может быть вычислен с помощью ур. 111, и результат соответствующим образом усекают в соответствии с переменной cIdx, которой обозначена составляющая цветности.
predSamples'[x][y] = (wL × refL(x,y) + wT × refT(x,y) - wTL × p(-1,-1) + (64 - wL - wT + wTL) × predSamples[x][y] + 32) >> 6 (Ур. 111)
[0191] Опорные отсчеты refT[х][у], refL[х][у], и весовые коэффициенты wL, wT, и wTL могут определяться в зависимости от режима внутреннего предсказания, preModeIntra.
[0192] Когда режим preModeIntra внутреннего предсказания равен INTRA_PLANAR (например, 0, или режим 0) или INTRA_DC (например, 1, режим DC, или режим 1) опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 112-116.
refL[x][y] = р[-1][у] (Ур. 112)
refT[x][y] = р[x][-1] (Ур. 113)
wT[у] = 32 >> ((у << 1) >> nScale) (Ур. 114)
wL[x] = 32 >> ((x << 1) >> nScale) (Ур. 115)
wTL[x][у] = (predModeIntra = = INTRA_DC)? ((wL[x] >> 4) + (wT[y] >> 4)):0 (Ур. 116)
[0193] В противном случае, когда режим preModeIntra внутреннего предсказания равен INTRA_ANGULAR18 (например, 18, горизонтальный режим, или режим 18) или INTRA_ANGULAR50 (например, 50, вертикальный режим, или режим 50) опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 117-121.
refL[x][y] = p[-1][y] (Ур. 117)
refT[x][y] = р[х][-1] (Ур. 118)
wT[у] = (predModeIntra = = INTRA_ANGULAR18)? 32 >> ((у << 1) >> nScale):0 (Ур. 119)
wL[x] = (predModeIntra = = INTRA_ANGULAR50)? 32 >> ((x << 1) >> nScale):0 (Ур. 120)
wTL[x][y] = (predModeIntra = = INTRA_ANGULAR18)?wT[y]:wL[x] (Ур. 121)
[0194] В противном случае, когда режим preModeIntra внутреннего предсказания меньше или равен INTRA_ANGULAR10 (например 10, или режим), для каждой позиции (х,у), переменные dXInt[y] и dX[х][у] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[x][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dXInt[y] и dX[x][y].
[0195] Например, переменные dXInt[y] и dX[х][у] могут быть определены в соответствии с уравнениями 122-123.
dXInt[y] = ((у + 1) × invAngle + 128) >> 8 (Ур. 122)
dX[х][у] = х + dXInt[y] (Ур. 123)
[0196] Затем в соответствии с уравнениями 124-128 могут быть определены опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT, и wTL.
refL[x][y] = 0 (Ур. 124)
refT[x][y] = (dX[x][y] < refW)?mainRef[dX[x][y]]:0 (Ур. 125)
wT[x][у] = dX[y] < refW)?32 >> ((у << 1) >> nScale):0 (Ур. 126)
wL[х] = 0 (Ур. 127)
wTL[x][y] = 0 (Ур. 128)
[0197] В противном случае, когда режим preModeIntra внутреннего предсказания больше или равен INTRA_ANGULAR58 (например, 58, или режим 58), переменные dYInt[x] и dY[x][y] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[x][у], refL[x][y] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dYInt[x] и dY[x][у].
[0198] Например, переменные dYInt[x] и dY[x][y] могут быть определены в соответствии с уравнениями 129-130.
dYInt[x] = ((х + 1) × invAngle + 128) >> 8 (Ур. 129)
dY[x][у] = х + dYInt[x] (Ур. 130)
[0199] Затем в соответствии с уравнениями 131-135 могут быть определены опорные отсчеты refT[x][y], refL[x][y] и весовые коэффициенты wL, wT, и wTL.
refL[х][у] = (dY[x][y] < refH)?sideRef[dY[x][y]]:0 (Ур. 131)
refT[x][y] = 0 (Ур. 132)
wT[x][у] = 0 (Ур. 133)
wL[х] = (dY[x] < refH)? 32 >> ((x << 1) >> nScale):0 (Ур. 134)
wTL[x][y] = 0 (Ур. 135)
[0200] В противном случае, когда переменная preModeIntra лежит между режимами 11-57 и не является ни режимом 18, ни режимом 50, опорные отсчеты refT[x][у], refL[x][у], а также весовые коэффициенты wL, wT и wTL назначают равными 0.
[0201] Наконец, в соответствии с ур. 136 могут быть вычислены значения фильтрованных отсчетов filtSamples[x][y], где x = 0..nTbW-1, y = 0..nTbH-1.
filtSamples[х][у] = clip1Cmp((refL[x][y] × wL + refT[x][y] × wT - р[-1][-1] × wTL[х][у] + (64 - wL[x] - wT[у] + wTL[x][у]) × predSamples[x][y] + 32) >> 6) (Ур. 136)
[0202] Разница между вариантом В и вариантом С осуществления изобретения заключается в том, что в варианте С осуществления изобретения, когда режим preModeIntra внутреннего предсказания меньше или равен INTRA_ANGULAR10, dXPos[y] (Ур. 91) не вычисляют, a dXInt[y] может быть вычислено иначе (т.е., ур. 122 вместо ур. 92). Аналогично, когда режим preModeIntra внутреннего предсказания больше или равен INTRA_ANGULAR58, в варианте С осуществления изобретения dYPos[x] (ур. 99) не вычисляют, a dYInt[x] может быть вычислено иначе (ур. 129 вместо ур. 100).
[0203] Вариант D осуществления изобретения
[0204] Примеры входных данных для процедуры фильтрации PDPC включают:
- режим внутреннего предсказания, обозначенный preModeIntra;
- ширина текущего блока, обозначенная nTbW;
- высота текущего блока, обозначенная nTbH;
- ширина опорных отсчетов, обозначенная refW;
- высота опорных отсчетов, обозначенная refH; <0
- предсказанные отсчеты, обозначенные predSs[x][у], где х = 0..nTbW-1 и у = 0..nTbH-1;
- нефильтрованные опорные (также называемые соседними) отсчеты, обозначенные р[х][у], где х = -1, у = -1..refH-1 и х = 0..refW-1, у = -1; и
- составляющая цветности текущего блока, обозначенная cIdx.
[0205] В зависимости от значения cIdx функцию clip1Cmp определяют следующим образом:
Y
- если cIdx равна 0, clip1Cmp назначают равным Clip1.
C
- В противном случае, clip1Cmp назначают равным Clip1.
[0206] Далее, выходными значениями процедуры фильтрации PDPC являются модифицированные предсказанные отсчеты predSamples'[x][y], где х = 0..nTbW-1 и у = 0..nTbH-1.
[0207] Затем при помощи ур. 137 может быть вычислен коэффициент nScale масштабирования.
nScale = ((Log2(nTbW) + Log2(nTbH) - 2) >> 2) (Ур. 137)
[0208] Затем массив опорных отсчетов, mainRef[x], где х = 0..refW, может быть определен как массив нефильтрованных опорных отсчетов сверху от текущего блока, и второй массив опорных отсчетов sideRef[y], где у = 0..refH может быть определен как массив нефильтрованных опорных отсчетов слева от текущего блока. Массивы опорных значений, mainRef[x] и sideRef[y], могут быть вычислены на основе нефильтрованных опорных значений в соответствии с уравнениями 138-139 соответственно.
mainRef[x] = р[х][-1] (Ур. 138)
sideRef[y] = р[-1][у] (Ур.139)
[0209] Для каждой позиции (х,у) в текущем блоке для вычислений PDPC могут использоваться опорный отсчет сверху, обозначенный refT[х][у], опорный отсчет слева, обозначенный refL[x][y], и угловой опорный отсчет р[-1,-1]. Модифицированный предсказанный отсчет может быть вычислен с помощью ур. 140, и результат соответствующим образом усекают в соответствии с переменной cIdx, которой обозначена составляющая цветности.
predSamples'[x][y] = (wL × refL(x,y) + wT × refT(x,y) - wTL × p(-1,-1) + (64 - wL - wT + wTL) × predSamples[x][y] + 32) >> 6 (Ур.140)
[0210] Опорные отсчеты refT[х][у], refL[х][у], и весовые коэффициенты wL, wT, и wTL могут определяться в зависимости от режима внутреннего предсказания, preModeIntra.
[0211] Когда режим preModeIntra внутреннего предсказания равен INTRA_PLANAR (например, 0, или режим 0) или INTRA_DC (например, 1, режим DC, или режим 1) опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 141-145.
refL[x][y] = р[-1][у] (Ур. 141)
refT[x][y] = р[х][-1] (Ур. 142)
wT[y] = 32 >> ((у << 1) >> nScale) (Ур. 143)
wL[x] = 32 >> ((х << 1) >> nScale) (Ур. 144)
wTL[x][y] = (predModeIntra = = INTRA_DC)? ((wL[x] >> 4) + (wT[y] >> 4)):0 (Ур. 145)
[0212] В противном случае, когда режим preModeIntra внутреннего предсказания равен INTRA_ANGULAR18 (например, 18, горизонтальный режим, или режим 18) или INTRA_ANGULAR50 (например, 50, вертикальный режим, или режим 50) опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 146-150.
refL[x][y] = p[-1][y] (Ур. 146)
refT[x][y] = p[x][-1] (Ур. 147)
wT[y] = (predModeIntra = = INTRA_ANGULAR18)? 32 >> ((y << 1) >> nScale):0 (Ур. 148)
wL[x] = (predModeIntra = = INTRA_ANGULAR50)? 32 >> ((x << 1) >> nScale):0 (Ур. 149)
wTL[x][y] = (predModeIntra = = INTRA_ANGULAR18)?wT[y]:wL[x] (Ур. 150)
[0213] В противном случае, когда режим preModeIntra внутреннего предсказания меньше или равен INTRA_ANGULAR2 (например 2, или режим 2), для каждой позиции (х,у), переменные dXPos[y], dXFrac[y], dXInt[y], и dX[x][у] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dXPos[y], dXFrac[y], dXInt[y] и dX[x][у].
[0214] Переменные dXPos[y], dXFrac[y], dXInt[y] и dX[x][у] могут быть определены в соответствии с уравнениями 151-154.
dXPos[y] = ((у + 1) × invAngle + 2) >> 2 (Ур. 151)
dXFrac[y] = dXPos[y]&63 (Ур. 152)
dXInt[y] = dXPos[y] >> 6 (Ур. 153)
dX[x][y] = х + dXInt[y] (Ур. 154)
[0215] Затем в соответствии с уравнениями 155-159 могут быть определены опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT, и wTL.
refL[x][y] = 0 (Ур. 155)
refT[x][y] = (dX[x][y] < refW-1)?mainRef[dX[x][y] + (dXFrac[y] >> 5)]:0 (Ур. 156)
wT[у] = (dX[y] < refW-1)?32 >> ((y << 1) >> nScale):0 (Ур.157)
wL[x] = 0 (Ур. 158)
wTL[x][y] = 0 (Ур. 159)
[0216] В противном случае, когда режим preModeIntra внутреннего предсказания меньше или равен INTRA_ANGULAR10 (например 10, или режим), для каждой позиции (х,у), переменные dXPos[y], dXFrac[y], dXInt[y], и dX[х][у] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dXPos[y], dXFrac[y], dXInt[y] и dX[x][y].
[0217] Переменные dXPos[y], dXFrac[y], dXInt[y] и dX[x][y] могут быть определены в соответствии с уравнениями 160-163.
dXPos[y] = ((у + 1) × invAngle + 2) >> 2 (Ур. 160)
dXFrac[y] = dXPos[y]&63 (Ур. 161)
dXInt[y] = dXPos[y] >> 6 (Ур. 162)
dX[x][y] = х + dXInt[y] (Ур. 163)
[0218] Затем в соответствии с уравнениями 164-168 могут быть определены опорные отсчеты refT[x][y], refL[x][y] и весовые коэффициенты wL, wT, и wTL.
refL[x][y] = 0 (Ур. 164)
refT[x][y] = dX[х][у] < refW-1)?mainRef[dX[x][y] + (dXFrac[y] >> 5)]:0 (Ур. 165)
wT[y] = (dX[y] < refW-1)?32 >> ((y << 1) >> nScale):0 (Ур. 166)
wL[x] = 0 (Ур. 167)
wTL[x][y] = 0 (Ур. 168)
[0219] В противном случае, когда режим preModeIntra внутреннего предсказания равен INTRA_ANGULAR66 (например, 66, или режим 66), переменные dYPos[x], dYFrac[x], dYInt[x] и dY[x][y] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dYPos[x], dYFrac[x], dYInt[x] и dY[x][y].
[0220] Переменные dYPos[x], dYFrac[x], dYInt[x] и dY[x][y] могут быть определены в соответствии с уравнениями 169-172.
dYPos[x] = ((x + 1) × invAngle + 2) >> 2 (Ур. 169)
dYFrac[x] = dYPos[х]&63 (Ур. 170)
dYInt[x] = dYPos[x] >> 6 (Ур. 171)
dY[x][y] = x + dYInt[х] (Ур. 172)
[0221] Затем в соответствии с уравнениями 173-177 могут быть определены опорные отсчеты refT[x][y], refL[x][y] и весовые коэффициенты wL, wT, и wTL.
refL[x][y] = (dY[x][y] < refH-1)?sideRef[dY[x][y] + (dYFrac[x] >> 5)]:0 (Ур. 173)
refT[x][y] = 0 (Ур. 174)
wT[y] = 0 (Ур. 175)
wL[x] = (dY[x] < refH-1)?32 >> ((x << 1) >> nScale):0 (Ур. 176)
wTL[x][y] = 0 (Ур. 177)
[0222] В противном случае, когда режим preModeIntra внутреннего предсказания больше или равен INTRA_ANGULAR58 (например, 58, или режим 58), переменные dYPos[x], dYFrac[x], dYInt[x] и dY[x][y] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[x][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dYPos[x], dYFrac[x], dYInt[x], и dY[x][y].
[0223] Переменные dYPos[x], dYFrac[x], dYInt[x] и dY[x][y] могут быть определены в соответствии с уравнениями ур. 178-181.
dYPos[x] = ((x + 1) × invAngle + 2) >> 2 (Ур. 178)
dYFrac[x] = dYPos[х]&63 (Ур. 179)
dYInt[x] = dYPos[x] >> 6 (Ур. 180)
dY[x][y] = x + dYInt[x] (Ур. 181)
[0224] Затем в соответствии с уравнениями 182-186 могут быть определены опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT, и wTL.
refL[x][y] = (dY[x][y] < refH-1)?sideRef[dY[x][y] + (dYFrac[x] >> 5)]:0 (Ур. 182)
refT[x][y] = 0 (Ур. 183)
wT[у] = 0 (Ур. 184)
wL[х] = (dY[x] < refH-1)? 32 >> ((x << 1) >> nScale):0 (Ур. 185)
wTL[x][y] = 0 (Ур. 186)
[0225] В противном случае, когда переменная preModeIntra лежит между режимами 11-57 и не является ни режимом 18, ни режимом 50, опорные отсчеты refT[x][у], refL[x][у], а также весовые коэффициенты wL, wT и wTL назначают равными 0.
[0226] Наконец, в соответствии с ур. 187 могут быть вычислены значения фильтрованных отсчетов filtSamples[x][y], где x = 0..nTbW-1, у = 0..nTbH-1.
filtSamples[х][у] = clip1Cmp((refL[x][y] × wL + refT[x][y] × wT - р[-1][-1] × wTL[х][у] + (64 - wL[x] - wT[y] + wTL[x][y]) × predSamples[x][y] + 32) >> 6) (Ур. 187)
[0227] Вариант D осуществления изобретения аналогичен варианту А, однако предписывает отличающуюся модифицированную процедуру PDPC для режима 2 и режима 66.
[0228] Вариант Е осуществления изобретения
[0229] Примеры входных данных для процедуры фильтрации PDPC включают:
- режим внутреннего предсказания, обозначенный preModeIntra;
- ширина текущего блока, обозначенная nTbW;
- высота текущего блока, обозначенная nTbH;
- ширина опорных отсчетов, обозначенная refW;
- высота опорных отсчетов, обозначенная refH; <0
- предсказанные отсчеты, обозначенные predSs[x][y], где х = 0..nTbW-1 и у = 0..nTbH-1;
- нефильтрованные опорные (также называемые соседними) отсчеты, обозначенные р[х][у], где х = -1, у = -1..refH-1 и х = 0..refW-1, у = -1; и
- составляющая цветности текущего блока, обозначенная cIdx.
[0230] В зависимости от значения cIdx функцию clip1Cmp определяют следующим образом:
Y
- если cIdx равна 0, clip1Cmp назначают равным Clip1.
C
- в противном случае, clip1Cmp назначают равным Clip1.
[0231] Далее, выходными значениями процедуры фильтрации PDPC являются модифицированные предсказанные отсчеты predSamples'[x][y], где х = 0..nTbW-1 и у = 0..nTbH-1.
[0232] Затем при помощи ур. 188 может быть вычислен коэффициент nScale масштабирования.
nScale = ((Log2(nTbW) + Log2(nTbH) - 2) >> 2) (Ур. 188)
[0233] Затем массив опорных отсчетов, mainRef[x], где х = 0..refW, может быть определен как массив нефильтрованных опорных отсчетов сверху от текущего блока, и второй массив опорных отсчетов sideRef[y], где у = 0..refH может быть определен как массив нефильтрованных опорных отсчетов слева от текущего блока. Массивы опорных значений, mainRef[x] и sideRef[y], могут быть вычислены на основе нефильтрованных опорных значений в соответствии с уравнениями 189-190 соответственно.
mainRef[x] = р[х][-1] (Ур. 189)
sideRef[y] = р[-1][у] (Ур. 190)
[0234] Для каждой позиции (х,у) в текущем блоке для вычислений PDPC могут использоваться опорный отсчет сверху, обозначенный refT[х][у], опорный отсчет слева, обозначенный refL[x][у], и угловой опорный отсчет р[-1,-1]. В некоторых примерах модифицированный предсказанный отсчет может быть вычислен с помощью ур. 191, и результат соответствующим образом усекают в соответствии с переменной cIdx, которой обозначена составляющая цветности.
predSamples'[x][y] = (wL × refL(x,y) + wT × refT(x,y) - wTL × p(-1,-1) + (64 - wL - wT + wTL) × predSamples[x][y] + 32) >> 6 (Ур. 191)
[0235] Опорные отсчеты refT[x][y], refL[x][y], и весовые коэффициенты wL, wT, и wTL могут определяться в зависимости от режима внутреннего предсказания, preModeIntra.
[0236] Когда режим preModeIntra внутреннего предсказания равен INTRA_PLANAR (например, 0, или режим 0) или INTRA_DC (например, 1, режим DC, или режим 1) опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 192-196.
refL[x]\y] = р[-1][у] (Ур. 192)
refT[x][y] = р[х][-1] (Ур. 193)
wT[у] = 32 >> ((у << 1) >> nScale) (Ур. 194)
wL[x] = 32 >> ((x << 1) >> nScale) (Ур. 195)
wTL[x][y] = (predModeIntra = = INTRA_DC)? ((wL[x] >> 4) + (wT[у] >> 4)): 0 (Ур. 196)
[0237] В противном случае, когда режим preModeIntra внутреннего предсказания равен INTRA_ANGULAR18 (например, 18, горизонтальный режим, или режим 18) или INTRA_ANGULAR50 (например, 50, вертикальный режим, или режим 50) опорные отсчеты refT[х][у], refL[х][у] и весовые коэффициенты wL, wT и wTL могут быть определены в соответствии с уравнениями 197-201.
refL[x][y] = р[-1][у] (Ур. 197)
refT[x]\y] = р[х][-1] (Ур. 198)
wT[y] = (predModeIntra = = INTRA_ANGULAR18)? 32 >> ((у << 1) >> nScale):0 (Ур. 199)
wL[x] = (predModeIntra = INTRA_ANGULAR50)? 32 >> ((x << 1) >> nScale):0 (Ур. 200)
wTL[x][y] = (predModeIntra = = INTRA_ANGULAR18)?wT[y]:wL[x] (Ур. 201)
[0238] В противном случае, когда режим preModeIntra внутреннего предсказания меньше или равен INTRA ANGULAR 10 (например 10, или режим), для каждой позиции (х,у), переменные dXInt[y] и dX[х][у] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[х][у], refL [х][у] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dXInt[y] и dX[x][y].
[0239] Например, переменные dXInt[y] и dX[х][у] могут быть определены в соответствии с уравнениями 202-203.
dXInt[y] = ((у + 1) × invAngle + 128) >> 8 (Ур. 202)
dX[х][у] = х + dXInt[y] (Ур. 203)
[0240] Затем в соответствии с уравнениями 204-208 могут быть определены опорные отсчеты refT[x][y], refL[x][y] и весовые коэффициенты wL, wT, и wTL.
refL[x][y] = 0 (Ур. 204)
refT[x][y] = (dXInt[y] < refW-width-1)?mainRef[dX[x][y]]:0 (Ур. 205)
wT[у] = 32 >> ((у << 1) >> nScale) (Ур. 206)
wL[x] = 0 (Ур. 207)
wTL[x][y] = 0 (Ур. 208)
[0241] В противном случае, когда режим preModeIntra внутреннего предсказания больше или равен INTRA_ANGULAR58 (например, 58, или режим 58), переменные dYInt[x] и dY[x][y] могут быть вычислены на основе переменной invAngle, которая является функцией режима preModeIntra внутреннего предсказания. Переменная invAngle может быть определена на основе таблицы поиска, в которой хранят соответствующие значения invAngle для каждого режима внутреннего предсказания, и затем опорные отсчеты refT[x][у], refL[x][y] и весовые коэффициенты wL, wT и wTL могут быть определены на основе переменных dYInt[x] и dY[x][у].
[0242] Например, переменные dYInt[x] и dY[x][y] могут быть определены в соответствии с уравнениями 209-210.
dYInt[x] = ((х + 1) × invAngle + 128) >> 8 (Ур. 209)
dY[x][y] = х + dYInt[x] (Ур. 210)
[0243] Затем в соответствии с уравнениями 211-215 могут быть определены опорные отсчеты refT[x][y], refL[x][y] и весовые коэффициенты wL, wT, и wTL.
refL[х][у] = (dYInt[y] < refH-height-1)?sideRef[dY[x][y]]:0 (Ур. 211)
refT[x][y] = 0 (Ур. 212)
wT[у] = 0 (Ур. 213)
wL[x] = 32 >> ((х << 1) >> nScale) (Ур. 214)
wTL[x][y] = 0 (Ур. 215)
[0244] В противном случае, когда переменная preModeIntra лежит между режимами 11-57 и не является ни режимом 18, ни режимом 50, опорные отсчеты refT[x][у], refL[x][у], а также весовые коэффициенты wL, wT и wTL назначают равными 0.
[0245] Наконец, в соответствии с ур. 216 могут быть вычислены значения фильтрованных отсчетов filtSamples[x][y], где x = 0..nTbW-1, у = 0..nTbH-1.
filtSamples[х][у] = clip1Cmp((refL[x][y] × wL + refT[x][y] × wT - р[-1][-1] × wTL[х][у] + (64 - wL[x] - wT[y] + wTL[x][y]) × predSamples[x][y] + 32) >> 6) (Ур. 216)
[0246] Разница между вариантом С и вариантом Е осуществления настоящего изобретения заключается в том, что в варианте Е осуществления изобретения, когда режим preModeIntra внутреннего предсказания меньше или равен INTRA_ANGULAR10, refT[х][у] может быть вычислено иначе (т.е. ур. 205 вместо ур. 125). Аналогично, когда preModeIntra внутреннего предсказания больше или равен INTRA_ANGULAR58, refL[x][y] может быть вычислено иначе (т.е. ур. 211 вместо ур. 131).
[0247] Досрочное завершение процедуры PDPC
[0248] В соответствии с вариантами осуществления настоящего изобретения для режимов внутреннего предсказания, соседних с диагональными режимами внутреннего предсказания, то есть, режимов -1 ~ -14, режимов 3 ~ 10, режимов 58 ~ 65, и режимов 67 ~ 80 на фиг. 8А, процедура PDPC может быть завершена досрочно. При этом досрочное завершение зависит от того, указывает ли направление внутреннего предсказания на дробную позицию в боковых опорных отсчетах, которые используются в процедуре PDPC.
[0249] В одном из вариантов осуществления настоящего изобретения задание значение опорного отсчета, используемого в процедуре PDPC, модифицируют описанным ниже образом.
[0250] Для режимов внутреннего предсказания, соседних с режимом 2, ур. 30 преобразуют в виде ур. 217.
refT[x][y] = ((dX[x][y] + (dXFrac[y] >> 5)) < refW-1)?mainRef[dX[x][y] + (dXFrac[y] >> 5)]:0 (Ур.217)
[0251] Для режимов внутреннего предсказания, соседних с режимом 66, ур. 38 преобразуют в виде ур. 218.
refL[x][y] = ((dY[x][y] + (dXFrac[y] >> 5)) < refH-1)?sideRef[dY[x][y] + (dYFrac[x] >> 5)]:0 (Ур. 218)
[0252] Проверка опорных отсчетов
[0253] В некоторых соответствующих вариантах осуществления настоящего изобретения (например, в VVC), для текущего отсчета в процедуре PDPC необходима проверка, для каждого отсчета, чтобы определить, находится ли опорный отсчет для текущего отсчета внутри заранее заданного диапазона. Если опорный отсчет не лежит внутри заранее заданного диапазона, весовые коэффициенты PDPC назначают равными 0 для текущего отсчета, в соответствии, например, с Ур. 30, Ур. 31, Ур. 38 и Ур. 41. Однако такая проверка для каждого отсчета может быть нежелательна, особенно в случае оптимизации программного обеспечения при помощи технологий «один поток команд много потоков данных» (single instruction multiple data, SIMD).
[0254] В соответствии с вариантами осуществления настоящего изобретения проверку для каждого отсчета в процедуре PDPC, используемая для определения, лежит ли опорный отсчет внутри диапазона доступных опорных отсчетов, заменяют на построчную или постолбцовую проверку. В одном из вариантов осуществления настоящего изобретения условие проверки зависит только от количества доступных опорных отсчетов слева, высоты блока предсказания и значения горизонтальной координаты текущего отсчета, фильтруемого при помощи процедуры PDPC. В другом варианте осуществления настоящего изобретения условие проверки может зависеть только от количества доступных опорных отсчетов сверху, ширины блока предсказания и значения вертикальной координаты текущего отсчета, фильтруемого при помощи процедуры PDPC.
[0255] В одном из вариантов осуществления настоящего изобретения в случае внутреннего предсказания вертикального типа (т.е. направления предсказания, которое ближе к вертикальному направлению, чем к горизонтальному направлению внутреннего предсказания), проверку выполняют постолбцово, при этом условие проверки зависит только по меньшей мере от следующего: количества доступных опорных отсчетов слева, высоты блока предсказания и значения горизонтальной координаты текущего отсчета, фильтруемого при помощи процедуры PDPC.
[0256] В одном из вариантов осуществления настоящего изобретения в случае внутреннего предсказания горизонтального типа (т.е. направления предсказания, которое ближе к горизонтальному направлению, чем к вертикальному направлению внутреннего предсказания), проверку выполняют построчно, при этом условие проверки зависит только по меньшей мере от следующего: количество доступных опорных отсчетов сверху, ширина блока предсказания и значение вертикальной координаты текущего отсчета, фильтруемого при помощи процедуры PDPC.
k
[0257] В соответствии с некоторыми из вариантов осуществления настоящего изобретения процедуру PDPC применяют для режима внутреннего предсказания, когда угол внутреннего предсказания этого режима больше или равен заранее заданном значению, например, 2/32, где k - неотрицательное целое число, например, 3 или 4.
5-k
5-k
[0258] В одном из вариантов осуществления настоящего изобретения, в случае внутреннего предсказания вертикального типа (т.е. когда направление предсказания ближе к вертикальному направлению внутреннего предсказания, чем к горизонтальному направлению внутреннего предсказания) только первые (width/(2)) (или min(width, height)/(2)) столбцов текущего блока будут обработаны процедурой PDPC.
5-k
5-k
[0259] В одном из вариантов осуществления настоящего изобретения, в случае внутреннего предсказания горизонтального типа (т.е. когда направление предсказания ближе к горизонтальному направлению внутреннего предсказания, чем к вертикальному направлению внутреннего предсказания) только первые (height/(2)) (или min(width, height)/(2)) строк текущего блока будут обработаны процедурой PDPC.
[0260] На фиг. 10 показан пример блок-схемы алгоритма, описывающей процедуру (1000) в соответствии с одним из вариантов осуществления настоящего изобретения. В вариантах осуществления настоящего изобретения процедуру (1000) исполняют при помощи схем обработки данных, например, схем обработки данных в терминальных устройствах (210), (220), (230) и (240), схем обработки данных, выполняющих функции видеокодера (303), схем обработки данных, выполняющих функции видеодекодера (310), схем обработки данных, выполняющих функции видеодекодера (410), схем обработки данных, выполняющих функции модуля (452) внутреннего предсказания, схем обработки данных, выполняющих функции видеокодера (503), схем обработки данных, выполняющих функции устройства (535) предсказания, схем обработки данных, выполняющих функции кодера (622) с внутренним предсказанием, схем обработки данных, выполняющих функции декодера (722) с внутренним предсказанием и т.п. В некоторых из вариантов осуществления настоящего изобретения процедура (1000) может быть реализована программными инструкциями, например, когда схемы обработки данных исполняют программные инструкции, эти схемы обработки данных могут выполнять процедуру (1000).
[0261] Процедура (1000) может, в общем случае, начинаться шагом (S1010), на котором процедура (1000) декодирует информацию предсказания для текущего блока в текущем изображении, являющемся частью кодированной видеопоследовательности. Информация предсказания указывает на направление внутреннего предсказания для текущего блока, которое является (i) диагональным направлением внутреннего предсказания или (ii) направлением внутреннего предсказания, соседним с диагональным направлением внутреннего предсказания. Затем процедура (1000) переходит к шагу (S1020).
[0262] На шаге (S1020) процедура (1000) определяет применение процедуры комбинирования предсказаний в зависимости от позиции (PDPC) в соответствии с направлением внутреннего предсказания для текущего блока. Ту же самую процедуру PDPC применяют как к диагональному направлению внутреннего предсказания, так и к соседнему направлению внутреннего предсказания. Затем процедура (1000) переходит к шагу (S1030).
[0263] На шаге (S1030) процедура (1000) восстанавливает текущий блок на основе применения процедуры PDPC к текущему блоку.
[0264] После восстановления текущего блока процедура (1000) завершается.
[0265] В некоторых из вариантов осуществления настоящего изобретения диагональное направление внутреннего предсказания является направлением внутреннего предсказания вниз-влево или направлением внутреннего предсказания вверх-вправо. В одном из вариантов осуществления настоящего изобретения, когда направление внутреннего предсказания является направлением внутреннего предсказания вниз-влево, номер режима соседнего направления внутреннего предсказания меньше номера режима горизонтального направления внутреннего предсказания. В одном из вариантов осуществления настоящего изобретения, когда направление внутреннего предсказания является направлением внутреннего предсказания вверх-вправо, номер режима соседнего направления внутреннего предсказания больше номера режима вертикального направления внутреннего предсказания.
[0266] В одном из вариантов осуществления настоящего изобретения, когда направление внутреннего предсказания является соседним направлением внутреннего предсказания, процедура (1000) определяет, указывает ли направление внутреннего предсказания на дробную позицию. В ответ на определение того, что направление внутреннего предсказания указывает на дробную позицию, процедура (1000) определяет досрочное завершение процедуры PDPC.
[0267] В некоторых из вариантов осуществления настоящего изобретения, когда текущий отсчет в текущем блоке подлежит фильтрации при помощи процедуры PDPC, процедура (1000) определяет, лежит ли опорный отсчет для текущего отсчета в заранее заданном диапазоне в соответствии с построчной или постолбцовой проверкой. В одном из вариантов осуществления настоящего изобретения постолбцовая проверка зависит по меньшей мере от одного из следующего: (i) общее количество доступных опорных отсчетов, расположенных слева от текущего блока, (ii) высота текущего блока, и (iii) значение горизонтальной координаты текущего отсчета. В одном из вариантов осуществления настоящего изобретения построчная проверка зависит по меньшей мере от одного из следующего: (i) общее количество доступных опорных отсчетов, расположенных сверху от текущего блока, (ii) ширина текущего блока, и (iii) значение вертикальной координаты текущего отсчета.
[0268] В некоторых из вариантов осуществления настоящего изобретения угол направления внутреннего предсказания больше или равен заранее заданному значению. В одном из вариантов осуществления настоящего изобретения, когда направление внутреннего предсказания ближе к вертикальному направлению внутреннего предсказания, чем к горизонтальному направлению внутреннего предсказания, процедура (1000) выполняет процедуру PDPC над первым количеством столбцов отсчетов в текущем блоке, при этом первое количество определяют в соответствии с упомянутым заранее заданным значением и размером текущего блока. В одном из вариантов осуществления настоящего изобретения, когда направление внутреннего предсказания ближе к горизонтальному направлению внутреннего предсказания, чем к вертикальному направлению внутреннего предсказания, процедура (1000) выполняет процедуру PDPC над вторым количеством строк отсчетов в текущем блоке, при этом второе количество определяют в соответствии с упомянутым заранее заданным значением и размером текущего блока.
[0269] Описанные выше методы могут быть реализованы в виде компьютерного программного обеспечения, где используются машиночитаемые инструкции, и которое физически хранят на одном или более машиночитаемых носителей. К примеру, на фиг. 11 показана компьютерная система (1100), подходящая для реализации некоторых из вариантов осуществления настоящего изобретения.
[0270] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или языка программирования, который может обрабатываться при помощи ассемблирования, компиляции, линкования или аналогичных механизмов, в результате чего получают код, включающий инструкции, выполняемые непосредственно или при помощи интерпретации,
исполнения микрокода и т.п., одним или более центральных процессоров компьютера (computer central processing units, CPU), графических процессоров (Graphics Processing Units, GPU) и т.п.
[0271] Инструкции могут выполняться на компьютерах, или компьютерных компонентах, различных типов, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0272] Компоненты компьютерной системы (1100), показанные на фиг. 11, приведены исключительно для примера и не предполагают каких-либо ограничений на область применения или функциональность компьютерного обеспечения, реализующего варианты осуществления настоящего изобретения. Аналогично, показанная конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требования, связанные с любым компонентом, проиллюстрированным в примере осуществления компьютерной системы (1100), или комбинацией таких компонентов.
[0273] Компьютерная система (1100) может включать устройства ввода из состава интерфейса пользователя. Устройства ввода в пользовательском интерфейсе могут реагировать на ввод от одного или более пользователей при помощи, к примеру, тактильного ввода (например, нажатий на клавиши, жестов скольжения пальцем по экрану, движений киберперчатки), аудиоввода (например, голоса, хлопков ладоней), визуального ввода (например, жестов), обонятельного ввода (не показано на чертеже). Устройства пользовательского интерфейса могут также применяться для захвата медиаданных различных типов, не обязательно связанных с сознательным вводом от человека, таких как аудио (например, голос, музыка, звуки окружающей среды), изображения (например, сканированные изображения, фотоизображения, полученные с фотокамеры), видео (например, двумерное видео, трехмерное видео, включая стереоскопическое видео).
[0274] Устройства пользовательского интерфейса могут включать одно или более из следующего (на чертеже показано только по одному устройству каждого типа): клавиатура (1101), мышь (1102), трекпад (1103), сенсорный экран (1110), киберперчатка (не показана на чертеже), джойстик (1105), микрофон (1106), сканер (1107), камера (1108).
[0275] Компьютерная система (1100) может также иметь в своем составе устройства вывода пользовательского интерфейса. Устройства вывода пользовательского интерфейса могут воздействовать на органы чувств одного или более пользователей, например, при помощи тактильного вывода, звука, света и/или запаха/вкуса. Устройства вывода пользовательского интерфейса могут включать устройства тактильного вывода (например, тактильная обратная связь от сенсорного экрана (1110), киберперчатки (не показана на чертеже) или джойстика (1105), однако могут также присутствовать устройства тактильного вывода, не являющиеся при этом устройствами ввода). К примеру, подобными устройствами могут быть устройства аудиовывода (например, громкоговорители (1109), наушники (не показаны на чертеже)), устройства визуального вывода (например, экраны (1110), включая CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, как сенсорные, так и без функций сенсорного ввода, как с функциями тактильно обратной связи, так и без них, - при этом некоторые из экранов могут быть способны выводить двумерную визуальную информацию или более чем трехмерную визуальною информацию, при помощи таки средств, как например, стереографический вывод; очки виртуальной реальности (не показаны на чертеже), голографические дисплеи, дым-машины, а также принтеры (не показаны на чертеже). Такие устройства вывода визуальной информации (например, экраны (1110)) могут быть подключены к системной шине (1148) через графический адаптер (1150).
[0276] Компьютерная система (1100) может также включать запоминающие устройства, доступные для пользователей, и связанные с ними носители данных, например, оптические носители, включая CD/DVD ROM/RW (1120), с носителями (1121) CD/DVD или аналогичными им, флэш-привод (1122), съемный жесткий диск или твердотельный диск (1123), применяемые ранее магнитные носители, например, ленты или гибкие диски (не показаны на чертеже), специализированные устройства на основе ROM/ASIC/PLD, например, аппаратные ключи (не показаны на чертеже), и т.п.
[0277] Специалисты в данной области техники должны при этом понимать, что выражение «машиночитаемый носитель данных», используемое в связи с настоящим изобретением, не включает в себя среды передачи данных, несущие волны или другие кратковременные сигналы.
[0278] Компьютерная система (1100) может также иметь интерфейс (1154) с одной или более сетями (1155) связи. Одна или более сетей (1155) связи могут быть, например, беспроводными, проводными или оптическими. Однако или более сетей (1155) связи также могут быть локальными, глобальными, городскими, размещаемыми на транспортных средствах или промышленных объектах, сетями реального времени, устойчивыми к задержкам и т.п. Примеры одной или более сетей (1155) связи включают такие локальные сети, как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные или беспроводные глобальные сети цифрового телевещания, включая кабельное телевидение, спутниковое телевидение и сети эфирного вещания, сети транспортных средств и промышленных объектов, включая CANBus, и т.п.Некоторые сети требуют наличия внешних адаптеров сетевых интерфейсов, подключаемых к портам данных или периферийным шинам (1149) общего назначения (например, USB-портам компьютерной системы (1100)). Другие сети могут быть интегрированы во внутреннюю структуру компьютерной системы (1100) за счет подключения к системной шине, в соответствии с приведенным ниже описанием (например, интерфейс Ethernet в системе персонального компьютера или интерфейс сети сотовой связи в компьютерной системе на базе смартфона). Применение любых из подобных сетей позволяет компьютерной системе (1100) осуществлять связь с другими объектами. Такая связь может быть однонаправленной, только на прием (например, телевещание), однонаправленной, только на передачу (например, сеть CANbus в некоторые устройства CANbus) или двунаправленной, например, в другие компьютерные системы с использованием локальных или глобальных цифровых сетей. В любой из сетей и сетевых интерфейсов, описанных выше, могут применяться соответствующие протоколы и стеки протоколов.
[0279] Описанные выше устройства пользовательского интерфейса, доступные пользователям запоминающие устройства и сетевые интерфейсы могут быть подключены к базовой внутренней структуре (1140) компьютерной системы (1100).
[0280] Базовая внутренняя структура (1140) может включать один или более центральных процессоров (CPU) (1141), графических процессоров (GPU) (1142), специализированных программируемых блоков обработки данных в форме электрически программируемых вентильных матриц (Field Programmable Gate Areas, FPGA) (1143), аппаратных ускорителей (1144) для определенных задач и т.п.Эти устройства, вместе с памятью (1145) в режиме «только для чтения» (Read-only memory, ROM), памятью (1146) с произвольным доступом, внутренней памятью большой емкости, например, внутренними, недоступными пользователю жесткими дисками, SSD-дисками и аналогичной памятью (1147), могут быть объединены системной шиной (1148). В некоторых компьютерных системах к системной шине (1148) может предоставляться доступ в виде одного или более физических разъемов, позволяющих расширять систему дополнительными CPU, GPU и т.п. Периферийные устройства могут подключаться либо непосредственно к базовой системной шине (1148), либо к периферийной шине (1149). Примерами архитектур периферийной шины могут служить шины PCI, USB и т.п.
[0281] CPU (1141), GPU (1142), FPGA (1143) и ускорители (1144) могут выполнять инструкции, которые, в совокупности, могут составлять описанный выше компьютерный код. Компьютерный код может храниться в памяти ROM (1145) или RAM (1146). Временные данные при этом могут храниться в RAM (1146), тогда как постоянные данные могут храниться, например, во внутренней памяти (1147) большой емкости. Высокая скорость сохранения данных в запоминающие устройства и извлечения данных из них может обеспечиваться за счет применения кэш-памяти, которая может быть тесно связан с одним или более CPU (1141), GPU(1142), памятью (1147) большой емкости, ROM (1145), RAM (1146) и т.п.
[0282] Машиночитаемые носители данных могут хранить компьютерный код для выполнения различных машиноисполняемых операций. Такие носители и компьютерный код могут быть специально спроектированными и изготовленными для целей настоящего изобретения или могут быть широко распространенными и известными специалистам в области компьютерного программного обеспечения.
[0283] В качестве неограничивающего примера, компьютерная система с архитектурой (1100), и в частности, базовой структурой (1140), может предоставлять требуемую функциональность в результате исполнения, процессором (или процессорами) (включая CPU, GPU, FPGA, ускорители и т.п.), программного обеспечения, реализованного на одном или более материальных машиночитаемых носителях данных. Такие машиночитаемые носители данных могут быть носителями, связанными с описанными выше запоминающими устройствами большой емкости, которые доступны пользователям, или энергонезависимыми запоминающими устройствами в базовой структуре (1140), например, встроенным запоминающим устройством (1147) большой емкости или ROM (1145). Программное обеспечение, которое реализует различные варианты осуществления настоящего изобретения, может храниться в подобных устройствах и исполняться внутренней структурой (1140) компьютерной системы. Машиночитаемый носитель данных, в зависимости от конкретных требований, может включать одно или более запоминающих устройств или микросхем памяти. Программное обеспечение может обеспечивать выполнение, базовой структурой (1140), и в частности, процессорами из его состава (включая CPU, GPU, FPGA и т.п.), необходимых процедуры, или частей необходимых процедур, описанных в данном документе, включая создание структур данных, хранимых в RAM (1146), и модификацию этих структур данных в соответствии с процедурами, определенными программным обеспечением. В дополнение или альтернативно, компьютерная система может обеспечивать требуемую функциональность в результате работы логики, жестко запрограммированной или иным образом воплощенной в электрической схеме (например, ускорителе (1144)), которая может работать вместе с программным обеспечением, или вместо него, для выполнения требуемых процедур или частей требуемых процедур, описанных в данном документе. Упоминание программного обеспечения, там, где это уместно, может подразумевать такую логику и наоборот. Упоминание машиночитаемого носителя, там, где это уместно, может подразумевать электрическую схему (например, интегральную схему), на которой хранится исполняемое программное обеспечение, электрическую схему, реализующую исполняемую логику или оба эти случая одновременно. В объем настоящего изобретения входят все соответствующие комбинации из аппаратного и программного обеспечения.
[0284] В данном документе были описаны несколько примеров осуществления настоящего изобретения, однако при этом возможны модификации, изменения и эквивалентные замены, которые попадают в объем настоящего изобретения. Соответственно, нужно понимать, что специалисты в данной области техники способны создать множество систем и способов, которые хотя явно здесь и не описаны, реализуют замысел настоящего изобретения и соответственно, находятся в пределах его объема и сущности.
Приложение А: Сокращения
AMVP: Усовершенствованное предсказание векторов движения (Advanced Motion Vector Prediction)
ASIC: Заказная интегральная схема (Application-Specific Integrated Circuit)
ATMVP: Альтернативное / усовершенствованное временное предсказание векторов движения (Alternative/Advanced Temporal Motion Vector Prediction)
BDOF: Двунаправленный оптический поток (Bi-directional Optical Flow)
BIO: Двунаправленный оптический поток (Bi-directional Optical Flow)
BMS: Набор эталонов (Benchmark Set) BV: Вектор блока (Block Vector)
CANBus: Шина сети контролеров (Controller Area Network Bus)
CB: Блок кодирования (Coding Block)
CBF: Флаг кодированного блока (Coded Block Flag)
CCLM: Кросс-компонентный линейный режим/модель (Cross-Component Linear Mode/Model)
CD: Компактный диск (Compact Disc)
CPR: Ссылка на текущее изображение (Current Picture Referencing)
CPU: Центральные процессорные блоки (Central Processing Units)
CRT: Катодно-лучевая трубка (Cathode Ray Tube)
СТВ: Блоки кодового дерева (Coding Tree Blocks)
CTU: Пакеты кодового дерева (Coding Tree Units)
CU: Пакет кодирования (Coding Unit)
DPB: Буфер изображений декодера (Decoder Picture Buffer)
DVD: Цифровой видеодиск (Digital Video Disc)
FPGA: Электрически программируемая вентильная матрица (Field Programmable Gate Areas)
GOP: Группы изображений (Groups of Pictures)
GPU: Графические процессоры (Graphics Processing Units)
GSM: Глобальная система мобильной связи (Global System for Mobile communications)
HDR: Расширенный динамический диапазон (High Dynamic Range)
HEVC: Высокоэффективное видеокодирование (High Efficiency Video Coding)
HRD: Гипотетический опорный декодер (Hypothetical Reference Decoder)
IBC: Внутреннее копирование блоков (Intra Block Copy)
IC: Интегральная схема (Integrated Circuit)
ISP: Внутренние подразбиения (Intra Sub-Partitions)
JEM: Объединенная исследовательская модель (Joint Exploration Model)
JVET: Совместная группа по исследованию видео (Joint Video Exploration Team)
LAN: Локальная вычислительная сеть (Local Area Network)
LCD: Дисплей на жидких кристаллах (Liquid-Crystal Display)
LTE: Долгосрочная эволюция (Long term evolution)
MPM: Наиболее вероятный режим (Most Probable Mode)
MTS: Множественный выбор преобразований (Multiple Transform Selection)
MV: Вектор движения (Motion Vector)
OLED: Органический светодиод (Organic Light-Emitting Diode)
РВ: Блоки предсказания (Prediction Blocks)
PCI: Взаимодействие периферийных компонентов (Peripheral Component Interconnect)
PDPC: Комбинирование предсказаний в зависимости от позиции (Position Dependent Prediction Combination)
PLD: Программируемое логическое устройство (Programmable Logic Device)
PU: Пакет предсказания (Prediction Unit)
RAM: Память с произвольным доступом (Random Access Memory)
ROM: Память в режиме «только для чтения» (Read-Only Memory)
SBT: Преобразование подблока (Sub-block Transform)
SCC: Кодирование экранного контента (Screen Content Coding)
SDR: Стандартный динамический диапазон (Standard Dynamic Range)
SEI: Дополнительная уточняющая информация (Supplementary Enhancement Information
SNR: Соотношение «сигнал-шум» (Signal Noise Ratio)
SSD: Твердотельный диск (Solid-state Drive)
TUs: Пакеты преобразования (Transform Units),
USB: Универсальная последовательная шина (Universal Serial Bus)
VPDU: Блок обработки визуальных данных (Visual Process Data Unit)
VUI: Информация об используемости видео (Video Usability Information)
VVC: Универсальное видеокодирование (Versatile Video Coding)
WAIP: Широкоугольное внутреннее предсказание (Wide-Angle Intra Prediction)